{"version":3,"file":"js/9121-ae353d10e0941a408d83.js","mappings":"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CACtB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,MACA,MACA,MACA,UACA,MACA,MACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,GACA,GACA,MACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,OACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WCtKK,SAAS5wF,EAAM54J,GACpB,OAAO,QAAMA,EAAKypP,EACpB,CACA,MACMA,EAAqB,CACzBC,KAAM,CACJxtK,MAAQn4G,GAASA,EAAKtG,OAExBksR,SAAU,CACRztK,MAAQn4G,GAAS,IAAMA,EAAK3G,MAG9BwsR,SAAU,CACR1tK,MAAQn4G,GAAS4V,EAAK5V,EAAKyyB,YAAa,SAE1CqzP,oBAAqB,CACnB3tK,MAAMn4G,GACJ,MAAM+lR,EAAU1pQ,EAAK,IAAKzG,EAAK5V,EAAK+zB,oBAAqB,MAAO,KAC1DvL,EAAS5S,EACb,CACE5V,EAAK6zB,UACLje,EAAK,CAAC5V,EAAK3G,KAAM0sR,IACjBnwQ,EAAK5V,EAAKg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","sources":["webpack:///./node_modules/@material-ui/core/esm/utils/capitalize.js","webpack:///./node_modules/@material-ui/core/esm/TableCell/TableCell.js","webpack:///./node_modules/@material-ui/core/esm/TableFooter/TableFooter.js","webpack:///./node_modules/@material-ui/core/esm/TableHead/TableHead.js","webpack:///./node_modules/@material-ui/core/esm/TableRow/TableRow.js","webpack:///./node_modules/@stripe/react-stripe-js/dist/react-stripe.umd.js","webpack:///./node_modules/@stripe/stripe-js/dist/stripe.esm.js","webpack:///./node_modules/babel-runtime/core-js/array/from.js","webpack:///./node_modules/babel-runtime/core-js/object/assign.js","webpack:///./node_modules/babel-runtime/core-js/object/create.js","webpack:///./node_modules/babel-runtime/core-js/object/define-property.js","webpack:///./node_modules/babel-runtime/core-js/object/get-prototype-of.js","webpack:///./node_modules/babel-runtime/core-js/object/set-prototype-of.js","webpack:///./node_modules/babel-runtime/core-js/symbol.js","webpack:///./node_modules/babel-runtime/core-js/symbol/iterator.js","webpack:///./node_modules/babel-runtime/helpers/classCallCheck.js","webpack:///./node_modules/babel-runtime/helpers/createClass.js","webpack:///./node_modules/babel-runtime/helpers/defineProperty.js","webpack:///./node_modules/babel-runtime/helpers/extends.js","webpack:///./node_modules/babel-runtime/helpers/inherits.js","webpack:///./node_modules/babel-runtime/helpers/objectWithoutProperties.js","webpack:///./node_modules/babel-runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/babel-runtime/helpers/toConsumableArray.js","webpack:///./node_modules/babel-runtime/helpers/typeof.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/array/from.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/define-property.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/get-prototype-of.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/set-prototype-of.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/index.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_add-to-unscopables.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_classof.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_create-property.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_html.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array-iter.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-call.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-define.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-detect.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-step.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dps.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gpo.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-sap.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-proto.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_string-at.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/core.get-iterator-method.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.from.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.define-property.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.get-prototype-of.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.observable.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/web.dom.iterable.js","webpack:///./node_modules/can-use-dom/index.js","webpack:///./node_modules/change-emitter/lib/index.js","webpack:///./node_modules/css-unit-converter/index.js","webpack:///./node_modules/decimal.js-light/decimal.js","webpack:///./node_modules/eventemitter3/index.js","webpack:///./node_modules/fbjs/lib/shallowEqual.js","webpack:///./node_modules/graphql/jsutils/invariant.mjs","webpack:///./node_modules/graphql/language/location.mjs","webpack:///./node_modules/graphql/language/printLocation.mjs","webpack:///./node_modules/graphql/error/GraphQLError.mjs","webpack:///./node_modules/graphql/jsutils/isObjectLike.mjs","webpack:///./node_modules/graphql/error/syntaxError.mjs","webpack:///./node_modules/graphql/language/directiveLocation.mjs","webpack:///./node_modules/graphql/language/tokenKind.mjs","webpack:///./node_modules/graphql/language/lexer.mjs","webpack:///./node_modules/graphql/language/parser.mjs","webpack:///./node_modules/graphql-tag/lib/index.js","webpack:///./node_modules/lodash/_LazyWrapper.js","webpack:///./node_modules/lodash/_LodashWrapper.js","webpack:///./node_modules/lodash/_arrayEvery.js","webpack:///./node_modules/lodash/_arrayIncludes.js","webpack:///./node_modules/lodash/_arrayIncludesWith.js","webpack:///./node_modules/lodash/_baseDelay.js","webpack:///./node_modules/lodash/_baseEach.js","webpack:///./node_modules/lodash/_baseEvery.js","webpack:///./node_modules/lodash/_baseExtremum.js","webpack:///./node_modules/lodash/_baseFindIndex.js","webpack:///./node_modules/lodash/_baseGt.js","webpack:///./node_modules/lodash/_baseIndexOf.js","webpack:///./node_modules/lodash/_baseIsNaN.js","webpack:///./node_modules/lodash/_baseLodash.js","webpack:///./node_modules/lodash/_baseLt.js","webpack:///./node_modules/lodash/_baseMap.js","webpack:///./node_modules/lodash/_baseOrderBy.js","webpack:///./node_modules/lodash/_baseRange.js","webpack:///./node_modules/lodash/_baseReduce.js","webpack:///./node_modules/lodash/_baseSetData.js","webpack:///./node_modules/lodash/_baseSome.js","webpack:///./node_modules/lodash/_baseSortBy.js","webpack:///./node_modules/lodash/_baseUniq.js","webpack:///./node_modules/lodash/_castFunction.js","webpack:///./node_modules/lodash/_compareAscending.js","webpack:///./node_modules/lodash/_compareMultiple.js","webpack:///./node_modules/lodash/_composeArgs.js","webpack:///./node_modules/lodash/_composeArgsRight.js","webpack:///./node_modules/lodash/_countHolders.js","webpack:///./node_modules/lodash/_createBaseEach.js","webpack:///./node_modules/lodash/_createBind.js","webpack:///./node_modules/lodash/_createCtor.js","webpack:///./node_modules/lodash/_createCurry.js","webpack:///./node_modules/lodash/_createFind.js","webpack:///./node_modules/lodash/_createHybrid.js","webpack:///./node_modules/lodash/_createPartial.js","webpack:///./node_modules/lodash/_createRange.js","webpack:///./node_modules/lodash/_createRecurry.js","webpack:///./node_modules/lodash/_createSet.js","webpack:///./node_modules/lodash/_createWrap.js","webpack:///./node_modules/lodash/_getData.js","webpack:///./node_modules/lodash/_getFuncName.js","webpack:///./node_modules/lodash/_getHolder.js","webpack:///./node_modules/lodash/_getWrapDetails.js","webpack:///./node_modules/lodash/_insertWrapDetails.js","webpack:///./node_modules/lodash/_isLaziable.js","webpack:///./node_modules/lodash/_mergeData.js","webpack:///./node_modules/lodash/_metaMap.js","webpack:///./node_modules/lodash/_realNames.js","webpack:///./node_modules/lodash/_reorder.js","webpack:///./node_modules/lodash/_replaceHolders.js","webpack:///./node_modules/lodash/_setData.js","webpack:///./node_modules/lodash/_setWrapToString.js","webpack:///./node_modules/lodash/_strictIndexOf.js","webpack:///./node_modules/lodash/_updateWrapDetails.js","webpack:///./node_modules/lodash/_wrapperClone.js","webpack:///./node_modules/lodash/bind.js","webpack:///./node_modules/lodash/delay.js","webpack:///./node_modules/lodash/every.js","webpack:///./node_modules/lodash/find.js","webpack:///./node_modules/lodash/findIndex.js","webpack:///./node_modules/lodash/flatMap.js","webpack:///./node_modules/lodash/forEach.js","webpack:///./node_modules/lodash/isBoolean.js","webpack:///./node_modules/lodash/isEqual.js","webpack:///./node_modules/lodash/isNaN.js","webpack:///./node_modules/lodash/isNil.js","webpack:///./node_modules/lodash/isNumber.js","webpack:///./node_modules/lodash/lowerFirst.js","webpack:///./node_modules/lodash/map.js","webpack:///./node_modules/lodash/max.js","webpack:///./node_modules/lodash/min.js","webpack:///./node_modules/lodash/range.js","webpack:///./node_modules/lodash/reduce.js","webpack:///./node_modules/lodash/some.js","webpack:///./node_modules/lodash/sortBy.js","webpack:///./node_modules/lodash/toFinite.js","webpack:///./node_modules/lodash/toInteger.js","webpack:///./node_modules/lodash/uniqBy.js","webpack:///./node_modules/lodash/wrapperLodash.js","webpack:///./node_modules/optimism/node_modules/@wry/trie/lib/trie.esm.js","webpack:///./node_modules/optimism/lib/bundle.esm.js","webpack:///./node_modules/react-easy-swipe/lib/index.js","webpack:///./node_modules/react-easy-swipe/lib/react-swipe.js","webpack:///./node_modules/react-file-drop/FileDrop.js","webpack:///./node_modules/react-google-maps/lib/components/BicyclingLayer.js","webpack:///./node_modules/react-google-maps/lib/components/Circle.js","webpack:///./node_modules/react-google-maps/lib/components/DirectionsRenderer.js","webpack:///./node_modules/react-google-maps/lib/components/FusionTablesLayer.js","webpack:///./node_modules/react-google-maps/lib/components/GoogleMap.js","webpack:///./node_modules/react-google-maps/lib/components/GroundOverlay.js","webpack:///./node_modules/react-google-maps/lib/components/InfoWindow.js","webpack:///./node_modules/react-google-maps/lib/components/KmlLayer.js","webpack:///./node_modules/react-google-maps/lib/components/Marker.js","webpack:///./node_modules/react-google-maps/lib/components/OverlayView.js","webpack:///./node_modules/react-google-maps/lib/components/Polygon.js","webpack:///./node_modules/react-google-maps/lib/components/Polyline.js","webpack:///./node_modules/react-google-maps/lib/components/Rectangle.js","webpack:///./node_modules/react-google-maps/lib/components/StreetViewPanorama.js","webpack:///./node_modules/react-google-maps/lib/components/TrafficLayer.js","webpack:///./node_modules/react-google-maps/lib/constants.js","webpack:///./node_modules/react-google-maps/lib/index.js","webpack:///./node_modules/react-google-maps/lib/utils/MapChildHelper.js","webpack:///./node_modules/react-google-maps/lib/utils/OverlayViewHelper.js","webpack:///./node_modules/react-google-maps/lib/withGoogleMap.js","webpack:///./node_modules/react-google-maps/lib/withScriptjs.js","webpack:///./node_modules/react-google-maps/node_modules/warning/browser.js","webpack:///./node_modules/react-google-places-autocomplete/build/index.es.js","webpack:///./node_modules/react-image-gallery/build/image-gallery.js","webpack:///./node_modules/react-images-uploading/dist/constants.js","webpack:///./node_modules/react-images-uploading/dist/index.js","webpack:///./node_modules/react-images-uploading/dist/utils.js","webpack:///./node_modules/react-images-uploading/dist/validation.js","webpack:///./node_modules/react-responsive-carousel/lib/js/CSSTranslate.js","webpack:///./node_modules/react-responsive-carousel/lib/js/components/Carousel/animations.js","webpack:///./node_modules/react-responsive-carousel/lib/js/components/Carousel/index.js","webpack:///./node_modules/react-responsive-carousel/lib/js/components/Carousel/utils.js","webpack:///./node_modules/react-responsive-carousel/lib/js/components/Thumbs.js","webpack:///./node_modules/react-responsive-carousel/lib/js/cssClasses.js","webpack:///./node_modules/react-responsive-carousel/lib/js/dimensions.js","webpack:///./node_modules/react-responsive-carousel/lib/js/index.js","webpack:///./node_modules/react-responsive-carousel/lib/js/shims/document.js","webpack:///./node_modules/react-responsive-carousel/lib/js/shims/window.js","webpack:///./node_modules/react-router-dom/esm/react-router-dom.js","webpack:///./node_modules/react-router-hash-link/dist/react-router-hash-link.esm.js","webpack:///./node_modules/react-share/es/FacebookShareButton.js","webpack:///./node_modules/react-share/es/LinkedinShareButton.js","webpack:///./node_modules/react-share/es/TwitterShareButton.js","webpack:///./node_modules/react-share/es/ShareButton.js","webpack:///./node_modules/react-share/es/hocs/createShareButton.js","webpack:///./node_modules/react-share/es/utils/assert.js","webpack:///./node_modules/react-share/es/utils/objectToGetParams.js","webpack:///./node_modules/fast-equals/dist/esm/index.mjs","webpack:///./node_modules/react-smooth/es6/setRafTimeout.js","webpack:///./node_modules/react-smooth/es6/AnimateManager.js","webpack:///./node_modules/react-smooth/es6/util.js","webpack:///./node_modules/react-smooth/es6/easing.js","webpack:///./node_modules/react-smooth/es6/configUpdate.js","webpack:///./node_modules/react-smooth/es6/Animate.js","webpack:///./node_modules/react-smooth/es6/AnimateGroupChild.js","webpack:///./node_modules/react-smooth/es6/AnimateGroup.js","webpack:///./node_modules/react-smooth/es6/index.js","webpack:///./node_modules/react-smooth/node_modules/dom-helpers/class/addClass.js","webpack:///./node_modules/react-smooth/node_modules/dom-helpers/class/hasClass.js","webpack:///./node_modules/react-smooth/node_modules/dom-helpers/class/removeClass.js","webpack:///./node_modules/react-smooth/node_modules/react-transition-group/CSSTransition.js","webpack:///./node_modules/react-smooth/node_modules/react-transition-group/ReplaceTransition.js","webpack:///./node_modules/react-smooth/node_modules/react-transition-group/Transition.js","webpack:///./node_modules/react-smooth/node_modules/react-transition-group/TransitionGroup.js","webpack:///./node_modules/react-smooth/node_modules/react-transition-group/index.js","webpack:///./node_modules/react-smooth/node_modules/react-transition-group/utils/ChildMapping.js","webpack:///./node_modules/react-smooth/node_modules/react-transition-group/utils/PropTypes.js","webpack:///./node_modules/react-table-sticky/build/index.js","webpack:///./node_modules/react-truncate/lib/Truncate.js","webpack:///./node_modules/recharts/es6/cartesian/Area.js","webpack:///./node_modules/recharts/es6/cartesian/ErrorBar.js","webpack:///./node_modules/recharts/es6/cartesian/XAxis.js","webpack:///./node_modules/recharts/es6/cartesian/YAxis.js","webpack:///./node_modules/recharts/es6/chart/AreaChart.js","webpack:///./node_modules/recharts/es6/util/getEveryNthWithCondition.js","webpack:///./node_modules/recharts/es6/cartesian/getTicks.js","webpack:///./node_modules/recharts/es6/shape/Cross.js","webpack:///./node_modules/recharts/es6/cartesian/CartesianAxis.js","webpack:///./node_modules/recharts/es6/util/CssPrefixUtils.js","webpack:///./node_modules/recharts/es6/cartesian/Brush.js","webpack:///./node_modules/recharts/es6/util/IfOverflowMatches.js","webpack:///./node_modules/recharts/es6/cartesian/ReferenceDot.js","webpack:///./node_modules/recharts/es6/cartesian/ReferenceLine.js","webpack:///./node_modules/recharts/es6/cartesian/ReferenceArea.js","webpack:///./node_modules/recharts/es6/util/DetectReferenceElementsDomain.js","webpack:///./node_modules/recharts/es6/util/Events.js","webpack:///./node_modules/recharts/es6/chart/AccessibilityManager.js","webpack:///./node_modules/recharts/es6/chart/generateCategoricalChart.js","webpack:///./node_modules/recharts/es6/component/Cell.js","webpack:///./node_modules/recharts/es6/component/Label.js","webpack:///./node_modules/recharts/es6/component/LabelList.js","webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/d3-shape/src/symbol/circle.js","webpack:///./node_modules/d3-shape/src/symbol/cross.js","webpack:///./node_modules/d3-shape/src/symbol/diamond.js","webpack:///./node_modules/d3-shape/src/symbol/square.js","webpack:///./node_modules/d3-shape/src/symbol/star.js","webpack:///./node_modules/d3-shape/src/symbol/triangle.js","webpack:///./node_modules/d3-shape/src/symbol/wye.js","webpack:///./node_modules/d3-shape/src/symbol/asterisk.js","webpack:///./node_modules/d3-shape/src/symbol/triangle2.js","webpack:///./node_modules/recharts/es6/shape/Symbols.js","webpack:///./node_modules/d3-shape/src/symbol.js","webpack:///./node_modules/recharts/es6/component/DefaultLegendContent.js","webpack:///./node_modules/recharts/es6/component/Legend.js","webpack:///./node_modules/react-resize-detector/build/index.esm.js","webpack:///./node_modules/recharts/es6/component/ResponsiveContainer.js","webpack:///./node_modules/recharts/es6/component/Text.js","webpack:///./node_modules/recharts/es6/component/DefaultTooltipContent.js","webpack:///./node_modules/recharts/es6/component/Tooltip.js","webpack:///./node_modules/recharts/es6/container/Layer.js","webpack:///./node_modules/recharts/es6/container/Surface.js","webpack:///./node_modules/d3-shape/src/noop.js","webpack:///./node_modules/d3-shape/src/curve/basis.js","webpack:///./node_modules/d3-shape/src/curve/basisClosed.js","webpack:///./node_modules/d3-shape/src/curve/basisOpen.js","webpack:///./node_modules/d3-shape/src/curve/bump.js","webpack:///./node_modules/d3-shape/src/curve/linearClosed.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/curve/monotone.js","webpack:///./node_modules/d3-shape/src/curve/natural.js","webpack:///./node_modules/d3-shape/src/curve/step.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/area.js","webpack:///./node_modules/recharts/es6/shape/Curve.js","webpack:///./node_modules/recharts/es6/shape/Dot.js","webpack:///./node_modules/recharts/es6/shape/Rectangle.js","webpack:///./node_modules/recharts/es6/shape/Sector.js","webpack:///./node_modules/recharts/es6/cartesian/Bar.js","webpack:///./node_modules/recharts/es6/util/CartesianUtils.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/descending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-interpolate/src/numberArray.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-scale/src/identity.js","webpack:///./node_modules/d3-scale/src/nice.js","webpack:///./node_modules/d3-scale/src/log.js","webpack:///./node_modules/d3-scale/src/symlog.js","webpack:///./node_modules/d3-scale/src/pow.js","webpack:///./node_modules/d3-scale/src/radial.js","webpack:///./node_modules/d3-array/src/max.js","webpack:///./node_modules/d3-array/src/min.js","webpack:///./node_modules/d3-array/src/sort.js","webpack:///./node_modules/d3-array/src/quickselect.js","webpack:///./node_modules/d3-array/src/quantile.js","webpack:///./node_modules/d3-scale/src/quantile.js","webpack:///./node_modules/d3-scale/src/quantize.js","webpack:///./node_modules/d3-scale/src/threshold.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/ticks.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-scale/src/utcTime.js","webpack:///./node_modules/d3-scale/src/sequential.js","webpack:///./node_modules/d3-scale/src/sequentialQuantile.js","webpack:///./node_modules/d3-scale/src/diverging.js","webpack:///./node_modules/d3-interpolate/src/piecewise.js","webpack:///./node_modules/d3-shape/src/offset/none.js","webpack:///./node_modules/d3-shape/src/order/none.js","webpack:///./node_modules/d3-shape/src/stack.js","webpack:///./node_modules/recharts-scale/es6/util/utils.js","webpack:///./node_modules/recharts-scale/es6/util/arithmetic.js","webpack:///./node_modules/recharts-scale/es6/getNiceTickValues.js","webpack:///./node_modules/recharts/es6/util/ChartUtils.js","webpack:///./node_modules/d3-shape/src/offset/expand.js","webpack:///./node_modules/d3-shape/src/offset/silhouette.js","webpack:///./node_modules/d3-shape/src/offset/wiggle.js","webpack:///./node_modules/recharts/es6/util/DOMUtils.js","webpack:///./node_modules/recharts/es6/util/DataUtils.js","webpack:///./node_modules/recharts/es6/util/Global.js","webpack:///./node_modules/recharts/es6/util/LogUtils.js","webpack:///./node_modules/recharts/es6/util/PolarUtils.js","webpack:///./node_modules/recharts/es6/util/ReactUtils.js","webpack:///./node_modules/recharts/es6/util/ShallowEqual.js","webpack:///./node_modules/recharts/es6/util/types.js","webpack:///./node_modules/recompose/es/Recompose.js","webpack:///./node_modules/recompose/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/recompose/node_modules/symbol-observable/es/index.js","webpack:///./node_modules/recompose/node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/reduce-css-calc/dist/index.js","webpack:///./node_modules/reduce-css-calc/dist/lib/convert.js","webpack:///./node_modules/reduce-css-calc/dist/lib/reducer.js","webpack:///./node_modules/reduce-css-calc/dist/lib/stringifier.js","webpack:///./node_modules/reduce-css-calc/dist/parser.js","webpack:///./node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/index.js","webpack:///./node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/parse.js","webpack:///./node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/stringify.js","webpack:///./node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/unit.js","webpack:///./node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/walk.js","webpack:///./node_modules/scriptjs/dist/script.js","webpack:///./node_modules/suneditor-react/dist/buttons/buttonList.js","webpack:///./node_modules/suneditor-react/dist/components/SunEditor.js","webpack:///./node_modules/suneditor-react/dist/data/events.js","webpack:///./node_modules/suneditor-react/dist/index.js","webpack:///./node_modules/suneditor-react/dist/lang/getLanguage.js","webpack:///./node_modules/suneditor/src/lang/ckb.js","webpack:///./node_modules/suneditor/src/lang/da.js","webpack:///./node_modules/suneditor/src/lang/de.js","webpack:///./node_modules/suneditor/src/lang/en.js","webpack:///./node_modules/suneditor/src/lang/es.js","webpack:///./node_modules/suneditor/src/lang/fr.js","webpack:///./node_modules/suneditor/src/lang/he.js","webpack:///./node_modules/suneditor/src/lang/index.js","webpack:///./node_modules/suneditor/src/lang/it.js","webpack:///./node_modules/suneditor/src/lang/ja.js","webpack:///./node_modules/suneditor/src/lang/ko.js","webpack:///./node_modules/suneditor/src/lang/lv.js","webpack:///./node_modules/suneditor/src/lang/nl.js","webpack:///./node_modules/suneditor/src/lang/pl.js","webpack:///./node_modules/suneditor/src/lang/pt_br.js","webpack:///./node_modules/suneditor/src/lang/ro.js","webpack:///./node_modules/suneditor/src/lang/ru.js","webpack:///./node_modules/suneditor/src/lang/se.js","webpack:///./node_modules/suneditor/src/lang/ua.js","webpack:///./node_modules/suneditor/src/lang/ur.js","webpack:///./node_modules/suneditor/src/lang/zh_cn.js","webpack:///./node_modules/suneditor/src/plugins/command/blockquote.js","webpack:///./node_modules/suneditor/src/plugins/submenu/align.js","webpack:///./node_modules/suneditor/src/plugins/submenu/font.js","webpack:///./node_modules/suneditor/src/plugins/submenu/fontSize.js","webpack:///./node_modules/suneditor/src/plugins/modules/_colorPicker.js","webpack:///./node_modules/suneditor/src/plugins/submenu/fontColor.js","webpack:///./node_modules/suneditor/src/plugins/submenu/hiliteColor.js","webpack:///./node_modules/suneditor/src/plugins/submenu/horizontalRule.js","webpack:///./node_modules/suneditor/src/plugins/submenu/list.js","webpack:///./node_modules/suneditor/src/plugins/submenu/table.js","webpack:///./node_modules/suneditor/src/plugins/submenu/formatBlock.js","webpack:///./node_modules/suneditor/src/plugins/submenu/lineHeight.js","webpack:///./node_modules/suneditor/src/plugins/submenu/template.js","webpack:///./node_modules/suneditor/src/plugins/submenu/paragraphStyle.js","webpack:///./node_modules/suneditor/src/plugins/submenu/textStyle.js","webpack:///./node_modules/suneditor/src/plugins/modules/_selectMenu.js","webpack:///./node_modules/suneditor/src/plugins/modules/_anchor.js","webpack:///./node_modules/suneditor/src/plugins/dialog/link.js","webpack:///./node_modules/suneditor/src/plugins/dialog/image.js","webpack:///./node_modules/suneditor/src/plugins/dialog/video.js","webpack:///./node_modules/suneditor/src/plugins/dialog/audio.js","webpack:///./node_modules/suneditor/src/plugins/dialog/math.js","webpack:///./node_modules/suneditor/src/plugins/fileBrowser/imageGallery.js","webpack:///./node_modules/suneditor/src/plugins/index.js","webpack:///./node_modules/suneditor/src/plugins/modules/component.js","webpack:///./node_modules/suneditor/src/plugins/modules/dialog.js","webpack:///./node_modules/suneditor/src/plugins/modules/fileBrowser.js","webpack:///./node_modules/suneditor/src/plugins/modules/fileManager.js","webpack:///./node_modules/suneditor/src/plugins/modules/resizing.js","webpack:///./node_modules/suneditor/src/assets/defaultIcons.js","webpack:///./node_modules/suneditor/src/lib/util.js","webpack:///./node_modules/suneditor/src/lib/constructor.js","webpack:///./node_modules/suneditor/src/lib/context.js","webpack:///./node_modules/suneditor/src/plugins/modules/_notice.js","webpack:///./node_modules/suneditor/src/suneditor.js","webpack:///./node_modules/suneditor/src/lib/core.js","webpack:///./node_modules/suneditor/src/lib/history.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/react-share/node_modules/classnames/index.js","webpack:///./node_modules/@apollo/client/cache/core/cache.js","webpack:///./node_modules/@apollo/client/cache/core/types/common.js","webpack:///./node_modules/@apollo/client/cache/inmemory/helpers.js","webpack:///./node_modules/@apollo/client/cache/inmemory/entityStore.js","webpack:///./node_modules/@apollo/client/cache/inmemory/readFromStore.js","webpack:///./node_modules/@apollo/client/cache/inmemory/key-extractor.js","webpack:///./node_modules/@apollo/client/cache/inmemory/policies.js","webpack:///./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js","webpack:///./node_modules/@apollo/client/cache/inmemory/writeToStore.js","webpack:///./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js","webpack:///./node_modules/@apollo/client/cache/inmemory/object-canon.js","webpack:///./node_modules/@apollo/client/cache/inmemory/reactiveVars.js","webpack:///./node_modules/@apollo/client/link/core/execute.js","webpack:///./node_modules/@apollo/client/utilities/observables/asyncMap.js","webpack:///./node_modules/@apollo/client/utilities/common/errorHandling.js","webpack:///./node_modules/@apollo/client/utilities/observables/iteration.js","webpack:///./node_modules/@apollo/client/utilities/observables/subclassing.js","webpack:///./node_modules/@apollo/client/utilities/observables/Concast.js","webpack:///./node_modules/@apollo/client/core/ObservableQuery.js","webpack:///./node_modules/graphql/language/predicates.mjs","webpack:///./node_modules/@apollo/client/core/LocalState.js","webpack:///./node_modules/@apollo/client/core/QueryInfo.js","webpack:///./node_modules/@apollo/client/core/QueryManager.js","webpack:///./node_modules/@apollo/client/core/ApolloClient.js","webpack:///./node_modules/@apollo/client/version.js","webpack:///./node_modules/@apollo/client/core/networkStatus.js","webpack:///./node_modules/@apollo/client/errors/index.js","webpack:///./node_modules/@apollo/client/link/core/ApolloLink.js","webpack:///./node_modules/@apollo/client/link/utils/createOperation.js","webpack:///./node_modules/@apollo/client/link/utils/transformOperation.js","webpack:///./node_modules/@apollo/client/link/utils/validateOperation.js","webpack:///./node_modules/@apollo/client/link/http/serializeFetchParameter.js","webpack:///./node_modules/@apollo/client/link/http/iterators/nodeStream.js","webpack:///./node_modules/@apollo/client/link/http/iterators/reader.js","webpack:///./node_modules/@apollo/client/link/http/responseIterator.js","webpack:///./node_modules/@apollo/client/link/http/iterators/async.js","webpack:///./node_modules/@apollo/client/utilities/common/responseIterator.js","webpack:///./node_modules/@apollo/client/link/http/iterators/promise.js","webpack:///./node_modules/@apollo/client/link/utils/throwServerError.js","webpack:///./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js","webpack:///./node_modules/@apollo/client/link/http/checkFetcher.js","webpack:///./node_modules/graphql/language/printString.mjs","webpack:///./node_modules/graphql/language/printer.mjs","webpack:///./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js","webpack:///./node_modules/@apollo/client/link/utils/fromError.js","webpack:///./node_modules/@apollo/client/link/http/createHttpLink.js","webpack:///./node_modules/@apollo/client/link/http/selectURI.js","webpack:///./node_modules/@apollo/client/link/http/createSignalIfSupported.js","webpack:///./node_modules/@apollo/client/link/http/rewriteURIForGET.js","webpack:///./node_modules/@apollo/client/link/http/HttpLink.js","webpack:///./node_modules/@apollo/client/react/context/ApolloContext.js","webpack:///./node_modules/@apollo/client/react/context/ApolloProvider.js","webpack:///./node_modules/@apollo/client/react/hooks/useApolloClient.js","webpack:///./node_modules/@apollo/client/react/hooks/useLazyQuery.js","webpack:///./node_modules/@apollo/client/react/hooks/useMutation.js","webpack:///./node_modules/@apollo/client/react/hooks/useSyncExternalStore.js","webpack:///./node_modules/@apollo/client/react/hooks/useQuery.js","webpack:///./node_modules/@apollo/client/react/parser/index.js","webpack:///./node_modules/@apollo/client/utilities/common/arrays.js","webpack:///./node_modules/@apollo/client/utilities/common/canUse.js","webpack:///./node_modules/@apollo/client/utilities/common/cloneDeep.js","webpack:///./node_modules/@apollo/client/utilities/common/compact.js","webpack:///./node_modules/@apollo/client/utilities/common/incrementalResult.js","webpack:///./node_modules/@apollo/client/utilities/common/makeUniqueId.js","webpack:///./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js","webpack:///./node_modules/@apollo/client/utilities/common/mergeDeep.js","webpack:///./node_modules/@apollo/client/utilities/common/mergeOptions.js","webpack:///./node_modules/@apollo/client/utilities/common/objects.js","webpack:///./node_modules/ts-invariant/lib/invariant.js","webpack:///./node_modules/@apollo/client/utilities/globals/maybe.js","webpack:///./node_modules/@apollo/client/utilities/globals/global.js","webpack:///./node_modules/@apollo/client/utilities/globals/DEV.js","webpack:///./node_modules/ts-invariant/process/index.js","webpack:///./node_modules/@apollo/client/utilities/globals/fix-graphql.js","webpack:///./node_modules/@apollo/client/utilities/globals/index.js","webpack:///./node_modules/@apollo/client/utilities/graphql/directives.js","webpack:///./node_modules/@apollo/client/utilities/graphql/fragments.js","webpack:///./node_modules/@apollo/client/utilities/graphql/getFromAST.js","webpack:///./node_modules/@apollo/client/utilities/graphql/storeUtils.js","webpack:///./node_modules/@apollo/client/utilities/graphql/transform.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","webpack:///./node_modules/@wry/context/lib/slot.js","webpack:///./node_modules/@wry/context/lib/index.js","webpack:///./node_modules/@wry/equality/lib/index.js","webpack:///./node_modules/@wry/trie/lib/index.js","webpack:///./node_modules/d3-scale/src/band.js","webpack:///./node_modules/d3-array/src/range.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/internmap/src/index.js","webpack:///./node_modules/d3-scale/src/ordinal.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-shape/src/path.js","webpack:///./node_modules/graphql/jsutils/devAssert.mjs","webpack:///./node_modules/graphql/jsutils/inspect.mjs","webpack:///./node_modules/graphql/language/ast.mjs","webpack:///./node_modules/graphql/language/blockString.mjs","webpack:///./node_modules/graphql/language/characterClasses.mjs","webpack:///./node_modules/graphql/language/kinds.mjs","webpack:///./node_modules/graphql/jsutils/instanceOf.mjs","webpack:///./node_modules/graphql/language/source.mjs","webpack:///./node_modules/graphql/language/visitor.mjs","webpack:///./node_modules/tslib/tslib.es6.mjs","webpack:///./node_modules/zen-observable-ts/module.js"],"sourcesContent":["import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word a the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: capitalize(string) expects a string argument.\" : _formatMuiErrorMessage(7));\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nimport { darken, alpha, lighten } from '../styles/colorManipulator';\nimport TableContext from '../Table/TableContext';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.body2, {\n display: 'table-cell',\n verticalAlign: 'inherit',\n // Workaround for a rendering bug with spanned columns in Chrome 62.0.\n // Removes the alpha (sets it to 1), and lightens or darkens the theme color.\n borderBottom: \"1px solid\\n \".concat(theme.palette.type === 'light' ? lighten(alpha(theme.palette.divider, 1), 0.88) : darken(alpha(theme.palette.divider, 1), 0.68)),\n textAlign: 'left',\n padding: 16\n }),\n\n /* Styles applied to the root element if `variant=\"head\"` or `context.table.head`. */\n head: {\n color: theme.palette.text.primary,\n lineHeight: theme.typography.pxToRem(24),\n fontWeight: theme.typography.fontWeightMedium\n },\n\n /* Styles applied to the root element if `variant=\"body\"` or `context.table.body`. */\n body: {\n color: theme.palette.text.primary\n },\n\n /* Styles applied to the root element if `variant=\"footer\"` or `context.table.footer`. */\n footer: {\n color: theme.palette.text.secondary,\n lineHeight: theme.typography.pxToRem(21),\n fontSize: theme.typography.pxToRem(12)\n },\n\n /* Styles applied to the root element if `size=\"small\"`. */\n sizeSmall: {\n padding: '6px 24px 6px 16px',\n '&:last-child': {\n paddingRight: 16\n },\n '&$paddingCheckbox': {\n width: 24,\n // prevent the checkbox column from growing\n padding: '0 12px 0 16px',\n '&:last-child': {\n paddingLeft: 12,\n paddingRight: 16\n },\n '& > *': {\n padding: 0\n }\n }\n },\n\n /* Styles applied to the root element if `padding=\"checkbox\"`. */\n paddingCheckbox: {\n width: 48,\n // prevent the checkbox column from growing\n padding: '0 0 0 4px',\n '&:last-child': {\n paddingLeft: 0,\n paddingRight: 4\n }\n },\n\n /* Styles applied to the root element if `padding=\"none\"`. */\n paddingNone: {\n padding: 0,\n '&:last-child': {\n padding: 0\n }\n },\n\n /* Styles applied to the root element if `align=\"left\"`. */\n alignLeft: {\n textAlign: 'left'\n },\n\n /* Styles applied to the root element if `align=\"center\"`. */\n alignCenter: {\n textAlign: 'center'\n },\n\n /* Styles applied to the root element if `align=\"right\"`. */\n alignRight: {\n textAlign: 'right',\n flexDirection: 'row-reverse'\n },\n\n /* Styles applied to the root element if `align=\"justify\"`. */\n alignJustify: {\n textAlign: 'justify'\n },\n\n /* Styles applied to the root element if `context.table.stickyHeader={true}`. */\n stickyHeader: {\n position: 'sticky',\n top: 0,\n left: 0,\n zIndex: 2,\n backgroundColor: theme.palette.background.default\n }\n };\n};\n/**\n * The component renders a `<th>` element when the parent context is a header\n * or otherwise a `<td>` element.\n */\n\nvar TableCell = /*#__PURE__*/React.forwardRef(function TableCell(props, ref) {\n var _props$align = props.align,\n align = _props$align === void 0 ? 'inherit' : _props$align,\n classes = props.classes,\n className = props.className,\n component = props.component,\n paddingProp = props.padding,\n scopeProp = props.scope,\n sizeProp = props.size,\n sortDirection = props.sortDirection,\n variantProp = props.variant,\n other = _objectWithoutProperties(props, [\"align\", \"classes\", \"className\", \"component\", \"padding\", \"scope\", \"size\", \"sortDirection\", \"variant\"]);\n\n var table = React.useContext(TableContext);\n var tablelvl2 = React.useContext(Tablelvl2Context);\n var isHeadCell = tablelvl2 && tablelvl2.variant === 'head';\n var role;\n var Component;\n\n if (component) {\n Component = component;\n role = isHeadCell ? 'columnheader' : 'cell';\n } else {\n Component = isHeadCell ? 'th' : 'td';\n }\n\n var scope = scopeProp;\n\n if (!scope && isHeadCell) {\n scope = 'col';\n }\n\n var padding = paddingProp || (table && table.padding ? table.padding : 'normal');\n var size = sizeProp || (table && table.size ? table.size : 'medium');\n var variant = variantProp || tablelvl2 && tablelvl2.variant;\n var ariaSort = null;\n\n if (sortDirection) {\n ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref,\n className: clsx(classes.root, classes[variant], className, align !== 'inherit' && classes[\"align\".concat(capitalize(align))], padding !== 'normal' && classes[\"padding\".concat(capitalize(padding))], size !== 'medium' && classes[\"size\".concat(capitalize(size))], variant === 'head' && table && table.stickyHeader && classes.stickyHeader),\n \"aria-sort\": ariaSort,\n role: role,\n scope: scope\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableCell.propTypes = {\n /**\n * Set the text-align on the table cell content.\n *\n * Monetary or generally number fields **should be right aligned** as that allows\n * you to add them up quickly in your head without having to worry about decimals.\n */\n align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n\n /**\n * The table cell contents.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * Sets the padding applied to the cell.\n * By default, the Table parent component set the value (`normal`).\n * `default` is deprecated, use `normal` instead.\n */\n padding: chainPropTypes(PropTypes.oneOf(['normal', 'checkbox', 'none', 'default']), function (props) {\n if (props.padding === 'default') {\n return new Error('Material-UI: padding=\"default\" was renamed to padding=\"normal\" for consistency.');\n }\n\n return null;\n }),\n\n /**\n * Set scope attribute.\n */\n scope: PropTypes.string,\n\n /**\n * Specify the size of the cell.\n * By default, the Table parent component set the value (`medium`).\n */\n size: PropTypes.oneOf(['medium', 'small']),\n\n /**\n * Set aria-sort direction.\n */\n sortDirection: PropTypes.oneOf(['asc', 'desc', false]),\n\n /**\n * Specify the cell type.\n * By default, the TableHead, TableBody or TableFooter parent component set the value.\n */\n variant: PropTypes.oneOf(['body', 'footer', 'head'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTableCell'\n})(TableCell);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'table-footer-group'\n }\n};\nvar tablelvl2 = {\n variant: 'footer'\n};\nvar defaultComponent = 'tfoot';\nvar TableFooter = /*#__PURE__*/React.forwardRef(function TableFooter(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? defaultComponent : _props$component,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\"]);\n\n return /*#__PURE__*/React.createElement(Tablelvl2Context.Provider, {\n value: tablelvl2\n }, /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className),\n ref: ref,\n role: Component === defaultComponent ? null : 'rowgroup'\n }, other)));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableFooter.propTypes = {\n /**\n * The content of the component, normally `TableRow`.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTableFooter'\n})(TableFooter);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'table-header-group'\n }\n};\nvar tablelvl2 = {\n variant: 'head'\n};\nvar defaultComponent = 'thead';\nvar TableHead = /*#__PURE__*/React.forwardRef(function TableHead(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? defaultComponent : _props$component,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\"]);\n\n return /*#__PURE__*/React.createElement(Tablelvl2Context.Provider, {\n value: tablelvl2\n }, /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className),\n ref: ref,\n role: Component === defaultComponent ? null : 'rowgroup'\n }, other)));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableHead.propTypes = {\n /**\n * The content of the component, normally `TableRow`.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTableHead'\n})(TableHead);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nimport { alpha } from '../styles/colorManipulator';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n color: 'inherit',\n display: 'table-row',\n verticalAlign: 'middle',\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n '&$hover:hover': {\n backgroundColor: theme.palette.action.hover\n },\n '&$selected, &$selected:hover': {\n backgroundColor: alpha(theme.palette.secondary.main, theme.palette.action.selectedOpacity)\n }\n },\n\n /* Pseudo-class applied to the root element if `selected={true}`. */\n selected: {},\n\n /* Pseudo-class applied to the root element if `hover={true}`. */\n hover: {},\n\n /* Styles applied to the root element if table variant=\"head\". */\n head: {},\n\n /* Styles applied to the root element if table variant=\"footer\". */\n footer: {}\n };\n};\nvar defaultComponent = 'tr';\n/**\n * Will automatically set dynamic row height\n * based on the material table element parent (head, body, etc).\n */\n\nvar TableRow = /*#__PURE__*/React.forwardRef(function TableRow(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? defaultComponent : _props$component,\n _props$hover = props.hover,\n hover = _props$hover === void 0 ? false : _props$hover,\n _props$selected = props.selected,\n selected = _props$selected === void 0 ? false : _props$selected,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"hover\", \"selected\"]);\n\n var tablelvl2 = React.useContext(Tablelvl2Context);\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref,\n className: clsx(classes.root, className, tablelvl2 && {\n 'head': classes.head,\n 'footer': classes.footer\n }[tablelvl2.variant], hover && classes.hover, selected && classes.selected),\n role: Component === defaultComponent ? null : 'row'\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableRow.propTypes = {\n /**\n * Should be valid <tr> children such as `TableCell`.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * If `true`, the table row will shade on hover.\n */\n hover: PropTypes.bool,\n\n /**\n * If `true`, the table row will have the selected shading.\n */\n selected: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTableRow'\n})(TableRow);","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :\n typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :\n (global = global || self, factory(global.ReactStripe = {}, global.React));\n}(this, (function (exports, React) { 'use strict';\n\n React = React && Object.prototype.hasOwnProperty.call(React, 'default') ? React['default'] : React;\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]);\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n var ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\n function emptyFunction() {}\n\n function emptyFunctionWithReset() {}\n\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n\n var factoryWithThrowingShims = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n shim.isRequired = shim;\n\n function getShim() {\n return shim;\n }\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n\n var propTypes = createCommonjsModule(function (module) {\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n }\n });\n\n var usePrevious = function usePrevious(value) {\n var ref = React.useRef(value);\n React.useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref.current;\n };\n\n var isUnknownObject = function isUnknownObject(raw) {\n return raw !== null && _typeof(raw) === 'object';\n };\n var isPromise = function isPromise(raw) {\n return isUnknownObject(raw) && typeof raw.then === 'function';\n }; // We are using types to enforce the `stripe` prop in this lib,\n // but in an untyped integration `stripe` could be anything, so we need\n // to do some sanity validation to prevent type errors.\n\n var isStripe = function isStripe(raw) {\n return isUnknownObject(raw) && typeof raw.elements === 'function' && typeof raw.createToken === 'function' && typeof raw.createPaymentMethod === 'function' && typeof raw.confirmCardPayment === 'function';\n };\n\n var PLAIN_OBJECT_STR = '[object Object]';\n var isEqual = function isEqual(left, right) {\n if (!isUnknownObject(left) || !isUnknownObject(right)) {\n return left === right;\n }\n\n var leftArray = Array.isArray(left);\n var rightArray = Array.isArray(right);\n if (leftArray !== rightArray) return false;\n var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;\n var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;\n if (leftPlainObject !== rightPlainObject) return false; // not sure what sort of special object this is (regexp is one option), so\n // fallback to reference check.\n\n if (!leftPlainObject && !leftArray) return left === right;\n var leftKeys = Object.keys(left);\n var rightKeys = Object.keys(right);\n if (leftKeys.length !== rightKeys.length) return false;\n var keySet = {};\n\n for (var i = 0; i < leftKeys.length; i += 1) {\n keySet[leftKeys[i]] = true;\n }\n\n for (var _i = 0; _i < rightKeys.length; _i += 1) {\n keySet[rightKeys[_i]] = true;\n }\n\n var allKeys = Object.keys(keySet);\n\n if (allKeys.length !== leftKeys.length) {\n return false;\n }\n\n var l = left;\n var r = right;\n\n var pred = function pred(key) {\n return isEqual(l[key], r[key]);\n };\n\n return allKeys.every(pred);\n };\n\n var extractAllowedOptionsUpdates = function extractAllowedOptionsUpdates(options, prevOptions, immutableKeys) {\n if (!isUnknownObject(options)) {\n return null;\n }\n\n return Object.keys(options).reduce(function (newOptions, key) {\n var isUpdated = !isUnknownObject(prevOptions) || !isEqual(options[key], prevOptions[key]);\n\n if (immutableKeys.includes(key)) {\n if (isUpdated) {\n console.warn(\"Unsupported prop change: options.\".concat(key, \" is not a mutable property.\"));\n }\n\n return newOptions;\n }\n\n if (!isUpdated) {\n return newOptions;\n }\n\n return _objectSpread2(_objectSpread2({}, newOptions || {}), {}, _defineProperty({}, key, options[key]));\n }, null);\n };\n\n var INVALID_STRIPE_ERROR = 'Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.'; // We are using types to enforce the `stripe` prop in this lib, but in a real\n // integration `stripe` could be anything, so we need to do some sanity\n // validation to prevent type errors.\n\n var validateStripe = function validateStripe(maybeStripe) {\n if (maybeStripe === null || isStripe(maybeStripe)) {\n return maybeStripe;\n }\n\n throw new Error(INVALID_STRIPE_ERROR);\n };\n\n var parseStripeProp = function parseStripeProp(raw) {\n if (isPromise(raw)) {\n return {\n tag: 'async',\n stripePromise: Promise.resolve(raw).then(validateStripe)\n };\n }\n\n var stripe = validateStripe(raw);\n\n if (stripe === null) {\n return {\n tag: 'empty'\n };\n }\n\n return {\n tag: 'sync',\n stripe: stripe\n };\n };\n\n var ElementsContext = /*#__PURE__*/React.createContext(null);\n ElementsContext.displayName = 'ElementsContext';\n var parseElementsContext = function parseElementsContext(ctx, useCase) {\n if (!ctx) {\n throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an <Elements> provider.\"));\n }\n\n return ctx;\n };\n var CartElementContext = /*#__PURE__*/React.createContext(null);\n CartElementContext.displayName = 'CartElementContext';\n var parseCartElementContext = function parseCartElementContext(ctx, useCase) {\n if (!ctx) {\n throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an <Elements> provider.\"));\n }\n\n return ctx;\n };\n /**\n * The `Elements` provider allows you to use [Element components](https://stripe.com/docs/stripe-js/react#element-components) and access the [Stripe object](https://stripe.com/docs/js/initializing) in any nested component.\n * Render an `Elements` provider at the root of your React app so that it is available everywhere you need it.\n *\n * To use the `Elements` provider, call `loadStripe` from `@stripe/stripe-js` with your publishable key.\n * The `loadStripe` function will asynchronously load the Stripe.js script and initialize a `Stripe` object.\n * Pass the returned `Promise` to `Elements`.\n *\n * @docs https://stripe.com/docs/stripe-js/react#elements-provider\n */\n\n var Elements = function Elements(_ref) {\n var rawStripeProp = _ref.stripe,\n options = _ref.options,\n children = _ref.children;\n var parsed = React.useMemo(function () {\n return parseStripeProp(rawStripeProp);\n }, [rawStripeProp]);\n\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n cart = _React$useState2[0],\n setCart = _React$useState2[1];\n\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n cartState = _React$useState4[0],\n setCartState = _React$useState4[1]; // For a sync stripe instance, initialize into context\n\n\n var _React$useState5 = React.useState(function () {\n return {\n stripe: parsed.tag === 'sync' ? parsed.stripe : null,\n elements: parsed.tag === 'sync' ? parsed.stripe.elements(options) : null\n };\n }),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n ctx = _React$useState6[0],\n setContext = _React$useState6[1];\n\n React.useEffect(function () {\n var isMounted = true;\n\n var safeSetContext = function safeSetContext(stripe) {\n setContext(function (ctx) {\n // no-op if we already have a stripe instance (https://github.com/stripe/react-stripe-js/issues/296)\n if (ctx.stripe) return ctx;\n return {\n stripe: stripe,\n elements: stripe.elements(options)\n };\n });\n }; // For an async stripePromise, store it in context once resolved\n\n\n if (parsed.tag === 'async' && !ctx.stripe) {\n parsed.stripePromise.then(function (stripe) {\n if (stripe && isMounted) {\n // Only update Elements context if the component is still mounted\n // and stripe is not null. We allow stripe to be null to make\n // handling SSR easier.\n safeSetContext(stripe);\n }\n });\n } else if (parsed.tag === 'sync' && !ctx.stripe) {\n // Or, handle a sync stripe instance going from null -> populated\n safeSetContext(parsed.stripe);\n }\n\n return function () {\n isMounted = false;\n };\n }, [parsed, ctx, options]); // Warn on changes to stripe prop\n\n var prevStripe = usePrevious(rawStripeProp);\n React.useEffect(function () {\n if (prevStripe !== null && prevStripe !== rawStripeProp) {\n console.warn('Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.');\n }\n }, [prevStripe, rawStripeProp]); // Apply updates to elements when options prop has relevant changes\n\n var prevOptions = usePrevious(options);\n React.useEffect(function () {\n if (!ctx.elements) {\n return;\n }\n\n var updates = extractAllowedOptionsUpdates(options, prevOptions, ['clientSecret', 'fonts']);\n\n if (updates) {\n ctx.elements.update(updates);\n }\n }, [options, prevOptions, ctx.elements]); // Attach react-stripe-js version to stripe.js instance\n\n React.useEffect(function () {\n var anyStripe = ctx.stripe;\n\n if (!anyStripe || !anyStripe._registerWrapper || !anyStripe.registerAppInfo) {\n return;\n }\n\n anyStripe._registerWrapper({\n name: 'react-stripe-js',\n version: \"2.1.1\"\n });\n\n anyStripe.registerAppInfo({\n name: 'react-stripe-js',\n version: \"2.1.1\",\n url: 'https://stripe.com/docs/stripe-js/react'\n });\n }, [ctx.stripe]);\n return /*#__PURE__*/React.createElement(ElementsContext.Provider, {\n value: ctx\n }, /*#__PURE__*/React.createElement(CartElementContext.Provider, {\n value: {\n cart: cart,\n setCart: setCart,\n cartState: cartState,\n setCartState: setCartState\n }\n }, children));\n };\n Elements.propTypes = {\n stripe: propTypes.any,\n options: propTypes.object\n };\n var useElementsContextWithUseCase = function useElementsContextWithUseCase(useCaseMessage) {\n var ctx = React.useContext(ElementsContext);\n return parseElementsContext(ctx, useCaseMessage);\n };\n var useCartElementContextWithUseCase = function useCartElementContextWithUseCase(useCaseMessage) {\n var ctx = React.useContext(CartElementContext);\n return parseCartElementContext(ctx, useCaseMessage);\n };\n /**\n * @docs https://stripe.com/docs/stripe-js/react#useelements-hook\n */\n\n var useElements = function useElements() {\n var _useElementsContextWi = useElementsContextWithUseCase('calls useElements()'),\n elements = _useElementsContextWi.elements;\n\n return elements;\n };\n /**\n * @docs https://stripe.com/docs/stripe-js/react#usestripe-hook\n */\n\n var useStripe = function useStripe() {\n var _useElementsContextWi2 = useElementsContextWithUseCase('calls useStripe()'),\n stripe = _useElementsContextWi2.stripe;\n\n return stripe;\n };\n /**\n * @docs https://stripe.com/docs/payments/checkout/cart-element\n */\n\n var useCartElement = function useCartElement() {\n var _useCartElementContex = useCartElementContextWithUseCase('calls useCartElement()'),\n cart = _useCartElementContex.cart;\n\n return cart;\n };\n /**\n * @docs https://stripe.com/docs/payments/checkout/cart-element\n */\n\n var useCartElementState = function useCartElementState() {\n var _useCartElementContex2 = useCartElementContextWithUseCase('calls useCartElementState()'),\n cartState = _useCartElementContex2.cartState;\n\n return cartState;\n };\n /**\n * @docs https://stripe.com/docs/stripe-js/react#elements-consumer\n */\n\n var ElementsConsumer = function ElementsConsumer(_ref2) {\n var children = _ref2.children;\n var ctx = useElementsContextWithUseCase('mounts <ElementsConsumer>'); // Assert to satisfy the busted React.FC return type (it should be ReactNode)\n\n return children(ctx);\n };\n ElementsConsumer.propTypes = {\n children: propTypes.func.isRequired\n };\n\n var useAttachEvent = function useAttachEvent(element, event, cb) {\n var cbDefined = !!cb;\n var cbRef = React.useRef(cb); // In many integrations the callback prop changes on each render.\n // Using a ref saves us from calling element.on/.off every render.\n\n React.useEffect(function () {\n cbRef.current = cb;\n }, [cb]);\n React.useEffect(function () {\n if (!cbDefined || !element) {\n return function () {};\n }\n\n var decoratedCb = function decoratedCb() {\n if (cbRef.current) {\n cbRef.current.apply(cbRef, arguments);\n }\n };\n\n element.on(event, decoratedCb);\n return function () {\n element.off(event, decoratedCb);\n };\n }, [cbDefined, event, element, cbRef]);\n };\n\n var capitalized = function capitalized(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n };\n\n var createElementComponent = function createElementComponent(type, isServer) {\n var displayName = \"\".concat(capitalized(type), \"Element\");\n\n var ClientElement = function ClientElement(_ref) {\n var id = _ref.id,\n className = _ref.className,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n onBlur = _ref.onBlur,\n onFocus = _ref.onFocus,\n onReady = _ref.onReady,\n onChange = _ref.onChange,\n onEscape = _ref.onEscape,\n onClick = _ref.onClick,\n onLoadError = _ref.onLoadError,\n onLoaderStart = _ref.onLoaderStart,\n onNetworksChange = _ref.onNetworksChange,\n onCheckout = _ref.onCheckout,\n onLineItemClick = _ref.onLineItemClick,\n onConfirm = _ref.onConfirm,\n onCancel = _ref.onCancel,\n onShippingAddressChange = _ref.onShippingAddressChange,\n onShippingRateChange = _ref.onShippingRateChange;\n\n var _useElementsContextWi = useElementsContextWithUseCase(\"mounts <\".concat(displayName, \">\")),\n elements = _useElementsContextWi.elements;\n\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n element = _React$useState2[0],\n setElement = _React$useState2[1];\n\n var elementRef = React.useRef(null);\n var domNode = React.useRef(null);\n\n var _useCartElementContex = useCartElementContextWithUseCase(\"mounts <\".concat(displayName, \">\")),\n setCart = _useCartElementContex.setCart,\n setCartState = _useCartElementContex.setCartState; // For every event where the merchant provides a callback, call element.on\n // with that callback. If the merchant ever changes the callback, removes\n // the old callback with element.off and then call element.on with the new one.\n\n\n useAttachEvent(element, 'blur', onBlur);\n useAttachEvent(element, 'focus', onFocus);\n useAttachEvent(element, 'escape', onEscape);\n useAttachEvent(element, 'click', onClick);\n useAttachEvent(element, 'loaderror', onLoadError);\n useAttachEvent(element, 'loaderstart', onLoaderStart);\n useAttachEvent(element, 'networkschange', onNetworksChange);\n useAttachEvent(element, 'lineitemclick', onLineItemClick);\n useAttachEvent(element, 'confirm', onConfirm);\n useAttachEvent(element, 'cancel', onCancel);\n useAttachEvent(element, 'shippingaddresschange', onShippingAddressChange);\n useAttachEvent(element, 'shippingratechange', onShippingRateChange);\n var readyCallback;\n\n if (type === 'cart') {\n readyCallback = function readyCallback(event) {\n setCartState(event);\n onReady && onReady(event);\n };\n } else if (onReady) {\n if (type === 'expressCheckout') {\n // Passes through the event, which includes visible PM types\n readyCallback = onReady;\n } else {\n // For other Elements, pass through the Element itself.\n readyCallback = function readyCallback() {\n onReady(element);\n };\n }\n }\n\n useAttachEvent(element, 'ready', readyCallback);\n var changeCallback = type === 'cart' ? function (event) {\n setCartState(event);\n onChange && onChange(event);\n } : onChange;\n useAttachEvent(element, 'change', changeCallback);\n var checkoutCallback = type === 'cart' ? function (event) {\n setCartState(event);\n onCheckout && onCheckout(event);\n } : onCheckout;\n useAttachEvent(element, 'checkout', checkoutCallback);\n React.useLayoutEffect(function () {\n if (elementRef.current === null && elements && domNode.current !== null) {\n var newElement = elements.create(type, options);\n\n if (type === 'cart' && setCart) {\n // we know that elements.create return value must be of type StripeCartElement if type is 'cart',\n // we need to cast because typescript is not able to infer which overloaded method is used based off param type\n setCart(newElement);\n } // Store element in a ref to ensure it's _immediately_ available in cleanup hooks in StrictMode\n\n\n elementRef.current = newElement; // Store element in state to facilitate event listener attachment\n\n setElement(newElement);\n newElement.mount(domNode.current);\n }\n }, [elements, options, setCart]);\n var prevOptions = usePrevious(options);\n React.useEffect(function () {\n if (!elementRef.current) {\n return;\n }\n\n var updates = extractAllowedOptionsUpdates(options, prevOptions, ['paymentRequest']);\n\n if (updates) {\n elementRef.current.update(updates);\n }\n }, [options, prevOptions]);\n React.useLayoutEffect(function () {\n return function () {\n if (elementRef.current && typeof elementRef.current.destroy === 'function') {\n try {\n elementRef.current.destroy();\n elementRef.current = null;\n } catch (error) {// Do nothing\n }\n }\n };\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n className: className,\n ref: domNode\n });\n }; // Only render the Element wrapper in a server environment.\n\n\n var ServerElement = function ServerElement(props) {\n // Validate that we are in the right context by calling useElementsContextWithUseCase.\n useElementsContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n useCartElementContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n var id = props.id,\n className = props.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n className: className\n });\n };\n\n var Element = isServer ? ServerElement : ClientElement;\n Element.propTypes = {\n id: propTypes.string,\n className: propTypes.string,\n onChange: propTypes.func,\n onBlur: propTypes.func,\n onFocus: propTypes.func,\n onReady: propTypes.func,\n onEscape: propTypes.func,\n onClick: propTypes.func,\n onLoadError: propTypes.func,\n onLoaderStart: propTypes.func,\n onNetworksChange: propTypes.func,\n onCheckout: propTypes.func,\n onLineItemClick: propTypes.func,\n onConfirm: propTypes.func,\n onCancel: propTypes.func,\n onShippingAddressChange: propTypes.func,\n onShippingRateChange: propTypes.func,\n options: propTypes.object\n };\n Element.displayName = displayName;\n Element.__elementType = type;\n return Element;\n };\n\n var isServer = typeof window === 'undefined';\n /**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var AuBankAccountElement = createElementComponent('auBankAccount', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var CardElement = createElementComponent('card', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var CardNumberElement = createElementComponent('cardNumber', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var CardExpiryElement = createElementComponent('cardExpiry', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var CardCvcElement = createElementComponent('cardCvc', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var FpxBankElement = createElementComponent('fpxBank', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var IbanElement = createElementComponent('iban', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var IdealBankElement = createElementComponent('idealBank', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var P24BankElement = createElementComponent('p24Bank', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var EpsBankElement = createElementComponent('epsBank', isServer);\n var PaymentElement = createElementComponent('payment', isServer);\n /**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var ExpressCheckoutElement = createElementComponent('expressCheckout', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var PaymentRequestButtonElement = createElementComponent('paymentRequestButton', isServer);\n /**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var LinkAuthenticationElement = createElementComponent('linkAuthentication', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var AddressElement = createElementComponent('address', isServer);\n /**\n * @deprecated\n * Use `AddressElement` instead.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var ShippingAddressElement = createElementComponent('shippingAddress', isServer);\n /**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n *\n * @docs https://stripe.com/docs/elements/cart-element\n */\n\n var CartElement = createElementComponent('cart', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var PaymentMethodMessagingElement = createElementComponent('paymentMethodMessaging', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var AffirmMessageElement = createElementComponent('affirmMessage', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var AfterpayClearpayMessageElement = createElementComponent('afterpayClearpayMessage', isServer);\n\n exports.AddressElement = AddressElement;\n exports.AffirmMessageElement = AffirmMessageElement;\n exports.AfterpayClearpayMessageElement = AfterpayClearpayMessageElement;\n exports.AuBankAccountElement = AuBankAccountElement;\n exports.CardCvcElement = CardCvcElement;\n exports.CardElement = CardElement;\n exports.CardExpiryElement = CardExpiryElement;\n exports.CardNumberElement = CardNumberElement;\n exports.CartElement = CartElement;\n exports.Elements = Elements;\n exports.ElementsConsumer = ElementsConsumer;\n exports.EpsBankElement = EpsBankElement;\n exports.ExpressCheckoutElement = ExpressCheckoutElement;\n exports.FpxBankElement = FpxBankElement;\n exports.IbanElement = IbanElement;\n exports.IdealBankElement = IdealBankElement;\n exports.LinkAuthenticationElement = LinkAuthenticationElement;\n exports.P24BankElement = P24BankElement;\n exports.PaymentElement = PaymentElement;\n exports.PaymentMethodMessagingElement = PaymentMethodMessagingElement;\n exports.PaymentRequestButtonElement = PaymentRequestButtonElement;\n exports.ShippingAddressElement = ShippingAddressElement;\n exports.useCartElement = useCartElement;\n exports.useCartElementState = useCartElementState;\n exports.useElements = useElements;\n exports.useStripe = useStripe;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","var V3_URL = 'https://js.stripe.com/v3';\nvar V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\nvar EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\nvar findScript = function findScript() {\n var scripts = document.querySelectorAll(\"script[src^=\\\"\".concat(V3_URL, \"\\\"]\"));\n\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i];\n\n if (!V3_URL_REGEX.test(script.src)) {\n continue;\n }\n\n return script;\n }\n\n return null;\n};\n\nvar injectScript = function injectScript(params) {\n var queryString = params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n var script = document.createElement('script');\n script.src = \"\".concat(V3_URL).concat(queryString);\n var headOrBody = document.head || document.body;\n\n if (!headOrBody) {\n throw new Error('Expected document.body not to be null. Stripe.js requires a <body> element.');\n }\n\n headOrBody.appendChild(script);\n return script;\n};\n\nvar registerWrapper = function registerWrapper(stripe, startTime) {\n if (!stripe || !stripe._registerWrapper) {\n return;\n }\n\n stripe._registerWrapper({\n name: 'stripe-js',\n version: \"1.54.1\",\n startTime: startTime\n });\n};\n\nvar stripePromise = null;\nvar loadScript = function loadScript(params) {\n // Ensure that we only attempt to load Stripe.js at most once\n if (stripePromise !== null) {\n return stripePromise;\n }\n\n stripePromise = new Promise(function (resolve, reject) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n // Resolve to null when imported server side. This makes the module\n // safe to import in an isomorphic code base.\n resolve(null);\n return;\n }\n\n if (window.Stripe && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n }\n\n if (window.Stripe) {\n resolve(window.Stripe);\n return;\n }\n\n try {\n var script = findScript();\n\n if (script && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n } else if (!script) {\n script = injectScript(params);\n }\n\n script.addEventListener('load', function () {\n if (window.Stripe) {\n resolve(window.Stripe);\n } else {\n reject(new Error('Stripe.js not available'));\n }\n });\n script.addEventListener('error', function () {\n reject(new Error('Failed to load Stripe.js'));\n });\n } catch (error) {\n reject(error);\n return;\n }\n });\n return stripePromise;\n};\nvar initStripe = function initStripe(maybeStripe, args, startTime) {\n if (maybeStripe === null) {\n return null;\n }\n\n var stripe = maybeStripe.apply(undefined, args);\n registerWrapper(stripe, startTime);\n return stripe;\n}; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n// own script injection.\n\nvar stripePromise$1 = Promise.resolve().then(function () {\n return loadScript(null);\n});\nvar loadCalled = false;\nstripePromise$1[\"catch\"](function (err) {\n if (!loadCalled) {\n console.warn(err);\n }\n});\nvar loadStripe = function loadStripe() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n loadCalled = true;\n var startTime = Date.now();\n return stripePromise$1.then(function (maybeStripe) {\n return initStripe(maybeStripe, args, startTime);\n });\n};\n\nexport { loadStripe };\n","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = function () { /* empty */ };\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = true;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = require('./_hide');\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","var canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nmodule.exports = canUseDOM;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar createChangeEmitter = exports.createChangeEmitter = function createChangeEmitter() {\n var currentListeners = [];\n var nextListeners = currentListeners;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n function listen(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function () {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n function emit() {\n currentListeners = nextListeners;\n var listeners = currentListeners;\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].apply(listeners, arguments);\n }\n }\n\n return {\n listen: listen,\n emit: emit\n };\n};","var conversions = {\r\n // length\r\n 'px': {\r\n 'px': 1,\r\n 'cm': 96.0/2.54,\r\n 'mm': 96.0/25.4,\r\n 'in': 96,\r\n 'pt': 96.0/72.0,\r\n 'pc': 16\r\n },\r\n 'cm': {\r\n 'px': 2.54/96.0,\r\n 'cm': 1,\r\n 'mm': 0.1,\r\n 'in': 2.54,\r\n 'pt': 2.54/72.0,\r\n 'pc': 2.54/6.0\r\n },\r\n 'mm': {\r\n 'px': 25.4/96.0,\r\n 'cm': 10,\r\n 'mm': 1,\r\n 'in': 25.4,\r\n 'pt': 25.4/72.0,\r\n 'pc': 25.4/6.0\r\n },\r\n 'in': {\r\n 'px': 1.0/96.0,\r\n 'cm': 1.0/2.54,\r\n 'mm': 1.0/25.4,\r\n 'in': 1,\r\n 'pt': 1.0/72.0,\r\n 'pc': 1.0/6.0\r\n },\r\n 'pt': {\r\n 'px': 0.75,\r\n 'cm': 72.0/2.54,\r\n 'mm': 72.0/25.4,\r\n 'in': 72,\r\n 'pt': 1,\r\n 'pc': 12\r\n },\r\n 'pc': {\r\n 'px': 6.0/96.0,\r\n 'cm': 6.0/2.54,\r\n 'mm': 6.0/25.4,\r\n 'in': 6,\r\n 'pt': 6.0/72.0,\r\n 'pc': 1\r\n },\r\n // angle\r\n 'deg': {\r\n 'deg': 1,\r\n 'grad': 0.9,\r\n 'rad': 180/Math.PI,\r\n 'turn': 360\r\n },\r\n 'grad': {\r\n 'deg': 400/360,\r\n 'grad': 1,\r\n 'rad': 200/Math.PI,\r\n 'turn': 400\r\n },\r\n 'rad': {\r\n 'deg': Math.PI/180,\r\n 'grad': Math.PI/200,\r\n 'rad': 1,\r\n 'turn': Math.PI*2\r\n },\r\n 'turn': {\r\n 'deg': 1/360,\r\n 'grad': 1/400,\r\n 'rad': 0.5/Math.PI,\r\n 'turn': 1\r\n },\r\n // time\r\n 's': {\r\n 's': 1,\r\n 'ms': 1/1000\r\n },\r\n 'ms': {\r\n 's': 1000,\r\n 'ms': 1\r\n },\r\n // frequency\r\n 'Hz': {\r\n 'Hz': 1,\r\n 'kHz': 1000\r\n },\r\n 'kHz': {\r\n 'Hz': 1/1000,\r\n 'kHz': 1\r\n },\r\n // resolution\r\n 'dpi': {\r\n 'dpi': 1,\r\n 'dpcm': 1.0/2.54,\r\n 'dppx': 1/96\r\n },\r\n 'dpcm': {\r\n 'dpi': 2.54,\r\n 'dpcm': 1,\r\n 'dppx': 2.54/96.0\r\n },\r\n 'dppx': {\r\n 'dpi': 96,\r\n 'dpcm': 96.0/2.54,\r\n 'dppx': 1\r\n }\r\n};\r\n\r\nmodule.exports = function (value, sourceUnit, targetUnit, precision) {\r\n if (!conversions.hasOwnProperty(targetUnit))\r\n throw new Error(\"Cannot convert to \" + targetUnit);\r\n\r\n if (!conversions[targetUnit].hasOwnProperty(sourceUnit))\r\n throw new Error(\"Cannot convert from \" + sourceUnit + \" to \" + targetUnit);\r\n \r\n var converted = conversions[targetUnit][sourceUnit] * value;\r\n \r\n if (precision !== false) {\r\n precision = Math.pow(10, parseInt(precision) || 5);\r\n return Math.round(converted * precision) / precision;\r\n }\r\n \r\n return converted;\r\n};\r\n","/*! decimal.js-light v2.5.1 https://github.com/MikeMcl/decimal.js-light/LICENCE */\r\n;(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js-light v2.5.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js-light\r\n * Copyright (c) 2020 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Expat Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n var MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n Decimal = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -MAX_E\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to MAX_E\r\n\r\n // The natural logarithm of 10.\r\n // 115 digits\r\n LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n ONE,\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE), // 1286742750677284\r\n\r\n // Decimal.prototype object\r\n P = {};\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * comparedTo cmp\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy idiv\r\n * equals eq\r\n * exponent\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * isInteger isint\r\n * isNegative isneg\r\n * isPositive ispos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * squareRoot sqrt\r\n * times mul\r\n * toDecimalPlaces todp\r\n * toExponential\r\n * toFixed\r\n * toInteger toint\r\n * toNumber\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits tosd\r\n * toString\r\n * valueOf val\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this;\r\n\r\n y = new x.constructor(y);\r\n\r\n // Signs differ?\r\n if (x.s !== y.s) return x.s || -y.s;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n xdL = x.d.length;\r\n ydL = y.d.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var x = this,\r\n w = x.d.length - 1,\r\n dp = (w - x.e) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = x.d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n return dp < 0 ? 0 : dp;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, truncated to `precision` significant digits.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n *\r\n */\r\n P.exponent = function () {\r\n return getBase10Exponent(this);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n return this.cmp(y) >= 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isint = function () {\r\n return this.e > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isneg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.ispos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return this.s === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n * `precision` significant digits.\r\n *\r\n * If no base is specified, return log[10](x).\r\n *\r\n * log[base](x) = ln(x) / ln(base)\r\n *\r\n * The maximum error of the result is 1 ulp (unit in the last place).\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var r,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n wpr = pr + 5;\r\n\r\n // Default base is 10.\r\n if (base === void 0) {\r\n base = new Ctor(10);\r\n } else {\r\n base = new Ctor(base);\r\n\r\n // log[-b](x) = NaN\r\n // log[0](x) = NaN\r\n // log[1](x) = NaN\r\n if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n }\r\n\r\n // log[b](-x) = NaN\r\n // log[b](0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // log[b](1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n external = false;\r\n r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n y = new Ctor(y);\r\n\r\n // x % 0 = NaN\r\n if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n // Return x if x is 0.\r\n if (!x.s) return round(new Ctor(x), pr);\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n q = divide(x, y, 0, 1).times(y);\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return exp(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * truncated to `precision` significant digits.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return ln(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s || 0;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var e, sd, w,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n e = getBase10Exponent(x) + 1;\r\n w = x.d.length - 1;\r\n sd = w * LOG_BASE + 1;\r\n w = x.d[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n }\r\n\r\n return z && e > sd ? e : sd;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var e, n, pr, r, s, t, wpr,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n // Negative or zero?\r\n if (x.s < 1) {\r\n if (!x.s) return new Ctor(0);\r\n\r\n // sqrt(-x) = NaN\r\n throw Error(decimalError + 'NaN');\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(x.d);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n pr = Ctor.precision;\r\n s = wpr = pr + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n n = n.slice(wpr - 3, wpr + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (s == wpr && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n round(t, pr + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n } else if (n != '9999') {\r\n break;\r\n }\r\n\r\n wpr += 4;\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n // Return 0 if either is 0.\r\n if (!x.s || !y.s) return new Ctor(0);\r\n\r\n y.s *= x.s;\r\n e = x.e + y.e;\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = e;\r\n\r\n return external ? round(y, Ctor.precision) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.todp = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = toString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), dp + 1, rm);\r\n str = toString(x, true, dp + 1);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) return toString(x);\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isneg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.toInteger = P.toint = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n * truncated to `precision` significant digits.\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * The maximum error is 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, sign, yIsInt,\r\n x = this,\r\n Ctor = x.constructor,\r\n guard = 12,\r\n yn = +(y = new Ctor(y));\r\n\r\n // pow(x, 0) = 1\r\n if (!y.s) return new Ctor(ONE);\r\n\r\n x = new Ctor(x);\r\n\r\n // pow(0, y > 0) = 0\r\n // pow(0, y < 0) = Infinity\r\n if (!x.s) {\r\n if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n return x;\r\n }\r\n\r\n // pow(1, y) = 1\r\n if (x.eq(ONE)) return x;\r\n\r\n pr = Ctor.precision;\r\n\r\n // pow(x, 1) = x\r\n if (y.eq(ONE)) return round(x, pr);\r\n\r\n e = y.e;\r\n k = y.d.length - 1;\r\n yIsInt = e >= k;\r\n sign = x.s;\r\n\r\n if (!yIsInt) {\r\n\r\n // pow(x < 0, y non-integer) = NaN\r\n if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = new Ctor(ONE);\r\n\r\n // Max k of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (k % 2) {\r\n r = r.times(x);\r\n truncate(r.d, e);\r\n }\r\n\r\n k = mathfloor(k / 2);\r\n if (k === 0) break;\r\n\r\n x = x.times(x);\r\n truncate(x.d, e);\r\n }\r\n\r\n external = true;\r\n\r\n return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n }\r\n\r\n // Result is negative if x is negative and the last digit of integer y is odd.\r\n sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n x.s = 1;\r\n external = false;\r\n r = y.times(ln(x, pr + guard));\r\n external = true;\r\n r = exp(r);\r\n r.s = sign;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var e, str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n e = getBase10Exponent(x);\r\n str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), sd, rm);\r\n e = getBase10Exponent(x);\r\n str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toSignificantDigits = P.tosd = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return round(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = P.valueOf = P.val = P.toJSON = function () {\r\n var x = this,\r\n e = getBase10Exponent(x),\r\n Ctor = x.constructor;\r\n\r\n return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n };\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * add P.minus, P.plus\r\n * checkInt32 P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n * digitsToString P.log, P.sqrt, P.pow, toString, exp, ln\r\n * divide P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n * exp P.exp, P.pow\r\n * getBase10Exponent P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n * P.toString, divide, round, toString, exp, ln\r\n * getLn10 P.log, ln\r\n * getZeroString digitsToString, toString\r\n * ln P.log, P.ln, P.pow, exp\r\n * parseDecimal Decimal\r\n * round P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n * P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n * divide, getLn10, exp, ln\r\n * subtract P.minus, P.plus\r\n * toString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n * truncate P.pow\r\n *\r\n * Throws: P.log, P.mod, P.sd, P.sqrt, P.pow, checkInt32, divide, round,\r\n * getLn10, exp, ln, parseDecimal, Decimal, config\r\n */\r\n\r\n\r\n function add(x, y) {\r\n var carry, d, e, i, k, len, xd, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // If either is zero...\r\n if (!x.s || !y.s) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!y.s) y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n k = x.e;\r\n e = y.e;\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % BASE | 0;\r\n carry = temp / BASE | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * BASE + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, dp) {\r\n var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either 0?\r\n if (!x.s) return new Ctor(x);\r\n if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n e = x.e - y.e;\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n } else if (dp) {\r\n sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) return new Ctor(0);\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / LOG_BASE + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * BASE + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n k = BASE / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k);\r\n xd = multiplyInteger(xd, k);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= BASE) k = BASE - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n\r\n q.e = e;\r\n\r\n return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n * significant digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n */\r\n function exp(x, sd) {\r\n var denominator, guard, pow, sum, t, wpr,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n // exp(0) = 1\r\n if (!x.s) return new Ctor(ONE);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n while (x.abs().gte(0.1)) {\r\n x = x.times(t); // x = x / 2^5\r\n k += 5;\r\n }\r\n\r\n // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(ONE);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = round(pow.times(x), wpr);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n while (k--) sum = round(sum.times(sum), wpr);\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(x) {\r\n var e = x.e * LOG_BASE,\r\n w = x.d[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for (; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n\r\n if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(decimalError + 'LN10 precision limit exceeded');\r\n }\r\n\r\n return round(new Ctor(Ctor.LN10), sd);\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n * digits.\r\n *\r\n * ln(n) is non-terminating (n != 1)\r\n *\r\n */\r\n function ln(y, sd) {\r\n var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // ln(-x) = NaN\r\n // ln(0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // ln(1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n if (x.eq(10)) {\r\n if (sd == null) external = true;\r\n return getLn10(Ctor, wpr);\r\n }\r\n\r\n wpr += guard;\r\n Ctor.precision = wpr;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n e = getBase10Exponent(x);\r\n\r\n if (Math.abs(e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(x, pr)) : x;\r\n }\r\n\r\n // x is reduced to a value near 1.\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n x2 = round(x.times(x), wpr);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = round(numerator.times(x2), wpr);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n e = e - i - 1;\r\n x.e = mathfloor(e / LOG_BASE);\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n } else {\r\n\r\n // Zero.\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n */\r\n function round(x, sd, rm) {\r\n var i, j, k, n, rd, doRound, w, xdi,\r\n xd = x.d;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // n: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n i = sd - n;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) return x;\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - n.\r\n j = i - LOG_BASE + n;\r\n }\r\n\r\n if (rm !== void 0) {\r\n k = mathpow(10, n - j - 1);\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / k % 10 | 0;\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n // 714.\r\n\r\n doRound = rm < 4\r\n ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n }\r\n\r\n if (sd < 1 || !xd[0]) {\r\n if (doRound) {\r\n k = getBase10Exponent(x);\r\n xd.length = 1;\r\n\r\n // Convert sd to decimal places.\r\n sd = sd - k - 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n } else {\r\n xd.length = 1;\r\n\r\n // Zero.\r\n xd[0] = x.e = x.s = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (doRound) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n if ((xd[0] += k) == BASE) {\r\n xd[0] = 1;\r\n ++x.e;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function subtract(x, y) {\r\n var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // Return y negated if x is zero.\r\n // Return x if y is zero and x is non-zero.\r\n if (!x.s || !y.s) {\r\n if (y.s) y.s = -y.s;\r\n else y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are non-zero numbers with the same sign.\r\n\r\n e = y.e;\r\n xe = x.e;\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of zeros\r\n // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to xd if shorter.\r\n // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(0);\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function toString(x, isExp, sd) {\r\n var k,\r\n e = getBase10Exponent(x),\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (e < 0 ? 'e' : 'e+') + e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * clone\r\n * config/set\r\n */\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * value {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(value) {\r\n var x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (value instanceof Decimal) {\r\n x.s = value.s;\r\n x.e = value.e;\r\n x.d = (value = value.d) ? value.slice() : value;\r\n return;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n\r\n // Reject Infinity/NaN.\r\n if (value * 0 !== 0) {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n if (value > 0) {\r\n x.s = 1;\r\n } else if (value < 0) {\r\n value = -value;\r\n x.s = -1;\r\n } else {\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (value === ~~value && value < 1e7) {\r\n x.e = 0;\r\n x.d = [value];\r\n return;\r\n }\r\n\r\n return parseDecimal(x, value.toString());\r\n } else if (typeof value !== 'string') {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n // Minus sign?\r\n if (value.charCodeAt(0) === 45) {\r\n value = value.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n if (isDecimal.test(value)) parseDecimal(x, value);\r\n else throw Error(invalidArgument + value);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n Decimal.clone = clone;\r\n Decimal.config = Decimal.set = config;\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n throw Error(decimalError + 'Object expected');\r\n }\r\n var i, p, v,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -1 / 0, 0,\r\n 'toExpPos', 0, 1 / 0\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if ((v = obj[p = ps[i]]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if ((v = obj[p = 'LN10']) !== void 0) {\r\n if (v == Math.LN10) this[p] = new this(v);\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(Decimal);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Internal constant.\r\n ONE = new Decimal(1);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self\r\n ? self : Function('return this')();\r\n }\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","export function invariant(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(\n message != null ? message : 'Unexpected invariant triggered.',\n );\n }\n}\n","import { invariant } from '../jsutils/invariant.mjs';\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n let lastLineStart = 0;\n let line = 1;\n\n for (const match of source.body.matchAll(LineRegExp)) {\n typeof match.index === 'number' || invariant(false);\n\n if (match.index >= position) {\n break;\n }\n\n lastLineStart = match.index + match[0].length;\n line += 1;\n }\n\n return {\n line,\n column: position + 1 - lastLineStart,\n };\n}\n","import { getLocation } from './location.mjs';\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nexport function printLocation(location) {\n return printSourceLocation(\n location.source,\n getLocation(location.source, location.start),\n );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n const firstLineColumnOffset = source.locationOffset.column - 1;\n const body = ''.padStart(firstLineColumnOffset) + source.body;\n const lineIndex = sourceLocation.line - 1;\n const lineOffset = source.locationOffset.line - 1;\n const lineNum = sourceLocation.line + lineOffset;\n const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n const columnNum = sourceLocation.column + columnOffset;\n const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n const lines = body.split(/\\r\\n|[\\n\\r]/g);\n const locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n const subLineIndex = Math.floor(columnNum / 80);\n const subLineColumnNum = columnNum % 80;\n const subLines = [];\n\n for (let i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return (\n locationStr +\n printPrefixedLines([\n [`${lineNum} |`, subLines[0]],\n ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n ['|', '^'.padStart(subLineColumnNum)],\n ['|', subLines[subLineIndex + 1]],\n ])\n );\n }\n\n return (\n locationStr +\n printPrefixedLines([\n // Lines specified like this: [\"prefix\", \"string\"],\n [`${lineNum - 1} |`, lines[lineIndex - 1]],\n [`${lineNum} |`, locationLine],\n ['|', '^'.padStart(columnNum)],\n [`${lineNum + 1} |`, lines[lineIndex + 1]],\n ])\n );\n}\n\nfunction printPrefixedLines(lines) {\n const existingLines = lines.filter(([_, line]) => line !== undefined);\n const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n return existingLines\n .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n .join('\\n');\n}\n","import { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { getLocation } from '../language/location.mjs';\nimport {\n printLocation,\n printSourceLocation,\n} from '../language/printLocation.mjs';\n\nfunction toNormalizedOptions(args) {\n const firstArg = args[0];\n\n if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n return {\n nodes: firstArg,\n source: args[1],\n positions: args[2],\n path: args[3],\n originalError: args[4],\n extensions: args[5],\n };\n }\n\n return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport class GraphQLError extends Error {\n /**\n * An array of `{ line, column }` locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n\n /**\n * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n */\n constructor(message, ...rawArgs) {\n var _this$nodes, _nodeLocations$, _ref;\n\n const { nodes, source, positions, path, originalError, extensions } =\n toNormalizedOptions(rawArgs);\n super(message);\n this.name = 'GraphQLError';\n this.path = path !== null && path !== void 0 ? path : undefined;\n this.originalError =\n originalError !== null && originalError !== void 0\n ? originalError\n : undefined; // Compute list of blame nodes.\n\n this.nodes = undefinedIfEmpty(\n Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n );\n const nodeLocations = undefinedIfEmpty(\n (_this$nodes = this.nodes) === null || _this$nodes === void 0\n ? void 0\n : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n ); // Compute locations in the source for the given nodes/positions.\n\n this.source =\n source !== null && source !== void 0\n ? source\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : (_nodeLocations$ = nodeLocations[0]) === null ||\n _nodeLocations$ === void 0\n ? void 0\n : _nodeLocations$.source;\n this.positions =\n positions !== null && positions !== void 0\n ? positions\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => loc.start);\n this.locations =\n positions && source\n ? positions.map((pos) => getLocation(source, pos))\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => getLocation(loc.source, loc.start));\n const originalExtensions = isObjectLike(\n originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions,\n )\n ? originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions\n : undefined;\n this.extensions =\n (_ref =\n extensions !== null && extensions !== void 0\n ? extensions\n : originalExtensions) !== null && _ref !== void 0\n ? _ref\n : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n // Keep the rest as non-enumerable.\n\n Object.defineProperties(this, {\n message: {\n writable: true,\n enumerable: true,\n },\n name: {\n enumerable: false,\n },\n nodes: {\n enumerable: false,\n },\n source: {\n enumerable: false,\n },\n positions: {\n enumerable: false,\n },\n originalError: {\n enumerable: false,\n },\n }); // Include (non-enumerable) stack trace.\n\n /* c8 ignore start */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n if (\n originalError !== null &&\n originalError !== void 0 &&\n originalError.stack\n ) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true,\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true,\n });\n }\n /* c8 ignore stop */\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLError';\n }\n\n toString() {\n let output = this.message;\n\n if (this.nodes) {\n for (const node of this.nodes) {\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (this.source && this.locations) {\n for (const location of this.locations) {\n output += '\\n\\n' + printSourceLocation(this.source, location);\n }\n }\n\n return output;\n }\n\n toJSON() {\n const formattedError = {\n message: this.message,\n };\n\n if (this.locations != null) {\n formattedError.locations = this.locations;\n }\n\n if (this.path != null) {\n formattedError.path = this.path;\n }\n\n if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n formattedError.extensions = this.extensions;\n }\n\n return formattedError;\n }\n}\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * See: https://spec.graphql.org/draft/#sec-Errors\n */\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\nexport function printError(error) {\n return error.toString();\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n *\n * @deprecated Please use `error.toJSON` instead. Will be removed in v17\n */\n\nexport function formatError(error) {\n return error.toJSON();\n}\n","/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport function isObjectLike(value) {\n return typeof value == 'object' && value !== null;\n}\n","import { GraphQLError } from './GraphQLError.mjs';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(`Syntax Error: ${description}`, {\n source,\n positions: [position],\n });\n}\n","/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation;\n\n(function (DirectiveLocation) {\n DirectiveLocation['QUERY'] = 'QUERY';\n DirectiveLocation['MUTATION'] = 'MUTATION';\n DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n DirectiveLocation['FIELD'] = 'FIELD';\n DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n DirectiveLocation['SCHEMA'] = 'SCHEMA';\n DirectiveLocation['SCALAR'] = 'SCALAR';\n DirectiveLocation['OBJECT'] = 'OBJECT';\n DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n DirectiveLocation['INTERFACE'] = 'INTERFACE';\n DirectiveLocation['UNION'] = 'UNION';\n DirectiveLocation['ENUM'] = 'ENUM';\n DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (DirectiveLocation = {}));\n\nexport { DirectiveLocation };\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nvar TokenKind;\n\n(function (TokenKind) {\n TokenKind['SOF'] = '<SOF>';\n TokenKind['EOF'] = '<EOF>';\n TokenKind['BANG'] = '!';\n TokenKind['DOLLAR'] = '$';\n TokenKind['AMP'] = '&';\n TokenKind['PAREN_L'] = '(';\n TokenKind['PAREN_R'] = ')';\n TokenKind['SPREAD'] = '...';\n TokenKind['COLON'] = ':';\n TokenKind['EQUALS'] = '=';\n TokenKind['AT'] = '@';\n TokenKind['BRACKET_L'] = '[';\n TokenKind['BRACKET_R'] = ']';\n TokenKind['BRACE_L'] = '{';\n TokenKind['PIPE'] = '|';\n TokenKind['BRACE_R'] = '}';\n TokenKind['NAME'] = 'Name';\n TokenKind['INT'] = 'Int';\n TokenKind['FLOAT'] = 'Float';\n TokenKind['STRING'] = 'String';\n TokenKind['BLOCK_STRING'] = 'BlockString';\n TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (TokenKind = {}));\n\nexport { TokenKind };\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Token } from './ast.mjs';\nimport { dedentBlockStringLines } from './blockString.mjs';\nimport { isDigit, isNameContinue, isNameStart } from './characterClasses.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport class Lexer {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n constructor(source) {\n const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n\n get [Symbol.toStringTag]() {\n return 'Lexer';\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n advance() {\n this.lastToken = this.token;\n const token = (this.token = this.lookahead());\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n\n lookahead() {\n let token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n if (token.next) {\n token = token.next;\n } else {\n // Read the next token and form a link in the token linked-list.\n const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n nextToken.prev = token;\n token = nextToken;\n }\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n }\n}\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return (\n kind === TokenKind.BANG ||\n kind === TokenKind.DOLLAR ||\n kind === TokenKind.AMP ||\n kind === TokenKind.PAREN_L ||\n kind === TokenKind.PAREN_R ||\n kind === TokenKind.SPREAD ||\n kind === TokenKind.COLON ||\n kind === TokenKind.EQUALS ||\n kind === TokenKind.AT ||\n kind === TokenKind.BRACKET_L ||\n kind === TokenKind.BRACKET_R ||\n kind === TokenKind.BRACE_L ||\n kind === TokenKind.PIPE ||\n kind === TokenKind.BRACE_R\n );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n * - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n return (\n (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n return (\n isLeadingSurrogate(body.charCodeAt(location)) &&\n isTrailingSurrogate(body.charCodeAt(location + 1))\n );\n}\n\nfunction isLeadingSurrogate(code) {\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n */\n\nfunction printCodePointAt(lexer, location) {\n const code = lexer.source.body.codePointAt(location);\n\n if (code === undefined) {\n return TokenKind.EOF;\n } else if (code >= 0x0020 && code <= 0x007e) {\n // Printable ASCII\n const char = String.fromCodePoint(code);\n return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n } // Unicode code point\n\n return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n const line = lexer.line;\n const col = 1 + start - lexer.lineStart;\n return new Token(kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // SourceCharacter\n\n switch (code) {\n // Ignored ::\n // - UnicodeBOM\n // - WhiteSpace\n // - LineTerminator\n // - Comment\n // - Comma\n //\n // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n //\n // WhiteSpace ::\n // - \"Horizontal Tab (U+0009)\"\n // - \"Space (U+0020)\"\n //\n // Comma :: ,\n case 0xfeff: // <BOM>\n\n case 0x0009: // \\t\n\n case 0x0020: // <space>\n\n case 0x002c:\n // ,\n ++position;\n continue;\n // LineTerminator ::\n // - \"New Line (U+000A)\"\n // - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n // - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n case 0x000a:\n // \\n\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n\n case 0x000d:\n // \\r\n if (body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n // Comment\n\n case 0x0023:\n // #\n return readComment(lexer, position);\n // Token ::\n // - Punctuator\n // - Name\n // - IntValue\n // - FloatValue\n // - StringValue\n //\n // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n case 0x0021:\n // !\n return createToken(lexer, TokenKind.BANG, position, position + 1);\n\n case 0x0024:\n // $\n return createToken(lexer, TokenKind.DOLLAR, position, position + 1);\n\n case 0x0026:\n // &\n return createToken(lexer, TokenKind.AMP, position, position + 1);\n\n case 0x0028:\n // (\n return createToken(lexer, TokenKind.PAREN_L, position, position + 1);\n\n case 0x0029:\n // )\n return createToken(lexer, TokenKind.PAREN_R, position, position + 1);\n\n case 0x002e:\n // .\n if (\n body.charCodeAt(position + 1) === 0x002e &&\n body.charCodeAt(position + 2) === 0x002e\n ) {\n return createToken(lexer, TokenKind.SPREAD, position, position + 3);\n }\n\n break;\n\n case 0x003a:\n // :\n return createToken(lexer, TokenKind.COLON, position, position + 1);\n\n case 0x003d:\n // =\n return createToken(lexer, TokenKind.EQUALS, position, position + 1);\n\n case 0x0040:\n // @\n return createToken(lexer, TokenKind.AT, position, position + 1);\n\n case 0x005b:\n // [\n return createToken(lexer, TokenKind.BRACKET_L, position, position + 1);\n\n case 0x005d:\n // ]\n return createToken(lexer, TokenKind.BRACKET_R, position, position + 1);\n\n case 0x007b:\n // {\n return createToken(lexer, TokenKind.BRACE_L, position, position + 1);\n\n case 0x007c:\n // |\n return createToken(lexer, TokenKind.PIPE, position, position + 1);\n\n case 0x007d:\n // }\n return createToken(lexer, TokenKind.BRACE_R, position, position + 1);\n // StringValue\n\n case 0x0022:\n // \"\n if (\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n return readBlockString(lexer, position);\n }\n\n return readString(lexer, position);\n } // IntValue | FloatValue (Digit | -)\n\n if (isDigit(code) || code === 0x002d) {\n return readNumber(lexer, position, code);\n } // Name\n\n if (isNameStart(code)) {\n return readName(lexer, position);\n }\n\n throw syntaxError(\n lexer.source,\n position,\n code === 0x0027\n ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n );\n }\n\n return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.COMMENT,\n start,\n position,\n body.slice(start + 1, position),\n );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n * - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n const body = lexer.source.body;\n let position = start;\n let code = firstCode;\n let isFloat = false; // NegativeSign (-)\n\n if (code === 0x002d) {\n code = body.charCodeAt(++position);\n } // Zero (0)\n\n if (code === 0x0030) {\n code = body.charCodeAt(++position);\n\n if (isDigit(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, unexpected digit after 0: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n } else {\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Full stop (.)\n\n if (code === 0x002e) {\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // E e\n\n if (code === 0x0045 || code === 0x0065) {\n isFloat = true;\n code = body.charCodeAt(++position); // + -\n\n if (code === 0x002b || code === 0x002d) {\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n if (code === 0x002e || isNameStart(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n\n return createToken(\n lexer,\n isFloat ? TokenKind.FLOAT : TokenKind.INT,\n start,\n position,\n body.slice(start, position),\n );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n if (!isDigit(firstCode)) {\n throw syntaxError(\n lexer.source,\n start,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n start,\n )}.`,\n );\n }\n\n const body = lexer.source.body;\n let position = start + 1; // +1 to skip first firstCode\n\n while (isDigit(body.charCodeAt(position))) {\n ++position;\n }\n\n return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"` [lookahead != `\"`]\n * - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n * - SourceCharacter but not `\"` or `\\` or LineTerminator\n * - `\\u` EscapedUnicode\n * - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n * - `{` HexDigit+ `}`\n * - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n let chunkStart = position;\n let value = '';\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Quote (\")\n\n if (code === 0x0022) {\n value += body.slice(chunkStart, position);\n return createToken(lexer, TokenKind.STRING, start, position + 1, value);\n } // Escape Sequence (\\)\n\n if (code === 0x005c) {\n value += body.slice(chunkStart, position);\n const escape =\n body.charCodeAt(position + 1) === 0x0075 // u\n ? body.charCodeAt(position + 2) === 0x007b // {\n ? readEscapedUnicodeVariableWidth(lexer, position)\n : readEscapedUnicodeFixedWidth(lexer, position)\n : readEscapedCharacter(lexer, position);\n value += escape.value;\n position += escape.size;\n chunkStart = position;\n continue;\n } // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n const body = lexer.source.body;\n let point = 0;\n let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n while (size < 12) {\n const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n if (code === 0x007d) {\n // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n if (size < 5 || !isUnicodeScalarValue(point)) {\n break;\n }\n\n return {\n value: String.fromCodePoint(point),\n size,\n };\n } // Append this hex digit to the code point.\n\n point = (point << 4) | readHexDigit(code);\n\n if (point < 0) {\n break;\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(\n position,\n position + size,\n )}\".`,\n );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n const body = lexer.source.body;\n const code = read16BitHexCode(body, position + 2);\n\n if (isUnicodeScalarValue(code)) {\n return {\n value: String.fromCodePoint(code),\n size: 6,\n };\n } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n // a valid pair is formed.\n\n if (isLeadingSurrogate(code)) {\n // \\u\n if (\n body.charCodeAt(position + 6) === 0x005c &&\n body.charCodeAt(position + 7) === 0x0075\n ) {\n const trailingCode = read16BitHexCode(body, position + 8);\n\n if (isTrailingSurrogate(trailingCode)) {\n // JavaScript defines strings as a sequence of UTF-16 code units and\n // encodes Unicode code points above U+FFFF using a surrogate pair of\n // code units. Since this is a surrogate pair escape sequence, just\n // include both codes into the JavaScript string value. Had JavaScript\n // not been internally based on UTF-16, then this surrogate pair would\n // be decoded to retrieve the supplementary code point.\n return {\n value: String.fromCodePoint(code, trailingCode),\n size: 12,\n };\n }\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n // readHexDigit() returns -1 on error. ORing a negative value with any other\n // value always produces a negative value.\n return (\n (readHexDigit(body.charCodeAt(position)) << 12) |\n (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n readHexDigit(body.charCodeAt(position + 3))\n );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * - `A` `B` `C` `D` `E` `F`\n * - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n return code >= 0x0030 && code <= 0x0039 // 0-9\n ? code - 0x0030\n : code >= 0x0041 && code <= 0x0046 // A-F\n ? code - 0x0037\n : code >= 0x0061 && code <= 0x0066 // a-f\n ? code - 0x0057\n : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"` | U+0022 | double quote |\n * | `\\` | U+005C | reverse solidus (back slash) |\n * | `/` | U+002F | solidus (forward slash) |\n * | `b` | U+0008 | backspace |\n * | `f` | U+000C | form feed |\n * | `n` | U+000A | line feed (new line) |\n * | `r` | U+000D | carriage return |\n * | `t` | U+0009 | horizontal tab |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n const body = lexer.source.body;\n const code = body.charCodeAt(position + 1);\n\n switch (code) {\n case 0x0022:\n // \"\n return {\n value: '\\u0022',\n size: 2,\n };\n\n case 0x005c:\n // \\\n return {\n value: '\\u005c',\n size: 2,\n };\n\n case 0x002f:\n // /\n return {\n value: '\\u002f',\n size: 2,\n };\n\n case 0x0062:\n // b\n return {\n value: '\\u0008',\n size: 2,\n };\n\n case 0x0066:\n // f\n return {\n value: '\\u000c',\n size: 2,\n };\n\n case 0x006e:\n // n\n return {\n value: '\\u000a',\n size: 2,\n };\n\n case 0x0072:\n // r\n return {\n value: '\\u000d',\n size: 2,\n };\n\n case 0x0074:\n // t\n return {\n value: '\\u0009',\n size: 2,\n };\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character escape sequence: \"${body.slice(\n position,\n position + 2,\n )}\".`,\n );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n * - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n * - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let lineStart = lexer.lineStart;\n let position = start + 3;\n let chunkStart = position;\n let currentLine = '';\n const blockLines = [];\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n if (\n code === 0x0022 &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n const token = createToken(\n lexer,\n TokenKind.BLOCK_STRING,\n start,\n position + 3, // Return a string of the lines joined with U+000A.\n dedentBlockStringLines(blockLines).join('\\n'),\n );\n lexer.line += blockLines.length - 1;\n lexer.lineStart = lineStart;\n return token;\n } // Escaped Triple-Quote (\\\"\"\")\n\n if (\n code === 0x005c &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022 &&\n body.charCodeAt(position + 3) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n chunkStart = position + 1; // skip only slash\n\n position += 4;\n continue;\n } // LineTerminator\n\n if (code === 0x000a || code === 0x000d) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n\n if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n currentLine = '';\n chunkStart = position;\n lineStart = position;\n continue;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n * - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n */\n\nfunction readName(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position);\n\n if (isNameContinue(code)) {\n ++position;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.NAME,\n start,\n position,\n body.slice(start, position),\n );\n}\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Location, OperationTypeNode } from './ast.mjs';\nimport { DirectiveLocation } from './directiveLocation.mjs';\nimport { Kind } from './kinds.mjs';\nimport { isPunctuatorTokenKind, Lexer } from './lexer.mjs';\nimport { isSource, Source } from './source.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n const parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nexport function parseConstValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseConstValueLiteral();\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport class Parser {\n constructor(source, options = {}) {\n const sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n this._tokenCounter = 0;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n parseName() {\n const token = this.expectToken(TokenKind.NAME);\n return this.node(token, {\n kind: Kind.NAME,\n value: token.value,\n });\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n\n parseDocument() {\n return this.node(this._lexer.token, {\n kind: Kind.DOCUMENT,\n definitions: this.many(\n TokenKind.SOF,\n this.parseDefinition,\n TokenKind.EOF,\n ),\n });\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n *\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\n parseDefinition() {\n if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } // Many definitions begin with a description and require a lookahead.\n\n const hasDescription = this.peekDescription();\n const keywordToken = hasDescription\n ? this._lexer.lookahead()\n : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n\n if (hasDescription) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, descriptions are supported only on type definitions.',\n );\n }\n\n switch (keywordToken.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n parseOperationDefinition() {\n const start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n const operation = this.parseOperationType();\n let name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation,\n name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * OperationType : one of query mutation subscription\n */\n\n parseOperationType() {\n const operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return OperationTypeNode.QUERY;\n\n case 'mutation':\n return OperationTypeNode.MUTATION;\n\n case 'subscription':\n return OperationTypeNode.SUBSCRIPTION;\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n parseVariableDefinitions() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseVariableDefinition,\n TokenKind.PAREN_R,\n );\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n parseVariableDefinition() {\n return this.node(this._lexer.token, {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS)\n ? this.parseConstValueLiteral()\n : undefined,\n directives: this.parseConstDirectives(),\n });\n }\n /**\n * Variable : $ Name\n */\n\n parseVariable() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return this.node(start, {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n });\n }\n /**\n * ```\n * SelectionSet : { Selection+ }\n * ```\n */\n\n parseSelectionSet() {\n return this.node(this._lexer.token, {\n kind: Kind.SELECTION_SET,\n selections: this.many(\n TokenKind.BRACE_L,\n this.parseSelection,\n TokenKind.BRACE_R,\n ),\n });\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n parseSelection() {\n return this.peek(TokenKind.SPREAD)\n ? this.parseFragment()\n : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n parseField() {\n const start = this._lexer.token;\n const nameOrAlias = this.parseName();\n let alias;\n let name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return this.node(start, {\n kind: Kind.FIELD,\n alias,\n name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L)\n ? this.parseSelectionSet()\n : undefined,\n });\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n parseArguments(isConst) {\n const item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n\n parseArgument(isConst = false) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.ARGUMENT,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n parseConstArgument() {\n return this.parseArgument(true);\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n parseFragment() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n const hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return this.node(start, {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n });\n }\n\n return this.node(start, {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n parseFragmentDefinition() {\n const start = this._lexer.token;\n this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (this._options.allowLegacyFragmentVariables === true) {\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentName : Name but not `on`\n */\n\n parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseValueLiteral(isConst) {\n const token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.INT,\n value: token.value,\n });\n\n case TokenKind.FLOAT:\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.FLOAT,\n value: token.value,\n });\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this.advanceLexer();\n\n switch (token.value) {\n case 'true':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: true,\n });\n\n case 'false':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: false,\n });\n\n case 'null':\n return this.node(token, {\n kind: Kind.NULL,\n });\n\n default:\n return this.node(token, {\n kind: Kind.ENUM,\n value: token.value,\n });\n }\n\n case TokenKind.DOLLAR:\n if (isConst) {\n this.expectToken(TokenKind.DOLLAR);\n\n if (this._lexer.token.kind === TokenKind.NAME) {\n const varName = this._lexer.token.value;\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected variable \"$${varName}\" in constant value.`,\n );\n } else {\n throw this.unexpected(token);\n }\n }\n\n return this.parseVariable();\n\n default:\n throw this.unexpected();\n }\n }\n\n parseConstValueLiteral() {\n return this.parseValueLiteral(true);\n }\n\n parseStringLiteral() {\n const token = this._lexer.token;\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n });\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n parseList(isConst) {\n const item = () => this.parseValueLiteral(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n });\n }\n /**\n * ```\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n * ```\n */\n\n parseObject(isConst) {\n const item = () => this.parseObjectField(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n });\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n parseObjectField(isConst) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.OBJECT_FIELD,\n name,\n value: this.parseValueLiteral(isConst),\n });\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n\n parseDirectives(isConst) {\n const directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n\n parseConstDirectives() {\n return this.parseDirectives(true);\n }\n /**\n * ```\n * Directive[Const] : @ Name Arguments[?Const]?\n * ```\n */\n\n parseDirective(isConst) {\n const start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return this.node(start, {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n });\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n parseTypeReference() {\n const start = this._lexer.token;\n let type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n const innerType = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = this.node(start, {\n kind: Kind.LIST_TYPE,\n type: innerType,\n });\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return this.node(start, {\n kind: Kind.NON_NULL_TYPE,\n type,\n });\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n\n parseNamedType() {\n return this.node(this._lexer.token, {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n });\n } // Implements the parsing rules in the Type Definition section.\n\n peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n\n parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * ```\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n * ```\n */\n\n parseSchemaDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.many(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n return this.node(start, {\n kind: Kind.SCHEMA_DEFINITION,\n description,\n directives,\n operationTypes,\n });\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n parseOperationTypeDefinition() {\n const start = this._lexer.token;\n const operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n const type = this.parseNamedType();\n return this.node(start, {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation,\n type,\n });\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n parseScalarTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n parseObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n parseImplementsInterfaces() {\n return this.expectOptionalKeyword('implements')\n ? this.delimitedMany(TokenKind.AMP, this.parseNamedType)\n : [];\n }\n /**\n * ```\n * FieldsDefinition : { FieldDefinition+ }\n * ```\n */\n\n parseFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseFieldDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n parseFieldDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.FIELD_DEFINITION,\n description,\n name,\n arguments: args,\n type,\n directives,\n });\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n parseArgumentDefs() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseInputValueDef,\n TokenKind.PAREN_R,\n );\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n parseInputValueDef() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n let defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseConstValueLiteral();\n }\n\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description,\n name,\n type,\n defaultValue,\n directives,\n });\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n parseInterfaceTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n parseUnionTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n return this.node(start, {\n kind: Kind.UNION_TYPE_DEFINITION,\n description,\n name,\n directives,\n types,\n });\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS)\n ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType)\n : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n parseEnumTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n return this.node(start, {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description,\n name,\n directives,\n values,\n });\n }\n /**\n * ```\n * EnumValuesDefinition : { EnumValueDefinition+ }\n * ```\n */\n\n parseEnumValuesDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseEnumValueDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n */\n\n parseEnumValueDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseEnumValueName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseEnumValueName() {\n if (\n this._lexer.token.value === 'true' ||\n this._lexer.token.value === 'false' ||\n this._lexer.token.value === 'null'\n ) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n `${getTokenDesc(\n this._lexer.token,\n )} is reserved and cannot be used for an enum value.`,\n );\n }\n\n return this.parseName();\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n parseInputObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * InputFieldsDefinition : { InputValueDefinition+ }\n * ```\n */\n\n parseInputFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseInputValueDef,\n TokenKind.BRACE_R,\n );\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n parseTypeSystemExtension() {\n const keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * ```\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n * ```\n */\n\n parseSchemaExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.optionalMany(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCHEMA_EXTENSION,\n directives,\n operationTypes,\n });\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n parseScalarTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n parseObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n\n parseInterfaceTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n parseUnionTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.UNION_TYPE_EXTENSION,\n name,\n directives,\n types,\n });\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n parseEnumTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name,\n directives,\n values,\n });\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n parseInputObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n * ```\n */\n\n parseDirectiveDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n const repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n const locations = this.parseDirectiveLocations();\n return this.node(start, {\n kind: Kind.DIRECTIVE_DEFINITION,\n description,\n name,\n arguments: args,\n repeatable,\n locations,\n });\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n parseDirectiveLocation() {\n const start = this._lexer.token;\n const name = this.parseName();\n\n if (Object.prototype.hasOwnProperty.call(DirectiveLocation, name.value)) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a node that, if configured to do so, sets a \"loc\" field as a\n * location object, used to identify the place in the source that created a\n * given parsed object.\n */\n\n node(startToken, node) {\n if (this._options.noLocation !== true) {\n node.loc = new Location(\n startToken,\n this._lexer.lastToken,\n this._lexer.source,\n );\n }\n\n return node;\n }\n /**\n * Determines if the next token is of a given kind\n */\n\n peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this.advanceLexer();\n return token;\n }\n\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n );\n }\n /**\n * If the next token is of the given kind, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this.advanceLexer();\n return true;\n }\n\n return false;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n } else {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n );\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n\n unexpected(atToken) {\n const token =\n atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected ${getTokenDesc(token)}.`,\n );\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n\n delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n }\n\n advanceLexer() {\n const { maxTokens } = this._options;\n\n const token = this._lexer.advance();\n\n if (maxTokens !== undefined && token.kind !== TokenKind.EOF) {\n ++this._tokenCounter;\n\n if (this._tokenCounter > maxTokens) {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Document contains more that ${maxTokens} tokens. Parsing aborted.`,\n );\n }\n }\n }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n const value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? `\"${kind}\"` : kind;\n}\n","import { __assign } from \"tslib\";\nimport { parse } from 'graphql';\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n var seenKeys = new Set();\n var definitions = [];\n ast.definitions.forEach(function (fragmentDefinition) {\n if (fragmentDefinition.kind === 'FragmentDefinition') {\n var fragmentName = fragmentDefinition.name.value;\n var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n var sourceKeySet = fragmentSourceMap.get(fragmentName);\n if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n if (printFragmentWarnings) {\n console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\"\n + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\"\n + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n }\n }\n else if (!sourceKeySet) {\n fragmentSourceMap.set(fragmentName, sourceKeySet = new Set);\n }\n sourceKeySet.add(sourceKey);\n if (!seenKeys.has(sourceKey)) {\n seenKeys.add(sourceKey);\n definitions.push(fragmentDefinition);\n }\n }\n else {\n definitions.push(fragmentDefinition);\n }\n });\n return __assign(__assign({}, ast), { definitions: definitions });\n}\nfunction stripLoc(doc) {\n var workSet = new Set(doc.definitions);\n workSet.forEach(function (node) {\n if (node.loc)\n delete node.loc;\n Object.keys(node).forEach(function (key) {\n var value = node[key];\n if (value && typeof value === 'object') {\n workSet.add(value);\n }\n });\n });\n var loc = doc.loc;\n if (loc) {\n delete loc.startToken;\n delete loc.endToken;\n }\n return doc;\n}\nfunction parseDocument(source) {\n var cacheKey = normalize(source);\n if (!docCache.has(cacheKey)) {\n var parsed = parse(source, {\n experimentalFragmentVariables: experimentalFragmentVariables,\n allowLegacyFragmentVariables: experimentalFragmentVariables\n });\n if (!parsed || parsed.kind !== 'Document') {\n throw new Error('Not a valid GraphQL document.');\n }\n docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n }\n return docCache.get(cacheKey);\n}\nexport function gql(literals) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof literals === 'string') {\n literals = [literals];\n }\n var result = literals[0];\n args.forEach(function (arg, i) {\n if (arg && arg.kind === 'Document') {\n result += arg.loc.source.body;\n }\n else {\n result += arg;\n }\n result += literals[i + 1];\n });\n return parseDocument(result);\n}\nexport function resetCaches() {\n docCache.clear();\n fragmentSourceMap.clear();\n}\nexport function disableFragmentWarnings() {\n printFragmentWarnings = false;\n}\nexport function enableExperimentalFragmentVariables() {\n experimentalFragmentVariables = true;\n}\nexport function disableExperimentalFragmentVariables() {\n experimentalFragmentVariables = false;\n}\nvar extras = {\n gql: gql,\n resetCaches: resetCaches,\n disableFragmentWarnings: disableFragmentWarnings,\n enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\nexport default gql;\n//# sourceMappingURL=index.js.map","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\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 */\nfunction 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// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\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 */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\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 */\nfunction 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\nmodule.exports = arrayEvery;\n","var baseIndexOf = require('./_baseIndexOf');\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 */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\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 */\nfunction 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\nmodule.exports = arrayIncludesWith;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\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 */\nfunction 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\nmodule.exports = baseDelay;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\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 */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\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 */\nfunction 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\nmodule.exports = baseEvery;\n","var isSymbol = require('./isSymbol');\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 */\nfunction 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\nmodule.exports = baseExtremum;\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 */\nfunction 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\nmodule.exports = baseFindIndex;\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 */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\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 */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\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 */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\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 */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\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 */\nfunction 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\nmodule.exports = baseMap;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\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 */\nfunction 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(baseIteratee));\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\nmodule.exports = baseOrderBy;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\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 */\nfunction 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\nmodule.exports = baseRange;\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 */\nfunction 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\nmodule.exports = baseReduce;\n","var identity = require('./identity'),\n metaMap = require('./_metaMap');\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 */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nmodule.exports = baseSetData;\n","var baseEach = require('./_baseEach');\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 */\nfunction 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\nmodule.exports = baseSome;\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 */\nfunction 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\nmodule.exports = baseSortBy;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\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 */\nfunction 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\nmodule.exports = baseUniq;\n","var identity = require('./identity');\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 */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var isSymbol = require('./isSymbol');\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 */\nfunction 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\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\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 */\nfunction 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\nmodule.exports = compareMultiple;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\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 */\nfunction 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\nmodule.exports = composeArgs;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\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 */\nfunction 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\nmodule.exports = composeArgsRight;\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 */\nfunction 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\nmodule.exports = countHolders;\n","var isArrayLike = require('./isArrayLike');\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 */\nfunction 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\nmodule.exports = createBaseEach;\n","var createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\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 */\nfunction 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\nmodule.exports = createBind;\n","var baseCreate = require('./_baseCreate'),\n isObject = require('./isObject');\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 */\nfunction 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\nmodule.exports = createCtor;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n createHybrid = require('./_createHybrid'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\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 */\nfunction 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\nmodule.exports = createCurry;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\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 */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(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\nmodule.exports = createFind;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n countHolders = require('./_countHolders'),\n createCtor = require('./_createCtor'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n reorder = require('./_reorder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\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 */\nfunction 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\nmodule.exports = createHybrid;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\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 */\nfunction 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\nmodule.exports = createPartial;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\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 */\nfunction 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\nmodule.exports = createRange;\n","var isLaziable = require('./_isLaziable'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\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 */\nfunction 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\nmodule.exports = createRecurry;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\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 */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var baseSetData = require('./_baseSetData'),\n createBind = require('./_createBind'),\n createCurry = require('./_createCurry'),\n createHybrid = require('./_createHybrid'),\n createPartial = require('./_createPartial'),\n getData = require('./_getData'),\n mergeData = require('./_mergeData'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString'),\n toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\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 */\nfunction 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\nmodule.exports = createWrap;\n","var metaMap = require('./_metaMap'),\n noop = require('./noop');\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 */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = getFuncName;\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 */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nmodule.exports = getHolder;\n","/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\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 */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nmodule.exports = getWrapDetails;\n","/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\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 */\nfunction 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\nmodule.exports = insertWrapDetails;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\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 */\nfunction 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\nmodule.exports = isLaziable;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\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 */\nfunction 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\nmodule.exports = mergeData;\n","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","var copyArray = require('./_copyArray'),\n isIndex = require('./_isIndex');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\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 */\nfunction 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\nmodule.exports = reorder;\n","/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\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 */\nfunction 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\nmodule.exports = replaceHolders;\n","var baseSetData = require('./_baseSetData'),\n shortOut = require('./_shortOut');\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 */\nvar setData = shortOut(baseSetData);\n\nmodule.exports = setData;\n","var getWrapDetails = require('./_getWrapDetails'),\n insertWrapDetails = require('./_insertWrapDetails'),\n setToString = require('./_setToString'),\n updateWrapDetails = require('./_updateWrapDetails');\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 */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nmodule.exports = setWrapToString;\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 */\nfunction 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\nmodule.exports = strictIndexOf;\n","var arrayEach = require('./_arrayEach'),\n arrayIncludes = require('./_arrayIncludes');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\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 to associate wrap methods with their bit flags. */\nvar 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/**\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 */\nfunction 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\nmodule.exports = updateWrapDetails;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\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 */\nfunction 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\nmodule.exports = wrapperClone;\n","var baseRest = require('./_baseRest'),\n createWrap = require('./_createWrap'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_PARTIAL_FLAG = 32;\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 */\nvar 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// Assign default placeholders.\nbind.placeholder = {};\n\nmodule.exports = bind;\n","var baseDelay = require('./_baseDelay'),\n baseRest = require('./_baseRest'),\n toNumber = require('./toNumber');\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 */\nvar delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n});\n\nmodule.exports = delay;\n","var arrayEvery = require('./_arrayEvery'),\n baseEvery = require('./_baseEvery'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\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 */\nfunction 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, baseIteratee(predicate, 3));\n}\n\nmodule.exports = every;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\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 */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\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 */\nfunction 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, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\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 */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\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 */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\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 */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n","var baseIsEqual = require('./_baseIsEqual');\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 */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var isNumber = require('./isNumber');\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 */\nfunction 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\nmodule.exports = isNaN;\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 */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\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 */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","var createCaseFirst = require('./_createCaseFirst');\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 */\nvar lowerFirst = createCaseFirst('toLowerCase');\n\nmodule.exports = lowerFirst;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\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 */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\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 */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\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 */\nfunction 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, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\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 */\nvar 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\nmodule.exports = sortBy;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\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 */\nfunction 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\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\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 */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\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 */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\n","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\r\n// object keys weakly, yet can also hold non-object keys, unlike the\r\n// native `WeakMap`.\r\n// If no makeData function is supplied, the looked-up data will be an empty,\r\n// null-prototype Object.\r\nvar defaultMakeData = function () { return Object.create(null); };\r\n// Useful for processing arguments objects as well as arrays.\r\nvar _a = Array.prototype, forEach = _a.forEach, slice = _a.slice;\r\nvar Trie = /** @class */ (function () {\r\n function Trie(weakness, makeData) {\r\n if (weakness === void 0) { weakness = true; }\r\n if (makeData === void 0) { makeData = defaultMakeData; }\r\n this.weakness = weakness;\r\n this.makeData = makeData;\r\n }\r\n Trie.prototype.lookup = function () {\r\n var array = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n array[_i] = arguments[_i];\r\n }\r\n return this.lookupArray(array);\r\n };\r\n Trie.prototype.lookupArray = function (array) {\r\n var node = this;\r\n forEach.call(array, function (key) { return node = node.getChildTrie(key); });\r\n return node.data || (node.data = this.makeData(slice.call(array)));\r\n };\r\n Trie.prototype.getChildTrie = function (key) {\r\n var map = this.weakness && isObjRef(key)\r\n ? this.weak || (this.weak = new WeakMap())\r\n : this.strong || (this.strong = new Map());\r\n var child = map.get(key);\r\n if (!child)\r\n map.set(key, child = new Trie(this.weakness, this.makeData));\r\n return child;\r\n };\r\n return Trie;\r\n}());\r\nfunction isObjRef(value) {\r\n switch (typeof value) {\r\n case \"object\":\r\n if (value === null)\r\n break;\r\n // Fall through to return true...\r\n case \"function\":\r\n return true;\r\n }\r\n return false;\r\n}\n\nexport { Trie };\n//# sourceMappingURL=trie.esm.js.map\n","import { Trie } from '@wry/trie';\nexport { Trie as KeyTrie } from '@wry/trie';\nimport { Slot } from '@wry/context';\nexport { asyncFromGen, bind as bindContext, noContext, setTimeout } from '@wry/context';\n\nfunction defaultDispose() { }\r\nvar Cache = /** @class */ (function () {\r\n function Cache(max, dispose) {\r\n if (max === void 0) { max = Infinity; }\r\n if (dispose === void 0) { dispose = defaultDispose; }\r\n this.max = max;\r\n this.dispose = dispose;\r\n this.map = new Map();\r\n this.newest = null;\r\n this.oldest = null;\r\n }\r\n Cache.prototype.has = function (key) {\r\n return this.map.has(key);\r\n };\r\n Cache.prototype.get = function (key) {\r\n var node = this.getNode(key);\r\n return node && node.value;\r\n };\r\n Cache.prototype.getNode = function (key) {\r\n var node = this.map.get(key);\r\n if (node && node !== this.newest) {\r\n var older = node.older, newer = node.newer;\r\n if (newer) {\r\n newer.older = older;\r\n }\r\n if (older) {\r\n older.newer = newer;\r\n }\r\n node.older = this.newest;\r\n node.older.newer = node;\r\n node.newer = null;\r\n this.newest = node;\r\n if (node === this.oldest) {\r\n this.oldest = newer;\r\n }\r\n }\r\n return node;\r\n };\r\n Cache.prototype.set = function (key, value) {\r\n var node = this.getNode(key);\r\n if (node) {\r\n return node.value = value;\r\n }\r\n node = {\r\n key: key,\r\n value: value,\r\n newer: null,\r\n older: this.newest\r\n };\r\n if (this.newest) {\r\n this.newest.newer = node;\r\n }\r\n this.newest = node;\r\n this.oldest = this.oldest || node;\r\n this.map.set(key, node);\r\n return node.value;\r\n };\r\n Cache.prototype.clean = function () {\r\n while (this.oldest && this.map.size > this.max) {\r\n this.delete(this.oldest.key);\r\n }\r\n };\r\n Cache.prototype.delete = function (key) {\r\n var node = this.map.get(key);\r\n if (node) {\r\n if (node === this.newest) {\r\n this.newest = node.older;\r\n }\r\n if (node === this.oldest) {\r\n this.oldest = node.newer;\r\n }\r\n if (node.newer) {\r\n node.newer.older = node.older;\r\n }\r\n if (node.older) {\r\n node.older.newer = node.newer;\r\n }\r\n this.map.delete(key);\r\n this.dispose(node.value, key);\r\n return true;\r\n }\r\n return false;\r\n };\r\n return Cache;\r\n}());\n\nvar parentEntrySlot = new Slot();\n\nvar _a;\r\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\r\nvar \r\n// This Array.from polyfill is restricted to working with Set<any> for now,\r\n// but we can improve the polyfill and add other input types, as needed. Note\r\n// that this fallback implementation will only be used if the host environment\r\n// does not support a native Array.from function. In most modern JS runtimes,\r\n// the toArray function exported here will be === Array.from.\r\ntoArray = (_a = Array.from, _a === void 0 ? function (collection) {\r\n var array = [];\r\n collection.forEach(function (item) { return array.push(item); });\r\n return array;\r\n} : _a);\r\nfunction maybeUnsubscribe(entryOrDep) {\r\n var unsubscribe = entryOrDep.unsubscribe;\r\n if (typeof unsubscribe === \"function\") {\r\n entryOrDep.unsubscribe = void 0;\r\n unsubscribe();\r\n }\r\n}\n\nvar emptySetPool = [];\r\nvar POOL_TARGET_SIZE = 100;\r\n// Since this package might be used browsers, we should avoid using the\r\n// Node built-in assert module.\r\nfunction assert(condition, optionalMessage) {\r\n if (!condition) {\r\n throw new Error(optionalMessage || \"assertion failure\");\r\n }\r\n}\r\nfunction valueIs(a, b) {\r\n var len = a.length;\r\n return (\r\n // Unknown values are not equal to each other.\r\n len > 0 &&\r\n // Both values must be ordinary (or both exceptional) to be equal.\r\n len === b.length &&\r\n // The underlying value or exception must be the same.\r\n a[len - 1] === b[len - 1]);\r\n}\r\nfunction valueGet(value) {\r\n switch (value.length) {\r\n case 0: throw new Error(\"unknown value\");\r\n case 1: return value[0];\r\n case 2: throw value[1];\r\n }\r\n}\r\nfunction valueCopy(value) {\r\n return value.slice(0);\r\n}\r\nvar Entry = /** @class */ (function () {\r\n function Entry(fn) {\r\n this.fn = fn;\r\n this.parents = new Set();\r\n this.childValues = new Map();\r\n // When this Entry has children that are dirty, this property becomes\r\n // a Set containing other Entry objects, borrowed from emptySetPool.\r\n // When the set becomes empty, it gets recycled back to emptySetPool.\r\n this.dirtyChildren = null;\r\n this.dirty = true;\r\n this.recomputing = false;\r\n this.value = [];\r\n this.deps = null;\r\n ++Entry.count;\r\n }\r\n Entry.prototype.peek = function () {\r\n if (this.value.length === 1 && !mightBeDirty(this)) {\r\n rememberParent(this);\r\n return this.value[0];\r\n }\r\n };\r\n // This is the most important method of the Entry API, because it\r\n // determines whether the cached this.value can be returned immediately,\r\n // or must be recomputed. The overall performance of the caching system\r\n // depends on the truth of the following observations: (1) this.dirty is\r\n // usually false, (2) this.dirtyChildren is usually null/empty, and thus\r\n // (3) valueGet(this.value) is usually returned without recomputation.\r\n Entry.prototype.recompute = function (args) {\r\n assert(!this.recomputing, \"already recomputing\");\r\n rememberParent(this);\r\n return mightBeDirty(this)\r\n ? reallyRecompute(this, args)\r\n : valueGet(this.value);\r\n };\r\n Entry.prototype.setDirty = function () {\r\n if (this.dirty)\r\n return;\r\n this.dirty = true;\r\n this.value.length = 0;\r\n reportDirty(this);\r\n // We can go ahead and unsubscribe here, since any further dirty\r\n // notifications we receive will be redundant, and unsubscribing may\r\n // free up some resources, e.g. file watchers.\r\n maybeUnsubscribe(this);\r\n };\r\n Entry.prototype.dispose = function () {\r\n var _this = this;\r\n this.setDirty();\r\n // Sever any dependency relationships with our own children, so those\r\n // children don't retain this parent Entry in their child.parents sets,\r\n // thereby preventing it from being fully garbage collected.\r\n forgetChildren(this);\r\n // Because this entry has been kicked out of the cache (in index.js),\r\n // we've lost the ability to find out if/when this entry becomes dirty,\r\n // whether that happens through a subscription, because of a direct call\r\n // to entry.setDirty(), or because one of its children becomes dirty.\r\n // Because of this loss of future information, we have to assume the\r\n // worst (that this entry might have become dirty very soon), so we must\r\n // immediately mark this entry's parents as dirty. Normally we could\r\n // just call entry.setDirty() rather than calling parent.setDirty() for\r\n // each parent, but that would leave this entry in parent.childValues\r\n // and parent.dirtyChildren, which would prevent the child from being\r\n // truly forgotten.\r\n eachParent(this, function (parent, child) {\r\n parent.setDirty();\r\n forgetChild(parent, _this);\r\n });\r\n };\r\n Entry.prototype.forget = function () {\r\n // The code that creates Entry objects in index.ts will replace this method\r\n // with one that actually removes the Entry from the cache, which will also\r\n // trigger the entry.dispose method.\r\n this.dispose();\r\n };\r\n Entry.prototype.dependOn = function (dep) {\r\n dep.add(this);\r\n if (!this.deps) {\r\n this.deps = emptySetPool.pop() || new Set();\r\n }\r\n this.deps.add(dep);\r\n };\r\n Entry.prototype.forgetDeps = function () {\r\n var _this = this;\r\n if (this.deps) {\r\n toArray(this.deps).forEach(function (dep) { return dep.delete(_this); });\r\n this.deps.clear();\r\n emptySetPool.push(this.deps);\r\n this.deps = null;\r\n }\r\n };\r\n Entry.count = 0;\r\n return Entry;\r\n}());\r\nfunction rememberParent(child) {\r\n var parent = parentEntrySlot.getValue();\r\n if (parent) {\r\n child.parents.add(parent);\r\n if (!parent.childValues.has(child)) {\r\n parent.childValues.set(child, []);\r\n }\r\n if (mightBeDirty(child)) {\r\n reportDirtyChild(parent, child);\r\n }\r\n else {\r\n reportCleanChild(parent, child);\r\n }\r\n return parent;\r\n }\r\n}\r\nfunction reallyRecompute(entry, args) {\r\n forgetChildren(entry);\r\n // Set entry as the parent entry while calling recomputeNewValue(entry).\r\n parentEntrySlot.withValue(entry, recomputeNewValue, [entry, args]);\r\n if (maybeSubscribe(entry, args)) {\r\n // If we successfully recomputed entry.value and did not fail to\r\n // (re)subscribe, then this Entry is no longer explicitly dirty.\r\n setClean(entry);\r\n }\r\n return valueGet(entry.value);\r\n}\r\nfunction recomputeNewValue(entry, args) {\r\n entry.recomputing = true;\r\n // Set entry.value as unknown.\r\n entry.value.length = 0;\r\n try {\r\n // If entry.fn succeeds, entry.value will become a normal Value.\r\n entry.value[0] = entry.fn.apply(null, args);\r\n }\r\n catch (e) {\r\n // If entry.fn throws, entry.value will become exceptional.\r\n entry.value[1] = e;\r\n }\r\n // Either way, this line is always reached.\r\n entry.recomputing = false;\r\n}\r\nfunction mightBeDirty(entry) {\r\n return entry.dirty || !!(entry.dirtyChildren && entry.dirtyChildren.size);\r\n}\r\nfunction setClean(entry) {\r\n entry.dirty = false;\r\n if (mightBeDirty(entry)) {\r\n // This Entry may still have dirty children, in which case we can't\r\n // let our parents know we're clean just yet.\r\n return;\r\n }\r\n reportClean(entry);\r\n}\r\nfunction reportDirty(child) {\r\n eachParent(child, reportDirtyChild);\r\n}\r\nfunction reportClean(child) {\r\n eachParent(child, reportCleanChild);\r\n}\r\nfunction eachParent(child, callback) {\r\n var parentCount = child.parents.size;\r\n if (parentCount) {\r\n var parents = toArray(child.parents);\r\n for (var i = 0; i < parentCount; ++i) {\r\n callback(parents[i], child);\r\n }\r\n }\r\n}\r\n// Let a parent Entry know that one of its children may be dirty.\r\nfunction reportDirtyChild(parent, child) {\r\n // Must have called rememberParent(child) before calling\r\n // reportDirtyChild(parent, child).\r\n assert(parent.childValues.has(child));\r\n assert(mightBeDirty(child));\r\n var parentWasClean = !mightBeDirty(parent);\r\n if (!parent.dirtyChildren) {\r\n parent.dirtyChildren = emptySetPool.pop() || new Set;\r\n }\r\n else if (parent.dirtyChildren.has(child)) {\r\n // If we already know this child is dirty, then we must have already\r\n // informed our own parents that we are dirty, so we can terminate\r\n // the recursion early.\r\n return;\r\n }\r\n parent.dirtyChildren.add(child);\r\n // If parent was clean before, it just became (possibly) dirty (according to\r\n // mightBeDirty), since we just added child to parent.dirtyChildren.\r\n if (parentWasClean) {\r\n reportDirty(parent);\r\n }\r\n}\r\n// Let a parent Entry know that one of its children is no longer dirty.\r\nfunction reportCleanChild(parent, child) {\r\n // Must have called rememberChild(child) before calling\r\n // reportCleanChild(parent, child).\r\n assert(parent.childValues.has(child));\r\n assert(!mightBeDirty(child));\r\n var childValue = parent.childValues.get(child);\r\n if (childValue.length === 0) {\r\n parent.childValues.set(child, valueCopy(child.value));\r\n }\r\n else if (!valueIs(childValue, child.value)) {\r\n parent.setDirty();\r\n }\r\n removeDirtyChild(parent, child);\r\n if (mightBeDirty(parent)) {\r\n return;\r\n }\r\n reportClean(parent);\r\n}\r\nfunction removeDirtyChild(parent, child) {\r\n var dc = parent.dirtyChildren;\r\n if (dc) {\r\n dc.delete(child);\r\n if (dc.size === 0) {\r\n if (emptySetPool.length < POOL_TARGET_SIZE) {\r\n emptySetPool.push(dc);\r\n }\r\n parent.dirtyChildren = null;\r\n }\r\n }\r\n}\r\n// Removes all children from this entry and returns an array of the\r\n// removed children.\r\nfunction forgetChildren(parent) {\r\n if (parent.childValues.size > 0) {\r\n parent.childValues.forEach(function (_value, child) {\r\n forgetChild(parent, child);\r\n });\r\n }\r\n // Remove this parent Entry from any sets to which it was added by the\r\n // addToSet method.\r\n parent.forgetDeps();\r\n // After we forget all our children, this.dirtyChildren must be empty\r\n // and therefore must have been reset to null.\r\n assert(parent.dirtyChildren === null);\r\n}\r\nfunction forgetChild(parent, child) {\r\n child.parents.delete(parent);\r\n parent.childValues.delete(child);\r\n removeDirtyChild(parent, child);\r\n}\r\nfunction maybeSubscribe(entry, args) {\r\n if (typeof entry.subscribe === \"function\") {\r\n try {\r\n maybeUnsubscribe(entry); // Prevent double subscriptions.\r\n entry.unsubscribe = entry.subscribe.apply(null, args);\r\n }\r\n catch (e) {\r\n // If this Entry has a subscribe function and it threw an exception\r\n // (or an unsubscribe function it previously returned now throws),\r\n // return false to indicate that we were not able to subscribe (or\r\n // unsubscribe), and this Entry should remain dirty.\r\n entry.setDirty();\r\n return false;\r\n }\r\n }\r\n // Returning true indicates either that there was no entry.subscribe\r\n // function or that it succeeded.\r\n return true;\r\n}\n\nvar EntryMethods = {\r\n setDirty: true,\r\n dispose: true,\r\n forget: true, // Fully remove parent Entry from LRU cache and computation graph\r\n};\r\nfunction dep(options) {\r\n var depsByKey = new Map();\r\n var subscribe = options && options.subscribe;\r\n function depend(key) {\r\n var parent = parentEntrySlot.getValue();\r\n if (parent) {\r\n var dep_1 = depsByKey.get(key);\r\n if (!dep_1) {\r\n depsByKey.set(key, dep_1 = new Set);\r\n }\r\n parent.dependOn(dep_1);\r\n if (typeof subscribe === \"function\") {\r\n maybeUnsubscribe(dep_1);\r\n dep_1.unsubscribe = subscribe(key);\r\n }\r\n }\r\n }\r\n depend.dirty = function dirty(key, entryMethodName) {\r\n var dep = depsByKey.get(key);\r\n if (dep) {\r\n var m_1 = (entryMethodName &&\r\n hasOwnProperty.call(EntryMethods, entryMethodName)) ? entryMethodName : \"setDirty\";\r\n // We have to use toArray(dep).forEach instead of dep.forEach, because\r\n // modifying a Set while iterating over it can cause elements in the Set\r\n // to be removed from the Set before they've been iterated over.\r\n toArray(dep).forEach(function (entry) { return entry[m_1](); });\r\n depsByKey.delete(key);\r\n maybeUnsubscribe(dep);\r\n }\r\n };\r\n return depend;\r\n}\n\nfunction makeDefaultMakeCacheKeyFunction() {\r\n var keyTrie = new Trie(typeof WeakMap === \"function\");\r\n return function () {\r\n return keyTrie.lookupArray(arguments);\r\n };\r\n}\r\n// The defaultMakeCacheKey function is remarkably powerful, because it gives\r\n// a unique object for any shallow-identical list of arguments. If you need\r\n// to implement a custom makeCacheKey function, you may find it helpful to\r\n// delegate the final work to defaultMakeCacheKey, which is why we export it\r\n// here. However, you may want to avoid defaultMakeCacheKey if your runtime\r\n// does not support WeakMap, or you have the ability to return a string key.\r\n// In those cases, just write your own custom makeCacheKey functions.\r\nvar defaultMakeCacheKey = makeDefaultMakeCacheKeyFunction();\r\nvar caches = new Set();\r\nfunction wrap(originalFunction, options) {\r\n if (options === void 0) { options = Object.create(null); }\r\n var cache = new Cache(options.max || Math.pow(2, 16), function (entry) { return entry.dispose(); });\r\n var keyArgs = options.keyArgs;\r\n var makeCacheKey = options.makeCacheKey ||\r\n makeDefaultMakeCacheKeyFunction();\r\n var optimistic = function () {\r\n var key = makeCacheKey.apply(null, keyArgs ? keyArgs.apply(null, arguments) : arguments);\r\n if (key === void 0) {\r\n return originalFunction.apply(null, arguments);\r\n }\r\n var entry = cache.get(key);\r\n if (!entry) {\r\n cache.set(key, entry = new Entry(originalFunction));\r\n entry.subscribe = options.subscribe;\r\n // Give the Entry the ability to trigger cache.delete(key), even though\r\n // the Entry itself does not know about key or cache.\r\n entry.forget = function () { return cache.delete(key); };\r\n }\r\n var value = entry.recompute(Array.prototype.slice.call(arguments));\r\n // Move this entry to the front of the least-recently used queue,\r\n // since we just finished computing its value.\r\n cache.set(key, entry);\r\n caches.add(cache);\r\n // Clean up any excess entries in the cache, but only if there is no\r\n // active parent entry, meaning we're not in the middle of a larger\r\n // computation that might be flummoxed by the cleaning.\r\n if (!parentEntrySlot.hasValue()) {\r\n caches.forEach(function (cache) { return cache.clean(); });\r\n caches.clear();\r\n }\r\n return value;\r\n };\r\n Object.defineProperty(optimistic, \"size\", {\r\n get: function () {\r\n return cache[\"map\"].size;\r\n },\r\n configurable: false,\r\n enumerable: false,\r\n });\r\n function dirtyKey(key) {\r\n var entry = cache.get(key);\r\n if (entry) {\r\n entry.setDirty();\r\n }\r\n }\r\n optimistic.dirtyKey = dirtyKey;\r\n optimistic.dirty = function dirty() {\r\n dirtyKey(makeCacheKey.apply(null, arguments));\r\n };\r\n function peekKey(key) {\r\n var entry = cache.get(key);\r\n if (entry) {\r\n return entry.peek();\r\n }\r\n }\r\n optimistic.peekKey = peekKey;\r\n optimistic.peek = function peek() {\r\n return peekKey(makeCacheKey.apply(null, arguments));\r\n };\r\n function forgetKey(key) {\r\n return cache.delete(key);\r\n }\r\n optimistic.forgetKey = forgetKey;\r\n optimistic.forget = function forget() {\r\n return forgetKey(makeCacheKey.apply(null, arguments));\r\n };\r\n optimistic.makeCacheKey = makeCacheKey;\r\n optimistic.getKey = keyArgs ? function getKey() {\r\n return makeCacheKey.apply(null, keyArgs.apply(null, arguments));\r\n } : makeCacheKey;\r\n return Object.freeze(optimistic);\r\n}\n\nexport { defaultMakeCacheKey, dep, wrap };\n//# sourceMappingURL=bundle.esm.js.map\n","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', './react-swipe'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('./react-swipe'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.reactSwipe);\n global.index = mod.exports;\n }\n})(this, function (exports, _reactSwipe) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _reactSwipe2 = _interopRequireDefault(_reactSwipe);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n exports.default = _reactSwipe2.default;\n});","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', 'prop-types'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('prop-types'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.propTypes);\n global.reactSwipe = mod.exports;\n }\n})(this, function (exports, _react, _propTypes) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.setHasSupportToCaptureOption = setHasSupportToCaptureOption;\n\n var _react2 = _interopRequireDefault(_react);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n function _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var supportsCaptureOption = false;\n function setHasSupportToCaptureOption(hasSupport) {\n supportsCaptureOption = hasSupport;\n }\n\n try {\n addEventListener('test', null, Object.defineProperty({}, 'capture', { get: function get() {\n setHasSupportToCaptureOption(true);\n } }));\n } catch (e) {} // eslint-disable-line no-empty\n\n function getSafeEventHandlerOpts() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { capture: true };\n\n return supportsCaptureOption ? options : options.capture;\n }\n\n /**\n * [getPosition returns a position element that works for mouse or touch events]\n * @param {[Event]} event [the received event]\n * @return {[Object]} [x and y coords]\n */\n function getPosition(event) {\n if ('touches' in event) {\n var _event$touches$ = event.touches[0],\n pageX = _event$touches$.pageX,\n pageY = _event$touches$.pageY;\n\n return { x: pageX, y: pageY };\n }\n\n var screenX = event.screenX,\n screenY = event.screenY;\n\n return { x: screenX, y: screenY };\n }\n\n var ReactSwipe = function (_Component) {\n _inherits(ReactSwipe, _Component);\n\n function ReactSwipe() {\n var _ref;\n\n _classCallCheck(this, ReactSwipe);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = _possibleConstructorReturn(this, (_ref = ReactSwipe.__proto__ || Object.getPrototypeOf(ReactSwipe)).call.apply(_ref, [this].concat(args)));\n\n _this._handleSwipeStart = _this._handleSwipeStart.bind(_this);\n _this._handleSwipeMove = _this._handleSwipeMove.bind(_this);\n _this._handleSwipeEnd = _this._handleSwipeEnd.bind(_this);\n\n _this._onMouseDown = _this._onMouseDown.bind(_this);\n _this._onMouseMove = _this._onMouseMove.bind(_this);\n _this._onMouseUp = _this._onMouseUp.bind(_this);\n\n _this._setSwiperRef = _this._setSwiperRef.bind(_this);\n return _this;\n }\n\n _createClass(ReactSwipe, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.swiper) {\n this.swiper.addEventListener('touchmove', this._handleSwipeMove, getSafeEventHandlerOpts({\n capture: true,\n passive: false\n }));\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.swiper) {\n this.swiper.removeEventListener('touchmove', this._handleSwipeMove, getSafeEventHandlerOpts({\n capture: true,\n passive: false\n }));\n }\n }\n }, {\n key: '_onMouseDown',\n value: function _onMouseDown(event) {\n if (!this.props.allowMouseEvents) {\n return;\n }\n\n this.mouseDown = true;\n\n document.addEventListener('mouseup', this._onMouseUp);\n document.addEventListener('mousemove', this._onMouseMove);\n\n this._handleSwipeStart(event);\n }\n }, {\n key: '_onMouseMove',\n value: function _onMouseMove(event) {\n if (!this.mouseDown) {\n return;\n }\n\n this._handleSwipeMove(event);\n }\n }, {\n key: '_onMouseUp',\n value: function _onMouseUp(event) {\n this.mouseDown = false;\n\n document.removeEventListener('mouseup', this._onMouseUp);\n document.removeEventListener('mousemove', this._onMouseMove);\n\n this._handleSwipeEnd(event);\n }\n }, {\n key: '_handleSwipeStart',\n value: function _handleSwipeStart(event) {\n var _getPosition = getPosition(event),\n x = _getPosition.x,\n y = _getPosition.y;\n\n this.moveStart = { x: x, y: y };\n this.props.onSwipeStart(event);\n }\n }, {\n key: '_handleSwipeMove',\n value: function _handleSwipeMove(event) {\n if (!this.moveStart) {\n return;\n }\n\n var _getPosition2 = getPosition(event),\n x = _getPosition2.x,\n y = _getPosition2.y;\n\n var deltaX = x - this.moveStart.x;\n var deltaY = y - this.moveStart.y;\n this.moving = true;\n\n // handling the responsability of cancelling the scroll to\n // the component handling the event\n var shouldPreventDefault = this.props.onSwipeMove({\n x: deltaX,\n y: deltaY\n }, event);\n\n if (shouldPreventDefault && event.cancelable) {\n event.preventDefault();\n }\n\n this.movePosition = { deltaX: deltaX, deltaY: deltaY };\n }\n }, {\n key: '_handleSwipeEnd',\n value: function _handleSwipeEnd(event) {\n this.props.onSwipeEnd(event);\n\n var tolerance = this.props.tolerance;\n\n\n if (this.moving && this.movePosition) {\n if (this.movePosition.deltaX < -tolerance) {\n this.props.onSwipeLeft(1, event);\n } else if (this.movePosition.deltaX > tolerance) {\n this.props.onSwipeRight(1, event);\n }\n if (this.movePosition.deltaY < -tolerance) {\n this.props.onSwipeUp(1, event);\n } else if (this.movePosition.deltaY > tolerance) {\n this.props.onSwipeDown(1, event);\n }\n }\n\n this.moveStart = null;\n this.moving = false;\n this.movePosition = null;\n }\n }, {\n key: '_setSwiperRef',\n value: function _setSwiperRef(node) {\n this.swiper = node;\n this.props.innerRef(node);\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n tagName = _props.tagName,\n className = _props.className,\n style = _props.style,\n children = _props.children,\n allowMouseEvents = _props.allowMouseEvents,\n onSwipeUp = _props.onSwipeUp,\n onSwipeDown = _props.onSwipeDown,\n onSwipeLeft = _props.onSwipeLeft,\n onSwipeRight = _props.onSwipeRight,\n onSwipeStart = _props.onSwipeStart,\n onSwipeMove = _props.onSwipeMove,\n onSwipeEnd = _props.onSwipeEnd,\n innerRef = _props.innerRef,\n tolerance = _props.tolerance,\n props = _objectWithoutProperties(_props, ['tagName', 'className', 'style', 'children', 'allowMouseEvents', 'onSwipeUp', 'onSwipeDown', 'onSwipeLeft', 'onSwipeRight', 'onSwipeStart', 'onSwipeMove', 'onSwipeEnd', 'innerRef', 'tolerance']);\n\n return _react2.default.createElement(\n this.props.tagName,\n _extends({\n ref: this._setSwiperRef,\n onMouseDown: this._onMouseDown,\n onTouchStart: this._handleSwipeStart,\n onTouchEnd: this._handleSwipeEnd,\n className: className,\n style: style\n }, props),\n children\n );\n }\n }]);\n\n return ReactSwipe;\n }(_react.Component);\n\n ReactSwipe.displayName = 'ReactSwipe';\n ReactSwipe.propTypes = {\n tagName: _propTypes2.default.string,\n className: _propTypes2.default.string,\n style: _propTypes2.default.object,\n children: _propTypes2.default.node,\n allowMouseEvents: _propTypes2.default.bool,\n onSwipeUp: _propTypes2.default.func,\n onSwipeDown: _propTypes2.default.func,\n onSwipeLeft: _propTypes2.default.func,\n onSwipeRight: _propTypes2.default.func,\n onSwipeStart: _propTypes2.default.func,\n onSwipeMove: _propTypes2.default.func,\n onSwipeEnd: _propTypes2.default.func,\n innerRef: _propTypes2.default.func,\n tolerance: _propTypes2.default.number.isRequired\n };\n ReactSwipe.defaultProps = {\n tagName: 'div',\n allowMouseEvents: false,\n onSwipeUp: function onSwipeUp() {},\n onSwipeDown: function onSwipeDown() {},\n onSwipeLeft: function onSwipeLeft() {},\n onSwipeRight: function onSwipeRight() {},\n onSwipeStart: function onSwipeStart() {},\n onSwipeMove: function onSwipeMove() {},\n onSwipeEnd: function onSwipeEnd() {},\n innerRef: function innerRef() {},\n\n tolerance: 0\n };\n exports.default = ReactSwipe;\n});","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar prop_types_1 = __importDefault(require(\"prop-types\"));\nvar react_1 = __importDefault(require(\"react\"));\nvar FileDrop = /** @class */ (function (_super) {\n __extends(FileDrop, _super);\n function FileDrop(props) {\n var _this = _super.call(this, props) || this;\n _this.resetDragging = function () {\n _this.frameDragCounter = 0;\n _this.setState({ draggingOverFrame: false, draggingOverTarget: false });\n };\n _this.handleWindowDragOverOrDrop = function (event) {\n // This prevents the browser from trying to load whatever file the user dropped on the window\n event.preventDefault();\n };\n _this.handleFrameDrag = function (event) {\n // Only allow dragging of files\n if (!FileDrop.eventHasFiles(event))\n return;\n // We are listening for events on the 'frame', so every time the user drags over any element in the frame's tree,\n // the event bubbles up to the frame. By keeping count of how many \"dragenters\" we get, we can tell if they are still\n // \"draggingOverFrame\" (b/c you get one \"dragenter\" initially, and one \"dragenter\"/one \"dragleave\" for every bubble)\n // This is far better than a \"dragover\" handler, which would be calling `setState` continuously.\n _this.frameDragCounter += event.type === 'dragenter' ? 1 : -1;\n if (_this.frameDragCounter === 1) {\n _this.setState({ draggingOverFrame: true });\n if (_this.props.onFrameDragEnter)\n _this.props.onFrameDragEnter(event);\n return;\n }\n if (_this.frameDragCounter === 0) {\n _this.setState({ draggingOverFrame: false });\n if (_this.props.onFrameDragLeave)\n _this.props.onFrameDragLeave(event);\n return;\n }\n };\n _this.handleFrameDrop = function (event) {\n if (!_this.state.draggingOverTarget) {\n _this.resetDragging();\n if (_this.props.onFrameDrop)\n _this.props.onFrameDrop(event);\n }\n };\n _this.handleDragOver = function (event) {\n if (FileDrop.eventHasFiles(event)) {\n _this.setState({ draggingOverTarget: true });\n if (!FileDrop.isIE() && _this.props.dropEffect)\n event.dataTransfer.dropEffect = _this.props.dropEffect;\n if (_this.props.onDragOver)\n _this.props.onDragOver(event);\n }\n };\n _this.handleDragLeave = function (event) {\n _this.setState({ draggingOverTarget: false });\n if (_this.props.onDragLeave)\n _this.props.onDragLeave(event);\n };\n _this.handleDrop = function (event) {\n if (_this.props.onDrop && FileDrop.eventHasFiles(event)) {\n var files = event.dataTransfer ? event.dataTransfer.files : null;\n _this.props.onDrop(files, event);\n }\n _this.resetDragging();\n };\n _this.handleTargetClick = function (event) {\n if (_this.props.onTargetClick) {\n _this.props.onTargetClick(event);\n }\n _this.resetDragging();\n };\n _this.stopFrameListeners = function (frame) {\n if (frame) {\n frame.removeEventListener('dragenter', _this.handleFrameDrag);\n frame.removeEventListener('dragleave', _this.handleFrameDrag);\n frame.removeEventListener('drop', _this.handleFrameDrop);\n }\n };\n _this.startFrameListeners = function (frame) {\n if (frame) {\n frame.addEventListener('dragenter', _this.handleFrameDrag);\n frame.addEventListener('dragleave', _this.handleFrameDrag);\n frame.addEventListener('drop', _this.handleFrameDrop);\n }\n };\n _this.frameDragCounter = 0;\n _this.state = { draggingOverFrame: false, draggingOverTarget: false };\n return _this;\n }\n FileDrop.prototype.componentDidMount = function () {\n this.startFrameListeners(this.props.frame);\n this.resetDragging();\n window.addEventListener('dragover', this.handleWindowDragOverOrDrop);\n window.addEventListener('drop', this.handleWindowDragOverOrDrop);\n };\n FileDrop.prototype.componentDidUpdate = function (prevProps) {\n if (prevProps.frame !== this.props.frame) {\n this.resetDragging();\n this.stopFrameListeners(prevProps.frame);\n this.startFrameListeners(this.props.frame);\n }\n };\n FileDrop.prototype.componentWillUnmount = function () {\n this.stopFrameListeners(this.props.frame);\n window.removeEventListener('dragover', this.handleWindowDragOverOrDrop);\n window.removeEventListener('drop', this.handleWindowDragOverOrDrop);\n };\n FileDrop.prototype.render = function () {\n var _a = this.props, children = _a.children, className = _a.className, targetClassName = _a.targetClassName, draggingOverFrameClassName = _a.draggingOverFrameClassName, draggingOverTargetClassName = _a.draggingOverTargetClassName;\n var _b = this.state, draggingOverTarget = _b.draggingOverTarget, draggingOverFrame = _b.draggingOverFrame;\n var fileDropTargetClassName = targetClassName;\n if (draggingOverFrame)\n fileDropTargetClassName += \" \" + draggingOverFrameClassName;\n if (draggingOverTarget)\n fileDropTargetClassName += \" \" + draggingOverTargetClassName;\n return (react_1.default.createElement(\"div\", { className: className, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop },\n react_1.default.createElement(\"div\", { className: fileDropTargetClassName, onClick: this.handleTargetClick }, children)));\n };\n FileDrop.isIE = function () {\n return typeof window !== 'undefined' &&\n (window.navigator.userAgent.indexOf('MSIE') !== -1 ||\n window.navigator.appVersion.indexOf('Trident/') > 0);\n };\n FileDrop.eventHasFiles = function (event) {\n // In most browsers this is an array, but in IE11 it's an Object :(\n var hasFiles = false;\n if (event.dataTransfer) {\n var types = event.dataTransfer.types;\n for (var keyOrIndex in types) {\n if (types[keyOrIndex] === 'Files') {\n hasFiles = true;\n break;\n }\n }\n }\n return hasFiles;\n };\n FileDrop.propTypes = {\n className: prop_types_1.default.string,\n targetClassName: prop_types_1.default.string,\n draggingOverFrameClassName: prop_types_1.default.string,\n draggingOverTargetClassName: prop_types_1.default.string,\n onDragOver: prop_types_1.default.func,\n onDragLeave: prop_types_1.default.func,\n onDrop: prop_types_1.default.func,\n onTargetClick: prop_types_1.default.func,\n dropEffect: prop_types_1.default.oneOf(['copy', 'move', 'link', 'none']),\n frame: function (props, propName, componentName) {\n var prop = props[propName];\n if (prop == null) {\n return new Error('Warning: Required prop `' + propName + '` was not specified in `' + componentName + '`');\n }\n if (prop !== document && !(prop instanceof HTMLElement)) {\n return new Error('Warning: Prop `' + propName + '` must be one of the following: document, HTMLElement!');\n }\n },\n onFrameDragEnter: prop_types_1.default.func,\n onFrameDragLeave: prop_types_1.default.func,\n onFrameDrop: prop_types_1.default.func,\n };\n FileDrop.defaultProps = {\n dropEffect: 'copy',\n frame: typeof window === 'undefined' ? undefined : window.document,\n className: 'file-drop',\n targetClassName: 'file-drop-target',\n draggingOverFrameClassName: 'file-drop-dragging-over-frame',\n draggingOverTargetClassName: 'file-drop-dragging-over-target',\n };\n return FileDrop;\n}(react_1.default.PureComponent));\nexports.FileDrop = FileDrop;\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.BicyclingLayer = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.BicyclingLayer`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#BicyclingLayer\n */\n/*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\nvar BicyclingLayer = (exports.BicyclingLayer = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(BicyclingLayer, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#BicyclingLayer\n */\n function BicyclingLayer(props, context) {\n ;(0, _classCallCheck3.default)(this, BicyclingLayer)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (\n BicyclingLayer.__proto__ ||\n (0, _getPrototypeOf2.default)(BicyclingLayer)\n ).call(this, props, context)\n )\n\n var bicyclingLayer = new google.maps.BicyclingLayer()\n ;(0, _MapChildHelper.construct)(\n BicyclingLayer.propTypes,\n updaterMap,\n _this.props,\n bicyclingLayer\n )\n bicyclingLayer.setMap(_this.context[_constants.MAP])\n _this.state = (0, _defineProperty3.default)(\n {},\n _constants.BICYCLING_LAYER,\n bicyclingLayer\n )\n return _this\n }\n\n ;(0, _createClass3.default)(BicyclingLayer, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.BICYCLING_LAYER],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.BICYCLING_LAYER],\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var bicyclingLayer = this.state[_constants.BICYCLING_LAYER]\n if (bicyclingLayer) {\n bicyclingLayer.setMap(null)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n return false\n },\n },\n ])\n return BicyclingLayer\n})(_react2.default.PureComponent))\n\nBicyclingLayer.propTypes = {}\nBicyclingLayer.contextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nexports.default = BicyclingLayer\n\nvar eventMap = {}\n\nvar updaterMap = {}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.Circle = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.Circle`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Circle\n */\n/*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\nvar Circle = (exports.Circle = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(Circle, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Circle\n */\n function Circle(props, context) {\n ;(0, _classCallCheck3.default)(this, Circle)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (Circle.__proto__ || (0, _getPrototypeOf2.default)(Circle)).call(\n this,\n props,\n context\n )\n )\n\n var circle = new google.maps.Circle()\n ;(0, _MapChildHelper.construct)(\n Circle.propTypes,\n updaterMap,\n _this.props,\n circle\n )\n circle.setMap(_this.context[_constants.MAP])\n _this.state = (0, _defineProperty3.default)({}, _constants.CIRCLE, circle)\n return _this\n }\n\n ;(0, _createClass3.default)(Circle, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.CIRCLE],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.CIRCLE],\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var circle = this.state[_constants.CIRCLE]\n if (circle) {\n circle.setMap(null)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n return false\n },\n\n /**\n * Gets the `LatLngBounds` of this Circle.\n * @type LatLngBoundsLatLngBounds\n * @public\n */\n },\n {\n key: \"getBounds\",\n value: function getBounds() {\n return this.state[_constants.CIRCLE].getBounds()\n },\n\n /**\n * Returns the center of this circle.\n * @type LatLng\n * @public\n */\n },\n {\n key: \"getCenter\",\n value: function getCenter() {\n return this.state[_constants.CIRCLE].getCenter()\n },\n\n /**\n * Returns whether this circle can be dragged by the user.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getDraggable\",\n value: function getDraggable() {\n return this.state[_constants.CIRCLE].getDraggable()\n },\n\n /**\n * Returns whether this circle can be edited by the user.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getEditable\",\n value: function getEditable() {\n return this.state[_constants.CIRCLE].getEditable()\n },\n\n /**\n * Returns the radius of this circle (in meters).\n * @type number\n * @public\n */\n },\n {\n key: \"getRadius\",\n value: function getRadius() {\n return this.state[_constants.CIRCLE].getRadius()\n },\n\n /**\n * Returns whether this circle is visible on the map.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getVisible\",\n value: function getVisible() {\n return this.state[_constants.CIRCLE].getVisible()\n },\n },\n ])\n return Circle\n})(_react2.default.PureComponent))\n\nCircle.propTypes = {\n /**\n * @type LatLng|LatLngLiteral\n */\n defaultCenter: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n defaultDraggable: _propTypes2.default.bool,\n\n /**\n * @type boolean\n */\n defaultEditable: _propTypes2.default.bool,\n\n /**\n * @type CircleOptions\n */\n defaultOptions: _propTypes2.default.any,\n\n /**\n * @type number\n */\n defaultRadius: _propTypes2.default.number,\n\n /**\n * @type boolean\n */\n defaultVisible: _propTypes2.default.bool,\n\n /**\n * @type LatLng|LatLngLiteral\n */\n center: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n draggable: _propTypes2.default.bool,\n\n /**\n * @type boolean\n */\n editable: _propTypes2.default.bool,\n\n /**\n * @type CircleOptions\n */\n options: _propTypes2.default.any,\n\n /**\n * @type number\n */\n radius: _propTypes2.default.number,\n\n /**\n * @type boolean\n */\n visible: _propTypes2.default.bool,\n\n /**\n * function\n */\n onDblClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onDragEnd: _propTypes2.default.func,\n\n /**\n * function\n */\n onDragStart: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseDown: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseMove: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseOut: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseOver: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseUp: _propTypes2.default.func,\n\n /**\n * function\n */\n onRightClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onCenterChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onDrag: _propTypes2.default.func,\n\n /**\n * function\n */\n onRadiusChanged: _propTypes2.default.func,\n}\nCircle.contextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nexports.default = Circle\n\nvar eventMap = {\n onDblClick: \"dblclick\",\n onDragEnd: \"dragend\",\n onDragStart: \"dragstart\",\n onMouseDown: \"mousedown\",\n onMouseMove: \"mousemove\",\n onMouseOut: \"mouseout\",\n onMouseOver: \"mouseover\",\n onMouseUp: \"mouseup\",\n onRightClick: \"rightclick\",\n onCenterChanged: \"center_changed\",\n onClick: \"click\",\n onDrag: \"drag\",\n onRadiusChanged: \"radius_changed\",\n}\n\nvar updaterMap = {\n center: function center(instance, _center) {\n instance.setCenter(_center)\n },\n draggable: function draggable(instance, _draggable) {\n instance.setDraggable(_draggable)\n },\n editable: function editable(instance, _editable) {\n instance.setEditable(_editable)\n },\n options: function options(instance, _options) {\n instance.setOptions(_options)\n },\n radius: function radius(instance, _radius) {\n instance.setRadius(_radius)\n },\n visible: function visible(instance, _visible) {\n instance.setVisible(_visible)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.DirectionsRenderer = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.DirectionsRenderer`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#DirectionsRenderer\n */\n/*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\nvar DirectionsRenderer = (exports.DirectionsRenderer = (function(\n _React$PureComponent\n) {\n ;(0, _inherits3.default)(DirectionsRenderer, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#DirectionsRenderer\n */\n function DirectionsRenderer(props, context) {\n ;(0, _classCallCheck3.default)(this, DirectionsRenderer)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (\n DirectionsRenderer.__proto__ ||\n (0, _getPrototypeOf2.default)(DirectionsRenderer)\n ).call(this, props, context)\n )\n\n var directionsRenderer = new google.maps.DirectionsRenderer()\n ;(0, _MapChildHelper.construct)(\n DirectionsRenderer.propTypes,\n updaterMap,\n _this.props,\n directionsRenderer\n )\n directionsRenderer.setMap(_this.context[_constants.MAP])\n _this.state = (0, _defineProperty3.default)(\n {},\n _constants.DIRECTIONS_RENDERER,\n directionsRenderer\n )\n return _this\n }\n\n ;(0, _createClass3.default)(DirectionsRenderer, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.DIRECTIONS_RENDERER],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.DIRECTIONS_RENDERER],\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var directionsRenderer = this.state[_constants.DIRECTIONS_RENDERER]\n if (directionsRenderer) {\n directionsRenderer.setMap(null)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n return false\n },\n\n /**\n * Returns the renderer's current set of directions.\n * @type DirectionsResult\n * @public\n */\n },\n {\n key: \"getDirections\",\n value: function getDirections() {\n return this.state[_constants.DIRECTIONS_RENDERER].getDirections()\n },\n\n /**\n * Returns the panel `<div>` in which the `DirectionsResult` is rendered.\n * @type Node<div>DirectionsResult\n * @public\n */\n },\n {\n key: \"getPanel\",\n value: function getPanel() {\n return this.state[_constants.DIRECTIONS_RENDERER].getPanel()\n },\n\n /**\n * Returns the current (zero-based) route index in use by this `DirectionsRenderer` object.\n * @type numberDirectionsRenderer\n * @public\n */\n },\n {\n key: \"getRouteIndex\",\n value: function getRouteIndex() {\n return this.state[_constants.DIRECTIONS_RENDERER].getRouteIndex()\n },\n },\n ])\n return DirectionsRenderer\n})(_react2.default.PureComponent))\n\nDirectionsRenderer.propTypes = {\n /**\n * @type DirectionsResult\n */\n defaultDirections: _propTypes2.default.any,\n\n /**\n * @type DirectionsRendererOptions\n */\n defaultOptions: _propTypes2.default.any,\n\n /**\n * @type Node\n */\n defaultPanel: _propTypes2.default.any,\n\n /**\n * @type number\n */\n defaultRouteIndex: _propTypes2.default.number,\n\n /**\n * @type DirectionsResult\n */\n directions: _propTypes2.default.any,\n\n /**\n * @type DirectionsRendererOptions\n */\n options: _propTypes2.default.any,\n\n /**\n * @type Node\n */\n panel: _propTypes2.default.any,\n\n /**\n * @type number\n */\n routeIndex: _propTypes2.default.number,\n\n /**\n * function\n */\n onDirectionsChanged: _propTypes2.default.func,\n}\nDirectionsRenderer.contextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nexports.default = DirectionsRenderer\n\nvar eventMap = {\n onDirectionsChanged: \"directions_changed\",\n}\n\nvar updaterMap = {\n directions: function directions(instance, _directions) {\n instance.setDirections(_directions)\n },\n options: function options(instance, _options) {\n instance.setOptions(_options)\n },\n panel: function panel(instance, _panel) {\n instance.setPanel(_panel)\n },\n routeIndex: function routeIndex(instance, _routeIndex) {\n instance.setRouteIndex(_routeIndex)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.FusionTablesLayer = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.FusionTablesLayer`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#FusionTablesLayer\n */\n/*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\nvar FusionTablesLayer = (exports.FusionTablesLayer = (function(\n _React$PureComponent\n) {\n ;(0, _inherits3.default)(FusionTablesLayer, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#FusionTablesLayer\n */\n function FusionTablesLayer(props, context) {\n ;(0, _classCallCheck3.default)(this, FusionTablesLayer)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (\n FusionTablesLayer.__proto__ ||\n (0, _getPrototypeOf2.default)(FusionTablesLayer)\n ).call(this, props, context)\n )\n\n var fusionTablesLayer = new google.maps.FusionTablesLayer()\n ;(0, _MapChildHelper.construct)(\n FusionTablesLayer.propTypes,\n updaterMap,\n _this.props,\n fusionTablesLayer\n )\n fusionTablesLayer.setMap(_this.context[_constants.MAP])\n _this.state = (0, _defineProperty3.default)(\n {},\n _constants.FUSION_TABLES_LAYER,\n fusionTablesLayer\n )\n return _this\n }\n\n ;(0, _createClass3.default)(FusionTablesLayer, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.FUSION_TABLES_LAYER],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.FUSION_TABLES_LAYER],\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var fusionTablesLayer = this.state[_constants.FUSION_TABLES_LAYER]\n if (fusionTablesLayer) {\n fusionTablesLayer.setMap(null)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n return false\n },\n },\n ])\n return FusionTablesLayer\n})(_react2.default.PureComponent))\n\nFusionTablesLayer.propTypes = {\n /**\n * @type FusionTablesLayerOptions\n */\n defaultOptions: _propTypes2.default.any,\n\n /**\n * @type FusionTablesLayerOptions\n */\n options: _propTypes2.default.any,\n\n /**\n * function\n */\n onClick: _propTypes2.default.func,\n}\nFusionTablesLayer.contextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nexports.default = FusionTablesLayer\n\nvar eventMap = {\n onClick: \"click\",\n}\n\nvar updaterMap = {\n options: function options(instance, _options) {\n instance.setOptions(_options)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.GoogleMap = exports.Map = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _toConsumableArray2 = require(\"babel-runtime/helpers/toConsumableArray\")\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _invariant = require(\"invariant\")\n\nvar _invariant2 = _interopRequireDefault(_invariant)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.Map`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Map\n */\nvar Map = (exports.Map = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(Map, _React$PureComponent)\n ;(0, _createClass3.default)(Map, [\n {\n key: \"fitBounds\",\n\n /**\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Map\n * @public\n */\n value: function fitBounds() {\n var _context$MAP\n\n return (_context$MAP = this.context[_constants.MAP]).fitBounds.apply(\n _context$MAP,\n arguments\n )\n },\n\n /**\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Map\n * @public\n */\n },\n {\n key: \"panBy\",\n value: function panBy() {\n var _context$MAP2\n\n return (_context$MAP2 = this.context[_constants.MAP]).panBy.apply(\n _context$MAP2,\n arguments\n )\n },\n\n /**\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Map\n * @public\n */\n },\n {\n key: \"panTo\",\n value: function panTo() {\n var _context$MAP3\n\n return (_context$MAP3 = this.context[_constants.MAP]).panTo.apply(\n _context$MAP3,\n arguments\n )\n },\n\n /**\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Map\n * @public\n */\n },\n {\n key: \"panToBounds\",\n value: function panToBounds() {\n var _context$MAP4\n\n return (_context$MAP4 = this.context[_constants.MAP]).panToBounds.apply(\n _context$MAP4,\n arguments\n )\n },\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Map\n */\n },\n ])\n\n function Map(props, context) {\n ;(0, _classCallCheck3.default)(this, Map)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (Map.__proto__ || (0, _getPrototypeOf2.default)(Map)).call(\n this,\n props,\n context\n )\n )\n\n ;(0, _invariant2.default)(\n !!_this.context[_constants.MAP],\n \"Did you wrap <GoogleMap> component with withGoogleMap() HOC?\"\n )\n ;(0, _MapChildHelper.construct)(\n GoogleMap.propTypes,\n updaterMap,\n _this.props,\n _this.context[_constants.MAP]\n )\n return _this\n }\n\n ;(0, _createClass3.default)(Map, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.context[_constants.MAP],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.context[_constants.MAP],\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n },\n },\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children\n\n return _react2.default.createElement(\"div\", null, children)\n },\n\n /**\n * Returns the lat/lng bounds of the current viewport. If more than one copy of the world is visible, the bounds range in longitude from -180 to 180 degrees inclusive. If the map is not yet initialized (i.e. the mapType is still null), or center and zoom have not been set then the result is `null` or `undefined`.\n * @type LatLngBoundsnullundefined\n * @public\n */\n },\n {\n key: \"getBounds\",\n value: function getBounds() {\n return this.context[_constants.MAP].getBounds()\n },\n\n /**\n * Returns the position displayed at the center of the map. Note that this `LatLng` object is _not_ wrapped. See `[LatLng](#LatLng)` for more information.\n * @type LatLngLatLngLatLng\n * @public\n */\n },\n {\n key: \"getCenter\",\n value: function getCenter() {\n return this.context[_constants.MAP].getCenter()\n },\n\n /**\n * Returns the clickability of the map icons. A map icon represents a point of interest, also known as a POI. If the returned value is true, then the icons are clickable on the map.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getClickableIcons\",\n value: function getClickableIcons() {\n return this.context[_constants.MAP].getClickableIcons()\n },\n\n /**\n *\n * @type Element\n * @public\n */\n },\n {\n key: \"getDiv\",\n value: function getDiv() {\n return this.context[_constants.MAP].getDiv()\n },\n\n /**\n * Returns the compass heading of aerial imagery. The heading value is measured in degrees (clockwise) from cardinal direction North.\n * @type number\n * @public\n */\n },\n {\n key: \"getHeading\",\n value: function getHeading() {\n return this.context[_constants.MAP].getHeading()\n },\n\n /**\n *\n * @type MapTypeId|string\n * @public\n */\n },\n {\n key: \"getMapTypeId\",\n value: function getMapTypeId() {\n return this.context[_constants.MAP].getMapTypeId()\n },\n\n /**\n * Returns the current `Projection`. If the map is not yet initialized (i.e. the mapType is still null) then the result is null. Listen to `projection_changed` and check its value to ensure it is not null.\n * @type ProjectionProjectionprojection_changed\n * @public\n */\n },\n {\n key: \"getProjection\",\n value: function getProjection() {\n return this.context[_constants.MAP].getProjection()\n },\n\n /**\n * Returns the default `StreetViewPanorama` bound to the map, which may be a default panorama embedded within the map, or the panorama set using `setStreetView()`. Changes to the map's `streetViewControl` will be reflected in the display of such a bound panorama.\n * @type StreetViewPanoramaStreetViewPanoramasetStreetView()streetViewControl\n * @public\n */\n },\n {\n key: \"getStreetView\",\n value: function getStreetView() {\n return this.context[_constants.MAP].getStreetView()\n },\n\n /**\n * Returns the current angle of incidence of the map, in degrees from the viewport plane to the map plane. The result will be `0` for imagery taken directly overhead or `45` for 45° imagery. 45° imagery is only available for `satellite` and `hybrid` map types, within some locations, and at some zoom levels. **Note:** This method does not return the value set by `setTilt`. See `setTilt` for details.\n * @type number045satellitehybridsetTiltsetTilt\n * @public\n */\n },\n {\n key: \"getTilt\",\n value: function getTilt() {\n return this.context[_constants.MAP].getTilt()\n },\n\n /**\n *\n * @type number\n * @public\n */\n },\n {\n key: \"getZoom\",\n value: function getZoom() {\n return this.context[_constants.MAP].getZoom()\n },\n },\n ])\n return Map\n})(\n _react2.default.PureComponent\n)) /*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n\nMap.displayName = \"GoogleMap\"\nMap.propTypes = {\n /**\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#MapTypeRegistry\n * @type Array<[id:string, mapType:MapType|*]>\n */\n defaultExtraMapTypes: _propTypes2.default.arrayOf(\n _propTypes2.default.arrayOf(_propTypes2.default.any)\n ),\n\n /**\n * @type LatLng|LatLngLiteral\n */\n defaultCenter: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n defaultClickableIcons: _propTypes2.default.bool,\n\n /**\n * @type number\n */\n defaultHeading: _propTypes2.default.number,\n\n /**\n * @type MapTypeId|string\n */\n defaultMapTypeId: _propTypes2.default.any,\n\n /**\n * @type MapOptions\n */\n defaultOptions: _propTypes2.default.any,\n\n /**\n * @type StreetViewPanorama\n */\n defaultStreetView: _propTypes2.default.any,\n\n /**\n * @type number\n */\n defaultTilt: _propTypes2.default.number,\n\n /**\n * @type number\n */\n defaultZoom: _propTypes2.default.number,\n\n /**\n * @type LatLng|LatLngLiteral\n */\n center: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n clickableIcons: _propTypes2.default.bool,\n\n /**\n * @type number\n */\n heading: _propTypes2.default.number,\n\n /**\n * @type MapTypeId|string\n */\n mapTypeId: _propTypes2.default.any,\n\n /**\n * @type MapOptions\n */\n options: _propTypes2.default.any,\n\n /**\n * @type StreetViewPanorama\n */\n streetView: _propTypes2.default.any,\n\n /**\n * @type number\n */\n tilt: _propTypes2.default.number,\n\n /**\n * @type number\n */\n zoom: _propTypes2.default.number,\n\n /**\n * function\n */\n onDblClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onDragEnd: _propTypes2.default.func,\n\n /**\n * function\n */\n onDragStart: _propTypes2.default.func,\n\n /**\n * function\n */\n onMapTypeIdChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseMove: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseOut: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseOver: _propTypes2.default.func,\n\n /**\n * function\n */\n onRightClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onTilesLoaded: _propTypes2.default.func,\n\n /**\n * function\n */\n onBoundsChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onCenterChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onDrag: _propTypes2.default.func,\n\n /**\n * function\n */\n onHeadingChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onIdle: _propTypes2.default.func,\n\n /**\n * function\n */\n onProjectionChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onResize: _propTypes2.default.func,\n\n /**\n * function\n */\n onTiltChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onZoomChanged: _propTypes2.default.func,\n}\nMap.contextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nvar GoogleMap = (exports.GoogleMap = Map)\n\nexports.default = Map\n\nvar eventMap = {\n onDblClick: \"dblclick\",\n onDragEnd: \"dragend\",\n onDragStart: \"dragstart\",\n onMapTypeIdChanged: \"maptypeid_changed\",\n onMouseMove: \"mousemove\",\n onMouseOut: \"mouseout\",\n onMouseOver: \"mouseover\",\n onRightClick: \"rightclick\",\n onTilesLoaded: \"tilesloaded\",\n onBoundsChanged: \"bounds_changed\",\n onCenterChanged: \"center_changed\",\n onClick: \"click\",\n onDrag: \"drag\",\n onHeadingChanged: \"heading_changed\",\n onIdle: \"idle\",\n onProjectionChanged: \"projection_changed\",\n onResize: \"resize\",\n onTiltChanged: \"tilt_changed\",\n onZoomChanged: \"zoom_changed\",\n}\n\nvar updaterMap = {\n extraMapTypes: function extraMapTypes(instance, extra) {\n extra.forEach(function(it) {\n var _instance$mapTypes\n\n return (_instance$mapTypes = instance.mapTypes).set.apply(\n _instance$mapTypes,\n (0, _toConsumableArray3.default)(it)\n )\n })\n },\n center: function center(instance, _center) {\n instance.setCenter(_center)\n },\n clickableIcons: function clickableIcons(instance, _clickableIcons) {\n instance.setClickableIcons(_clickableIcons)\n },\n heading: function heading(instance, _heading) {\n instance.setHeading(_heading)\n },\n mapTypeId: function mapTypeId(instance, _mapTypeId) {\n instance.setMapTypeId(_mapTypeId)\n },\n options: function options(instance, _options) {\n instance.setOptions(_options)\n },\n streetView: function streetView(instance, _streetView) {\n instance.setStreetView(_streetView)\n },\n tilt: function tilt(instance, _tilt) {\n instance.setTilt(_tilt)\n },\n zoom: function zoom(instance, _zoom) {\n instance.setZoom(_zoom)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.GroundOverlay = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _warning = require(\"warning\")\n\nvar _warning2 = _interopRequireDefault(_warning)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.GroundOverlay`\n *\n * @see https://developers.google.com/maps/documentation/javascript/reference#GroundOverlay\n */\nvar GroundOverlay = (exports.GroundOverlay = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(GroundOverlay, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#GroundOverlay\n */\n function GroundOverlay(props, context) {\n ;(0, _classCallCheck3.default)(this, GroundOverlay)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (\n GroundOverlay.__proto__ || (0, _getPrototypeOf2.default)(GroundOverlay)\n ).call(this, props, context)\n )\n\n ;(0, _warning2.default)(\n !props.url || !props.bounds,\n \"\\nFor GroundOveray, url and bounds are passed in to constructor and are immutable\\n after iinstantiated. This is the behavior of Google Maps JavaScript API v3 (\\n See https://developers.google.com/maps/documentation/javascript/reference#GroundOverlay)\\n Hence, use the corresponding two props provided by `react-google-maps`.\\n They're prefixed with _default_ (defaultUrl, defaultBounds).\\n\\n In some cases, you'll need the GroundOverlay component to reflect the changes\\n of url and bounds. You can leverage the React's key property to remount the\\n component. Typically, just `key={url}` would serve your need.\\n See https://github.com/tomchentw/react-google-maps/issues/655\\n\"\n )\n var groundOverlay = new google.maps.GroundOverlay(\n props.defaultUrl || props.url,\n props.defaultBounds || props.bounds\n )\n ;(0, _MapChildHelper.construct)(\n GroundOverlay.propTypes,\n updaterMap,\n _this.props,\n groundOverlay\n )\n groundOverlay.setMap(_this.context[_constants.MAP])\n _this.state = (0, _defineProperty3.default)(\n {},\n _constants.GROUND_LAYER,\n groundOverlay\n )\n return _this\n }\n\n ;(0, _createClass3.default)(GroundOverlay, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.GROUND_LAYER],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.GROUND_LAYER],\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var GroundOverlay = this.state[_constants.GROUND_LAYER]\n if (GroundOverlay) {\n GroundOverlay.setMap(null)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n return false\n },\n\n /**\n * Gets the `LatLngBounds` of this overlay.\n * @type LatLngBoundsLatLngBounds\n * @public\n */\n },\n {\n key: \"getBounds\",\n value: function getBounds() {\n return this.state[_constants.GROUND_LAYER].getBounds()\n },\n\n /**\n * Returns the opacity of this ground overlay.\n * @type number\n * @public\n */\n },\n {\n key: \"getOpacity\",\n value: function getOpacity() {\n return this.state[_constants.GROUND_LAYER].getOpacity()\n },\n\n /**\n * Gets the url of the projected image.\n * @type string\n * @public\n */\n },\n {\n key: \"getUrl\",\n value: function getUrl() {\n return this.state[_constants.GROUND_LAYER].getUrl()\n },\n },\n ])\n return GroundOverlay\n})(\n _react2.default.PureComponent\n)) /*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\n\nGroundOverlay.propTypes = {\n /**\n * @type string\n */\n defaultUrl: _propTypes2.default.string /* v10.0.0 .isRequired */ /**\n * @see https://developers.google.com/maps/documentation/javascript/reference#GroundOverlay\n */,\n\n defaultBounds: _propTypes2.default.object /* v10.0.0 .isRequired */ /**\n * @type string\n * @deprecated use `defaultUrl` instead. It will be removed in v10.0.0\n */,\n\n url: _propTypes2.default.string,\n\n /**\n * @see https://developers.google.com/maps/documentation/javascript/reference#GroundOverlay\n * @deprecated use `defaultBounds` instead. It will be removed in v10.0.0\n */\n bounds: _propTypes2.default.object,\n\n /**\n * @type number\n */\n defaultOpacity: _propTypes2.default.number,\n\n /**\n * @type number\n */\n opacity: _propTypes2.default.number,\n\n /**\n * function\n */\n onDblClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onClick: _propTypes2.default.func,\n}\nGroundOverlay.contextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nexports.default = GroundOverlay\n\nvar eventMap = {\n onDblClick: \"dblclick\",\n onClick: \"click\",\n}\n\nvar updaterMap = {\n opacity: function opacity(instance, _opacity) {\n instance.setOpacity(_opacity)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.InfoWindow = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _InfoWindow$contextTy /*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\n\nvar _invariant = require(\"invariant\")\n\nvar _invariant2 = _interopRequireDefault(_invariant)\n\nvar _canUseDom = require(\"can-use-dom\")\n\nvar _canUseDom2 = _interopRequireDefault(_canUseDom)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _reactDom = require(\"react-dom\")\n\nvar _reactDom2 = _interopRequireDefault(_reactDom)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.InfoWindow`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#InfoWindow\n */\nvar InfoWindow = (exports.InfoWindow = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(InfoWindow, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#InfoWindow\n */\n function InfoWindow(props, context) {\n ;(0, _classCallCheck3.default)(this, InfoWindow)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (InfoWindow.__proto__ || (0, _getPrototypeOf2.default)(InfoWindow)).call(\n this,\n props,\n context\n )\n )\n\n var infoWindow = new google.maps.InfoWindow()\n ;(0, _MapChildHelper.construct)(\n InfoWindow.propTypes,\n updaterMap,\n _this.props,\n infoWindow\n )\n infoWindow.setMap(_this.context[_constants.MAP])\n _this.state = (0, _defineProperty3.default)(\n {},\n _constants.INFO_WINDOW,\n infoWindow\n )\n return _this\n }\n\n ;(0, _createClass3.default)(InfoWindow, [\n {\n key: \"componentWillMount\",\n value: function componentWillMount() {\n if (!_canUseDom2.default || this.containerElement) {\n return\n }\n if (_react2.default.version.match(/^16/)) {\n this.containerElement = document.createElement(\"div\")\n }\n },\n },\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.INFO_WINDOW],\n eventMap\n )\n if (_react2.default.version.match(/^16/)) {\n this.state[_constants.INFO_WINDOW].setContent(this.containerElement)\n open(\n this.state[_constants.INFO_WINDOW],\n this.context[_constants.ANCHOR]\n )\n return\n }\n var content = document.createElement(\"div\")\n _reactDom2.default.unstable_renderSubtreeIntoContainer(\n this,\n _react2.default.Children.only(this.props.children),\n content\n )\n this.state[_constants.INFO_WINDOW].setContent(content)\n open(\n this.state[_constants.INFO_WINDOW],\n this.context[_constants.ANCHOR]\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.INFO_WINDOW],\n eventMap,\n updaterMap,\n prevProps\n )\n if (_react2.default.version.match(/^16/)) {\n return\n }\n if (this.props.children !== prevProps.children) {\n _reactDom2.default.unstable_renderSubtreeIntoContainer(\n this,\n _react2.default.Children.only(this.props.children),\n this.state[_constants.INFO_WINDOW].getContent()\n )\n }\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var infoWindow = this.state[_constants.INFO_WINDOW]\n if (infoWindow) {\n if (\n !_react2.default.version.match(/^16/) &&\n infoWindow.getContent()\n ) {\n _reactDom2.default.unmountComponentAtNode(infoWindow.getContent())\n }\n infoWindow.setMap(null)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n if (_react2.default.version.match(/^16/)) {\n return _reactDom2.default.createPortal(\n _react2.default.Children.only(this.props.children),\n this.containerElement\n )\n }\n return false\n },\n\n /**\n *\n * @type LatLng\n * @public\n */\n },\n {\n key: \"getPosition\",\n value: function getPosition() {\n return this.state[_constants.INFO_WINDOW].getPosition()\n },\n\n /**\n *\n * @type number\n * @public\n */\n },\n {\n key: \"getZIndex\",\n value: function getZIndex() {\n return this.state[_constants.INFO_WINDOW].getZIndex()\n },\n },\n ])\n return InfoWindow\n})(_react2.default.PureComponent))\n\nInfoWindow.propTypes = {\n /**\n * @type InfoWindowOptions\n */\n defaultOptions: _propTypes2.default.any,\n\n /**\n * @type LatLng|LatLngLiteral\n */\n defaultPosition: _propTypes2.default.any,\n\n /**\n * @type number\n */\n defaultZIndex: _propTypes2.default.number,\n\n /**\n * @type InfoWindowOptions\n */\n options: _propTypes2.default.any,\n\n /**\n * @type LatLng|LatLngLiteral\n */\n position: _propTypes2.default.any,\n\n /**\n * @type number\n */\n zIndex: _propTypes2.default.number,\n\n /**\n * function\n */\n onCloseClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onDomReady: _propTypes2.default.func,\n\n /**\n * function\n */\n onContentChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onPositionChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onZindexChanged: _propTypes2.default.func,\n}\nInfoWindow.contextTypes = ((_InfoWindow$contextTy = {}),\n(0, _defineProperty3.default)(\n _InfoWindow$contextTy,\n _constants.MAP,\n _propTypes2.default.object\n),\n(0, _defineProperty3.default)(\n _InfoWindow$contextTy,\n _constants.ANCHOR,\n _propTypes2.default.object\n),\n_InfoWindow$contextTy)\nexports.default = InfoWindow\n\nvar open = function open(infoWindow, anchor) {\n if (anchor) {\n infoWindow.open(infoWindow.getMap(), anchor)\n } else if (infoWindow.getPosition()) {\n infoWindow.open(infoWindow.getMap())\n } else {\n ;(0, _invariant2.default)(\n false,\n \"You must provide either an anchor (typically render it inside a <Marker>) or a position props for <InfoWindow>.\"\n )\n }\n}\n\nvar eventMap = {\n onCloseClick: \"closeclick\",\n onDomReady: \"domready\",\n onContentChanged: \"content_changed\",\n onPositionChanged: \"position_changed\",\n onZindexChanged: \"zindex_changed\",\n}\n\nvar updaterMap = {\n options: function options(instance, _options) {\n instance.setOptions(_options)\n },\n position: function position(instance, _position) {\n instance.setPosition(_position)\n },\n zIndex: function zIndex(instance, _zIndex) {\n instance.setZIndex(_zIndex)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.KmlLayer = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.KmlLayer`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#KmlLayer\n */\n/*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\nvar KmlLayer = (exports.KmlLayer = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(KmlLayer, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#KmlLayer\n */\n function KmlLayer(props, context) {\n ;(0, _classCallCheck3.default)(this, KmlLayer)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (KmlLayer.__proto__ || (0, _getPrototypeOf2.default)(KmlLayer)).call(\n this,\n props,\n context\n )\n )\n\n var kmlLayer = new google.maps.KmlLayer()\n ;(0, _MapChildHelper.construct)(\n KmlLayer.propTypes,\n updaterMap,\n _this.props,\n kmlLayer\n )\n kmlLayer.setMap(_this.context[_constants.MAP])\n _this.state = (0, _defineProperty3.default)(\n {},\n _constants.KML_LAYER,\n kmlLayer\n )\n return _this\n }\n\n ;(0, _createClass3.default)(KmlLayer, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.KML_LAYER],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.KML_LAYER],\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var kmlLayer = this.state[_constants.KML_LAYER]\n if (kmlLayer) {\n kmlLayer.setMap(null)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n return false\n },\n\n /**\n * Get the default viewport for the layer being displayed.\n * @type LatLngBounds\n * @public\n */\n },\n {\n key: \"getDefaultViewport\",\n value: function getDefaultViewport() {\n return this.state[_constants.KML_LAYER].getDefaultViewport()\n },\n\n /**\n * Get the metadata associated with this layer, as specified in the layer markup.\n * @type KmlLayerMetadata\n * @public\n */\n },\n {\n key: \"getMetadata\",\n value: function getMetadata() {\n return this.state[_constants.KML_LAYER].getMetadata()\n },\n\n /**\n * Get the status of the layer, set once the requested document has loaded.\n * @type KmlLayerStatus\n * @public\n */\n },\n {\n key: \"getStatus\",\n value: function getStatus() {\n return this.state[_constants.KML_LAYER].getStatus()\n },\n\n /**\n * Gets the URL of the KML file being displayed.\n * @type string\n * @public\n */\n },\n {\n key: \"getUrl\",\n value: function getUrl() {\n return this.state[_constants.KML_LAYER].getUrl()\n },\n\n /**\n * Gets the z-index of the KML Layer.\n * @type number\n * @public\n */\n },\n {\n key: \"getZIndex\",\n value: function getZIndex() {\n return this.state[_constants.KML_LAYER].getZIndex()\n },\n },\n ])\n return KmlLayer\n})(_react2.default.PureComponent))\n\nKmlLayer.propTypes = {\n /**\n * @type KmlLayerOptions\n */\n defaultOptions: _propTypes2.default.any,\n\n /**\n * @type string\n */\n defaultUrl: _propTypes2.default.string,\n\n /**\n * @type number\n */\n defaultZIndex: _propTypes2.default.number,\n\n /**\n * @type KmlLayerOptions\n */\n options: _propTypes2.default.any,\n\n /**\n * @type string\n */\n url: _propTypes2.default.string,\n\n /**\n * @type number\n */\n zIndex: _propTypes2.default.number,\n\n /**\n * function\n */\n onDefaultViewportChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onStatusChanged: _propTypes2.default.func,\n}\nKmlLayer.contextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nexports.default = KmlLayer\n\nvar eventMap = {\n onDefaultViewportChanged: \"defaultviewport_changed\",\n onClick: \"click\",\n onStatusChanged: \"status_changed\",\n}\n\nvar updaterMap = {\n options: function options(instance, _options) {\n instance.setOptions(_options)\n },\n url: function url(instance, _url) {\n instance.setUrl(_url)\n },\n zIndex: function zIndex(instance, _zIndex) {\n instance.setZIndex(_zIndex)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.Marker = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _Marker$contextTypes /*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.Marker`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Marker\n */\nvar Marker = (exports.Marker = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(Marker, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Marker\n */\n function Marker(props, context) {\n ;(0, _classCallCheck3.default)(this, Marker)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (Marker.__proto__ || (0, _getPrototypeOf2.default)(Marker)).call(\n this,\n props,\n context\n )\n )\n\n var marker = new google.maps.Marker()\n ;(0, _MapChildHelper.construct)(\n Marker.propTypes,\n updaterMap,\n _this.props,\n marker\n )\n var markerClusterer = _this.context[_constants.MARKER_CLUSTERER]\n if (markerClusterer) {\n markerClusterer.addMarker(marker, !!_this.props.noRedraw)\n } else {\n marker.setMap(_this.context[_constants.MAP])\n }\n _this.state = (0, _defineProperty3.default)({}, _constants.MARKER, marker)\n return _this\n }\n\n ;(0, _createClass3.default)(Marker, [\n {\n key: \"getChildContext\",\n value: function getChildContext() {\n return (0, _defineProperty3.default)(\n {},\n _constants.ANCHOR,\n this.context[_constants.ANCHOR] || this.state[_constants.MARKER]\n )\n },\n },\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.MARKER],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.MARKER],\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var marker = this.state[_constants.MARKER]\n if (marker) {\n var markerClusterer = this.context[_constants.MARKER_CLUSTERER]\n if (markerClusterer) {\n markerClusterer.removeMarker(marker, !!this.props.noRedraw)\n }\n marker.setMap(null)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children\n\n return _react2.default.createElement(\"div\", null, children)\n },\n\n /**\n *\n * @type Animation\n * @public\n */\n },\n {\n key: \"getAnimation\",\n value: function getAnimation() {\n return this.state[_constants.MARKER].getAnimation()\n },\n\n /**\n *\n * @type boolean\n * @public\n */\n },\n {\n key: \"getClickable\",\n value: function getClickable() {\n return this.state[_constants.MARKER].getClickable()\n },\n\n /**\n *\n * @type string\n * @public\n */\n },\n {\n key: \"getCursor\",\n value: function getCursor() {\n return this.state[_constants.MARKER].getCursor()\n },\n\n /**\n *\n * @type boolean\n * @public\n */\n },\n {\n key: \"getDraggable\",\n value: function getDraggable() {\n return this.state[_constants.MARKER].getDraggable()\n },\n\n /**\n *\n * @type string|Icon|Symbol\n * @public\n */\n },\n {\n key: \"getIcon\",\n value: function getIcon() {\n return this.state[_constants.MARKER].getIcon()\n },\n\n /**\n *\n * @type MarkerLabel\n * @public\n */\n },\n {\n key: \"getLabel\",\n value: function getLabel() {\n return this.state[_constants.MARKER].getLabel()\n },\n\n /**\n *\n * @type number\n * @public\n */\n },\n {\n key: \"getOpacity\",\n value: function getOpacity() {\n return this.state[_constants.MARKER].getOpacity()\n },\n\n /**\n *\n * @type MarkerPlace\n * @public\n */\n },\n {\n key: \"getPlace\",\n value: function getPlace() {\n return this.state[_constants.MARKER].getPlace()\n },\n\n /**\n *\n * @type LatLng\n * @public\n */\n },\n {\n key: \"getPosition\",\n value: function getPosition() {\n return this.state[_constants.MARKER].getPosition()\n },\n\n /**\n *\n * @type MarkerShape\n * @public\n */\n },\n {\n key: \"getShape\",\n value: function getShape() {\n return this.state[_constants.MARKER].getShape()\n },\n\n /**\n *\n * @type string\n * @public\n */\n },\n {\n key: \"getTitle\",\n value: function getTitle() {\n return this.state[_constants.MARKER].getTitle()\n },\n\n /**\n *\n * @type boolean\n * @public\n */\n },\n {\n key: \"getVisible\",\n value: function getVisible() {\n return this.state[_constants.MARKER].getVisible()\n },\n\n /**\n *\n * @type number\n * @public\n */\n },\n {\n key: \"getZIndex\",\n value: function getZIndex() {\n return this.state[_constants.MARKER].getZIndex()\n },\n },\n ])\n return Marker\n})(_react2.default.PureComponent))\n\nMarker.propTypes = {\n /**\n * For the 2nd argument of `MarkerCluster#addMarker`\n * @see https://github.com/mikesaidani/marker-clusterer-plus\n */\n noRedraw: _propTypes2.default.bool,\n\n /**\n * @type Animation\n */\n defaultAnimation: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n defaultClickable: _propTypes2.default.bool,\n\n /**\n * @type string\n */\n defaultCursor: _propTypes2.default.string,\n\n /**\n * @type boolean\n */\n defaultDraggable: _propTypes2.default.bool,\n\n /**\n * @type string|Icon|Symbol\n */\n defaultIcon: _propTypes2.default.any,\n\n /**\n * @type string|MarkerLabel\n */\n defaultLabel: _propTypes2.default.any,\n\n /**\n * @type number\n */\n defaultOpacity: _propTypes2.default.number,\n\n /**\n * @type MarkerOptions\n */\n defaultOptions: _propTypes2.default.any,\n\n /**\n * @type MarkerPlace\n */\n defaultPlace: _propTypes2.default.any,\n\n /**\n * @type LatLng|LatLngLiteral\n */\n defaultPosition: _propTypes2.default.any,\n\n /**\n * @type MarkerShape\n */\n defaultShape: _propTypes2.default.any,\n\n /**\n * @type string\n */\n defaultTitle: _propTypes2.default.string,\n\n /**\n * @type boolean\n */\n defaultVisible: _propTypes2.default.bool,\n\n /**\n * @type number\n */\n defaultZIndex: _propTypes2.default.number,\n\n /**\n * @type Animation\n */\n animation: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n clickable: _propTypes2.default.bool,\n\n /**\n * @type string\n */\n cursor: _propTypes2.default.string,\n\n /**\n * @type boolean\n */\n draggable: _propTypes2.default.bool,\n\n /**\n * @type string|Icon|Symbol\n */\n icon: _propTypes2.default.any,\n\n /**\n * @type string|MarkerLabel\n */\n label: _propTypes2.default.any,\n\n /**\n * @type number\n */\n opacity: _propTypes2.default.number,\n\n /**\n * @type MarkerOptions\n */\n options: _propTypes2.default.any,\n\n /**\n * @type MarkerPlace\n */\n place: _propTypes2.default.any,\n\n /**\n * @type LatLng|LatLngLiteral\n */\n position: _propTypes2.default.any,\n\n /**\n * @type MarkerShape\n */\n shape: _propTypes2.default.any,\n\n /**\n * @type string\n */\n title: _propTypes2.default.string,\n\n /**\n * @type boolean\n */\n visible: _propTypes2.default.bool,\n\n /**\n * @type number\n */\n zIndex: _propTypes2.default.number,\n\n /**\n * function\n */\n onDblClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onDragEnd: _propTypes2.default.func,\n\n /**\n * function\n */\n onDragStart: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseDown: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseOut: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseOver: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseUp: _propTypes2.default.func,\n\n /**\n * function\n */\n onRightClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onAnimationChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onClickableChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onCursorChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onDrag: _propTypes2.default.func,\n\n /**\n * function\n */\n onDraggableChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onFlatChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onIconChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onPositionChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onShapeChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onTitleChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onVisibleChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onZindexChanged: _propTypes2.default.func,\n}\nMarker.contextTypes = ((_Marker$contextTypes = {}),\n(0, _defineProperty3.default)(\n _Marker$contextTypes,\n _constants.MAP,\n _propTypes2.default.object\n),\n(0, _defineProperty3.default)(\n _Marker$contextTypes,\n _constants.MARKER_CLUSTERER,\n _propTypes2.default.object\n),\n_Marker$contextTypes)\nMarker.childContextTypes = (0, _defineProperty3.default)(\n {},\n _constants.ANCHOR,\n _propTypes2.default.object\n)\nexports.default = Marker\n\nvar eventMap = {\n onDblClick: \"dblclick\",\n onDragEnd: \"dragend\",\n onDragStart: \"dragstart\",\n onMouseDown: \"mousedown\",\n onMouseOut: \"mouseout\",\n onMouseOver: \"mouseover\",\n onMouseUp: \"mouseup\",\n onRightClick: \"rightclick\",\n onAnimationChanged: \"animation_changed\",\n onClick: \"click\",\n onClickableChanged: \"clickable_changed\",\n onCursorChanged: \"cursor_changed\",\n onDrag: \"drag\",\n onDraggableChanged: \"draggable_changed\",\n onFlatChanged: \"flat_changed\",\n onIconChanged: \"icon_changed\",\n onPositionChanged: \"position_changed\",\n onShapeChanged: \"shape_changed\",\n onTitleChanged: \"title_changed\",\n onVisibleChanged: \"visible_changed\",\n onZindexChanged: \"zindex_changed\",\n}\n\nvar updaterMap = {\n animation: function animation(instance, _animation) {\n instance.setAnimation(_animation)\n },\n clickable: function clickable(instance, _clickable) {\n instance.setClickable(_clickable)\n },\n cursor: function cursor(instance, _cursor) {\n instance.setCursor(_cursor)\n },\n draggable: function draggable(instance, _draggable) {\n instance.setDraggable(_draggable)\n },\n icon: function icon(instance, _icon) {\n instance.setIcon(_icon)\n },\n label: function label(instance, _label) {\n instance.setLabel(_label)\n },\n opacity: function opacity(instance, _opacity) {\n instance.setOpacity(_opacity)\n },\n options: function options(instance, _options) {\n instance.setOptions(_options)\n },\n place: function place(instance, _place) {\n instance.setPlace(_place)\n },\n position: function position(instance, _position) {\n instance.setPosition(_position)\n },\n shape: function shape(instance, _shape) {\n instance.setShape(_shape)\n },\n title: function title(instance, _title) {\n instance.setTitle(_title)\n },\n visible: function visible(instance, _visible) {\n instance.setVisible(_visible)\n },\n zIndex: function zIndex(instance, _zIndex) {\n instance.setZIndex(_zIndex)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.OverlayView = undefined\n\nvar _extends2 = require(\"babel-runtime/helpers/extends\")\n\nvar _extends3 = _interopRequireDefault(_extends2)\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _delay2 = require(\"lodash/delay\")\n\nvar _delay3 = _interopRequireDefault(_delay2)\n\nvar _assign2 = require(\"lodash/assign\")\n\nvar _assign3 = _interopRequireDefault(_assign2)\n\nvar _bind2 = require(\"lodash/bind\")\n\nvar _bind3 = _interopRequireDefault(_bind2)\n\nvar _OverlayView$contextT /*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\n\nvar _invariant = require(\"invariant\")\n\nvar _invariant2 = _interopRequireDefault(_invariant)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _reactDom = require(\"react-dom\")\n\nvar _reactDom2 = _interopRequireDefault(_reactDom)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _OverlayViewHelper = require(\"../utils/OverlayViewHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.OverlayView`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#OverlayView\n */\nvar OverlayView = (exports.OverlayView = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(OverlayView, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#OverlayView\n */\n function OverlayView(props, context) {\n ;(0, _classCallCheck3.default)(this, OverlayView)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (\n OverlayView.__proto__ || (0, _getPrototypeOf2.default)(OverlayView)\n ).call(this, props, context)\n )\n\n var overlayView = new google.maps.OverlayView()\n // You must implement three methods: onAdd(), draw(), and onRemove().\n overlayView.onAdd = (0, _bind3.default)(_this.onAdd, _this)\n overlayView.draw = (0, _bind3.default)(_this.draw, _this)\n overlayView.onRemove = (0, _bind3.default)(_this.onRemove, _this)\n _this.onPositionElement = (0, _bind3.default)(\n _this.onPositionElement,\n _this\n )\n // You must call setMap() with a valid Map object to trigger the call to\n // the onAdd() method and setMap(null) in order to trigger the onRemove() method.\n overlayView.setMap(_this.context[_constants.MAP])\n _this.state = (0, _defineProperty3.default)(\n {},\n _constants.OVERLAY_VIEW,\n overlayView\n )\n return _this\n }\n\n ;(0, _createClass3.default)(OverlayView, [\n {\n key: \"onAdd\",\n value: function onAdd() {\n this.containerElement = document.createElement(\"div\")\n this.containerElement.style.position = \"absolute\"\n },\n },\n {\n key: \"draw\",\n value: function draw() {\n var mapPaneName = this.props.mapPaneName\n\n ;(0, _invariant2.default)(\n !!mapPaneName,\n \"OverlayView requires either props.mapPaneName or props.defaultMapPaneName but got %s\",\n mapPaneName\n )\n // https://developers.google.com/maps/documentation/javascript/3.exp/reference#MapPanes\n var mapPanes = this.state[_constants.OVERLAY_VIEW].getPanes()\n mapPanes[mapPaneName].appendChild(this.containerElement)\n\n _reactDom2.default.unstable_renderSubtreeIntoContainer(\n this,\n _react2.default.Children.only(this.props.children),\n this.containerElement,\n this.onPositionElement\n )\n },\n },\n {\n key: \"onPositionElement\",\n value: function onPositionElement() {\n // https://developers.google.com/maps/documentation/javascript/3.exp/reference#MapCanvasProjection\n var mapCanvasProjection = this.state[\n _constants.OVERLAY_VIEW\n ].getProjection()\n\n var offset = (0, _extends3.default)(\n {\n x: 0,\n y: 0,\n },\n (0, _OverlayViewHelper.getOffsetOverride)(\n this.containerElement,\n this.props\n )\n )\n var layoutStyles = (0, _OverlayViewHelper.getLayoutStyles)(\n mapCanvasProjection,\n offset,\n this.props\n )\n ;(0, _assign3.default)(this.containerElement.style, layoutStyles)\n },\n },\n {\n key: \"onRemove\",\n value: function onRemove() {\n this.containerElement.parentNode.removeChild(this.containerElement)\n _reactDom2.default.unmountComponentAtNode(this.containerElement)\n this.containerElement = null\n },\n },\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.OVERLAY_VIEW],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.OVERLAY_VIEW],\n eventMap,\n updaterMap,\n prevProps\n )\n ;(0, _delay3.default)(this.state[_constants.OVERLAY_VIEW].draw)\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var overlayView = this.state[_constants.OVERLAY_VIEW]\n if (overlayView) {\n overlayView.setMap(null)\n // You must implement three methods: onAdd(), draw(), and onRemove().\n overlayView.onAdd = null\n overlayView.draw = null\n overlayView.onRemove = null\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n return false\n },\n\n /**\n * Returns the panes in which this OverlayView can be rendered. The panes are not initialized until `onAdd` is called by the API.\n * @type MapPanesonAdd\n * @public\n */\n },\n {\n key: \"getPanes\",\n value: function getPanes() {\n return this.state[_constants.OVERLAY_VIEW].getPanes()\n },\n\n /**\n * Returns the `MapCanvasProjection` object associated with this `OverlayView`. The projection is not initialized until `onAdd` is called by the API.\n * @type MapCanvasProjectionMapCanvasProjectionOverlayViewonAdd\n * @public\n */\n },\n {\n key: \"getProjection\",\n value: function getProjection() {\n return this.state[_constants.OVERLAY_VIEW].getProjection()\n },\n },\n ])\n return OverlayView\n})(_react2.default.PureComponent))\n\nOverlayView.FLOAT_PANE = \"floatPane\"\nOverlayView.MAP_PANE = \"mapPane\"\nOverlayView.MARKER_LAYER = \"markerLayer\"\nOverlayView.OVERLAY_LAYER = \"overlayLayer\"\nOverlayView.OVERLAY_MOUSE_TARGET = \"overlayMouseTarget\"\nOverlayView.propTypes = {\n /**\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#OverlayView\n */\n mapPaneName: _propTypes2.default.string,\n\n /**\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#OverlayView\n */\n position: _propTypes2.default.object,\n\n /**\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#OverlayView\n */\n bounds: _propTypes2.default.object,\n\n /**\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#OverlayView\n */\n children: _propTypes2.default.node.isRequired,\n\n /**\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#OverlayView\n */\n getPixelPositionOffset: _propTypes2.default.func,\n}\nOverlayView.contextTypes = ((_OverlayView$contextT = {}),\n(0, _defineProperty3.default)(\n _OverlayView$contextT,\n _constants.MAP,\n _propTypes2.default.object\n),\n(0, _defineProperty3.default)(\n _OverlayView$contextT,\n _constants.ANCHOR,\n _propTypes2.default.object\n),\n_OverlayView$contextT)\nexports.default = OverlayView\n\nvar eventMap = {}\n\nvar updaterMap = {}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.Polygon = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.Polygon`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Polygon\n */\n/*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\nvar Polygon = (exports.Polygon = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(Polygon, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Polygon\n */\n function Polygon(props, context) {\n ;(0, _classCallCheck3.default)(this, Polygon)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (Polygon.__proto__ || (0, _getPrototypeOf2.default)(Polygon)).call(\n this,\n props,\n context\n )\n )\n\n var polygon = new google.maps.Polygon()\n ;(0, _MapChildHelper.construct)(\n Polygon.propTypes,\n updaterMap,\n _this.props,\n polygon\n )\n polygon.setMap(_this.context[_constants.MAP])\n _this.state = (0, _defineProperty3.default)({}, _constants.POLYGON, polygon)\n return _this\n }\n\n ;(0, _createClass3.default)(Polygon, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.POLYGON],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.POLYGON],\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var polygon = this.state[_constants.POLYGON]\n if (polygon) {\n polygon.setMap(null)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n return false\n },\n\n /**\n * Returns whether this shape can be dragged by the user.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getDraggable\",\n value: function getDraggable() {\n return this.state[_constants.POLYGON].getDraggable()\n },\n\n /**\n * Returns whether this shape can be edited by the user.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getEditable\",\n value: function getEditable() {\n return this.state[_constants.POLYGON].getEditable()\n },\n\n /**\n * Retrieves the first path.\n * @type MVCArray<LatLng>\n * @public\n */\n },\n {\n key: \"getPath\",\n value: function getPath() {\n return this.state[_constants.POLYGON].getPath()\n },\n\n /**\n * Retrieves the paths for this polygon.\n * @type MVCArray<MVCArray<LatLng>>\n * @public\n */\n },\n {\n key: \"getPaths\",\n value: function getPaths() {\n return this.state[_constants.POLYGON].getPaths()\n },\n\n /**\n * Returns whether this poly is visible on the map.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getVisible\",\n value: function getVisible() {\n return this.state[_constants.POLYGON].getVisible()\n },\n },\n ])\n return Polygon\n})(_react2.default.PureComponent))\n\nPolygon.propTypes = {\n /**\n * @type boolean\n */\n defaultDraggable: _propTypes2.default.bool,\n\n /**\n * @type boolean\n */\n defaultEditable: _propTypes2.default.bool,\n\n /**\n * @type PolygonOptions\n */\n defaultOptions: _propTypes2.default.any,\n\n /**\n * @type MVCArray<LatLng>|Array<LatLng|LatLngLiteral>\n */\n defaultPath: _propTypes2.default.any,\n\n /**\n * @type MVCArray<MVCArray<LatLng>>|MVCArray<LatLng>|Array<Array<LatLng|LatLngLiteral>>|Array<LatLng|LatLngLiteral>\n */\n defaultPaths: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n defaultVisible: _propTypes2.default.bool,\n\n /**\n * @type boolean\n */\n draggable: _propTypes2.default.bool,\n\n /**\n * @type boolean\n */\n editable: _propTypes2.default.bool,\n\n /**\n * @type PolygonOptions\n */\n options: _propTypes2.default.any,\n\n /**\n * @type MVCArray<LatLng>|Array<LatLng|LatLngLiteral>\n */\n path: _propTypes2.default.any,\n\n /**\n * @type MVCArray<MVCArray<LatLng>>|MVCArray<LatLng>|Array<Array<LatLng|LatLngLiteral>>|Array<LatLng|LatLngLiteral>\n */\n paths: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n visible: _propTypes2.default.bool,\n\n /**\n * function\n */\n onDblClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onDragEnd: _propTypes2.default.func,\n\n /**\n * function\n */\n onDragStart: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseDown: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseMove: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseOut: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseOver: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseUp: _propTypes2.default.func,\n\n /**\n * function\n */\n onRightClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onDrag: _propTypes2.default.func,\n}\nPolygon.contextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nexports.default = Polygon\n\nvar eventMap = {\n onDblClick: \"dblclick\",\n onDragEnd: \"dragend\",\n onDragStart: \"dragstart\",\n onMouseDown: \"mousedown\",\n onMouseMove: \"mousemove\",\n onMouseOut: \"mouseout\",\n onMouseOver: \"mouseover\",\n onMouseUp: \"mouseup\",\n onRightClick: \"rightclick\",\n onClick: \"click\",\n onDrag: \"drag\",\n}\n\nvar updaterMap = {\n draggable: function draggable(instance, _draggable) {\n instance.setDraggable(_draggable)\n },\n editable: function editable(instance, _editable) {\n instance.setEditable(_editable)\n },\n options: function options(instance, _options) {\n instance.setOptions(_options)\n },\n path: function path(instance, _path) {\n instance.setPath(_path)\n },\n paths: function paths(instance, _paths) {\n instance.setPaths(_paths)\n },\n visible: function visible(instance, _visible) {\n instance.setVisible(_visible)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.Polyline = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.Polyline`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Polyline\n */\n/*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\nvar Polyline = (exports.Polyline = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(Polyline, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Polyline\n */\n function Polyline(props, context) {\n ;(0, _classCallCheck3.default)(this, Polyline)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (Polyline.__proto__ || (0, _getPrototypeOf2.default)(Polyline)).call(\n this,\n props,\n context\n )\n )\n\n var polyline = new google.maps.Polyline()\n ;(0, _MapChildHelper.construct)(\n Polyline.propTypes,\n updaterMap,\n _this.props,\n polyline\n )\n polyline.setMap(_this.context[_constants.MAP])\n _this.state = (0, _defineProperty3.default)(\n {},\n _constants.POLYLINE,\n polyline\n )\n return _this\n }\n\n ;(0, _createClass3.default)(Polyline, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.POLYLINE],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.POLYLINE],\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var polyline = this.state[_constants.POLYLINE]\n if (polyline) {\n polyline.setMap(null)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n return false\n },\n\n /**\n * Returns whether this shape can be dragged by the user.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getDraggable\",\n value: function getDraggable() {\n return this.state[_constants.POLYLINE].getDraggable()\n },\n\n /**\n * Returns whether this shape can be edited by the user.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getEditable\",\n value: function getEditable() {\n return this.state[_constants.POLYLINE].getEditable()\n },\n\n /**\n * Retrieves the path.\n * @type MVCArray<LatLng>\n * @public\n */\n },\n {\n key: \"getPath\",\n value: function getPath() {\n return this.state[_constants.POLYLINE].getPath()\n },\n\n /**\n * Returns whether this poly is visible on the map.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getVisible\",\n value: function getVisible() {\n return this.state[_constants.POLYLINE].getVisible()\n },\n },\n ])\n return Polyline\n})(_react2.default.PureComponent))\n\nPolyline.propTypes = {\n /**\n * @type boolean\n */\n defaultDraggable: _propTypes2.default.bool,\n\n /**\n * @type boolean\n */\n defaultEditable: _propTypes2.default.bool,\n\n /**\n * @type PolylineOptions\n */\n defaultOptions: _propTypes2.default.any,\n\n /**\n * @type MVCArray<LatLng>|Array<LatLng|LatLngLiteral>\n */\n defaultPath: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n defaultVisible: _propTypes2.default.bool,\n\n /**\n * @type boolean\n */\n draggable: _propTypes2.default.bool,\n\n /**\n * @type boolean\n */\n editable: _propTypes2.default.bool,\n\n /**\n * @type PolylineOptions\n */\n options: _propTypes2.default.any,\n\n /**\n * @type MVCArray<LatLng>|Array<LatLng|LatLngLiteral>\n */\n path: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n visible: _propTypes2.default.bool,\n\n /**\n * function\n */\n onDblClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onDragEnd: _propTypes2.default.func,\n\n /**\n * function\n */\n onDragStart: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseDown: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseMove: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseOut: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseOver: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseUp: _propTypes2.default.func,\n\n /**\n * function\n */\n onRightClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onDrag: _propTypes2.default.func,\n}\nPolyline.contextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nexports.default = Polyline\n\nvar eventMap = {\n onDblClick: \"dblclick\",\n onDragEnd: \"dragend\",\n onDragStart: \"dragstart\",\n onMouseDown: \"mousedown\",\n onMouseMove: \"mousemove\",\n onMouseOut: \"mouseout\",\n onMouseOver: \"mouseover\",\n onMouseUp: \"mouseup\",\n onRightClick: \"rightclick\",\n onClick: \"click\",\n onDrag: \"drag\",\n}\n\nvar updaterMap = {\n draggable: function draggable(instance, _draggable) {\n instance.setDraggable(_draggable)\n },\n editable: function editable(instance, _editable) {\n instance.setEditable(_editable)\n },\n options: function options(instance, _options) {\n instance.setOptions(_options)\n },\n path: function path(instance, _path) {\n instance.setPath(_path)\n },\n visible: function visible(instance, _visible) {\n instance.setVisible(_visible)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.Rectangle = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.Rectangle`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Rectangle\n */\n/*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\nvar Rectangle = (exports.Rectangle = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(Rectangle, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#Rectangle\n */\n function Rectangle(props, context) {\n ;(0, _classCallCheck3.default)(this, Rectangle)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (Rectangle.__proto__ || (0, _getPrototypeOf2.default)(Rectangle)).call(\n this,\n props,\n context\n )\n )\n\n var rectangle = new google.maps.Rectangle()\n ;(0, _MapChildHelper.construct)(\n Rectangle.propTypes,\n updaterMap,\n _this.props,\n rectangle\n )\n rectangle.setMap(_this.context[_constants.MAP])\n _this.state = (0, _defineProperty3.default)(\n {},\n _constants.RECTANGLE,\n rectangle\n )\n return _this\n }\n\n ;(0, _createClass3.default)(Rectangle, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.RECTANGLE],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.RECTANGLE],\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var rectangle = this.state[_constants.RECTANGLE]\n if (rectangle) {\n rectangle.setMap(null)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n return false\n },\n\n /**\n * Returns the bounds of this rectangle.\n * @type LatLngBounds\n * @public\n */\n },\n {\n key: \"getBounds\",\n value: function getBounds() {\n return this.state[_constants.RECTANGLE].getBounds()\n },\n\n /**\n * Returns whether this rectangle can be dragged by the user.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getDraggable\",\n value: function getDraggable() {\n return this.state[_constants.RECTANGLE].getDraggable()\n },\n\n /**\n * Returns whether this rectangle can be edited by the user.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getEditable\",\n value: function getEditable() {\n return this.state[_constants.RECTANGLE].getEditable()\n },\n\n /**\n * Returns whether this rectangle is visible on the map.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getVisible\",\n value: function getVisible() {\n return this.state[_constants.RECTANGLE].getVisible()\n },\n },\n ])\n return Rectangle\n})(_react2.default.PureComponent))\n\nRectangle.propTypes = {\n /**\n * @type LatLngBounds|LatLngBoundsLiteral\n */\n defaultBounds: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n defaultDraggable: _propTypes2.default.bool,\n\n /**\n * @type boolean\n */\n defaultEditable: _propTypes2.default.bool,\n\n /**\n * @type RectangleOptions\n */\n defaultOptions: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n defaultVisible: _propTypes2.default.bool,\n\n /**\n * @type LatLngBounds|LatLngBoundsLiteral\n */\n bounds: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n draggable: _propTypes2.default.bool,\n\n /**\n * @type boolean\n */\n editable: _propTypes2.default.bool,\n\n /**\n * @type RectangleOptions\n */\n options: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n visible: _propTypes2.default.bool,\n\n /**\n * function\n */\n onDblClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onDragEnd: _propTypes2.default.func,\n\n /**\n * function\n */\n onDragStart: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseDown: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseMove: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseOut: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseOver: _propTypes2.default.func,\n\n /**\n * function\n */\n onMouseUp: _propTypes2.default.func,\n\n /**\n * function\n */\n onRightClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onBoundsChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onDrag: _propTypes2.default.func,\n}\nRectangle.contextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nexports.default = Rectangle\n\nvar eventMap = {\n onDblClick: \"dblclick\",\n onDragEnd: \"dragend\",\n onDragStart: \"dragstart\",\n onMouseDown: \"mousedown\",\n onMouseMove: \"mousemove\",\n onMouseOut: \"mouseout\",\n onMouseOver: \"mouseover\",\n onMouseUp: \"mouseup\",\n onRightClick: \"rightclick\",\n onBoundsChanged: \"bounds_changed\",\n onClick: \"click\",\n onDrag: \"drag\",\n}\n\nvar updaterMap = {\n bounds: function bounds(instance, _bounds) {\n instance.setBounds(_bounds)\n },\n draggable: function draggable(instance, _draggable) {\n instance.setDraggable(_draggable)\n },\n editable: function editable(instance, _editable) {\n instance.setEditable(_editable)\n },\n options: function options(instance, _options) {\n instance.setOptions(_options)\n },\n visible: function visible(instance, _visible) {\n instance.setVisible(_visible)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.StreetViewPanorama = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _invariant = require(\"invariant\")\n\nvar _invariant2 = _interopRequireDefault(_invariant)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.StreetViewPanorama`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#StreetViewPanorama\n */\nvar StreetViewPanorama = (exports.StreetViewPanorama = (function(\n _React$PureComponent\n) {\n ;(0, _inherits3.default)(StreetViewPanorama, _React$PureComponent)\n\n function StreetViewPanorama(props, context) {\n ;(0, _classCallCheck3.default)(this, StreetViewPanorama)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (\n StreetViewPanorama.__proto__ ||\n (0, _getPrototypeOf2.default)(StreetViewPanorama)\n ).call(this, props, context)\n )\n\n ;(0, _invariant2.default)(\n !!_this.context[_constants.MAP],\n \"Did you render <StreetViewPanorama> as a child of <GoogleMap> with withGoogleMap() HOC?\"\n )\n ;(0, _MapChildHelper.construct)(\n StreetViewPanorama.propTypes,\n updaterMap,\n _this.props,\n _this.context[_constants.MAP].getStreetView()\n )\n return _this\n }\n\n ;(0, _createClass3.default)(StreetViewPanorama, [\n {\n key: \"getChildContext\",\n value: function getChildContext() {\n return (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n this.context[_constants.MAP].getStreetView()\n )\n },\n },\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.context[_constants.MAP].getStreetView(),\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.context[_constants.MAP].getStreetView(),\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var streetViewPanorama = this.context[_constants.MAP].getStreetView()\n if (streetViewPanorama) {\n streetViewPanorama.setVisible(false)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children\n\n return _react2.default.createElement(\"div\", null, children)\n },\n\n /**\n * Returns the set of navigation links for the Street View panorama.\n * @type Array<StreetViewLink>\n * @public\n */\n },\n {\n key: \"getLinks\",\n value: function getLinks() {\n return this.context[_constants.MAP].getLinks()\n },\n\n /**\n * Returns the StreetViewLocation of the current panorama.\n * @type StreetViewLocation\n * @public\n */\n },\n {\n key: \"getLocation\",\n value: function getLocation() {\n return this.context[_constants.MAP].getLocation()\n },\n\n /**\n * Returns the state of motion tracker. If true when the user physically moves the device and the browser supports it, the Street View Panorama tracks the physical movements.\n * @type boolean\n * @public\n */\n },\n {\n key: \"getMotionTracking\",\n value: function getMotionTracking() {\n return this.context[_constants.MAP].getMotionTracking()\n },\n\n /**\n * Returns the current panorama ID for the Street View panorama. This id is stable within the browser's current session only.\n * @type string\n * @public\n */\n },\n {\n key: \"getPano\",\n value: function getPano() {\n return this.context[_constants.MAP].getPano()\n },\n\n /**\n * Returns the heading and pitch of the photographer when this panorama was taken. For Street View panoramas on the road, this also reveals in which direction the car was travelling. This data is available after the `pano_changed` event.\n * @type StreetViewPovpano_changed\n * @public\n */\n },\n {\n key: \"getPhotographerPov\",\n value: function getPhotographerPov() {\n return this.context[_constants.MAP].getPhotographerPov()\n },\n\n /**\n * Returns the current `LatLng` position for the Street View panorama.\n * @type LatLngLatLng\n * @public\n */\n },\n {\n key: \"getPosition\",\n value: function getPosition() {\n return this.context[_constants.MAP].getPosition()\n },\n\n /**\n * Returns the current point of view for the Street View panorama.\n * @type StreetViewPov\n * @public\n */\n },\n {\n key: \"getPov\",\n value: function getPov() {\n return this.context[_constants.MAP].getPov()\n },\n\n /**\n * Returns the status of the panorama on completion of the `setPosition()` or `setPano()` request.\n * @type StreetViewStatussetPosition()setPano()\n * @public\n */\n },\n {\n key: \"getStatus\",\n value: function getStatus() {\n return this.context[_constants.MAP].getStatus()\n },\n\n /**\n * Returns `true` if the panorama is visible. It does not specify whether Street View imagery is available at the specified position.\n * @type booleantrue\n * @public\n */\n },\n {\n key: \"getVisible\",\n value: function getVisible() {\n return this.context[_constants.MAP].getVisible()\n },\n\n /**\n * Returns the zoom level of the panorama. Fully zoomed-out is level 0, where the field of view is 180 degrees. Zooming in increases the zoom level.\n * @type number\n * @public\n */\n },\n {\n key: \"getZoom\",\n value: function getZoom() {\n return this.context[_constants.MAP].getZoom()\n },\n },\n ])\n return StreetViewPanorama\n})(\n _react2.default.PureComponent\n)) /*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n\nStreetViewPanorama.propTypes = {\n /**\n * @type Array<StreetViewLink>\n */\n defaultLinks: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n defaultMotionTracking: _propTypes2.default.bool,\n\n /**\n * @type StreetViewPanoramaOptions\n */\n defaultOptions: _propTypes2.default.any,\n\n /**\n * @type string\n */\n defaultPano: _propTypes2.default.string,\n\n /**\n * @type LatLng|LatLngLiteral\n */\n defaultPosition: _propTypes2.default.any,\n\n /**\n * @type StreetViewPov\n */\n defaultPov: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n defaultVisible: _propTypes2.default.bool,\n\n /**\n * @type number\n */\n defaultZoom: _propTypes2.default.number,\n\n /**\n * @type Array<StreetViewLink>\n */\n links: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n motionTracking: _propTypes2.default.bool,\n\n /**\n * @type StreetViewPanoramaOptions\n */\n options: _propTypes2.default.any,\n\n /**\n * @type string\n */\n pano: _propTypes2.default.string,\n\n /**\n * @type LatLng|LatLngLiteral\n */\n position: _propTypes2.default.any,\n\n /**\n * @type StreetViewPov\n */\n pov: _propTypes2.default.any,\n\n /**\n * @type boolean\n */\n visible: _propTypes2.default.bool,\n\n /**\n * @type number\n */\n zoom: _propTypes2.default.number,\n\n /**\n * function\n */\n onCloseClick: _propTypes2.default.func,\n\n /**\n * function\n */\n onPanoChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onPositionChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onPovChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onResize: _propTypes2.default.func,\n\n /**\n * function\n */\n onStatusChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onVisibleChanged: _propTypes2.default.func,\n\n /**\n * function\n */\n onZoomChanged: _propTypes2.default.func,\n}\nStreetViewPanorama.contextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nStreetViewPanorama.childContextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nexports.default = StreetViewPanorama\n\nvar eventMap = {\n onCloseClick: \"closeclick\",\n onPanoChanged: \"pano_changed\",\n onPositionChanged: \"position_changed\",\n onPovChanged: \"pov_changed\",\n onResize: \"resize\",\n onStatusChanged: \"status_changed\",\n onVisibleChanged: \"visible_changed\",\n onZoomChanged: \"zoom_changed\",\n}\n\nvar updaterMap = {\n links: function links(instance, _links) {\n instance.setLinks(_links)\n },\n motionTracking: function motionTracking(instance, _motionTracking) {\n instance.setMotionTracking(_motionTracking)\n },\n options: function options(instance, _options) {\n instance.setOptions(_options)\n },\n pano: function pano(instance, _pano) {\n instance.setPano(_pano)\n },\n position: function position(instance, _position) {\n instance.setPosition(_position)\n },\n pov: function pov(instance, _pov) {\n instance.setPov(_pov)\n },\n visible: function visible(instance, _visible) {\n instance.setVisible(_visible)\n },\n zoom: function zoom(instance, _zoom) {\n instance.setZoom(_zoom)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nexports.TrafficLayer = undefined\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _MapChildHelper = require(\"../utils/MapChildHelper\")\n\nvar _constants = require(\"../constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/**\n * A wrapper around `google.maps.TrafficLayer`\n *\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#TrafficLayer\n */\n/*\n * -----------------------------------------------------------------------------\n * This file is auto-generated from the corresponding file at `src/macros/`.\n * Please **DO NOT** edit this file directly when creating PRs.\n * -----------------------------------------------------------------------------\n */\n/* global google */\nvar TrafficLayer = (exports.TrafficLayer = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(TrafficLayer, _React$PureComponent)\n\n /*\n * @see https://developers.google.com/maps/documentation/javascript/3.exp/reference#TrafficLayer\n */\n function TrafficLayer(props, context) {\n ;(0, _classCallCheck3.default)(this, TrafficLayer)\n\n var _this = (0, _possibleConstructorReturn3.default)(\n this,\n (\n TrafficLayer.__proto__ || (0, _getPrototypeOf2.default)(TrafficLayer)\n ).call(this, props, context)\n )\n\n var trafficLayer = new google.maps.TrafficLayer()\n ;(0, _MapChildHelper.construct)(\n TrafficLayer.propTypes,\n updaterMap,\n _this.props,\n trafficLayer\n )\n trafficLayer.setMap(_this.context[_constants.MAP])\n _this.state = (0, _defineProperty3.default)(\n {},\n _constants.TRAFFIC_LAYER,\n trafficLayer\n )\n return _this\n }\n\n ;(0, _createClass3.default)(TrafficLayer, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n ;(0, _MapChildHelper.componentDidMount)(\n this,\n this.state[_constants.TRAFFIC_LAYER],\n eventMap\n )\n },\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n ;(0, _MapChildHelper.componentDidUpdate)(\n this,\n this.state[_constants.TRAFFIC_LAYER],\n eventMap,\n updaterMap,\n prevProps\n )\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n ;(0, _MapChildHelper.componentWillUnmount)(this)\n var trafficLayer = this.state[_constants.TRAFFIC_LAYER]\n if (trafficLayer) {\n trafficLayer.setMap(null)\n }\n },\n },\n {\n key: \"render\",\n value: function render() {\n return false\n },\n },\n ])\n return TrafficLayer\n})(_react2.default.PureComponent))\n\nTrafficLayer.propTypes = {\n /**\n * @type TrafficLayerOptions\n */\n defaultOptions: _propTypes2.default.any,\n\n /**\n * @type TrafficLayerOptions\n */\n options: _propTypes2.default.any,\n}\nTrafficLayer.contextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n)\nexports.default = TrafficLayer\n\nvar eventMap = {}\n\nvar updaterMap = {\n options: function options(instance, _options) {\n instance.setOptions(_options)\n },\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\nvar MAP = (exports.MAP = \"__SECRET_MAP_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\n// export const SKELETON = `__SECRET_SKELETON_DO_NOT_USE_OR_YOU_WILL_BE_FIRED`;\n\nvar MARKER = (exports.MARKER =\n \"__SECRET_MARKER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar MARKER_WITH_LABEL = (exports.MARKER_WITH_LABEL =\n \"__SECRET_MARKER_WITH_LABEL_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar RECTANGLE = (exports.RECTANGLE =\n \"__SECRET_RECTANGLE_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar POLYLINE = (exports.POLYLINE =\n \"__SECRET_POLYLINE_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar POLYGON = (exports.POLYGON =\n \"__SECRET_POLYGON_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar CIRCLE = (exports.CIRCLE =\n \"__SECRET_CIRCLE_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar KML_LAYER = (exports.KML_LAYER =\n \"__SECRET_KML_LAYER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar DIRECTIONS_RENDERER = (exports.DIRECTIONS_RENDERER =\n \"__SECRET_DIRECTIONS_RENDERER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar HEATMAP_LAYER = (exports.HEATMAP_LAYER =\n \"__SECRET_HEATMAP_LAYER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar FUSION_TABLES_LAYER = (exports.FUSION_TABLES_LAYER =\n \"__SECRET_FUSION_TABLES_LAYER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar ANCHOR = (exports.ANCHOR =\n \"__SECRET_ANCHOR_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar INFO_WINDOW = (exports.INFO_WINDOW =\n \"__SECRET_INFO_WINDOW_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar OVERLAY_VIEW = (exports.OVERLAY_VIEW =\n \"__SECRET_OVERLAY_VIEW_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar GROUND_LAYER = (exports.GROUND_LAYER =\n \"__SECRET_GROUND_LAYER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar DRAWING_MANAGER = (exports.DRAWING_MANAGER =\n \"__SECRET_DRAWING_MANAGER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar SEARCH_BOX = (exports.SEARCH_BOX =\n \"__SECRET_SEARCH_BOX_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar MARKER_CLUSTERER = (exports.MARKER_CLUSTERER =\n \"__SECRET_MARKER_CLUSTERER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar INFO_BOX = (exports.INFO_BOX =\n \"__SECRET_INFO_BOX_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar TRAFFIC_LAYER = (exports.TRAFFIC_LAYER =\n \"__SECRET_TRAFFIC_LAYER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar STREET_VIEW_PANORAMA = (exports.STREET_VIEW_PANORAMA =\n \"__SECRET_STREET_VIEW_PANORAMA_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n\nvar BICYCLING_LAYER = (exports.BICYCLING_LAYER =\n \"__SECRET_BICYCLING_LAYER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\")\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\n\nvar _withScriptjs = require(\"./withScriptjs\")\n\nObject.defineProperty(exports, \"withScriptjs\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_withScriptjs).default\n },\n})\n\nvar _withGoogleMap = require(\"./withGoogleMap\")\n\nObject.defineProperty(exports, \"withGoogleMap\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_withGoogleMap).default\n },\n})\n\nvar _GoogleMap = require(\"./components/GoogleMap\")\n\nObject.defineProperty(exports, \"GoogleMap\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_GoogleMap).default\n },\n})\n\nvar _Circle = require(\"./components/Circle\")\n\nObject.defineProperty(exports, \"Circle\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Circle).default\n },\n})\n\nvar _Marker = require(\"./components/Marker\")\n\nObject.defineProperty(exports, \"Marker\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Marker).default\n },\n})\n\nvar _Polyline = require(\"./components/Polyline\")\n\nObject.defineProperty(exports, \"Polyline\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Polyline).default\n },\n})\n\nvar _Polygon = require(\"./components/Polygon\")\n\nObject.defineProperty(exports, \"Polygon\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Polygon).default\n },\n})\n\nvar _Rectangle = require(\"./components/Rectangle\")\n\nObject.defineProperty(exports, \"Rectangle\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Rectangle).default\n },\n})\n\nvar _InfoWindow = require(\"./components/InfoWindow\")\n\nObject.defineProperty(exports, \"InfoWindow\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_InfoWindow).default\n },\n})\n\nvar _OverlayView = require(\"./components/OverlayView\")\n\nObject.defineProperty(exports, \"OverlayView\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_OverlayView).default\n },\n})\n\nvar _GroundOverlay = require(\"./components/GroundOverlay\")\n\nObject.defineProperty(exports, \"GroundOverlay\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_GroundOverlay).default\n },\n})\n\nvar _DirectionsRenderer = require(\"./components/DirectionsRenderer\")\n\nObject.defineProperty(exports, \"DirectionsRenderer\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_DirectionsRenderer).default\n },\n})\n\nvar _FusionTablesLayer = require(\"./components/FusionTablesLayer\")\n\nObject.defineProperty(exports, \"FusionTablesLayer\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_FusionTablesLayer).default\n },\n})\n\nvar _KmlLayer = require(\"./components/KmlLayer\")\n\nObject.defineProperty(exports, \"KmlLayer\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_KmlLayer).default\n },\n})\n\nvar _TrafficLayer = require(\"./components/TrafficLayer\")\n\nObject.defineProperty(exports, \"TrafficLayer\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_TrafficLayer).default\n },\n})\n\nvar _StreetViewPanorama = require(\"./components/StreetViewPanorama\")\n\nObject.defineProperty(exports, \"StreetViewPanorama\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_StreetViewPanorama).default\n },\n})\n\nvar _BicyclingLayer = require(\"./components/BicyclingLayer\")\n\nObject.defineProperty(exports, \"BicyclingLayer\", {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_BicyclingLayer).default\n },\n})\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\n\nvar _bind2 = require(\"lodash/bind\")\n\nvar _bind3 = _interopRequireDefault(_bind2)\n\nvar _isFunction2 = require(\"lodash/isFunction\")\n\nvar _isFunction3 = _interopRequireDefault(_isFunction2)\n\nvar _reduce3 = require(\"lodash/reduce\")\n\nvar _reduce4 = _interopRequireDefault(_reduce3)\n\nvar _forEach2 = require(\"lodash/forEach\")\n\nvar _forEach3 = _interopRequireDefault(_forEach2)\n\nvar _lowerFirst2 = require(\"lodash/lowerFirst\")\n\nvar _lowerFirst3 = _interopRequireDefault(_lowerFirst2)\n\nvar _has2 = require(\"lodash/has\")\n\nvar _has3 = _interopRequireDefault(_has2)\n\nexports.construct = construct\nexports.componentDidMount = componentDidMount\nexports.componentDidUpdate = componentDidUpdate\nexports.componentWillUnmount = componentWillUnmount\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/* global google */\n/* eslint-disable no-param-reassign */\nfunction rdcUncontrolledAndControlledProps(acc, value, key) {\n if ((0, _has3.default)(acc.prevProps, key)) {\n var match = key.match(/^default(\\S+)/)\n if (match) {\n var unprefixedKey = (0, _lowerFirst3.default)(match[1])\n if (!(0, _has3.default)(acc.nextProps, unprefixedKey)) {\n acc.nextProps[unprefixedKey] = acc.prevProps[key]\n }\n } else {\n acc.nextProps[key] = acc.prevProps[key]\n }\n }\n return acc\n}\n\nfunction applyUpdaterToNextProps(updaterMap, prevProps, nextProps, instance) {\n ;(0, _forEach3.default)(updaterMap, function(fn, key) {\n var nextValue = nextProps[key]\n if (nextValue !== prevProps[key]) {\n fn(instance, nextValue)\n }\n })\n}\n\nfunction construct(propTypes, updaterMap, prevProps, instance) {\n var _reduce2 = (0, _reduce4.default)(\n propTypes,\n rdcUncontrolledAndControlledProps,\n {\n nextProps: {},\n prevProps: prevProps,\n }\n ),\n nextProps = _reduce2.nextProps\n\n applyUpdaterToNextProps(\n updaterMap,\n {\n /* empty prevProps for construct */\n },\n nextProps,\n instance\n )\n}\n\nfunction componentDidMount(component, instance, eventMap) {\n registerEvents(component, instance, eventMap)\n}\n\nfunction componentDidUpdate(\n component,\n instance,\n eventMap,\n updaterMap,\n prevProps\n) {\n component.unregisterAllEvents()\n applyUpdaterToNextProps(updaterMap, prevProps, component.props, instance)\n registerEvents(component, instance, eventMap)\n}\n\nfunction componentWillUnmount(component) {\n component.unregisterAllEvents()\n}\n\nfunction registerEvents(component, instance, eventMap) {\n var registeredList = (0, _reduce4.default)(\n eventMap,\n function(acc, googleEventName, onEventName) {\n if ((0, _isFunction3.default)(component.props[onEventName])) {\n acc.push(\n google.maps.event.addListener(\n instance,\n googleEventName,\n component.props[onEventName]\n )\n )\n }\n return acc\n },\n []\n )\n\n component.unregisterAllEvents = (0, _bind3.default)(\n _forEach3.default,\n null,\n registeredList,\n unregisterEvent\n )\n}\n\nfunction unregisterEvent(registered) {\n google.maps.event.removeListener(registered)\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\n\nvar _isFunction2 = require(\"lodash/isFunction\")\n\nvar _isFunction3 = _interopRequireDefault(_isFunction2)\n\nexports.getOffsetOverride = getOffsetOverride\nexports.getLayoutStyles = getLayoutStyles\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/* global google */\nfunction getOffsetOverride(containerElement, props) {\n var getPixelPositionOffset = props.getPixelPositionOffset\n //\n // Allows the component to control the visual position of the OverlayView\n // relative to the LatLng pixel position.\n //\n\n if ((0, _isFunction3.default)(getPixelPositionOffset)) {\n return getPixelPositionOffset(\n containerElement.offsetWidth,\n containerElement.offsetHeight\n )\n } else {\n return {}\n }\n}\n\nfunction createLatLng(inst, Type) {\n return new Type(inst.lat, inst.lng)\n}\n\nfunction createLatLngBounds(inst, Type) {\n return new Type(\n new google.maps.LatLng(inst.ne.lat, inst.ne.lng),\n new google.maps.LatLng(inst.sw.lat, inst.sw.lng)\n )\n}\n\nfunction ensureOfType(inst, type, factory) {\n if (inst instanceof type) {\n return inst\n } else {\n return factory(inst, type)\n }\n}\n\nfunction getLayoutStylesByBounds(mapCanvasProjection, offset, bounds) {\n var ne = mapCanvasProjection.fromLatLngToDivPixel(bounds.getNorthEast())\n var sw = mapCanvasProjection.fromLatLngToDivPixel(bounds.getSouthWest())\n if (ne && sw) {\n return {\n left: sw.x + offset.x + \"px\",\n top: ne.y + offset.y + \"px\",\n width: ne.x - sw.x - offset.x + \"px\",\n height: sw.y - ne.y - offset.y + \"px\",\n }\n }\n return {\n left: \"-9999px\",\n top: \"-9999px\",\n }\n}\n\nfunction getLayoutStylesByPosition(mapCanvasProjection, offset, position) {\n var point = mapCanvasProjection.fromLatLngToDivPixel(position)\n if (point) {\n var x = point.x,\n y = point.y\n\n return {\n left: x + offset.x + \"px\",\n top: y + offset.y + \"px\",\n }\n }\n return {\n left: \"-9999px\",\n top: \"-9999px\",\n }\n}\n\nfunction getLayoutStyles(mapCanvasProjection, offset, props) {\n if (props.bounds) {\n var bounds = ensureOfType(\n props.bounds,\n google.maps.LatLngBounds,\n createLatLngBounds\n )\n return getLayoutStylesByBounds(mapCanvasProjection, offset, bounds)\n } else {\n var position = ensureOfType(\n props.position,\n google.maps.LatLng,\n createLatLng\n )\n return getLayoutStylesByPosition(mapCanvasProjection, offset, position)\n }\n}\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\n\nvar _objectWithoutProperties2 = require(\"babel-runtime/helpers/objectWithoutProperties\")\n\nvar _objectWithoutProperties3 = _interopRequireDefault(\n _objectWithoutProperties2\n)\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\")\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _bind2 = require(\"lodash/bind\")\n\nvar _bind3 = _interopRequireDefault(_bind2)\n\nexports.withGoogleMap = withGoogleMap\n\nvar _warning = require(\"warning\")\n\nvar _warning2 = _interopRequireDefault(_warning)\n\nvar _invariant = require(\"invariant\")\n\nvar _invariant2 = _interopRequireDefault(_invariant)\n\nvar _recompose = require(\"recompose\")\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nvar _constants = require(\"./constants\")\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\n/* global google */\nfunction withGoogleMap(BaseComponent) {\n var factory = _react2.default.createFactory(BaseComponent)\n\n var Container = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(Container, _React$PureComponent)\n\n function Container() {\n var _ref\n\n var _temp, _this, _ret\n\n ;(0, _classCallCheck3.default)(this, Container)\n\n for (\n var _len = arguments.length, args = Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n args[_key] = arguments[_key]\n }\n\n return (\n (_ret = ((_temp = ((_this = (0, _possibleConstructorReturn3.default)(\n this,\n (_ref =\n Container.__proto__ ||\n (0, _getPrototypeOf2.default)(Container)).call.apply(\n _ref,\n [this].concat(args)\n )\n )),\n _this)),\n (_this.state = {\n map: null,\n }),\n (_this.handleComponentMount = (0, _bind3.default)(\n _this.handleComponentMount,\n _this\n )),\n _temp)),\n (0, _possibleConstructorReturn3.default)(_this, _ret)\n )\n }\n\n ;(0, _createClass3.default)(Container, [\n {\n key: \"getChildContext\",\n value: function getChildContext() {\n return (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n this.state.map\n )\n },\n },\n {\n key: \"componentWillMount\",\n value: function componentWillMount() {\n var _props = this.props,\n containerElement = _props.containerElement,\n mapElement = _props.mapElement\n\n ;(0, _invariant2.default)(\n !!containerElement && !!mapElement,\n \"Required props containerElement or mapElement is missing. You need to provide both of them.\\n The `google.maps.Map` instance will be initialized on mapElement and it's wrapped by containerElement.\\nYou need to provide both of them since Google Map requires the DOM to have height when initialized.\"\n )\n },\n },\n {\n key: \"handleComponentMount\",\n value: function handleComponentMount(node) {\n if (this.state.map || node === null) {\n return\n }\n ;(0, _warning2.default)(\n \"undefined\" !== typeof google,\n \"Make sure you've put a <script> tag in your <head> element to load Google Maps JavaScript API v3.\\n If you're looking for built-in support to load it for you, use the \\\"async/ScriptjsLoader\\\" instead.\\n See https://github.com/tomchentw/react-google-maps/pull/168\"\n )\n // https://developers.google.com/maps/documentation/javascript/3.exp/reference#Map\n var map = new google.maps.Map(node)\n this.setState({ map: map })\n },\n },\n {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n containerElement = _props2.containerElement,\n mapElement = _props2.mapElement,\n restProps = (0, _objectWithoutProperties3.default)(_props2, [\n \"containerElement\",\n \"mapElement\",\n ])\n var map = this.state.map\n\n if (map) {\n return _react2.default.cloneElement(\n containerElement,\n {},\n _react2.default.cloneElement(mapElement, {\n ref: this.handleComponentMount,\n }),\n _react2.default.createElement(\"div\", null, factory(restProps))\n )\n } else {\n return _react2.default.cloneElement(\n containerElement,\n {},\n _react2.default.cloneElement(mapElement, {\n ref: this.handleComponentMount,\n }),\n _react2.default.createElement(\"div\", null)\n )\n }\n },\n },\n ])\n return Container\n })(_react2.default.PureComponent)\n\n Container.displayName =\n \"withGoogleMap(\" + (0, _recompose.getDisplayName)(BaseComponent) + \")\"\n Container.propTypes = {\n containerElement: _propTypes2.default.node.isRequired,\n mapElement: _propTypes2.default.node.isRequired,\n }\n Container.childContextTypes = (0, _defineProperty3.default)(\n {},\n _constants.MAP,\n _propTypes2.default.object\n )\n\n return Container\n}\n\nexports.default = withGoogleMap\n","\"use strict\"\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true,\n})\n\nvar _objectWithoutProperties2 = require(\"babel-runtime/helpers/objectWithoutProperties\")\n\nvar _objectWithoutProperties3 = _interopRequireDefault(\n _objectWithoutProperties2\n)\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\")\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf)\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\")\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2)\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\")\n\nvar _createClass3 = _interopRequireDefault(_createClass2)\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\")\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(\n _possibleConstructorReturn2\n)\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\")\n\nvar _inherits3 = _interopRequireDefault(_inherits2)\n\nvar _bind2 = require(\"lodash/bind\")\n\nvar _bind3 = _interopRequireDefault(_bind2)\n\nexports.withScriptjs = withScriptjs\n\nvar _invariant = require(\"invariant\")\n\nvar _invariant2 = _interopRequireDefault(_invariant)\n\nvar _canUseDom = require(\"can-use-dom\")\n\nvar _canUseDom2 = _interopRequireDefault(_canUseDom)\n\nvar _recompose = require(\"recompose\")\n\nvar _propTypes = require(\"prop-types\")\n\nvar _propTypes2 = _interopRequireDefault(_propTypes)\n\nvar _react = require(\"react\")\n\nvar _react2 = _interopRequireDefault(_react)\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj }\n}\n\nvar LOADING_STATE_NONE = \"NONE\"\nvar LOADING_STATE_BEGIN = \"BEGIN\"\nvar LOADING_STATE_LOADED = \"LOADED\"\n\nfunction withScriptjs(BaseComponent) {\n var factory = _react2.default.createFactory(BaseComponent)\n\n var Container = (function(_React$PureComponent) {\n ;(0, _inherits3.default)(Container, _React$PureComponent)\n\n function Container() {\n var _ref\n\n var _temp, _this, _ret\n\n ;(0, _classCallCheck3.default)(this, Container)\n\n for (\n var _len = arguments.length, args = Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n args[_key] = arguments[_key]\n }\n\n return (\n (_ret = ((_temp = ((_this = (0, _possibleConstructorReturn3.default)(\n this,\n (_ref =\n Container.__proto__ ||\n (0, _getPrototypeOf2.default)(Container)).call.apply(\n _ref,\n [this].concat(args)\n )\n )),\n _this)),\n (_this.state = {\n loadingState: LOADING_STATE_NONE,\n }),\n (_this.isUnmounted = false),\n (_this.handleLoaded = (0, _bind3.default)(_this.handleLoaded, _this)),\n _temp)),\n (0, _possibleConstructorReturn3.default)(_this, _ret)\n )\n }\n\n ;(0, _createClass3.default)(Container, [\n {\n key: \"handleLoaded\",\n value: function handleLoaded() {\n if (this.isUnmounted) {\n return\n }\n this.setState({\n loadingState: LOADING_STATE_LOADED,\n })\n },\n },\n {\n key: \"componentWillMount\",\n value: function componentWillMount() {\n var _props = this.props,\n loadingElement = _props.loadingElement,\n googleMapURL = _props.googleMapURL\n\n ;(0, _invariant2.default)(\n !!loadingElement && !!googleMapURL,\n \"Required props loadingElement or googleMapURL is missing. You need to provide both of them.\"\n )\n },\n },\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var loadingState = this.state.loadingState\n\n if (loadingState !== LOADING_STATE_NONE || !_canUseDom2.default) {\n return\n }\n this.setState({\n loadingState: LOADING_STATE_BEGIN,\n })\n // Don't load scriptjs as a dependency since we do not want this module be used on server side.\n // eslint-disable-next-line global-require\n var scriptjs = require(\"scriptjs\")\n var googleMapURL = this.props.googleMapURL\n\n scriptjs(googleMapURL, this.handleLoaded)\n },\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.isUnmounted = true\n },\n },\n {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n loadingElement = _props2.loadingElement,\n googleMapURL = _props2.googleMapURL,\n restProps = (0, _objectWithoutProperties3.default)(_props2, [\n \"loadingElement\",\n \"googleMapURL\",\n ])\n var loadingState = this.state.loadingState\n\n if (loadingState === LOADING_STATE_LOADED) {\n return factory(restProps)\n } else {\n return loadingElement\n }\n },\n },\n ])\n return Container\n })(_react2.default.PureComponent)\n\n Container.displayName =\n \"withScriptjs(\" + (0, _recompose.getDisplayName)(BaseComponent) + \")\"\n Container.propTypes = {\n loadingElement: _propTypes2.default.node.isRequired,\n googleMapURL: _propTypes2.default.string.isRequired,\n }\n\n return Container\n}\n\nexports.default = withScriptjs\n","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n","import e,{useContext as t,createElement as n,Fragment as o,createContext as r,forwardRef as i,useRef as a,useLayoutEffect as s,Component as c,useMemo as u,useCallback as l,useEffect as p,useState as d,useImperativeHandle as f}from\"react\";import{createPortal as g}from\"react-dom\";\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */var b=function(){return(b=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};function h(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{c(o.next(e))}catch(e){i(e)}}function s(e){try{c(o.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((o=o.apply(e,t||[])).next())}))}function m(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=a.trys,(r=r.length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}function v(){return(v=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function I(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var C=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy?\"production\"===process.env.NODE_ENV:e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement(\"style\");return t.setAttribute(\"data-emotion\",e.key),void 0!==e.nonce&&t.setAttribute(\"nonce\",e.nonce),t.appendChild(document.createTextNode(\"\")),t.setAttribute(\"data-s\",\"\"),t}(this));var t=this.tags[this.tags.length-1];if(\"production\"!==process.env.NODE_ENV){var n=64===e.charCodeAt(0)&&105===e.charCodeAt(1);n&&this._alreadyInsertedOrderInsensitiveRule&&console.error(\"You're attempting to insert the following rule:\\n\"+e+\"\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.\"),this._alreadyInsertedOrderInsensitiveRule=this._alreadyInsertedOrderInsensitiveRule||!n}if(this.isSpeedy){var o=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}(t);try{o.insertRule(e,o.cssRules.length)}catch(t){\"production\"===process.env.NODE_ENV||/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear){/.test(e)||console.error('There was a problem inserting the following rule: \"'+e+'\"',t)}}else t.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach((function(e){return e.parentNode.removeChild(e)})),this.tags=[],this.ctr=0,\"production\"!==process.env.NODE_ENV&&(this._alreadyInsertedOrderInsensitiveRule=!1)},e}(),A=\"-ms-\",x=\"-moz-\",G=\"-webkit-\",w=Math.abs,O=String.fromCharCode;function N(e){return e.trim()}function S(e,t,n){return e.replace(t,n)}function V(e,t){return e.indexOf(t)}function T(e,t){return 0|e.charCodeAt(t)}function M(e,t,n){return e.slice(t,n)}function B(e){return e.length}function X(e){return e.length}function Z(e,t){return t.push(e),e}var P=1,L=1,E=0,W=0,k=0,R=\"\";function F(e,t,n,o,r,i,a){return{value:e,root:t,parent:n,type:o,props:r,children:i,line:P,column:L,length:a,return:\"\"}}function j(e,t,n){return F(e,t.root,t.parent,n,t.props,t.children,0)}function D(){return k=W<E?T(R,W++):0,L++,10===k&&(L=1,P++),k}function Y(){return T(R,W)}function z(){return W}function H(e,t){return M(R,e,t)}function J(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function U(e){return P=L=1,E=B(R=e),W=0,[]}function Q(e){return R=\"\",e}function _(e){return N(H(W-1,q(91===e?e+2:40===e?e+1:e)))}function $(e){for(;(k=Y())&&k<33;)D();return J(e)>2||J(k)>3?\"\":\" \"}function K(e,t){for(;--t&&D()&&!(k<48||k>102||k>57&&k<65||k>70&&k<97););return H(e,z()+(t<6&&32==Y()&&32==D()))}function q(e){for(;D();)switch(k){case e:return W;case 34:case 39:return q(34===e||39===e?e:k);case 40:41===e&&q(e);break;case 92:D()}return W}function ee(e,t){for(;D()&&e+k!==57&&(e+k!==84||47!==Y()););return\"/*\"+H(t,W-1)+\"*\"+O(47===e?e:D())}function te(e){for(;!J(Y());)D();return H(e,W)}function ne(e){return Q(oe(\"\",null,null,null,[\"\"],e=U(e),0,[0],e))}function oe(e,t,n,o,r,i,a,s,c){for(var u=0,l=0,p=a,d=0,f=0,g=0,b=1,h=1,m=1,v=0,I=\"\",y=r,C=i,A=o,x=I;h;)switch(g=v,v=D()){case 34:case 39:case 91:case 40:x+=_(v);break;case 9:case 10:case 13:case 32:x+=$(g);break;case 92:x+=K(z()-1,7);continue;case 47:switch(Y()){case 42:case 47:Z(ie(ee(D(),z()),t,n),c);break;default:x+=\"/\"}break;case 123*b:s[u++]=B(x)*m;case 125*b:case 59:case 0:switch(v){case 0:case 125:h=0;case 59+l:f>0&&B(x)-p&&Z(f>32?ae(x+\";\",o,n,p-1):ae(S(x,\" \",\"\")+\";\",o,n,p-2),c);break;case 59:x+=\";\";default:if(Z(A=re(x,t,n,u,l,r,s,I,y=[],C=[],p),i),123===v)if(0===l)oe(x,t,A,A,y,i,p,s,C);else switch(d){case 100:case 109:case 115:oe(e,A,A,o&&Z(re(e,A,A,0,0,r,s,I,r,y=[],p),C),r,C,p,s,o?y:C);break;default:oe(x,A,A,A,[\"\"],C,p,s,C)}}u=l=f=0,b=m=1,I=x=\"\",p=a;break;case 58:p=1+B(x),f=g;default:if(b<1)if(123==v)--b;else if(125==v&&0==b++&&125==(k=W>0?T(R,--W):0,L--,10===k&&(L=1,P--),k))continue;switch(x+=O(v),v*b){case 38:m=l>0?1:(x+=\"\\f\",-1);break;case 44:s[u++]=(B(x)-1)*m,m=1;break;case 64:45===Y()&&(x+=_(D())),d=Y(),l=B(I=x+=te(z())),v++;break;case 45:45===g&&2==B(x)&&(b=0)}}return i}function re(e,t,n,o,r,i,a,s,c,u,l){for(var p=r-1,d=0===r?i:[\"\"],f=X(d),g=0,b=0,h=0;g<o;++g)for(var m=0,v=M(e,p+1,p=w(b=a[g])),I=e;m<f;++m)(I=N(b>0?d[m]+\" \"+v:S(v,/&\\f/g,d[m])))&&(c[h++]=I);return F(e,t,n,0===r?\"rule\":s,c,u,l)}function ie(e,t,n){return F(e,t,n,\"comm\",O(k),M(e,2,-2),0)}function ae(e,t,n,o){return F(e,t,n,\"decl\",M(e,0,o),M(e,o+1,-1),o)}function se(e,t){switch(function(e,t){return(((t<<2^T(e,0))<<2^T(e,1))<<2^T(e,2))<<2^T(e,3)}(e,t)){case 5103:return G+\"print-\"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return G+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return G+e+x+e+A+e+e;case 6828:case 4268:return G+e+A+e+e;case 6165:return G+e+A+\"flex-\"+e+e;case 5187:return G+e+S(e,/(\\w+).+(:[^]+)/,G+\"box-$1$2\"+\"-ms-flex-$1$2\")+e;case 5443:return G+e+A+\"flex-item-\"+S(e,/flex-|-self/,\"\")+e;case 4675:return G+e+A+\"flex-line-pack\"+S(e,/align-content|flex-|-self/,\"\")+e;case 5548:return G+e+A+S(e,\"shrink\",\"negative\")+e;case 5292:return G+e+A+S(e,\"basis\",\"preferred-size\")+e;case 6060:return G+\"box-\"+S(e,\"-grow\",\"\")+G+e+A+S(e,\"grow\",\"positive\")+e;case 4554:return G+S(e,/([^-])(transform)/g,\"$1\"+G+\"$2\")+e;case 6187:return S(S(S(e,/(zoom-|grab)/,G+\"$1\"),/(image-set)/,G+\"$1\"),e,\"\")+e;case 5495:case 3959:return S(e,/(image-set\\([^]*)/,G+\"$1$`$1\");case 4968:return S(S(e,/(.+:)(flex-)?(.*)/,G+\"box-pack:$3\"+\"-ms-flex-pack:$3\"),/s.+-b[^;]+/,\"justify\")+G+e+e;case 4095:case 3583:case 4068:case 2532:return S(e,/(.+)-inline(.+)/,G+\"$1$2\")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(B(e)-1-t>6)switch(T(e,t+1)){case 109:if(45!==T(e,t+4))break;case 102:return S(e,/(.+:)(.+)-([^]+)/,\"$1\"+G+\"$2-$3$1\"+x+(108==T(e,t+3)?\"$3\":\"$2-$3\"))+e;case 115:return~V(e,\"stretch\")?se(S(e,\"stretch\",\"fill-available\"),t)+e:e}break;case 4949:if(115!==T(e,t+1))break;case 6444:switch(T(e,B(e)-3-(~V(e,\"!important\")&&10))){case 107:return S(e,\":\",\":\"+G)+e;case 101:return S(e,/(.+:)([^;!]+)(;|!.+)?/,\"$1\"+G+(45===T(e,14)?\"inline-\":\"\")+\"box$3$1\"+G+\"$2$3$1\"+\"-ms-$2box$3\")+e}break;case 5936:switch(T(e,t+11)){case 114:return G+e+A+S(e,/[svh]\\w+-[tblr]{2}/,\"tb\")+e;case 108:return G+e+A+S(e,/[svh]\\w+-[tblr]{2}/,\"tb-rl\")+e;case 45:return G+e+A+S(e,/[svh]\\w+-[tblr]{2}/,\"lr\")+e}return G+e+A+e+e}return e}function ce(e,t){for(var n=\"\",o=X(e),r=0;r<o;r++)n+=t(e[r],r,e,t)||\"\";return n}function ue(e,t,n,o){switch(e.type){case\"@import\":case\"decl\":return e.return=e.return||e.value;case\"comm\":return\"\";case\"rule\":e.value=e.props.join(\",\")}return B(n=ce(e.children,o))?e.return=e.value+\"{\"+n+\"}\":\"\"}function le(e){var t=X(e);return function(n,o,r,i){for(var a=\"\",s=0;s<t;s++)a+=e[s](n,o,r,i)||\"\";return a}}function pe(e){return function(t){t.root||(t=t.return)&&e(t)}}function de(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}var fe,ge,be=function(e,t){return Q(function(e,t){var n=-1,o=44;do{switch(J(o)){case 0:38===o&&12===Y()&&(t[n]=1),e[n]+=te(W-1);break;case 2:e[n]+=_(o);break;case 4:if(44===o){e[++n]=58===Y()?\"&\\f\":\"\",t[n]=e[n].length;break}default:e[n]+=O(o)}}while(o=D());return e}(U(e),t))},he=new WeakMap,me=function(e){if(\"rule\"===e.type&&e.parent&&e.length){for(var t=e.value,n=e.parent,o=e.column===n.column&&e.line===n.line;\"rule\"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||he.get(n))&&!o){he.set(e,!0);for(var r=[],i=be(t,r),a=n.props,s=0,c=0;s<i.length;s++)for(var u=0;u<a.length;u++,c++)e.props[c]=r[s]?i[s].replace(/&\\f/g,a[u]):a[u]+\" \"+i[s]}}},ve=function(e){if(\"decl\"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return=\"\",e.value=\"\")}},Ie=function(e){return 105===e.type.charCodeAt(1)&&64===e.type.charCodeAt(0)},ye=function(e){e.type=\"\",e.value=\"\",e.return=\"\",e.children=\"\",e.props=\"\"},Ce=function(e,t,n){Ie(e)&&(e.parent?(console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\"),ye(e)):function(e,t){for(var n=e-1;n>=0;n--)if(!Ie(t[n]))return!0;return!1}(t,n)&&(console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\"),ye(e)))},Ae=\"undefined\"!=typeof document,xe=Ae?void 0:(fe=function(){return de((function(){var e={};return function(t){return e[t]}}))},ge=new WeakMap,function(e){if(ge.has(e))return ge.get(e);var t=fe(e);return ge.set(e,t),t}),Ge=[function(e,t,n,o){if(!e.return)switch(e.type){case\"decl\":e.return=se(e.value,e.length);break;case\"@keyframes\":return ce([j(S(e.value,\"@\",\"@\"+G),e,\"\")],o);case\"rule\":if(e.length)return function(e,t){return e.map(t).join(\"\")}(e.props,(function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\\w+|:read-\\w+)/)){case\":read-only\":case\":read-write\":return ce([j(S(t,/:(read-\\w+)/,\":-moz-$1\"),e,\"\")],o);case\"::placeholder\":return ce([j(S(t,/:(plac\\w+)/,\":\"+G+\"input-$1\"),e,\"\"),j(S(t,/:(plac\\w+)/,\":-moz-$1\"),e,\"\"),j(S(t,/:(plac\\w+)/,\"-ms-input-$1\"),e,\"\")],o)}return\"\"}))}}],we=function(e){var t=e.key;if(\"production\"!==process.env.NODE_ENV&&!t)throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\nIf multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");if(Ae&&\"css\"===t){var n=document.querySelectorAll(\"style[data-emotion]:not([data-s])\");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute(\"data-emotion\").indexOf(\" \")&&(document.head.appendChild(e),e.setAttribute(\"data-s\",\"\"))}))}var o=e.stylisPlugins||Ge;if(\"production\"!==process.env.NODE_ENV&&/[^a-z-]/.test(t))throw new Error('Emotion key must only contain lower case alphabetical characters and - but \"'+t+'\" was passed');var r,i,a={},s=[];Ae&&(r=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^=\"'+t+' \"]'),(function(e){for(var t=e.getAttribute(\"data-emotion\").split(\" \"),n=1;n<t.length;n++)a[t[n]]=!0;s.push(e)})));var c=[me,ve];if(\"production\"!==process.env.NODE_ENV&&c.push(function(e){return function(t,n,o){if(\"rule\"===t.type){var r,i=t.value.match(/(:first|:nth|:nth-last)-child/g);if(i&&!0!==e.compat){var a=n>0?o[n-1]:null;if(a&&function(e){return!!e&&\"comm\"===e.type&&e.children.indexOf(\"emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason\")>-1}((r=a.children).length?r[r.length-1]:null))return;i.forEach((function(e){console.error('The pseudo class \"'+e+'\" is potentially unsafe when doing server-side rendering. Try changing it to \"'+e.split(\"-child\")[0]+'-of-type\".')}))}}}}({get compat(){return h.compat}}),Ce),Ae){var u,l=[ue,\"production\"!==process.env.NODE_ENV?function(e){e.root||(e.return?u.insert(e.return):e.value&&\"comm\"!==e.type&&u.insert(e.value+\"{}\"))}:pe((function(e){u.insert(e)}))],p=le(c.concat(o,l));i=function(e,t,n,o){u=n,\"production\"!==process.env.NODE_ENV&&void 0!==t.map&&(u={insert:function(e){n.insert(e+t.map)}}),ce(ne(e?e+\"{\"+t.styles+\"}\":t.styles),p),o&&(h.inserted[t.name]=!0)}}else{var d=[ue],f=le(c.concat(o,d)),g=xe(o)(t),b=function(e,t){var n=t.name;return void 0===g[n]&&(g[n]=ce(ne(e?e+\"{\"+t.styles+\"}\":t.styles),f)),g[n]};i=function(e,t,n,o){var r=t.name,i=b(e,t);return void 0===h.compat?(o&&(h.inserted[r]=!0),\"development\"===process.env.NODE_ENV&&void 0!==t.map?i+t.map:i):o?void(h.inserted[r]=i):i}}var h={key:t,sheet:new C({key:t,container:r,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend}),nonce:e.nonce,inserted:a,registered:{},insert:i};return h.sheet.hydrate(s),h};function Oe(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function Ne(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error(\"Dynamic requires are not currently supported by @rollup/plugin-commonjs\")}\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */(null==t&&n.path)}},n.exports),n.exports}var Se=\"function\"==typeof Symbol&&Symbol.for,Ve=Se?Symbol.for(\"react.element\"):60103,Te=Se?Symbol.for(\"react.portal\"):60106,Me=Se?Symbol.for(\"react.fragment\"):60107,Be=Se?Symbol.for(\"react.strict_mode\"):60108,Xe=Se?Symbol.for(\"react.profiler\"):60114,Ze=Se?Symbol.for(\"react.provider\"):60109,Pe=Se?Symbol.for(\"react.context\"):60110,Le=Se?Symbol.for(\"react.async_mode\"):60111,Ee=Se?Symbol.for(\"react.concurrent_mode\"):60111,We=Se?Symbol.for(\"react.forward_ref\"):60112,ke=Se?Symbol.for(\"react.suspense\"):60113,Re=Se?Symbol.for(\"react.suspense_list\"):60120,Fe=Se?Symbol.for(\"react.memo\"):60115,je=Se?Symbol.for(\"react.lazy\"):60116,De=Se?Symbol.for(\"react.block\"):60121,Ye=Se?Symbol.for(\"react.fundamental\"):60117,ze=Se?Symbol.for(\"react.responder\"):60118,He=Se?Symbol.for(\"react.scope\"):60119;function Je(e){if(\"object\"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case Ve:switch(e=e.type){case Le:case Ee:case Me:case Xe:case Be:case ke:return e;default:switch(e=e&&e.$$typeof){case Pe:case We:case je:case Fe:case Ze:return e;default:return t}}case Te:return t}}}function Ue(e){return Je(e)===Ee}var Qe={AsyncMode:Le,ConcurrentMode:Ee,ContextConsumer:Pe,ContextProvider:Ze,Element:Ve,ForwardRef:We,Fragment:Me,Lazy:je,Memo:Fe,Portal:Te,Profiler:Xe,StrictMode:Be,Suspense:ke,isAsyncMode:function(e){return Ue(e)||Je(e)===Le},isConcurrentMode:Ue,isContextConsumer:function(e){return Je(e)===Pe},isContextProvider:function(e){return Je(e)===Ze},isElement:function(e){return\"object\"==typeof e&&null!==e&&e.$$typeof===Ve},isForwardRef:function(e){return Je(e)===We},isFragment:function(e){return Je(e)===Me},isLazy:function(e){return Je(e)===je},isMemo:function(e){return Je(e)===Fe},isPortal:function(e){return Je(e)===Te},isProfiler:function(e){return Je(e)===Xe},isStrictMode:function(e){return Je(e)===Be},isSuspense:function(e){return Je(e)===ke},isValidElementType:function(e){return\"string\"==typeof e||\"function\"==typeof e||e===Me||e===Ee||e===Xe||e===Be||e===ke||e===Re||\"object\"==typeof e&&null!==e&&(e.$$typeof===je||e.$$typeof===Fe||e.$$typeof===Ze||e.$$typeof===Pe||e.$$typeof===We||e.$$typeof===Ye||e.$$typeof===ze||e.$$typeof===He||e.$$typeof===De)},typeOf:Je},_e=Ne((function(e,t){\"production\"!==process.env.NODE_ENV&&function(){var e=\"function\"==typeof Symbol&&Symbol.for,n=e?Symbol.for(\"react.element\"):60103,o=e?Symbol.for(\"react.portal\"):60106,r=e?Symbol.for(\"react.fragment\"):60107,i=e?Symbol.for(\"react.strict_mode\"):60108,a=e?Symbol.for(\"react.profiler\"):60114,s=e?Symbol.for(\"react.provider\"):60109,c=e?Symbol.for(\"react.context\"):60110,u=e?Symbol.for(\"react.async_mode\"):60111,l=e?Symbol.for(\"react.concurrent_mode\"):60111,p=e?Symbol.for(\"react.forward_ref\"):60112,d=e?Symbol.for(\"react.suspense\"):60113,f=e?Symbol.for(\"react.suspense_list\"):60120,g=e?Symbol.for(\"react.memo\"):60115,b=e?Symbol.for(\"react.lazy\"):60116,h=e?Symbol.for(\"react.block\"):60121,m=e?Symbol.for(\"react.fundamental\"):60117,v=e?Symbol.for(\"react.responder\"):60118,I=e?Symbol.for(\"react.scope\"):60119;function y(e){if(\"object\"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:var f=e.type;switch(f){case u:case l:case r:case a:case i:case d:return f;default:var h=f&&f.$$typeof;switch(h){case c:case p:case b:case g:case s:return h;default:return t}}case o:return t}}}var C=u,A=l,x=c,G=s,w=n,O=p,N=r,S=b,V=g,T=o,M=a,B=i,X=d,Z=!1;function P(e){return y(e)===l}t.AsyncMode=C,t.ConcurrentMode=A,t.ContextConsumer=x,t.ContextProvider=G,t.Element=w,t.ForwardRef=O,t.Fragment=N,t.Lazy=S,t.Memo=V,t.Portal=T,t.Profiler=M,t.StrictMode=B,t.Suspense=X,t.isAsyncMode=function(e){return Z||(Z=!0,console.warn(\"The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.\")),P(e)||y(e)===u},t.isConcurrentMode=P,t.isContextConsumer=function(e){return y(e)===c},t.isContextProvider=function(e){return y(e)===s},t.isElement=function(e){return\"object\"==typeof e&&null!==e&&e.$$typeof===n},t.isForwardRef=function(e){return y(e)===p},t.isFragment=function(e){return y(e)===r},t.isLazy=function(e){return y(e)===b},t.isMemo=function(e){return y(e)===g},t.isPortal=function(e){return y(e)===o},t.isProfiler=function(e){return y(e)===a},t.isStrictMode=function(e){return y(e)===i},t.isSuspense=function(e){return y(e)===d},t.isValidElementType=function(e){return\"string\"==typeof e||\"function\"==typeof e||e===r||e===l||e===a||e===i||e===d||e===f||\"object\"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===g||e.$$typeof===s||e.$$typeof===c||e.$$typeof===p||e.$$typeof===m||e.$$typeof===v||e.$$typeof===I||e.$$typeof===h)},t.typeOf=y}()})),$e=Ne((function(e){\"production\"===process.env.NODE_ENV?e.exports=Qe:e.exports=_e})),Ke={};Ke[$e.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},Ke[$e.Memo]={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0};var qe=\"undefined\"!=typeof document;function et(e,t,n){var o=\"\";return n.split(\" \").forEach((function(n){void 0!==e[n]?t.push(e[n]+\";\"):o+=n+\" \"})),o}var tt=function(e,t,n){var o=e.key+\"-\"+t.name;if((!1===n||!1===qe&&void 0!==e.compat)&&void 0===e.registered[o]&&(e.registered[o]=t.styles),void 0===e.inserted[t.name]){var r=\"\",i=t;do{var a=e.insert(t===i?\".\"+o:\"\",i,e.sheet,!0);qe||void 0===a||(r+=a),i=i.next}while(void 0!==i);if(!qe&&0!==r.length)return r}};var nt={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},ot=\"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\",rt=\"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\",it=/[A-Z]|^ms/g,at=/_EMO_([^_]+?)_([^]*?)_EMO_/g,st=function(e){return 45===e.charCodeAt(1)},ct=function(e){return null!=e&&\"boolean\"!=typeof e},ut=de((function(e){return st(e)?e:e.replace(it,\"-$&\").toLowerCase()})),lt=function(e,t){switch(e){case\"animation\":case\"animationName\":if(\"string\"==typeof t)return t.replace(at,(function(e,t,n){return It={name:t,styles:n,next:It},t}))}return 1===nt[e]||st(e)||\"number\"!=typeof t||0===t?t:t+\"px\"};if(\"production\"!==process.env.NODE_ENV){var pt=/(attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/,dt=[\"normal\",\"none\",\"initial\",\"inherit\",\"unset\"],ft=lt,gt=/^-ms-/,bt=/-(.)/g,ht={};lt=function(e,t){if(\"content\"===e&&(\"string\"!=typeof t||-1===dt.indexOf(t)&&!pt.test(t)&&(t.charAt(0)!==t.charAt(t.length-1)||'\"'!==t.charAt(0)&&\"'\"!==t.charAt(0))))throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\"+t+\"\\\"'`\");var n=ft(e,t);return\"\"===n||st(e)||-1===e.indexOf(\"-\")||void 0!==ht[e]||(ht[e]=!0,console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \"+e.replace(gt,\"ms-\").replace(bt,(function(e,t){return t.toUpperCase()}))+\"?\")),n}}function mt(e,t,n){if(null==n)return\"\";if(void 0!==n.__emotion_styles){if(\"production\"!==process.env.NODE_ENV&&\"NO_COMPONENT_SELECTOR\"===n.toString())throw new Error(\"Component selectors can only be used in conjunction with @emotion/babel-plugin.\");return n}switch(typeof n){case\"boolean\":return\"\";case\"object\":if(1===n.anim)return It={name:n.name,styles:n.styles,next:It},n.name;if(void 0!==n.styles){var o=n.next;if(void 0!==o)for(;void 0!==o;)It={name:o.name,styles:o.styles,next:It},o=o.next;var r=n.styles+\";\";return\"production\"!==process.env.NODE_ENV&&void 0!==n.map&&(r+=n.map),r}return function(e,t,n){var o=\"\";if(Array.isArray(n))for(var r=0;r<n.length;r++)o+=mt(e,t,n[r])+\";\";else for(var i in n){var a=n[i];if(\"object\"!=typeof a)null!=t&&void 0!==t[a]?o+=i+\"{\"+t[a]+\"}\":ct(a)&&(o+=ut(i)+\":\"+lt(i,a)+\";\");else{if(\"NO_COMPONENT_SELECTOR\"===i&&\"production\"!==process.env.NODE_ENV)throw new Error(\"Component selectors can only be used in conjunction with @emotion/babel-plugin.\");if(!Array.isArray(a)||\"string\"!=typeof a[0]||null!=t&&void 0!==t[a[0]]){var s=mt(e,t,a);switch(i){case\"animation\":case\"animationName\":o+=ut(i)+\":\"+s+\";\";break;default:\"production\"!==process.env.NODE_ENV&&\"undefined\"===i&&console.error(rt),o+=i+\"{\"+s+\"}\"}}else for(var c=0;c<a.length;c++)ct(a[c])&&(o+=ut(i)+\":\"+lt(i,a[c])+\";\")}}return o}(e,t,n);case\"function\":if(void 0!==e){var i=It,a=n(e);return It=i,mt(e,t,a)}\"production\"!==process.env.NODE_ENV&&console.error(\"Functions that are interpolated in css calls will be stringified.\\nIf you want to have a css call based on props, create a function that returns a css call like this\\nlet dynamicStyle = (props) => css`color: ${props.color}`\\nIt can be called directly with props or interpolated in a styled call like this\\nlet SomeComponent = styled('div')`${dynamicStyle}`\");break;case\"string\":if(\"production\"!==process.env.NODE_ENV){var s=[],c=n.replace(at,(function(e,t,n){var o=\"animation\"+s.length;return s.push(\"const \"+o+\" = keyframes`\"+n.replace(/^@keyframes animation-\\w+/,\"\")+\"`\"),\"${\"+o+\"}\"}));s.length&&console.error(\"`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\nInstead of doing this:\\n\\n\"+[].concat(s,[\"`\"+c+\"`\"]).join(\"\\n\")+\"\\n\\nYou should wrap it with `css` like this:\\n\\ncss`\"+c+\"`\")}}if(null==t)return n;var u=t[n];return void 0!==u?u:n}var vt,It,yt=/label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\"production\"!==process.env.NODE_ENV&&(vt=/\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g);var Ct=function(e,t,n){if(1===e.length&&\"object\"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var o=!0,r=\"\";It=void 0;var i,a=e[0];null==a||void 0===a.raw?(o=!1,r+=mt(n,t,a)):(\"production\"!==process.env.NODE_ENV&&void 0===a[0]&&console.error(ot),r+=a[0]);for(var s=1;s<e.length;s++)r+=mt(n,t,e[s]),o&&(\"production\"!==process.env.NODE_ENV&&void 0===a[s]&&console.error(ot),r+=a[s]);\"production\"!==process.env.NODE_ENV&&(r=r.replace(vt,(function(e){return i=e,\"\"}))),yt.lastIndex=0;for(var c,u=\"\";null!==(c=yt.exec(r));)u+=\"-\"+c[1];var l=function(e){for(var t,n=0,o=0,r=e.length;r>=4;++o,r-=4)t=1540483477*(65535&(t=255&e.charCodeAt(o)|(255&e.charCodeAt(++o))<<8|(255&e.charCodeAt(++o))<<16|(255&e.charCodeAt(++o))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(r){case 3:n^=(255&e.charCodeAt(o+2))<<16;case 2:n^=(255&e.charCodeAt(o+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(o)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(r)+u;return\"production\"!==process.env.NODE_ENV?{name:l,styles:r,map:i,next:It,toString:function(){return\"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"}}:{name:l,styles:r,next:It}},At=\"undefined\"!=typeof document,xt=Object.prototype.hasOwnProperty,Gt=r(\"undefined\"!=typeof HTMLElement?we({key:\"css\"}):null);\"production\"!==process.env.NODE_ENV&&(Gt.displayName=\"EmotionCacheContext\"),Gt.Provider;var wt=function(e){return i((function(n,o){var r=t(Gt);return e(n,r,o)}))};At||(wt=function(e){return function(o){var r=t(Gt);return null===r?(r=we({key:\"css\"}),n(Gt.Provider,{value:r},e(o,r))):e(o,r)}});var Ot=r({});\"production\"!==process.env.NODE_ENV&&(Ot.displayName=\"EmotionThemeContext\");var Nt=\"__EMOTION_TYPE_PLEASE_DO_NOT_USE__\",St=\"__EMOTION_LABEL_PLEASE_DO_NOT_USE__\",Vt=function(e,t){if(\"production\"!==process.env.NODE_ENV&&\"string\"==typeof t.css&&-1!==t.css.indexOf(\":\"))throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\"+t.css+\"`\");var n={};for(var o in t)xt.call(t,o)&&(n[o]=t[o]);if(n[Nt]=e,\"production\"!==process.env.NODE_ENV){var r=new Error;if(r.stack){var i=r.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z0-9$]+) /);i||(i=r.stack.match(/.*\\n([A-Z][A-Za-z0-9$]+)@/)),i&&(n[St]=i[1].replace(/\\$/g,\"-\"))}}return n},Tt=wt((function(e,r,i){var a=e.css;\"string\"==typeof a&&void 0!==r.registered[a]&&(a=r.registered[a]);var s=e[Nt],c=[a],u=\"\";\"string\"==typeof e.className?u=et(r.registered,c,e.className):null!=e.className&&(u=e.className+\" \");var l=Ct(c,void 0,t(Ot));if(\"production\"!==process.env.NODE_ENV&&-1===l.name.indexOf(\"-\")){var p=e[St];p&&(l=Ct([l,\"label:\"+p+\";\"]))}var d=tt(r,l,\"string\"==typeof s);u+=r.key+\"-\"+l.name;var f={};for(var g in e)!xt.call(e,g)||\"css\"===g||g===Nt||\"production\"!==process.env.NODE_ENV&&g===St||(f[g]=e[g]);f.ref=i,f.className=u;var b=n(s,f);if(!At&&void 0!==d){for(var h,m=l.name,v=l.next;void 0!==v;)m+=\" \"+v.name,v=v.next;return n(o,null,n(\"style\",((h={})[\"data-emotion\"]=r.key+\" \"+m,h.dangerouslySetInnerHTML={__html:d},h.nonce=r.sheet.nonce,h)),b)}return b}));\"production\"!==process.env.NODE_ENV&&(Tt.displayName=\"EmotionCssPropInternal\"),Ne((function(e){function t(){return e.exports=t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},e.exports.default=e.exports,e.exports.__esModule=!0,t.apply(this,arguments)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0}));var Mt=function(e,t){var o=arguments;if(null==t||!xt.call(t,\"css\"))return n.apply(void 0,o);var r=o.length,i=new Array(r);i[0]=Tt,i[1]=Vt(e,t);for(var a=2;a<r;a++)i[a]=o[a];return n.apply(null,i)},Bt=!1,Xt=wt((function(e,o){\"production\"===process.env.NODE_ENV||Bt||!e.className&&!e.css||(console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\"),Bt=!0);var r=e.styles,i=Ct([r],void 0,t(Ot));if(!At){for(var c,u=i.name,l=i.styles,p=i.next;void 0!==p;)u+=\" \"+p.name,l+=p.styles,p=p.next;var d=!0===o.compat,f=o.insert(\"\",{name:u,styles:l},o.sheet,d);return d?null:n(\"style\",((c={})[\"data-emotion\"]=o.key+\"-global \"+u,c.dangerouslySetInnerHTML={__html:f},c.nonce=o.sheet.nonce,c))}var g=a();return s((function(){var e=o.key+\"-global\",t=new C({key:e,nonce:o.sheet.nonce,container:o.sheet.container,speedy:o.sheet.isSpeedy}),n=!1,r=document.querySelector('style[data-emotion=\"'+e+\" \"+i.name+'\"]');return o.sheet.tags.length&&(t.before=o.sheet.tags[0]),null!==r&&(n=!0,r.setAttribute(\"data-emotion\",e),t.hydrate([r])),g.current=[t,n],function(){t.flush()}}),[o]),s((function(){var e=g.current,t=e[0];if(e[1])e[1]=!1;else{if(void 0!==i.next&&tt(o,i.next,!0),t.tags.length){var n=t.tags[t.tags.length-1].nextElementSibling;t.before=n,t.flush()}o.insert(\"\",i,t,!1)}}),[o,i.name]),null}));function Zt(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return Ct(t)}\"production\"!==process.env.NODE_ENV&&(Xt.displayName=\"EmotionGlobal\");var Pt=function e(t){for(var n=t.length,o=0,r=\"\";o<n;o++){var i=t[o];if(null!=i){var a=void 0;switch(typeof i){case\"boolean\":break;case\"object\":if(Array.isArray(i))a=e(i);else for(var s in\"production\"!==process.env.NODE_ENV&&void 0!==i.styles&&void 0!==i.name&&console.error(\"You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.\"),a=\"\",i)i[s]&&s&&(a&&(a+=\" \"),a+=s);break;default:a=i}a&&(r&&(r+=\" \"),r+=a)}}return r};function Lt(e,t,n){var o=[],r=et(e,o,n);return o.length<2?n:r+t(o)}var Et=wt((function(e,r){var i,a=\"\",s=\"\",c=!1,u=function(){if(c&&\"production\"!==process.env.NODE_ENV)throw new Error(\"css can only be used during render\");for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var o=Ct(t,r.registered);if(At)tt(r,o,!1);else{var i=tt(r,o,!1);void 0!==i&&(a+=i)}return At||(s+=\" \"+o.name),r.key+\"-\"+o.name},l={css:u,cx:function(){if(c&&\"production\"!==process.env.NODE_ENV)throw new Error(\"cx can only be used during render\");for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return Lt(r.registered,u,Pt(t))},theme:t(Ot)},p=e.children(l);return c=!0,At||0===a.length?p:n(o,null,n(\"style\",((i={})[\"data-emotion\"]=r.key+\" \"+s.substring(1),i.dangerouslySetInnerHTML={__html:a},i.nonce=r.sheet.nonce,i)),p)}));if(\"production\"!==process.env.NODE_ENV&&(Et.displayName=\"EmotionClassNames\"),\"production\"!==process.env.NODE_ENV){var Wt=\"undefined\"!=typeof document,kt=\"undefined\"!=typeof jest;if(Wt&&!kt){var Rt=Wt?window:global,Ft=\"__EMOTION_REACT_\"+\"11.4.1\".split(\".\")[0]+\"__\";Rt[Ft]&&console.warn(\"You are loading @emotion/react when it is already loaded. Running multiple instances may cause problems. This can happen if multiple versions are used, or if multiple builds of the same version are used.\"),Rt[Ft]=!0}}function jt(e){return(jt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/var Dt=Object.getOwnPropertySymbols,Yt=Object.prototype.hasOwnProperty,zt=Object.prototype.propertyIsEnumerable;function Ht(e){if(null==e)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(e)}var Jt=function(){try{if(!Object.assign)return!1;var e=new String(\"abc\");if(e[5]=\"de\",\"5\"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t[\"_\"+String.fromCharCode(n)]=n;if(\"0123456789\"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(\"\"))return!1;var o={};return\"abcdefghijklmnopqrst\".split(\"\").forEach((function(e){o[e]=e})),\"abcdefghijklmnopqrst\"===Object.keys(Object.assign({},o)).join(\"\")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,o,r=Ht(e),i=1;i<arguments.length;i++){for(var a in n=Object(arguments[i]))Yt.call(n,a)&&(r[a]=n[a]);if(Dt){o=Dt(n);for(var s=0;s<o.length;s++)zt.call(n,o[s])&&(r[o[s]]=n[o[s]])}}return r},Ut=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\",Qt=function(){};if(\"production\"!==process.env.NODE_ENV){var _t=Ut,$t={},Kt=Function.call.bind(Object.prototype.hasOwnProperty);Qt=function(e){var t=\"Warning: \"+e;\"undefined\"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}}}function qt(e,t,n,o,r){if(\"production\"!==process.env.NODE_ENV)for(var i in e)if(Kt(e,i)){var a;try{if(\"function\"!=typeof e[i]){var s=Error((o||\"React class\")+\": \"+n+\" type `\"+i+\"` is invalid; it must be a function, usually from the `prop-types` package, but received `\"+typeof e[i]+\"`.\");throw s.name=\"Invariant Violation\",s}a=e[i](t,i,o,n,null,_t)}catch(e){a=e}if(!a||a instanceof Error||Qt((o||\"React class\")+\": type specification of \"+n+\" `\"+i+\"` is invalid; the type checker function must return `null` or an `Error` but returned a \"+typeof a+\". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\"),a instanceof Error&&!(a.message in $t)){$t[a.message]=!0;var c=r?r():\"\";Qt(\"Failed \"+n+\" type: \"+a.message+(null!=c?c:\"\"))}}}qt.resetWarningCache=function(){\"production\"!==process.env.NODE_ENV&&($t={})};var en=qt,tn=Function.call.bind(Object.prototype.hasOwnProperty),nn=function(){};function on(){return null}\"production\"!==process.env.NODE_ENV&&(nn=function(e){var t=\"Warning: \"+e;\"undefined\"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}});var rn=function(e,t){var n=\"function\"==typeof Symbol&&Symbol.iterator;var o=\"<<anonymous>>\",r={array:c(\"array\"),bool:c(\"boolean\"),func:c(\"function\"),number:c(\"number\"),object:c(\"object\"),string:c(\"string\"),symbol:c(\"symbol\"),any:s(on),arrayOf:function(e){return s((function(t,n,o,r,i){if(\"function\"!=typeof e)return new a(\"Property `\"+i+\"` of component `\"+o+\"` has invalid PropType notation inside arrayOf.\");var s=t[n];if(!Array.isArray(s))return new a(\"Invalid \"+r+\" `\"+i+\"` of type `\"+l(s)+\"` supplied to `\"+o+\"`, expected an array.\");for(var c=0;c<s.length;c++){var u=e(s,c,o,r,i+\"[\"+c+\"]\",Ut);if(u instanceof Error)return u}return null}))},element:s((function(t,n,o,r,i){var s=t[n];return e(s)?null:new a(\"Invalid \"+r+\" `\"+i+\"` of type `\"+l(s)+\"` supplied to `\"+o+\"`, expected a single ReactElement.\")})),elementType:s((function(e,t,n,o,r){var i=e[t];return $e.isValidElementType(i)?null:new a(\"Invalid \"+o+\" `\"+r+\"` of type `\"+l(i)+\"` supplied to `\"+n+\"`, expected a single ReactElement type.\")})),instanceOf:function(e){return s((function(t,n,r,i,s){if(!(t[n]instanceof e)){var c=e.name||o;return new a(\"Invalid \"+i+\" `\"+s+\"` of type `\"+(((u=t[n]).constructor&&u.constructor.name?u.constructor.name:o)+\"` supplied to `\")+r+\"`, expected instance of `\"+c+\"`.\")}var u;return null}))},node:s((function(e,t,n,o,r){return u(e[t])?null:new a(\"Invalid \"+o+\" `\"+r+\"` supplied to `\"+n+\"`, expected a ReactNode.\")})),objectOf:function(e){return s((function(t,n,o,r,i){if(\"function\"!=typeof e)return new a(\"Property `\"+i+\"` of component `\"+o+\"` has invalid PropType notation inside objectOf.\");var s=t[n],c=l(s);if(\"object\"!==c)return new a(\"Invalid \"+r+\" `\"+i+\"` of type `\"+c+\"` supplied to `\"+o+\"`, expected an object.\");for(var u in s)if(tn(s,u)){var p=e(s,u,o,r,i+\".\"+u,Ut);if(p instanceof Error)return p}return null}))},oneOf:function(e){if(!Array.isArray(e))return\"production\"!==process.env.NODE_ENV&&nn(arguments.length>1?\"Invalid arguments supplied to oneOf, expected an array, got \"+arguments.length+\" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).\":\"Invalid argument supplied to oneOf, expected an array.\"),on;function t(t,n,o,r,s){for(var c=t[n],u=0;u<e.length;u++)if(i(c,e[u]))return null;var l=JSON.stringify(e,(function(e,t){return\"symbol\"===p(t)?String(t):t}));return new a(\"Invalid \"+r+\" `\"+s+\"` of value `\"+String(c)+\"` supplied to `\"+o+\"`, expected one of \"+l+\".\")}return s(t)},oneOfType:function(e){if(!Array.isArray(e))return\"production\"!==process.env.NODE_ENV&&nn(\"Invalid argument supplied to oneOfType, expected an instance of array.\"),on;for(var t=0;t<e.length;t++){var n=e[t];if(\"function\"!=typeof n)return nn(\"Invalid argument supplied to oneOfType. Expected an array of check functions, but received \"+d(n)+\" at index \"+t+\".\"),on}return s((function(t,n,o,r,i){for(var s=0;s<e.length;s++)if(null==(0,e[s])(t,n,o,r,i,Ut))return null;return new a(\"Invalid \"+r+\" `\"+i+\"` supplied to `\"+o+\"`.\")}))},shape:function(e){return s((function(t,n,o,r,i){var s=t[n],c=l(s);if(\"object\"!==c)return new a(\"Invalid \"+r+\" `\"+i+\"` of type `\"+c+\"` supplied to `\"+o+\"`, expected `object`.\");for(var u in e){var p=e[u];if(p){var d=p(s,u,o,r,i+\".\"+u,Ut);if(d)return d}}return null}))},exact:function(e){return s((function(t,n,o,r,i){var s=t[n],c=l(s);if(\"object\"!==c)return new a(\"Invalid \"+r+\" `\"+i+\"` of type `\"+c+\"` supplied to `\"+o+\"`, expected `object`.\");var u=Jt({},t[n],e);for(var p in u){var d=e[p];if(!d)return new a(\"Invalid \"+r+\" `\"+i+\"` key `\"+p+\"` supplied to `\"+o+\"`.\\nBad object: \"+JSON.stringify(t[n],null,\" \")+\"\\nValid keys: \"+JSON.stringify(Object.keys(e),null,\" \"));var f=d(s,p,o,r,i+\".\"+p,Ut);if(f)return f}return null}))}};function i(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function a(e){this.message=e,this.stack=\"\"}function s(e){if(\"production\"!==process.env.NODE_ENV)var n={},r=0;function i(i,s,c,u,l,p,d){if(u=u||o,p=p||c,d!==Ut){if(t){var f=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types\");throw f.name=\"Invariant Violation\",f}if(\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof console){var g=u+\":\"+c;!n[g]&&r<3&&(nn(\"You are manually calling a React.PropTypes validation function for the `\"+p+\"` prop on `\"+u+\"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.\"),n[g]=!0,r++)}}return null==s[c]?i?null===s[c]?new a(\"The \"+l+\" `\"+p+\"` is marked as required in `\"+u+\"`, but its value is `null`.\"):new a(\"The \"+l+\" `\"+p+\"` is marked as required in `\"+u+\"`, but its value is `undefined`.\"):null:e(s,c,u,l,p)}var s=i.bind(null,!1);return s.isRequired=i.bind(null,!0),s}function c(e){return s((function(t,n,o,r,i,s){var c=t[n];return l(c)!==e?new a(\"Invalid \"+r+\" `\"+i+\"` of type `\"+p(c)+\"` supplied to `\"+o+\"`, expected `\"+e+\"`.\"):null}))}function u(t){switch(typeof t){case\"number\":case\"string\":case\"undefined\":return!0;case\"boolean\":return!t;case\"object\":if(Array.isArray(t))return t.every(u);if(null===t||e(t))return!0;var o=function(e){var t=e&&(n&&e[n]||e[\"@@iterator\"]);if(\"function\"==typeof t)return t}(t);if(!o)return!1;var r,i=o.call(t);if(o!==t.entries){for(;!(r=i.next()).done;)if(!u(r.value))return!1}else for(;!(r=i.next()).done;){var a=r.value;if(a&&!u(a[1]))return!1}return!0;default:return!1}}function l(e){var t=typeof e;return Array.isArray(e)?\"array\":e instanceof RegExp?\"object\":function(e,t){return\"symbol\"===e||!!t&&(\"Symbol\"===t[\"@@toStringTag\"]||\"function\"==typeof Symbol&&t instanceof Symbol)}(t,e)?\"symbol\":t}function p(e){if(null==e)return\"\"+e;var t=l(e);if(\"object\"===t){if(e instanceof Date)return\"date\";if(e instanceof RegExp)return\"regexp\"}return t}function d(e){var t=p(e);switch(t){case\"array\":case\"object\":return\"an \"+t;case\"boolean\":case\"date\":case\"regexp\":return\"a \"+t;default:return t}}return a.prototype=Error.prototype,r.checkPropTypes=en,r.resetWarningCache=en.resetWarningCache,r.PropTypes=r,r};function an(){}function sn(){}sn.resetWarningCache=an;var cn=Ne((function(e){if(\"production\"!==process.env.NODE_ENV){var t=$e;e.exports=rn(t.isElement,!0)}else e.exports=function(){function e(e,t,n,o,r,i){if(i!==Ut){var a=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw a.name=\"Invariant Violation\",a}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:sn,resetWarningCache:an};return n.PropTypes=n,n}()})),un=Oe(Ne((function(t,n){Object.defineProperty(n,\"__esModule\",{value:!0});var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),i=s(e),a=s(cn);function s(e){return e&&e.__esModule?e:{default:e}}var c={position:\"absolute\",top:0,left:0,visibility:\"hidden\",height:0,overflow:\"scroll\",whiteSpace:\"pre\"},u=[\"extraWidth\",\"injectStyles\",\"inputClassName\",\"inputRef\",\"inputStyle\",\"minWidth\",\"onAutosize\",\"placeholderIsMinWidth\"],l=function(e,t){t.style.fontSize=e.fontSize,t.style.fontFamily=e.fontFamily,t.style.fontWeight=e.fontWeight,t.style.fontStyle=e.fontStyle,t.style.letterSpacing=e.letterSpacing,t.style.textTransform=e.textTransform},p=!(\"undefined\"==typeof window||!window.navigator)&&/MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent),d=function(){return p?\"_\"+Math.random().toString(36).substr(2,12):void 0},f=function(t){function n(e){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n);var t=function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e));return t.inputRef=function(e){t.input=e,\"function\"==typeof t.props.inputRef&&t.props.inputRef(e)},t.placeHolderSizerRef=function(e){t.placeHolderSizer=e},t.sizerRef=function(e){t.sizer=e},t.state={inputWidth:e.minWidth,inputId:e.id||d(),prevId:e.id},t}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(n,e.Component),r(n,null,[{key:\"getDerivedStateFromProps\",value:function(e,t){var n=e.id;return n!==t.prevId?{inputId:n||d(),prevId:n}:null}}]),r(n,[{key:\"componentDidMount\",value:function(){this.mounted=!0,this.copyInputStyles(),this.updateInputWidth()}},{key:\"componentDidUpdate\",value:function(e,t){t.inputWidth!==this.state.inputWidth&&\"function\"==typeof this.props.onAutosize&&this.props.onAutosize(this.state.inputWidth),this.updateInputWidth()}},{key:\"componentWillUnmount\",value:function(){this.mounted=!1}},{key:\"copyInputStyles\",value:function(){if(this.mounted&&window.getComputedStyle){var e=this.input&&window.getComputedStyle(this.input);e&&(l(e,this.sizer),this.placeHolderSizer&&l(e,this.placeHolderSizer))}}},{key:\"updateInputWidth\",value:function(){if(this.mounted&&this.sizer&&void 0!==this.sizer.scrollWidth){var e=void 0;e=this.props.placeholder&&(!this.props.value||this.props.value&&this.props.placeholderIsMinWidth)?Math.max(this.sizer.scrollWidth,this.placeHolderSizer.scrollWidth)+2:this.sizer.scrollWidth+2,(e+=\"number\"===this.props.type&&void 0===this.props.extraWidth?16:parseInt(this.props.extraWidth)||0)<this.props.minWidth&&(e=this.props.minWidth),e!==this.state.inputWidth&&this.setState({inputWidth:e})}}},{key:\"getInput\",value:function(){return this.input}},{key:\"focus\",value:function(){this.input.focus()}},{key:\"blur\",value:function(){this.input.blur()}},{key:\"select\",value:function(){this.input.select()}},{key:\"renderStyles\",value:function(){var e=this.props.injectStyles;return p&&e?i.default.createElement(\"style\",{dangerouslySetInnerHTML:{__html:\"input#\"+this.state.inputId+\"::-ms-clear {display: none;}\"}}):null}},{key:\"render\",value:function(){var e=[this.props.defaultValue,this.props.value,\"\"].reduce((function(e,t){return null!=e?e:t})),t=o({},this.props.style);t.display||(t.display=\"inline-block\");var n=o({boxSizing:\"content-box\",width:this.state.inputWidth+\"px\"},this.props.inputStyle),r=function(e,t){var n={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}(this.props,[]);return function(e){u.forEach((function(t){return delete e[t]}))}(r),r.className=this.props.inputClassName,r.id=this.state.inputId,r.style=n,i.default.createElement(\"div\",{className:this.props.className,style:t},this.renderStyles(),i.default.createElement(\"input\",o({},r,{ref:this.inputRef})),i.default.createElement(\"div\",{ref:this.sizerRef,style:c},e),this.props.placeholder?i.default.createElement(\"div\",{ref:this.placeHolderSizerRef,style:c},this.props.placeholder):null)}}]),n}();f.propTypes={className:a.default.string,defaultValue:a.default.any,extraWidth:a.default.oneOfType([a.default.number,a.default.string]),id:a.default.string,injectStyles:a.default.bool,inputClassName:a.default.string,inputRef:a.default.func,inputStyle:a.default.object,minWidth:a.default.oneOfType([a.default.number,a.default.string]),onAutosize:a.default.func,onChange:a.default.func,placeholder:a.default.string,placeholderIsMinWidth:a.default.bool,style:a.default.object,value:a.default.any},f.defaultProps={minWidth:1,injectStyles:!0},n.default=f})));function ln(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function pn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function dn(e,t,n){return t&&pn(e.prototype,t),n&&pn(e,n),e}function fn(e,t){return(fn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function gn(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&fn(e,t)}function bn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function hn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function mn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?hn(Object(n),!0).forEach((function(t){bn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):hn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function vn(e){return(vn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function In(e,t){return!t||\"object\"!=typeof t&&\"function\"!=typeof t?function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e):t}function yn(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,o=vn(e);if(t){var r=vn(this).constructor;n=Reflect.construct(o,arguments,r)}else n=o.apply(this,arguments);return In(this,n)}}var Cn=function(){};function An(e,t){return t?\"-\"===t[0]?e+t:e+\"__\"+t:e}function xn(e,t,n){var o=[n];if(t&&e)for(var r in t)t.hasOwnProperty(r)&&t[r]&&o.push(\"\".concat(An(e,r)));return o.filter((function(e){return e})).map((function(e){return String(e).trim()})).join(\" \")}var Gn=function(e){return Array.isArray(e)?e.filter(Boolean):\"object\"===jt(e)&&null!==e?[e]:[]},wn=function(e){return e.className,e.clearValue,e.cx,e.getStyles,e.getValue,e.hasValue,e.isMulti,e.isRtl,e.options,e.selectOption,e.selectProps,e.setValue,e.theme,mn({},I(e,[\"className\",\"clearValue\",\"cx\",\"getStyles\",\"getValue\",\"hasValue\",\"isMulti\",\"isRtl\",\"options\",\"selectOption\",\"selectProps\",\"setValue\",\"theme\"]))};function On(e){return[document.documentElement,document.body,window].indexOf(e)>-1}function Nn(e){return On(e)?window.pageYOffset:e.scrollTop}function Sn(e,t){On(e)?window.scrollTo(0,t):e.scrollTop=t}function Vn(e,t,n,o){return n*((e=e/o-1)*e*e+1)+t}function Tn(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Cn,r=Nn(e),i=t-r,a=10,s=0;function c(){var t=Vn(s+=a,r,i,n);Sn(e,t),s<n?window.requestAnimationFrame(c):o(e)}c()}function Mn(){try{return document.createEvent(\"TouchEvent\"),!0}catch(e){return!1}}var Bn=!1,Xn={get passive(){return Bn=!0}},Zn=\"undefined\"!=typeof window?window:{};Zn.addEventListener&&Zn.removeEventListener&&(Zn.addEventListener(\"p\",Cn,Xn),Zn.removeEventListener(\"p\",Cn,!1));var Pn=Bn;function Ln(e){var t=e.maxHeight,n=e.menuEl,o=e.minHeight,r=e.placement,i=e.shouldScroll,a=e.isFixedPosition,s=e.theme.spacing,c=function(e){var t=getComputedStyle(e),n=\"absolute\"===t.position,o=/(auto|scroll)/,r=document.documentElement;if(\"fixed\"===t.position)return r;for(var i=e;i=i.parentElement;)if(t=getComputedStyle(i),(!n||\"static\"!==t.position)&&o.test(t.overflow+t.overflowY+t.overflowX))return i;return r}(n),u={placement:\"bottom\",maxHeight:t};if(!n||!n.offsetParent)return u;var l=c.getBoundingClientRect().height,p=n.getBoundingClientRect(),d=p.bottom,f=p.height,g=p.top,b=n.offsetParent.getBoundingClientRect().top,h=window.innerHeight,m=Nn(c),v=parseInt(getComputedStyle(n).marginBottom,10),I=parseInt(getComputedStyle(n).marginTop,10),y=b-I,C=h-g,A=y+m,x=l-m-g,G=d-h+m+v,w=m+g-I,O=160;switch(r){case\"auto\":case\"bottom\":if(C>=f)return{placement:\"bottom\",maxHeight:t};if(x>=f&&!a)return i&&Tn(c,G,O),{placement:\"bottom\",maxHeight:t};if(!a&&x>=o||a&&C>=o)return i&&Tn(c,G,O),{placement:\"bottom\",maxHeight:a?C-v:x-v};if(\"auto\"===r||a){var N=t,S=a?y:A;return S>=o&&(N=Math.min(S-v-s.controlHeight,t)),{placement:\"top\",maxHeight:N}}if(\"bottom\"===r)return i&&Sn(c,G),{placement:\"bottom\",maxHeight:t};break;case\"top\":if(y>=f)return{placement:\"top\",maxHeight:t};if(A>=f&&!a)return i&&Tn(c,w,O),{placement:\"top\",maxHeight:t};if(!a&&A>=o||a&&y>=o){var V=t;return(!a&&A>=o||a&&y>=o)&&(V=a?y-I:A-I),i&&Tn(c,w,O),{placement:\"top\",maxHeight:V}}return{placement:\"bottom\",maxHeight:t};default:throw new Error('Invalid placement provided \"'.concat(r,'\".'))}return u}var En=function(e){return\"auto\"===e?\"bottom\":e},Wn=r({getPortalPlacement:null}),kn=function(e){gn(n,c);var t=yn(n);function n(){var e;ln(this,n);for(var o=arguments.length,r=new Array(o),i=0;i<o;i++)r[i]=arguments[i];return(e=t.call.apply(t,[this].concat(r))).state={maxHeight:e.props.maxMenuHeight,placement:null},e.getPlacement=function(t){var n=e.props,o=n.minMenuHeight,r=n.maxMenuHeight,i=n.menuPlacement,a=n.menuPosition,s=n.menuShouldScrollIntoView,c=n.theme;if(t){var u=\"fixed\"===a,l=Ln({maxHeight:r,menuEl:t,minHeight:o,placement:i,shouldScroll:s&&!u,isFixedPosition:u,theme:c}),p=e.context.getPortalPlacement;p&&p(l),e.setState(l)}},e.getUpdatedProps=function(){var t=e.props.menuPlacement,n=e.state.placement||En(t);return mn(mn({},e.props),{},{placement:n,maxHeight:e.state.maxHeight})},e}return dn(n,[{key:\"render\",value:function(){return(0,this.props.children)({ref:this.getPlacement,placerProps:this.getUpdatedProps()})}}]),n}();kn.contextType=Wn;var Rn=function(e){var t=e.theme,n=t.spacing.baseUnit;return{color:t.colors.neutral40,padding:\"\".concat(2*n,\"px \").concat(3*n,\"px\"),textAlign:\"center\"}},Fn=Rn,jn=Rn,Dn=function(e){var t=e.children,n=e.className,o=e.cx,r=e.getStyles,i=e.innerProps;return Mt(\"div\",v({css:r(\"noOptionsMessage\",e),className:o({\"menu-notice\":!0,\"menu-notice--no-options\":!0},n)},i),t)};Dn.defaultProps={children:\"No options\"};var Yn=function(e){var t=e.children,n=e.className,o=e.cx,r=e.getStyles,i=e.innerProps;return Mt(\"div\",v({css:r(\"loadingMessage\",e),className:o({\"menu-notice\":!0,\"menu-notice--loading\":!0},n)},i),t)};Yn.defaultProps={children:\"Loading...\"};var zn,Hn=function(e){gn(n,c);var t=yn(n);function n(){var e;ln(this,n);for(var o=arguments.length,r=new Array(o),i=0;i<o;i++)r[i]=arguments[i];return(e=t.call.apply(t,[this].concat(r))).state={placement:null},e.getPortalPlacement=function(t){var n=t.placement;n!==En(e.props.menuPlacement)&&e.setState({placement:n})},e}return dn(n,[{key:\"render\",value:function(){var e=this.props,t=e.appendTo,n=e.children,o=e.className,r=e.controlElement,i=e.cx,a=e.innerProps,s=e.menuPlacement,c=e.menuPosition,u=e.getStyles,l=\"fixed\"===c;if(!t&&!l||!r)return null;var p=this.state.placement||En(s),d=function(e){var t=e.getBoundingClientRect();return{bottom:t.bottom,height:t.height,left:t.left,right:t.right,top:t.top,width:t.width}}(r),f=l?0:window.pageYOffset,b=d[p]+f,h=Mt(\"div\",v({css:u(\"menuPortal\",{offset:b,position:c,rect:d}),className:i({\"menu-portal\":!0},o)},a),n);return Mt(Wn.Provider,{value:{getPortalPlacement:this.getPortalPlacement}},t?g(h,t):h)}}]),n}();var Jn,Un,Qn=\"production\"===process.env.NODE_ENV?{name:\"8mmkcg\",styles:\"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0\"}:{name:\"tj5bde-Svg\",styles:\"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;label:Svg;\",map:\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHR5cGUgeyBDb21tb25Qcm9wcywgVGhlbWUgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IFN2ZyA9ICh7IHNpemUsIC4uLnByb3BzIH06IHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk0xNC4zNDggMTQuODQ5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwbC0yLjY1MS0zLjAzMC0yLjY1MSAzLjAyOWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMC0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOSAwLTEuNjk3bDIuNzU4LTMuMTUtMi43NTktMy4xNTJjLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI4IDAtMS42OTdzMS4yMjgtMC40NjkgMS42OTcgMGwyLjY1MiAzLjAzMSAyLjY1MS0zLjAzMWMwLjQ2OS0wLjQ2OSAxLjIyOC0wLjQ2OSAxLjY5NyAwczAuNDY5IDEuMjI5IDAgMS42OTdsLTIuNzU4IDMuMTUyIDIuNzU4IDMuMTVjMC40NjkgMC40NjkgMC40NjkgMS4yMjkgMCAxLjY5OHpcIiAvPlxuICA8L1N2Zz5cbik7XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IGFueSkgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIEluZGljYXRvclByb3BzID0gQ29tbW9uUHJvcHMgJiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuOiBOb2RlLFxuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn07XG5cbmNvbnN0IGJhc2VDU1MgPSAoe1xuICBpc0ZvY3VzZWQsXG4gIHRoZW1lOiB7XG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIGNvbG9ycyxcbiAgfSxcbn06IEluZGljYXRvclByb3BzKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG5cbiAgJzpob3Zlcic6IHtcbiAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnZHJvcGRvd25JbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnY2xlYXJJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudHlwZSBTZXBhcmF0b3JTdGF0ZSA9IHsgaXNEaXNhYmxlZDogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gKHtcbiAgaXNEaXNhYmxlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogQ29tbW9uUHJvcHMgJiBTZXBhcmF0b3JTdGF0ZSkgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgd2lkdGg6IDEsXG59KTtcblxuZXhwb3J0IGNvbnN0IEluZGljYXRvclNlcGFyYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdpbmRpY2F0b3JTZXBhcmF0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KHsgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlIH0sIGNsYXNzTmFtZSl9XG4gICAgLz5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTG9hZGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IGxvYWRpbmdEb3RBbmltYXRpb25zID0ga2V5ZnJhbWVzYFxuICAwJSwgODAlLCAxMDAlIHsgb3BhY2l0eTogMDsgfVxuICA0MCUgeyBvcGFjaXR5OiAxOyB9XG5gO1xuXG5leHBvcnQgY29uc3QgbG9hZGluZ0luZGljYXRvckNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgc2l6ZSxcbiAgdGhlbWU6IHtcbiAgICBjb2xvcnMsXG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICB9LFxufToge1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW4sXG4gIHNpemU6IG51bWJlcixcbiAgdGhlbWU6IFRoZW1lLFxufSkgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgZm9udFNpemU6IHNpemUsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG1hcmdpblJpZ2h0OiBzaXplLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbn0pO1xuXG50eXBlIERvdFByb3BzID0geyBkZWxheTogbnVtYmVyLCBvZmZzZXQ6IGJvb2xlYW4gfTtcbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IERvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiBudWxsLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSWNvblByb3BzID0ge1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn0gJiBDb21tb25Qcm9wcyAmIHtcbiAgICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgICBzaXplOiBudW1iZXIsXG4gIH07XG5leHBvcnQgY29uc3QgTG9hZGluZ0luZGljYXRvciA9IChwcm9wczogTG9hZGluZ0ljb25Qcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcywgaXNSdGwgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2xvYWRpbmdJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2FkaW5nSW5kaWNhdG9yLmRlZmF1bHRQcm9wcyA9IHsgc2l6ZTogNCB9O1xuIl19 */\",toString:function(){return\"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"}},_n=function(e){var t=e.size,n=I(e,[\"size\"]);return Mt(\"svg\",v({height:t,width:t,viewBox:\"0 0 20 20\",\"aria-hidden\":\"true\",focusable:\"false\",css:Qn},n))},$n=function(e){return Mt(_n,v({size:20},e),Mt(\"path\",{d:\"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"}))},Kn=function(e){return Mt(_n,v({size:20},e),Mt(\"path\",{d:\"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"}))},qn=function(e){var t=e.isFocused,n=e.theme,o=n.spacing.baseUnit,r=n.colors;return{label:\"indicatorContainer\",color:t?r.neutral60:r.neutral20,display:\"flex\",padding:2*o,transition:\"color 150ms\",\":hover\":{color:t?r.neutral80:r.neutral40}}},eo=qn,to=qn,no=function(){var e=Zt.apply(void 0,arguments),t=\"animation-\"+e.name;return{name:t,styles:\"@keyframes \"+t+\"{\"+e.styles+\"}\",anim:1,toString:function(){return\"_EMO_\"+this.name+\"_\"+this.styles+\"_EMO_\"}}}(zn||(Jn=[\"\\n 0%, 80%, 100% { opacity: 0; }\\n 40% { opacity: 1; }\\n\"],Un||(Un=Jn.slice(0)),zn=Object.freeze(Object.defineProperties(Jn,{raw:{value:Object.freeze(Un)}})))),oo=function(e){var t=e.delay,n=e.offset;return Mt(\"span\",{css:Zt({animation:\"\".concat(no,\" 1s ease-in-out \").concat(t,\"ms infinite;\"),backgroundColor:\"currentColor\",borderRadius:\"1em\",display:\"inline-block\",marginLeft:n?\"1em\":null,height:\"1em\",verticalAlign:\"top\",width:\"1em\"},\"production\"===process.env.NODE_ENV?\"\":\";label:LoadingDot;\",\"production\"===process.env.NODE_ENV?\"\":\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHR5cGUgeyBDb21tb25Qcm9wcywgVGhlbWUgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IFN2ZyA9ICh7IHNpemUsIC4uLnByb3BzIH06IHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk0xNC4zNDggMTQuODQ5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwbC0yLjY1MS0zLjAzMC0yLjY1MSAzLjAyOWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMC0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOSAwLTEuNjk3bDIuNzU4LTMuMTUtMi43NTktMy4xNTJjLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI4IDAtMS42OTdzMS4yMjgtMC40NjkgMS42OTcgMGwyLjY1MiAzLjAzMSAyLjY1MS0zLjAzMWMwLjQ2OS0wLjQ2OSAxLjIyOC0wLjQ2OSAxLjY5NyAwczAuNDY5IDEuMjI5IDAgMS42OTdsLTIuNzU4IDMuMTUyIDIuNzU4IDMuMTVjMC40NjkgMC40NjkgMC40NjkgMS4yMjkgMCAxLjY5OHpcIiAvPlxuICA8L1N2Zz5cbik7XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IGFueSkgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIEluZGljYXRvclByb3BzID0gQ29tbW9uUHJvcHMgJiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuOiBOb2RlLFxuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn07XG5cbmNvbnN0IGJhc2VDU1MgPSAoe1xuICBpc0ZvY3VzZWQsXG4gIHRoZW1lOiB7XG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIGNvbG9ycyxcbiAgfSxcbn06IEluZGljYXRvclByb3BzKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG5cbiAgJzpob3Zlcic6IHtcbiAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnZHJvcGRvd25JbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnY2xlYXJJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudHlwZSBTZXBhcmF0b3JTdGF0ZSA9IHsgaXNEaXNhYmxlZDogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gKHtcbiAgaXNEaXNhYmxlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogQ29tbW9uUHJvcHMgJiBTZXBhcmF0b3JTdGF0ZSkgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgd2lkdGg6IDEsXG59KTtcblxuZXhwb3J0IGNvbnN0IEluZGljYXRvclNlcGFyYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdpbmRpY2F0b3JTZXBhcmF0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KHsgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlIH0sIGNsYXNzTmFtZSl9XG4gICAgLz5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTG9hZGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IGxvYWRpbmdEb3RBbmltYXRpb25zID0ga2V5ZnJhbWVzYFxuICAwJSwgODAlLCAxMDAlIHsgb3BhY2l0eTogMDsgfVxuICA0MCUgeyBvcGFjaXR5OiAxOyB9XG5gO1xuXG5leHBvcnQgY29uc3QgbG9hZGluZ0luZGljYXRvckNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgc2l6ZSxcbiAgdGhlbWU6IHtcbiAgICBjb2xvcnMsXG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICB9LFxufToge1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW4sXG4gIHNpemU6IG51bWJlcixcbiAgdGhlbWU6IFRoZW1lLFxufSkgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgZm9udFNpemU6IHNpemUsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG1hcmdpblJpZ2h0OiBzaXplLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbn0pO1xuXG50eXBlIERvdFByb3BzID0geyBkZWxheTogbnVtYmVyLCBvZmZzZXQ6IGJvb2xlYW4gfTtcbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IERvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiBudWxsLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSWNvblByb3BzID0ge1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn0gJiBDb21tb25Qcm9wcyAmIHtcbiAgICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgICBzaXplOiBudW1iZXIsXG4gIH07XG5leHBvcnQgY29uc3QgTG9hZGluZ0luZGljYXRvciA9IChwcm9wczogTG9hZGluZ0ljb25Qcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcywgaXNSdGwgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2xvYWRpbmdJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2FkaW5nSW5kaWNhdG9yLmRlZmF1bHRQcm9wcyA9IHsgc2l6ZTogNCB9O1xuIl19 */\")})},ro=function(e){var t=e.className,n=e.cx,o=e.getStyles,r=e.innerProps,i=e.isRtl;return Mt(\"div\",v({css:o(\"loadingIndicator\",e),className:n({indicator:!0,\"loading-indicator\":!0},t)},r),Mt(oo,{delay:0,offset:i}),Mt(oo,{delay:160,offset:!0}),Mt(oo,{delay:320,offset:!i}))};ro.defaultProps={size:4};var io=function(e){return{label:\"input\",background:0,border:0,fontSize:\"inherit\",opacity:e?0:1,outline:0,padding:0,color:\"inherit\"}},ao=function(e){var t=e.children,n=e.innerProps;return Mt(\"div\",n,t)},so=ao,co=ao;var uo=function(e){var t=e.children,n=e.className,o=e.components,r=e.cx,i=e.data,a=e.getStyles,s=e.innerProps,c=e.isDisabled,u=e.removeProps,l=e.selectProps,p=o.Container,d=o.Label,f=o.Remove;return Mt(Et,null,(function(o){var g=o.css,b=o.cx;return Mt(p,{data:i,innerProps:mn({className:b(g(a(\"multiValue\",e)),r({\"multi-value\":!0,\"multi-value--is-disabled\":c},n))},s),selectProps:l},Mt(d,{data:i,innerProps:{className:b(g(a(\"multiValueLabel\",e)),r({\"multi-value__label\":!0},n))},selectProps:l},t),Mt(f,{data:i,innerProps:mn({className:b(g(a(\"multiValueRemove\",e)),r({\"multi-value__remove\":!0},n))},u),selectProps:l}))}))};uo.defaultProps={cropWithEllipsis:!0};var lo={ClearIndicator:function(e){var t=e.children,n=e.className,o=e.cx,r=e.getStyles,i=e.innerProps;return Mt(\"div\",v({css:r(\"clearIndicator\",e),className:o({indicator:!0,\"clear-indicator\":!0},n)},i),t||Mt($n,null))},Control:function(e){var t=e.children,n=e.cx,o=e.getStyles,r=e.className,i=e.isDisabled,a=e.isFocused,s=e.innerRef,c=e.innerProps,u=e.menuIsOpen;return Mt(\"div\",v({ref:s,css:o(\"control\",e),className:n({control:!0,\"control--is-disabled\":i,\"control--is-focused\":a,\"control--menu-is-open\":u},r)},c),t)},DropdownIndicator:function(e){var t=e.children,n=e.className,o=e.cx,r=e.getStyles,i=e.innerProps;return Mt(\"div\",v({css:r(\"dropdownIndicator\",e),className:o({indicator:!0,\"dropdown-indicator\":!0},n)},i),t||Mt(Kn,null))},DownChevron:Kn,CrossIcon:$n,Group:function(e){var t=e.children,n=e.className,o=e.cx,r=e.getStyles,i=e.Heading,a=e.headingProps,s=e.innerProps,c=e.label,u=e.theme,l=e.selectProps;return Mt(\"div\",v({css:r(\"group\",e),className:o({group:!0},n)},s),Mt(i,v({},a,{selectProps:l,theme:u,getStyles:r,cx:o}),c),Mt(\"div\",null,t))},GroupHeading:function(e){var t=e.getStyles,n=e.cx,o=e.className,r=wn(e);r.data;var i=I(r,[\"data\"]);return Mt(\"div\",v({css:t(\"groupHeading\",e),className:n({\"group-heading\":!0},o)},i))},IndicatorsContainer:function(e){var t=e.children,n=e.className,o=e.cx,r=e.innerProps,i=e.getStyles;return Mt(\"div\",v({css:i(\"indicatorsContainer\",e),className:o({indicators:!0},n)},r),t)},IndicatorSeparator:function(e){var t=e.className,n=e.cx,o=e.getStyles,r=e.innerProps;return Mt(\"span\",v({},r,{css:o(\"indicatorSeparator\",e),className:n({\"indicator-separator\":!0},t)}))},Input:function(e){var t=e.className,n=e.cx,o=e.getStyles,r=wn(e),i=r.innerRef,a=r.isDisabled,s=r.isHidden,c=I(r,[\"innerRef\",\"isDisabled\",\"isHidden\"]);return Mt(\"div\",{css:o(\"input\",e)},Mt(un,v({className:n({input:!0},t),inputRef:i,inputStyle:io(s),disabled:a},c)))},LoadingIndicator:ro,Menu:function(e){var t=e.children,n=e.className,o=e.cx,r=e.getStyles,i=e.innerRef,a=e.innerProps;return Mt(\"div\",v({css:r(\"menu\",e),className:o({menu:!0},n),ref:i},a),t)},MenuList:function(e){var t=e.children,n=e.className,o=e.cx,r=e.getStyles,i=e.innerProps,a=e.innerRef,s=e.isMulti;return Mt(\"div\",v({css:r(\"menuList\",e),className:o({\"menu-list\":!0,\"menu-list--is-multi\":s},n),ref:a},i),t)},MenuPortal:Hn,LoadingMessage:Yn,NoOptionsMessage:Dn,MultiValue:uo,MultiValueContainer:so,MultiValueLabel:co,MultiValueRemove:function(e){var t=e.children,n=e.innerProps;return Mt(\"div\",n,t||Mt($n,{size:14}))},Option:function(e){var t=e.children,n=e.className,o=e.cx,r=e.getStyles,i=e.isDisabled,a=e.isFocused,s=e.isSelected,c=e.innerRef,u=e.innerProps;return Mt(\"div\",v({css:r(\"option\",e),className:o({option:!0,\"option--is-disabled\":i,\"option--is-focused\":a,\"option--is-selected\":s},n),ref:c},u),t)},Placeholder:function(e){var t=e.children,n=e.className,o=e.cx,r=e.getStyles,i=e.innerProps;return Mt(\"div\",v({css:r(\"placeholder\",e),className:o({placeholder:!0},n)},i),t)},SelectContainer:function(e){var t=e.children,n=e.className,o=e.cx,r=e.getStyles,i=e.innerProps,a=e.isDisabled,s=e.isRtl;return Mt(\"div\",v({css:r(\"container\",e),className:o({\"--is-disabled\":a,\"--is-rtl\":s},n)},i),t)},SingleValue:function(e){var t=e.children,n=e.className,o=e.cx,r=e.getStyles,i=e.isDisabled,a=e.innerProps;return Mt(\"div\",v({css:r(\"singleValue\",e),className:o({\"single-value\":!0,\"single-value--is-disabled\":i},n)},a),t)},ValueContainer:function(e){var t=e.children,n=e.className,o=e.cx,r=e.innerProps,i=e.isMulti,a=e.getStyles,s=e.hasValue;return Mt(\"div\",v({css:a(\"valueContainer\",e),className:o({\"value-container\":!0,\"value-container--is-multi\":i,\"value-container--has-value\":s},n)},r),t)}};function po(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function fo(e){return function(e){if(Array.isArray(e))return po(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||function(e,t){if(e){if(\"string\"==typeof e)return po(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?po(e,t):void 0}}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}var go=Number.isNaN||function(e){return\"number\"==typeof e&&e!=e};function bo(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(o=e[n],r=t[n],!(o===r||go(o)&&go(r)))return!1;var o,r;return!0}for(var ho=\"production\"===process.env.NODE_ENV?{name:\"7pg0cj-a11yText\",styles:\"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap\"}:{name:\"1f43avz-a11yText-A11yText\",styles:\"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;\",map:\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFJIiwiZmlsZSI6IkExMXlUZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgdHlwZSBFbGVtZW50Q29uZmlnIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG4vLyBBc3Npc3RpdmUgdGV4dCB0byBkZXNjcmliZSB2aXN1YWwgZWxlbWVudHMuIEhpZGRlbiBmb3Igc2lnaHRlZCB1c2Vycy5cbmNvbnN0IEExMXlUZXh0ID0gKHByb3BzOiBFbGVtZW50Q29uZmlnPCdzcGFuJz4pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */\",toString:function(){return\"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"}},mo=function(e){return Mt(\"span\",v({css:ho},e))},vo={guidance:function(e){var t=e.isSearchable,n=e.isMulti,o=e.isDisabled,r=e.tabSelectsValue;switch(e.context){case\"menu\":return\"Use Up and Down to choose options\".concat(o?\"\":\", press Enter to select the currently focused option\",\", press Escape to exit the menu\").concat(r?\", press Tab to select the option and exit the menu\":\"\",\".\");case\"input\":return\"\".concat(e[\"aria-label\"]||\"Select\",\" is focused \").concat(t?\",type to refine list\":\"\",\", press Down to open the menu, \").concat(n?\" press left to focus selected values\":\"\");case\"value\":return\"Use left and right to toggle between focused values, press Backspace to remove the currently focused value\";default:return\"\"}},onChange:function(e){var t=e.action,n=e.label,o=void 0===n?\"\":n,r=e.isDisabled;switch(t){case\"deselect-option\":case\"pop-value\":case\"remove-value\":return\"option \".concat(o,\", deselected.\");case\"select-option\":return\"option \".concat(o,r?\" is disabled. Select another option.\":\", selected.\");default:return\"\"}},onFocus:function(e){var t=e.context,n=e.focused,o=void 0===n?{}:n,r=e.options,i=e.label,a=void 0===i?\"\":i,s=e.selectValue,c=e.isDisabled,u=e.isSelected,l=function(e,t){return e&&e.length?\"\".concat(e.indexOf(t)+1,\" of \").concat(e.length):\"\"};if(\"value\"===t&&s)return\"value \".concat(a,\" focused, \").concat(l(s,o),\".\");if(\"menu\"===t){var p=c?\" disabled\":\"\",d=\"\".concat(u?\"selected\":\"focused\").concat(p);return\"option \".concat(a,\" \").concat(d,\", \").concat(l(r,o),\".\")}return\"\"},onFilter:function(e){var t=e.inputValue,n=e.resultsMessage;return\"\".concat(n).concat(t?\" for search term \"+t:\"\",\".\")}},Io=function(t){var n=t.ariaSelection,o=t.focusedOption,r=t.focusedValue,i=t.focusableOptions,a=t.isFocused,s=t.selectValue,c=t.selectProps,l=c.ariaLiveMessages,p=c.getOptionLabel,d=c.inputValue,f=c.isMulti,g=c.isOptionDisabled,b=c.isSearchable,h=c.menuIsOpen,m=c.options,v=c.screenReaderStatus,I=c.tabSelectsValue,y=c[\"aria-label\"],C=c[\"aria-live\"],A=u((function(){return mn(mn({},vo),l||{})}),[l]),x=u((function(){var e,t=\"\";if(n&&A.onChange){var o=n.option,r=n.removedValue,i=n.value,a=r||o||(e=i,Array.isArray(e)?null:e),s=mn({isDisabled:a&&g(a),label:a?p(a):\"\"},n);t=A.onChange(s)}return t}),[n,g,p,A]),G=u((function(){var e=\"\",t=o||r,n=!!(o&&s&&s.includes(o));if(t&&A.onFocus){var i={focused:t,label:p(t),isDisabled:g(t),isSelected:n,options:m,context:t===o?\"menu\":\"value\",selectValue:s};e=A.onFocus(i)}return e}),[o,r,p,g,A,m,s]),w=u((function(){var e=\"\";if(h&&m.length&&A.onFilter){var t=v({count:i.length});e=A.onFilter({inputValue:d,resultsMessage:t})}return e}),[i,d,h,A,m,v]),O=u((function(){var e=\"\";if(A.guidance){var t=r?\"value\":h?\"menu\":\"input\";e=A.guidance({\"aria-label\":y,context:t,isDisabled:o&&g(o),isMulti:f,isSearchable:b,tabSelectsValue:I})}return e}),[y,o,r,f,g,b,h,A,I]),N=\"\".concat(G,\" \").concat(w,\" \").concat(O);return Mt(mo,{\"aria-live\":C,\"aria-atomic\":\"false\",\"aria-relevant\":\"additions text\"},a&&Mt(e.Fragment,null,Mt(\"span\",{id:\"aria-selection\"},x),Mt(\"span\",{id:\"aria-context\"},N)))},yo=[{base:\"A\",letters:\"AⒶAÀÃÃ‚áº¦áº¤áºªáº¨ÃƒÄ€Ä‚áº°áº®áº´áº²È¦Ç Ã„Çžáº¢Ã…ÇºÇȀȂẠẬẶḀĄȺⱯ\"},{base:\"AA\",letters:\"Ꜳ\"},{base:\"AE\",letters:\"ÆǼǢ\"},{base:\"AO\",letters:\"Ꜵ\"},{base:\"AU\",letters:\"Ꜷ\"},{base:\"AV\",letters:\"ꜸꜺ\"},{base:\"AY\",letters:\"Ꜽ\"},{base:\"B\",letters:\"BⒷBḂḄḆɃƂÆ\"},{base:\"C\",letters:\"CⒸCĆĈĊČÇḈƇȻꜾ\"},{base:\"D\",letters:\"DⒹDḊĎḌá¸á¸’ḎÄƋƊƉê¹\"},{base:\"DZ\",letters:\"DZDŽ\"},{base:\"Dz\",letters:\"DzDž\"},{base:\"E\",letters:\"EⒺEÈÉÊỀẾỄỂẼĒḔḖĔĖËẺĚȄȆẸỆȨḜĘḘḚÆÆŽ\"},{base:\"F\",letters:\"FⒻFḞƑê»\"},{base:\"G\",letters:\"Gâ’¼ï¼§Ç´Äœá¸ ÄžÄ Ç¦Ä¢Ç¤Æ“êž ê½ê¾\"},{base:\"H\",letters:\"HⒽHĤḢḦȞḤḨḪĦⱧⱵêž\"},{base:\"I\",letters:\"IⒾIÌÃÎĨĪĬİÃḮỈÇȈȊỊĮḬƗ\"},{base:\"J\",letters:\"JⒿJĴɈ\"},{base:\"K\",letters:\"KⓀKḰǨḲĶḴƘⱩê€ê‚ê„Ꞣ\"},{base:\"L\",letters:\"Lâ“LĿĹĽḶḸĻḼḺÅȽⱢⱠêˆê†êž€\"},{base:\"LJ\",letters:\"LJ\"},{base:\"Lj\",letters:\"Lj\"},{base:\"M\",letters:\"Mâ“‚ï¼á¸¾á¹€á¹‚ⱮƜ\"},{base:\"N\",letters:\"Nâ“ƒï¼®Ç¸ÅƒÃ‘á¹„Å‡á¹†Å…á¹Šá¹ˆÈ Æêžêž¤\"},{base:\"NJ\",letters:\"ÇŠ\"},{base:\"Nj\",letters:\"Ç‹\"},{base:\"O\",letters:\"OⓄOÒÓÔỒá»á»–ỔÕṌȬṎŌá¹á¹’ŎȮȰÖȪỎÅÇ‘ÈŒÈŽÆ á»œá»šá» á»žá»¢á»Œá»˜ÇªÇ¬Ã˜Ç¾Æ†ÆŸêŠêŒ\"},{base:\"OI\",letters:\"Æ¢\"},{base:\"OO\",letters:\"êŽ\"},{base:\"OU\",letters:\"È¢\"},{base:\"P\",letters:\"PⓅPṔṖƤⱣêê’ê”\"},{base:\"Q\",letters:\"QⓆQê–ê˜ÉŠ\"},{base:\"R\",letters:\"RⓇRŔṘŘÈȒṚṜŖṞɌⱤêšêž¦êž‚\"},{base:\"S\",letters:\"SⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ\"},{base:\"T\",letters:\"TⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ\"},{base:\"TZ\",letters:\"Ꜩ\"},{base:\"U\",letters:\"UⓊUÙÚÛŨṸŪṺŬÜǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ\"},{base:\"V\",letters:\"VⓋVṼṾƲêžÉ…\"},{base:\"VY\",letters:\"ê \"},{base:\"W\",letters:\"WⓌWẀẂŴẆẄẈⱲ\"},{base:\"X\",letters:\"Xâ“XẊẌ\"},{base:\"Y\",letters:\"YⓎYỲÃŶỸȲẎŸỶỴƳɎỾ\"},{base:\"Z\",letters:\"Zâ“ZŹáºÅ»Å½áº’ẔƵȤⱿⱫê¢\"},{base:\"a\",letters:\"aâ“ï½áºšÃ áâầấẫẩãÄăằắẵẳȧǡäǟảåǻǎÈȃạáºáº·á¸Ä…â±¥É\"},{base:\"aa\",letters:\"ꜳ\"},{base:\"ae\",letters:\"æǽǣ\"},{base:\"ao\",letters:\"ꜵ\"},{base:\"au\",letters:\"ꜷ\"},{base:\"av\",letters:\"ꜹꜻ\"},{base:\"ay\",letters:\"ꜽ\"},{base:\"b\",letters:\"bⓑbḃḅḇƀƃɓ\"},{base:\"c\",letters:\"cⓒcćĉċÄçḉƈȼꜿↄ\"},{base:\"d\",letters:\"dⓓdḋÄá¸á¸‘ḓá¸Ä‘ƌɖɗêº\"},{base:\"dz\",letters:\"dzdž\"},{base:\"e\",letters:\"eⓔeèéêá»áº¿á»…ểẽēḕḗĕėëẻěȅȇẹệȩá¸Ä™á¸™á¸›É‡É›Ç\"},{base:\"f\",letters:\"fⓕfḟƒê¼\"},{base:\"g\",letters:\"gⓖgǵÄá¸¡ÄŸÄ¡Ç§Ä£Ç¥É êž¡áµ¹ê¿\"},{base:\"h\",letters:\"hⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ\"},{base:\"hv\",letters:\"Æ•\"},{base:\"i\",letters:\"iⓘiìÃîĩīÄïḯỉÇȉȋịįá¸É¨Ä±\"},{base:\"j\",letters:\"jⓙjĵǰɉ\"},{base:\"k\",letters:\"kⓚkḱǩḳķḵƙⱪêêƒê…ꞣ\"},{base:\"l\",letters:\"lⓛlŀĺľḷḹļḽḻſłƚɫⱡê‰êžê‡\"},{base:\"lj\",letters:\"lj\"},{base:\"m\",letters:\"mâ“œï½á¸¿á¹á¹ƒÉ±É¯\"},{base:\"n\",letters:\"nâ“nǹńñṅňṇņṋṉƞɲʼnꞑꞥ\"},{base:\"nj\",letters:\"ÇŒ\"},{base:\"o\",letters:\"oâ“žï½Ã²Ã³Ã´á»“ốỗổõá¹Èá¹ÅṑṓÅȯȱöȫá»Å‘Ç’ÈÈÆ¡á»á»›á»¡á»Ÿá»£á»á»™Ç«Çøǿɔê‹êɵ\"},{base:\"oi\",letters:\"Æ£\"},{base:\"ou\",letters:\"È£\"},{base:\"oo\",letters:\"ê\"},{base:\"p\",letters:\"pâ“Ÿï½á¹•á¹—ƥᵽê‘ê“ê•\"},{base:\"q\",letters:\"qⓠqɋê—ê™\"},{base:\"r\",letters:\"rⓡrŕṙřȑȓṛá¹Å—ṟÉɽê›êž§êžƒ\"},{base:\"s\",letters:\"sⓢsßśṥÅṡšṧṣṩșşȿꞩꞅẛ\"},{base:\"t\",letters:\"tⓣtṫẗťá¹È›Å£á¹±á¹¯Å§Æʈⱦꞇ\"},{base:\"tz\",letters:\"ꜩ\"},{base:\"u\",letters:\"uⓤuùúûũṹūṻÅüǜǘǖǚủůűǔȕȗưừứữá»á»±á»¥á¹³Å³á¹·á¹µÊ‰\"},{base:\"v\",letters:\"vⓥvṽṿʋêŸÊŒ\"},{base:\"vy\",letters:\"ê¡\"},{base:\"w\",letters:\"wⓦwáºáºƒÅµáº‡áº…ẘẉⱳ\"},{base:\"x\",letters:\"xⓧxẋáº\"},{base:\"y\",letters:\"yⓨyỳýŷỹȳáºÃ¿á»·áº™á»µÆ´Éỿ\"},{base:\"z\",letters:\"zⓩzźẑżžẓẕƶȥɀⱬê£\"}],Co=new RegExp(\"[\"+yo.map((function(e){return e.letters})).join(\"\")+\"]\",\"g\"),Ao={},xo=0;xo<yo.length;xo++)for(var Go=yo[xo],wo=0;wo<Go.letters.length;wo++)Ao[Go.letters[wo]]=Go.base;var Oo=function(e){return e.replace(Co,(function(e){return Ao[e]}))},No=function(e,t){var n;void 0===t&&(t=bo);var o,r=[],i=!1;return function(){for(var a=[],s=0;s<arguments.length;s++)a[s]=arguments[s];return i&&n===this&&t(a,r)||(o=e.apply(this,a),i=!0,n=this,r=a),o}}(Oo),So=function(e){return e.replace(/^\\s+|\\s+$/g,\"\")},Vo=function(e){return\"\".concat(e.label,\" \").concat(e.value)};function To(e){e.in,e.out,e.onExited,e.appear,e.enter,e.exit;var t=e.innerRef;e.emotion;var n=I(e,[\"in\",\"out\",\"onExited\",\"appear\",\"enter\",\"exit\",\"innerRef\",\"emotion\"]);return Mt(\"input\",v({ref:t},n,{css:Zt({label:\"dummyInput\",background:0,border:0,fontSize:\"inherit\",outline:0,padding:0,width:1,color:\"transparent\",left:-100,opacity:0,position:\"relative\",transform:\"scale(0)\"},\"production\"===process.env.NODE_ENV?\"\":\";label:DummyInput;\",\"production\"===process.env.NODE_ENV?\"\":\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJNIiwiZmlsZSI6IkR1bW15SW5wdXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIER1bW15SW5wdXQoe1xuICBpbjogaW5Qcm9wLFxuICBvdXQsXG4gIG9uRXhpdGVkLFxuICBhcHBlYXIsXG4gIGVudGVyLFxuICBleGl0LFxuICBpbm5lclJlZixcbiAgZW1vdGlvbixcbiAgLi4ucHJvcHNcbn06IGFueSkge1xuICByZXR1cm4gKFxuICAgIDxpbnB1dFxuICAgICAgcmVmPXtpbm5lclJlZn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIGNzcz17e1xuICAgICAgICBsYWJlbDogJ2R1bW15SW5wdXQnLFxuICAgICAgICAvLyBnZXQgcmlkIG9mIGFueSBkZWZhdWx0IHN0eWxlc1xuICAgICAgICBiYWNrZ3JvdW5kOiAwLFxuICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgICAgIG91dGxpbmU6IDAsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIC8vIGltcG9ydGFudCEgd2l0aG91dCBgd2lkdGhgIGJyb3dzZXJzIHdvbid0IGFsbG93IGZvY3VzXG4gICAgICAgIHdpZHRoOiAxLFxuXG4gICAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gZGVza3RvcFxuICAgICAgICBjb2xvcjogJ3RyYW5zcGFyZW50JyxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICAgIGxlZnQ6IC0xMDAsXG4gICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSgwKScsXG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG4iXX0= */\")}))}var Mo=[\"boxSizing\",\"height\",\"overflow\",\"paddingRight\",\"position\"],Bo={boxSizing:\"border-box\",overflow:\"hidden\",position:\"relative\",height:\"100%\"};function Xo(e){e.preventDefault()}function Zo(e){e.stopPropagation()}function Po(){var e=this.scrollTop,t=this.scrollHeight,n=e+this.offsetHeight;0===e?this.scrollTop=1:n===t&&(this.scrollTop=e-1)}function Lo(){return\"ontouchstart\"in window||navigator.maxTouchPoints}var Eo=!(\"undefined\"==typeof window||!window.document||!window.document.createElement),Wo=0,ko={capture:!1,passive:!1};var Ro=function(){return document.activeElement&&document.activeElement.blur()},Fo=\"production\"===process.env.NODE_ENV?{name:\"1kfdb0e\",styles:\"position:fixed;left:0;bottom:0;right:0;top:0\"}:{name:\"bp8cua-ScrollManager\",styles:\"position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;\",map:\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0RVIiwiZmlsZSI6IlNjcm9sbE1hbmFnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgUmVhY3QsIHsgdHlwZSBFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZVNjcm9sbENhcHR1cmUgZnJvbSAnLi91c2VTY3JvbGxDYXB0dXJlJztcbmltcG9ydCB1c2VTY3JvbGxMb2NrIGZyb20gJy4vdXNlU2Nyb2xsTG9jayc7XG5cbnR5cGUgUmVmQ2FsbGJhY2s8VD4gPSAoVCB8IG51bGwpID0+IHZvaWQ7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiAoUmVmQ2FsbGJhY2s8SFRNTEVsZW1lbnQ+KSA9PiBFbGVtZW50PCo+LFxuICBsb2NrRW5hYmxlZDogYm9vbGVhbixcbiAgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW4sXG4gIG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MRWxlbWVudD4pID0+IHZvaWQsXG4gIG9uQm90dG9tTGVhdmU/OiAoZXZlbnQ6IFN5bnRoZXRpY0V2ZW50PEhUTUxFbGVtZW50PikgPT4gdm9pZCxcbiAgb25Ub3BBcnJpdmU/OiAoZXZlbnQ6IFN5bnRoZXRpY0V2ZW50PEhUTUxFbGVtZW50PikgPT4gdm9pZCxcbiAgb25Ub3BMZWF2ZT86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB2b2lkLFxufTtcblxuY29uc3QgYmx1clNlbGVjdElucHV0ID0gKCkgPT5cbiAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcih7XG4gIGNoaWxkcmVuLFxuICBsb2NrRW5hYmxlZCxcbiAgY2FwdHVyZUVuYWJsZWQgPSB0cnVlLFxuICBvbkJvdHRvbUFycml2ZSxcbiAgb25Cb3R0b21MZWF2ZSxcbiAgb25Ub3BBcnJpdmUsXG4gIG9uVG9wTGVhdmUsXG59OiBQcm9wcykge1xuICBjb25zdCBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUsXG4gIH0pO1xuICBjb25zdCBzZXRTY3JvbGxMb2NrVGFyZ2V0ID0gdXNlU2Nyb2xsTG9jayh7IGlzRW5hYmxlZDogbG9ja0VuYWJsZWQgfSk7XG5cbiAgY29uc3QgdGFyZ2V0UmVmID0gZWxlbWVudCA9PiB7XG4gICAgc2V0U2Nyb2xsQ2FwdHVyZVRhcmdldChlbGVtZW50KTtcbiAgICBzZXRTY3JvbGxMb2NrVGFyZ2V0KGVsZW1lbnQpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAge2xvY2tFbmFibGVkICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIG9uQ2xpY2s9e2JsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtjaGlsZHJlbih0YXJnZXRSZWYpfVxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICk7XG59XG4iXX0= */\",toString:function(){return\"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"}};function jo(t){var n=t.children,o=t.lockEnabled,r=t.captureEnabled,i=function(e){var t=e.isEnabled,n=e.onBottomArrive,o=e.onBottomLeave,r=e.onTopArrive,i=e.onTopLeave,s=a(!1),c=a(!1),u=a(0),d=a(null),f=l((function(e,t){if(null!==d.current){var a=d.current,u=a.scrollTop,l=a.scrollHeight,p=a.clientHeight,f=d.current,g=t>0,b=l-p-u,h=!1;b>t&&s.current&&(o&&o(e),s.current=!1),g&&c.current&&(i&&i(e),c.current=!1),g&&t>b?(n&&!s.current&&n(e),f.scrollTop=l,h=!0,s.current=!0):!g&&-t>u&&(r&&!c.current&&r(e),f.scrollTop=0,h=!0,c.current=!0),h&&function(e){e.preventDefault(),e.stopPropagation()}(e)}}),[]),g=l((function(e){f(e,e.deltaY)}),[f]),b=l((function(e){u.current=e.changedTouches[0].clientY}),[]),h=l((function(e){var t=u.current-e.changedTouches[0].clientY;f(e,t)}),[f]),m=l((function(e){if(e){var t=!!Pn&&{passive:!1};\"function\"==typeof e.addEventListener&&e.addEventListener(\"wheel\",g,t),\"function\"==typeof e.addEventListener&&e.addEventListener(\"touchstart\",b,t),\"function\"==typeof e.addEventListener&&e.addEventListener(\"touchmove\",h,t)}}),[h,b,g]),v=l((function(e){e&&(\"function\"==typeof e.removeEventListener&&e.removeEventListener(\"wheel\",g,!1),\"function\"==typeof e.removeEventListener&&e.removeEventListener(\"touchstart\",b,!1),\"function\"==typeof e.removeEventListener&&e.removeEventListener(\"touchmove\",h,!1))}),[h,b,g]);return p((function(){if(t){var e=d.current;return m(e),function(){v(e)}}}),[t,m,v]),function(e){d.current=e}}({isEnabled:void 0===r||r,onBottomArrive:t.onBottomArrive,onBottomLeave:t.onBottomLeave,onTopArrive:t.onTopArrive,onTopLeave:t.onTopLeave}),s=function(e){var t=e.isEnabled,n=e.accountForScrollbars,o=void 0===n||n,r=a({}),i=a(null),s=l((function(e){if(Eo){var t=document.body,n=t&&t.style;if(o&&Mo.forEach((function(e){var t=n&&n[e];r.current[e]=t})),o&&Wo<1){var i=parseInt(r.current.paddingRight,10)||0,a=document.body?document.body.clientWidth:0,s=window.innerWidth-a+i||0;Object.keys(Bo).forEach((function(e){var t=Bo[e];n&&(n[e]=t)})),n&&(n.paddingRight=\"\".concat(s,\"px\"))}t&&Lo()&&(t.addEventListener(\"touchmove\",Xo,ko),e&&(e.addEventListener(\"touchstart\",Po,ko),e.addEventListener(\"touchmove\",Zo,ko))),Wo+=1}}),[]),c=l((function(e){if(Eo){var t=document.body,n=t&&t.style;Wo=Math.max(Wo-1,0),o&&Wo<1&&Mo.forEach((function(e){var t=r.current[e];n&&(n[e]=t)})),t&&Lo()&&(t.removeEventListener(\"touchmove\",Xo,ko),e&&(e.removeEventListener(\"touchstart\",Po,ko),e.removeEventListener(\"touchmove\",Zo,ko)))}}),[]);return p((function(){if(t){var e=i.current;return s(e),function(){c(e)}}}),[t,s,c]),function(e){i.current=e}}({isEnabled:o});return Mt(e.Fragment,null,o&&Mt(\"div\",{onClick:Ro,css:Fo}),n((function(e){i(e),s(e)})))}var Do,Yo={clearIndicator:to,container:function(e){var t=e.isDisabled;return{label:\"container\",direction:e.isRtl?\"rtl\":null,pointerEvents:t?\"none\":null,position:\"relative\"}},control:function(e){var t=e.isDisabled,n=e.isFocused,o=e.theme,r=o.colors,i=o.borderRadius,a=o.spacing;return{label:\"control\",alignItems:\"center\",backgroundColor:t?r.neutral5:r.neutral0,borderColor:t?r.neutral10:n?r.primary:r.neutral20,borderRadius:i,borderStyle:\"solid\",borderWidth:1,boxShadow:n?\"0 0 0 1px \".concat(r.primary):null,cursor:\"default\",display:\"flex\",flexWrap:\"wrap\",justifyContent:\"space-between\",minHeight:a.controlHeight,outline:\"0 !important\",position:\"relative\",transition:\"all 100ms\",\"&:hover\":{borderColor:n?r.primary:r.neutral30}}},dropdownIndicator:eo,group:function(e){var t=e.theme.spacing;return{paddingBottom:2*t.baseUnit,paddingTop:2*t.baseUnit}},groupHeading:function(e){var t=e.theme.spacing;return{label:\"group\",color:\"#999\",cursor:\"default\",display:\"block\",fontSize:\"75%\",fontWeight:\"500\",marginBottom:\"0.25em\",paddingLeft:3*t.baseUnit,paddingRight:3*t.baseUnit,textTransform:\"uppercase\"}},indicatorsContainer:function(){return{alignItems:\"center\",alignSelf:\"stretch\",display:\"flex\",flexShrink:0}},indicatorSeparator:function(e){var t=e.isDisabled,n=e.theme,o=n.spacing.baseUnit,r=n.colors;return{label:\"indicatorSeparator\",alignSelf:\"stretch\",backgroundColor:t?r.neutral10:r.neutral20,marginBottom:2*o,marginTop:2*o,width:1}},input:function(e){var t=e.isDisabled,n=e.theme,o=n.spacing,r=n.colors;return{margin:o.baseUnit/2,paddingBottom:o.baseUnit/2,paddingTop:o.baseUnit/2,visibility:t?\"hidden\":\"visible\",color:r.neutral80}},loadingIndicator:function(e){var t=e.isFocused,n=e.size,o=e.theme,r=o.colors,i=o.spacing.baseUnit;return{label:\"loadingIndicator\",color:t?r.neutral60:r.neutral20,display:\"flex\",padding:2*i,transition:\"color 150ms\",alignSelf:\"center\",fontSize:n,lineHeight:1,marginRight:n,textAlign:\"center\",verticalAlign:\"middle\"}},loadingMessage:jn,menu:function(e){var t,n=e.placement,o=e.theme,r=o.borderRadius,i=o.spacing,a=o.colors;return y(t={label:\"menu\"},function(e){return e?{bottom:\"top\",top:\"bottom\"}[e]:\"bottom\"}(n),\"100%\"),y(t,\"backgroundColor\",a.neutral0),y(t,\"borderRadius\",r),y(t,\"boxShadow\",\"0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)\"),y(t,\"marginBottom\",i.menuGutter),y(t,\"marginTop\",i.menuGutter),y(t,\"position\",\"absolute\"),y(t,\"width\",\"100%\"),y(t,\"zIndex\",1),t},menuList:function(e){var t=e.maxHeight,n=e.theme.spacing.baseUnit;return{maxHeight:t,overflowY:\"auto\",paddingBottom:n,paddingTop:n,position:\"relative\",WebkitOverflowScrolling:\"touch\"}},menuPortal:function(e){var t=e.rect,n=e.offset,o=e.position;return{left:t.left,position:o,top:n,width:t.width,zIndex:1}},multiValue:function(e){var t=e.theme,n=t.spacing,o=t.borderRadius;return{label:\"multiValue\",backgroundColor:t.colors.neutral10,borderRadius:o/2,display:\"flex\",margin:n.baseUnit/2,minWidth:0}},multiValueLabel:function(e){var t=e.theme,n=t.borderRadius,o=t.colors,r=e.cropWithEllipsis;return{borderRadius:n/2,color:o.neutral80,fontSize:\"85%\",overflow:\"hidden\",padding:3,paddingLeft:6,textOverflow:r?\"ellipsis\":null,whiteSpace:\"nowrap\"}},multiValueRemove:function(e){var t=e.theme,n=t.spacing,o=t.borderRadius,r=t.colors;return{alignItems:\"center\",borderRadius:o/2,backgroundColor:e.isFocused&&r.dangerLight,display:\"flex\",paddingLeft:n.baseUnit,paddingRight:n.baseUnit,\":hover\":{backgroundColor:r.dangerLight,color:r.danger}}},noOptionsMessage:Fn,option:function(e){var t=e.isDisabled,n=e.isFocused,o=e.isSelected,r=e.theme,i=r.spacing,a=r.colors;return{label:\"option\",backgroundColor:o?a.primary:n?a.primary25:\"transparent\",color:t?a.neutral20:o?a.neutral0:\"inherit\",cursor:\"default\",display:\"block\",fontSize:\"inherit\",padding:\"\".concat(2*i.baseUnit,\"px \").concat(3*i.baseUnit,\"px\"),width:\"100%\",userSelect:\"none\",WebkitTapHighlightColor:\"rgba(0, 0, 0, 0)\",\":active\":{backgroundColor:!t&&(o?a.primary:a.primary50)}}},placeholder:function(e){var t=e.theme,n=t.spacing;return{label:\"placeholder\",color:t.colors.neutral50,marginLeft:n.baseUnit/2,marginRight:n.baseUnit/2,position:\"absolute\",top:\"50%\",transform:\"translateY(-50%)\"}},singleValue:function(e){var t=e.isDisabled,n=e.theme,o=n.spacing,r=n.colors;return{label:\"singleValue\",color:t?r.neutral40:r.neutral80,marginLeft:o.baseUnit/2,marginRight:o.baseUnit/2,maxWidth:\"calc(100% - \".concat(2*o.baseUnit,\"px)\"),overflow:\"hidden\",position:\"absolute\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",top:\"50%\",transform:\"translateY(-50%)\"}},valueContainer:function(e){var t=e.theme.spacing;return{alignItems:\"center\",display:\"flex\",flex:1,flexWrap:\"wrap\",padding:\"\".concat(t.baseUnit/2,\"px \").concat(2*t.baseUnit,\"px\"),WebkitOverflowScrolling:\"touch\",position:\"relative\",overflow:\"hidden\"}}},zo={borderRadius:4,colors:{primary:\"#2684FF\",primary75:\"#4C9AFF\",primary50:\"#B2D4FF\",primary25:\"#DEEBFF\",danger:\"#DE350B\",dangerLight:\"#FFBDAD\",neutral0:\"hsl(0, 0%, 100%)\",neutral5:\"hsl(0, 0%, 95%)\",neutral10:\"hsl(0, 0%, 90%)\",neutral20:\"hsl(0, 0%, 80%)\",neutral30:\"hsl(0, 0%, 70%)\",neutral40:\"hsl(0, 0%, 60%)\",neutral50:\"hsl(0, 0%, 50%)\",neutral60:\"hsl(0, 0%, 40%)\",neutral70:\"hsl(0, 0%, 30%)\",neutral80:\"hsl(0, 0%, 20%)\",neutral90:\"hsl(0, 0%, 10%)\"},spacing:{baseUnit:4,controlHeight:38,menuGutter:8}},Ho={\"aria-live\":\"polite\",backspaceRemovesValue:!0,blurInputOnSelect:Mn(),captureMenuScroll:!Mn(),closeMenuOnSelect:!0,closeMenuOnScroll:!1,components:{},controlShouldRenderValue:!0,escapeClearsValue:!1,filterOption:function(e,t){var n=mn({ignoreCase:!0,ignoreAccents:!0,stringify:Vo,trim:!0,matchFrom:\"any\"},Do),o=n.ignoreCase,r=n.ignoreAccents,i=n.stringify,a=n.trim,s=n.matchFrom,c=a?So(t):t,u=a?So(i(e)):i(e);return o&&(c=c.toLowerCase(),u=u.toLowerCase()),r&&(c=No(c),u=Oo(u)),\"start\"===s?u.substr(0,c.length)===c:u.indexOf(c)>-1},formatGroupLabel:function(e){return e.label},getOptionLabel:function(e){return e.label},getOptionValue:function(e){return e.value},isDisabled:!1,isLoading:!1,isMulti:!1,isRtl:!1,isSearchable:!0,isOptionDisabled:function(e){return!!e.isDisabled},loadingMessage:function(){return\"Loading...\"},maxMenuHeight:300,minMenuHeight:140,menuIsOpen:!1,menuPlacement:\"bottom\",menuPosition:\"absolute\",menuShouldBlockScroll:!1,menuShouldScrollIntoView:!function(){try{return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}catch(e){return!1}}(),noOptionsMessage:function(){return\"No options\"},openMenuOnFocus:!1,openMenuOnClick:!0,options:[],pageSize:5,placeholder:\"Select...\",screenReaderStatus:function(e){var t=e.count;return\"\".concat(t,\" result\").concat(1!==t?\"s\":\"\",\" available\")},styles:{},tabIndex:\"0\",tabSelectsValue:!0};function Jo(e,t,n,o){return{type:\"option\",data:t,isDisabled:qo(e,t,n),isSelected:er(e,t,n),label:$o(e,t),value:Ko(e,t),index:o}}function Uo(e,t){return e.options.map((function(n,o){if(n.options){var r=n.options.map((function(n,o){return Jo(e,n,t,o)})).filter((function(t){return _o(e,t)}));return r.length>0?{type:\"group\",data:n,options:r,index:o}:void 0}var i=Jo(e,n,t,o);return _o(e,i)?i:void 0})).filter((function(e){return!!e}))}function Qo(e){return e.reduce((function(e,t){return\"group\"===t.type?e.push.apply(e,fo(t.options.map((function(e){return e.data})))):e.push(t.data),e}),[])}function _o(e,t){var n=e.inputValue,o=void 0===n?\"\":n,r=t.data,i=t.isSelected,a=t.label,s=t.value;return(!nr(e)||!i)&&tr(e,{label:a,value:s,data:r},o)}var $o=function(e,t){return e.getOptionLabel(t)},Ko=function(e,t){return e.getOptionValue(t)};function qo(e,t,n){return\"function\"==typeof e.isOptionDisabled&&e.isOptionDisabled(t,n)}function er(e,t,n){if(n.indexOf(t)>-1)return!0;if(\"function\"==typeof e.isOptionSelected)return e.isOptionSelected(t,n);var o=Ko(e,t);return n.some((function(t){return Ko(e,t)===o}))}function tr(e,t,n){return!e.filterOption||e.filterOption(t,n)}var nr=function(e){var t=e.hideSelectedOptions,n=e.isMulti;return void 0===t?n:t},or=1,rr=function(t){gn(o,c);var n=yn(o);function o(e){var t;return ln(this,o),(t=n.call(this,e)).state={ariaSelection:null,focusedOption:null,focusedValue:null,inputIsHidden:!1,isFocused:!1,selectValue:[],clearFocusValueOnUpdate:!1,inputIsHiddenAfterUpdate:void 0,prevProps:void 0},t.blockOptionHover=!1,t.isComposing=!1,t.commonProps=void 0,t.initialTouchX=0,t.initialTouchY=0,t.instancePrefix=\"\",t.openAfterFocus=!1,t.scrollToFocusedOptionOnUpdate=!1,t.userIsDragging=void 0,t.controlRef=null,t.getControlRef=function(e){t.controlRef=e},t.focusedOptionRef=null,t.getFocusedOptionRef=function(e){t.focusedOptionRef=e},t.menuListRef=null,t.getMenuListRef=function(e){t.menuListRef=e},t.inputRef=null,t.getInputRef=function(e){t.inputRef=e},t.focus=t.focusInput,t.blur=t.blurInput,t.onChange=function(e,n){var o=t.props,r=o.onChange,i=o.name;n.name=i,t.ariaOnChange(e,n),r(e,n)},t.setValue=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"set-value\",o=arguments.length>2?arguments[2]:void 0,r=t.props,i=r.closeMenuOnSelect,a=r.isMulti;t.onInputChange(\"\",{action:\"set-value\"}),i&&(t.setState({inputIsHiddenAfterUpdate:!a}),t.onMenuClose()),t.setState({clearFocusValueOnUpdate:!0}),t.onChange(e,{action:n,option:o})},t.selectOption=function(e){var n=t.props,o=n.blurInputOnSelect,r=n.isMulti,i=n.name,a=t.state.selectValue,s=r&&t.isOptionSelected(e,a),c=t.isOptionDisabled(e,a);if(s){var u=t.getOptionValue(e);t.setValue(a.filter((function(e){return t.getOptionValue(e)!==u})),\"deselect-option\",e)}else{if(c)return void t.ariaOnChange(e,{action:\"select-option\",name:i});r?t.setValue([].concat(fo(a),[e]),\"select-option\",e):t.setValue(e,\"select-option\")}o&&t.blurInput()},t.removeValue=function(e){var n=t.props.isMulti,o=t.state.selectValue,r=t.getOptionValue(e),i=o.filter((function(e){return t.getOptionValue(e)!==r})),a=n?i:i[0]||null;t.onChange(a,{action:\"remove-value\",removedValue:e}),t.focusInput()},t.clearValue=function(){var e=t.state.selectValue;t.onChange(t.props.isMulti?[]:null,{action:\"clear\",removedValues:e})},t.popValue=function(){var e=t.props.isMulti,n=t.state.selectValue,o=n[n.length-1],r=n.slice(0,n.length-1),i=e?r:r[0]||null;t.onChange(i,{action:\"pop-value\",removedValue:o})},t.getValue=function(){return t.state.selectValue},t.cx=function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];return xn.apply(void 0,[t.props.classNamePrefix].concat(n))},t.getOptionLabel=function(e){return $o(t.props,e)},t.getOptionValue=function(e){return Ko(t.props,e)},t.getStyles=function(e,n){var o=Yo[e](n);o.boxSizing=\"border-box\";var r=t.props.styles[e];return r?r(o,n):o},t.getElementId=function(e){return\"\".concat(t.instancePrefix,\"-\").concat(e)},t.getComponents=function(){return e=t.props,mn(mn({},lo),e.components);var e},t.buildCategorizedOptions=function(){return Uo(t.props,t.state.selectValue)},t.getCategorizedOptions=function(){return t.props.menuIsOpen?t.buildCategorizedOptions():[]},t.buildFocusableOptions=function(){return Qo(t.buildCategorizedOptions())},t.getFocusableOptions=function(){return t.props.menuIsOpen?t.buildFocusableOptions():[]},t.ariaOnChange=function(e,n){t.setState({ariaSelection:mn({value:e},n)})},t.onMenuMouseDown=function(e){0===e.button&&(e.stopPropagation(),e.preventDefault(),t.focusInput())},t.onMenuMouseMove=function(e){t.blockOptionHover=!1},t.onControlMouseDown=function(e){var n=t.props.openMenuOnClick;t.state.isFocused?t.props.menuIsOpen?\"INPUT\"!==e.target.tagName&&\"TEXTAREA\"!==e.target.tagName&&t.onMenuClose():n&&t.openMenu(\"first\"):(n&&(t.openAfterFocus=!0),t.focusInput()),\"INPUT\"!==e.target.tagName&&\"TEXTAREA\"!==e.target.tagName&&e.preventDefault()},t.onDropdownIndicatorMouseDown=function(e){if(!(e&&\"mousedown\"===e.type&&0!==e.button||t.props.isDisabled)){var n=t.props,o=n.isMulti,r=n.menuIsOpen;t.focusInput(),r?(t.setState({inputIsHiddenAfterUpdate:!o}),t.onMenuClose()):t.openMenu(\"first\"),e.preventDefault(),e.stopPropagation()}},t.onClearIndicatorMouseDown=function(e){e&&\"mousedown\"===e.type&&0!==e.button||(t.clearValue(),e.stopPropagation(),t.openAfterFocus=!1,\"touchend\"===e.type?t.focusInput():setTimeout((function(){return t.focusInput()})))},t.onScroll=function(e){\"boolean\"==typeof t.props.closeMenuOnScroll?e.target instanceof HTMLElement&&On(e.target)&&t.props.onMenuClose():\"function\"==typeof t.props.closeMenuOnScroll&&t.props.closeMenuOnScroll(e)&&t.props.onMenuClose()},t.onCompositionStart=function(){t.isComposing=!0},t.onCompositionEnd=function(){t.isComposing=!1},t.onTouchStart=function(e){var n=e.touches,o=n&&n.item(0);o&&(t.initialTouchX=o.clientX,t.initialTouchY=o.clientY,t.userIsDragging=!1)},t.onTouchMove=function(e){var n=e.touches,o=n&&n.item(0);if(o){var r=Math.abs(o.clientX-t.initialTouchX),i=Math.abs(o.clientY-t.initialTouchY);t.userIsDragging=r>5||i>5}},t.onTouchEnd=function(e){t.userIsDragging||(t.controlRef&&!t.controlRef.contains(e.target)&&t.menuListRef&&!t.menuListRef.contains(e.target)&&t.blurInput(),t.initialTouchX=0,t.initialTouchY=0)},t.onControlTouchEnd=function(e){t.userIsDragging||t.onControlMouseDown(e)},t.onClearIndicatorTouchEnd=function(e){t.userIsDragging||t.onClearIndicatorMouseDown(e)},t.onDropdownIndicatorTouchEnd=function(e){t.userIsDragging||t.onDropdownIndicatorMouseDown(e)},t.handleInputChange=function(e){var n=e.currentTarget.value;t.setState({inputIsHiddenAfterUpdate:!1}),t.onInputChange(n,{action:\"input-change\"}),t.props.menuIsOpen||t.onMenuOpen()},t.onInputFocus=function(e){t.props.onFocus&&t.props.onFocus(e),t.setState({inputIsHiddenAfterUpdate:!1,isFocused:!0}),(t.openAfterFocus||t.props.openMenuOnFocus)&&t.openMenu(\"first\"),t.openAfterFocus=!1},t.onInputBlur=function(e){t.menuListRef&&t.menuListRef.contains(document.activeElement)?t.inputRef.focus():(t.props.onBlur&&t.props.onBlur(e),t.onInputChange(\"\",{action:\"input-blur\"}),t.onMenuClose(),t.setState({focusedValue:null,isFocused:!1}))},t.onOptionHover=function(e){t.blockOptionHover||t.state.focusedOption===e||t.setState({focusedOption:e})},t.shouldHideSelectedOptions=function(){return nr(t.props)},t.onKeyDown=function(e){var n=t.props,o=n.isMulti,r=n.backspaceRemovesValue,i=n.escapeClearsValue,a=n.inputValue,s=n.isClearable,c=n.isDisabled,u=n.menuIsOpen,l=n.onKeyDown,p=n.tabSelectsValue,d=n.openMenuOnFocus,f=t.state,g=f.focusedOption,b=f.focusedValue,h=f.selectValue;if(!(c||\"function\"==typeof l&&(l(e),e.defaultPrevented))){switch(t.blockOptionHover=!0,e.key){case\"ArrowLeft\":if(!o||a)return;t.focusValue(\"previous\");break;case\"ArrowRight\":if(!o||a)return;t.focusValue(\"next\");break;case\"Delete\":case\"Backspace\":if(a)return;if(b)t.removeValue(b);else{if(!r)return;o?t.popValue():s&&t.clearValue()}break;case\"Tab\":if(t.isComposing)return;if(e.shiftKey||!u||!p||!g||d&&t.isOptionSelected(g,h))return;t.selectOption(g);break;case\"Enter\":if(229===e.keyCode)break;if(u){if(!g)return;if(t.isComposing)return;t.selectOption(g);break}return;case\"Escape\":u?(t.setState({inputIsHiddenAfterUpdate:!1}),t.onInputChange(\"\",{action:\"menu-close\"}),t.onMenuClose()):s&&i&&t.clearValue();break;case\" \":if(a)return;if(!u){t.openMenu(\"first\");break}if(!g)return;t.selectOption(g);break;case\"ArrowUp\":u?t.focusOption(\"up\"):t.openMenu(\"last\");break;case\"ArrowDown\":u?t.focusOption(\"down\"):t.openMenu(\"first\");break;case\"PageUp\":if(!u)return;t.focusOption(\"pageup\");break;case\"PageDown\":if(!u)return;t.focusOption(\"pagedown\");break;case\"Home\":if(!u)return;t.focusOption(\"first\");break;case\"End\":if(!u)return;t.focusOption(\"last\");break;default:return}e.preventDefault()}},t.instancePrefix=\"react-select-\"+(t.props.instanceId||++or),t.state.selectValue=Gn(e.value),t}return dn(o,[{key:\"componentDidMount\",value:function(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener(\"scroll\",this.onScroll,!0),this.props.autoFocus&&this.focusInput()}},{key:\"componentDidUpdate\",value:function(e){var t,n,o,r,i,a=this.props,s=a.isDisabled,c=a.menuIsOpen,u=this.state.isFocused;(u&&!s&&e.isDisabled||u&&c&&!e.menuIsOpen)&&this.focusInput(),u&&s&&!e.isDisabled&&this.setState({isFocused:!1},this.onMenuClose),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&(t=this.menuListRef,n=this.focusedOptionRef,o=t.getBoundingClientRect(),r=n.getBoundingClientRect(),i=n.offsetHeight/3,r.bottom+i>o.bottom?Sn(t,Math.min(n.offsetTop+n.clientHeight-t.offsetHeight+i,t.scrollHeight)):r.top-i<o.top&&Sn(t,Math.max(n.offsetTop-i,0)),this.scrollToFocusedOptionOnUpdate=!1)}},{key:\"componentWillUnmount\",value:function(){this.stopListeningComposition(),this.stopListeningToTouch(),document.removeEventListener(\"scroll\",this.onScroll,!0)}},{key:\"onMenuOpen\",value:function(){this.props.onMenuOpen()}},{key:\"onMenuClose\",value:function(){this.onInputChange(\"\",{action:\"menu-close\"}),this.props.onMenuClose()}},{key:\"onInputChange\",value:function(e,t){this.props.onInputChange(e,t)}},{key:\"focusInput\",value:function(){this.inputRef&&this.inputRef.focus()}},{key:\"blurInput\",value:function(){this.inputRef&&this.inputRef.blur()}},{key:\"openMenu\",value:function(e){var t=this,n=this.state,o=n.selectValue,r=n.isFocused,i=this.buildFocusableOptions(),a=\"first\"===e?0:i.length-1;if(!this.props.isMulti){var s=i.indexOf(o[0]);s>-1&&(a=s)}this.scrollToFocusedOptionOnUpdate=!(r&&this.menuListRef),this.setState({inputIsHiddenAfterUpdate:!1,focusedValue:null,focusedOption:i[a]},(function(){return t.onMenuOpen()}))}},{key:\"focusValue\",value:function(e){var t=this.state,n=t.selectValue,o=t.focusedValue;if(this.props.isMulti){this.setState({focusedOption:null});var r=n.indexOf(o);o||(r=-1);var i=n.length-1,a=-1;if(n.length){switch(e){case\"previous\":a=0===r?0:-1===r?i:r-1;break;case\"next\":r>-1&&r<i&&(a=r+1)}this.setState({inputIsHidden:-1!==a,focusedValue:n[a]})}}}},{key:\"focusOption\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"first\",t=this.props.pageSize,n=this.state.focusedOption,o=this.getFocusableOptions();if(o.length){var r=0,i=o.indexOf(n);n||(i=-1),\"up\"===e?r=i>0?i-1:o.length-1:\"down\"===e?r=(i+1)%o.length:\"pageup\"===e?(r=i-t)<0&&(r=0):\"pagedown\"===e?(r=i+t)>o.length-1&&(r=o.length-1):\"last\"===e&&(r=o.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:o[r],focusedValue:null})}}},{key:\"getTheme\",value:function(){return this.props.theme?\"function\"==typeof this.props.theme?this.props.theme(zo):mn(mn({},zo),this.props.theme):zo}},{key:\"getCommonProps\",value:function(){var e=this.clearValue,t=this.cx,n=this.getStyles,o=this.getValue,r=this.selectOption,i=this.setValue,a=this.props,s=a.isMulti,c=a.isRtl,u=a.options;return{clearValue:e,cx:t,getStyles:n,getValue:o,hasValue:this.hasValue(),isMulti:s,isRtl:c,options:u,selectOption:r,selectProps:a,setValue:i,theme:this.getTheme()}}},{key:\"hasValue\",value:function(){return this.state.selectValue.length>0}},{key:\"hasOptions\",value:function(){return!!this.getFocusableOptions().length}},{key:\"isClearable\",value:function(){var e=this.props,t=e.isClearable,n=e.isMulti;return void 0===t?n:t}},{key:\"isOptionDisabled\",value:function(e,t){return qo(this.props,e,t)}},{key:\"isOptionSelected\",value:function(e,t){return er(this.props,e,t)}},{key:\"filterOption\",value:function(e,t){return tr(this.props,e,t)}},{key:\"formatOptionLabel\",value:function(e,t){if(\"function\"==typeof this.props.formatOptionLabel){var n=this.props.inputValue,o=this.state.selectValue;return this.props.formatOptionLabel(e,{context:t,inputValue:n,selectValue:o})}return this.getOptionLabel(e)}},{key:\"formatGroupLabel\",value:function(e){return this.props.formatGroupLabel(e)}},{key:\"startListeningComposition\",value:function(){document&&document.addEventListener&&(document.addEventListener(\"compositionstart\",this.onCompositionStart,!1),document.addEventListener(\"compositionend\",this.onCompositionEnd,!1))}},{key:\"stopListeningComposition\",value:function(){document&&document.removeEventListener&&(document.removeEventListener(\"compositionstart\",this.onCompositionStart),document.removeEventListener(\"compositionend\",this.onCompositionEnd))}},{key:\"startListeningToTouch\",value:function(){document&&document.addEventListener&&(document.addEventListener(\"touchstart\",this.onTouchStart,!1),document.addEventListener(\"touchmove\",this.onTouchMove,!1),document.addEventListener(\"touchend\",this.onTouchEnd,!1))}},{key:\"stopListeningToTouch\",value:function(){document&&document.removeEventListener&&(document.removeEventListener(\"touchstart\",this.onTouchStart),document.removeEventListener(\"touchmove\",this.onTouchMove),document.removeEventListener(\"touchend\",this.onTouchEnd))}},{key:\"renderInput\",value:function(){var t=this.props,n=t.isDisabled,o=t.isSearchable,r=t.inputId,i=t.inputValue,a=t.tabIndex,s=t.form,c=this.getComponents().Input,u=this.state.inputIsHidden,l=this.commonProps,p=r||this.getElementId(\"input\"),d={\"aria-autocomplete\":\"list\",\"aria-label\":this.props[\"aria-label\"],\"aria-labelledby\":this.props[\"aria-labelledby\"]};return o?e.createElement(c,v({},l,{autoCapitalize:\"none\",autoComplete:\"off\",autoCorrect:\"off\",id:p,innerRef:this.getInputRef,isDisabled:n,isHidden:u,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,spellCheck:\"false\",tabIndex:a,form:s,type:\"text\",value:i},d)):e.createElement(To,v({id:p,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:Cn,onFocus:this.onInputFocus,readOnly:!0,disabled:n,tabIndex:a,form:s,value:\"\"},d))}},{key:\"renderPlaceholderOrValue\",value:function(){var t=this,n=this.getComponents(),o=n.MultiValue,r=n.MultiValueContainer,i=n.MultiValueLabel,a=n.MultiValueRemove,s=n.SingleValue,c=n.Placeholder,u=this.commonProps,l=this.props,p=l.controlShouldRenderValue,d=l.isDisabled,f=l.isMulti,g=l.inputValue,b=l.placeholder,h=this.state,m=h.selectValue,I=h.focusedValue,y=h.isFocused;if(!this.hasValue()||!p)return g?null:e.createElement(c,v({},u,{key:\"placeholder\",isDisabled:d,isFocused:y}),b);if(f)return m.map((function(n,s){var c=n===I;return e.createElement(o,v({},u,{components:{Container:r,Label:i,Remove:a},isFocused:c,isDisabled:d,key:\"\".concat(t.getOptionValue(n)).concat(s),index:s,removeProps:{onClick:function(){return t.removeValue(n)},onTouchEnd:function(){return t.removeValue(n)},onMouseDown:function(e){e.preventDefault(),e.stopPropagation()}},data:n}),t.formatOptionLabel(n,\"value\"))}));if(g)return null;var C=m[0];return e.createElement(s,v({},u,{data:C,isDisabled:d}),this.formatOptionLabel(C,\"value\"))}},{key:\"renderClearIndicator\",value:function(){var t=this.getComponents().ClearIndicator,n=this.commonProps,o=this.props,r=o.isDisabled,i=o.isLoading,a=this.state.isFocused;if(!this.isClearable()||!t||r||!this.hasValue()||i)return null;var s={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,\"aria-hidden\":\"true\"};return e.createElement(t,v({},n,{innerProps:s,isFocused:a}))}},{key:\"renderLoadingIndicator\",value:function(){var t=this.getComponents().LoadingIndicator,n=this.commonProps,o=this.props,r=o.isDisabled,i=o.isLoading,a=this.state.isFocused;if(!t||!i)return null;return e.createElement(t,v({},n,{innerProps:{\"aria-hidden\":\"true\"},isDisabled:r,isFocused:a}))}},{key:\"renderIndicatorSeparator\",value:function(){var t=this.getComponents(),n=t.DropdownIndicator,o=t.IndicatorSeparator;if(!n||!o)return null;var r=this.commonProps,i=this.props.isDisabled,a=this.state.isFocused;return e.createElement(o,v({},r,{isDisabled:i,isFocused:a}))}},{key:\"renderDropdownIndicator\",value:function(){var t=this.getComponents().DropdownIndicator;if(!t)return null;var n=this.commonProps,o=this.props.isDisabled,r=this.state.isFocused,i={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,\"aria-hidden\":\"true\"};return e.createElement(t,v({},n,{innerProps:i,isDisabled:o,isFocused:r}))}},{key:\"renderMenu\",value:function(){var t=this,n=this.getComponents(),o=n.Group,r=n.GroupHeading,i=n.Menu,a=n.MenuList,s=n.MenuPortal,c=n.LoadingMessage,u=n.NoOptionsMessage,l=n.Option,p=this.commonProps,d=this.state.focusedOption,f=this.props,g=f.captureMenuScroll,b=f.inputValue,h=f.isLoading,m=f.loadingMessage,I=f.minMenuHeight,y=f.maxMenuHeight,C=f.menuIsOpen,A=f.menuPlacement,x=f.menuPosition,G=f.menuPortalTarget,w=f.menuShouldBlockScroll,O=f.menuShouldScrollIntoView,N=f.noOptionsMessage,S=f.onMenuScrollToTop,V=f.onMenuScrollToBottom;if(!C)return null;var T,M=function(n,o){var r=n.type,i=n.data,a=n.isDisabled,s=n.isSelected,c=n.label,u=n.value,f=d===i,g=a?void 0:function(){return t.onOptionHover(i)},b=a?void 0:function(){return t.selectOption(i)},h=\"\".concat(t.getElementId(\"option\"),\"-\").concat(o),m={id:h,onClick:b,onMouseMove:g,onMouseOver:g,tabIndex:-1};return e.createElement(l,v({},p,{innerProps:m,data:i,isDisabled:a,isSelected:s,key:h,label:c,type:r,value:u,isFocused:f,innerRef:f?t.getFocusedOptionRef:void 0}),t.formatOptionLabel(n.data,\"menu\"))};if(this.hasOptions())T=this.getCategorizedOptions().map((function(n){if(\"group\"===n.type){var i=n.data,a=n.options,s=n.index,c=\"\".concat(t.getElementId(\"group\"),\"-\").concat(s),u=\"\".concat(c,\"-heading\");return e.createElement(o,v({},p,{key:c,data:i,options:a,Heading:r,headingProps:{id:u,data:n.data},label:t.formatGroupLabel(n.data)}),n.options.map((function(e){return M(e,\"\".concat(s,\"-\").concat(e.index))})))}if(\"option\"===n.type)return M(n,\"\".concat(n.index))}));else if(h){var B=m({inputValue:b});if(null===B)return null;T=e.createElement(c,p,B)}else{var X=N({inputValue:b});if(null===X)return null;T=e.createElement(u,p,X)}var Z={minMenuHeight:I,maxMenuHeight:y,menuPlacement:A,menuPosition:x,menuShouldScrollIntoView:O},P=e.createElement(kn,v({},p,Z),(function(n){var o=n.ref,r=n.placerProps,s=r.placement,c=r.maxHeight;return e.createElement(i,v({},p,Z,{innerRef:o,innerProps:{onMouseDown:t.onMenuMouseDown,onMouseMove:t.onMenuMouseMove},isLoading:h,placement:s}),e.createElement(jo,{captureEnabled:g,onTopArrive:S,onBottomArrive:V,lockEnabled:w},(function(n){return e.createElement(a,v({},p,{innerRef:function(e){t.getMenuListRef(e),n(e)},isLoading:h,maxHeight:c,focusedOption:d}),T)})))}));return G||\"fixed\"===x?e.createElement(s,v({},p,{appendTo:G,controlElement:this.controlRef,menuPlacement:A,menuPosition:x}),P):P}},{key:\"renderFormField\",value:function(){var t=this,n=this.props,o=n.delimiter,r=n.isDisabled,i=n.isMulti,a=n.name,s=this.state.selectValue;if(a&&!r){if(i){if(o){var c=s.map((function(e){return t.getOptionValue(e)})).join(o);return e.createElement(\"input\",{name:a,type:\"hidden\",value:c})}var u=s.length>0?s.map((function(n,o){return e.createElement(\"input\",{key:\"i-\".concat(o),name:a,type:\"hidden\",value:t.getOptionValue(n)})})):e.createElement(\"input\",{name:a,type:\"hidden\"});return e.createElement(\"div\",null,u)}var l=s[0]?this.getOptionValue(s[0]):\"\";return e.createElement(\"input\",{name:a,type:\"hidden\",value:l})}}},{key:\"renderLiveRegion\",value:function(){var t=this.commonProps,n=this.state,o=n.ariaSelection,r=n.focusedOption,i=n.focusedValue,a=n.isFocused,s=n.selectValue,c=this.getFocusableOptions();return e.createElement(Io,v({},t,{ariaSelection:o,focusedOption:r,focusedValue:i,isFocused:a,selectValue:s,focusableOptions:c}))}},{key:\"render\",value:function(){var t=this.getComponents(),n=t.Control,o=t.IndicatorsContainer,r=t.SelectContainer,i=t.ValueContainer,a=this.props,s=a.className,c=a.id,u=a.isDisabled,l=a.menuIsOpen,p=this.state.isFocused,d=this.commonProps=this.getCommonProps();return e.createElement(r,v({},d,{className:s,innerProps:{id:c,onKeyDown:this.onKeyDown},isDisabled:u,isFocused:p}),this.renderLiveRegion(),e.createElement(n,v({},d,{innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:u,isFocused:p,menuIsOpen:l}),e.createElement(i,v({},d,{isDisabled:u}),this.renderPlaceholderOrValue(),this.renderInput()),e.createElement(o,v({},d,{isDisabled:u}),this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator())),this.renderMenu(),this.renderFormField())}}],[{key:\"getDerivedStateFromProps\",value:function(e,t){var n=t.prevProps,o=t.clearFocusValueOnUpdate,r=t.inputIsHiddenAfterUpdate,i=e.options,a=e.value,s=e.menuIsOpen,c=e.inputValue,u={};if(n&&(a!==n.value||i!==n.options||s!==n.menuIsOpen||c!==n.inputValue)){var l=Gn(a),p=s?function(e,t){return Qo(Uo(e,t))}(e,l):[],d=o?function(e,t){var n=e.focusedValue,o=e.selectValue.indexOf(n);if(o>-1){if(t.indexOf(n)>-1)return n;if(o<t.length)return t[o]}return null}(t,l):null;u={selectValue:l,focusedOption:function(e,t){var n=e.focusedOption;return n&&t.indexOf(n)>-1?n:t[0]}(t,p),focusedValue:d,clearFocusValueOnUpdate:!1}}var f=null!=r&&e!==n?{inputIsHidden:r,inputIsHiddenAfterUpdate:void 0}:{};return mn(mn(mn({},u),f),{},{prevProps:e})}}]),o}();rr.defaultProps=Ho;var ir={defaultInputValue:\"\",defaultMenuIsOpen:!1,defaultValue:null};Ne((function(e){e.exports=function(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))},e.exports.default=e.exports,e.exports.__esModule=!0})),Ne((function(e){function t(n){return\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?(e.exports=t=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=t=function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),t(n)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0}));var ar=Ne((function(e){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o},e.exports.default=e.exports,e.exports.__esModule=!0})),sr=Ne((function(e){e.exports=function(e){if(Array.isArray(e))return ar(e)},e.exports.default=e.exports,e.exports.__esModule=!0})),cr=Ne((function(e){e.exports=function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)},e.exports.default=e.exports,e.exports.__esModule=!0})),ur=Ne((function(e){e.exports=function(e,t){if(e){if(\"string\"==typeof e)return ar(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ar(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0})),lr=Ne((function(e){e.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")},e.exports.default=e.exports,e.exports.__esModule=!0}));Ne((function(e){e.exports=function(e){return sr(e)||cr(e)||ur(e)||lr()},e.exports.default=e.exports,e.exports.__esModule=!0}));var pr,dr,fr,gr={cacheOptions:!1,defaultOptions:!1,filterOption:null,isLoading:!1},br=function(t){var n,o;return o=n=function(n){gn(r,c);var o=yn(r);function r(e){var t;return ln(this,r),(t=o.call(this)).select=void 0,t.lastRequest=void 0,t.mounted=!1,t.handleInputChange=function(e,n){var o=t.props,r=o.cacheOptions,i=function(e,t,n){if(n){var o=n(e,t);if(\"string\"==typeof o)return o}return e}(e,n,o.onInputChange);if(!i)return delete t.lastRequest,void t.setState({inputValue:\"\",loadedInputValue:\"\",loadedOptions:[],isLoading:!1,passEmptyOptions:!1});if(r&&t.state.optionsCache[i])t.setState({inputValue:i,loadedInputValue:i,loadedOptions:t.state.optionsCache[i],isLoading:!1,passEmptyOptions:!1});else{var a=t.lastRequest={};t.setState({inputValue:i,isLoading:!0,passEmptyOptions:!t.state.loadedInputValue},(function(){t.loadOptions(i,(function(e){t.mounted&&a===t.lastRequest&&(delete t.lastRequest,t.setState((function(t){return{isLoading:!1,loadedInputValue:i,loadedOptions:e||[],passEmptyOptions:!1,optionsCache:e?mn(mn({},t.optionsCache),{},y({},i,e)):t.optionsCache}})))}))}))}return i},t.state={defaultOptions:Array.isArray(e.defaultOptions)?e.defaultOptions:void 0,inputValue:void 0!==e.inputValue?e.inputValue:\"\",isLoading:!0===e.defaultOptions,loadedOptions:[],passEmptyOptions:!1,optionsCache:{},prevDefaultOptions:void 0,prevCacheOptions:void 0},t}return dn(r,[{key:\"componentDidMount\",value:function(){var e=this;this.mounted=!0;var t=this.props.defaultOptions,n=this.state.inputValue;!0===t&&this.loadOptions(n,(function(t){if(e.mounted){var n=!!e.lastRequest;e.setState({defaultOptions:t||[],isLoading:n})}}))}},{key:\"componentWillUnmount\",value:function(){this.mounted=!1}},{key:\"focus\",value:function(){this.select.focus()}},{key:\"blur\",value:function(){this.select.blur()}},{key:\"loadOptions\",value:function(e,t){var n=this.props.loadOptions;if(!n)return t();var o=n(e,t);o&&\"function\"==typeof o.then&&o.then(t,(function(){return t()}))}},{key:\"render\",value:function(){var n=this,o=this.props;o.loadOptions;var r=o.isLoading,i=I(o,[\"loadOptions\",\"isLoading\"]),a=this.state,s=a.defaultOptions,c=a.inputValue,u=a.isLoading,l=a.loadedInputValue,p=a.loadedOptions,d=a.passEmptyOptions?[]:c&&l?p:s||[];return e.createElement(t,v({},i,{ref:function(e){n.select=e},options:d,isLoading:u||r,onInputChange:this.handleInputChange}))}}],[{key:\"getDerivedStateFromProps\",value:function(e,t){var n=e.cacheOptions!==t.prevCacheOptions?{prevCacheOptions:e.cacheOptions,optionsCache:{}}:{},o=e.defaultOptions!==t.prevDefaultOptions?{prevDefaultOptions:e.defaultOptions,defaultOptions:Array.isArray(e.defaultOptions)?e.defaultOptions:void 0}:{};return mn(mn({},n),o)}}]),r}(),n.defaultProps=gr,o}((pr=rr,fr=dr=function(t){gn(o,c);var n=yn(o);function o(){var e;ln(this,o);for(var t=arguments.length,r=new Array(t),i=0;i<t;i++)r[i]=arguments[i];return(e=n.call.apply(n,[this].concat(r))).select=void 0,e.state={inputValue:void 0!==e.props.inputValue?e.props.inputValue:e.props.defaultInputValue,menuIsOpen:void 0!==e.props.menuIsOpen?e.props.menuIsOpen:e.props.defaultMenuIsOpen,value:void 0!==e.props.value?e.props.value:e.props.defaultValue},e.onChange=function(t,n){e.callProp(\"onChange\",t,n),e.setState({value:t})},e.onInputChange=function(t,n){var o=e.callProp(\"onInputChange\",t,n);e.setState({inputValue:void 0!==o?o:t})},e.onMenuOpen=function(){e.callProp(\"onMenuOpen\"),e.setState({menuIsOpen:!0})},e.onMenuClose=function(){e.callProp(\"onMenuClose\"),e.setState({menuIsOpen:!1})},e}return dn(o,[{key:\"focus\",value:function(){this.select.focus()}},{key:\"blur\",value:function(){this.select.blur()}},{key:\"getProp\",value:function(e){return void 0!==this.props[e]?this.props[e]:this.state[e]}},{key:\"callProp\",value:function(e){if(\"function\"==typeof this.props[e]){for(var t,n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return(t=this.props)[e].apply(t,o)}}},{key:\"render\",value:function(){var t=this,n=this.props;n.defaultInputValue,n.defaultMenuIsOpen,n.defaultValue;var o=I(n,[\"defaultInputValue\",\"defaultMenuIsOpen\",\"defaultValue\"]);return e.createElement(pr,v({},o,{ref:function(e){t.select=e},inputValue:this.getProp(\"inputValue\"),menuIsOpen:this.getProp(\"menuIsOpen\"),onChange:this.onChange,onInputChange:this.onInputChange,onMenuClose:this.onMenuClose,onMenuOpen:this.onMenuOpen,value:this.getProp(\"value\")}))}}]),o}(),dr.defaultProps=ir,fr));var hr=function(e,t,n){var o,r=e.bounds,i=e.location,a=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n}(e,[\"bounds\",\"location\"]),s=b({input:t},a);return n&&(s.sessionToken=n),r&&(s.bounds=new((o=google.maps.LatLngBounds).bind.apply(o,function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var i=arguments[t],a=0,s=i.length;a<s;a++,r++)o[r]=i[a];return o}([void 0],r)))),i&&(s.location=new google.maps.LatLng(i)),s},mr=function e(t,n){if(t===n)return!0;if(t&&n&&\"object\"==typeof t&&\"object\"==typeof n){if(t.constructor!==n.constructor)return!1;var o,r,i;if(Array.isArray(t)){if((o=t.length)!=n.length)return!1;for(r=o;0!=r--;)if(!e(t[r],n[r]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((o=(i=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(r=o;0!=r--;)if(!Object.prototype.hasOwnProperty.call(n,i[r]))return!1;for(r=o;0!=r--;){var a=i[r];if(!e(t[a],n[a]))return!1}return!0}return t!=t&&n!=n};class vr{constructor({apiKey:e,channel:t,client:n,id:o=\"__googleMapsScriptId\",libraries:r=[],language:i,region:a,version:s,mapIds:c,nonce:u,retries:l=3,url:p=\"https://maps.googleapis.com/maps/api/js\"}){if(this.CALLBACK=\"__googleMapsCallback\",this.callbacks=[],this.done=!1,this.loading=!1,this.errors=[],this.version=s,this.apiKey=e,this.channel=t,this.client=n,this.id=o||\"__googleMapsScriptId\",this.libraries=r,this.language=i,this.region=a,this.mapIds=c,this.nonce=u,this.retries=l,this.url=p,vr.instance){if(!mr(this.options,vr.instance.options))throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(vr.instance.options)}`);return vr.instance}vr.instance=this}get options(){return{version:this.version,apiKey:this.apiKey,channel:this.channel,client:this.client,id:this.id,libraries:this.libraries,language:this.language,region:this.region,mapIds:this.mapIds,nonce:this.nonce,url:this.url}}get failed(){return this.done&&!this.loading&&this.errors.length>=this.retries+1}createUrl(){let e=this.url;return e+=`?callback=${this.CALLBACK}`,this.apiKey&&(e+=`&key=${this.apiKey}`),this.channel&&(e+=`&channel=${this.channel}`),this.client&&(e+=`&client=${this.client}`),this.libraries.length>0&&(e+=`&libraries=${this.libraries.join(\",\")}`),this.language&&(e+=`&language=${this.language}`),this.region&&(e+=`®ion=${this.region}`),this.version&&(e+=`&v=${this.version}`),this.mapIds&&(e+=`&map_ids=${this.mapIds.join(\",\")}`),e}load(){return this.loadPromise()}loadPromise(){return new Promise(((e,t)=>{this.loadCallback((n=>{n?t(n.error):e(window.google)}))}))}loadCallback(e){this.callbacks.push(e),this.execute()}setScript(){if(document.getElementById(this.id))return void this.callback();const e=this.createUrl(),t=document.createElement(\"script\");t.id=this.id,t.type=\"text/javascript\",t.src=e,t.onerror=this.loadErrorCallback.bind(this),t.defer=!0,t.async=!0,this.nonce&&(t.nonce=this.nonce),document.head.appendChild(t)}deleteScript(){const e=document.getElementById(this.id);e&&e.remove()}reset(){this.deleteScript(),this.done=!1,this.loading=!1,this.errors=[],this.onerrorEvent=null}resetIfRetryingFailed(){this.failed&&this.reset()}loadErrorCallback(e){if(this.errors.push(e),this.errors.length<=this.retries){const e=this.errors.length*Math.pow(2,this.errors.length);console.log(`Failed to load Google Maps script, retrying in ${e} ms.`),setTimeout((()=>{this.deleteScript(),this.setScript()}),e)}else this.onerrorEvent=e,this.callback()}setCallback(){window.__googleMapsCallback=this.callback.bind(this)}callback(){this.done=!0,this.loading=!1,this.callbacks.forEach((e=>{e(this.onerrorEvent)})),this.callbacks=[]}execute(){if(this.resetIfRetryingFailed(),this.done)this.callback();else{if(window.google&&window.google.maps&&window.google.maps.version)return console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader.This may result in undesirable behavior as options and script parameters may not match.\"),void this.callback();this.loading||(this.loading=!0,this.setCallback(),this.setScript())}}}var Ir=i((function(t,n){var o=t.apiKey,r=void 0===o?\"\":o,i=t.apiOptions,s=void 0===i?{}:i,c=t.autocompletionRequest,u=void 0===c?{}:c,g=t.debounce,v=void 0===g?300:g,I=t.minLengthAutocomplete,y=void 0===I?0:I,C=t.selectProps,A=void 0===C?{}:C,x=t.onLoadFailed,G=void 0===x?console.error:x,w=t.withSessionToken,O=void 0!==w&&w,N=d(void 0),S=N[0],V=N[1],T=d(void 0),M=T[0],B=T[1],X=function(e,t,n){void 0===n&&(n={});var o=n.maxWait,r=a(null),i=a([]),s=n.leading,c=void 0===n.trailing||n.trailing,u=a(!1),d=a(null),f=a(!1),g=a(e);g.current=e;var b=l((function(){clearTimeout(d.current),clearTimeout(r.current),r.current=null,i.current=[],d.current=null,u.current=!1}),[]);p((function(){return f.current=!1,function(){f.current=!0}}),[]);var h=l((function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];i.current=e,clearTimeout(d.current),u.current&&(u.current=!1),d.current||!s||u.current||(g.current.apply(g,e),u.current=!0),d.current=setTimeout((function(){var t=!0;s&&u.current&&(t=!1),b(),!f.current&&c&&t&&g.current.apply(g,e)}),t),o&&!r.current&&c&&(r.current=setTimeout((function(){var e=i.current;b(),f.current||g.current.apply(null,e)}),o))}),[o,t,b,s,c]),m=l((function(){d.current&&(g.current.apply(null,i.current),b())}),[b]);return[h,b,m]}((function(e,t){if(!S)return t([]);if(e.length<y)return t([]);var n=b({},u);S.getPlacePredictions(hr(n,e,O&&M),(function(e){t((e||[]).map((function(e){return{label:e.description,value:e}})))}))}),v)[0],Z=function(){if(!window.google)throw new Error(\"[react-google-places-autocomplete]: Google script not loaded\");if(!window.google.maps)throw new Error(\"[react-google-places-autocomplete]: Google maps script not loaded\");if(!window.google.maps.places)throw new Error(\"[react-google-places-autocomplete]: Google maps places script not loaded\");V(new window.google.maps.places.AutocompleteService),B(new google.maps.places.AutocompleteSessionToken)};return f(n,(function(){return{getSessionToken:function(){return M},refreshSessionToken:function(){B(new google.maps.places.AutocompleteSessionToken)}}}),[M]),p((function(){r?h(void 0,void 0,void 0,(function(){var e;return m(this,(function(t){switch(t.label){case 0:return t.trys.push([0,3,,4]),window.google&&window.google.maps&&window.google.maps.places?[3,2]:[4,new vr(b({apiKey:r},b({libraries:[\"places\"]},s))).load()];case 1:t.sent(),t.label=2;case 2:return Z(),[3,4];case 3:return e=t.sent(),G(e),[3,4];case 4:return[2]}}))})):Z()}),[]),e.createElement(br,b({},A,{loadOptions:X,getOptionValue:function(e){return e.value.place_id}}))})),yr=function(e){return new Promise((function(t,n){try{return t({lat:e.geometry.location.lat(),lng:e.geometry.location.lng()})}catch(e){return n(e)}}))},Cr=function(e){var t=new window.google.maps.Geocoder,n=window.google.maps.GeocoderStatus.OK;return new Promise((function(o,r){t.geocode({address:e},(function(e,t){return t!==n?r(t):o(e)}))}))},Ar=function(e){var t=new window.google.maps.Geocoder,n=window.google.maps.GeocoderStatus.OK;return new Promise((function(o,r){t.geocode({location:e},(function(e,t){return t!==n?r(t):o(e)}))}))},xr=function(e){var t=new window.google.maps.Geocoder,n=window.google.maps.GeocoderStatus.OK;return new Promise((function(o,r){t.geocode({placeId:e},(function(e,t){return t!==n?r(t):o(e)}))}))};export{Ir as default,Cr as geocodeByAddress,Ar as geocodeByLatLng,xr as geocodeByPlaceId,yr as getLatLng};\n//# sourceMappingURL=index.es.js.map\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define([\"react\"],t):\"object\"==typeof exports?exports.ImageGallery=t(require(\"react\")):e.ImageGallery=t(e.React)}(this,(function(e){return(()=>{var t={703:(e,t,n)=>{\"use strict\";var i=n(414);function r(){}function a(){}a.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,a,s){if(s!==i){var o=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw o.name=\"Invariant Violation\",o}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:r};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},590:e=>{var t=\"undefined\"!=typeof Element,n=\"function\"==typeof Map,i=\"function\"==typeof Set,r=\"function\"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,s){if(e===s)return!0;if(e&&s&&\"object\"==typeof e&&\"object\"==typeof s){if(e.constructor!==s.constructor)return!1;var o,l,u,c;if(Array.isArray(e)){if((o=e.length)!=s.length)return!1;for(l=o;0!=l--;)if(!a(e[l],s[l]))return!1;return!0}if(n&&e instanceof Map&&s instanceof Map){if(e.size!==s.size)return!1;for(c=e.entries();!(l=c.next()).done;)if(!s.has(l.value[0]))return!1;for(c=e.entries();!(l=c.next()).done;)if(!a(l.value[1],s.get(l.value[0])))return!1;return!0}if(i&&e instanceof Set&&s instanceof Set){if(e.size!==s.size)return!1;for(c=e.entries();!(l=c.next()).done;)if(!s.has(l.value[0]))return!1;return!0}if(r&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(s)){if((o=e.length)!=s.length)return!1;for(l=o;0!=l--;)if(e[l]!==s[l])return!1;return!0}if(e.constructor===RegExp)return e.source===s.source&&e.flags===s.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===s.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===s.toString();if((o=(u=Object.keys(e)).length)!==Object.keys(s).length)return!1;for(l=o;0!=l--;)if(!Object.prototype.hasOwnProperty.call(s,u[l]))return!1;if(t&&e instanceof Element)return!1;for(l=o;0!=l--;)if((\"_owner\"!==u[l]&&\"__v\"!==u[l]&&\"__o\"!==u[l]||!e.$$typeof)&&!a(e[u[l]],s[u[l]]))return!1;return!0}return e!=e&&s!=s}e.exports=function(e,t){try{return a(e,t)}catch(e){if((e.message||\"\").match(/stack|recursion/i))return console.warn(\"react-fast-compare cannot handle circular refs\"),!1;throw e}}},37:function(e,t,n){!function(e,t){function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},n.apply(this,arguments)}var i=\"Left\",r=\"Right\",a=\"Down\",s={delta:10,preventDefaultTouchmoveEvent:!1,rotationAngle:0,trackMouse:!1,trackTouch:!0},o={first:!0,initial:[0,0],start:0,swiping:!1,xy:[0,0]},l=\"mousemove\",u=\"mouseup\";function c(e,t){if(0===t)return e;var n=Math.PI/180*t;return[e[0]*Math.cos(n)+e[1]*Math.sin(n),e[1]*Math.cos(n)-e[0]*Math.sin(n)]}function h(e,t){var s=function(t){t&&\"touches\"in t&&t.touches.length>1||e((function(e,i){i.trackMouse&&(document.addEventListener(l,h),document.addEventListener(u,f));var r=\"touches\"in t?t.touches[0]:t,a=c([r.clientX,r.clientY],i.rotationAngle);return n({},e,o,{initial:[].concat(a),xy:a,start:t.timeStamp||0})}))},h=function(t){e((function(e,s){if(\"touches\"in t&&t.touches.length>1)return e;var o=\"touches\"in t?t.touches[0]:t,l=c([o.clientX,o.clientY],s.rotationAngle),u=l[0],h=l[1],d=u-e.xy[0],f=h-e.xy[1],p=Math.abs(d),m=Math.abs(f),g=(t.timeStamp||0)-e.start,v=Math.sqrt(p*p+m*m)/(g||1),b=[d/(g||1),f/(g||1)];if(p<s.delta&&m<s.delta&&!e.swiping)return e;var y=function(e,t,n,s){return e>t?n>0?r:i:s>0?a:\"Up\"}(p,m,d,f),w={absX:p,absY:m,deltaX:d,deltaY:f,dir:y,event:t,first:e.first,initial:e.initial,velocity:v,vxvy:b};s.onSwiping&&s.onSwiping(w);var T=!1;return(s.onSwiping||s.onSwiped||\"onSwiped\"+y in s)&&(T=!0),T&&s.preventDefaultTouchmoveEvent&&s.trackTouch&&t.cancelable&&t.preventDefault(),n({},e,{first:!1,eventData:w,swiping:!0})}))},d=function(t){e((function(e,i){var r;if(e.swiping&&e.eventData){r=n({},e.eventData,{event:t}),i.onSwiped&&i.onSwiped(r);var a=\"onSwiped\"+r.dir;a in i&&i[a](r)}else i.onTap&&i.onTap({event:t});return n({},e,o,{eventData:r})}))},f=function(e){document.removeEventListener(l,h),document.removeEventListener(u,f),d(e)},p=function(e,t){var n=function(){};if(e&&e.addEventListener){var i=[[\"touchstart\",s],[\"touchmove\",h],[\"touchend\",d]];i.forEach((function(n){var i=n[0],r=n[1];return e.addEventListener(i,r,{passive:t})})),n=function(){return i.forEach((function(t){var n=t[0],i=t[1];return e.removeEventListener(n,i)}))}}return n},m={ref:function(t){null!==t&&e((function(e,i){if(e.el===t)return e;var r={};return e.el&&e.el!==t&&e.cleanUpTouch&&(e.cleanUpTouch(),r.cleanUpTouch=void 0),i.trackTouch&&t&&(r.cleanUpTouch=p(t,!i.preventDefaultTouchmoveEvent)),n({},e,{el:t},r)}))}};return t.trackMouse&&(m.onMouseDown=s),[m,p]}e.DOWN=a,e.LEFT=i,e.RIGHT=r,e.UP=\"Up\",e.useSwipeable=function(e){var i=e.trackMouse,r=t.useRef(n({},o)),a=t.useRef(n({},s));a.current=n({},s,e);var l=t.useMemo((function(){return h((function(e){return r.current=e(r.current,a.current)}),{trackMouse:i})}),[i]),u=l[0],c=l[1];return r.current=function(e,t,i){var r={};return!t.trackTouch&&e.cleanUpTouch?(e.cleanUpTouch(),r.cleanUpTouch=void 0):t.trackTouch&&!e.cleanUpTouch&&e.el&&(r.cleanUpTouch=i(e.el,!t.preventDefaultTouchmoveEvent)),n({},e,r)}(r.current,a.current,c),u}}(t,n(888))},888:t=>{\"use strict\";t.exports=e}},n={};function i(e){var r=n[e];if(void 0!==r)return r.exports;var a=n[e]={exports:{}};return t[e].call(a.exports,a,a.exports,i),a.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var r={};return(()=>{\"use strict\";function e(t){var n,i,r=\"\";if(\"string\"==typeof t||\"number\"==typeof t)r+=t;else if(\"object\"==typeof t)if(Array.isArray(t))for(n=0;n<t.length;n++)t[n]&&(i=e(t[n]))&&(r&&(r+=\" \"),r+=i);else for(n in t)t[n]&&(r&&(r+=\" \"),r+=n);return r}function t(){for(var t,n,i=0,r=\"\";i<arguments.length;)(t=arguments[i++])&&(n=e(t))&&(r&&(r+=\" \"),r+=n);return r}i.r(r),i.d(r,{default:()=>Pe});var n=i(888),a=i.n(n);const s=function(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)},o=\"object\"==typeof global&&global&&global.Object===Object&&global;var l=\"object\"==typeof self&&self&&self.Object===Object&&self;const u=o||l||Function(\"return this\")(),c=function(){return u.Date.now()};var h=/\\s/;var d=/^\\s+/;const f=function(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&h.test(e.charAt(t)););return t}(e)+1).replace(d,\"\"):e},p=u.Symbol;var m=Object.prototype,g=m.hasOwnProperty,v=m.toString,b=p?p.toStringTag:void 0;var y=Object.prototype.toString;var w=p?p.toStringTag:void 0;const T=function(e){return null==e?void 0===e?\"[object Undefined]\":\"[object Null]\":w&&w in Object(e)?function(e){var t=g.call(e,b),n=e[b];try{e[b]=void 0;var i=!0}catch(e){}var r=v.call(e);return i&&(t?e[b]=n:delete e[b]),r}(e):function(e){return y.call(e)}(e)};var S=/^[-+]0x[0-9a-f]+$/i,O=/^0b[01]+$/i,E=/^0o[0-7]+$/i,k=parseInt;const I=function(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return null!=e&&\"object\"==typeof e}(e)&&\"[object Symbol]\"==T(e)}(e))return NaN;if(s(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=s(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=f(e);var n=O.test(e);return n||E.test(e)?k(e.slice(2),n?2:8):S.test(e)?NaN:+e};var x=Math.max,_=Math.min;const R=function(e,t,n){var i,r,a,o,l,u,h=0,d=!1,f=!1,p=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");function m(t){var n=i,a=r;return i=r=void 0,h=t,o=e.apply(a,n)}function g(e){return h=e,l=setTimeout(b,t),d?m(e):o}function v(e){var n=e-u;return void 0===u||n>=t||n<0||f&&e-h>=a}function b(){var e=c();if(v(e))return y(e);l=setTimeout(b,function(e){var n=t-(e-u);return f?_(n,a-(e-h)):n}(e))}function y(e){return l=void 0,p&&i?m(e):(i=r=void 0,o)}function w(){var e=c(),n=v(e);if(i=arguments,r=this,u=e,n){if(void 0===l)return g(u);if(f)return clearTimeout(l),l=setTimeout(b,t),m(u)}return void 0===l&&(l=setTimeout(b,t)),o}return t=I(t)||0,s(n)&&(d=!!n.leading,a=(f=\"maxWait\"in n)?x(I(n.maxWait)||0,t):a,p=\"trailing\"in n?!!n.trailing:p),w.cancel=function(){void 0!==l&&clearTimeout(l),h=0,i=u=r=l=void 0},w.flush=function(){return void 0===l?o:y(c())},w},L=function(e,t,n){var i=!0,r=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");return s(n)&&(i=\"leading\"in n?!!n.leading:i,r=\"trailing\"in n?!!n.trailing:r),R(e,t,{leading:i,maxWait:t,trailing:r})};var P=i(590),M=i.n(P),W=function(){if(\"undefined\"!=typeof Map)return Map;function e(e,t){var n=-1;return e.some((function(e,i){return e[0]===t&&(n=i,!0)})),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,\"size\",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),i=this.__entries__[n];return i&&i[1]},t.prototype.set=function(t,n){var i=e(this.__entries__,t);~i?this.__entries__[i][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,i=e(n,t);~i&&n.splice(i,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,i=this.__entries__;n<i.length;n++){var r=i[n];e.call(t,r[1],r[0])}},t}()}(),D=\"undefined\"!=typeof window&&\"undefined\"!=typeof document&&window.document===document,F=void 0!==i.g&&i.g.Math===Math?i.g:\"undefined\"!=typeof self&&self.Math===Math?self:\"undefined\"!=typeof window&&window.Math===Math?window:Function(\"return this\")(),C=\"function\"==typeof requestAnimationFrame?requestAnimationFrame.bind(F):function(e){return setTimeout((function(){return e(Date.now())}),1e3/60)},N=[\"top\",\"right\",\"bottom\",\"left\",\"width\",\"height\",\"size\",\"weight\"],z=\"undefined\"!=typeof MutationObserver,j=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var n=!1,i=!1,r=0;function a(){n&&(n=!1,e()),i&&o()}function s(){C(a)}function o(){var e=Date.now();if(n){if(e-r<2)return;i=!0}else n=!0,i=!1,setTimeout(s,20);r=e}return o}(this.refresh.bind(this))}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter((function(e){return e.gatherActive(),e.hasActive()}));return e.forEach((function(e){return e.broadcastActive()})),e.length>0},e.prototype.connect_=function(){D&&!this.connected_&&(document.addEventListener(\"transitionend\",this.onTransitionEnd_),window.addEventListener(\"resize\",this.refresh),z?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){D&&this.connected_&&(document.removeEventListener(\"transitionend\",this.onTransitionEnd_),window.removeEventListener(\"resize\",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?\"\":t;N.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),B=function(e,t){for(var n=0,i=Object.keys(t);n<i.length;n++){var r=i[n];Object.defineProperty(e,r,{value:t[r],enumerable:!1,writable:!1,configurable:!0})}return e},A=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||F},G=V(0,0,0,0);function U(e){return parseFloat(e)||0}function H(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce((function(t,n){return t+U(e[\"border-\"+n+\"-width\"])}),0)}var q=\"undefined\"!=typeof SVGGraphicsElement?function(e){return e instanceof A(e).SVGGraphicsElement}:function(e){return e instanceof A(e).SVGElement&&\"function\"==typeof e.getBBox};function K(e){return D?q(e)?function(e){var t=e.getBBox();return V(0,0,t.width,t.height)}(e):function(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return G;var i=A(e).getComputedStyle(e),r=function(e){for(var t={},n=0,i=[\"top\",\"right\",\"bottom\",\"left\"];n<i.length;n++){var r=i[n],a=e[\"padding-\"+r];t[r]=U(a)}return t}(i),a=r.left+r.right,s=r.top+r.bottom,o=U(i.width),l=U(i.height);if(\"border-box\"===i.boxSizing&&(Math.round(o+a)!==t&&(o-=H(i,\"left\",\"right\")+a),Math.round(l+s)!==n&&(l-=H(i,\"top\",\"bottom\")+s)),!function(e){return e===A(e).document.documentElement}(e)){var u=Math.round(o+a)-t,c=Math.round(l+s)-n;1!==Math.abs(u)&&(o-=u),1!==Math.abs(c)&&(l-=c)}return V(r.left,r.top,o,l)}(e):G}function V(e,t,n,i){return{x:e,y:t,width:n,height:i}}var X=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=V(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=K(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),Y=function(e,t){var n,i,r,a,s,o,l,u=(i=(n=t).x,r=n.y,a=n.width,s=n.height,o=\"undefined\"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,l=Object.create(o.prototype),B(l,{x:i,y:r,width:a,height:s,top:r,right:i+a,bottom:s+r,left:i}),l);B(this,{target:e,contentRect:u})},$=function(){function e(e,t,n){if(this.activeObservations_=[],this.observations_=new W,\"function\"!=typeof e)throw new TypeError(\"The callback provided as parameter 1 is not a function.\");this.callback_=e,this.controller_=t,this.callbackCtx_=n}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");if(\"undefined\"!=typeof Element&&Element instanceof Object){if(!(e instanceof A(e).Element))throw new TypeError('parameter 1 is not of type \"Element\".');var t=this.observations_;t.has(e)||(t.set(e,new X(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");if(\"undefined\"!=typeof Element&&Element instanceof Object){if(!(e instanceof A(e).Element))throw new TypeError('parameter 1 is not of type \"Element\".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach((function(t){t.isActive()&&e.activeObservations_.push(t)}))},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map((function(e){return new Y(e.target,e.broadcastRect())}));this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),J=\"undefined\"!=typeof WeakMap?new WeakMap:new W,Q=function e(t){if(!(this instanceof e))throw new TypeError(\"Cannot call a class as a function.\");if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");var n=j.getInstance(),i=new $(t,n,this);J.set(this,i)};[\"observe\",\"unobserve\",\"disconnect\"].forEach((function(e){Q.prototype[e]=function(){var t;return(t=J.get(this))[e].apply(t,arguments)}}));const Z=void 0!==F.ResizeObserver?F.ResizeObserver:Q;var ee=i(37),te=i(697),ne=a().memo((function(e){var t=e.description,n=e.fullscreen,i=e.handleImageLoaded,r=e.isFullscreen,s=e.onImageError,o=e.original,l=e.originalAlt,u=e.originalHeight,c=e.originalWidth,h=e.originalTitle,d=e.sizes,f=e.srcSet,p=e.loading,m=r&&n||o;return a().createElement(a().Fragment,null,a().createElement(\"img\",{className:\"image-gallery-image\",src:m,alt:l,srcSet:f,height:u,width:c,sizes:d,title:h,onLoad:function(e){return i(e,o)},onError:s,loading:p}),t&&a().createElement(\"span\",{className:\"image-gallery-description\"},t))}));ne.displayName=\"Item\",ne.propTypes={description:te.string,fullscreen:te.string,handleImageLoaded:te.func.isRequired,isFullscreen:te.bool,onImageError:te.func.isRequired,original:te.string.isRequired,originalAlt:te.string,originalHeight:te.string,originalWidth:te.string,originalTitle:te.string,sizes:te.string,srcSet:te.string,loading:te.string},ne.defaultProps={description:\"\",fullscreen:\"\",isFullscreen:!1,originalAlt:\"\",originalHeight:\"\",originalWidth:\"\",originalTitle:\"\",sizes:\"\",srcSet:\"\",loading:\"eager\"};const ie=ne;var re={left:a().createElement(\"polyline\",{points:\"15 18 9 12 15 6\"}),right:a().createElement(\"polyline\",{points:\"9 18 15 12 9 6\"}),maximize:a().createElement(\"path\",{d:\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"}),minimize:a().createElement(\"path\",{d:\"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3\"}),play:a().createElement(\"polygon\",{points:\"5 3 19 12 5 21 5 3\"}),pause:a().createElement(a().Fragment,null,a().createElement(\"rect\",{x:\"6\",y:\"4\",width:\"4\",height:\"16\"}),a().createElement(\"rect\",{x:\"14\",y:\"4\",width:\"4\",height:\"16\"}))},ae=function(e){var t=e.strokeWidth,n=e.viewBox,i=e.icon;return a().createElement(\"svg\",{className:\"image-gallery-svg\",xmlns:\"http://www.w3.org/2000/svg\",viewBox:n,fill:\"none\",stroke:\"currentColor\",strokeWidth:t,strokeLinecap:\"round\",strokeLinejoin:\"round\"},re[i])};ae.propTypes={strokeWidth:te.number,viewBox:te.string,icon:(0,te.oneOf)([\"left\",\"right\",\"maximize\",\"minimize\",\"play\",\"pause\"]).isRequired},ae.defaultProps={strokeWidth:1,viewBox:\"0 0 24 24\"};const se=ae;var oe=a().memo((function(e){var t=e.isFullscreen,n=e.onClick;return a().createElement(\"button\",{type:\"button\",className:\"image-gallery-icon image-gallery-fullscreen-button\",onClick:n,\"aria-label\":\"Open Fullscreen\"},a().createElement(se,{strokeWidth:2,icon:t?\"minimize\":\"maximize\"}))}));oe.displayName=\"Fullscreen\",oe.propTypes={isFullscreen:te.bool.isRequired,onClick:te.func.isRequired};const le=oe;var ue=a().memo((function(e){var t=e.disabled,n=e.onClick;return a().createElement(\"button\",{type:\"button\",className:\"image-gallery-icon image-gallery-left-nav\",disabled:t,onClick:n,\"aria-label\":\"Previous Slide\"},a().createElement(se,{icon:\"left\",viewBox:\"6 0 12 24\"}))}));ue.displayName=\"LeftNav\",ue.propTypes={disabled:te.bool.isRequired,onClick:te.func.isRequired};const ce=ue;var he=a().memo((function(e){var t=e.disabled,n=e.onClick;return a().createElement(\"button\",{type:\"button\",className:\"image-gallery-icon image-gallery-right-nav\",disabled:t,onClick:n,\"aria-label\":\"Next Slide\"},a().createElement(se,{icon:\"right\",viewBox:\"6 0 12 24\"}))}));he.displayName=\"RightNav\",he.propTypes={disabled:te.bool.isRequired,onClick:te.func.isRequired};const de=he;var fe=a().memo((function(e){var t=e.isPlaying,n=e.onClick;return a().createElement(\"button\",{type:\"button\",className:\"image-gallery-icon image-gallery-play-button\",onClick:n,\"aria-label\":\"Play or Pause Slideshow\"},a().createElement(se,{strokeWidth:2,icon:t?\"pause\":\"play\"}))}));fe.displayName=\"PlayPause\",fe.propTypes={isPlaying:te.bool.isRequired,onClick:te.func.isRequired};const pe=fe;function me(){return me=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},me.apply(this,arguments)}var ge=function(e){var t=e.children,n=e.className,i=e.delta,r=e.onSwiping,s=e.onSwiped,o=(0,ee.useSwipeable)({delta:i,onSwiping:r,onSwiped:s});return a().createElement(\"div\",me({},o,{className:n}),t)};ge.propTypes={children:te.node.isRequired,className:te.string,delta:te.number,onSwiped:te.func,onSwiping:te.func},ge.defaultProps={className:\"\",delta:0,onSwiping:function(){},onSwiped:function(){}};const ve=ge;function be(e){return be=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},be(e)}function ye(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function we(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ye(Object(n),!0).forEach((function(t){Te(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ye(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Te(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Se(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Oe(e,t){return Oe=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Oe(e,t)}function Ee(e,t){return!t||\"object\"!==be(t)&&\"function\"!=typeof t?ke(e):t}function ke(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function Ie(e){return Ie=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Ie(e)}var xe=[\"fullscreenchange\",\"MSFullscreenChange\",\"mozfullscreenchange\",\"webkitfullscreenchange\"],_e=(0,te.arrayOf)((0,te.shape)({srcSet:te.string,media:te.string}));function Re(e){var t=parseInt(e.keyCode||e.which||0,10);return 66===t||62===t}var Le=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Oe(e,t)}(l,e);var n,i,r,s,o=(r=l,s=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=Ie(r);if(s){var n=Ie(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return Ee(this,e)});function l(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,l),(t=o.call(this,e)).state={currentIndex:e.startIndex,thumbsTranslate:0,thumbsSwipedTranslate:0,currentSlideOffset:0,galleryWidth:0,thumbnailsWrapperWidth:0,thumbnailsWrapperHeight:0,thumbsStyle:{transition:\"all \".concat(e.slideDuration,\"ms ease-out\")},isFullscreen:!1,isSwipingThumbnail:!1,isPlaying:!1},t.loadedImages={},t.imageGallery=a().createRef(),t.thumbnailsWrapper=a().createRef(),t.thumbnails=a().createRef(),t.imageGallerySlideWrapper=a().createRef(),t.handleImageLoaded=t.handleImageLoaded.bind(ke(t)),t.handleKeyDown=t.handleKeyDown.bind(ke(t)),t.handleMouseDown=t.handleMouseDown.bind(ke(t)),t.handleResize=t.handleResize.bind(ke(t)),t.handleTouchMove=t.handleTouchMove.bind(ke(t)),t.handleOnSwiped=t.handleOnSwiped.bind(ke(t)),t.handleScreenChange=t.handleScreenChange.bind(ke(t)),t.handleSwiping=t.handleSwiping.bind(ke(t)),t.handleThumbnailSwiping=t.handleThumbnailSwiping.bind(ke(t)),t.handleOnThumbnailSwiped=t.handleOnThumbnailSwiped.bind(ke(t)),t.onThumbnailMouseLeave=t.onThumbnailMouseLeave.bind(ke(t)),t.handleImageError=t.handleImageError.bind(ke(t)),t.pauseOrPlay=t.pauseOrPlay.bind(ke(t)),t.renderThumbInner=t.renderThumbInner.bind(ke(t)),t.renderItem=t.renderItem.bind(ke(t)),t.slideLeft=t.slideLeft.bind(ke(t)),t.slideRight=t.slideRight.bind(ke(t)),t.toggleFullScreen=t.toggleFullScreen.bind(ke(t)),t.togglePlay=t.togglePlay.bind(ke(t)),t.unthrottledSlideToIndex=t.slideToIndex,t.slideToIndex=L(t.unthrottledSlideToIndex,e.slideDuration,{trailing:!1}),e.lazyLoad&&(t.lazyLoaded=[]),t}return n=l,i=[{key:\"componentDidMount\",value:function(){var e=this.props,t=e.autoPlay,n=e.useWindowKeyDown;t&&this.play(),n?window.addEventListener(\"keydown\",this.handleKeyDown):this.imageGallery.current.addEventListener(\"keydown\",this.handleKeyDown),window.addEventListener(\"mousedown\",this.handleMouseDown),window.addEventListener(\"touchmove\",this.handleTouchMove,{passive:!1}),this.initSlideWrapperResizeObserver(this.imageGallerySlideWrapper),this.initThumbnailWrapperResizeObserver(this.thumbnailsWrapper),this.addScreenChangeEvent()}},{key:\"componentDidUpdate\",value:function(e,t){var n=this.props,i=n.items,r=n.lazyLoad,a=n.slideDuration,s=n.slideInterval,o=n.startIndex,l=n.thumbnailPosition,u=n.showThumbnails,c=n.useWindowKeyDown,h=this.state,d=h.currentIndex,f=h.isPlaying,p=e.items.length!==i.length,m=!M()(e.items,i),g=e.startIndex!==o,v=e.thumbnailPosition!==l,b=e.showThumbnails!==u;s===e.slideInterval&&a===e.slideDuration||f&&(this.pause(),this.play()),v&&(this.removeResizeObserver(),this.initSlideWrapperResizeObserver(this.imageGallerySlideWrapper),this.initThumbnailWrapperResizeObserver(this.thumbnailsWrapper)),b&&u&&this.initThumbnailWrapperResizeObserver(this.thumbnailsWrapper),b&&!u&&this.removeThumbnailsResizeObserver(),(p||b)&&this.handleResize(),t.currentIndex!==d&&this.slideThumbnailBar(),e.slideDuration!==a&&(this.slideToIndex=L(this.unthrottledSlideToIndex,a,{trailing:!1})),!r||e.lazyLoad&&!m||(this.lazyLoaded=[]),c!==e.useWindowKeyDown&&(c?(this.imageGallery.current.removeEventListener(\"keydown\",this.handleKeyDown),window.addEventListener(\"keydown\",this.handleKeyDown)):(window.removeEventListener(\"keydown\",this.handleKeyDown),this.imageGallery.current.addEventListener(\"keydown\",this.handleKeyDown))),(g||m)&&this.setState({currentIndex:o,slideStyle:{transition:\"none\"}})}},{key:\"componentWillUnmount\",value:function(){var e=this.props.useWindowKeyDown;window.removeEventListener(\"mousedown\",this.handleMouseDown),window.removeEventListener(\"touchmove\",this.handleTouchMove),this.removeScreenChangeEvent(),this.removeResizeObserver(),this.playPauseIntervalId&&(window.clearInterval(this.playPauseIntervalId),this.playPauseIntervalId=null),this.transitionTimer&&window.clearTimeout(this.transitionTimer),e?window.removeEventListener(\"keydown\",this.handleKeyDown):this.imageGallery.current.removeEventListener(\"keydown\",this.handleKeyDown)}},{key:\"onSliding\",value:function(){var e=this,t=this.state,n=t.currentIndex,i=t.isTransitioning,r=this.props,a=r.onSlide,s=r.slideDuration;this.transitionTimer=window.setTimeout((function(){i&&(e.setState({isTransitioning:!i,isSwipingThumbnail:!1}),a&&a(n))}),s+50)}},{key:\"onThumbnailClick\",value:function(e,t){var n=this.props.onThumbnailClick;e.target.parentNode.parentNode.blur(),this.slideToIndex(t,e),n&&n(e,t)}},{key:\"onThumbnailMouseOver\",value:function(e,t){var n=this;this.thumbnailMouseOverTimer&&(window.clearTimeout(this.thumbnailMouseOverTimer),this.thumbnailMouseOverTimer=null),this.thumbnailMouseOverTimer=window.setTimeout((function(){n.slideToIndex(t),n.pause()}),300)}},{key:\"onThumbnailMouseLeave\",value:function(){if(this.thumbnailMouseOverTimer){var e=this.props.autoPlay;window.clearTimeout(this.thumbnailMouseOverTimer),this.thumbnailMouseOverTimer=null,e&&this.play()}}},{key:\"setThumbsTranslate\",value:function(e){this.setState({thumbsTranslate:e})}},{key:\"setModalFullscreen\",value:function(e){var t=this.props.onScreenChange;this.setState({modalFullscreen:e}),t&&t(e)}},{key:\"getThumbsTranslate\",value:function(e){var t,n=this.props,i=n.disableThumbnailScroll,r=n.items,a=this.state,s=a.thumbnailsWrapperWidth,o=a.thumbnailsWrapperHeight,l=this.thumbnails&&this.thumbnails.current;if(i)return 0;if(l){if(this.isThumbnailVertical()){if(l.scrollHeight<=o)return 0;t=l.scrollHeight-o}else{if(l.scrollWidth<=s||s<=0)return 0;t=l.scrollWidth-s}return e*(t/(r.length-1))}return 0}},{key:\"getThumbnailPositionClassName\",value:function(e){switch(e){case\"left\":e=\" \".concat(\"image-gallery-thumbnails-left\");break;case\"right\":e=\" \".concat(\"image-gallery-thumbnails-right\");break;case\"bottom\":e=\" \".concat(\"image-gallery-thumbnails-bottom\");break;case\"top\":e=\" \".concat(\"image-gallery-thumbnails-top\")}return e}},{key:\"getAlignmentClassName\",value:function(e){var t=this.state.currentIndex,n=this.props,i=n.infinite,r=n.items,a=\"\",s=\"image-gallery-left\",o=\"image-gallery-right\";switch(e){case t-1:a=\" \".concat(s);break;case t:a=\" \".concat(\"image-gallery-center\");break;case t+1:a=\" \".concat(o)}return r.length>=3&&i&&(0===e&&t===r.length-1?a=\" \".concat(o):e===r.length-1&&0===t&&(a=\" \".concat(s))),a}},{key:\"getTranslateXForTwoSlide\",value:function(e){var t=this.state,n=t.currentIndex,i=t.currentSlideOffset,r=t.previousIndex,a=n!==r,s=0===e&&0===r,o=1===e&&1===r,l=0===e&&1===n,u=1===e&&0===n,c=0===i,h=-100*n+100*e+i;return i>0?this.direction=\"left\":i<0&&(this.direction=\"right\"),u&&i>0&&(h=-100+i),l&&i<0&&(h=100+i),a?s&&c&&\"left\"===this.direction?h=100:o&&c&&\"right\"===this.direction&&(h=-100):(u&&c&&\"left\"===this.direction&&(h=-100),l&&c&&\"right\"===this.direction&&(h=100)),h}},{key:\"getThumbnailBarHeight\",value:function(){return this.isThumbnailVertical()?{height:this.state.gallerySlideWrapperHeight}:{}}},{key:\"getSlideStyle\",value:function(e){var t=this.state,n=t.currentIndex,i=t.currentSlideOffset,r=t.slideStyle,a=this.props,s=a.infinite,o=a.items,l=a.useTranslate3D,u=a.isRTL,c=-100*n,h=o.length-1,d=(c+100*e)*(u?-1:1)+i;s&&o.length>2&&(0===n&&e===h?d=-100*(u?-1:1)+i:n===h&&0===e&&(d=100*(u?-1:1)+i)),s&&2===o.length&&(d=this.getTranslateXForTwoSlide(e));var f=\"translate(\".concat(d,\"%, 0)\");return l&&(f=\"translate3d(\".concat(d,\"%, 0, 0)\")),we({display:this.isSlideVisible(e)?\"inherit\":\"none\",WebkitTransform:f,MozTransform:f,msTransform:f,OTransform:f,transform:f},r)}},{key:\"getCurrentIndex\",value:function(){return this.state.currentIndex}},{key:\"getThumbnailStyle\",value:function(){var e,t=this.props,n=t.useTranslate3D,i=t.isRTL,r=this.state,a=r.thumbsTranslate,s=r.thumbsStyle,o=i?-1*a:a;return this.isThumbnailVertical()?(e=\"translate(0, \".concat(a,\"px)\"),n&&(e=\"translate3d(0, \".concat(a,\"px, 0)\"))):(e=\"translate(\".concat(o,\"px, 0)\"),n&&(e=\"translate3d(\".concat(o,\"px, 0, 0)\"))),we({WebkitTransform:e,MozTransform:e,msTransform:e,OTransform:e,transform:e},s)}},{key:\"getSlideItems\",value:function(){var e=this,n=this.state.currentIndex,i=this.props,r=i.items,s=i.slideOnThumbnailOver,o=i.onClick,l=i.lazyLoad,u=i.onTouchMove,c=i.onTouchEnd,h=i.onTouchStart,d=i.onMouseOver,f=i.onMouseLeave,p=i.renderItem,m=i.renderThumbInner,g=i.showThumbnails,v=i.showBullets,b=[],y=[],w=[];return r.forEach((function(i,r){var T=e.getAlignmentClassName(r),S=i.originalClass?\" \".concat(i.originalClass):\"\",O=i.thumbnailClass?\" \".concat(i.thumbnailClass):\"\",E=i.renderItem||p||e.renderItem,k=i.renderThumbInner||m||e.renderThumbInner,I=!l||T||e.lazyLoaded[r];I&&l&&!e.lazyLoaded[r]&&(e.lazyLoaded[r]=!0);var x=e.getSlideStyle(r),_=a().createElement(\"div\",{\"aria-label\":\"Go to Slide \".concat(r+1),key:\"slide-\".concat(r),tabIndex:\"-1\",className:\"image-gallery-slide \".concat(T,\" \").concat(S),style:x,onClick:o,onKeyUp:e.handleSlideKeyUp,onTouchMove:u,onTouchEnd:c,onTouchStart:h,onMouseOver:d,onFocus:d,onMouseLeave:f,role:\"button\"},I?E(i):a().createElement(\"div\",{style:{height:\"100%\"}}));if(b.push(_),g&&i.thumbnail){var R=t(\"image-gallery-thumbnail\",O,{active:n===r});y.push(a().createElement(\"button\",{key:\"thumbnail-\".concat(r),type:\"button\",tabIndex:\"0\",\"aria-pressed\":n===r?\"true\":\"false\",\"aria-label\":\"Go to Slide \".concat(r+1),className:R,onMouseLeave:s?e.onThumbnailMouseLeave:null,onMouseOver:function(t){return e.handleThumbnailMouseOver(t,r)},onFocus:function(t){return e.handleThumbnailMouseOver(t,r)},onKeyUp:function(t){return e.handleThumbnailKeyUp(t,r)},onClick:function(t){return e.onThumbnailClick(t,r)}},k(i)))}if(v){var L=t(\"image-gallery-bullet\",i.bulletClass,{active:n===r});w.push(a().createElement(\"button\",{type:\"button\",key:\"bullet-\".concat(r),className:L,onClick:function(t){return i.bulletOnClick&&i.bulletOnClick({item:i,itemIndex:r,currentIndex:n}),t.target.blur(),e.slideToIndex.call(e,r,t)},\"aria-pressed\":n===r?\"true\":\"false\",\"aria-label\":\"Go to Slide \".concat(r+1)}))}})),{slides:b,thumbnails:y,bullets:w}}},{key:\"ignoreIsTransitioning\",value:function(){var e=this.props.items,t=this.state,n=t.previousIndex,i=t.currentIndex,r=e.length-1;return Math.abs(n-i)>1&&!(0===n&&i===r)&&!(n===r&&0===i)}},{key:\"isFirstOrLastSlide\",value:function(e){return e===this.props.items.length-1||0===e}},{key:\"slideIsTransitioning\",value:function(e){var t=this.state,n=t.isTransitioning,i=t.previousIndex,r=t.currentIndex;return n&&!(e===i||e===r)}},{key:\"isSlideVisible\",value:function(e){return!this.slideIsTransitioning(e)||this.ignoreIsTransitioning()&&!this.isFirstOrLastSlide(e)}},{key:\"slideThumbnailBar\",value:function(){var e=this.state,t=e.currentIndex,n=e.isSwipingThumbnail,i=-this.getThumbsTranslate(t);n||(0===t?this.setState({thumbsTranslate:0,thumbsSwipedTranslate:0}):this.setState({thumbsTranslate:i,thumbsSwipedTranslate:i}))}},{key:\"canSlide\",value:function(){return this.props.items.length>=2}},{key:\"canSlideLeft\",value:function(){var e=this.props,t=e.infinite,n=e.isRTL;return t||(n?this.canSlideNext():this.canSlidePrevious())}},{key:\"canSlideRight\",value:function(){var e=this.props,t=e.infinite,n=e.isRTL;return t||(n?this.canSlidePrevious():this.canSlideNext())}},{key:\"canSlidePrevious\",value:function(){return this.state.currentIndex>0}},{key:\"canSlideNext\",value:function(){return this.state.currentIndex<this.props.items.length-1}},{key:\"handleSwiping\",value:function(e){var t=e.event,n=e.absX,i=e.dir,r=this.props,a=r.disableSwipe,s=r.stopPropagation,o=this.state,l=o.galleryWidth,u=o.isTransitioning,c=o.swipingUpDown,h=o.swipingLeftRight;if(i!==ee.UP&&i!==ee.DOWN&&!c||h){if(i!==ee.LEFT&&i!==ee.RIGHT||h||this.setState({swipingLeftRight:!0}),!a){var d=this.props.swipingTransitionDuration;if(s&&t.preventDefault(),u)this.setState({currentSlideOffset:0});else{var f=i===ee.RIGHT?1:-1,p=n/l*100;Math.abs(p)>=100&&(p=100);var m={transition:\"transform \".concat(d,\"ms ease-out\")};this.setState({currentSlideOffset:f*p,slideStyle:m})}}}else c||this.setState({swipingUpDown:!0})}},{key:\"handleThumbnailSwiping\",value:function(e){var t=e.event,n=e.absX,i=e.absY,r=e.dir,a=this.props,s=a.stopPropagation,o=a.swipingThumbnailTransitionDuration,l=this.state,u=l.thumbsSwipedTranslate,c=l.thumbnailsWrapperHeight,h=l.thumbnailsWrapperWidth,d=l.swipingUpDown,f=l.swipingLeftRight;if(this.isThumbnailVertical()){if((r===ee.LEFT||r===ee.RIGHT||f)&&!d)return void(f||this.setState({swipingLeftRight:!0}));r!==ee.UP&&r!==ee.DOWN||d||this.setState({swipingUpDown:!0})}else{if((r===ee.UP||r===ee.DOWN||d)&&!f)return void(d||this.setState({swipingUpDown:!0}));r!==ee.LEFT&&r!==ee.RIGHT||f||this.setState({swipingLeftRight:!0})}var p,m,g,v,b,y=this.thumbnails&&this.thumbnails.current;if(this.isThumbnailVertical()?(p=u+(r===ee.DOWN?i:-i),m=y.scrollHeight-c+20,g=Math.abs(p)>m,v=p>20,b=y.scrollHeight<=c):(p=u+(r===ee.RIGHT?n:-n),m=y.scrollWidth-h+20,g=Math.abs(p)>m,v=p>20,b=y.scrollWidth<=h),!b&&(r!==ee.LEFT&&r!==ee.UP||!g)&&(r!==ee.RIGHT&&r!==ee.DOWN||!v)){s&&t.stopPropagation();var w={transition:\"transform \".concat(o,\"ms ease-out\")};this.setState({thumbsTranslate:p,thumbsStyle:w})}}},{key:\"handleOnThumbnailSwiped\",value:function(){var e=this.state.thumbsTranslate,t=this.props.slideDuration;this.resetSwipingDirection(),this.setState({isSwipingThumbnail:!0,thumbsSwipedTranslate:e,thumbsStyle:{transition:\"all \".concat(t,\"ms ease-out\")}})}},{key:\"sufficientSwipe\",value:function(){var e=this.state.currentSlideOffset,t=this.props.swipeThreshold;return Math.abs(e)>t}},{key:\"resetSwipingDirection\",value:function(){var e=this.state,t=e.swipingUpDown,n=e.swipingLeftRight;t&&this.setState({swipingUpDown:!1}),n&&this.setState({swipingLeftRight:!1})}},{key:\"handleOnSwiped\",value:function(e){var t=e.event,n=e.dir,i=e.velocity,r=this.props,a=r.disableSwipe,s=r.stopPropagation,o=r.flickThreshold;if(!a){var l=this.props.isRTL;s&&t.stopPropagation(),this.resetSwipingDirection();var u=(n===ee.LEFT?1:-1)*(l?-1:1),c=n===ee.UP||n===ee.DOWN,h=i>o&&!c;this.handleOnSwipedTo(u,h)}}},{key:\"handleOnSwipedTo\",value:function(e,t){var n=this.state,i=n.currentIndex,r=n.isTransitioning,a=i;!this.sufficientSwipe()&&!t||r||(a+=e),(-1===e&&!this.canSlideLeft()||1===e&&!this.canSlideRight())&&(a=i),this.unthrottledSlideToIndex(a)}},{key:\"handleTouchMove\",value:function(e){this.state.swipingLeftRight&&e.preventDefault()}},{key:\"handleMouseDown\",value:function(){this.imageGallery.current.classList.add(\"image-gallery-using-mouse\")}},{key:\"handleKeyDown\",value:function(e){var t=this.props,n=t.disableKeyDown,i=t.useBrowserFullscreen,r=this.state.isFullscreen;if(this.imageGallery.current.classList.remove(\"image-gallery-using-mouse\"),!n)switch(parseInt(e.keyCode||e.which||0,10)){case 37:this.canSlideLeft()&&!this.playPauseIntervalId&&this.slideLeft(e);break;case 39:this.canSlideRight()&&!this.playPauseIntervalId&&this.slideRight(e);break;case 27:r&&!i&&this.exitFullScreen()}}},{key:\"handleImageError\",value:function(e){var t=this.props.onErrorImageURL;t&&-1===e.target.src.indexOf(t)&&(e.target.src=t)}},{key:\"removeThumbnailsResizeObserver\",value:function(){this.resizeThumbnailWrapperObserver&&this.thumbnailsWrapper&&this.thumbnailsWrapper.current&&(this.resizeThumbnailWrapperObserver.unobserve(this.thumbnailsWrapper.current),this.resizeThumbnailWrapperObserver=null)}},{key:\"removeResizeObserver\",value:function(){this.resizeSlideWrapperObserver&&this.imageGallerySlideWrapper&&this.imageGallerySlideWrapper.current&&(this.resizeSlideWrapperObserver.unobserve(this.imageGallerySlideWrapper.current),this.resizeSlideWrapperObserver=null),this.removeThumbnailsResizeObserver()}},{key:\"handleResize\",value:function(){var e=this.state.currentIndex;this.imageGallery&&(this.imageGallery&&this.imageGallery.current&&this.setState({galleryWidth:this.imageGallery.current.offsetWidth}),this.imageGallerySlideWrapper&&this.imageGallerySlideWrapper.current&&this.setState({gallerySlideWrapperHeight:this.imageGallerySlideWrapper.current.offsetHeight}),this.setThumbsTranslate(-this.getThumbsTranslate(e)))}},{key:\"initSlideWrapperResizeObserver\",value:function(e){var t=this;e&&!e.current||(this.resizeSlideWrapperObserver=new Z(R((function(e){e&&e.forEach((function(e){t.setState({thumbnailsWrapperWidth:e.contentRect.width},t.handleResize)}))}),50)),this.resizeSlideWrapperObserver.observe(e.current))}},{key:\"initThumbnailWrapperResizeObserver\",value:function(e){var t=this;e&&!e.current||(this.resizeThumbnailWrapperObserver=new Z(R((function(e){e&&e.forEach((function(e){t.setState({thumbnailsWrapperHeight:e.contentRect.height},t.handleResize)}))}),50)),this.resizeThumbnailWrapperObserver.observe(e.current))}},{key:\"toggleFullScreen\",value:function(){this.state.isFullscreen?this.exitFullScreen():this.fullScreen()}},{key:\"togglePlay\",value:function(){this.playPauseIntervalId?this.pause():this.play()}},{key:\"handleScreenChange\",value:function(){var e=this.props,t=e.onScreenChange,n=e.useBrowserFullscreen,i=document.fullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement,r=this.imageGallery.current===i;t&&t(r),n&&this.setState({isFullscreen:r})}},{key:\"slideToIndex\",value:function(e,t){var n=this.state,i=n.currentIndex,r=n.isTransitioning,a=this.props,s=a.items,o=a.slideDuration,l=a.onBeforeSlide;if(!r){t&&this.playPauseIntervalId&&(this.pause(!1),this.play(!1));var u=s.length-1,c=e;e<0?c=u:e>u&&(c=0),l&&c!==i&&l(c),this.setState({previousIndex:i,currentIndex:c,isTransitioning:c!==i,currentSlideOffset:0,slideStyle:{transition:\"all \".concat(o,\"ms ease-out\")}},this.onSliding)}}},{key:\"slideLeft\",value:function(e){var t=this.props.isRTL;this.slideTo(e,t?\"right\":\"left\")}},{key:\"slideRight\",value:function(e){var t=this.props.isRTL;this.slideTo(e,t?\"left\":\"right\")}},{key:\"slideTo\",value:function(e,t){var n=this,i=this.state,r=i.currentIndex,a=i.currentSlideOffset,s=i.isTransitioning,o=this.props.items,l=r+(\"left\"===t?-1:1);s||(2===o.length?this.setState({currentSlideOffset:a+(\"left\"===t?.001:-.001),slideStyle:{transition:\"none\"}},(function(){window.setTimeout((function(){return n.slideToIndex(l,e)}),25)})):this.slideToIndex(l,e))}},{key:\"handleThumbnailMouseOver\",value:function(e,t){this.props.slideOnThumbnailOver&&this.onThumbnailMouseOver(e,t)}},{key:\"handleThumbnailKeyUp\",value:function(e,t){Re(e)&&this.onThumbnailClick(e,t)}},{key:\"handleSlideKeyUp\",value:function(e){Re(e)&&(0,this.props.onClick)(e)}},{key:\"isThumbnailVertical\",value:function(){var e=this.props.thumbnailPosition;return\"left\"===e||\"right\"===e}},{key:\"addScreenChangeEvent\",value:function(){var e=this;xe.forEach((function(t){document.addEventListener(t,e.handleScreenChange)}))}},{key:\"removeScreenChangeEvent\",value:function(){var e=this;xe.forEach((function(t){document.removeEventListener(t,e.handleScreenChange)}))}},{key:\"fullScreen\",value:function(){var e=this.props.useBrowserFullscreen,t=this.imageGallery.current;e?t.requestFullscreen?t.requestFullscreen():t.msRequestFullscreen?t.msRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():this.setModalFullscreen(!0):this.setModalFullscreen(!0),this.setState({isFullscreen:!0})}},{key:\"exitFullScreen\",value:function(){var e=this.state.isFullscreen,t=this.props.useBrowserFullscreen;e&&(t?document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen?document.msExitFullscreen():this.setModalFullscreen(!1):this.setModalFullscreen(!1),this.setState({isFullscreen:!1}))}},{key:\"pauseOrPlay\",value:function(){var e=this.props.infinite,t=this.state.currentIndex;e||this.canSlideRight()?this.slideToIndex(t+1):this.pause()}},{key:\"play\",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.props,n=t.onPlay,i=t.slideInterval,r=t.slideDuration,a=this.state.currentIndex;this.playPauseIntervalId||(this.setState({isPlaying:!0}),this.playPauseIntervalId=window.setInterval(this.pauseOrPlay,Math.max(i,r)),n&&e&&n(a))}},{key:\"pause\",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.props.onPause,n=this.state.currentIndex;this.playPauseIntervalId&&(window.clearInterval(this.playPauseIntervalId),this.playPauseIntervalId=null,this.setState({isPlaying:!1}),t&&e&&t(n))}},{key:\"isImageLoaded\",value:function(e){return!!this.loadedImages[e.original]||(this.loadedImages[e.original]=!0,!1)}},{key:\"handleImageLoaded\",value:function(e,t){var n=this.props.onImageLoad;!this.loadedImages[t]&&n&&(this.loadedImages[t]=!0,n(e))}},{key:\"renderItem\",value:function(e){var t=this.state.isFullscreen,n=this.props.onImageError||this.handleImageError;return a().createElement(ie,{description:e.description,fullscreen:e.fullscreen,handleImageLoaded:this.handleImageLoaded,isFullscreen:t,onImageError:n,original:e.original,originalAlt:e.originalAlt,originalHeight:e.originalHeight,originalWidth:e.originalWidth,originalTitle:e.originalTitle,sizes:e.sizes,loading:e.loading,srcSet:e.srcSet})}},{key:\"renderThumbInner\",value:function(e){var t=this.props.onThumbnailError||this.handleImageError;return a().createElement(\"span\",{className:\"image-gallery-thumbnail-inner\"},a().createElement(\"img\",{className:\"image-gallery-thumbnail-image\",src:e.thumbnail,height:e.thumbnailHeight,width:e.thumbnailWidth,alt:e.thumbnailAlt,title:e.thumbnailTitle,loading:e.thumbnailLoading,onError:t}),e.thumbnailLabel&&a().createElement(\"div\",{className:\"image-gallery-thumbnail-label\"},e.thumbnailLabel))}},{key:\"render\",value:function(){var e=this.state,n=e.currentIndex,i=e.isFullscreen,r=e.modalFullscreen,s=e.isPlaying,o=this.props,l=o.additionalClass,u=o.disableThumbnailSwipe,c=o.indexSeparator,h=o.isRTL,d=o.items,f=o.thumbnailPosition,p=o.renderFullscreenButton,m=o.renderCustomControls,g=o.renderLeftNav,v=o.renderRightNav,b=o.showBullets,y=o.showFullscreenButton,w=o.showIndex,T=o.showThumbnails,S=o.showNav,O=o.showPlayButton,E=o.renderPlayPauseButton,k=this.getThumbnailStyle(),I=this.getSlideItems(),x=I.slides,_=I.thumbnails,R=I.bullets,L=t(\"image-gallery-slide-wrapper\",this.getThumbnailPositionClassName(f),{\"image-gallery-rtl\":h}),P=a().createElement(\"div\",{ref:this.imageGallerySlideWrapper,className:L},m&&m(),this.canSlide()?a().createElement(a().Fragment,null,S&&a().createElement(a().Fragment,null,g(this.slideLeft,!this.canSlideLeft()),v(this.slideRight,!this.canSlideRight())),a().createElement(ve,{className:\"image-gallery-swipe\",delta:0,onSwiping:this.handleSwiping,onSwiped:this.handleOnSwiped},a().createElement(\"div\",{className:\"image-gallery-slides\"},x))):a().createElement(\"div\",{className:\"image-gallery-slides\"},x),O&&E(this.togglePlay,s),b&&a().createElement(\"div\",{className:\"image-gallery-bullets\"},a().createElement(\"div\",{className:\"image-gallery-bullets-container\",role:\"navigation\",\"aria-label\":\"Bullet Navigation\"},R)),y&&p(this.toggleFullScreen,i),w&&a().createElement(\"div\",{className:\"image-gallery-index\"},a().createElement(\"span\",{className:\"image-gallery-index-current\"},n+1),a().createElement(\"span\",{className:\"image-gallery-index-separator\"},c),a().createElement(\"span\",{className:\"image-gallery-index-total\"},d.length))),M=t(\"image-gallery\",l,{\"fullscreen-modal\":r}),W=t(\"image-gallery-content\",this.getThumbnailPositionClassName(f),{fullscreen:i}),D=t(\"image-gallery-thumbnails-wrapper\",this.getThumbnailPositionClassName(f),{\"thumbnails-wrapper-rtl\":!this.isThumbnailVertical()&&h},{\"thumbnails-swipe-horizontal\":!this.isThumbnailVertical()&&!u},{\"thumbnails-swipe-vertical\":this.isThumbnailVertical()&&!u});return a().createElement(\"div\",{ref:this.imageGallery,className:M,\"aria-live\":\"polite\"},a().createElement(\"div\",{className:W},(\"bottom\"===f||\"right\"===f)&&P,T&&_.length>0?a().createElement(ve,{className:D,delta:0,onSwiping:!u&&this.handleThumbnailSwiping,onSwiped:!u&&this.handleOnThumbnailSwiped},a().createElement(\"div\",{className:\"image-gallery-thumbnails\",ref:this.thumbnailsWrapper,style:this.getThumbnailBarHeight()},a().createElement(\"nav\",{ref:this.thumbnails,className:\"image-gallery-thumbnails-container\",style:k,\"aria-label\":\"Thumbnail Navigation\"},_))):null,(\"top\"===f||\"left\"===f)&&P))}}],i&&Se(n.prototype,i),l}(a().Component);Le.propTypes={flickThreshold:te.number,items:(0,te.arrayOf)((0,te.shape)({bulletClass:te.string,bulletOnClick:te.func,description:te.string,original:te.string,originalHeight:te.number,originalWidth:te.number,loading:te.string,thumbnailHeight:te.number,thumbnailWidth:te.number,thumbnailLoading:te.string,fullscreen:te.string,originalAlt:te.string,originalTitle:te.string,thumbnail:te.string,thumbnailAlt:te.string,thumbnailLabel:te.string,thumbnailTitle:te.string,originalClass:te.string,thumbnailClass:te.string,renderItem:te.func,renderThumbInner:te.func,imageSet:_e,srcSet:te.string,sizes:te.string})).isRequired,showNav:te.bool,autoPlay:te.bool,lazyLoad:te.bool,infinite:te.bool,showIndex:te.bool,showBullets:te.bool,showThumbnails:te.bool,showPlayButton:te.bool,showFullscreenButton:te.bool,disableThumbnailScroll:te.bool,disableKeyDown:te.bool,disableSwipe:te.bool,disableThumbnailSwipe:te.bool,useBrowserFullscreen:te.bool,onErrorImageURL:te.string,indexSeparator:te.string,thumbnailPosition:(0,te.oneOf)([\"top\",\"bottom\",\"left\",\"right\"]),startIndex:te.number,slideDuration:te.number,slideInterval:te.number,slideOnThumbnailOver:te.bool,swipeThreshold:te.number,swipingTransitionDuration:te.number,swipingThumbnailTransitionDuration:te.number,onSlide:te.func,onBeforeSlide:te.func,onScreenChange:te.func,onPause:te.func,onPlay:te.func,onClick:te.func,onImageLoad:te.func,onImageError:te.func,onTouchMove:te.func,onTouchEnd:te.func,onTouchStart:te.func,onMouseOver:te.func,onMouseLeave:te.func,onThumbnailError:te.func,onThumbnailClick:te.func,renderCustomControls:te.func,renderLeftNav:te.func,renderRightNav:te.func,renderPlayPauseButton:te.func,renderFullscreenButton:te.func,renderItem:te.func,renderThumbInner:te.func,stopPropagation:te.bool,additionalClass:te.string,useTranslate3D:te.bool,isRTL:te.bool,useWindowKeyDown:te.bool},Le.defaultProps={onErrorImageURL:\"\",additionalClass:\"\",showNav:!0,autoPlay:!1,lazyLoad:!1,infinite:!0,showIndex:!1,showBullets:!1,showThumbnails:!0,showPlayButton:!0,showFullscreenButton:!0,disableThumbnailScroll:!1,disableKeyDown:!1,disableSwipe:!1,disableThumbnailSwipe:!1,useTranslate3D:!0,isRTL:!1,useBrowserFullscreen:!0,flickThreshold:.4,stopPropagation:!1,indexSeparator:\" / \",thumbnailPosition:\"bottom\",startIndex:0,slideDuration:450,swipingTransitionDuration:0,swipingThumbnailTransitionDuration:0,onSlide:null,onBeforeSlide:null,onScreenChange:null,onPause:null,onPlay:null,onClick:null,onImageLoad:null,onImageError:null,onTouchMove:null,onTouchEnd:null,onTouchStart:null,onMouseOver:null,onMouseLeave:null,onThumbnailError:null,onThumbnailClick:null,renderCustomControls:null,renderThumbInner:null,renderItem:null,slideInterval:3e3,slideOnThumbnailOver:!1,swipeThreshold:30,renderLeftNav:function(e,t){return a().createElement(ce,{onClick:e,disabled:t})},renderRightNav:function(e,t){return a().createElement(de,{onClick:e,disabled:t})},renderPlayPauseButton:function(e,t){return a().createElement(pe,{onClick:e,isPlaying:t})},renderFullscreenButton:function(e,t){return a().createElement(le,{onClick:e,isFullscreen:t})},useWindowKeyDown:!0};const Pe=Le})(),r})()}));","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_DATA_URL_KEY = exports.INIT_MAX_NUMBER = exports.DEFAULT_NULL_INDEX = void 0;\nexports.DEFAULT_NULL_INDEX = -1;\nexports.INIT_MAX_NUMBER = 1000;\nexports.DEFAULT_DATA_URL_KEY = 'dataURL';\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar utils_1 = require(\"./utils\");\nvar validation_1 = require(\"./validation\");\nvar constants_1 = require(\"./constants\");\nvar ReactImageUploading = function (_a) {\n var _b = _a.value, value = _b === void 0 ? [] : _b, onChange = _a.onChange, onError = _a.onError, children = _a.children, _c = _a.dataURLKey, dataURLKey = _c === void 0 ? constants_1.DEFAULT_DATA_URL_KEY : _c, _d = _a.multiple, multiple = _d === void 0 ? false : _d, _e = _a.maxNumber, maxNumber = _e === void 0 ? constants_1.INIT_MAX_NUMBER : _e, acceptType = _a.acceptType, maxFileSize = _a.maxFileSize, resolutionWidth = _a.resolutionWidth, resolutionHeight = _a.resolutionHeight, resolutionType = _a.resolutionType, _f = _a.inputProps, inputProps = _f === void 0 ? {} : _f, _g = _a.allowNonImageType, allowNonImageType = _g === void 0 ? false : _g;\n var inValue = value || [];\n var inputRef = react_1.useRef(null);\n var _h = react_1.useState(constants_1.DEFAULT_NULL_INDEX), keyUpdate = _h[0], setKeyUpdate = _h[1];\n var _j = react_1.useState(null), errors = _j[0], setErrors = _j[1];\n var _k = react_1.useState(false), isDragging = _k[0], setIsDragging = _k[1];\n var handleClickInput = react_1.useCallback(function () { return utils_1.openFileDialog(inputRef); }, [\n inputRef,\n ]);\n var onImageUpload = react_1.useCallback(function () {\n setKeyUpdate(constants_1.DEFAULT_NULL_INDEX);\n handleClickInput();\n }, [handleClickInput]);\n var onImageRemoveAll = react_1.useCallback(function () {\n onChange === null || onChange === void 0 ? void 0 : onChange([]);\n }, [onChange]);\n var onImageRemove = function (index) {\n var updatedList = __spreadArrays(inValue);\n if (Array.isArray(index)) {\n index.forEach(function (i) {\n updatedList.splice(i, 1);\n });\n }\n else {\n updatedList.splice(index, 1);\n }\n onChange === null || onChange === void 0 ? void 0 : onChange(updatedList);\n };\n var onImageUpdate = function (index) {\n setKeyUpdate(index);\n handleClickInput();\n };\n var validate = function (fileList) { return __awaiter(void 0, void 0, void 0, function () {\n var errorsValidation;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, validation_1.getErrorValidation({\n fileList: fileList,\n maxFileSize: maxFileSize,\n maxNumber: maxNumber,\n acceptType: acceptType,\n keyUpdate: keyUpdate,\n resolutionType: resolutionType,\n resolutionWidth: resolutionWidth,\n resolutionHeight: resolutionHeight,\n value: inValue,\n allowNonImageType: allowNonImageType,\n })];\n case 1:\n errorsValidation = _a.sent();\n if (errorsValidation) {\n setErrors(errorsValidation);\n onError === null || onError === void 0 ? void 0 : onError(errorsValidation, fileList);\n return [2 /*return*/, false];\n }\n errors && setErrors(null);\n return [2 /*return*/, true];\n }\n });\n }); };\n var handleChange = function (files) { return __awaiter(void 0, void 0, void 0, function () {\n var fileList, checkValidate, updatedFileList, updatedIndexes, firstFile, i;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!files)\n return [2 /*return*/];\n return [4 /*yield*/, utils_1.getListFiles(files, dataURLKey)];\n case 1:\n fileList = _a.sent();\n if (!fileList.length)\n return [2 /*return*/];\n return [4 /*yield*/, validate(fileList)];\n case 2:\n checkValidate = _a.sent();\n if (!checkValidate)\n return [2 /*return*/];\n updatedIndexes = [];\n if (keyUpdate > constants_1.DEFAULT_NULL_INDEX) {\n firstFile = fileList[0];\n updatedFileList = __spreadArrays(inValue);\n updatedFileList[keyUpdate] = firstFile;\n updatedIndexes.push(keyUpdate);\n }\n else if (multiple) {\n updatedFileList = __spreadArrays(inValue, fileList);\n for (i = inValue.length; i < updatedFileList.length; i += 1) {\n updatedIndexes.push(i);\n }\n }\n else {\n updatedFileList = [fileList[0]];\n updatedIndexes.push(0);\n }\n onChange === null || onChange === void 0 ? void 0 : onChange(updatedFileList, updatedIndexes);\n return [2 /*return*/];\n }\n });\n }); };\n var onInputChange = function (e) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, handleChange(e.target.files)];\n case 1:\n _a.sent();\n keyUpdate > constants_1.DEFAULT_NULL_INDEX && setKeyUpdate(constants_1.DEFAULT_NULL_INDEX);\n if (inputRef.current)\n inputRef.current.value = '';\n return [2 /*return*/];\n }\n });\n }); };\n var acceptTypeString = react_1.useMemo(function () { return utils_1.getAcceptTypeString(acceptType, allowNonImageType); }, [acceptType, allowNonImageType]);\n var handleDrag = function (e) {\n e.preventDefault();\n e.stopPropagation();\n };\n var handleDragIn = function (e) {\n e.preventDefault();\n e.stopPropagation();\n if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {\n setIsDragging(true);\n }\n };\n var handleDragOut = function (e) {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n };\n var handleDrop = function (e) {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n handleChange(e.dataTransfer.files);\n }\n };\n var handleDragStart = function (e) {\n e.preventDefault();\n e.stopPropagation();\n e.dataTransfer.clearData();\n };\n return (react_1.default.createElement(react_1.default.Fragment, null,\n react_1.default.createElement(\"input\", __assign({ type: \"file\", accept: acceptTypeString, ref: inputRef, multiple: multiple && keyUpdate === constants_1.DEFAULT_NULL_INDEX, onChange: onInputChange, style: { display: 'none' } }, inputProps)), children === null || children === void 0 ? void 0 :\n children({\n imageList: inValue,\n onImageUpload: onImageUpload,\n onImageRemoveAll: onImageRemoveAll,\n onImageUpdate: onImageUpdate,\n onImageRemove: onImageRemove,\n errors: errors,\n dragProps: {\n onDrop: handleDrop,\n onDragEnter: handleDragIn,\n onDragLeave: handleDragOut,\n onDragOver: handleDrag,\n onDragStart: handleDragStart,\n },\n isDragging: isDragging,\n })));\n};\nexports.default = ReactImageUploading;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getListFiles = exports.getImage = exports.getBase64 = exports.getAcceptTypeString = exports.openFileDialog = void 0;\nexports.openFileDialog = function (inputRef) {\n if (inputRef.current)\n inputRef.current.click();\n};\nexports.getAcceptTypeString = function (acceptType, allowNonImageType) {\n if (acceptType === null || acceptType === void 0 ? void 0 : acceptType.length)\n return acceptType.map(function (item) { return \".\" + item; }).join(', ');\n if (allowNonImageType)\n return '';\n return 'image/*';\n};\nexports.getBase64 = function (file) {\n var reader = new FileReader();\n return new Promise(function (resolve) {\n reader.addEventListener('load', function () { return resolve(String(reader.result)); });\n reader.readAsDataURL(file);\n });\n};\nexports.getImage = function (file) {\n var image = new Image();\n return new Promise(function (resolve) {\n image.addEventListener('load', function () { return resolve(image); });\n image.src = URL.createObjectURL(file);\n });\n};\nexports.getListFiles = function (files, dataURLKey) {\n var promiseFiles = [];\n for (var i = 0; i < files.length; i += 1) {\n promiseFiles.push(exports.getBase64(files[i]));\n }\n return Promise.all(promiseFiles).then(function (fileListBase64) {\n var fileList = fileListBase64.map(function (base64, index) {\n var _a;\n return (_a = {},\n _a[dataURLKey] = base64,\n _a.file = files[index],\n _a);\n });\n return fileList;\n });\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getErrorValidation = exports.isMaxNumberValid = exports.isAcceptTypeValid = exports.isMaxFileSizeValid = exports.isImageValid = exports.isResolutionValid = void 0;\nvar constants_1 = require(\"./constants\");\nvar utils_1 = require(\"./utils\");\nexports.isResolutionValid = function (image, resolutionType, resolutionWidth, resolutionHeight) {\n if (resolutionWidth === void 0) { resolutionWidth = 0; }\n if (resolutionHeight === void 0) { resolutionHeight = 1; }\n if (!resolutionWidth || !resolutionHeight || !image.width || !image.height)\n return true;\n switch (resolutionType) {\n case 'absolute': {\n if (image.width === resolutionWidth && image.height === resolutionHeight)\n return true;\n break;\n }\n case 'ratio': {\n var ratio = resolutionWidth / resolutionHeight;\n if (image.width / image.height === ratio)\n return true;\n break;\n }\n case 'less': {\n if (image.width <= resolutionWidth && image.height <= resolutionHeight)\n return true;\n break;\n }\n case 'more': {\n if (image.width >= resolutionWidth && image.height >= resolutionHeight)\n return true;\n break;\n }\n default:\n break;\n }\n return false;\n};\nexports.isImageValid = function (fileType) {\n if (fileType.includes('image')) {\n return true;\n }\n return false;\n};\nexports.isMaxFileSizeValid = function (fileSize, maxFileSize) {\n return maxFileSize ? fileSize <= maxFileSize : true;\n};\nexports.isAcceptTypeValid = function (acceptType, fileName) {\n if (acceptType && acceptType.length > 0) {\n var type_1 = fileName.split('.').pop() || '';\n if (acceptType.findIndex(function (item) { return item.toLowerCase() === type_1.toLowerCase(); }) < 0)\n return false;\n }\n return true;\n};\nexports.isMaxNumberValid = function (totalNumber, maxNumber, keyUpdate) {\n if (maxNumber !== 0 && !maxNumber)\n return true;\n if (keyUpdate === constants_1.DEFAULT_NULL_INDEX) {\n if (totalNumber <= maxNumber)\n return true;\n }\n else if (totalNumber <= maxNumber + 1)\n return true;\n return false;\n};\nexports.getErrorValidation = function (_a) {\n var fileList = _a.fileList, value = _a.value, maxNumber = _a.maxNumber, keyUpdate = _a.keyUpdate, acceptType = _a.acceptType, maxFileSize = _a.maxFileSize, resolutionType = _a.resolutionType, resolutionWidth = _a.resolutionWidth, resolutionHeight = _a.resolutionHeight, allowNonImageType = _a.allowNonImageType;\n return __awaiter(void 0, void 0, void 0, function () {\n var newErrors, i, file, image, checkRes;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n newErrors = {};\n if (!!exports.isMaxNumberValid(fileList.length + value.length, maxNumber, keyUpdate)) return [3 /*break*/, 1];\n newErrors.maxNumber = true;\n return [3 /*break*/, 5];\n case 1:\n i = 0;\n _b.label = 2;\n case 2:\n if (!(i < fileList.length)) return [3 /*break*/, 5];\n file = fileList[i].file;\n if (!file)\n return [3 /*break*/, 4];\n if (!allowNonImageType && !exports.isImageValid(file.type)) {\n newErrors.acceptType = true;\n return [3 /*break*/, 5];\n }\n if (!exports.isAcceptTypeValid(acceptType, file.name)) {\n newErrors.acceptType = true;\n return [3 /*break*/, 5];\n }\n if (!exports.isMaxFileSizeValid(file.size, maxFileSize)) {\n newErrors.maxFileSize = true;\n return [3 /*break*/, 5];\n }\n if (!resolutionType) return [3 /*break*/, 4];\n return [4 /*yield*/, utils_1.getImage(file)];\n case 3:\n image = _b.sent();\n checkRes = exports.isResolutionValid(image, resolutionType, resolutionWidth, resolutionHeight);\n if (!checkRes) {\n newErrors.resolution = true;\n return [3 /*break*/, 5];\n }\n _b.label = 4;\n case 4:\n i += 1;\n return [3 /*break*/, 2];\n case 5:\n if (Object.values(newErrors).find(Boolean))\n return [2 /*return*/, newErrors];\n return [2 /*return*/, null];\n }\n });\n });\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _default = function _default(position, metric, axis) {\n var positionPercent = position === 0 ? position : position + metric;\n var positionCss = axis === 'horizontal' ? [positionPercent, 0, 0] : [0, positionPercent, 0];\n var transitionProp = 'translate3d';\n var translatedPosition = '(' + positionCss.join(',') + ')';\n return transitionProp + translatedPosition;\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fadeAnimationHandler = exports.slideStopSwipingHandler = exports.slideSwipeAnimationHandler = exports.slideAnimationHandler = void 0;\n\nvar _react = require(\"react\");\n\nvar _CSSTranslate = _interopRequireDefault(require(\"../../CSSTranslate\"));\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Main animation handler for the default 'sliding' style animation\n * @param props\n * @param state\n */\nvar slideAnimationHandler = function slideAnimationHandler(props, state) {\n var returnStyles = {};\n var selectedItem = state.selectedItem;\n var previousItem = selectedItem;\n var lastPosition = _react.Children.count(props.children) - 1;\n var needClonedSlide = props.infiniteLoop && (selectedItem < 0 || selectedItem > lastPosition); // Handle list position if it needs a clone\n\n if (needClonedSlide) {\n if (previousItem < 0) {\n if (props.centerMode && props.centerSlidePercentage && props.axis === 'horizontal') {\n returnStyles.itemListStyle = (0, _utils.setPosition)(-(lastPosition + 2) * props.centerSlidePercentage - (100 - props.centerSlidePercentage) / 2, props.axis);\n } else {\n returnStyles.itemListStyle = (0, _utils.setPosition)(-(lastPosition + 2) * 100, props.axis);\n }\n } else if (previousItem > lastPosition) {\n returnStyles.itemListStyle = (0, _utils.setPosition)(0, props.axis);\n }\n\n return returnStyles;\n }\n\n var currentPosition = (0, _utils.getPosition)(selectedItem, props); // if 3d is available, let's take advantage of the performance of transform\n\n var transformProp = (0, _CSSTranslate.default)(currentPosition, '%', props.axis);\n var transitionTime = props.transitionTime + 'ms';\n returnStyles.itemListStyle = {\n WebkitTransform: transformProp,\n msTransform: transformProp,\n OTransform: transformProp,\n transform: transformProp\n };\n\n if (!state.swiping) {\n returnStyles.itemListStyle = _objectSpread(_objectSpread({}, returnStyles.itemListStyle), {}, {\n WebkitTransitionDuration: transitionTime,\n MozTransitionDuration: transitionTime,\n OTransitionDuration: transitionTime,\n transitionDuration: transitionTime,\n msTransitionDuration: transitionTime\n });\n }\n\n return returnStyles;\n};\n/**\n * Swiping animation handler for the default 'sliding' style animation\n * @param delta\n * @param props\n * @param state\n * @param setState\n */\n\n\nexports.slideAnimationHandler = slideAnimationHandler;\n\nvar slideSwipeAnimationHandler = function slideSwipeAnimationHandler(delta, props, state, setState) {\n var returnStyles = {};\n var isHorizontal = props.axis === 'horizontal';\n\n var childrenLength = _react.Children.count(props.children);\n\n var initialBoundry = 0;\n var currentPosition = (0, _utils.getPosition)(state.selectedItem, props);\n var finalBoundry = props.infiniteLoop ? (0, _utils.getPosition)(childrenLength - 1, props) - 100 : (0, _utils.getPosition)(childrenLength - 1, props);\n var axisDelta = isHorizontal ? delta.x : delta.y;\n var handledDelta = axisDelta; // prevent user from swiping left out of boundaries\n\n if (currentPosition === initialBoundry && axisDelta > 0) {\n handledDelta = 0;\n } // prevent user from swiping right out of boundaries\n\n\n if (currentPosition === finalBoundry && axisDelta < 0) {\n handledDelta = 0;\n }\n\n var position = currentPosition + 100 / (state.itemSize / handledDelta);\n var hasMoved = Math.abs(axisDelta) > props.swipeScrollTolerance;\n\n if (props.infiniteLoop && hasMoved) {\n // When allowing infinite loop, if we slide left from position 0 we reveal the cloned last slide that appears before it\n // if we slide even further we need to jump to other side so it can continue - and vice versa for the last slide\n if (state.selectedItem === 0 && position > -100) {\n position -= childrenLength * 100;\n } else if (state.selectedItem === childrenLength - 1 && position < -childrenLength * 100) {\n position += childrenLength * 100;\n }\n }\n\n if (!props.preventMovementUntilSwipeScrollTolerance || hasMoved || state.swipeMovementStarted) {\n if (!state.swipeMovementStarted) {\n setState({\n swipeMovementStarted: true\n });\n }\n\n returnStyles.itemListStyle = (0, _utils.setPosition)(position, props.axis);\n } //allows scroll if the swipe was within the tolerance\n\n\n if (hasMoved && !state.cancelClick) {\n setState({\n cancelClick: true\n });\n }\n\n return returnStyles;\n};\n/**\n * Default 'sliding' style animination handler for when a swipe action stops.\n * @param props\n * @param state\n */\n\n\nexports.slideSwipeAnimationHandler = slideSwipeAnimationHandler;\n\nvar slideStopSwipingHandler = function slideStopSwipingHandler(props, state) {\n var currentPosition = (0, _utils.getPosition)(state.selectedItem, props);\n var itemListStyle = (0, _utils.setPosition)(currentPosition, props.axis);\n return {\n itemListStyle: itemListStyle\n };\n};\n/**\n * Main animation handler for the default 'fade' style animation\n * @param props\n * @param state\n */\n\n\nexports.slideStopSwipingHandler = slideStopSwipingHandler;\n\nvar fadeAnimationHandler = function fadeAnimationHandler(props, state) {\n var transitionTime = props.transitionTime + 'ms';\n var transitionTimingFunction = 'ease-in-out';\n var slideStyle = {\n position: 'absolute',\n display: 'block',\n zIndex: -2,\n minHeight: '100%',\n opacity: 0,\n top: 0,\n right: 0,\n left: 0,\n bottom: 0,\n transitionTimingFunction: transitionTimingFunction,\n msTransitionTimingFunction: transitionTimingFunction,\n MozTransitionTimingFunction: transitionTimingFunction,\n WebkitTransitionTimingFunction: transitionTimingFunction,\n OTransitionTimingFunction: transitionTimingFunction\n };\n\n if (!state.swiping) {\n slideStyle = _objectSpread(_objectSpread({}, slideStyle), {}, {\n WebkitTransitionDuration: transitionTime,\n MozTransitionDuration: transitionTime,\n OTransitionDuration: transitionTime,\n transitionDuration: transitionTime,\n msTransitionDuration: transitionTime\n });\n }\n\n return {\n slideStyle: slideStyle,\n selectedStyle: _objectSpread(_objectSpread({}, slideStyle), {}, {\n opacity: 1,\n position: 'relative'\n }),\n prevStyle: _objectSpread({}, slideStyle)\n };\n};\n\nexports.fadeAnimationHandler = fadeAnimationHandler;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _reactEasySwipe = _interopRequireDefault(require(\"react-easy-swipe\"));\n\nvar _cssClasses = _interopRequireDefault(require(\"../../cssClasses\"));\n\nvar _Thumbs = _interopRequireDefault(require(\"../Thumbs\"));\n\nvar _document = _interopRequireDefault(require(\"../../shims/document\"));\n\nvar _window = _interopRequireDefault(require(\"../../shims/window\"));\n\nvar _utils = require(\"./utils\");\n\nvar _animations = require(\"./animations\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Carousel = /*#__PURE__*/function (_React$Component) {\n _inherits(Carousel, _React$Component);\n\n var _super = _createSuper(Carousel);\n\n // @ts-ignore\n function Carousel(props) {\n var _this;\n\n _classCallCheck(this, Carousel);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"thumbsRef\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"carouselWrapperRef\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"listRef\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"itemsRef\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"timer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"animationHandler\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"setThumbsRef\", function (node) {\n _this.thumbsRef = node;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setCarouselWrapperRef\", function (node) {\n _this.carouselWrapperRef = node;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setListRef\", function (node) {\n _this.listRef = node;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setItemsRef\", function (node, index) {\n if (!_this.itemsRef) {\n _this.itemsRef = [];\n }\n\n _this.itemsRef[index] = node;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"autoPlay\", function () {\n if (_react.Children.count(_this.props.children) <= 1) {\n return;\n }\n\n _this.clearAutoPlay();\n\n if (!_this.props.autoPlay) {\n return;\n }\n\n _this.timer = setTimeout(function () {\n _this.increment();\n }, _this.props.interval);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clearAutoPlay\", function () {\n if (_this.timer) clearTimeout(_this.timer);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"resetAutoPlay\", function () {\n _this.clearAutoPlay();\n\n _this.autoPlay();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"stopOnHover\", function () {\n _this.setState({\n isMouseEntered: true\n }, _this.clearAutoPlay);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"startOnLeave\", function () {\n _this.setState({\n isMouseEntered: false\n }, _this.autoPlay);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"isFocusWithinTheCarousel\", function () {\n if (!_this.carouselWrapperRef) {\n return false;\n }\n\n if ((0, _document.default)().activeElement === _this.carouselWrapperRef || _this.carouselWrapperRef.contains((0, _document.default)().activeElement)) {\n return true;\n }\n\n return false;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"navigateWithKeyboard\", function (e) {\n if (!_this.isFocusWithinTheCarousel()) {\n return;\n }\n\n var axis = _this.props.axis;\n var isHorizontal = axis === 'horizontal';\n var keyNames = {\n ArrowUp: 38,\n ArrowRight: 39,\n ArrowDown: 40,\n ArrowLeft: 37\n };\n var nextKey = isHorizontal ? keyNames.ArrowRight : keyNames.ArrowDown;\n var prevKey = isHorizontal ? keyNames.ArrowLeft : keyNames.ArrowUp;\n\n if (nextKey === e.keyCode) {\n _this.increment();\n } else if (prevKey === e.keyCode) {\n _this.decrement();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateSizes\", function () {\n if (!_this.state.initialized || !_this.itemsRef || _this.itemsRef.length === 0) {\n return;\n }\n\n var isHorizontal = _this.props.axis === 'horizontal';\n var firstItem = _this.itemsRef[0];\n\n if (!firstItem) {\n return;\n }\n\n var itemSize = isHorizontal ? firstItem.clientWidth : firstItem.clientHeight;\n\n _this.setState({\n itemSize: itemSize\n });\n\n if (_this.thumbsRef) {\n _this.thumbsRef.updateSizes();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setMountState\", function () {\n _this.setState({\n hasMount: true\n });\n\n _this.updateSizes();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleClickItem\", function (index, item) {\n if (_react.Children.count(_this.props.children) === 0) {\n return;\n }\n\n if (_this.state.cancelClick) {\n _this.setState({\n cancelClick: false\n });\n\n return;\n }\n\n _this.props.onClickItem(index, item);\n\n if (index !== _this.state.selectedItem) {\n _this.setState({\n selectedItem: index\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleOnChange\", function (index, item) {\n if (_react.Children.count(_this.props.children) <= 1) {\n return;\n }\n\n _this.props.onChange(index, item);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleClickThumb\", function (index, item) {\n _this.props.onClickThumb(index, item);\n\n _this.moveTo(index);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSwipeStart\", function (event) {\n _this.setState({\n swiping: true\n });\n\n _this.props.onSwipeStart(event);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSwipeEnd\", function (event) {\n _this.setState({\n swiping: false,\n cancelClick: false,\n swipeMovementStarted: false\n });\n\n _this.props.onSwipeEnd(event);\n\n _this.clearAutoPlay();\n\n if (_this.state.autoPlay) {\n _this.autoPlay();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSwipeMove\", function (delta, event) {\n _this.props.onSwipeMove(event);\n\n var animationHandlerResponse = _this.props.swipeAnimationHandler(delta, _this.props, _this.state, _this.setState.bind(_assertThisInitialized(_this)));\n\n _this.setState(_objectSpread({}, animationHandlerResponse)); // If we have not moved, we should have an empty object returned\n // Return false to allow scrolling when not swiping\n\n\n return !!Object.keys(animationHandlerResponse).length;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"decrement\", function () {\n var positions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\n _this.moveTo(_this.state.selectedItem - (typeof positions === 'number' ? positions : 1));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"increment\", function () {\n var positions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\n _this.moveTo(_this.state.selectedItem + (typeof positions === 'number' ? positions : 1));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"moveTo\", function (position) {\n if (typeof position !== 'number') {\n return;\n }\n\n var lastPosition = _react.Children.count(_this.props.children) - 1;\n\n if (position < 0) {\n position = _this.props.infiniteLoop ? lastPosition : 0;\n }\n\n if (position > lastPosition) {\n position = _this.props.infiniteLoop ? 0 : lastPosition;\n }\n\n _this.selectItem({\n // if it's not a slider, we don't need to set position here\n selectedItem: position\n }); // don't reset auto play when stop on hover is enabled, doing so will trigger a call to auto play more than once\n // and will result in the interval function not being cleared correctly.\n\n\n if (_this.state.autoPlay && _this.state.isMouseEntered === false) {\n _this.resetAutoPlay();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onClickNext\", function () {\n _this.increment(1);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onClickPrev\", function () {\n _this.decrement(1);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSwipeForward\", function () {\n _this.increment(1);\n\n if (_this.props.emulateTouch) {\n _this.setState({\n cancelClick: true\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSwipeBackwards\", function () {\n _this.decrement(1);\n\n if (_this.props.emulateTouch) {\n _this.setState({\n cancelClick: true\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"changeItem\", function (newIndex) {\n return function (e) {\n if (!(0, _utils.isKeyboardEvent)(e) || e.key === 'Enter') {\n _this.moveTo(newIndex);\n }\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectItem\", function (state) {\n // Merge in the new state while updating updating previous item\n _this.setState(_objectSpread({\n previousItem: _this.state.selectedItem\n }, state), function () {\n // Run animation handler and update styles based on it\n _this.setState(_this.animationHandler(_this.props, _this.state));\n });\n\n _this.handleOnChange(state.selectedItem, _react.Children.toArray(_this.props.children)[state.selectedItem]);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getInitialImage\", function () {\n var selectedItem = _this.props.selectedItem;\n var item = _this.itemsRef && _this.itemsRef[selectedItem];\n var images = item && item.getElementsByTagName('img') || [];\n return images[0];\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getVariableItemHeight\", function (position) {\n var item = _this.itemsRef && _this.itemsRef[position];\n\n if (_this.state.hasMount && item && item.children.length) {\n var slideImages = item.children[0].getElementsByTagName('img') || [];\n\n if (slideImages.length > 0) {\n var image = slideImages[0];\n\n if (!image.complete) {\n // if the image is still loading, the size won't be available so we trigger a new render after it's done\n var onImageLoad = function onImageLoad() {\n _this.forceUpdate();\n\n image.removeEventListener('load', onImageLoad);\n };\n\n image.addEventListener('load', onImageLoad);\n }\n } // try to get img first, if img not there find first display tag\n\n\n var displayItem = slideImages[0] || item.children[0];\n var height = displayItem.clientHeight;\n return height > 0 ? height : null;\n }\n\n return null;\n });\n\n var initState = {\n initialized: false,\n previousItem: props.selectedItem,\n selectedItem: props.selectedItem,\n hasMount: false,\n isMouseEntered: false,\n autoPlay: props.autoPlay,\n swiping: false,\n swipeMovementStarted: false,\n cancelClick: false,\n itemSize: 1,\n itemListStyle: {},\n slideStyle: {},\n selectedStyle: {},\n prevStyle: {}\n };\n _this.animationHandler = typeof props.animationHandler === 'function' && props.animationHandler || props.animationHandler === 'fade' && _animations.fadeAnimationHandler || _animations.slideAnimationHandler;\n _this.state = _objectSpread(_objectSpread({}, initState), _this.animationHandler(props, initState));\n return _this;\n }\n\n _createClass(Carousel, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!this.props.children) {\n return;\n }\n\n this.setupCarousel();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (!prevProps.children && this.props.children && !this.state.initialized) {\n this.setupCarousel();\n }\n\n if (!prevProps.autoFocus && this.props.autoFocus) {\n this.forceFocus();\n }\n\n if (prevState.swiping && !this.state.swiping) {\n // We stopped swiping, ensure we are heading to the new/current slide and not stuck\n this.setState(_objectSpread({}, this.props.stopSwipingHandler(this.props, this.state)));\n }\n\n if (prevProps.selectedItem !== this.props.selectedItem || prevProps.centerMode !== this.props.centerMode) {\n this.updateSizes();\n this.moveTo(this.props.selectedItem);\n }\n\n if (prevProps.autoPlay !== this.props.autoPlay) {\n if (this.props.autoPlay) {\n this.setupAutoPlay();\n } else {\n this.destroyAutoPlay();\n }\n\n this.setState({\n autoPlay: this.props.autoPlay\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.destroyCarousel();\n }\n }, {\n key: \"setupCarousel\",\n value: function setupCarousel() {\n var _this2 = this;\n\n this.bindEvents();\n\n if (this.state.autoPlay && _react.Children.count(this.props.children) > 1) {\n this.setupAutoPlay();\n }\n\n if (this.props.autoFocus) {\n this.forceFocus();\n }\n\n this.setState({\n initialized: true\n }, function () {\n var initialImage = _this2.getInitialImage();\n\n if (initialImage && !initialImage.complete) {\n // if it's a carousel of images, we set the mount state after the first image is loaded\n initialImage.addEventListener('load', _this2.setMountState);\n } else {\n _this2.setMountState();\n }\n });\n }\n }, {\n key: \"destroyCarousel\",\n value: function destroyCarousel() {\n if (this.state.initialized) {\n this.unbindEvents();\n this.destroyAutoPlay();\n }\n }\n }, {\n key: \"setupAutoPlay\",\n value: function setupAutoPlay() {\n this.autoPlay();\n var carouselWrapper = this.carouselWrapperRef;\n\n if (this.props.stopOnHover && carouselWrapper) {\n carouselWrapper.addEventListener('mouseenter', this.stopOnHover);\n carouselWrapper.addEventListener('mouseleave', this.startOnLeave);\n }\n }\n }, {\n key: \"destroyAutoPlay\",\n value: function destroyAutoPlay() {\n this.clearAutoPlay();\n var carouselWrapper = this.carouselWrapperRef;\n\n if (this.props.stopOnHover && carouselWrapper) {\n carouselWrapper.removeEventListener('mouseenter', this.stopOnHover);\n carouselWrapper.removeEventListener('mouseleave', this.startOnLeave);\n }\n }\n }, {\n key: \"bindEvents\",\n value: function bindEvents() {\n // as the widths are calculated, we need to resize\n // the carousel when the window is resized\n (0, _window.default)().addEventListener('resize', this.updateSizes); // issue #2 - image loading smaller\n\n (0, _window.default)().addEventListener('DOMContentLoaded', this.updateSizes);\n\n if (this.props.useKeyboardArrows) {\n (0, _document.default)().addEventListener('keydown', this.navigateWithKeyboard);\n }\n }\n }, {\n key: \"unbindEvents\",\n value: function unbindEvents() {\n // removing listeners\n (0, _window.default)().removeEventListener('resize', this.updateSizes);\n (0, _window.default)().removeEventListener('DOMContentLoaded', this.updateSizes);\n var initialImage = this.getInitialImage();\n\n if (initialImage) {\n initialImage.removeEventListener('load', this.setMountState);\n }\n\n if (this.props.useKeyboardArrows) {\n (0, _document.default)().removeEventListener('keydown', this.navigateWithKeyboard);\n }\n }\n }, {\n key: \"forceFocus\",\n value: function forceFocus() {\n var _this$carouselWrapper;\n\n (_this$carouselWrapper = this.carouselWrapperRef) === null || _this$carouselWrapper === void 0 ? void 0 : _this$carouselWrapper.focus();\n }\n }, {\n key: \"renderItems\",\n value: function renderItems(isClone) {\n var _this3 = this;\n\n if (!this.props.children) {\n return [];\n }\n\n return _react.Children.map(this.props.children, function (item, index) {\n var isSelected = index === _this3.state.selectedItem;\n var isPrevious = index === _this3.state.previousItem;\n var style = isSelected && _this3.state.selectedStyle || isPrevious && _this3.state.prevStyle || _this3.state.slideStyle || {};\n\n if (_this3.props.centerMode && _this3.props.axis === 'horizontal') {\n style = _objectSpread(_objectSpread({}, style), {}, {\n minWidth: _this3.props.centerSlidePercentage + '%'\n });\n }\n\n if (_this3.state.swiping && _this3.state.swipeMovementStarted) {\n style = _objectSpread(_objectSpread({}, style), {}, {\n pointerEvents: 'none'\n });\n }\n\n var slideProps = {\n ref: function ref(e) {\n return _this3.setItemsRef(e, index);\n },\n key: 'itemKey' + index + (isClone ? 'clone' : ''),\n className: _cssClasses.default.ITEM(true, index === _this3.state.selectedItem, index === _this3.state.previousItem),\n onClick: _this3.handleClickItem.bind(_this3, index, item),\n style: style\n };\n return /*#__PURE__*/_react.default.createElement(\"li\", slideProps, _this3.props.renderItem(item, {\n isSelected: index === _this3.state.selectedItem,\n isPrevious: index === _this3.state.previousItem\n }));\n });\n }\n }, {\n key: \"renderControls\",\n value: function renderControls() {\n var _this4 = this;\n\n var _this$props = this.props,\n showIndicators = _this$props.showIndicators,\n labels = _this$props.labels,\n renderIndicator = _this$props.renderIndicator,\n children = _this$props.children;\n\n if (!showIndicators) {\n return null;\n }\n\n return /*#__PURE__*/_react.default.createElement(\"ul\", {\n className: \"control-dots\"\n }, _react.Children.map(children, function (_, index) {\n return renderIndicator && renderIndicator(_this4.changeItem(index), index === _this4.state.selectedItem, index, labels.item);\n }));\n }\n }, {\n key: \"renderStatus\",\n value: function renderStatus() {\n if (!this.props.showStatus) {\n return null;\n }\n\n return /*#__PURE__*/_react.default.createElement(\"p\", {\n className: \"carousel-status\"\n }, this.props.statusFormatter(this.state.selectedItem + 1, _react.Children.count(this.props.children)));\n }\n }, {\n key: \"renderThumbs\",\n value: function renderThumbs() {\n if (!this.props.showThumbs || !this.props.children || _react.Children.count(this.props.children) === 0) {\n return null;\n }\n\n return /*#__PURE__*/_react.default.createElement(_Thumbs.default, {\n ref: this.setThumbsRef,\n onSelectItem: this.handleClickThumb,\n selectedItem: this.state.selectedItem,\n transitionTime: this.props.transitionTime,\n thumbWidth: this.props.thumbWidth,\n labels: this.props.labels,\n emulateTouch: this.props.emulateTouch\n }, this.props.renderThumbs(this.props.children));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n\n if (!this.props.children || _react.Children.count(this.props.children) === 0) {\n return null;\n }\n\n var isSwipeable = this.props.swipeable && _react.Children.count(this.props.children) > 1;\n var isHorizontal = this.props.axis === 'horizontal';\n var canShowArrows = this.props.showArrows && _react.Children.count(this.props.children) > 1; // show left arrow?\n\n var hasPrev = canShowArrows && (this.state.selectedItem > 0 || this.props.infiniteLoop) || false; // show right arrow\n\n var hasNext = canShowArrows && (this.state.selectedItem < _react.Children.count(this.props.children) - 1 || this.props.infiniteLoop) || false;\n var itemsClone = this.renderItems(true);\n var firstClone = itemsClone.shift();\n var lastClone = itemsClone.pop();\n var swiperProps = {\n className: _cssClasses.default.SLIDER(true, this.state.swiping),\n onSwipeMove: this.onSwipeMove,\n onSwipeStart: this.onSwipeStart,\n onSwipeEnd: this.onSwipeEnd,\n style: this.state.itemListStyle,\n tolerance: this.props.swipeScrollTolerance\n };\n var containerStyles = {};\n\n if (isHorizontal) {\n swiperProps.onSwipeLeft = this.onSwipeForward;\n swiperProps.onSwipeRight = this.onSwipeBackwards;\n\n if (this.props.dynamicHeight) {\n var itemHeight = this.getVariableItemHeight(this.state.selectedItem); // swiperProps.style.height = itemHeight || 'auto';\n\n containerStyles.height = itemHeight || 'auto';\n }\n } else {\n swiperProps.onSwipeUp = this.props.verticalSwipe === 'natural' ? this.onSwipeBackwards : this.onSwipeForward;\n swiperProps.onSwipeDown = this.props.verticalSwipe === 'natural' ? this.onSwipeForward : this.onSwipeBackwards;\n swiperProps.style = _objectSpread(_objectSpread({}, swiperProps.style), {}, {\n height: this.state.itemSize\n });\n containerStyles.height = this.state.itemSize;\n }\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n \"aria-label\": this.props.ariaLabel,\n className: _cssClasses.default.ROOT(this.props.className),\n ref: this.setCarouselWrapperRef,\n tabIndex: this.props.useKeyboardArrows ? 0 : undefined\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: _cssClasses.default.CAROUSEL(true),\n style: {\n width: this.props.width\n }\n }, this.renderControls(), this.props.renderArrowPrev(this.onClickPrev, hasPrev, this.props.labels.leftArrow), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: _cssClasses.default.WRAPPER(true, this.props.axis),\n style: containerStyles\n }, isSwipeable ? /*#__PURE__*/_react.default.createElement(_reactEasySwipe.default, _extends({\n tagName: \"ul\",\n innerRef: this.setListRef\n }, swiperProps, {\n allowMouseEvents: this.props.emulateTouch\n }), this.props.infiniteLoop && lastClone, this.renderItems(), this.props.infiniteLoop && firstClone) : /*#__PURE__*/_react.default.createElement(\"ul\", {\n className: _cssClasses.default.SLIDER(true, this.state.swiping),\n ref: function ref(node) {\n return _this5.setListRef(node);\n },\n style: this.state.itemListStyle || {}\n }, this.props.infiniteLoop && lastClone, this.renderItems(), this.props.infiniteLoop && firstClone)), this.props.renderArrowNext(this.onClickNext, hasNext, this.props.labels.rightArrow), this.renderStatus()), this.renderThumbs());\n }\n }]);\n\n return Carousel;\n}(_react.default.Component);\n\nexports.default = Carousel;\n\n_defineProperty(Carousel, \"displayName\", 'Carousel');\n\n_defineProperty(Carousel, \"defaultProps\", {\n ariaLabel: undefined,\n axis: 'horizontal',\n centerSlidePercentage: 80,\n interval: 3000,\n labels: {\n leftArrow: 'previous slide / item',\n rightArrow: 'next slide / item',\n item: 'slide item'\n },\n onClickItem: _utils.noop,\n onClickThumb: _utils.noop,\n onChange: _utils.noop,\n onSwipeStart: function onSwipeStart() {},\n onSwipeEnd: function onSwipeEnd() {},\n onSwipeMove: function onSwipeMove() {\n return false;\n },\n preventMovementUntilSwipeScrollTolerance: false,\n renderArrowPrev: function renderArrowPrev(onClickHandler, hasPrev, label) {\n return /*#__PURE__*/_react.default.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": label,\n className: _cssClasses.default.ARROW_PREV(!hasPrev),\n onClick: onClickHandler\n });\n },\n renderArrowNext: function renderArrowNext(onClickHandler, hasNext, label) {\n return /*#__PURE__*/_react.default.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": label,\n className: _cssClasses.default.ARROW_NEXT(!hasNext),\n onClick: onClickHandler\n });\n },\n renderIndicator: function renderIndicator(onClickHandler, isSelected, index, label) {\n return /*#__PURE__*/_react.default.createElement(\"li\", {\n className: _cssClasses.default.DOT(isSelected),\n onClick: onClickHandler,\n onKeyDown: onClickHandler,\n value: index,\n key: index,\n role: \"button\",\n tabIndex: 0,\n \"aria-label\": \"\".concat(label, \" \").concat(index + 1)\n });\n },\n renderItem: function renderItem(item) {\n return item;\n },\n renderThumbs: function renderThumbs(children) {\n var images = _react.Children.map(children, function (item) {\n var img = item; // if the item is not an image, try to find the first image in the item's children.\n\n if (item.type !== 'img') {\n img = _react.Children.toArray(item.props.children).find(function (children) {\n return children.type === 'img';\n });\n }\n\n if (!img) {\n return undefined;\n }\n\n return img;\n });\n\n if (images.filter(function (image) {\n return image;\n }).length === 0) {\n console.warn(\"No images found! Can't build the thumb list without images. If you don't need thumbs, set showThumbs={false} in the Carousel. Note that it's not possible to get images rendered inside custom components. More info at https://github.com/leandrowd/react-responsive-carousel/blob/master/TROUBLESHOOTING.md\");\n return [];\n }\n\n return images;\n },\n statusFormatter: _utils.defaultStatusFormatter,\n selectedItem: 0,\n showArrows: true,\n showIndicators: true,\n showStatus: true,\n showThumbs: true,\n stopOnHover: true,\n swipeScrollTolerance: 5,\n swipeable: true,\n transitionTime: 350,\n verticalSwipe: 'standard',\n width: '100%',\n animationHandler: 'slide',\n swipeAnimationHandler: _animations.slideSwipeAnimationHandler,\n stopSwipingHandler: _animations.slideStopSwipingHandler\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setPosition = exports.getPosition = exports.isKeyboardEvent = exports.defaultStatusFormatter = exports.noop = void 0;\n\nvar _react = require(\"react\");\n\nvar _CSSTranslate = _interopRequireDefault(require(\"../../CSSTranslate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar noop = function noop() {};\n\nexports.noop = noop;\n\nvar defaultStatusFormatter = function defaultStatusFormatter(current, total) {\n return \"\".concat(current, \" of \").concat(total);\n};\n\nexports.defaultStatusFormatter = defaultStatusFormatter;\n\nvar isKeyboardEvent = function isKeyboardEvent(e) {\n return e ? e.hasOwnProperty('key') : false;\n};\n/**\n * Gets the list 'position' relative to a current index\n * @param index\n */\n\n\nexports.isKeyboardEvent = isKeyboardEvent;\n\nvar getPosition = function getPosition(index, props) {\n if (props.infiniteLoop) {\n // index has to be added by 1 because of the first cloned slide\n ++index;\n }\n\n if (index === 0) {\n return 0;\n }\n\n var childrenLength = _react.Children.count(props.children);\n\n if (props.centerMode && props.axis === 'horizontal') {\n var currentPosition = -index * props.centerSlidePercentage;\n var lastPosition = childrenLength - 1;\n\n if (index && (index !== lastPosition || props.infiniteLoop)) {\n currentPosition += (100 - props.centerSlidePercentage) / 2;\n } else if (index === lastPosition) {\n currentPosition += 100 - props.centerSlidePercentage;\n }\n\n return currentPosition;\n }\n\n return -index * 100;\n};\n/**\n * Sets the 'position' transform for sliding animations\n * @param position\n * @param forceReflow\n */\n\n\nexports.getPosition = getPosition;\n\nvar setPosition = function setPosition(position, axis) {\n var style = {};\n ['WebkitTransform', 'MozTransform', 'MsTransform', 'OTransform', 'transform', 'msTransform'].forEach(function (prop) {\n // @ts-ignore\n style[prop] = (0, _CSSTranslate.default)(position, '%', axis);\n });\n return style;\n};\n\nexports.setPosition = setPosition;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _cssClasses = _interopRequireDefault(require(\"../cssClasses\"));\n\nvar _dimensions = require(\"../dimensions\");\n\nvar _CSSTranslate = _interopRequireDefault(require(\"../CSSTranslate\"));\n\nvar _reactEasySwipe = _interopRequireDefault(require(\"react-easy-swipe\"));\n\nvar _window = _interopRequireDefault(require(\"../shims/window\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar isKeyboardEvent = function isKeyboardEvent(e) {\n return e.hasOwnProperty('key');\n};\n\nvar Thumbs = /*#__PURE__*/function (_Component) {\n _inherits(Thumbs, _Component);\n\n var _super = _createSuper(Thumbs);\n\n function Thumbs(_props) {\n var _this;\n\n _classCallCheck(this, Thumbs);\n\n _this = _super.call(this, _props);\n\n _defineProperty(_assertThisInitialized(_this), \"itemsWrapperRef\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"itemsListRef\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"thumbsRef\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"setItemsWrapperRef\", function (node) {\n _this.itemsWrapperRef = node;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setItemsListRef\", function (node) {\n _this.itemsListRef = node;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setThumbsRef\", function (node, index) {\n if (!_this.thumbsRef) {\n _this.thumbsRef = [];\n }\n\n _this.thumbsRef[index] = node;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateSizes\", function () {\n if (!_this.props.children || !_this.itemsWrapperRef || !_this.thumbsRef) {\n return;\n }\n\n var total = _react.Children.count(_this.props.children);\n\n var wrapperSize = _this.itemsWrapperRef.clientWidth;\n var itemSize = _this.props.thumbWidth ? _this.props.thumbWidth : (0, _dimensions.outerWidth)(_this.thumbsRef[0]);\n var visibleItems = Math.floor(wrapperSize / itemSize);\n var showArrows = visibleItems < total;\n var lastPosition = showArrows ? total - visibleItems : 0;\n\n _this.setState(function (_state, props) {\n return {\n itemSize: itemSize,\n visibleItems: visibleItems,\n firstItem: showArrows ? _this.getFirstItem(props.selectedItem) : 0,\n lastPosition: lastPosition,\n showArrows: showArrows\n };\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleClickItem\", function (index, item, e) {\n if (!isKeyboardEvent(e) || e.key === 'Enter') {\n var handler = _this.props.onSelectItem;\n\n if (typeof handler === 'function') {\n handler(index, item);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSwipeStart\", function () {\n _this.setState({\n swiping: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSwipeEnd\", function () {\n _this.setState({\n swiping: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSwipeMove\", function (delta) {\n var deltaX = delta.x;\n\n if (!_this.state.itemSize || !_this.itemsWrapperRef || !_this.state.visibleItems) {\n return false;\n }\n\n var leftBoundary = 0;\n\n var childrenLength = _react.Children.count(_this.props.children);\n\n var currentPosition = -(_this.state.firstItem * 100) / _this.state.visibleItems;\n var lastLeftItem = Math.max(childrenLength - _this.state.visibleItems, 0);\n var lastLeftBoundary = -lastLeftItem * 100 / _this.state.visibleItems; // prevent user from swiping left out of boundaries\n\n if (currentPosition === leftBoundary && deltaX > 0) {\n deltaX = 0;\n } // prevent user from swiping right out of boundaries\n\n\n if (currentPosition === lastLeftBoundary && deltaX < 0) {\n deltaX = 0;\n }\n\n var wrapperSize = _this.itemsWrapperRef.clientWidth;\n var position = currentPosition + 100 / (wrapperSize / deltaX); // if 3d isn't available we will use left to move\n\n if (_this.itemsListRef) {\n ['WebkitTransform', 'MozTransform', 'MsTransform', 'OTransform', 'transform', 'msTransform'].forEach(function (prop) {\n _this.itemsListRef.style[prop] = (0, _CSSTranslate.default)(position, '%', _this.props.axis);\n });\n }\n\n return true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slideRight\", function (positions) {\n _this.moveTo(_this.state.firstItem - (typeof positions === 'number' ? positions : 1));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slideLeft\", function (positions) {\n _this.moveTo(_this.state.firstItem + (typeof positions === 'number' ? positions : 1));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"moveTo\", function (position) {\n // position can't be lower than 0\n position = position < 0 ? 0 : position; // position can't be higher than last postion\n\n position = position >= _this.state.lastPosition ? _this.state.lastPosition : position;\n\n _this.setState({\n firstItem: position\n });\n });\n\n _this.state = {\n selectedItem: _props.selectedItem,\n swiping: false,\n showArrows: false,\n firstItem: 0,\n visibleItems: 0,\n lastPosition: 0\n };\n return _this;\n }\n\n _createClass(Thumbs, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.setupThumbs();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.props.selectedItem !== this.state.selectedItem) {\n this.setState({\n selectedItem: this.props.selectedItem,\n firstItem: this.getFirstItem(this.props.selectedItem)\n });\n }\n\n if (this.props.children === prevProps.children) {\n return;\n } // This will capture any size changes for arrow adjustments etc.\n // usually in the same render cycle so we don't see any flickers\n\n\n this.updateSizes();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.destroyThumbs();\n }\n }, {\n key: \"setupThumbs\",\n value: function setupThumbs() {\n // as the widths are calculated, we need to resize\n // the carousel when the window is resized\n (0, _window.default)().addEventListener('resize', this.updateSizes); // issue #2 - image loading smaller\n\n (0, _window.default)().addEventListener('DOMContentLoaded', this.updateSizes); // when the component is rendered we need to calculate\n // the container size to adjust the responsive behaviour\n\n this.updateSizes();\n }\n }, {\n key: \"destroyThumbs\",\n value: function destroyThumbs() {\n // removing listeners\n (0, _window.default)().removeEventListener('resize', this.updateSizes);\n (0, _window.default)().removeEventListener('DOMContentLoaded', this.updateSizes);\n }\n }, {\n key: \"getFirstItem\",\n value: function getFirstItem(selectedItem) {\n var firstItem = selectedItem;\n\n if (selectedItem >= this.state.lastPosition) {\n firstItem = this.state.lastPosition;\n }\n\n if (selectedItem < this.state.firstItem + this.state.visibleItems) {\n firstItem = this.state.firstItem;\n }\n\n if (selectedItem < this.state.firstItem) {\n firstItem = selectedItem;\n }\n\n return firstItem;\n }\n }, {\n key: \"renderItems\",\n value: function renderItems() {\n var _this2 = this;\n\n return this.props.children.map(function (img, index) {\n var itemClass = _cssClasses.default.ITEM(false, index === _this2.state.selectedItem);\n\n var thumbProps = {\n key: index,\n ref: function ref(e) {\n return _this2.setThumbsRef(e, index);\n },\n className: itemClass,\n onClick: _this2.handleClickItem.bind(_this2, index, _this2.props.children[index]),\n onKeyDown: _this2.handleClickItem.bind(_this2, index, _this2.props.children[index]),\n 'aria-label': \"\".concat(_this2.props.labels.item, \" \").concat(index + 1),\n style: {\n width: _this2.props.thumbWidth\n }\n };\n return /*#__PURE__*/_react.default.createElement(\"li\", _extends({}, thumbProps, {\n role: \"button\",\n tabIndex: 0\n }), img);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n if (!this.props.children) {\n return null;\n }\n\n var isSwipeable = _react.Children.count(this.props.children) > 1; // show left arrow?\n\n var hasPrev = this.state.showArrows && this.state.firstItem > 0; // show right arrow\n\n var hasNext = this.state.showArrows && this.state.firstItem < this.state.lastPosition; // obj to hold the transformations and styles\n\n var itemListStyles = {};\n var currentPosition = -this.state.firstItem * (this.state.itemSize || 0);\n var transformProp = (0, _CSSTranslate.default)(currentPosition, 'px', this.props.axis);\n var transitionTime = this.props.transitionTime + 'ms';\n itemListStyles = {\n WebkitTransform: transformProp,\n MozTransform: transformProp,\n MsTransform: transformProp,\n OTransform: transformProp,\n transform: transformProp,\n msTransform: transformProp,\n WebkitTransitionDuration: transitionTime,\n MozTransitionDuration: transitionTime,\n MsTransitionDuration: transitionTime,\n OTransitionDuration: transitionTime,\n transitionDuration: transitionTime,\n msTransitionDuration: transitionTime\n };\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: _cssClasses.default.CAROUSEL(false)\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: _cssClasses.default.WRAPPER(false),\n ref: this.setItemsWrapperRef\n }, /*#__PURE__*/_react.default.createElement(\"button\", {\n type: \"button\",\n className: _cssClasses.default.ARROW_PREV(!hasPrev),\n onClick: function onClick() {\n return _this3.slideRight();\n },\n \"aria-label\": this.props.labels.leftArrow\n }), isSwipeable ? /*#__PURE__*/_react.default.createElement(_reactEasySwipe.default, {\n tagName: \"ul\",\n className: _cssClasses.default.SLIDER(false, this.state.swiping),\n onSwipeLeft: this.slideLeft,\n onSwipeRight: this.slideRight,\n onSwipeMove: this.onSwipeMove,\n onSwipeStart: this.onSwipeStart,\n onSwipeEnd: this.onSwipeEnd,\n style: itemListStyles,\n innerRef: this.setItemsListRef,\n allowMouseEvents: this.props.emulateTouch\n }, this.renderItems()) : /*#__PURE__*/_react.default.createElement(\"ul\", {\n className: _cssClasses.default.SLIDER(false, this.state.swiping),\n ref: function ref(node) {\n return _this3.setItemsListRef(node);\n },\n style: itemListStyles\n }, this.renderItems()), /*#__PURE__*/_react.default.createElement(\"button\", {\n type: \"button\",\n className: _cssClasses.default.ARROW_NEXT(!hasNext),\n onClick: function onClick() {\n return _this3.slideLeft();\n },\n \"aria-label\": this.props.labels.rightArrow\n })));\n }\n }]);\n\n return Thumbs;\n}(_react.Component);\n\nexports.default = Thumbs;\n\n_defineProperty(Thumbs, \"displayName\", 'Thumbs');\n\n_defineProperty(Thumbs, \"defaultProps\", {\n axis: 'horizontal',\n labels: {\n leftArrow: 'previous slide / item',\n rightArrow: 'next slide / item',\n item: 'slide item'\n },\n selectedItem: 0,\n thumbWidth: 80,\n transitionTime: 350\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n ROOT: function ROOT(customClassName) {\n return (0, _classnames.default)(_defineProperty({\n 'carousel-root': true\n }, customClassName || '', !!customClassName));\n },\n CAROUSEL: function CAROUSEL(isSlider) {\n return (0, _classnames.default)({\n carousel: true,\n 'carousel-slider': isSlider\n });\n },\n WRAPPER: function WRAPPER(isSlider, axis) {\n return (0, _classnames.default)({\n 'thumbs-wrapper': !isSlider,\n 'slider-wrapper': isSlider,\n 'axis-horizontal': axis === 'horizontal',\n 'axis-vertical': axis !== 'horizontal'\n });\n },\n SLIDER: function SLIDER(isSlider, isSwiping) {\n return (0, _classnames.default)({\n thumbs: !isSlider,\n slider: isSlider,\n animated: !isSwiping\n });\n },\n ITEM: function ITEM(isSlider, selected, previous) {\n return (0, _classnames.default)({\n thumb: !isSlider,\n slide: isSlider,\n selected: selected,\n previous: previous\n });\n },\n ARROW_PREV: function ARROW_PREV(disabled) {\n return (0, _classnames.default)({\n 'control-arrow control-prev': true,\n 'control-disabled': disabled\n });\n },\n ARROW_NEXT: function ARROW_NEXT(disabled) {\n return (0, _classnames.default)({\n 'control-arrow control-next': true,\n 'control-disabled': disabled\n });\n },\n DOT: function DOT(selected) {\n return (0, _classnames.default)({\n dot: true,\n selected: selected\n });\n }\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.outerWidth = void 0;\n\nvar outerWidth = function outerWidth(el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width += parseInt(style.marginLeft) + parseInt(style.marginRight);\n return width;\n};\n\nexports.outerWidth = outerWidth;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Carousel\", {\n enumerable: true,\n get: function get() {\n return _Carousel.default;\n }\n});\nObject.defineProperty(exports, \"CarouselProps\", {\n enumerable: true,\n get: function get() {\n return _types.CarouselProps;\n }\n});\nObject.defineProperty(exports, \"Thumbs\", {\n enumerable: true,\n get: function get() {\n return _Thumbs.default;\n }\n});\n\nvar _Carousel = _interopRequireDefault(require(\"./components/Carousel\"));\n\nvar _types = require(\"./components/Carousel/types\");\n\nvar _Thumbs = _interopRequireDefault(require(\"./components/Thumbs\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _default = function _default() {\n return document;\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _default = function _default() {\n return window;\n};\n\nexports.default = _default;","import { Router, __RouterContext, matchPath } from 'react-router';\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter } from 'react-router';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport { createBrowserHistory, createHashHistory, createLocation, createPath } from 'history';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport invariant from 'tiny-invariant';\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\n\nvar BrowserRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createBrowserHistory(_this.props);\n return _this;\n }\n\n var _proto = BrowserRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \"<BrowserRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\n\nvar HashRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(HashRouter, _React$Component);\n\n function HashRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createHashHistory(_this.props);\n return _this;\n }\n\n var _proto = HashRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return HashRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \"<HashRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\") : void 0;\n };\n}\n\nvar resolveToLocation = function resolveToLocation(to, currentLocation) {\n return typeof to === \"function\" ? to(currentLocation) : to;\n};\nvar normalizeToLocation = function normalizeToLocation(to, currentLocation) {\n return typeof to === \"string\" ? createLocation(to, null, null, currentLocation) : to;\n};\n\nvar forwardRefShim = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar LinkAnchor = forwardRef(function (_ref, forwardedRef) {\n var innerRef = _ref.innerRef,\n navigate = _ref.navigate,\n _onClick = _ref.onClick,\n rest = _objectWithoutPropertiesLoose(_ref, [\"innerRef\", \"navigate\", \"onClick\"]);\n\n var target = rest.target;\n\n var props = _extends({}, rest, {\n onClick: function onClick(event) {\n try {\n if (_onClick) _onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && ( // ignore everything but left clicks\n !target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n\n\n return /*#__PURE__*/React.createElement(\"a\", props);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n/**\n * The public API for rendering a history-aware <a>.\n */\n\n\nvar Link = forwardRef(function (_ref2, forwardedRef) {\n var _ref2$component = _ref2.component,\n component = _ref2$component === void 0 ? LinkAnchor : _ref2$component,\n replace = _ref2.replace,\n to = _ref2.to,\n innerRef = _ref2.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref2, [\"component\", \"replace\", \"to\", \"innerRef\"]);\n\n return /*#__PURE__*/React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Link> outside a <Router>\") : invariant(false) : void 0;\n var history = context.history;\n var location = normalizeToLocation(resolveToLocation(to, context.location), context.location);\n var href = location ? history.createHref(location) : \"\";\n\n var props = _extends({}, rest, {\n href: href,\n navigate: function navigate() {\n var location = resolveToLocation(to, context.location);\n var isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n var method = replace || isDuplicateNavigation ? history.replace : history.push;\n method(location);\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return /*#__PURE__*/React.createElement(component, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n var toType = PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]);\n var refType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n })]);\n Link.displayName = \"Link\";\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nvar forwardRefShim$1 = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef$1 = React.forwardRef;\n\nif (typeof forwardRef$1 === \"undefined\") {\n forwardRef$1 = forwardRefShim$1;\n}\n\nfunction joinClassnames() {\n for (var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++) {\n classnames[_key] = arguments[_key];\n }\n\n return classnames.filter(function (i) {\n return i;\n }).join(\" \");\n}\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\n\n\nvar NavLink = forwardRef$1(function (_ref, forwardedRef) {\n var _ref$ariaCurrent = _ref[\"aria-current\"],\n ariaCurrent = _ref$ariaCurrent === void 0 ? \"page\" : _ref$ariaCurrent,\n _ref$activeClassName = _ref.activeClassName,\n activeClassName = _ref$activeClassName === void 0 ? \"active\" : _ref$activeClassName,\n activeStyle = _ref.activeStyle,\n classNameProp = _ref.className,\n exact = _ref.exact,\n isActiveProp = _ref.isActive,\n locationProp = _ref.location,\n sensitive = _ref.sensitive,\n strict = _ref.strict,\n styleProp = _ref.style,\n to = _ref.to,\n innerRef = _ref.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref, [\"aria-current\", \"activeClassName\", \"activeStyle\", \"className\", \"exact\", \"isActive\", \"location\", \"sensitive\", \"strict\", \"style\", \"to\", \"innerRef\"]);\n\n return /*#__PURE__*/React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <NavLink> outside a <Router>\") : invariant(false) : void 0;\n var currentLocation = locationProp || context.location;\n var toLocation = normalizeToLocation(resolveToLocation(to, currentLocation), currentLocation);\n var path = toLocation.pathname; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n var match = escapedPath ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact: exact,\n sensitive: sensitive,\n strict: strict\n }) : null;\n var isActive = !!(isActiveProp ? isActiveProp(match, currentLocation) : match);\n var className = typeof classNameProp === \"function\" ? classNameProp(isActive) : classNameProp;\n var style = typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = _extends({}, style, activeStyle);\n }\n\n var props = _extends({\n \"aria-current\": isActive && ariaCurrent || null,\n className: className,\n style: style,\n to: toLocation\n }, rest); // React 15 compat\n\n\n if (forwardRefShim$1 !== forwardRef$1) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return /*#__PURE__*/React.createElement(Link, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n var ariaCurrentType = PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\", \"false\"]);\n NavLink.propTypes = _extends({}, Link.propTypes, {\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n });\n}\n\nexport { BrowserRouter, HashRouter, Link, NavLink };\n//# sourceMappingURL=react-router-dom.js.map\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, NavLink } from 'react-router-dom';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nvar hashFragment = '';\r\nvar observer = null;\r\nvar asyncTimerId = null;\r\nvar scrollFunction = null;\r\nfunction reset() {\r\n hashFragment = '';\r\n if (observer !== null)\r\n observer.disconnect();\r\n if (asyncTimerId !== null) {\r\n window.clearTimeout(asyncTimerId);\r\n asyncTimerId = null;\r\n }\r\n}\r\nfunction isInteractiveElement(element) {\r\n var formTags = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'];\r\n var linkTags = ['A', 'AREA'];\r\n return ((formTags.includes(element.tagName) && !element.hasAttribute('disabled')) ||\r\n (linkTags.includes(element.tagName) && element.hasAttribute('href')));\r\n}\r\nfunction getElAndScroll() {\r\n var element = null;\r\n if (hashFragment === '#') {\r\n // use document.body instead of document.documentElement because of a bug in smoothscroll-polyfill in safari\r\n // see https://github.com/iamdustan/smoothscroll/issues/138\r\n // while smoothscroll-polyfill is not included, it is the recommended way to implement smoothscroll\r\n // in browsers that don't natively support el.scrollIntoView({ behavior: 'smooth' })\r\n element = document.body;\r\n }\r\n else {\r\n // check for element with matching id before assume '#top' is the top of the document\r\n // see https://html.spec.whatwg.org/multipage/browsing-the-web.html#target-element\r\n var id = hashFragment.replace('#', '');\r\n element = document.getElementById(id);\r\n if (element === null && hashFragment === '#top') {\r\n // see above comment for why document.body instead of document.documentElement\r\n element = document.body;\r\n }\r\n }\r\n if (element !== null) {\r\n scrollFunction(element);\r\n // update focus to where the page is scrolled to\r\n // unfortunately this doesn't work in safari (desktop and iOS) when blur() is called\r\n var originalTabIndex = element.getAttribute('tabindex');\r\n if (originalTabIndex === null && !isInteractiveElement(element)) {\r\n element.setAttribute('tabindex', -1);\r\n }\r\n element.focus({ preventScroll: true });\r\n if (originalTabIndex === null && !isInteractiveElement(element)) {\r\n // for some reason calling blur() in safari resets the focus region to where it was previously,\r\n // if blur() is not called it works in safari, but then are stuck with default focus styles\r\n // on an element that otherwise might never had focus styles applied, so not an option\r\n element.blur();\r\n element.removeAttribute('tabindex');\r\n }\r\n reset();\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction hashLinkScroll(timeout) {\r\n // Push onto callback queue so it runs after the DOM is updated\r\n window.setTimeout(function () {\r\n if (getElAndScroll() === false) {\r\n if (observer === null) {\r\n observer = new MutationObserver(getElAndScroll);\r\n }\r\n observer.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n // if the element doesn't show up in specified timeout or 10 seconds, stop checking\r\n asyncTimerId = window.setTimeout(function () {\r\n reset();\r\n }, timeout || 10000);\r\n }\r\n }, 0);\r\n}\r\nfunction genericHashLink(As) {\r\n return React.forwardRef(function (props, ref) {\r\n var linkHash = '';\r\n if (typeof props.to === 'string' && props.to.includes('#')) {\r\n linkHash = \"#\" + props.to.split('#').slice(1).join('#');\r\n }\r\n else if (typeof props.to === 'object' &&\r\n typeof props.to.hash === 'string') {\r\n linkHash = props.to.hash;\r\n }\r\n var passDownProps = {};\r\n if (As === NavLink) {\r\n passDownProps.isActive = function (match, location) {\r\n return match && match.isExact && location.hash === linkHash;\r\n };\r\n }\r\n function handleClick(e) {\r\n reset();\r\n hashFragment = props.elementId ? \"#\" + props.elementId : linkHash;\r\n if (props.onClick)\r\n props.onClick(e);\r\n if (hashFragment !== '' &&\r\n // ignore non-vanilla click events, same as react-router\r\n // below logic adapted from react-router: https://github.com/ReactTraining/react-router/blob/fc91700e08df8147bd2bb1be19a299cbb14dbcaa/packages/react-router-dom/modules/Link.js#L43-L48\r\n !e.defaultPrevented && // onClick prevented default\r\n e.button === 0 && // ignore everything but left clicks\r\n (!props.target || props.target === '_self') && // let browser handle \"target=_blank\" etc\r\n !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) // ignore clicks with modifier keys\r\n ) {\r\n scrollFunction =\r\n props.scroll ||\r\n (function (el) {\r\n return props.smooth\r\n ? el.scrollIntoView({ behavior: 'smooth' })\r\n : el.scrollIntoView();\r\n });\r\n hashLinkScroll(props.timeout);\r\n }\r\n }\r\n var filteredProps = __rest(props, [\"scroll\", \"smooth\", \"timeout\", \"elementId\"]);\r\n return (React.createElement(As, __assign({}, passDownProps, filteredProps, { onClick: handleClick, ref: ref }), props.children));\r\n });\r\n}\r\nvar HashLink = genericHashLink(Link);\r\nvar NavHashLink = genericHashLink(NavLink);\r\nif (process.env.NODE_ENV !== 'production') {\r\n HashLink.displayName = 'HashLink';\r\n NavHashLink.displayName = 'NavHashLink';\r\n var propTypes = {\r\n onClick: PropTypes.func,\r\n children: PropTypes.node,\r\n scroll: PropTypes.func,\r\n timeout: PropTypes.number,\r\n elementId: PropTypes.string,\r\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n };\r\n HashLink.propTypes = propTypes;\r\n NavHashLink.propTypes = propTypes;\r\n}\n\nexport { HashLink, NavHashLink, genericHashLink };\n//# sourceMappingURL=react-router-hash-link.esm.js.map\n","import assert from './utils/assert';\nimport objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './hocs/createShareButton';\nfunction facebookLink(url, _a) {\n var quote = _a.quote, hashtag = _a.hashtag;\n assert(url, 'facebook.url');\n return ('https://www.facebook.com/sharer/sharer.php' +\n objectToGetParams({\n u: url,\n quote: quote,\n hashtag: hashtag,\n }));\n}\nvar FacebookShareButton = createShareButton('facebook', facebookLink, function (props) { return ({\n quote: props.quote,\n hashtag: props.hashtag,\n}); }, {\n windowWidth: 550,\n windowHeight: 400,\n});\nexport default FacebookShareButton;\n","import assert from './utils/assert';\nimport objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './hocs/createShareButton';\nfunction linkedinLink(url, _a) {\n var title = _a.title, summary = _a.summary, source = _a.source;\n assert(url, 'linkedin.url');\n return ('https://linkedin.com/shareArticle' +\n objectToGetParams({ url: url, mini: 'true', title: title, summary: summary, source: source }));\n}\nvar LinkedinShareButton = createShareButton('linkedin', linkedinLink, function (_a) {\n var title = _a.title, summary = _a.summary, source = _a.source;\n return ({ title: title, summary: summary, source: source });\n}, {\n windowWidth: 750,\n windowHeight: 600,\n});\nexport default LinkedinShareButton;\n","import assert from './utils/assert';\nimport objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './hocs/createShareButton';\nfunction twitterLink(url, _a) {\n var title = _a.title, via = _a.via, _b = _a.hashtags, hashtags = _b === void 0 ? [] : _b, _c = _a.related, related = _c === void 0 ? [] : _c;\n assert(url, 'twitter.url');\n assert(Array.isArray(hashtags), 'twitter.hashtags is not an array');\n assert(Array.isArray(related), 'twitter.related is not an array');\n return ('https://twitter.com/share' +\n objectToGetParams({\n url: url,\n text: title,\n via: via,\n hashtags: hashtags.length > 0 ? hashtags.join(',') : undefined,\n related: related.length > 0 ? related.join(',') : undefined,\n }));\n}\nvar TwitterShareButton = createShareButton('twitter', twitterLink, function (props) { return ({\n hashtags: props.hashtags,\n title: props.title,\n via: props.via,\n related: props.related,\n}); }, {\n windowWidth: 550,\n windowHeight: 400,\n});\nexport default TwitterShareButton;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { Component } from 'react';\nimport cx from 'classnames';\nvar isPromise = function (obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n};\nvar getBoxPositionOnWindowCenter = function (width, height) { return ({\n left: window.outerWidth / 2 + (window.screenX || window.screenLeft || 0) - width / 2,\n top: window.outerHeight / 2 + (window.screenY || window.screenTop || 0) - height / 2,\n}); };\nvar getBoxPositionOnScreenCenter = function (width, height) { return ({\n top: (window.screen.height - height) / 2,\n left: (window.screen.width - width) / 2,\n}); };\nfunction windowOpen(url, _a, onClose) {\n var height = _a.height, width = _a.width, configRest = __rest(_a, [\"height\", \"width\"]);\n var config = __assign({ height: height, width: width, location: 'no', toolbar: 'no', status: 'no', directories: 'no', menubar: 'no', scrollbars: 'yes', resizable: 'no', centerscreen: 'yes', chrome: 'yes' }, configRest);\n var shareDialog = window.open(url, '', Object.keys(config)\n .map(function (key) { return \"\".concat(key, \"=\").concat(config[key]); })\n .join(', '));\n if (onClose) {\n var interval_1 = window.setInterval(function () {\n try {\n if (shareDialog === null || shareDialog.closed) {\n window.clearInterval(interval_1);\n onClose(shareDialog);\n }\n }\n catch (e) {\n /* eslint-disable no-console */\n console.error(e);\n /* eslint-enable no-console */\n }\n }, 1000);\n }\n return shareDialog;\n}\nvar ShareButton = /** @class */ (function (_super) {\n __extends(ShareButton, _super);\n function ShareButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.openShareDialog = function (link) {\n var _a = _this.props, onShareWindowClose = _a.onShareWindowClose, _b = _a.windowHeight, windowHeight = _b === void 0 ? 400 : _b, _c = _a.windowPosition, windowPosition = _c === void 0 ? 'windowCenter' : _c, _d = _a.windowWidth, windowWidth = _d === void 0 ? 550 : _d;\n var windowConfig = __assign({ height: windowHeight, width: windowWidth }, (windowPosition === 'windowCenter'\n ? getBoxPositionOnWindowCenter(windowWidth, windowHeight)\n : getBoxPositionOnScreenCenter(windowWidth, windowHeight)));\n windowOpen(link, windowConfig, onShareWindowClose);\n };\n _this.handleClick = function (event) { return __awaiter(_this, void 0, void 0, function () {\n var _a, beforeOnClick, disabled, networkLink, onClick, url, openShareDialogOnClick, opts, link, returnVal;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this.props, beforeOnClick = _a.beforeOnClick, disabled = _a.disabled, networkLink = _a.networkLink, onClick = _a.onClick, url = _a.url, openShareDialogOnClick = _a.openShareDialogOnClick, opts = _a.opts;\n link = networkLink(url, opts);\n if (disabled) {\n return [2 /*return*/];\n }\n event.preventDefault();\n if (!beforeOnClick) return [3 /*break*/, 2];\n returnVal = beforeOnClick();\n if (!isPromise(returnVal)) return [3 /*break*/, 2];\n return [4 /*yield*/, returnVal];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n if (openShareDialogOnClick) {\n this.openShareDialog(link);\n }\n if (onClick) {\n onClick(event, link);\n }\n return [2 /*return*/];\n }\n });\n }); };\n return _this;\n }\n ShareButton.prototype.render = function () {\n var _a = this.props, beforeOnClick = _a.beforeOnClick, children = _a.children, className = _a.className, disabled = _a.disabled, disabledStyle = _a.disabledStyle, forwardedRef = _a.forwardedRef, networkLink = _a.networkLink, networkName = _a.networkName, onShareWindowClose = _a.onShareWindowClose, openShareDialogOnClick = _a.openShareDialogOnClick, opts = _a.opts, resetButtonStyle = _a.resetButtonStyle, style = _a.style, url = _a.url, windowHeight = _a.windowHeight, windowPosition = _a.windowPosition, windowWidth = _a.windowWidth, rest = __rest(_a, [\"beforeOnClick\", \"children\", \"className\", \"disabled\", \"disabledStyle\", \"forwardedRef\", \"networkLink\", \"networkName\", \"onShareWindowClose\", \"openShareDialogOnClick\", \"opts\", \"resetButtonStyle\", \"style\", \"url\", \"windowHeight\", \"windowPosition\", \"windowWidth\"]);\n var newClassName = cx('react-share__ShareButton', {\n 'react-share__ShareButton--disabled': !!disabled,\n disabled: !!disabled,\n }, className);\n var newStyle = resetButtonStyle\n ? __assign(__assign({ backgroundColor: 'transparent', border: 'none', padding: 0, font: 'inherit', color: 'inherit', cursor: 'pointer' }, style), (disabled && disabledStyle)) : __assign(__assign({}, style), (disabled && disabledStyle));\n return (React.createElement(\"button\", __assign({}, rest, { \"aria-label\": rest['aria-label'] || networkName, className: newClassName, onClick: this.handleClick, ref: forwardedRef, style: newStyle }), children));\n };\n ShareButton.defaultProps = {\n disabledStyle: { opacity: 0.6 },\n openShareDialogOnClick: true,\n resetButtonStyle: true,\n };\n return ShareButton;\n}(Component));\nexport default ShareButton;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport React, { forwardRef } from 'react';\nimport ShareButton from '../ShareButton';\nfunction createShareButton(networkName, link, optsMap, defaultProps) {\n function CreatedButton(props, ref) {\n var opts = optsMap(props);\n var passedProps = __assign({}, props);\n // remove keys from passed props that are passed as opts\n var optsKeys = Object.keys(opts);\n optsKeys.forEach(function (key) {\n delete passedProps[key];\n });\n return (React.createElement(ShareButton, __assign({}, defaultProps, passedProps, { forwardedRef: ref, networkName: networkName, networkLink: link, opts: optsMap(props) })));\n }\n CreatedButton.displayName = \"ShareButton-\".concat(networkName);\n return forwardRef(CreatedButton);\n}\nexport default createShareButton;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n function AssertionError(message) {\n var _this = _super.call(this, message) || this;\n _this.name = 'AssertionError';\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default function assert(value, message) {\n if (!value) {\n throw new AssertionError(message);\n }\n}\n","export default function objectToGetParams(object) {\n var params = Object.entries(object)\n .filter(function (_a) {\n var value = _a[1];\n return value !== undefined && value !== null;\n })\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(encodeURIComponent(key), \"=\").concat(encodeURIComponent(String(value)));\n });\n return params.length > 0 ? \"?\".concat(params.join('&')) : '';\n}\n","var getOwnPropertyNames = Object.getOwnPropertyNames, getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Combine two comparators into a single comparators.\n */\nfunction combineComparators(comparatorA, comparatorB) {\n return function isEqual(a, b, state) {\n return comparatorA(a, b, state) && comparatorB(a, b, state);\n };\n}\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nfunction createIsCircular(areItemsEqual) {\n return function isCircular(a, b, state) {\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n return areItemsEqual(a, b, state);\n }\n var cache = state.cache;\n var cachedA = cache.get(a);\n var cachedB = cache.get(b);\n if (cachedA && cachedB) {\n return cachedA === b && cachedB === a;\n }\n cache.set(a, b);\n cache.set(b, a);\n var result = areItemsEqual(a, b, state);\n cache.delete(a);\n cache.delete(b);\n return result;\n };\n}\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nfunction getStrictProperties(object) {\n return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));\n}\n/**\n * Whether the object contains the property passed as an own property.\n */\nvar hasOwn = Object.hasOwn ||\n (function (object, property) {\n return hasOwnProperty.call(object, property);\n });\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nfunction sameValueZeroEqual(a, b) {\n return a || b ? a === b : a === b || (a !== a && b !== b);\n}\n\nvar OWNER = '_owner';\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor, keys = Object.keys;\n/**\n * Whether the arrays are equal in value.\n */\nfunction areArraysEqual(a, b, state) {\n var index = a.length;\n if (b.length !== index) {\n return false;\n }\n while (index-- > 0) {\n if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the dates passed are equal in value.\n */\nfunction areDatesEqual(a, b) {\n return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n/**\n * Whether the `Map`s are equal in value.\n */\nfunction areMapsEqual(a, b, state) {\n if (a.size !== b.size) {\n return false;\n }\n var matchedIndices = {};\n var aIterable = a.entries();\n var index = 0;\n var aResult;\n var bResult;\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n var bIterable = b.entries();\n var hasMatch = false;\n var matchIndex = 0;\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n var _a = aResult.value, aKey = _a[0], aValue = _a[1];\n var _b = bResult.value, bKey = _b[0], bValue = _b[1];\n if (!hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch =\n state.equals(aKey, bKey, index, matchIndex, a, b, state) &&\n state.equals(aValue, bValue, aKey, bKey, a, b, state))) {\n matchedIndices[matchIndex] = true;\n }\n matchIndex++;\n }\n if (!hasMatch) {\n return false;\n }\n index++;\n }\n return true;\n}\n/**\n * Whether the objects are equal in value.\n */\nfunction areObjectsEqual(a, b, state) {\n var properties = keys(a);\n var index = properties.length;\n if (keys(b).length !== index) {\n return false;\n }\n var property;\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index];\n if (property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof) {\n return false;\n }\n if (!hasOwn(b, property) ||\n !state.equals(a[property], b[property], property, property, a, b, state)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nfunction areObjectsEqualStrict(a, b, state) {\n var properties = getStrictProperties(a);\n var index = properties.length;\n if (getStrictProperties(b).length !== index) {\n return false;\n }\n var property;\n var descriptorA;\n var descriptorB;\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index];\n if (property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof) {\n return false;\n }\n if (!hasOwn(b, property)) {\n return false;\n }\n if (!state.equals(a[property], b[property], property, property, a, b, state)) {\n return false;\n }\n descriptorA = getOwnPropertyDescriptor(a, property);\n descriptorB = getOwnPropertyDescriptor(b, property);\n if ((descriptorA || descriptorB) &&\n (!descriptorA ||\n !descriptorB ||\n descriptorA.configurable !== descriptorB.configurable ||\n descriptorA.enumerable !== descriptorB.enumerable ||\n descriptorA.writable !== descriptorB.writable)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nfunction arePrimitiveWrappersEqual(a, b) {\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n/**\n * Whether the regexps passed are equal in value.\n */\nfunction areRegExpsEqual(a, b) {\n return a.source === b.source && a.flags === b.flags;\n}\n/**\n * Whether the `Set`s are equal in value.\n */\nfunction areSetsEqual(a, b, state) {\n if (a.size !== b.size) {\n return false;\n }\n var matchedIndices = {};\n var aIterable = a.values();\n var aResult;\n var bResult;\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n var bIterable = b.values();\n var hasMatch = false;\n var matchIndex = 0;\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n if (!hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch = state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state))) {\n matchedIndices[matchIndex] = true;\n }\n matchIndex++;\n }\n if (!hasMatch) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the TypedArray instances are equal in value.\n */\nfunction areTypedArraysEqual(a, b) {\n var index = a.length;\n if (b.length !== index) {\n return false;\n }\n while (index-- > 0) {\n if (a[index] !== b[index]) {\n return false;\n }\n }\n return true;\n}\n\nvar ARGUMENTS_TAG = '[object Arguments]';\nvar BOOLEAN_TAG = '[object Boolean]';\nvar DATE_TAG = '[object Date]';\nvar MAP_TAG = '[object Map]';\nvar NUMBER_TAG = '[object Number]';\nvar OBJECT_TAG = '[object Object]';\nvar REG_EXP_TAG = '[object RegExp]';\nvar SET_TAG = '[object Set]';\nvar STRING_TAG = '[object String]';\nvar isArray = Array.isArray;\nvar isTypedArray = typeof ArrayBuffer === 'function' && ArrayBuffer.isView\n ? ArrayBuffer.isView\n : null;\nvar assign = Object.assign;\nvar getTag = Object.prototype.toString.call.bind(Object.prototype.toString);\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nfunction createEqualityComparator(_a) {\n var areArraysEqual = _a.areArraysEqual, areDatesEqual = _a.areDatesEqual, areMapsEqual = _a.areMapsEqual, areObjectsEqual = _a.areObjectsEqual, arePrimitiveWrappersEqual = _a.arePrimitiveWrappersEqual, areRegExpsEqual = _a.areRegExpsEqual, areSetsEqual = _a.areSetsEqual, areTypedArraysEqual = _a.areTypedArraysEqual;\n /**\n * compare the value of the two objects and return true if they are equivalent in values\n */\n return function comparator(a, b, state) {\n // If the items are strictly equal, no need to do a value comparison.\n if (a === b) {\n return true;\n }\n // If the items are not non-nullish objects, then the only possibility\n // of them being equal but not strictly is if they are both `NaN`. Since\n // `NaN` is uniquely not equal to itself, we can use self-comparison of\n // both objects, which is faster than `isNaN()`.\n if (a == null ||\n b == null ||\n typeof a !== 'object' ||\n typeof b !== 'object') {\n return a !== a && b !== b;\n }\n var constructor = a.constructor;\n // Checks are listed in order of commonality of use-case:\n // 1. Common complex object types (plain object, array)\n // 2. Common data values (date, regexp)\n // 3. Less-common complex object types (map, set)\n // 4. Less-common data values (promise, primitive wrappers)\n // Inherently this is both subjective and assumptive, however\n // when reviewing comparable libraries in the wild this order\n // appears to be generally consistent.\n // Constructors should match, otherwise there is potential for false positives\n // between class and subclass or custom object and POJO.\n if (constructor !== b.constructor) {\n return false;\n }\n // `isPlainObject` only checks against the object's own realm. Cross-realm\n // comparisons are rare, and will be handled in the ultimate fallback, so\n // we can avoid capturing the string tag.\n if (constructor === Object) {\n return areObjectsEqual(a, b, state);\n }\n // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n // the string tag or doing an `instanceof` check.\n if (isArray(a)) {\n return areArraysEqual(a, b, state);\n }\n // `isTypedArray()` works on all possible TypedArray classes, so we can avoid\n // capturing the string tag or comparing against all possible constructors.\n if (isTypedArray != null && isTypedArray(a)) {\n return areTypedArraysEqual(a, b, state);\n }\n // Try to fast-path equality checks for other complex object types in the\n // same realm to avoid capturing the string tag. Strict equality is used\n // instead of `instanceof` because it is more performant for the common\n // use-case. If someone is subclassing a native class, it will be handled\n // with the string tag comparison.\n if (constructor === Date) {\n return areDatesEqual(a, b, state);\n }\n if (constructor === RegExp) {\n return areRegExpsEqual(a, b, state);\n }\n if (constructor === Map) {\n return areMapsEqual(a, b, state);\n }\n if (constructor === Set) {\n return areSetsEqual(a, b, state);\n }\n // Since this is a custom object, capture the string tag to determing its type.\n // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n var tag = getTag(a);\n if (tag === DATE_TAG) {\n return areDatesEqual(a, b, state);\n }\n if (tag === REG_EXP_TAG) {\n return areRegExpsEqual(a, b, state);\n }\n if (tag === MAP_TAG) {\n return areMapsEqual(a, b, state);\n }\n if (tag === SET_TAG) {\n return areSetsEqual(a, b, state);\n }\n if (tag === OBJECT_TAG) {\n // The exception for value comparison is custom `Promise`-like class instances. These should\n // be treated the same as standard `Promise` objects, which means strict equality, and if\n // it reaches this point then that strict equality comparison has already failed.\n return (typeof a.then !== 'function' &&\n typeof b.then !== 'function' &&\n areObjectsEqual(a, b, state));\n }\n // If an arguments tag, it should be treated as a standard object.\n if (tag === ARGUMENTS_TAG) {\n return areObjectsEqual(a, b, state);\n }\n // As the penultimate fallback, check if the values passed are primitive wrappers. This\n // is very rare in modern JS, which is why it is deprioritized compared to all other object\n // types.\n if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n return arePrimitiveWrappersEqual(a, b, state);\n }\n // If not matching any tags that require a specific type of comparison, then we hard-code false because\n // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n // - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n // comparison that can be made.\n // - For types that can be introspected, but rarely have requirements to be compared\n // (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n // use-cases (may be included in a future release, if requested enough).\n // - For types that can be introspected but do not have an objective definition of what\n // equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n // In all cases, these decisions should be reevaluated based on changes to the language and\n // common development practices.\n return false;\n };\n}\n/**\n * Create the configuration object used for building comparators.\n */\nfunction createEqualityComparatorConfig(_a) {\n var circular = _a.circular, createCustomConfig = _a.createCustomConfig, strict = _a.strict;\n var config = {\n areArraysEqual: strict\n ? areObjectsEqualStrict\n : areArraysEqual,\n areDatesEqual: areDatesEqual,\n areMapsEqual: strict\n ? combineComparators(areMapsEqual, areObjectsEqualStrict)\n : areMapsEqual,\n areObjectsEqual: strict\n ? areObjectsEqualStrict\n : areObjectsEqual,\n arePrimitiveWrappersEqual: arePrimitiveWrappersEqual,\n areRegExpsEqual: areRegExpsEqual,\n areSetsEqual: strict\n ? combineComparators(areSetsEqual, areObjectsEqualStrict)\n : areSetsEqual,\n areTypedArraysEqual: strict\n ? areObjectsEqualStrict\n : areTypedArraysEqual,\n };\n if (createCustomConfig) {\n config = assign({}, config, createCustomConfig(config));\n }\n if (circular) {\n var areArraysEqual$1 = createIsCircular(config.areArraysEqual);\n var areMapsEqual$1 = createIsCircular(config.areMapsEqual);\n var areObjectsEqual$1 = createIsCircular(config.areObjectsEqual);\n var areSetsEqual$1 = createIsCircular(config.areSetsEqual);\n config = assign({}, config, {\n areArraysEqual: areArraysEqual$1,\n areMapsEqual: areMapsEqual$1,\n areObjectsEqual: areObjectsEqual$1,\n areSetsEqual: areSetsEqual$1,\n });\n }\n return config;\n}\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nfunction createInternalEqualityComparator(compare) {\n return function (a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, state) {\n return compare(a, b, state);\n };\n}\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nfunction createIsEqual(_a) {\n var circular = _a.circular, comparator = _a.comparator, createState = _a.createState, equals = _a.equals, strict = _a.strict;\n if (createState) {\n return function isEqual(a, b) {\n var _a = createState(), _b = _a.cache, cache = _b === void 0 ? circular ? new WeakMap() : undefined : _b, meta = _a.meta;\n return comparator(a, b, {\n cache: cache,\n equals: equals,\n meta: meta,\n strict: strict,\n });\n };\n }\n if (circular) {\n return function isEqual(a, b) {\n return comparator(a, b, {\n cache: new WeakMap(),\n equals: equals,\n meta: undefined,\n strict: strict,\n });\n };\n }\n var state = {\n cache: undefined,\n equals: equals,\n meta: undefined,\n strict: strict,\n };\n return function isEqual(a, b) {\n return comparator(a, b, state);\n };\n}\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nvar deepEqual = createCustomEqual();\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nvar strictDeepEqual = createCustomEqual({ strict: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nvar circularDeepEqual = createCustomEqual({ circular: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nvar strictCircularDeepEqual = createCustomEqual({\n circular: true,\n strict: true,\n});\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nvar shallowEqual = createCustomEqual({\n createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nvar strictShallowEqual = createCustomEqual({\n strict: true,\n createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nvar circularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nvar strictCircularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: function () { return sameValueZeroEqual; },\n strict: true,\n});\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nfunction createCustomEqual(options) {\n if (options === void 0) { options = {}; }\n var _a = options.circular, circular = _a === void 0 ? false : _a, createCustomInternalComparator = options.createInternalComparator, createState = options.createState, _b = options.strict, strict = _b === void 0 ? false : _b;\n var config = createEqualityComparatorConfig(options);\n var comparator = createEqualityComparator(config);\n var equals = createCustomInternalComparator\n ? createCustomInternalComparator(comparator)\n : createInternalEqualityComparator(comparator);\n return createIsEqual({ circular: circular, comparator: comparator, createState: createState, equals: equals, strict: strict });\n}\n\nexport { circularDeepEqual, circularShallowEqual, createCustomEqual, deepEqual, sameValueZeroEqual, shallowEqual, strictCircularDeepEqual, strictCircularShallowEqual, strictDeepEqual, strictShallowEqual };\n//# sourceMappingURL=index.mjs.map\n","export default function setRafTimeout(callback) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var currTime = -1;\n var shouldUpdate = function shouldUpdate(now) {\n if (currTime < 0) {\n currTime = now;\n }\n if (now - currTime > timeout) {\n callback(now);\n currTime = -1;\n } else {\n requestAnimationFrame(shouldUpdate);\n }\n };\n requestAnimationFrame(shouldUpdate);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport setRafTimeout from './setRafTimeout';\nexport default function createAnimateManager() {\n var currStyle = {};\n var handleChange = function handleChange() {\n return null;\n };\n var shouldStop = false;\n var setStyle = function setStyle(_style) {\n if (shouldStop) {\n return;\n }\n if (Array.isArray(_style)) {\n if (!_style.length) {\n return;\n }\n var styles = _style;\n var _styles = _toArray(styles),\n curr = _styles[0],\n restStyles = _styles.slice(1);\n if (typeof curr === 'number') {\n setRafTimeout(setStyle.bind(null, restStyles), curr);\n return;\n }\n setStyle(curr);\n setRafTimeout(setStyle.bind(null, restStyles));\n return;\n }\n if (_typeof(_style) === 'object') {\n currStyle = _style;\n handleChange(currStyle);\n }\n if (typeof _style === 'function') {\n _style();\n }\n };\n return {\n stop: function stop() {\n shouldStop = true;\n },\n start: function start(style) {\n shouldStop = false;\n setStyle(style);\n },\n subscribe: function subscribe(_handleChange) {\n handleChange = _handleChange;\n return function () {\n handleChange = function handleChange() {\n return null;\n };\n };\n }\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint no-console: 0 */\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nvar IN_LINE_PREFIX_LIST = ['-webkit-', '-moz-', '-o-', '-ms-'];\nvar IN_COMPATIBLE_PROPERTY = ['transform', 'transformOrigin', 'transition'];\nexport var getIntersectionKeys = function getIntersectionKeys(preObj, nextObj) {\n return [Object.keys(preObj), Object.keys(nextObj)].reduce(function (a, b) {\n return a.filter(function (c) {\n return b.includes(c);\n });\n });\n};\nexport var identity = function identity(param) {\n return param;\n};\n\n/*\n * @description: convert camel case to dash case\n * string => string\n */\nexport var getDashCase = function getDashCase(name) {\n return name.replace(/([A-Z])/g, function (v) {\n return \"-\".concat(v.toLowerCase());\n });\n};\n\n/*\n * @description: add compatible style prefix\n * (string, string) => object\n */\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (IN_COMPATIBLE_PROPERTY.indexOf(name) === -1) {\n return _defineProperty({}, name, Number.isNaN(value) ? 0 : value);\n }\n var isTransition = name === 'transition';\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var styleVal = value;\n return PREFIX_LIST.reduce(function (result, property, i) {\n if (isTransition) {\n styleVal = value.replace(/(transform|transform-origin)/gim, \"\".concat(IN_LINE_PREFIX_LIST[i], \"$1\"));\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, property + camelName, styleVal));\n }, {});\n};\nexport var log = function log() {\n var _console;\n (_console = console).log.apply(_console, arguments);\n};\n\n/*\n * @description: log the value of a varible\n * string => any => any\n */\nexport var debug = function debug(name) {\n return function (item) {\n log(name, item);\n return item;\n };\n};\n\n/*\n * @description: log name, args, return value of a function\n * function => function\n */\nexport var debugf = function debugf(tag, f) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var res = f.apply(void 0, args);\n var name = tag || f.name || 'anonymous function';\n var argNames = \"(\".concat(args.map(JSON.stringify).join(', '), \")\");\n log(\"\".concat(name, \": \").concat(argNames, \" => \").concat(JSON.stringify(res)));\n return res;\n };\n};\n\n/*\n * @description: map object on every element in this object.\n * (function, object) => object\n */\nexport var mapObject = function mapObject(fn, obj) {\n return Object.keys(obj).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, fn(key, obj[key])));\n }, {});\n};\n\n/*\n * @description: add compatible prefix to style\n * object => object\n */\nexport var translateStyle = function translateStyle(style) {\n return Object.keys(style).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), generatePrefixStyle(key, res[key]));\n }, style);\n};\nexport var compose = function compose() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (!args.length) {\n return identity;\n }\n var fns = args.reverse();\n // first function can receive multiply arguments\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\nexport var getTransitionVal = function getTransitionVal(props, duration, easing) {\n return props.map(function (prop) {\n return \"\".concat(getDashCase(prop), \" \").concat(duration, \"ms \").concat(easing);\n }).join(',');\n};\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format, a, b, c, d, e, f) {\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { warn } from './util';\nvar ACCURACY = 1e-4;\nvar cubicBezierFactor = function cubicBezierFactor(c1, c2) {\n return [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\n};\nvar multyTime = function multyTime(params, t) {\n return params.map(function (param, i) {\n return param * Math.pow(t, i);\n }).reduce(function (pre, curr) {\n return pre + curr;\n });\n};\nvar cubicBezier = function cubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n return multyTime(params, t);\n };\n};\nvar derivativeCubicBezier = function derivativeCubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n var newParams = [].concat(_toConsumableArray(params.map(function (param, i) {\n return param * i;\n }).slice(1)), [0]);\n return multyTime(newParams, t);\n };\n};\n\n// calculate cubic-bezier using Newton's method\nexport var configBezier = function configBezier() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var x1 = args[0],\n y1 = args[1],\n x2 = args[2],\n y2 = args[3];\n if (args.length === 1) {\n switch (args[0]) {\n case 'linear':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n case 'ease':\n x1 = 0.25;\n y1 = 0.1;\n x2 = 0.25;\n y2 = 1.0;\n break;\n case 'ease-in':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n case 'ease-out':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n case 'ease-in-out':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n default:\n {\n var easing = args[0].split('(');\n if (easing[0] === 'cubic-bezier' && easing[1].split(')')[0].split(',').length === 4) {\n var _easing$1$split$0$spl = easing[1].split(')')[0].split(',').map(function (x) {\n return parseFloat(x);\n });\n var _easing$1$split$0$spl2 = _slicedToArray(_easing$1$split$0$spl, 4);\n x1 = _easing$1$split$0$spl2[0];\n y1 = _easing$1$split$0$spl2[1];\n x2 = _easing$1$split$0$spl2[2];\n y2 = _easing$1$split$0$spl2[3];\n } else {\n warn(false, '[configBezier]: arguments should be one of ' + \"oneOf 'linear', 'ease', 'ease-in', 'ease-out', \" + \"'ease-in-out','cubic-bezier(x1,y1,x2,y2)', instead received %s\", args);\n }\n }\n }\n }\n warn([x1, x2, y1, y2].every(function (num) {\n return typeof num === 'number' && num >= 0 && num <= 1;\n }), '[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s', args);\n var curveX = cubicBezier(x1, x2);\n var curveY = cubicBezier(y1, y2);\n var derCurveX = derivativeCubicBezier(x1, x2);\n var rangeValue = function rangeValue(value) {\n if (value > 1) {\n return 1;\n }\n if (value < 0) {\n return 0;\n }\n return value;\n };\n var bezier = function bezier(_t) {\n var t = _t > 1 ? 1 : _t;\n var x = t;\n for (var i = 0; i < 8; ++i) {\n var evalT = curveX(x) - t;\n var derVal = derCurveX(x);\n if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n return curveY(x);\n }\n x = rangeValue(x - evalT / derVal);\n }\n return curveY(x);\n };\n bezier.isStepper = false;\n return bezier;\n};\nexport var configSpring = function configSpring() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _config$stiff = config.stiff,\n stiff = _config$stiff === void 0 ? 100 : _config$stiff,\n _config$damping = config.damping,\n damping = _config$damping === void 0 ? 8 : _config$damping,\n _config$dt = config.dt,\n dt = _config$dt === void 0 ? 17 : _config$dt;\n var stepper = function stepper(currX, destX, currV) {\n var FSpring = -(currX - destX) * stiff;\n var FDamping = currV * damping;\n var newV = currV + (FSpring - FDamping) * dt / 1000;\n var newX = currV * dt / 1000 + currX;\n if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n return [destX, 0];\n }\n return [newX, newV];\n };\n stepper.isStepper = true;\n stepper.dt = dt;\n return stepper;\n};\nexport var configEasing = function configEasing() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var easing = args[0];\n if (typeof easing === 'string') {\n switch (easing) {\n case 'ease':\n case 'ease-in-out':\n case 'ease-out':\n case 'ease-in':\n case 'linear':\n return configBezier(easing);\n case 'spring':\n return configSpring();\n default:\n if (easing.split('(')[0] === 'cubic-bezier') {\n return configBezier(easing);\n }\n warn(false, \"[configEasing]: first argument should be one of 'ease', 'ease-in', \" + \"'ease-out', 'ease-in-out','cubic-bezier(x1,y1,x2,y2)', 'linear' and 'spring', instead received %s\", args);\n }\n }\n if (typeof easing === 'function') {\n return easing;\n }\n warn(false, '[configEasing]: first argument type should be function or string, instead received %s', args);\n return null;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { getIntersectionKeys, mapObject } from './util';\nvar alpha = function alpha(begin, end, k) {\n return begin + (end - begin) * k;\n};\nvar needContinue = function needContinue(_ref) {\n var from = _ref.from,\n to = _ref.to;\n return from !== to;\n};\n\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\n */\nvar calStepperVals = function calStepperVals(easing, preVals, steps) {\n var nextStepVals = mapObject(function (key, val) {\n if (needContinue(val)) {\n var _easing = easing(val.from, val.to, val.velocity),\n _easing2 = _slicedToArray(_easing, 2),\n newX = _easing2[0],\n newV = _easing2[1];\n return _objectSpread(_objectSpread({}, val), {}, {\n from: newX,\n velocity: newV\n });\n }\n return val;\n }, preVals);\n if (steps < 1) {\n return mapObject(function (key, val) {\n if (needContinue(val)) {\n return _objectSpread(_objectSpread({}, val), {}, {\n velocity: alpha(val.velocity, nextStepVals[key].velocity, steps),\n from: alpha(val.from, nextStepVals[key].from, steps)\n });\n }\n return val;\n }, preVals);\n }\n return calStepperVals(easing, nextStepVals, steps - 1);\n};\n\n// configure update function\nexport default (function (from, to, easing, duration, render) {\n var interKeys = getIntersectionKeys(from, to);\n var timingStyle = interKeys.reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, [from[key], to[key]]));\n }, {});\n var stepperStyle = interKeys.reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, {\n from: from[key],\n velocity: 0,\n to: to[key]\n }));\n }, {});\n var cafId = -1;\n var preTime;\n var beginTime;\n var update = function update() {\n return null;\n };\n var getCurrStyle = function getCurrStyle() {\n return mapObject(function (key, val) {\n return val.from;\n }, stepperStyle);\n };\n var shouldStopAnimation = function shouldStopAnimation() {\n return !Object.values(stepperStyle).filter(needContinue).length;\n };\n\n // stepper timing function like spring\n var stepperUpdate = function stepperUpdate(now) {\n if (!preTime) {\n preTime = now;\n }\n var deltaTime = now - preTime;\n var steps = deltaTime / easing.dt;\n stepperStyle = calStepperVals(easing, stepperStyle, steps);\n // get union set and add compatible prefix\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), getCurrStyle(stepperStyle)));\n preTime = now;\n if (!shouldStopAnimation()) {\n cafId = requestAnimationFrame(update);\n }\n };\n\n // t => val timing function like cubic-bezier\n var timingUpdate = function timingUpdate(now) {\n if (!beginTime) {\n beginTime = now;\n }\n var t = (now - beginTime) / duration;\n var currStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(t)]));\n }, timingStyle);\n\n // get union set and add compatible prefix\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), currStyle));\n if (t < 1) {\n cafId = requestAnimationFrame(update);\n } else {\n var finalStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(1)]));\n }, timingStyle);\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), finalStyle));\n }\n };\n update = easing.isStepper ? stepperUpdate : timingUpdate;\n\n // return start animation method\n return function () {\n requestAnimationFrame(update);\n\n // return stop animation method\n return function () {\n cancelAnimationFrame(cafId);\n };\n };\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"steps\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React, { PureComponent, cloneElement, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { deepEqual } from 'fast-equals';\nimport createAnimateManager from './AnimateManager';\nimport { configEasing } from './easing';\nimport configUpdate from './configUpdate';\nimport { getTransitionVal, identity, translateStyle } from './util';\nvar Animate = /*#__PURE__*/function (_PureComponent) {\n _inherits(Animate, _PureComponent);\n var _super = _createSuper(Animate);\n function Animate(props, context) {\n var _this;\n _classCallCheck(this, Animate);\n _this = _super.call(this, props, context);\n var _this$props = _this.props,\n isActive = _this$props.isActive,\n attributeName = _this$props.attributeName,\n from = _this$props.from,\n to = _this$props.to,\n steps = _this$props.steps,\n children = _this$props.children,\n duration = _this$props.duration;\n _this.handleStyleChange = _this.handleStyleChange.bind(_assertThisInitialized(_this));\n _this.changeStyle = _this.changeStyle.bind(_assertThisInitialized(_this));\n if (!isActive || duration <= 0) {\n _this.state = {\n style: {}\n };\n\n // if children is a function and animation is not active, set style to 'to'\n if (typeof children === 'function') {\n _this.state = {\n style: to\n };\n }\n return _possibleConstructorReturn(_this);\n }\n if (steps && steps.length) {\n _this.state = {\n style: steps[0].style\n };\n } else if (from) {\n if (typeof children === 'function') {\n _this.state = {\n style: from\n };\n return _possibleConstructorReturn(_this);\n }\n _this.state = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n } else {\n _this.state = {\n style: {}\n };\n }\n return _this;\n }\n _createClass(Animate, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props2 = this.props,\n isActive = _this$props2.isActive,\n canBegin = _this$props2.canBegin;\n this.mounted = true;\n if (!isActive || !canBegin) {\n return;\n }\n this.runAnimation(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props3 = this.props,\n isActive = _this$props3.isActive,\n canBegin = _this$props3.canBegin,\n attributeName = _this$props3.attributeName,\n shouldReAnimate = _this$props3.shouldReAnimate,\n to = _this$props3.to,\n currentFrom = _this$props3.from;\n var style = this.state.style;\n if (!canBegin) {\n return;\n }\n if (!isActive) {\n var newState = {\n style: attributeName ? _defineProperty({}, attributeName, to) : to\n };\n if (this.state && style) {\n if (attributeName && style[attributeName] !== to || !attributeName && style !== to) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(newState);\n }\n }\n return;\n }\n if (deepEqual(prevProps.to, to) && prevProps.canBegin && prevProps.isActive) {\n return;\n }\n var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n if (this.manager) {\n this.manager.stop();\n }\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n var from = isTriggered || shouldReAnimate ? currentFrom : prevProps.to;\n if (this.state && style) {\n var _newState = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n if (attributeName && [attributeName] !== from || !attributeName && style !== from) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(_newState);\n }\n }\n this.runAnimation(_objectSpread(_objectSpread({}, this.props), {}, {\n from: from,\n begin: 0\n }));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n if (this.unSubscribe) {\n this.unSubscribe();\n }\n if (this.manager) {\n this.manager.stop();\n this.manager = null;\n }\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n }\n }, {\n key: \"handleStyleChange\",\n value: function handleStyleChange(style) {\n this.changeStyle(style);\n }\n }, {\n key: \"changeStyle\",\n value: function changeStyle(style) {\n if (this.mounted) {\n this.setState({\n style: style\n });\n }\n }\n }, {\n key: \"runJSAnimation\",\n value: function runJSAnimation(props) {\n var _this2 = this;\n var from = props.from,\n to = props.to,\n duration = props.duration,\n easing = props.easing,\n begin = props.begin,\n onAnimationEnd = props.onAnimationEnd,\n onAnimationStart = props.onAnimationStart;\n var startAnimation = configUpdate(from, to, configEasing(easing), duration, this.changeStyle);\n var finalStartAnimation = function finalStartAnimation() {\n _this2.stopJSAnimation = startAnimation();\n };\n this.manager.start([onAnimationStart, begin, finalStartAnimation, duration, onAnimationEnd]);\n }\n }, {\n key: \"runStepAnimation\",\n value: function runStepAnimation(props) {\n var _this3 = this;\n var steps = props.steps,\n begin = props.begin,\n onAnimationStart = props.onAnimationStart;\n var _steps$ = steps[0],\n initialStyle = _steps$.style,\n _steps$$duration = _steps$.duration,\n initialTime = _steps$$duration === void 0 ? 0 : _steps$$duration;\n var addStyle = function addStyle(sequence, nextItem, index) {\n if (index === 0) {\n return sequence;\n }\n var duration = nextItem.duration,\n _nextItem$easing = nextItem.easing,\n easing = _nextItem$easing === void 0 ? 'ease' : _nextItem$easing,\n style = nextItem.style,\n nextProperties = nextItem.properties,\n onAnimationEnd = nextItem.onAnimationEnd;\n var preItem = index > 0 ? steps[index - 1] : nextItem;\n var properties = nextProperties || Object.keys(style);\n if (typeof easing === 'function' || easing === 'spring') {\n return [].concat(_toConsumableArray(sequence), [_this3.runJSAnimation.bind(_this3, {\n from: preItem.style,\n to: style,\n duration: duration,\n easing: easing\n }), duration]);\n }\n var transition = getTransitionVal(properties, duration, easing);\n var newStyle = _objectSpread(_objectSpread(_objectSpread({}, preItem.style), style), {}, {\n transition: transition\n });\n return [].concat(_toConsumableArray(sequence), [newStyle, duration, onAnimationEnd]).filter(identity);\n };\n return this.manager.start([onAnimationStart].concat(_toConsumableArray(steps.reduce(addStyle, [initialStyle, Math.max(initialTime, begin)])), [props.onAnimationEnd]));\n }\n }, {\n key: \"runAnimation\",\n value: function runAnimation(props) {\n if (!this.manager) {\n this.manager = createAnimateManager();\n }\n var begin = props.begin,\n duration = props.duration,\n attributeName = props.attributeName,\n propsTo = props.to,\n easing = props.easing,\n onAnimationStart = props.onAnimationStart,\n onAnimationEnd = props.onAnimationEnd,\n steps = props.steps,\n children = props.children;\n var manager = this.manager;\n this.unSubscribe = manager.subscribe(this.handleStyleChange);\n if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n this.runJSAnimation(props);\n return;\n }\n if (steps.length > 1) {\n this.runStepAnimation(props);\n return;\n }\n var to = attributeName ? _defineProperty({}, attributeName, propsTo) : propsTo;\n var transition = getTransitionVal(Object.keys(to), duration, easing);\n manager.start([onAnimationStart, begin, _objectSpread(_objectSpread({}, to), {}, {\n transition: transition\n }), duration, onAnimationEnd]);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n begin = _this$props4.begin,\n duration = _this$props4.duration,\n attributeName = _this$props4.attributeName,\n easing = _this$props4.easing,\n isActive = _this$props4.isActive,\n steps = _this$props4.steps,\n from = _this$props4.from,\n to = _this$props4.to,\n canBegin = _this$props4.canBegin,\n onAnimationEnd = _this$props4.onAnimationEnd,\n shouldReAnimate = _this$props4.shouldReAnimate,\n onAnimationReStart = _this$props4.onAnimationReStart,\n others = _objectWithoutProperties(_this$props4, _excluded);\n var count = Children.count(children);\n // eslint-disable-next-line react/destructuring-assignment\n var stateStyle = translateStyle(this.state.style);\n if (typeof children === 'function') {\n return children(stateStyle);\n }\n if (!isActive || count === 0 || duration <= 0) {\n return children;\n }\n var cloneContainer = function cloneContainer(container) {\n var _container$props = container.props,\n _container$props$styl = _container$props.style,\n style = _container$props$styl === void 0 ? {} : _container$props$styl,\n className = _container$props.className;\n var res = /*#__PURE__*/cloneElement(container, _objectSpread(_objectSpread({}, others), {}, {\n style: _objectSpread(_objectSpread({}, style), stateStyle),\n className: className\n }));\n return res;\n };\n if (count === 1) {\n return cloneContainer(Children.only(children));\n }\n return /*#__PURE__*/React.createElement(\"div\", null, Children.map(children, function (child) {\n return cloneContainer(child);\n }));\n }\n }]);\n return Animate;\n}(PureComponent);\nAnimate.displayName = 'Animate';\nAnimate.defaultProps = {\n begin: 0,\n duration: 1000,\n from: '',\n to: '',\n attributeName: '',\n easing: 'ease',\n isActive: true,\n canBegin: true,\n steps: [],\n onAnimationEnd: function onAnimationEnd() {},\n onAnimationStart: function onAnimationStart() {}\n};\nAnimate.propTypes = {\n from: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n to: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n attributeName: PropTypes.string,\n // animation duration\n duration: PropTypes.number,\n begin: PropTypes.number,\n easing: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n steps: PropTypes.arrayOf(PropTypes.shape({\n duration: PropTypes.number.isRequired,\n style: PropTypes.object.isRequired,\n easing: PropTypes.oneOfType([PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']), PropTypes.func]),\n // transition css properties(dash case), optional\n properties: PropTypes.arrayOf('string'),\n onAnimationEnd: PropTypes.func\n })),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n isActive: PropTypes.bool,\n canBegin: PropTypes.bool,\n onAnimationEnd: PropTypes.func,\n // decide if it should reanimate with initial from style when props change\n shouldReAnimate: PropTypes.bool,\n onAnimationStart: PropTypes.func,\n onAnimationReStart: PropTypes.func\n};\nexport default Animate;","var _excluded = [\"children\", \"appearOptions\", \"enterOptions\", \"leaveOptions\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component, Children } from 'react';\nimport { Transition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport Animate from './Animate';\nif (Number.isFinite === undefined) {\n Number.isFinite = function (value) {\n return typeof value === 'number' && isFinite(value);\n };\n}\nvar parseDurationOfSingleTransition = function parseDurationOfSingleTransition() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var steps = options.steps,\n duration = options.duration;\n if (steps && steps.length) {\n return steps.reduce(function (result, entry) {\n return result + (Number.isFinite(entry.duration) && entry.duration > 0 ? entry.duration : 0);\n }, 0);\n }\n if (Number.isFinite(duration)) {\n return duration;\n }\n return 0;\n};\nvar AnimateGroupChild = /*#__PURE__*/function (_Component) {\n _inherits(AnimateGroupChild, _Component);\n var _super = _createSuper(AnimateGroupChild);\n function AnimateGroupChild() {\n var _this;\n _classCallCheck(this, AnimateGroupChild);\n _this = _super.call(this);\n _defineProperty(_assertThisInitialized(_this), \"handleEnter\", function (node, isAppearing) {\n var _this$props = _this.props,\n appearOptions = _this$props.appearOptions,\n enterOptions = _this$props.enterOptions;\n _this.handleStyleActive(isAppearing ? appearOptions : enterOptions);\n });\n _defineProperty(_assertThisInitialized(_this), \"handleExit\", function () {\n var leaveOptions = _this.props.leaveOptions;\n _this.handleStyleActive(leaveOptions);\n });\n _this.state = {\n isActive: false\n };\n return _this;\n }\n _createClass(AnimateGroupChild, [{\n key: \"handleStyleActive\",\n value: function handleStyleActive(style) {\n if (style) {\n var onAnimationEnd = style.onAnimationEnd ? function () {\n style.onAnimationEnd();\n } : null;\n this.setState(_objectSpread(_objectSpread({}, style), {}, {\n onAnimationEnd: onAnimationEnd,\n isActive: true\n }));\n }\n }\n }, {\n key: \"parseTimeout\",\n value: function parseTimeout() {\n var _this$props2 = this.props,\n appearOptions = _this$props2.appearOptions,\n enterOptions = _this$props2.enterOptions,\n leaveOptions = _this$props2.leaveOptions;\n return parseDurationOfSingleTransition(appearOptions) + parseDurationOfSingleTransition(enterOptions) + parseDurationOfSingleTransition(leaveOptions);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props3 = this.props,\n children = _this$props3.children,\n appearOptions = _this$props3.appearOptions,\n enterOptions = _this$props3.enterOptions,\n leaveOptions = _this$props3.leaveOptions,\n props = _objectWithoutProperties(_this$props3, _excluded);\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.handleEnter,\n onExit: this.handleExit,\n timeout: this.parseTimeout()\n }), function () {\n return /*#__PURE__*/React.createElement(Animate, _this2.state, Children.only(children));\n });\n }\n }]);\n return AnimateGroupChild;\n}(Component);\nAnimateGroupChild.propTypes = {\n appearOptions: PropTypes.object,\n enterOptions: PropTypes.object,\n leaveOptions: PropTypes.object,\n children: PropTypes.element\n};\nexport default AnimateGroupChild;","import React, { Children } from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport AnimateGroupChild from './AnimateGroupChild';\nfunction AnimateGroup(props) {\n var component = props.component,\n children = props.children,\n appear = props.appear,\n enter = props.enter,\n leave = props.leave;\n return /*#__PURE__*/React.createElement(TransitionGroup, {\n component: component\n }, Children.map(children, function (child, index) {\n return /*#__PURE__*/React.createElement(AnimateGroupChild, {\n appearOptions: appear,\n enterOptions: enter,\n leaveOptions: leave,\n key: \"child-\".concat(index) // eslint-disable-line\n }, child);\n }));\n}\nAnimateGroup.propTypes = {\n appear: PropTypes.object,\n enter: PropTypes.object,\n leave: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.array, PropTypes.element]),\n component: PropTypes.any\n};\nAnimateGroup.defaultProps = {\n component: 'span'\n};\nexport default AnimateGroup;","import Animate from './Animate';\nimport { configBezier, configSpring } from './easing';\nimport { translateStyle } from './util';\nimport AnimateGroup from './AnimateGroup';\nexport { configSpring, configBezier, AnimateGroup, translateStyle };\nexport default Animate;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<ReplaceTransition>` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * <ReplaceTransition in>\n * <Fade><div>I appear first</div></Fade>\n * <Fade><div>I replace the above</div></Fade>\n * </ReplaceTransition>\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `<Transition>` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkErrors = (columns) => {\n const hasGroups = !!columns.find((column) => column.parent);\n const stickyColumnsWithoutGroup = columns.filter((column) => column.sticky && !column.parent).map(({ Header }) => `'${Header}'`);\n if (hasGroups && stickyColumnsWithoutGroup.length) {\n throw new Error(`WARNING react-table-sticky:\n \\nYour ReactTable has group and sticky columns outside groups, and that will break UI.\n \\nYou must place ${stickyColumnsWithoutGroup.join(' and ')} columns into a group (even a group with an empty Header label)\\n`);\n }\n const bugWithUnderColumnsSticky = columns.find((parentCol) => !parentCol.sticky && parentCol.columns && parentCol.columns.find((col) => col.sticky));\n if (!bugWithUnderColumnsSticky)\n return;\n // @ts-ignore\n const childBugs = bugWithUnderColumnsSticky.columns.find(({ sticky }) => sticky);\n if (!childBugs)\n return;\n throw new Error(`WARNING react-table-sticky:\n \\nYour ReactTable contain columns group with at least one child columns sticky.\n \\nWhen ReactTable has columns groups, only columns groups can be sticky\n \\nYou must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Header}'\n column, or remove the sticky property of '${childBugs.Header}' column.`);\n};\nfunction getStickyValue(column) {\n if (column.sticky === 'left' || column.sticky === 'right') {\n return column.sticky;\n }\n if (column.parent) {\n return getStickyValue(column.parent);\n }\n return null;\n}\nexports.getStickyValue = getStickyValue;\nfunction columnIsLastLeftSticky(columnId, columns) {\n const index = columns.findIndex(({ id }) => id === columnId);\n const column = columns[index];\n const nextColumn = columns[index + 1];\n const columnIsLeftSticky = getStickyValue(column) === 'left';\n const nextColumnIsLeftSticky = nextColumn && getStickyValue(nextColumn) === 'left';\n return columnIsLeftSticky && !nextColumnIsLeftSticky;\n}\nexports.columnIsLastLeftSticky = columnIsLastLeftSticky;\nfunction columnIsFirstRightSticky(columnId, columns) {\n const index = columns.findIndex(({ id }) => id === columnId);\n const column = columns[index];\n const prevColumn = columns[index - 1];\n const columnIsRightSticky = getStickyValue(column) === 'right';\n const prevColumnIsRightSticky = prevColumn && getStickyValue(prevColumn) === 'right';\n return columnIsRightSticky && !prevColumnIsRightSticky;\n}\nexports.columnIsFirstRightSticky = columnIsFirstRightSticky;\nfunction getMarginRight(columnId, columns) {\n const currentIndex = columns.findIndex(({ id }) => id === columnId);\n let rightMargin = 0;\n for (let i = currentIndex + 1; i < columns.length; i += 1) {\n if (columns[i].isVisible !== false) {\n rightMargin += columns[i].width;\n }\n }\n return rightMargin;\n}\nexports.getMarginRight = getMarginRight;\nconst cellStylesSticky = {\n // hard coded inline style will be remove in the next major release\n position: 'sticky',\n zIndex: 3,\n};\nfunction findHeadersSameLevel(header, headers) {\n return headers.filter((flatHeaderItem) => {\n return flatHeaderItem.depth === header.depth;\n });\n}\nfunction getStickyProps(header, instance) {\n let style = {};\n const dataAttrs = {};\n exports.checkErrors(instance.columns);\n const sticky = getStickyValue(header);\n if (sticky) {\n style = Object.assign({}, cellStylesSticky);\n // @ts-ignore\n dataAttrs['data-sticky-td'] = true;\n const headers = findHeadersSameLevel(header, instance.flatHeaders);\n const margin = sticky === 'left'\n ? header.totalLeft\n : getMarginRight(header.id, headers);\n style = Object.assign(Object.assign({}, style), { [sticky]: `${margin}px` });\n const isLastLeftSticky = columnIsLastLeftSticky(header.id, headers);\n if (isLastLeftSticky) {\n // @ts-ignore\n dataAttrs['data-sticky-last-left-td'] = true;\n }\n const isFirstRightSticky = columnIsFirstRightSticky(header.id, headers);\n if (isFirstRightSticky) {\n // @ts-ignore\n dataAttrs['data-sticky-first-right-td'] = true;\n }\n }\n return Object.assign({ style }, dataAttrs);\n}\nexports.useSticky = (hooks) => {\n hooks.getHeaderProps.push((props, { instance, column }) => {\n const nextProps = getStickyProps(column, instance);\n return [props, nextProps];\n });\n hooks.getCellProps.push((props, { instance, cell }) => {\n const nextProps = getStickyProps(cell.column, instance);\n return [props, nextProps];\n });\n};\nexports.useSticky.pluginName = 'useSticky';\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nvar Truncate = function (_Component) {\n _inherits(Truncate, _Component);\n\n function Truncate() {\n var _ref;\n\n _classCallCheck(this, Truncate);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = _possibleConstructorReturn(this, (_ref = Truncate.__proto__ || Object.getPrototypeOf(Truncate)).call.apply(_ref, [this].concat(args)));\n\n _this.state = {};\n _this.styles = {\n ellipsis: {\n position: 'fixed',\n visibility: 'hidden',\n top: 0,\n left: 0\n }\n };\n\n\n _this.elements = {};\n\n _this.onResize = _this.onResize.bind(_this);\n _this.onTruncate = _this.onTruncate.bind(_this);\n _this.calcTargetWidth = _this.calcTargetWidth.bind(_this);\n _this.measureWidth = _this.measureWidth.bind(_this);\n _this.getLines = _this.getLines.bind(_this);\n _this.renderLine = _this.renderLine.bind(_this);\n return _this;\n }\n\n _createClass(Truncate, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var text = this.elements.text,\n calcTargetWidth = this.calcTargetWidth,\n onResize = this.onResize;\n\n\n var canvas = document.createElement('canvas');\n this.canvasContext = canvas.getContext('2d');\n\n calcTargetWidth(function () {\n // Node not needed in document tree to read its content\n if (text) {\n text.parentNode.removeChild(text);\n }\n });\n\n window.addEventListener('resize', onResize);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n // Render was based on outdated refs and needs to be rerun\n if (this.props.children !== prevProps.children) {\n this.forceUpdate();\n }\n\n // If the width prop has changed, recalculate size of contents\n if (this.props.width !== prevProps.width) {\n this.calcTargetWidth();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var ellipsis = this.elements.ellipsis,\n onResize = this.onResize,\n timeout = this.timeout;\n\n\n ellipsis.parentNode.removeChild(ellipsis);\n\n window.removeEventListener('resize', onResize);\n\n window.cancelAnimationFrame(timeout);\n }\n\n // Shim innerText to consistently break lines at <br/> but not at \\n\n\n }, {\n key: 'innerText',\n value: function innerText(node) {\n var div = document.createElement('div');\n var contentKey = 'innerText' in window.HTMLElement.prototype ? 'innerText' : 'textContent';\n\n div.innerHTML = node.innerHTML.replace(/\\r\\n|\\r|\\n/g, ' ');\n\n var text = div[contentKey];\n\n var test = document.createElement('div');\n test.innerHTML = 'foo<br/>bar';\n\n if (test[contentKey].replace(/\\r\\n|\\r/g, '\\n') !== 'foo\\nbar') {\n div.innerHTML = div.innerHTML.replace(/<br.*?[\\/]?>/gi, '\\n');\n text = div[contentKey];\n }\n\n return text;\n }\n }, {\n key: 'onResize',\n value: function onResize() {\n this.calcTargetWidth();\n }\n }, {\n key: 'onTruncate',\n value: function onTruncate(didTruncate) {\n var onTruncate = this.props.onTruncate;\n\n\n if (typeof onTruncate === 'function') {\n this.timeout = window.requestAnimationFrame(function () {\n onTruncate(didTruncate);\n });\n }\n }\n }, {\n key: 'calcTargetWidth',\n value: function calcTargetWidth(callback) {\n var target = this.elements.target,\n calcTargetWidth = this.calcTargetWidth,\n canvasContext = this.canvasContext,\n width = this.props.width;\n\n // Calculation is no longer relevant, since node has been removed\n\n if (!target) {\n return;\n }\n\n var targetWidth = width ||\n // Floor the result to deal with browser subpixel precision\n Math.floor(target.parentNode.getBoundingClientRect().width);\n\n // Delay calculation until parent node is inserted to the document\n // Mounting order in React is ChildComponent, ParentComponent\n if (!targetWidth) {\n return window.requestAnimationFrame(function () {\n return calcTargetWidth(callback);\n });\n }\n\n var style = window.getComputedStyle(target);\n\n var font = [style['font-weight'], style['font-style'], style['font-size'], style['font-family']].join(' ');\n\n canvasContext.font = font;\n\n this.setState({\n targetWidth: targetWidth\n }, callback);\n }\n }, {\n key: 'measureWidth',\n value: function measureWidth(text) {\n return this.canvasContext.measureText(text).width;\n }\n }, {\n key: 'ellipsisWidth',\n value: function ellipsisWidth(node) {\n return node.offsetWidth;\n }\n }, {\n key: 'trimRight',\n value: function trimRight(text) {\n return text.replace(/\\s+$/, '');\n }\n }, {\n key: 'getLines',\n value: function getLines() {\n var elements = this.elements,\n _props = this.props,\n numLines = _props.lines,\n ellipsis = _props.ellipsis,\n trimWhitespace = _props.trimWhitespace,\n targetWidth = this.state.targetWidth,\n innerText = this.innerText,\n measureWidth = this.measureWidth,\n onTruncate = this.onTruncate,\n trimRight = this.trimRight;\n\n\n var lines = [];\n var text = innerText(elements.text);\n var textLines = text.split('\\n').map(function (line) {\n return line.split(' ');\n });\n var didTruncate = true;\n var ellipsisWidth = this.ellipsisWidth(this.elements.ellipsis);\n\n for (var line = 1; line <= numLines; line++) {\n var textWords = textLines[0];\n\n // Handle newline\n if (textWords.length === 0) {\n lines.push();\n textLines.shift();\n line--;\n continue;\n }\n\n var resultLine = textWords.join(' ');\n\n if (measureWidth(resultLine) <= targetWidth) {\n if (textLines.length === 1) {\n // Line is end of text and fits without truncating\n didTruncate = false;\n\n lines.push(resultLine);\n break;\n }\n }\n\n if (line === numLines) {\n // Binary search determining the longest possible line inluding truncate string\n var textRest = textWords.join(' ');\n\n var lower = 0;\n var upper = textRest.length - 1;\n\n while (lower <= upper) {\n var middle = Math.floor((lower + upper) / 2);\n\n var testLine = textRest.slice(0, middle + 1);\n\n if (measureWidth(testLine) + ellipsisWidth <= targetWidth) {\n lower = middle + 1;\n } else {\n upper = middle - 1;\n }\n }\n\n var lastLineText = textRest.slice(0, lower);\n\n if (trimWhitespace) {\n lastLineText = trimRight(lastLineText);\n\n // Remove blank lines from the end of text\n while (!lastLineText.length && lines.length) {\n var prevLine = lines.pop();\n\n lastLineText = trimRight(prevLine);\n }\n }\n\n resultLine = React.createElement(\n 'span',\n null,\n lastLineText,\n ellipsis\n );\n } else {\n // Binary search determining when the line breaks\n var _lower = 0;\n var _upper = textWords.length - 1;\n\n while (_lower <= _upper) {\n var _middle = Math.floor((_lower + _upper) / 2);\n\n var _testLine = textWords.slice(0, _middle + 1).join(' ');\n\n if (measureWidth(_testLine) <= targetWidth) {\n _lower = _middle + 1;\n } else {\n _upper = _middle - 1;\n }\n }\n\n // The first word of this line is too long to fit it\n if (_lower === 0) {\n // Jump to processing of last line\n line = numLines - 1;\n continue;\n }\n\n resultLine = textWords.slice(0, _lower).join(' ');\n textLines[0].splice(0, _lower);\n }\n\n lines.push(resultLine);\n }\n\n onTruncate(didTruncate);\n\n return lines;\n }\n }, {\n key: 'renderLine',\n value: function renderLine(line, i, arr) {\n if (i === arr.length - 1) {\n return React.createElement(\n 'span',\n { key: i },\n line\n );\n } else {\n var br = React.createElement('br', { key: i + 'br' });\n\n if (line) {\n return [React.createElement(\n 'span',\n { key: i },\n line\n ), br];\n } else {\n return br;\n }\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var target = this.elements.target,\n _props2 = this.props,\n children = _props2.children,\n ellipsis = _props2.ellipsis,\n lines = _props2.lines,\n spanProps = _objectWithoutProperties(_props2, ['children', 'ellipsis', 'lines']),\n targetWidth = this.state.targetWidth,\n getLines = this.getLines,\n renderLine = this.renderLine,\n onTruncate = this.onTruncate;\n\n var text = void 0;\n\n var mounted = !!(target && targetWidth);\n\n if (typeof window !== 'undefined' && mounted) {\n if (lines > 0) {\n text = getLines().map(renderLine);\n } else {\n text = children;\n\n onTruncate(false);\n }\n }\n\n delete spanProps.onTruncate;\n delete spanProps.trimWhitespace;\n\n return React.createElement(\n 'span',\n _extends({}, spanProps, { ref: function ref(targetEl) {\n _this2.elements.target = targetEl;\n } }),\n React.createElement(\n 'span',\n null,\n text\n ),\n React.createElement(\n 'span',\n { ref: function ref(textEl) {\n _this2.elements.text = textEl;\n } },\n children\n ),\n React.createElement(\n 'span',\n { ref: function ref(ellipsisEl) {\n _this2.elements.ellipsis = ellipsisEl;\n }, style: this.styles.ellipsis },\n ellipsis\n )\n );\n }\n }]);\n\n return Truncate;\n}(Component);\n\nTruncate.propTypes = {\n children: PropTypes.node,\n ellipsis: PropTypes.node,\n lines: PropTypes.oneOfType([PropTypes.oneOf([false]), PropTypes.number]),\n trimWhitespace: PropTypes.bool,\n width: PropTypes.number,\n onTruncate: PropTypes.func\n};\nTruncate.defaultProps = {\n children: '',\n ellipsis: '…',\n lines: 1,\n trimWhitespace: false,\n width: 0\n};\nexport default Truncate;\n;\n","import _isEqual from \"lodash/isEqual\";\nimport _isNaN from \"lodash/isNaN\";\nimport _max from \"lodash/max\";\nimport _isFunction from \"lodash/isFunction\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\nimport _isArray from \"lodash/isArray\";\nvar _excluded = [\"layout\", \"type\", \"stroke\", \"connectNulls\", \"isRange\", \"ref\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * @fileOverview Area\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Animate from 'react-smooth';\nimport { Curve } from '../shape/Curve';\nimport { Dot } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { Global } from '../util/Global';\nimport { isNumber, uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps, isDotProps } from '../util/ReactUtils';\nexport var Area = /*#__PURE__*/function (_PureComponent) {\n _inherits(Area, _PureComponent);\n var _super = _createSuper(Area);\n function Area() {\n var _this;\n _classCallCheck(this, Area);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isAnimationFinished: true\n });\n _defineProperty(_assertThisInitialized(_this), \"id\", uniqueId('recharts-area-'));\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (_isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function () {\n var onAnimationStart = _this.props.onAnimationStart;\n _this.setState({\n isAnimationFinished: false\n });\n if (_isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n });\n return _this;\n }\n _createClass(Area, [{\n key: \"renderDots\",\n value: function renderDots(needClip, clipDot, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n var isAnimationFinished = this.state.isAnimationFinished;\n if (isAnimationActive && !isAnimationFinished) {\n return null;\n }\n var _this$props = this.props,\n dot = _this$props.dot,\n points = _this$props.points,\n dataKey = _this$props.dataKey;\n var areaProps = filterProps(this.props);\n var customDotProps = filterProps(dot, true);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread(_objectSpread(_objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, areaProps), customDotProps), {}, {\n dataKey: dataKey,\n cx: entry.x,\n cy: entry.y,\n index: i,\n value: entry.value,\n payload: entry.payload\n });\n return Area.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipDot ? '' : 'dots-').concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-area-dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderHorizontalRect\",\n value: function renderHorizontalRect(alpha) {\n var _this$props2 = this.props,\n baseLine = _this$props2.baseLine,\n points = _this$props2.points,\n strokeWidth = _this$props2.strokeWidth;\n var startX = points[0].x;\n var endX = points[points.length - 1].x;\n var width = alpha * Math.abs(startX - endX);\n var maxY = _max(points.map(function (entry) {\n return entry.y || 0;\n }));\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n maxY = Math.max(baseLine, maxY);\n } else if (baseLine && _isArray(baseLine) && baseLine.length) {\n maxY = Math.max(_max(baseLine.map(function (entry) {\n return entry.y || 0;\n })), maxY);\n }\n if (isNumber(maxY)) {\n return /*#__PURE__*/React.createElement(\"rect\", {\n x: startX < endX ? startX : startX - width,\n y: 0,\n width: width,\n height: Math.floor(maxY + (strokeWidth ? parseInt(\"\".concat(strokeWidth), 10) : 1))\n });\n }\n return null;\n }\n }, {\n key: \"renderVerticalRect\",\n value: function renderVerticalRect(alpha) {\n var _this$props3 = this.props,\n baseLine = _this$props3.baseLine,\n points = _this$props3.points,\n strokeWidth = _this$props3.strokeWidth;\n var startY = points[0].y;\n var endY = points[points.length - 1].y;\n var height = alpha * Math.abs(startY - endY);\n var maxX = _max(points.map(function (entry) {\n return entry.x || 0;\n }));\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n maxX = Math.max(baseLine, maxX);\n } else if (baseLine && _isArray(baseLine) && baseLine.length) {\n maxX = Math.max(_max(baseLine.map(function (entry) {\n return entry.x || 0;\n })), maxX);\n }\n if (isNumber(maxX)) {\n return /*#__PURE__*/React.createElement(\"rect\", {\n x: 0,\n y: startY < endY ? startY : startY - height,\n width: maxX + (strokeWidth ? parseInt(\"\".concat(strokeWidth), 10) : 1),\n height: Math.floor(height)\n });\n }\n return null;\n }\n }, {\n key: \"renderClipRect\",\n value: function renderClipRect(alpha) {\n var layout = this.props.layout;\n if (layout === 'vertical') {\n return this.renderVerticalRect(alpha);\n }\n return this.renderHorizontalRect(alpha);\n }\n }, {\n key: \"renderAreaStatically\",\n value: function renderAreaStatically(points, baseLine, needClip, clipPathId) {\n var _this$props4 = this.props,\n layout = _this$props4.layout,\n type = _this$props4.type,\n stroke = _this$props4.stroke,\n connectNulls = _this$props4.connectNulls,\n isRange = _this$props4.isRange,\n ref = _this$props4.ref,\n others = _objectWithoutProperties(_this$props4, _excluded);\n return /*#__PURE__*/React.createElement(Layer, {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, /*#__PURE__*/React.createElement(Curve, _extends({}, filterProps(others, true), {\n points: points,\n connectNulls: connectNulls,\n type: type,\n baseLine: baseLine,\n layout: layout,\n stroke: \"none\",\n className: \"recharts-area-area\"\n })), stroke !== 'none' && /*#__PURE__*/React.createElement(Curve, _extends({}, filterProps(this.props), {\n className: \"recharts-area-curve\",\n layout: layout,\n type: type,\n connectNulls: connectNulls,\n fill: \"none\",\n points: points\n })), stroke !== 'none' && isRange && /*#__PURE__*/React.createElement(Curve, _extends({}, filterProps(this.props), {\n className: \"recharts-area-curve\",\n layout: layout,\n type: type,\n connectNulls: connectNulls,\n fill: \"none\",\n points: baseLine\n })));\n }\n }, {\n key: \"renderAreaWithAnimation\",\n value: function renderAreaWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n var _this$props5 = this.props,\n points = _this$props5.points,\n baseLine = _this$props5.baseLine,\n isAnimationActive = _this$props5.isAnimationActive,\n animationBegin = _this$props5.animationBegin,\n animationDuration = _this$props5.animationDuration,\n animationEasing = _this$props5.animationEasing,\n animationId = _this$props5.animationId;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n prevBaseLine = _this$state.prevBaseLine;\n // const clipPathId = _.isNil(id) ? this.id : id;\n\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"area-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n // update animtaion\n var stepPoints = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n return entry;\n });\n var stepBaseLine;\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n var interpolator = interpolateNumber(prevBaseLine, baseLine);\n stepBaseLine = interpolator(t);\n } else if (_isNil(baseLine) || _isNaN(baseLine)) {\n var _interpolator = interpolateNumber(prevBaseLine, 0);\n stepBaseLine = _interpolator(t);\n } else {\n stepBaseLine = baseLine.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevBaseLine[prevPointIndex]) {\n var prev = prevBaseLine[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n return entry;\n });\n }\n return _this2.renderAreaStatically(stepPoints, stepBaseLine, needClip, clipPathId);\n }\n return /*#__PURE__*/React.createElement(Layer, null, /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"animationClipPath-\".concat(clipPathId)\n }, _this2.renderClipRect(t))), /*#__PURE__*/React.createElement(Layer, {\n clipPath: \"url(#animationClipPath-\".concat(clipPathId, \")\")\n }, _this2.renderAreaStatically(points, baseLine, needClip, clipPathId)));\n });\n }\n }, {\n key: \"renderArea\",\n value: function renderArea(needClip, clipPathId) {\n var _this$props6 = this.props,\n points = _this$props6.points,\n baseLine = _this$props6.baseLine,\n isAnimationActive = _this$props6.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n prevBaseLine = _this$state2.prevBaseLine,\n totalLength = _this$state2.totalLength;\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !_isEqual(prevPoints, points) || !_isEqual(prevBaseLine, baseLine))) {\n return this.renderAreaWithAnimation(needClip, clipPathId);\n }\n return this.renderAreaStatically(points, baseLine, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _filterProps;\n var _this$props7 = this.props,\n hide = _this$props7.hide,\n dot = _this$props7.dot,\n points = _this$props7.points,\n className = _this$props7.className,\n top = _this$props7.top,\n left = _this$props7.left,\n xAxis = _this$props7.xAxis,\n yAxis = _this$props7.yAxis,\n width = _this$props7.width,\n height = _this$props7.height,\n isAnimationActive = _this$props7.isAnimationActive,\n id = _this$props7.id;\n if (hide || !points || !points.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = classNames('recharts-area', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = _isNil(id) ? this.id : id;\n var _ref2 = (_filterProps = filterProps(dot)) !== null && _filterProps !== void 0 ? _filterProps : {\n r: 3,\n strokeWidth: 2\n },\n _ref2$r = _ref2.r,\n r = _ref2$r === void 0 ? 3 : _ref2$r,\n _ref2$strokeWidth = _ref2.strokeWidth,\n strokeWidth = _ref2$strokeWidth === void 0 ? 2 : _ref2$strokeWidth;\n var _ref3 = isDotProps(dot) ? dot : {},\n _ref3$clipDot = _ref3.clipDot,\n clipDot = _ref3$clipDot === void 0 ? true : _ref3$clipDot;\n var dotSize = r * 2 + strokeWidth;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n })), !clipDot && /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-dots-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left - dotSize / 2,\n y: top - dotSize / 2,\n width: width + dotSize,\n height: height + dotSize\n }))) : null, !hasSinglePoint ? this.renderArea(needClip, clipPathId) : null, (dot || hasSinglePoint) && this.renderDots(needClip, clipDot, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n curBaseLine: nextProps.baseLine,\n prevPoints: prevState.curPoints,\n prevBaseLine: prevState.curBaseLine\n };\n }\n if (nextProps.points !== prevState.curPoints || nextProps.baseLine !== prevState.curBaseLine) {\n return {\n curPoints: nextProps.points,\n curBaseLine: nextProps.baseLine\n };\n }\n return null;\n }\n }]);\n return Area;\n}(PureComponent);\n_defineProperty(Area, \"displayName\", 'Area');\n_defineProperty(Area, \"defaultProps\", {\n stroke: '#3182bd',\n fill: '#3182bd',\n fillOpacity: 0.6,\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'line',\n connectNulls: false,\n // points of area\n points: [],\n dot: false,\n activeDot: true,\n hide: false,\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n});\n_defineProperty(Area, \"getBaseValue\", function (props, item, xAxis, yAxis) {\n var layout = props.layout,\n chartBaseValue = props.baseValue;\n var itemBaseValue = item.props.baseValue;\n\n // The baseValue can be defined both on the AreaChart as well as on the Area.\n // The value for the item takes precedence.\n var baseValue = itemBaseValue !== null && itemBaseValue !== void 0 ? itemBaseValue : chartBaseValue;\n if (isNumber(baseValue) && typeof baseValue === 'number') {\n return baseValue;\n }\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var domain = numericAxis.scale.domain();\n if (numericAxis.type === 'number') {\n var max = Math.max(domain[0], domain[1]);\n var min = Math.min(domain[0], domain[1]);\n if (baseValue === 'dataMin') {\n return min;\n }\n if (baseValue === 'dataMax') {\n return max;\n }\n return max < 0 ? max : Math.max(Math.min(domain[0], domain[1]), 0);\n }\n if (baseValue === 'dataMin') {\n return domain[0];\n }\n if (baseValue === 'dataMax') {\n return domain[1];\n }\n return domain[0];\n});\n_defineProperty(Area, \"getComposedData\", function (_ref4) {\n var props = _ref4.props,\n item = _ref4.item,\n xAxis = _ref4.xAxis,\n yAxis = _ref4.yAxis,\n xAxisTicks = _ref4.xAxisTicks,\n yAxisTicks = _ref4.yAxisTicks,\n bandSize = _ref4.bandSize,\n dataKey = _ref4.dataKey,\n stackedData = _ref4.stackedData,\n dataStartIndex = _ref4.dataStartIndex,\n displayedData = _ref4.displayedData,\n offset = _ref4.offset;\n var layout = props.layout;\n var hasStack = stackedData && stackedData.length;\n var baseValue = Area.getBaseValue(props, item, xAxis, yAxis);\n var isRange = false;\n var points = displayedData.map(function (entry, index) {\n var originalValue = getValueByDataKey(entry, dataKey);\n var value;\n if (hasStack) {\n value = stackedData[dataStartIndex + index];\n } else {\n value = originalValue;\n if (!_isArray(value)) {\n value = [baseValue, value];\n } else {\n isRange = true;\n }\n }\n var isBreakPoint = _isNil(value[1]) || hasStack && _isNil(originalValue);\n if (layout === 'horizontal') {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: isBreakPoint ? null : yAxis.scale(value[1]),\n value: value,\n payload: entry\n };\n }\n return {\n x: isBreakPoint ? null : xAxis.scale(value[1]),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n var baseLine;\n if (hasStack || isRange) {\n baseLine = points.map(function (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.x,\n y: !_isNil(_get(entry, 'value[0]')) && !_isNil(_get(entry, 'y')) ? yAxis.scale(_get(entry, 'value[0]')) : null\n };\n }\n return {\n x: !_isNil(_get(entry, 'value[0]')) ? xAxis.scale(_get(entry, 'value[0]')) : null,\n y: entry.y\n };\n });\n } else if (layout === 'horizontal') {\n baseLine = yAxis.scale(baseValue);\n } else {\n baseLine = xAxis.scale(baseValue);\n }\n return _objectSpread({\n points: points,\n baseLine: baseLine,\n layout: layout,\n isRange: isRange\n }, offset);\n});\n_defineProperty(Area, \"renderDotItem\", function (option, props) {\n var dotItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dotItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dotItem = option(props);\n } else {\n dotItem = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n className: \"recharts-area-dot\"\n }));\n }\n return dotItem;\n});","var _excluded = [\"offset\", \"layout\", \"width\", \"dataKey\", \"data\", \"dataPointFormatter\", \"xAxis\", \"yAxis\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Render a group of error bar\n */\nimport React from 'react';\nimport { Layer } from '../container/Layer';\nimport { filterProps } from '../util/ReactUtils';\nexport function ErrorBar(props) {\n var offset = props.offset,\n layout = props.layout,\n width = props.width,\n dataKey = props.dataKey,\n data = props.data,\n dataPointFormatter = props.dataPointFormatter,\n xAxis = props.xAxis,\n yAxis = props.yAxis,\n others = _objectWithoutProperties(props, _excluded);\n var svgProps = filterProps(others);\n var errorBars = data.map(function (entry, i) {\n var _dataPointFormatter = dataPointFormatter(entry, dataKey),\n x = _dataPointFormatter.x,\n y = _dataPointFormatter.y,\n value = _dataPointFormatter.value,\n errorVal = _dataPointFormatter.errorVal;\n if (!errorVal) {\n return null;\n }\n var lineCoordinates = [];\n var lowBound, highBound;\n if (Array.isArray(errorVal)) {\n var _errorVal = _slicedToArray(errorVal, 2);\n lowBound = _errorVal[0];\n highBound = _errorVal[1];\n } else {\n lowBound = highBound = errorVal;\n }\n if (layout === 'vertical') {\n // error bar for horizontal charts, the y is fixed, x is a range value\n var scale = xAxis.scale;\n var yMid = y + offset;\n var yMin = yMid + width;\n var yMax = yMid - width;\n var xMin = scale(value - lowBound);\n var xMax = scale(value + highBound);\n\n // the right line of |--|\n lineCoordinates.push({\n x1: xMax,\n y1: yMin,\n x2: xMax,\n y2: yMax\n });\n // the middle line of |--|\n lineCoordinates.push({\n x1: xMin,\n y1: yMid,\n x2: xMax,\n y2: yMid\n });\n // the left line of |--|\n lineCoordinates.push({\n x1: xMin,\n y1: yMin,\n x2: xMin,\n y2: yMax\n });\n } else if (layout === 'horizontal') {\n // error bar for horizontal charts, the x is fixed, y is a range value\n var _scale = yAxis.scale;\n var xMid = x + offset;\n var _xMin = xMid - width;\n var _xMax = xMid + width;\n var _yMin = _scale(value - lowBound);\n var _yMax = _scale(value + highBound);\n\n // the top line\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMax,\n x2: _xMax,\n y2: _yMax\n });\n // the middle line\n lineCoordinates.push({\n x1: xMid,\n y1: _yMin,\n x2: xMid,\n y2: _yMax\n });\n // the bottom line\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMin,\n x2: _xMax,\n y2: _yMin\n });\n }\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(Layer, _extends({\n className: \"recharts-errorBar\",\n key: \"bar-\".concat(i)\n }, svgProps), lineCoordinates.map(function (coordinates, index) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"line\", _extends({}, coordinates, {\n key: \"line-\".concat(index)\n }))\n );\n }))\n );\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-errorBars\"\n }, errorBars);\n}\nErrorBar.defaultProps = {\n stroke: 'black',\n strokeWidth: 1.5,\n width: 5,\n offset: 0,\n layout: 'horizontal'\n};\nErrorBar.displayName = 'ErrorBar';","/**\n * @fileOverview X Axis\n */\n\n/** Define of XAxis props */\n\nexport var XAxis = function XAxis() {\n return null;\n};\nXAxis.displayName = 'XAxis';\nXAxis.defaultProps = {\n allowDecimals: true,\n hide: false,\n orientation: 'bottom',\n width: 0,\n height: 30,\n mirror: false,\n xAxisId: 0,\n tickCount: 5,\n type: 'category',\n padding: {\n left: 0,\n right: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false,\n allowDuplicatedCategory: true\n};","/**\n * @fileOverview Y Axis\n */\n\nexport var YAxis = function YAxis() {\n return null;\n};\nYAxis.displayName = 'YAxis';\nYAxis.defaultProps = {\n allowDuplicatedCategory: true,\n allowDecimals: true,\n hide: false,\n orientation: 'left',\n width: 60,\n height: 0,\n mirror: false,\n yAxisId: 0,\n tickCount: 5,\n type: 'number',\n padding: {\n top: 0,\n bottom: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false\n};","/**\n * @fileOverview Area Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Area } from '../cartesian/Area';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var AreaChart = generateCategoricalChart({\n chartName: 'AreaChart',\n GraphicalChild: Area,\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});","/**\n * Given an array and a number N, return a new array which contains every nTh\n * element of the input array. For n below 1, an empty array is returned.\n * If isValid is provided, all candidates must suffice the condition, else undefined is returned.\n * @param {T[]} array An input array.\n * @param {integer} n A number\n * @param {Function} isValid A function to evaluate a candidate form the array\n * @returns {T[]} The result array of the same type as the input array.\n */\nexport function getEveryNthWithCondition(array, n, isValid) {\n if (n < 1) {\n return [];\n }\n if (n === 1 && isValid === undefined) {\n return array;\n }\n var result = [];\n for (var i = 0; i < array.length; i += n) {\n if (isValid === undefined || isValid(array[i]) === true) {\n result.push(array[i]);\n } else {\n return undefined;\n }\n }\n return result;\n}","import _isFunction from \"lodash/isFunction\";\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { mathSign, isNumber } from '../util/DataUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Global } from '../util/Global';\nimport { getEveryNthWithCondition } from '../util/getEveryNthWithCondition';\nimport { getAngledRectangleWidth } from '../util/CartesianUtils';\n\n/**\n * Given an array of ticks, find N, the lowest possible number for which every\n * nTH tick in the ticks array isShow == true and return the array of every nTh tick.\n * @param {CartesianTickItem[]} ticks An array of CartesianTickItem with the\n * information whether they can be shown without overlapping with their neighbour isShow.\n * @returns {CartesianTickItem[]} Every nTh tick in an array.\n */\nexport function getEveryNThTick(ticks) {\n var N = 1;\n var previous = getEveryNthWithCondition(ticks, N, function (tickItem) {\n return tickItem.isShow;\n });\n while (N <= ticks.length) {\n if (previous !== undefined) {\n return previous;\n }\n N++;\n previous = getEveryNthWithCondition(ticks, N, function (tickItem) {\n return tickItem.isShow;\n });\n }\n return ticks.slice(0, 1);\n}\nexport function getNumberIntervalTicks(ticks, interval) {\n return getEveryNthWithCondition(ticks, interval + 1);\n}\nfunction getAngledTickWidth(contentSize, unitSize, angle) {\n var size = {\n width: contentSize.width + unitSize.width,\n height: contentSize.height + unitSize.height\n };\n return getAngledRectangleWidth(size, angle);\n}\nfunction getTicksEnd(_ref) {\n var angle = _ref.angle,\n ticks = _ref.ticks,\n tickFormatter = _ref.tickFormatter,\n viewBox = _ref.viewBox,\n orientation = _ref.orientation,\n minTickGap = _ref.minTickGap,\n unit = _ref.unit,\n fontSize = _ref.fontSize,\n letterSpacing = _ref.letterSpacing;\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n // we need add the width of 'unit' only when sizeKey === 'width'\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }) : {\n width: 0,\n height: 0\n };\n var result = (ticks || []).slice();\n var len = result.length;\n var sign = len >= 2 ? mathSign(result[1].coordinate - result[0].coordinate) : 1;\n var start, end;\n if (sign === 1) {\n start = sizeKey === 'width' ? x : y;\n end = sizeKey === 'width' ? x + width : y + height;\n } else {\n start = sizeKey === 'width' ? x + width : y + height;\n end = sizeKey === 'width' ? x : y;\n }\n for (var i = len - 1; i >= 0; i--) {\n var entry = result[i];\n var content = _isFunction(tickFormatter) ? tickFormatter(entry.value, len - i - 1) : entry.value;\n // Recharts only supports angles when sizeKey === 'width'\n var size = sizeKey === 'width' ? getAngledTickWidth(getStringSize(content, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }), unitSize, angle) : getStringSize(content, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey];\n if (i === len - 1) {\n var gap = sign * (entry.coordinate + sign * size / 2 - end);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = sign * (entry.tickCoord - sign * size / 2 - start) >= 0 && sign * (entry.tickCoord + sign * size / 2 - end) <= 0;\n if (isShow) {\n end = entry.tickCoord - sign * (size / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n }\n return result;\n}\nfunction getTicksStart(_ref2, preserveEnd) {\n var angle = _ref2.angle,\n ticks = _ref2.ticks,\n tickFormatter = _ref2.tickFormatter,\n viewBox = _ref2.viewBox,\n orientation = _ref2.orientation,\n minTickGap = _ref2.minTickGap,\n unit = _ref2.unit,\n fontSize = _ref2.fontSize,\n letterSpacing = _ref2.letterSpacing;\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n var result = (ticks || []).slice();\n // we need add the width of 'unit' only when sizeKey === 'width'\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }) : {\n width: 0,\n height: 0\n };\n var len = result.length;\n var sign = len >= 2 ? mathSign(result[1].coordinate - result[0].coordinate) : 1;\n var start, end;\n if (sign === 1) {\n start = sizeKey === 'width' ? x : y;\n end = sizeKey === 'width' ? x + width : y + height;\n } else {\n start = sizeKey === 'width' ? x + width : y + height;\n end = sizeKey === 'width' ? x : y;\n }\n if (preserveEnd) {\n // Try to guarantee the tail to be displayed\n var tail = ticks[len - 1];\n var tailContent = _isFunction(tickFormatter) ? tickFormatter(tail.value, len - 1) : tail.value;\n // Recharts only supports angles when sizeKey === 'width'\n var tailSize = sizeKey === 'width' ? getAngledTickWidth(getStringSize(tailContent, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }), unitSize, angle) : getStringSize(tailContent, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey];\n var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n result[len - 1] = tail = _objectSpread(_objectSpread({}, tail), {}, {\n tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n });\n var isTailShow = sign * (tail.tickCoord - sign * tailSize / 2 - start) >= 0 && sign * (tail.tickCoord + sign * tailSize / 2 - end) <= 0;\n if (isTailShow) {\n end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n result[len - 1] = _objectSpread(_objectSpread({}, tail), {}, {\n isShow: true\n });\n }\n }\n var count = preserveEnd ? len - 1 : len;\n for (var i = 0; i < count; i++) {\n var entry = result[i];\n var content = _isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value;\n var size = sizeKey === 'width' ? getAngledTickWidth(getStringSize(content, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }), unitSize, angle) : getStringSize(content, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey];\n if (i === 0) {\n var gap = sign * (entry.coordinate - sign * size / 2 - start);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = sign * (entry.tickCoord - sign * size / 2 - start) >= 0 && sign * (entry.tickCoord + sign * size / 2 - end) <= 0;\n if (isShow) {\n start = entry.tickCoord + sign * (size / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n }\n return result;\n}\nexport function getTicks(props, fontSize, letterSpacing) {\n var tick = props.tick,\n ticks = props.ticks,\n viewBox = props.viewBox,\n minTickGap = props.minTickGap,\n orientation = props.orientation,\n interval = props.interval,\n tickFormatter = props.tickFormatter,\n unit = props.unit,\n angle = props.angle;\n if (!ticks || !ticks.length || !tick) {\n return [];\n }\n if (isNumber(interval) || Global.isSsr) {\n return getNumberIntervalTicks(ticks, typeof interval === 'number' && isNumber(interval) ? interval : 0);\n }\n var candidates = [];\n if (interval === 'equidistantPreserveStart') {\n candidates = getTicksStart({\n angle: angle,\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit,\n fontSize: fontSize,\n letterSpacing: letterSpacing\n });\n return getEveryNThTick(candidates);\n }\n if (interval === 'preserveStart' || interval === 'preserveStartEnd') {\n candidates = getTicksStart({\n angle: angle,\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit,\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }, interval === 'preserveStartEnd');\n } else {\n candidates = getTicksEnd({\n angle: angle,\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit,\n fontSize: fontSize,\n letterSpacing: letterSpacing\n });\n }\n return candidates.filter(function (entry) {\n return entry.isShow;\n });\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Cross\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar getPath = function getPath(x, y, width, height, top, left) {\n return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n};\nexport var Cross = function Cross(props) {\n var x = props.x,\n y = props.y,\n width = props.width,\n height = props.height,\n top = props.top,\n left = props.left,\n className = props.className;\n if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: classNames('recharts-cross', className),\n d: getPath(x, y, width, height, top, left)\n }));\n};\nCross.defaultProps = {\n x: 0,\n y: 0,\n top: 0,\n left: 0,\n width: 0,\n height: 0\n};","import _isFunction from \"lodash/isFunction\";\nimport _get from \"lodash/get\";\nvar _excluded = [\"viewBox\"],\n _excluded2 = [\"viewBox\"],\n _excluded3 = [\"ticks\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * @fileOverview Cartesian Axis\n */\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { isNumber } from '../util/DataUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { getTicks } from './getTicks';\nexport var CartesianAxis = /*#__PURE__*/function (_Component) {\n _inherits(CartesianAxis, _Component);\n var _super = _createSuper(CartesianAxis);\n function CartesianAxis(props) {\n var _this;\n _classCallCheck(this, CartesianAxis);\n _this = _super.call(this, props);\n _this.state = {\n fontSize: '',\n letterSpacing: ''\n };\n return _this;\n }\n _createClass(CartesianAxis, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(_ref, nextState) {\n var viewBox = _ref.viewBox,\n restProps = _objectWithoutProperties(_ref, _excluded);\n // props.viewBox is sometimes generated every time -\n // check that specially as object equality is likely to fail\n var _this$props = this.props,\n viewBoxOld = _this$props.viewBox,\n restPropsOld = _objectWithoutProperties(_this$props, _excluded2);\n return !shallowEqual(viewBox, viewBoxOld) || !shallowEqual(restProps, restPropsOld) || !shallowEqual(nextState, this.state);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var htmlLayer = this.layerReference;\n if (!htmlLayer) return;\n var tick = htmlLayer.getElementsByClassName('recharts-cartesian-axis-tick-value')[0];\n if (tick) {\n this.setState({\n fontSize: window.getComputedStyle(tick).fontSize,\n letterSpacing: window.getComputedStyle(tick).letterSpacing\n });\n }\n }\n\n /**\n * Calculate the coordinates of endpoints in ticks\n * @param {Object} data The data of a simple tick\n * @return {Object} (x1, y1): The coordinate of endpoint close to tick text\n * (x2, y2): The coordinate of endpoint close to axis\n */\n }, {\n key: \"getTickLineCoord\",\n value: function getTickLineCoord(data) {\n var _this$props2 = this.props,\n x = _this$props2.x,\n y = _this$props2.y,\n width = _this$props2.width,\n height = _this$props2.height,\n orientation = _this$props2.orientation,\n tickSize = _this$props2.tickSize,\n mirror = _this$props2.mirror,\n tickMargin = _this$props2.tickMargin;\n var x1, x2, y1, y2, tx, ty;\n var sign = mirror ? -1 : 1;\n var finalTickSize = data.tickSize || tickSize;\n var tickCoord = isNumber(data.tickCoord) ? data.tickCoord : data.coordinate;\n switch (orientation) {\n case 'top':\n x1 = x2 = data.coordinate;\n y2 = y + +!mirror * height;\n y1 = y2 - sign * finalTickSize;\n ty = y1 - sign * tickMargin;\n tx = tickCoord;\n break;\n case 'left':\n y1 = y2 = data.coordinate;\n x2 = x + +!mirror * width;\n x1 = x2 - sign * finalTickSize;\n tx = x1 - sign * tickMargin;\n ty = tickCoord;\n break;\n case 'right':\n y1 = y2 = data.coordinate;\n x2 = x + +mirror * width;\n x1 = x2 + sign * finalTickSize;\n tx = x1 + sign * tickMargin;\n ty = tickCoord;\n break;\n default:\n x1 = x2 = data.coordinate;\n y2 = y + +mirror * height;\n y1 = y2 + sign * finalTickSize;\n ty = y1 + sign * tickMargin;\n tx = tickCoord;\n break;\n }\n return {\n line: {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n },\n tick: {\n x: tx,\n y: ty\n }\n };\n }\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var _this$props3 = this.props,\n orientation = _this$props3.orientation,\n mirror = _this$props3.mirror;\n var textAnchor;\n switch (orientation) {\n case 'left':\n textAnchor = mirror ? 'start' : 'end';\n break;\n case 'right':\n textAnchor = mirror ? 'end' : 'start';\n break;\n default:\n textAnchor = 'middle';\n break;\n }\n return textAnchor;\n }\n }, {\n key: \"getTickVerticalAnchor\",\n value: function getTickVerticalAnchor() {\n var _this$props4 = this.props,\n orientation = _this$props4.orientation,\n mirror = _this$props4.mirror;\n var verticalAnchor = 'end';\n switch (orientation) {\n case 'left':\n case 'right':\n verticalAnchor = 'middle';\n break;\n case 'top':\n verticalAnchor = mirror ? 'start' : 'end';\n break;\n default:\n verticalAnchor = mirror ? 'end' : 'start';\n break;\n }\n return verticalAnchor;\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props5 = this.props,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height,\n orientation = _this$props5.orientation,\n mirror = _this$props5.mirror,\n axisLine = _this$props5.axisLine;\n var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(this.props)), filterProps(axisLine)), {}, {\n fill: 'none'\n });\n if (orientation === 'top' || orientation === 'bottom') {\n var needHeight = +(orientation === 'top' && !mirror || orientation === 'bottom' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x,\n y1: y + needHeight * height,\n x2: x + width,\n y2: y + needHeight * height\n });\n } else {\n var needWidth = +(orientation === 'left' && !mirror || orientation === 'right' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x + needWidth * width,\n y1: y,\n x2: x + needWidth * width,\n y2: y + height\n });\n }\n return /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: classNames('recharts-cartesian-axis-line', _get(axisLine, 'className'))\n }));\n }\n }, {\n key: \"renderTicks\",\n value:\n /**\n * render the ticks\n * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n * @param {string} fontSize Fontsize to consider for tick spacing\n * @param {string} letterSpacing Letterspacing to consider for tick spacing\n * @return {ReactComponent} renderedTicks\n */\n function renderTicks(ticks, fontSize, letterSpacing) {\n var _this2 = this;\n var _this$props6 = this.props,\n tickLine = _this$props6.tickLine,\n stroke = _this$props6.stroke,\n tick = _this$props6.tick,\n tickFormatter = _this$props6.tickFormatter,\n unit = _this$props6.unit;\n var finalTicks = getTicks(_objectSpread(_objectSpread({}, this.props), {}, {\n ticks: ticks\n }), fontSize, letterSpacing);\n var textAnchor = this.getTickTextAnchor();\n var verticalAnchor = this.getTickVerticalAnchor();\n var axisProps = filterProps(this.props);\n var customTickProps = filterProps(tick);\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: 'none'\n }, filterProps(tickLine));\n var items = finalTicks.map(function (entry, i) {\n var _this2$getTickLineCoo = _this2.getTickLineCoord(entry),\n lineCoord = _this2$getTickLineCoo.line,\n tickCoord = _this2$getTickLineCoo.tick;\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), tickCoord), {}, {\n index: i,\n payload: entry,\n visibleTicksCount: finalTicks.length,\n tickFormatter: tickFormatter\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-cartesian-axis-tick\",\n key: \"tick-\".concat(i) // eslint-disable-line react/no-array-index-key\n }, adaptEventsOfChild(_this2.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({}, tickLineProps, lineCoord, {\n className: classNames('recharts-cartesian-axis-tick-line', _get(tickLine, 'className'))\n })), tick && CartesianAxis.renderTickItem(tick, tickProps, \"\".concat(_isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value).concat(unit || '')));\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var _this$props7 = this.props,\n axisLine = _this$props7.axisLine,\n width = _this$props7.width,\n height = _this$props7.height,\n ticksGenerator = _this$props7.ticksGenerator,\n className = _this$props7.className,\n hide = _this$props7.hide;\n if (hide) {\n return null;\n }\n var _this$props8 = this.props,\n ticks = _this$props8.ticks,\n noTicksProps = _objectWithoutProperties(_this$props8, _excluded3);\n var finalTicks = ticks;\n if (_isFunction(ticksGenerator)) {\n finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n }\n if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: classNames('recharts-cartesian-axis', className),\n ref: function ref(_ref2) {\n _this3.layerReference = _ref2;\n }\n }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks, this.state.fontSize, this.state.letterSpacing), Label.renderCallByParent(this.props));\n }\n }], [{\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-cartesian-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }]);\n return CartesianAxis;\n}(Component);\n_defineProperty(CartesianAxis, \"displayName\", 'CartesianAxis');\n_defineProperty(CartesianAxis, \"defaultProps\", {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n viewBox: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n // The orientation of axis\n orientation: 'bottom',\n // The ticks\n ticks: [],\n stroke: '#666',\n tickLine: true,\n axisLine: true,\n tick: true,\n mirror: false,\n minTickGap: 5,\n // The width or height of tick\n tickSize: 6,\n tickMargin: 2,\n interval: 'preserveEnd'\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (!name) {\n return null;\n }\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var result = PREFIX_LIST.reduce(function (res, entry) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, entry + camelName, value));\n }, {});\n result[name] = value;\n return result;\n};","import _isFunction from \"lodash/isFunction\";\nimport _range from \"lodash/range\";\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * @fileOverview Brush\n */\nimport React, { PureComponent, Children } from 'react';\nimport classNames from 'classnames';\nimport { scalePoint } from 'victory-vendor/d3-scale';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { generatePrefixStyle } from '../util/CssPrefixUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar createScale = function createScale(_ref) {\n var data = _ref.data,\n startIndex = _ref.startIndex,\n endIndex = _ref.endIndex,\n x = _ref.x,\n width = _ref.width,\n travellerWidth = _ref.travellerWidth;\n if (!data || !data.length) {\n return {};\n }\n var len = data.length;\n var scale = scalePoint().domain(_range(0, len)).range([x, x + width - travellerWidth]);\n var scaleValues = scale.domain().map(function (entry) {\n return scale(entry);\n });\n return {\n isTextActive: false,\n isSlideMoving: false,\n isTravellerMoving: false,\n startX: scale(startIndex),\n endX: scale(endIndex),\n scale: scale,\n scaleValues: scaleValues\n };\n};\nvar isTouch = function isTouch(e) {\n return e.changedTouches && !!e.changedTouches.length;\n};\nexport var Brush = /*#__PURE__*/function (_PureComponent) {\n _inherits(Brush, _PureComponent);\n var _super = _createSuper(Brush);\n function Brush(props) {\n var _this;\n _classCallCheck(this, Brush);\n _this = _super.call(this, props);\n _defineProperty(_assertThisInitialized(_this), \"handleDrag\", function (e) {\n if (_this.leaveTimer) {\n clearTimeout(_this.leaveTimer);\n _this.leaveTimer = null;\n }\n if (_this.state.isTravellerMoving) {\n _this.handleTravellerMove(e);\n } else if (_this.state.isSlideMoving) {\n _this.handleSlideDrag(e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchMove\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleDrag(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleDragEnd\", function () {\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: false\n });\n _this.detachDragEndListener();\n });\n _defineProperty(_assertThisInitialized(_this), \"handleLeaveWrapper\", function () {\n if (_this.state.isTravellerMoving || _this.state.isSlideMoving) {\n _this.leaveTimer = window.setTimeout(_this.handleDragEnd, _this.props.leaveTimeOut);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleEnterSlideOrTraveller\", function () {\n _this.setState({\n isTextActive: true\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"handleLeaveSlideOrTraveller\", function () {\n _this.setState({\n isTextActive: false\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"handleSlideDragStart\", function (e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: true,\n slideMoveStartX: event.pageX\n });\n _this.attachDragEndListener();\n });\n _this.travellerDragStartHandlers = {\n startX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'startX'),\n endX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'endX')\n };\n _this.state = {};\n return _this;\n }\n _createClass(Brush, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = null;\n }\n this.detachDragEndListener();\n }\n }, {\n key: \"getIndex\",\n value: function getIndex(_ref2) {\n var startX = _ref2.startX,\n endX = _ref2.endX;\n var scaleValues = this.state.scaleValues;\n var _this$props = this.props,\n gap = _this$props.gap,\n data = _this$props.data;\n var lastIndex = data.length - 1;\n var min = Math.min(startX, endX);\n var max = Math.max(startX, endX);\n var minIndex = Brush.getIndexInRange(scaleValues, min);\n var maxIndex = Brush.getIndexInRange(scaleValues, max);\n return {\n startIndex: minIndex - minIndex % gap,\n endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - maxIndex % gap\n };\n }\n }, {\n key: \"getTextOfTick\",\n value: function getTextOfTick(index) {\n var _this$props2 = this.props,\n data = _this$props2.data,\n tickFormatter = _this$props2.tickFormatter,\n dataKey = _this$props2.dataKey;\n var text = getValueByDataKey(data[index], dataKey, index);\n return _isFunction(tickFormatter) ? tickFormatter(text, index) : text;\n }\n }, {\n key: \"attachDragEndListener\",\n value: function attachDragEndListener() {\n window.addEventListener('mouseup', this.handleDragEnd, true);\n window.addEventListener('touchend', this.handleDragEnd, true);\n window.addEventListener('mousemove', this.handleDrag, true);\n }\n }, {\n key: \"detachDragEndListener\",\n value: function detachDragEndListener() {\n window.removeEventListener('mouseup', this.handleDragEnd, true);\n window.removeEventListener('touchend', this.handleDragEnd, true);\n window.removeEventListener('mousemove', this.handleDrag, true);\n }\n }, {\n key: \"handleSlideDrag\",\n value: function handleSlideDrag(e) {\n var _this$state = this.state,\n slideMoveStartX = _this$state.slideMoveStartX,\n startX = _this$state.startX,\n endX = _this$state.endX;\n var _this$props3 = this.props,\n x = _this$props3.x,\n width = _this$props3.width,\n travellerWidth = _this$props3.travellerWidth,\n startIndex = _this$props3.startIndex,\n endIndex = _this$props3.endIndex,\n onChange = _this$props3.onChange;\n var delta = e.pageX - slideMoveStartX;\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - endX, x + width - travellerWidth - startX);\n } else if (delta < 0) {\n delta = Math.max(delta, x - startX, x - endX);\n }\n var newIndex = this.getIndex({\n startX: startX + delta,\n endX: endX + delta\n });\n if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n onChange(newIndex);\n }\n this.setState({\n startX: startX + delta,\n endX: endX + delta,\n slideMoveStartX: e.pageX\n });\n }\n }, {\n key: \"handleTravellerDragStart\",\n value: function handleTravellerDragStart(id, e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n this.setState({\n isSlideMoving: false,\n isTravellerMoving: true,\n movingTravellerId: id,\n brushMoveStartX: event.pageX\n });\n this.attachDragEndListener();\n }\n }, {\n key: \"handleTravellerMove\",\n value: function handleTravellerMove(e) {\n var _this$setState;\n var _this$state2 = this.state,\n brushMoveStartX = _this$state2.brushMoveStartX,\n movingTravellerId = _this$state2.movingTravellerId,\n endX = _this$state2.endX,\n startX = _this$state2.startX;\n var prevValue = this.state[movingTravellerId];\n var _this$props4 = this.props,\n x = _this$props4.x,\n width = _this$props4.width,\n travellerWidth = _this$props4.travellerWidth,\n onChange = _this$props4.onChange,\n gap = _this$props4.gap,\n data = _this$props4.data;\n var params = {\n startX: this.state.startX,\n endX: this.state.endX\n };\n var delta = e.pageX - brushMoveStartX;\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - prevValue);\n } else if (delta < 0) {\n delta = Math.max(delta, x - prevValue);\n }\n params[movingTravellerId] = prevValue + delta;\n var newIndex = this.getIndex(params);\n var startIndex = newIndex.startIndex,\n endIndex = newIndex.endIndex;\n var isFullGap = function isFullGap() {\n var lastIndex = data.length - 1;\n if (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0) || endX < startX && endIndex === lastIndex || movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0) || endX > startX && endIndex === lastIndex) {\n return true;\n }\n return false;\n };\n this.setState((_this$setState = {}, _defineProperty(_this$setState, movingTravellerId, prevValue + delta), _defineProperty(_this$setState, \"brushMoveStartX\", e.pageX), _this$setState), function () {\n if (onChange) {\n if (isFullGap()) {\n onChange(newIndex);\n }\n }\n });\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this$props5 = this.props,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height,\n fill = _this$props5.fill,\n stroke = _this$props5.stroke;\n return /*#__PURE__*/React.createElement(\"rect\", {\n stroke: stroke,\n fill: fill,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderPanorama\",\n value: function renderPanorama() {\n var _this$props6 = this.props,\n x = _this$props6.x,\n y = _this$props6.y,\n width = _this$props6.width,\n height = _this$props6.height,\n data = _this$props6.data,\n children = _this$props6.children,\n padding = _this$props6.padding;\n var chartElement = Children.only(children);\n if (!chartElement) {\n return null;\n }\n return /*#__PURE__*/React.cloneElement(chartElement, {\n x: x,\n y: y,\n width: width,\n height: height,\n margin: padding,\n compact: true,\n data: data\n });\n }\n }, {\n key: \"renderTravellerLayer\",\n value: function renderTravellerLayer(travellerX, id) {\n var _this$props7 = this.props,\n y = _this$props7.y,\n travellerWidth = _this$props7.travellerWidth,\n height = _this$props7.height,\n traveller = _this$props7.traveller;\n var x = Math.max(travellerX, this.props.x);\n var travellerProps = _objectSpread(_objectSpread({}, filterProps(this.props)), {}, {\n x: x,\n y: y,\n width: travellerWidth,\n height: height\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-brush-traveller\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.travellerDragStartHandlers[id],\n onTouchStart: this.travellerDragStartHandlers[id],\n style: {\n cursor: 'col-resize'\n }\n }, Brush.renderTraveller(traveller, travellerProps));\n }\n }, {\n key: \"renderSlide\",\n value: function renderSlide(startX, endX) {\n var _this$props8 = this.props,\n y = _this$props8.y,\n height = _this$props8.height,\n stroke = _this$props8.stroke,\n travellerWidth = _this$props8.travellerWidth;\n var x = Math.min(startX, endX) + travellerWidth;\n var width = Math.max(Math.abs(endX - startX) - travellerWidth, 0);\n return /*#__PURE__*/React.createElement(\"rect\", {\n className: \"recharts-brush-slide\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.handleSlideDragStart,\n onTouchStart: this.handleSlideDragStart,\n style: {\n cursor: 'move'\n },\n stroke: \"none\",\n fill: stroke,\n fillOpacity: 0.2,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderText\",\n value: function renderText() {\n var _this$props9 = this.props,\n startIndex = _this$props9.startIndex,\n endIndex = _this$props9.endIndex,\n y = _this$props9.y,\n height = _this$props9.height,\n travellerWidth = _this$props9.travellerWidth,\n stroke = _this$props9.stroke;\n var _this$state3 = this.state,\n startX = _this$state3.startX,\n endX = _this$state3.endX;\n var offset = 5;\n var attrs = {\n pointerEvents: 'none',\n fill: stroke\n };\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-brush-texts\"\n }, /*#__PURE__*/React.createElement(Text, _extends({\n textAnchor: \"end\",\n verticalAnchor: \"middle\",\n x: Math.min(startX, endX) - offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(startIndex)), /*#__PURE__*/React.createElement(Text, _extends({\n textAnchor: \"start\",\n verticalAnchor: \"middle\",\n x: Math.max(startX, endX) + travellerWidth + offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(endIndex)));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props10 = this.props,\n data = _this$props10.data,\n className = _this$props10.className,\n children = _this$props10.children,\n x = _this$props10.x,\n y = _this$props10.y,\n width = _this$props10.width,\n height = _this$props10.height,\n alwaysShowText = _this$props10.alwaysShowText;\n var _this$state4 = this.state,\n startX = _this$state4.startX,\n endX = _this$state4.endX,\n isTextActive = _this$state4.isTextActive,\n isSlideMoving = _this$state4.isSlideMoving,\n isTravellerMoving = _this$state4.isTravellerMoving;\n if (!data || !data.length || !isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || width <= 0 || height <= 0) {\n return null;\n }\n var layerClass = classNames('recharts-brush', className);\n var isPanoramic = React.Children.count(children) === 1;\n var style = generatePrefixStyle('userSelect', 'none');\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass,\n onMouseLeave: this.handleLeaveWrapper,\n onTouchMove: this.handleTouchMove,\n style: style\n }, this.renderBackground(), isPanoramic && this.renderPanorama(), this.renderSlide(startX, endX), this.renderTravellerLayer(startX, 'startX'), this.renderTravellerLayer(endX, 'endX'), (isTextActive || isSlideMoving || isTravellerMoving || alwaysShowText) && this.renderText());\n }\n }], [{\n key: \"renderDefaultTraveller\",\n value: function renderDefaultTraveller(props) {\n var x = props.x,\n y = props.y,\n width = props.width,\n height = props.height,\n stroke = props.stroke;\n var lineY = Math.floor(y + height / 2) - 1;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n fill: stroke,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY,\n x2: x + width - 1,\n y2: lineY,\n fill: \"none\",\n stroke: \"#fff\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY + 2,\n x2: x + width - 1,\n y2: lineY + 2,\n fill: \"none\",\n stroke: \"#fff\"\n }));\n }\n }, {\n key: \"renderTraveller\",\n value: function renderTraveller(option, props) {\n var rectangle;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rectangle = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n rectangle = option(props);\n } else {\n rectangle = Brush.renderDefaultTraveller(props);\n }\n return rectangle;\n }\n }, {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var data = nextProps.data,\n width = nextProps.width,\n x = nextProps.x,\n travellerWidth = nextProps.travellerWidth,\n updateId = nextProps.updateId,\n startIndex = nextProps.startIndex,\n endIndex = nextProps.endIndex;\n if (data !== prevState.prevData || updateId !== prevState.prevUpdateId) {\n return _objectSpread({\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width\n }, data && data.length ? createScale({\n data: data,\n width: width,\n x: x,\n travellerWidth: travellerWidth,\n startIndex: startIndex,\n endIndex: endIndex\n }) : {\n scale: null,\n scaleValues: null\n });\n }\n if (prevState.scale && (width !== prevState.prevWidth || x !== prevState.prevX || travellerWidth !== prevState.prevTravellerWidth)) {\n prevState.scale.range([x, x + width - travellerWidth]);\n var scaleValues = prevState.scale.domain().map(function (entry) {\n return prevState.scale(entry);\n });\n return {\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width,\n startX: prevState.scale(nextProps.startIndex),\n endX: prevState.scale(nextProps.endIndex),\n scaleValues: scaleValues\n };\n }\n return null;\n }\n }, {\n key: \"getIndexInRange\",\n value: function getIndexInRange(range, x) {\n var len = range.length;\n var start = 0;\n var end = len - 1;\n while (end - start > 1) {\n var middle = Math.floor((start + end) / 2);\n if (range[middle] > x) {\n end = middle;\n } else {\n start = middle;\n }\n }\n return x >= range[end] ? end : start;\n }\n }]);\n return Brush;\n}(PureComponent);\n_defineProperty(Brush, \"displayName\", 'Brush');\n_defineProperty(Brush, \"defaultProps\", {\n height: 40,\n travellerWidth: 5,\n gap: 1,\n fill: '#fff',\n stroke: '#666',\n padding: {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n },\n leaveTimeOut: 1000,\n alwaysShowText: false\n});","export var ifOverflowMatches = function ifOverflowMatches(props, value) {\n var alwaysShow = props.alwaysShow;\n var ifOverflow = props.ifOverflow;\n if (alwaysShow) {\n ifOverflow = 'extendDomain';\n }\n return ifOverflow === value;\n};","import _isFunction from \"lodash/isFunction\";\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * @fileOverview Reference Dot\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Label } from '../component/Label';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { createLabeledScales } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar getCoordinate = function getCoordinate(props) {\n var x = props.x,\n y = props.y,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var result = scales.apply({\n x: x,\n y: y\n }, {\n bandAware: true\n });\n if (ifOverflowMatches(props, 'discard') && !scales.isInRange(result)) {\n return null;\n }\n return result;\n};\nexport function ReferenceDot(props) {\n var x = props.x,\n y = props.y,\n r = props.r,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n var isX = isNumOrStr(x);\n var isY = isNumOrStr(y);\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n if (!isX || !isY) {\n return null;\n }\n var coordinate = getCoordinate(props);\n if (!coordinate) {\n return null;\n }\n var cx = coordinate.x,\n cy = coordinate.y;\n var shape = props.shape,\n className = props.className;\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n var dotProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), {}, {\n cx: cx,\n cy: cy\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: classNames('recharts-reference-dot', className)\n }, ReferenceDot.renderDot(shape, dotProps), Label.renderCallByParent(props, {\n x: cx - r,\n y: cy - r,\n width: 2 * r,\n height: 2 * r\n }));\n}\nReferenceDot.displayName = 'ReferenceDot';\nReferenceDot.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#fff',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1\n};\nReferenceDot.renderDot = function (option, props) {\n var dot;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dot = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n cx: props.cx,\n cy: props.cy,\n className: \"recharts-reference-dot-dot\"\n }));\n }\n return dot;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport _some from \"lodash/some\";\nimport _isFunction from \"lodash/isFunction\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { createLabeledScales, rectWithCoords } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar renderLine = function renderLine(option, props) {\n var line;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n line = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n line = option(props);\n } else {\n line = /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: \"recharts-reference-line-line\"\n }));\n }\n return line;\n};\n\n// TODO: ScaleHelper\nvar getEndPoints = function getEndPoints(scales, isFixedX, isFixedY, isSegment, props) {\n var _props$viewBox = props.viewBox,\n x = _props$viewBox.x,\n y = _props$viewBox.y,\n width = _props$viewBox.width,\n height = _props$viewBox.height,\n position = props.position;\n if (isFixedY) {\n var yCoord = props.y,\n orientation = props.yAxis.orientation;\n var coord = scales.y.apply(yCoord, {\n position: position\n });\n if (ifOverflowMatches(props, 'discard') && !scales.y.isInRange(coord)) {\n return null;\n }\n var points = [{\n x: x + width,\n y: coord\n }, {\n x: x,\n y: coord\n }];\n return orientation === 'left' ? points.reverse() : points;\n }\n if (isFixedX) {\n var xCoord = props.x,\n _orientation = props.xAxis.orientation;\n var _coord = scales.x.apply(xCoord, {\n position: position\n });\n if (ifOverflowMatches(props, 'discard') && !scales.x.isInRange(_coord)) {\n return null;\n }\n var _points = [{\n x: _coord,\n y: y + height\n }, {\n x: _coord,\n y: y\n }];\n return _orientation === 'top' ? _points.reverse() : _points;\n }\n if (isSegment) {\n var segment = props.segment;\n var _points2 = segment.map(function (p) {\n return scales.apply(p, {\n position: position\n });\n });\n if (ifOverflowMatches(props, 'discard') && _some(_points2, function (p) {\n return !scales.isInRange(p);\n })) {\n return null;\n }\n return _points2;\n }\n return null;\n};\nexport function ReferenceLine(props) {\n var fixedX = props.x,\n fixedY = props.y,\n segment = props.segment,\n xAxis = props.xAxis,\n yAxis = props.yAxis,\n shape = props.shape,\n className = props.className,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var isX = isNumOrStr(fixedX);\n var isY = isNumOrStr(fixedY);\n var isSegment = segment && segment.length === 2;\n var endPoints = getEndPoints(scales, isX, isY, isSegment, props);\n if (!endPoints) {\n return null;\n }\n var _endPoints = _slicedToArray(endPoints, 2),\n _endPoints$ = _endPoints[0],\n x1 = _endPoints$.x,\n y1 = _endPoints$.y,\n _endPoints$2 = _endPoints[1],\n x2 = _endPoints$2.x,\n y2 = _endPoints$2.y;\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n var lineProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), {}, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: classNames('recharts-reference-line', className)\n }, renderLine(shape, lineProps), Label.renderCallByParent(props, rectWithCoords({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n })));\n}\nReferenceLine.displayName = 'ReferenceLine';\nReferenceLine.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n fill: 'none',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1,\n position: 'middle'\n};","import _isFunction from \"lodash/isFunction\";\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { createLabeledScales, rectWithPoints } from '../util/CartesianUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { Rectangle } from '../shape/Rectangle';\nimport { filterProps } from '../util/ReactUtils';\nvar getRect = function getRect(hasX1, hasX2, hasY1, hasY2, props) {\n var xValue1 = props.x1,\n xValue2 = props.x2,\n yValue1 = props.y1,\n yValue2 = props.y2,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n if (!xAxis || !yAxis) return null;\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var p1 = {\n x: hasX1 ? scales.x.apply(xValue1, {\n position: 'start'\n }) : scales.x.rangeMin,\n y: hasY1 ? scales.y.apply(yValue1, {\n position: 'start'\n }) : scales.y.rangeMin\n };\n var p2 = {\n x: hasX2 ? scales.x.apply(xValue2, {\n position: 'end'\n }) : scales.x.rangeMax,\n y: hasY2 ? scales.y.apply(yValue2, {\n position: 'end'\n }) : scales.y.rangeMax\n };\n if (ifOverflowMatches(props, 'discard') && (!scales.isInRange(p1) || !scales.isInRange(p2))) {\n return null;\n }\n return rectWithPoints(p1, p2);\n};\nexport function ReferenceArea(props) {\n var x1 = props.x1,\n x2 = props.x2,\n y1 = props.y1,\n y2 = props.y2,\n className = props.className,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var hasX1 = isNumOrStr(x1);\n var hasX2 = isNumOrStr(x2);\n var hasY1 = isNumOrStr(y1);\n var hasY2 = isNumOrStr(y2);\n var shape = props.shape;\n if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n return null;\n }\n var rect = getRect(hasX1, hasX2, hasY1, hasY2, props);\n if (!rect && !shape) {\n return null;\n }\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n return /*#__PURE__*/React.createElement(Layer, {\n className: classNames('recharts-reference-area', className)\n }, ReferenceArea.renderRect(shape, _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), rect)), Label.renderCallByParent(props, rect));\n}\nReferenceArea.displayName = 'ReferenceArea';\nReferenceArea.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#ccc',\n fillOpacity: 0.5,\n stroke: 'none',\n strokeWidth: 1\n};\nReferenceArea.renderRect = function (option, props) {\n var rect;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rect = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n rect = option(props);\n } else {\n rect = /*#__PURE__*/React.createElement(Rectangle, _extends({}, props, {\n className: \"recharts-reference-area-rect\"\n }));\n }\n return rect;\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { ReferenceDot } from '../cartesian/ReferenceDot';\nimport { ReferenceLine } from '../cartesian/ReferenceLine';\nimport { ReferenceArea } from '../cartesian/ReferenceArea';\nimport { ifOverflowMatches } from './IfOverflowMatches';\nimport { findAllByType } from './ReactUtils';\nimport { isNumber } from './DataUtils';\nexport var detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {\n var lines = findAllByType(children, ReferenceLine);\n var dots = findAllByType(children, ReferenceDot);\n var elements = [].concat(_toConsumableArray(lines), _toConsumableArray(dots));\n var areas = findAllByType(children, ReferenceArea);\n var idKey = \"\".concat(axisType, \"Id\");\n var valueKey = axisType[0];\n var finalDomain = domain;\n if (elements.length) {\n finalDomain = elements.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {\n var value = el.props[valueKey];\n return [Math.min(result[0], value), Math.max(result[1], value)];\n }\n return result;\n }, finalDomain);\n }\n if (areas.length) {\n var key1 = \"\".concat(valueKey, \"1\");\n var key2 = \"\".concat(valueKey, \"2\");\n finalDomain = areas.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[key1]) && isNumber(el.props[key2])) {\n var value1 = el.props[key1];\n var value2 = el.props[key2];\n return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n }\n return result;\n }, finalDomain);\n }\n if (specifiedTicks && specifiedTicks.length) {\n finalDomain = specifiedTicks.reduce(function (result, tick) {\n if (isNumber(tick)) {\n return [Math.min(result[0], tick), Math.max(result[1], tick)];\n }\n return result;\n }, finalDomain);\n }\n return finalDomain;\n};","import EventEmitter from 'eventemitter3';\nvar eventCenter = new EventEmitter();\nif (eventCenter.setMaxListeners) {\n eventCenter.setMaxListeners(10);\n}\nexport { eventCenter };\nexport var SYNC_EVENT = 'recharts.syncMouseEvents';","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport var AccessibilityManager = /*#__PURE__*/function () {\n function AccessibilityManager() {\n _classCallCheck(this, AccessibilityManager);\n _defineProperty(this, \"activeIndex\", 0);\n _defineProperty(this, \"coordinateList\", []);\n _defineProperty(this, \"layout\", 'horizontal');\n }\n _createClass(AccessibilityManager, [{\n key: \"setDetails\",\n value: function setDetails(_ref) {\n var _ref$coordinateList = _ref.coordinateList,\n coordinateList = _ref$coordinateList === void 0 ? [] : _ref$coordinateList,\n _ref$container = _ref.container,\n container = _ref$container === void 0 ? null : _ref$container,\n _ref$layout = _ref.layout,\n layout = _ref$layout === void 0 ? null : _ref$layout,\n _ref$offset = _ref.offset,\n offset = _ref$offset === void 0 ? null : _ref$offset,\n _ref$mouseHandlerCall = _ref.mouseHandlerCallback,\n mouseHandlerCallback = _ref$mouseHandlerCall === void 0 ? null : _ref$mouseHandlerCall;\n this.coordinateList = coordinateList !== null && coordinateList !== void 0 ? coordinateList : this.coordinateList;\n this.container = container !== null && container !== void 0 ? container : this.container;\n this.layout = layout !== null && layout !== void 0 ? layout : this.layout;\n this.offset = offset !== null && offset !== void 0 ? offset : this.offset;\n this.mouseHandlerCallback = mouseHandlerCallback !== null && mouseHandlerCallback !== void 0 ? mouseHandlerCallback : this.mouseHandlerCallback;\n\n // Keep activeIndex in the bounds between 0 and the last coordinate index\n this.activeIndex = Math.min(Math.max(this.activeIndex, 0), this.coordinateList.length - 1);\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.spoofMouse();\n }\n }, {\n key: \"keyboardEvent\",\n value: function keyboardEvent(e) {\n // The AccessibilityManager relies on the Tooltip component. When tooltips suddenly stop existing,\n // it can cause errors. We use this function to check. We don't want arrow keys to be processed\n // if there are no tooltips, since that will cause unexpected behavior of users.\n if (this.coordinateList.length === 0) {\n return;\n }\n switch (e.key) {\n case 'ArrowRight':\n {\n if (this.layout !== 'horizontal') {\n return;\n }\n this.activeIndex = Math.min(this.activeIndex + 1, this.coordinateList.length - 1);\n this.spoofMouse();\n break;\n }\n case 'ArrowLeft':\n {\n if (this.layout !== 'horizontal') {\n return;\n }\n this.activeIndex = Math.max(this.activeIndex - 1, 0);\n this.spoofMouse();\n break;\n }\n default:\n {\n break;\n }\n }\n }\n }, {\n key: \"spoofMouse\",\n value: function spoofMouse() {\n if (this.layout !== 'horizontal') {\n return;\n }\n\n // This can happen when the tooltips suddenly stop existing as children of the component\n // That update doesn't otherwise fire events, so we have to double check here.\n if (this.coordinateList.length === 0) {\n return;\n }\n var _this$container$getBo = this.container.getBoundingClientRect(),\n x = _this$container$getBo.x,\n y = _this$container$getBo.y;\n var coordinate = this.coordinateList[this.activeIndex].coordinate;\n var pageX = x + coordinate;\n var pageY = y + this.offset.top;\n this.mouseHandlerCallback({\n pageX: pageX,\n pageY: pageY\n });\n }\n }]);\n return AccessibilityManager;\n}();","import _every from \"lodash/every\";\nimport _find from \"lodash/find\";\nimport _isFunction from \"lodash/isFunction\";\nimport _throttle from \"lodash/throttle\";\nimport _sortBy from \"lodash/sortBy\";\nimport _get from \"lodash/get\";\nimport _range from \"lodash/range\";\nimport _isNil from \"lodash/isNil\";\nimport _isBoolean from \"lodash/isBoolean\";\nimport _isArray from \"lodash/isArray\";\nvar _excluded = [\"item\"],\n _excluded2 = [\"children\", \"className\", \"width\", \"height\", \"style\", \"compact\", \"title\", \"desc\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component, cloneElement, isValidElement, createElement } from 'react';\nimport classNames from 'classnames';\nimport { getTicks } from '../cartesian/getTicks';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Tooltip } from '../component/Tooltip';\nimport { Legend } from '../component/Legend';\nimport { Curve } from '../shape/Curve';\nimport { Cross } from '../shape/Cross';\nimport { Sector } from '../shape/Sector';\nimport { Dot } from '../shape/Dot';\nimport { isInRectangle, Rectangle } from '../shape/Rectangle';\nimport { findAllByType, findChildByType, getDisplayName, parseChildIndex, validateWidthHeight, isChildrenEqual, renderByOrder, getReactEventByType, filterProps } from '../util/ReactUtils';\nimport { CartesianAxis } from '../cartesian/CartesianAxis';\nimport { Brush } from '../cartesian/Brush';\nimport { getOffset, calculateChartCoordinate } from '../util/DOMUtils';\nimport { getAnyElementOfObject, hasDuplicate, uniqueId, isNumber, findEntryInArray } from '../util/DataUtils';\nimport { calculateActiveTickIndex, getMainColorOfGraphicItem, getBarSizeList, getBarPosition, appendOffsetOfLegend, getLegendProps, combineEventHandlers, getTicksOfAxis, getCoordinatesOfGrid, getStackedDataOfItem, parseErrorBarsOfAxis, getBandSizeOfAxis, getStackGroupsByAxisId, isCategoricalAxis, getDomainOfItemsWithSameAxis, getDomainOfStackGroups, getDomainOfDataByKey, parseSpecifiedDomain, parseDomainOfCategoryAxis, getTooltipItem } from '../util/ChartUtils';\nimport { detectReferenceElementsDomain } from '../util/DetectReferenceElementsDomain';\nimport { inRangeOfSector, polarToCartesian } from '../util/PolarUtils';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { eventCenter, SYNC_EVENT } from '../util/Events';\nimport { adaptEventHandlers } from '../util/types';\nimport { AccessibilityManager } from './AccessibilityManager';\nvar ORIENT_MAP = {\n xAxis: ['bottom', 'top'],\n yAxis: ['left', 'right']\n};\nvar originCoordinate = {\n x: 0,\n y: 0\n};\n\n// use legacy isFinite only if there is a problem (aka IE)\n// eslint-disable-next-line no-restricted-globals\nvar isFinit = Number.isFinite ? Number.isFinite : isFinite;\nvar defer =\n// eslint-disable-next-line no-nested-ternary\ntypeof requestAnimationFrame === 'function' ? requestAnimationFrame : typeof setImmediate === 'function' ? setImmediate : setTimeout;\nvar deferClear =\n// eslint-disable-next-line no-nested-ternary\ntypeof cancelAnimationFrame === 'function' ? cancelAnimationFrame : typeof clearImmediate === 'function' ? clearImmediate : clearTimeout;\nvar calculateTooltipPos = function calculateTooltipPos(rangeObj, layout) {\n if (layout === 'horizontal') {\n return rangeObj.x;\n }\n if (layout === 'vertical') {\n return rangeObj.y;\n }\n if (layout === 'centric') {\n return rangeObj.angle;\n }\n return rangeObj.radius;\n};\nvar getActiveCoordinate = function getActiveCoordinate(layout, tooltipTicks, activeIndex, rangeObj) {\n var entry = tooltipTicks.find(function (tick) {\n return tick && tick.index === activeIndex;\n });\n if (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.coordinate,\n y: rangeObj.y\n };\n }\n if (layout === 'vertical') {\n return {\n x: rangeObj.x,\n y: entry.coordinate\n };\n }\n if (layout === 'centric') {\n var _angle = entry.coordinate;\n var _radius = rangeObj.radius;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, _radius, _angle)), {}, {\n angle: _angle,\n radius: _radius\n });\n }\n var radius = entry.coordinate;\n var angle = rangeObj.angle;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle)), {}, {\n angle: angle,\n radius: radius\n });\n }\n return originCoordinate;\n};\nvar getDisplayedData = function getDisplayedData(data, _ref, item) {\n var graphicalItems = _ref.graphicalItems,\n dataStartIndex = _ref.dataStartIndex,\n dataEndIndex = _ref.dataEndIndex;\n var itemsData = (graphicalItems || []).reduce(function (result, child) {\n var itemData = child.props.data;\n if (itemData && itemData.length) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n }\n return result;\n }, []);\n if (itemsData && itemsData.length > 0) {\n return itemsData;\n }\n if (item && item.props && item.props.data && item.props.data.length > 0) {\n return item.props.data;\n }\n if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n return data.slice(dataStartIndex, dataEndIndex + 1);\n }\n return [];\n};\n\n/**\n * Takes a domain and user props to determine whether he provided the domain via props or if we need to calculate it.\n * @param {AxisDomain} domain The potential domain from props\n * @param {Boolean} allowDataOverflow from props\n * @param {String} axisType from props\n * @returns {Boolean} `true` if domain is specified by user\n */\nfunction isDomainSpecifiedByUser(domain, allowDataOverflow, axisType) {\n if (axisType === 'number' && allowDataOverflow === true && Array.isArray(domain)) {\n var domainStart = domain === null || domain === void 0 ? void 0 : domain[0];\n var domainEnd = domain === null || domain === void 0 ? void 0 : domain[1];\n\n /*\n * The `isNumber` check is needed because the user could also provide strings like \"dataMin\" via the domain props.\n * In such case, we have to compute the domain from the data.\n */\n if (!!domainStart && !!domainEnd && isNumber(domainStart) && isNumber(domainEnd)) {\n return true;\n }\n }\n return false;\n}\nfunction getDefaultDomainByAxisType(axisType) {\n return axisType === 'number' ? [0, 'auto'] : undefined;\n}\n\n/**\n * Get the content to be displayed in the tooltip\n * @param {Object} state Current state\n * @param {Array} chartData The data defined in chart\n * @param {Number} activeIndex Active index of data\n * @param {String} activeLabel Active label of data\n * @return {Array} The content of tooltip\n */\nvar getTooltipContent = function getTooltipContent(state, chartData, activeIndex, activeLabel) {\n var graphicalItems = state.graphicalItems,\n tooltipAxis = state.tooltipAxis;\n var displayedData = getDisplayedData(chartData, state);\n if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n return null;\n }\n // get data by activeIndex when the axis don't allow duplicated category\n return graphicalItems.reduce(function (result, child) {\n var hide = child.props.hide;\n if (hide) {\n return result;\n }\n var data = child.props.data;\n var payload;\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // graphic child has data props\n var entries = data === undefined ? displayedData : data;\n payload = findEntryInArray(entries, tooltipAxis.dataKey, activeLabel);\n } else {\n payload = data && data[activeIndex] || displayedData[activeIndex];\n }\n if (!payload) {\n return result;\n }\n return [].concat(_toConsumableArray(result), [getTooltipItem(child, payload)]);\n }, []);\n};\n\n/**\n * Returns tooltip data based on a mouse position (as a parameter or in state)\n * @param {Object} state current state\n * @param {Array} chartData the data defined in chart\n * @param {String} layout The layout type of chart\n * @param {Object} rangeObj { x, y } coordinates\n * @return {Object} Tooltip data data\n */\nvar getTooltipData = function getTooltipData(state, chartData, layout, rangeObj) {\n var rangeData = rangeObj || {\n x: state.chartX,\n y: state.chartY\n };\n var pos = calculateTooltipPos(rangeData, layout);\n var ticks = state.orderedTooltipTicks,\n axis = state.tooltipAxis,\n tooltipTicks = state.tooltipTicks;\n var activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n if (activeIndex >= 0 && tooltipTicks) {\n var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n var activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n var activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n return {\n activeTooltipIndex: activeIndex,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n }\n return null;\n};\n\n/**\n * Get the configuration of axis by the options of axis instance\n * @param {Object} props Latest props\n * @param {Array} axes The instance of axes\n * @param {Array} graphicalItems The instances of item\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\nexport var getAxisMapByAxes = function getAxisMapByAxes(props, _ref2) {\n var axes = _ref2.axes,\n graphicalItems = _ref2.graphicalItems,\n axisType = _ref2.axisType,\n axisIdKey = _ref2.axisIdKey,\n stackGroups = _ref2.stackGroups,\n dataStartIndex = _ref2.dataStartIndex,\n dataEndIndex = _ref2.dataEndIndex;\n var layout = props.layout,\n children = props.children,\n stackOffset = props.stackOffset;\n var isCategorical = isCategoricalAxis(layout, axisType);\n\n // Eliminate duplicated axes\n var axisMap = axes.reduce(function (result, child) {\n var _child$props$domain2;\n var _child$props = child.props,\n type = _child$props.type,\n dataKey = _child$props.dataKey,\n allowDataOverflow = _child$props.allowDataOverflow,\n allowDuplicatedCategory = _child$props.allowDuplicatedCategory,\n scale = _child$props.scale,\n ticks = _child$props.ticks,\n includeHidden = _child$props.includeHidden;\n var axisId = child.props[axisIdKey];\n if (result[axisId]) {\n return result;\n }\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId;\n }),\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var domain, duplicateDomain, categoricalDomain;\n\n /*\n * This is a hack to short-circuit the domain creation here to enhance performance.\n * Usually, the data is used to determine the domain, but when the user specifies\n * a domain upfront (via props), there is no need to calculate the domain start and end,\n * which is very expensive for a larger amount of data.\n * The only thing that would prohibit short-circuiting is when the user doesn't allow data overflow,\n * because the axis is supposed to ignore the specified domain that way.\n */\n if (isDomainSpecifiedByUser(child.props.domain, allowDataOverflow, type)) {\n domain = parseSpecifiedDomain(child.props.domain, null, allowDataOverflow);\n /* The chart can be categorical and have the domain specified in numbers\n * we still need to calculate the categorical domain\n * TODO: refactor this more\n */\n if (isCategorical && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n }\n }\n\n // if the domain is defaulted we need this for `originalDomain` as well\n var defaultDomain = getDefaultDomainByAxisType(type);\n\n // we didn't create the domain from user's props above, so we need to calculate it\n if (!domain || domain.length === 0) {\n var _child$props$domain;\n var childDomain = (_child$props$domain = child.props.domain) !== null && _child$props$domain !== void 0 ? _child$props$domain : defaultDomain;\n if (dataKey) {\n // has dataKey in <Axis />\n domain = getDomainOfDataByKey(displayedData, dataKey, type);\n if (type === 'category' && isCategorical) {\n // the field type is category data and this axis is categorical axis\n var duplicate = hasDuplicate(domain);\n if (allowDuplicatedCategory && duplicate) {\n duplicateDomain = domain;\n // When category axis has duplicated text, serial numbers are used to generate scale\n domain = _range(0, len);\n } else if (!allowDuplicatedCategory) {\n // remove duplicated category\n domain = parseDomainOfCategoryAxis(childDomain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n }\n } else if (type === 'category') {\n // the field type is category data and this axis is numerical axis\n if (!allowDuplicatedCategory) {\n domain = parseDomainOfCategoryAxis(childDomain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 || entry === '' || _isNil(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n } else {\n // eliminate undefined or null or empty string\n domain = domain.filter(function (entry) {\n return entry !== '' && !_isNil(entry);\n });\n }\n } else if (type === 'number') {\n // the field type is numerical\n var errorBarsDomain = parseErrorBarsOfAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && (includeHidden || !item.props.hide);\n }), dataKey, axisType, layout);\n if (errorBarsDomain) {\n domain = errorBarsDomain;\n }\n }\n if (isCategorical && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n }\n } else if (isCategorical) {\n // the axis is a categorical axis\n domain = _range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack && type === 'number') {\n // when stackOffset is 'expand', the domain may be calculated as [0, 1.000000000002]\n domain = stackOffset === 'expand' ? [0, 1] : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n } else {\n domain = getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && (includeHidden || !item.props.hide);\n }), type, layout, true);\n }\n if (type === 'number') {\n // To detect wether there is any reference lines whose props alwaysShow is true\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType, ticks);\n if (childDomain) {\n domain = parseSpecifiedDomain(childDomain, domain, allowDataOverflow);\n }\n } else if (type === 'category' && childDomain) {\n var axisDomain = childDomain;\n var isDomainValid = domain.every(function (entry) {\n return axisDomain.indexOf(entry) >= 0;\n });\n if (isDomainValid) {\n domain = axisDomain;\n }\n }\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({}, child.props), {}, {\n axisType: axisType,\n domain: domain,\n categoricalDomain: categoricalDomain,\n duplicateDomain: duplicateDomain,\n originalDomain: (_child$props$domain2 = child.props.domain) !== null && _child$props$domain2 !== void 0 ? _child$props$domain2 : defaultDomain,\n isCategorical: isCategorical,\n layout: layout\n })));\n }, {});\n return axisMap;\n};\n\n/**\n * Get the configuration of axis by the options of item,\n * this kind of axis does not display in chart\n * @param {Object} props Latest props\n * @param {Array} graphicalItems The instances of item\n * @param {ReactElement} Axis Axis Component\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\nvar getAxisMapByItems = function getAxisMapByItems(props, _ref3) {\n var graphicalItems = _ref3.graphicalItems,\n Axis = _ref3.Axis,\n axisType = _ref3.axisType,\n axisIdKey = _ref3.axisIdKey,\n stackGroups = _ref3.stackGroups,\n dataStartIndex = _ref3.dataStartIndex,\n dataEndIndex = _ref3.dataEndIndex;\n var layout = props.layout,\n children = props.children;\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var isCategorical = isCategoricalAxis(layout, axisType);\n var index = -1;\n\n // The default type of x-axis is category axis,\n // The default contents of x-axis is the serial numbers of data\n // The default type of y-axis is number axis\n // The default contents of y-axis is the domain of data\n var axisMap = graphicalItems.reduce(function (result, child) {\n var axisId = child.props[axisIdKey];\n var originalDomain = getDefaultDomainByAxisType('number');\n if (!result[axisId]) {\n index++;\n var domain;\n if (isCategorical) {\n domain = _range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack) {\n domain = getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n } else {\n domain = parseSpecifiedDomain(originalDomain, getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), 'number', layout), Axis.defaultProps.allowDataOverflow);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({\n axisType: axisType\n }, Axis.defaultProps), {}, {\n hide: true,\n orientation: _get(ORIENT_MAP, \"\".concat(axisType, \".\").concat(index % 2), null),\n domain: domain,\n originalDomain: originalDomain,\n isCategorical: isCategorical,\n layout: layout\n // specify scale when no Axis\n // scale: isCategorical ? 'band' : 'linear',\n })));\n }\n\n return result;\n }, {});\n return axisMap;\n};\n\n/**\n * Get the configuration of all x-axis or y-axis\n * @param {Object} props Latest props\n * @param {String} axisType The type of axis\n * @param {Array} graphicalItems The instances of item\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\nvar getAxisMap = function getAxisMap(props, _ref4) {\n var _ref4$axisType = _ref4.axisType,\n axisType = _ref4$axisType === void 0 ? 'xAxis' : _ref4$axisType,\n AxisComp = _ref4.AxisComp,\n graphicalItems = _ref4.graphicalItems,\n stackGroups = _ref4.stackGroups,\n dataStartIndex = _ref4.dataStartIndex,\n dataEndIndex = _ref4.dataEndIndex;\n var children = props.children;\n var axisIdKey = \"\".concat(axisType, \"Id\");\n // Get all the instance of Axis\n var axes = findAllByType(children, AxisComp);\n var axisMap = {};\n if (axes && axes.length) {\n axisMap = getAxisMapByAxes(props, {\n axes: axes,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n } else if (graphicalItems && graphicalItems.length) {\n axisMap = getAxisMapByItems(props, {\n Axis: AxisComp,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n }\n return axisMap;\n};\nvar tooltipTicksGenerator = function tooltipTicksGenerator(axisMap) {\n var axis = getAnyElementOfObject(axisMap);\n var tooltipTicks = getTicksOfAxis(axis, false, true);\n return {\n tooltipTicks: tooltipTicks,\n orderedTooltipTicks: _sortBy(tooltipTicks, function (o) {\n return o.coordinate;\n }),\n tooltipAxis: axis,\n tooltipAxisBandSize: getBandSizeOfAxis(axis, tooltipTicks)\n };\n};\n\n/**\n * Returns default, reset state for the categorical chart.\n * @param {Object} props Props object to use when creating the default state\n * @return {Object} Whole new state\n */\nvar createDefaultState = function createDefaultState(props) {\n var _brushItem$props, _brushItem$props2;\n var children = props.children,\n defaultShowTooltip = props.defaultShowTooltip;\n var brushItem = findChildByType(children, Brush);\n var startIndex = brushItem && brushItem.props && brushItem.props.startIndex || 0;\n var endIndex = (brushItem === null || brushItem === void 0 ? void 0 : (_brushItem$props = brushItem.props) === null || _brushItem$props === void 0 ? void 0 : _brushItem$props.endIndex) !== undefined ? brushItem === null || brushItem === void 0 ? void 0 : (_brushItem$props2 = brushItem.props) === null || _brushItem$props2 === void 0 ? void 0 : _brushItem$props2.endIndex : props.data && props.data.length - 1 || 0;\n return {\n chartX: 0,\n chartY: 0,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n activeTooltipIndex: -1,\n isTooltipActive: !_isNil(defaultShowTooltip) ? defaultShowTooltip : false\n };\n};\nvar hasGraphicalBarItem = function hasGraphicalBarItem(graphicalItems) {\n if (!graphicalItems || !graphicalItems.length) {\n return false;\n }\n return graphicalItems.some(function (item) {\n var name = getDisplayName(item && item.type);\n return name && name.indexOf('Bar') >= 0;\n });\n};\nvar getAxisNameByLayout = function getAxisNameByLayout(layout) {\n if (layout === 'horizontal') {\n return {\n numericAxisName: 'yAxis',\n cateAxisName: 'xAxis'\n };\n }\n if (layout === 'vertical') {\n return {\n numericAxisName: 'xAxis',\n cateAxisName: 'yAxis'\n };\n }\n if (layout === 'centric') {\n return {\n numericAxisName: 'radiusAxis',\n cateAxisName: 'angleAxis'\n };\n }\n return {\n numericAxisName: 'angleAxis',\n cateAxisName: 'radiusAxis'\n };\n};\n\n/**\n * Calculate the offset of main part in the svg element\n * @param {Object} props Latest props\n * graphicalItems The instances of item\n * xAxisMap The configuration of x-axis\n * yAxisMap The configuration of y-axis\n * @param {Object} prevLegendBBox the boundary box of legend\n * @return {Object} The offset of main part in the svg element\n */\nvar calculateOffset = function calculateOffset(_ref5, prevLegendBBox) {\n var props = _ref5.props,\n graphicalItems = _ref5.graphicalItems,\n _ref5$xAxisMap = _ref5.xAxisMap,\n xAxisMap = _ref5$xAxisMap === void 0 ? {} : _ref5$xAxisMap,\n _ref5$yAxisMap = _ref5.yAxisMap,\n yAxisMap = _ref5$yAxisMap === void 0 ? {} : _ref5$yAxisMap;\n var width = props.width,\n height = props.height,\n children = props.children;\n var margin = props.margin || {};\n var brushItem = findChildByType(children, Brush);\n var legendItem = findChildByType(children, Legend);\n var offsetH = Object.keys(yAxisMap).reduce(function (result, id) {\n var entry = yAxisMap[id];\n var orientation = entry.orientation;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, result[orientation] + entry.width));\n }\n return result;\n }, {\n left: margin.left || 0,\n right: margin.right || 0\n });\n var offsetV = Object.keys(xAxisMap).reduce(function (result, id) {\n var entry = xAxisMap[id];\n var orientation = entry.orientation;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, _get(result, \"\".concat(orientation)) + entry.height));\n }\n return result;\n }, {\n top: margin.top || 0,\n bottom: margin.bottom || 0\n });\n var offset = _objectSpread(_objectSpread({}, offsetV), offsetH);\n var brushBottom = offset.bottom;\n if (brushItem) {\n offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n }\n if (legendItem && prevLegendBBox) {\n offset = appendOffsetOfLegend(offset, graphicalItems, props, prevLegendBBox);\n }\n return _objectSpread(_objectSpread({\n brushBottom: brushBottom\n }, offset), {}, {\n width: width - offset.left - offset.right,\n height: height - offset.top - offset.bottom\n });\n};\nexport var generateCategoricalChart = function generateCategoricalChart(_ref6) {\n var _class;\n var chartName = _ref6.chartName,\n GraphicalChild = _ref6.GraphicalChild,\n _ref6$defaultTooltipE = _ref6.defaultTooltipEventType,\n defaultTooltipEventType = _ref6$defaultTooltipE === void 0 ? 'axis' : _ref6$defaultTooltipE,\n _ref6$validateTooltip = _ref6.validateTooltipEventTypes,\n validateTooltipEventTypes = _ref6$validateTooltip === void 0 ? ['axis'] : _ref6$validateTooltip,\n axisComponents = _ref6.axisComponents,\n legendContent = _ref6.legendContent,\n formatAxisMap = _ref6.formatAxisMap,\n defaultProps = _ref6.defaultProps;\n var getFormatItems = function getFormatItems(props, currentState) {\n var graphicalItems = currentState.graphicalItems,\n stackGroups = currentState.stackGroups,\n offset = currentState.offset,\n updateId = currentState.updateId,\n dataStartIndex = currentState.dataStartIndex,\n dataEndIndex = currentState.dataEndIndex;\n var barSize = props.barSize,\n layout = props.layout,\n barGap = props.barGap,\n barCategoryGap = props.barCategoryGap,\n globalMaxBarSize = props.maxBarSize;\n var _getAxisNameByLayout = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout.numericAxisName,\n cateAxisName = _getAxisNameByLayout.cateAxisName;\n var hasBar = hasGraphicalBarItem(graphicalItems);\n var sizeList = hasBar && getBarSizeList({\n barSize: barSize,\n stackGroups: stackGroups\n });\n var formattedItems = [];\n graphicalItems.forEach(function (item, index) {\n var displayedData = getDisplayedData(props.data, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, item);\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n childMaxBarSize = _item$props.maxBarSize;\n var numericAxisId = item.props[\"\".concat(numericAxisName, \"Id\")];\n var cateAxisId = item.props[\"\".concat(cateAxisName, \"Id\")];\n var axisObj = axisComponents.reduce(function (result, entry) {\n var _objectSpread6;\n var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n var id = item.props[\"\".concat(entry.axisType, \"Id\")];\n var axis = axisMap && axisMap[id];\n return _objectSpread(_objectSpread({}, result), {}, (_objectSpread6 = {}, _defineProperty(_objectSpread6, entry.axisType, axis), _defineProperty(_objectSpread6, \"\".concat(entry.axisType, \"Ticks\"), getTicksOfAxis(axis)), _objectSpread6));\n }, {});\n var cateAxis = axisObj[cateAxisName];\n var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n var itemIsBar = getDisplayName(item.type).indexOf('Bar') >= 0;\n var bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n var barPosition = [];\n if (itemIsBar) {\n var _ref7, _getBandSizeOfAxis;\n // 如果是bar,计算barçš„ä½ç½®\n var maxBarSize = _isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n var barBandSize = (_ref7 = (_getBandSizeOfAxis = getBandSizeOfAxis(cateAxis, cateTicks, true)) !== null && _getBandSizeOfAxis !== void 0 ? _getBandSizeOfAxis : maxBarSize) !== null && _ref7 !== void 0 ? _ref7 : 0;\n barPosition = getBarPosition({\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n sizeList: sizeList[cateAxisId],\n maxBarSize: maxBarSize\n });\n if (barBandSize !== bandSize) {\n barPosition = barPosition.map(function (pos) {\n return _objectSpread(_objectSpread({}, pos), {}, {\n position: _objectSpread(_objectSpread({}, pos.position), {}, {\n offset: pos.position.offset - barBandSize / 2\n })\n });\n });\n }\n }\n var composedFn = item && item.type && item.type.getComposedData;\n if (composedFn) {\n var _objectSpread7;\n formattedItems.push({\n props: _objectSpread(_objectSpread({}, composedFn(_objectSpread(_objectSpread({}, axisObj), {}, {\n displayedData: displayedData,\n props: props,\n dataKey: dataKey,\n item: item,\n bandSize: bandSize,\n barPosition: barPosition,\n offset: offset,\n stackedData: stackedData,\n layout: layout,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))), {}, (_objectSpread7 = {\n key: item.key || \"item-\".concat(index)\n }, _defineProperty(_objectSpread7, numericAxisName, axisObj[numericAxisName]), _defineProperty(_objectSpread7, cateAxisName, axisObj[cateAxisName]), _defineProperty(_objectSpread7, \"animationId\", updateId), _objectSpread7)),\n childIndex: parseChildIndex(item, props.children),\n item: item\n });\n }\n });\n return formattedItems;\n };\n\n /**\n * The AxisMaps are expensive to render on large data sets\n * so provide the ability to store them in state and only update them when necessary\n * they are dependent upon the start and end index of\n * the brush so it's important that this method is called _after_\n * the state is updated with any new start/end indices\n *\n * @param {Object} props The props object to be used for updating the axismaps\n * dataStartIndex: The start index of the data series when a brush is applied\n * dataEndIndex: The end index of the data series when a brush is applied\n * updateId: The update id\n * @param {Object} prevState Prev state\n * @return {Object} state New state to set\n */\n var updateStateOfAxisMapsOffsetAndStackGroups = function updateStateOfAxisMapsOffsetAndStackGroups(_ref8, prevState) {\n var props = _ref8.props,\n dataStartIndex = _ref8.dataStartIndex,\n dataEndIndex = _ref8.dataEndIndex,\n updateId = _ref8.updateId;\n if (!validateWidthHeight({\n props: props\n })) {\n return null;\n }\n var children = props.children,\n layout = props.layout,\n stackOffset = props.stackOffset,\n data = props.data,\n reverseStackOrder = props.reverseStackOrder;\n var _getAxisNameByLayout2 = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout2.numericAxisName,\n cateAxisName = _getAxisNameByLayout2.cateAxisName;\n var graphicalItems = findAllByType(children, GraphicalChild);\n var stackGroups = getStackGroupsByAxisId(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n var axisObj = axisComponents.reduce(function (result, entry) {\n var name = \"\".concat(entry.axisType, \"Map\");\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, name, getAxisMap(props, _objectSpread(_objectSpread({}, entry), {}, {\n graphicalItems: graphicalItems,\n stackGroups: entry.axisType === numericAxisName && stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))));\n }, {});\n var offset = calculateOffset(_objectSpread(_objectSpread({}, axisObj), {}, {\n props: props,\n graphicalItems: graphicalItems\n }), prevState === null || prevState === void 0 ? void 0 : prevState.legendBBox);\n Object.keys(axisObj).forEach(function (key) {\n axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n });\n var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n var ticksObj = tooltipTicksGenerator(cateAxisMap);\n var formattedGraphicalItems = getFormatItems(props, _objectSpread(_objectSpread({}, axisObj), {}, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId,\n graphicalItems: graphicalItems,\n stackGroups: stackGroups,\n offset: offset\n }));\n return _objectSpread(_objectSpread({\n formattedGraphicalItems: formattedGraphicalItems,\n graphicalItems: graphicalItems,\n offset: offset,\n stackGroups: stackGroups\n }, ticksObj), axisObj);\n };\n return _class = /*#__PURE__*/function (_Component) {\n _inherits(CategoricalChartWrapper, _Component);\n var _super = _createSuper(CategoricalChartWrapper);\n function CategoricalChartWrapper(_props) {\n var _this;\n _classCallCheck(this, CategoricalChartWrapper);\n _this = _super.call(this, _props);\n _defineProperty(_assertThisInitialized(_this), \"accessibilityManager\", new AccessibilityManager());\n _defineProperty(_assertThisInitialized(_this), \"clearDeferId\", function () {\n if (!_isNil(_this.deferId) && deferClear) {\n deferClear(_this.deferId);\n }\n _this.deferId = null;\n });\n _defineProperty(_assertThisInitialized(_this), \"handleLegendBBoxUpdate\", function (box) {\n if (box) {\n var _this$state = _this.state,\n dataStartIndex = _this$state.dataStartIndex,\n dataEndIndex = _this$state.dataEndIndex,\n updateId = _this$state.updateId;\n _this.setState(_objectSpread({\n legendBBox: box\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _objectSpread(_objectSpread({}, _this.state), {}, {\n legendBBox: box\n }))));\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleReceiveSyncEvent\", function (cId, chartId, data) {\n var syncId = _this.props.syncId;\n if (syncId === cId && chartId !== _this.uniqueChartId) {\n _this.clearDeferId();\n _this.deferId = defer && defer(_this.applySyncEvent.bind(_assertThisInitialized(_this), data));\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleBrushChange\", function (_ref9) {\n var startIndex = _ref9.startIndex,\n endIndex = _ref9.endIndex;\n // Only trigger changes if the extents of the brush have actually changed\n if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n var updateId = _this.state.updateId;\n _this.setState(function () {\n return _objectSpread({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n updateId: updateId\n }, _this.state));\n });\n _this.triggerSyncEvent({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n });\n /**\n * The handler of mouse entering chart\n * @param {Object} e Event object\n * @return {Null} null\n */\n _defineProperty(_assertThisInitialized(_this), \"handleMouseEnter\", function (e) {\n var onMouseEnter = _this.props.onMouseEnter;\n var mouse = _this.getMouseInfo(e);\n if (mouse) {\n var _nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n _this.setState(_nextState);\n _this.triggerSyncEvent(_nextState);\n if (_isFunction(onMouseEnter)) {\n onMouseEnter(_nextState, e);\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"triggeredAfterMouseMove\", function (e) {\n var onMouseMove = _this.props.onMouseMove;\n var mouse = _this.getMouseInfo(e);\n var nextState = mouse ? _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n }) : {\n isTooltipActive: false\n };\n _this.setState(nextState);\n _this.triggerSyncEvent(nextState);\n if (_isFunction(onMouseMove)) {\n onMouseMove(nextState, e);\n }\n });\n /**\n * The handler of mouse entering a scatter\n * @param {Object} el The active scatter\n * @return {Object} no return\n */\n _defineProperty(_assertThisInitialized(_this), \"handleItemMouseEnter\", function (el) {\n _this.setState(function () {\n return {\n isTooltipActive: true,\n activeItem: el,\n activePayload: el.tooltipPayload,\n activeCoordinate: el.tooltipPosition || {\n x: el.cx,\n y: el.cy\n }\n };\n });\n });\n /**\n * The handler of mouse leaving a scatter\n * @return {Object} no return\n */\n _defineProperty(_assertThisInitialized(_this), \"handleItemMouseLeave\", function () {\n _this.setState(function () {\n return {\n isTooltipActive: false\n };\n });\n });\n /**\n * The handler of mouse moving in chart\n * @param {Object} e Event object\n * @return {Null} no return\n */\n _defineProperty(_assertThisInitialized(_this), \"handleMouseMove\", function (e) {\n if (e && _isFunction(e.persist)) {\n e.persist();\n }\n _this.triggeredAfterMouseMove(e);\n });\n /**\n * The handler if mouse leaving chart\n * @param {Object} e Event object\n * @return {Null} no return\n */\n _defineProperty(_assertThisInitialized(_this), \"handleMouseLeave\", function (e) {\n var onMouseLeave = _this.props.onMouseLeave;\n var nextState = {\n isTooltipActive: false\n };\n _this.setState(nextState);\n _this.triggerSyncEvent(nextState);\n if (_isFunction(onMouseLeave)) {\n onMouseLeave(nextState, e);\n }\n _this.cancelThrottledTriggerAfterMouseMove();\n });\n _defineProperty(_assertThisInitialized(_this), \"handleOuterEvent\", function (e) {\n var eventName = getReactEventByType(e);\n var event = _get(_this.props, \"\".concat(eventName));\n if (eventName && _isFunction(event)) {\n var mouse;\n if (/.*touch.*/i.test(eventName)) {\n mouse = _this.getMouseInfo(e.changedTouches[0]);\n } else {\n mouse = _this.getMouseInfo(e);\n }\n var handler = event;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n handler(mouse, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleClick\", function (e) {\n var onClick = _this.props.onClick;\n var mouse = _this.getMouseInfo(e);\n if (mouse) {\n var _nextState2 = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n _this.setState(_nextState2);\n _this.triggerSyncEvent(_nextState2);\n if (_isFunction(onClick)) {\n onClick(_nextState2, e);\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleMouseDown\", function (e) {\n var onMouseDown = _this.props.onMouseDown;\n if (_isFunction(onMouseDown)) {\n var _nextState3 = _this.getMouseInfo(e);\n onMouseDown(_nextState3, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleMouseUp\", function (e) {\n var onMouseUp = _this.props.onMouseUp;\n if (_isFunction(onMouseUp)) {\n var _nextState4 = _this.getMouseInfo(e);\n onMouseUp(_nextState4, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchMove\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseMove(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchStart\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseDown(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchEnd\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseUp(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"verticalCoordinatesGenerator\", function (_ref10) {\n var xAxis = _ref10.xAxis,\n width = _ref10.width,\n height = _ref10.height,\n offset = _ref10.offset;\n return getCoordinatesOfGrid(getTicks(_objectSpread(_objectSpread(_objectSpread({}, CartesianAxis.defaultProps), xAxis), {}, {\n ticks: getTicksOfAxis(xAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.left, offset.left + offset.width);\n });\n _defineProperty(_assertThisInitialized(_this), \"horizontalCoordinatesGenerator\", function (_ref11) {\n var yAxis = _ref11.yAxis,\n width = _ref11.width,\n height = _ref11.height,\n offset = _ref11.offset;\n return getCoordinatesOfGrid(getTicks(_objectSpread(_objectSpread(_objectSpread({}, CartesianAxis.defaultProps), yAxis), {}, {\n ticks: getTicksOfAxis(yAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.top, offset.top + offset.height);\n });\n _defineProperty(_assertThisInitialized(_this), \"axesTicksGenerator\", function (axis) {\n return getTicksOfAxis(axis, true);\n });\n _defineProperty(_assertThisInitialized(_this), \"renderCursor\", function (element) {\n var _this$state2 = _this.state,\n isTooltipActive = _this$state2.isTooltipActive,\n activeCoordinate = _this$state2.activeCoordinate,\n activePayload = _this$state2.activePayload,\n offset = _this$state2.offset,\n activeTooltipIndex = _this$state2.activeTooltipIndex;\n var tooltipEventType = _this.getTooltipEventType();\n if (!element || !element.props.cursor || !isTooltipActive || !activeCoordinate || chartName !== 'ScatterChart' && tooltipEventType !== 'axis') {\n return null;\n }\n var layout = _this.props.layout;\n var restProps;\n var cursorComp = Curve;\n if (chartName === 'ScatterChart') {\n restProps = activeCoordinate;\n cursorComp = Cross;\n } else if (chartName === 'BarChart') {\n restProps = _this.getCursorRectangle();\n cursorComp = Rectangle;\n } else if (layout === 'radial') {\n var _this$getCursorPoints = _this.getCursorPoints(),\n cx = _this$getCursorPoints.cx,\n cy = _this$getCursorPoints.cy,\n radius = _this$getCursorPoints.radius,\n startAngle = _this$getCursorPoints.startAngle,\n endAngle = _this$getCursorPoints.endAngle;\n restProps = {\n cx: cx,\n cy: cy,\n startAngle: startAngle,\n endAngle: endAngle,\n innerRadius: radius,\n outerRadius: radius\n };\n cursorComp = Sector;\n } else {\n restProps = {\n points: _this.getCursorPoints()\n };\n cursorComp = Curve;\n }\n var key = element.key || '_recharts-cursor';\n var cursorProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n stroke: '#ccc',\n pointerEvents: 'none'\n }, offset), restProps), filterProps(element.props.cursor)), {}, {\n payload: activePayload,\n payloadIndex: activeTooltipIndex,\n key: key,\n className: 'recharts-tooltip-cursor'\n });\n return /*#__PURE__*/isValidElement(element.props.cursor) ? /*#__PURE__*/cloneElement(element.props.cursor, cursorProps) : /*#__PURE__*/createElement(cursorComp, cursorProps);\n });\n _defineProperty(_assertThisInitialized(_this), \"renderPolarAxis\", function (element, displayName, index) {\n var axisType = _get(element, 'type.axisType');\n var axisMap = _get(_this.state, \"\".concat(axisType, \"Map\"));\n var axisOption = axisMap && axisMap[element.props[\"\".concat(axisType, \"Id\")]];\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, axisOption), {}, {\n className: axisType,\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n ticks: getTicksOfAxis(axisOption, true)\n }));\n });\n _defineProperty(_assertThisInitialized(_this), \"renderXAxis\", function (element, displayName, index) {\n var xAxisMap = _this.state.xAxisMap;\n var axisObj = xAxisMap[element.props.xAxisId];\n return _this.renderAxis(axisObj, element, displayName, index);\n });\n _defineProperty(_assertThisInitialized(_this), \"renderYAxis\", function (element, displayName, index) {\n var yAxisMap = _this.state.yAxisMap;\n var axisObj = yAxisMap[element.props.yAxisId];\n return _this.renderAxis(axisObj, element, displayName, index);\n });\n /**\n * Draw grid\n * @param {ReactElement} element the grid item\n * @return {ReactElement} The instance of grid\n */\n _defineProperty(_assertThisInitialized(_this), \"renderGrid\", function (element) {\n var _this$state3 = _this.state,\n xAxisMap = _this$state3.xAxisMap,\n yAxisMap = _this$state3.yAxisMap,\n offset = _this$state3.offset;\n var _this$props = _this.props,\n width = _this$props.width,\n height = _this$props.height;\n var xAxis = getAnyElementOfObject(xAxisMap);\n var yAxisWithFiniteDomain = _find(yAxisMap, function (axis) {\n return _every(axis.domain, isFinit);\n });\n var yAxis = yAxisWithFiniteDomain || getAnyElementOfObject(yAxisMap);\n var props = element.props || {};\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || 'grid',\n x: isNumber(props.x) ? props.x : offset.left,\n y: isNumber(props.y) ? props.y : offset.top,\n width: isNumber(props.width) ? props.width : offset.width,\n height: isNumber(props.height) ? props.height : offset.height,\n xAxis: xAxis,\n yAxis: yAxis,\n offset: offset,\n chartWidth: width,\n chartHeight: height,\n verticalCoordinatesGenerator: props.verticalCoordinatesGenerator || _this.verticalCoordinatesGenerator,\n horizontalCoordinatesGenerator: props.horizontalCoordinatesGenerator || _this.horizontalCoordinatesGenerator\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderPolarGrid\", function (element) {\n var _element$props = element.props,\n radialLines = _element$props.radialLines,\n polarAngles = _element$props.polarAngles,\n polarRadius = _element$props.polarRadius;\n var _this$state4 = _this.state,\n radiusAxisMap = _this$state4.radiusAxisMap,\n angleAxisMap = _this$state4.angleAxisMap;\n var radiusAxis = getAnyElementOfObject(radiusAxisMap);\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n var cx = angleAxis.cx,\n cy = angleAxis.cy,\n innerRadius = angleAxis.innerRadius,\n outerRadius = angleAxis.outerRadius;\n return /*#__PURE__*/cloneElement(element, {\n polarAngles: _isArray(polarAngles) ? polarAngles : getTicksOfAxis(angleAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n polarRadius: _isArray(polarRadius) ? polarRadius : getTicksOfAxis(radiusAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n key: element.key || 'polar-grid',\n radialLines: radialLines\n });\n });\n /**\n * Draw legend\n * @return {ReactElement} The instance of Legend\n */\n _defineProperty(_assertThisInitialized(_this), \"renderLegend\", function () {\n var formattedGraphicalItems = _this.state.formattedGraphicalItems;\n var _this$props2 = _this.props,\n children = _this$props2.children,\n width = _this$props2.width,\n height = _this$props2.height;\n var margin = _this.props.margin || {};\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var props = getLegendProps({\n children: children,\n formattedGraphicalItems: formattedGraphicalItems,\n legendWidth: legendWidth,\n legendContent: legendContent\n });\n if (!props) {\n return null;\n }\n var item = props.item,\n otherProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, otherProps), {}, {\n chartWidth: width,\n chartHeight: height,\n margin: margin,\n ref: function ref(legend) {\n _this.legendInstance = legend;\n },\n onBBoxUpdate: _this.handleLegendBBoxUpdate\n }));\n });\n /**\n * Draw Tooltip\n * @return {ReactElement} The instance of Tooltip\n */\n _defineProperty(_assertThisInitialized(_this), \"renderTooltip\", function () {\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip);\n if (!tooltipItem) {\n return null;\n }\n var _this$state5 = _this.state,\n isTooltipActive = _this$state5.isTooltipActive,\n activeCoordinate = _this$state5.activeCoordinate,\n activePayload = _this$state5.activePayload,\n activeLabel = _this$state5.activeLabel,\n offset = _this$state5.offset;\n return /*#__PURE__*/cloneElement(tooltipItem, {\n viewBox: _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n }),\n active: isTooltipActive,\n label: activeLabel,\n payload: isTooltipActive ? activePayload : [],\n coordinate: activeCoordinate\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderBrush\", function (element) {\n var _this$props3 = _this.props,\n margin = _this$props3.margin,\n data = _this$props3.data;\n var _this$state6 = _this.state,\n offset = _this$state6.offset,\n dataStartIndex = _this$state6.dataStartIndex,\n dataEndIndex = _this$state6.dataEndIndex,\n updateId = _this$state6.updateId;\n\n // TODO: update brush when children update\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || '_recharts-brush',\n onChange: combineEventHandlers(_this.handleBrushChange, null, element.props.onChange),\n data: data,\n x: isNumber(element.props.x) ? element.props.x : offset.left,\n y: isNumber(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n width: isNumber(element.props.width) ? element.props.width : offset.width,\n startIndex: dataStartIndex,\n endIndex: dataEndIndex,\n updateId: \"brush-\".concat(updateId)\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderReferenceElement\", function (element, displayName, index) {\n if (!element) {\n return null;\n }\n var _assertThisInitialize = _assertThisInitialized(_this),\n clipPathId = _assertThisInitialize.clipPathId;\n var _this$state7 = _this.state,\n xAxisMap = _this$state7.xAxisMap,\n yAxisMap = _this$state7.yAxisMap,\n offset = _this$state7.offset;\n var _element$props2 = element.props,\n xAxisId = _element$props2.xAxisId,\n yAxisId = _element$props2.yAxisId;\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n xAxis: xAxisMap[xAxisId],\n yAxis: yAxisMap[yAxisId],\n viewBox: {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n },\n clipPathId: clipPathId\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderActivePoints\", function (_ref12) {\n var item = _ref12.item,\n activePoint = _ref12.activePoint,\n basePoint = _ref12.basePoint,\n childIndex = _ref12.childIndex,\n isRange = _ref12.isRange;\n var result = [];\n var key = item.props.key;\n var _item$item$props = item.item.props,\n activeDot = _item$item$props.activeDot,\n dataKey = _item$item$props.dataKey;\n var dotProps = _objectSpread(_objectSpread({\n index: childIndex,\n dataKey: dataKey,\n cx: activePoint.x,\n cy: activePoint.y,\n r: 4,\n fill: getMainColorOfGraphicItem(item.item),\n strokeWidth: 2,\n stroke: '#fff',\n payload: activePoint.payload,\n value: activePoint.value,\n key: \"\".concat(key, \"-activePoint-\").concat(childIndex)\n }, filterProps(activeDot)), adaptEventHandlers(activeDot));\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps));\n if (basePoint) {\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, _objectSpread(_objectSpread({}, dotProps), {}, {\n cx: basePoint.x,\n cy: basePoint.y,\n key: \"\".concat(key, \"-basePoint-\").concat(childIndex)\n })));\n } else if (isRange) {\n result.push(null);\n }\n return result;\n });\n _defineProperty(_assertThisInitialized(_this), \"renderGraphicChild\", function (element, displayName, index) {\n var item = _this.filterFormatItem(element, displayName, index);\n if (!item) {\n return null;\n }\n var tooltipEventType = _this.getTooltipEventType();\n var _this$state8 = _this.state,\n isTooltipActive = _this$state8.isTooltipActive,\n tooltipAxis = _this$state8.tooltipAxis,\n activeTooltipIndex = _this$state8.activeTooltipIndex,\n activeLabel = _this$state8.activeLabel;\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip);\n var _item$props2 = item.props,\n points = _item$props2.points,\n isRange = _item$props2.isRange,\n baseLine = _item$props2.baseLine;\n var _item$item$props2 = item.item.props,\n activeDot = _item$item$props2.activeDot,\n hide = _item$item$props2.hide;\n var hasActive = !hide && isTooltipActive && tooltipItem && activeDot && activeTooltipIndex >= 0;\n var itemEvents = {};\n if (tooltipEventType !== 'axis' && tooltipItem && tooltipItem.props.trigger === 'click') {\n itemEvents = {\n onClick: combineEventHandlers(_this.handleItemMouseEnter, null, element.props.onCLick)\n };\n } else if (tooltipEventType !== 'axis') {\n itemEvents = {\n onMouseLeave: combineEventHandlers(_this.handleItemMouseLeave, null, element.props.onMouseLeave),\n onMouseEnter: combineEventHandlers(_this.handleItemMouseEnter, null, element.props.onMouseEnter)\n };\n }\n var graphicalItem = /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, item.props), itemEvents));\n function findWithPayload(entry) {\n // TODO needs to verify dataKey is Function\n return typeof tooltipAxis.dataKey === 'function' ? tooltipAxis.dataKey(entry.payload) : null;\n }\n if (hasActive) {\n var activePoint, basePoint;\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // number transform to string\n var specifiedKey = typeof tooltipAxis.dataKey === 'function' ? findWithPayload : 'payload.'.concat(tooltipAxis.dataKey.toString());\n activePoint = findEntryInArray(points, specifiedKey, activeLabel);\n basePoint = isRange && baseLine && findEntryInArray(baseLine, specifiedKey, activeLabel);\n } else {\n activePoint = points[activeTooltipIndex];\n basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n }\n if (!_isNil(activePoint)) {\n return [graphicalItem].concat(_toConsumableArray(_this.renderActivePoints({\n item: item,\n activePoint: activePoint,\n basePoint: basePoint,\n childIndex: activeTooltipIndex,\n isRange: isRange\n })));\n }\n }\n if (isRange) {\n return [graphicalItem, null, null];\n }\n return [graphicalItem, null];\n });\n _defineProperty(_assertThisInitialized(_this), \"renderCustomized\", function (element, displayName, index) {\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({\n key: \"recharts-customized-\".concat(index)\n }, _this.props), _this.state));\n });\n _this.uniqueChartId = _isNil(_props.id) ? uniqueId('recharts') : _props.id;\n _this.clipPathId = \"\".concat(_this.uniqueChartId, \"-clip\");\n if (_props.throttleDelay) {\n _this.triggeredAfterMouseMove = _throttle(_this.triggeredAfterMouseMove, _props.throttleDelay);\n }\n _this.state = {};\n return _this;\n }\n _createClass(CategoricalChartWrapper, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props$margin$le, _this$props$margin$to;\n if (!_isNil(this.props.syncId)) {\n this.addListener();\n }\n this.accessibilityManager.setDetails({\n container: this.container,\n offset: {\n left: (_this$props$margin$le = this.props.margin.left) !== null && _this$props$margin$le !== void 0 ? _this$props$margin$le : 0,\n top: (_this$props$margin$to = this.props.margin.top) !== null && _this$props$margin$to !== void 0 ? _this$props$margin$to : 0\n },\n coordinateList: this.state.tooltipTicks,\n mouseHandlerCallback: this.handleMouseMove,\n layout: this.props.layout\n });\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps, prevState) {\n if (!this.props.accessibilityLayer) {\n return null;\n }\n if (this.state.tooltipTicks !== prevState.tooltipTicks) {\n this.accessibilityManager.setDetails({\n coordinateList: this.state.tooltipTicks\n });\n }\n if (this.props.layout !== prevProps.layout) {\n this.accessibilityManager.setDetails({\n layout: this.props.layout\n });\n }\n if (this.props.margin !== prevProps.margin) {\n var _this$props$margin$le2, _this$props$margin$to2;\n this.accessibilityManager.setDetails({\n offset: {\n left: (_this$props$margin$le2 = this.props.margin.left) !== null && _this$props$margin$le2 !== void 0 ? _this$props$margin$le2 : 0,\n top: (_this$props$margin$to2 = this.props.margin.top) !== null && _this$props$margin$to2 !== void 0 ? _this$props$margin$to2 : 0\n }\n });\n }\n\n // Something has to be returned for getSnapshotBeforeUpdate\n return null;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // add syncId\n if (_isNil(prevProps.syncId) && !_isNil(this.props.syncId)) {\n this.addListener();\n }\n // remove syncId\n if (!_isNil(prevProps.syncId) && _isNil(this.props.syncId)) {\n this.removeListener();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearDeferId();\n if (!_isNil(this.props.syncId)) {\n this.removeListener();\n }\n this.cancelThrottledTriggerAfterMouseMove();\n }\n }, {\n key: \"cancelThrottledTriggerAfterMouseMove\",\n value: function cancelThrottledTriggerAfterMouseMove() {\n if (typeof this.triggeredAfterMouseMove.cancel === 'function') {\n this.triggeredAfterMouseMove.cancel();\n }\n }\n }, {\n key: \"getTooltipEventType\",\n value: function getTooltipEventType() {\n var tooltipItem = findChildByType(this.props.children, Tooltip);\n if (tooltipItem && _isBoolean(tooltipItem.props.shared)) {\n var eventType = tooltipItem.props.shared ? 'axis' : 'item';\n return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n }\n return defaultTooltipEventType;\n }\n\n /**\n * Get the information of mouse in chart, return null when the mouse is not in the chart\n * @param {Object} event The event object\n * @return {Object} Mouse data\n */\n }, {\n key: \"getMouseInfo\",\n value: function getMouseInfo(event) {\n if (!this.container) {\n return null;\n }\n var containerOffset = getOffset(this.container);\n var e = calculateChartCoordinate(event, containerOffset);\n var rangeObj = this.inRange(e.chartX, e.chartY);\n if (!rangeObj) {\n return null;\n }\n var _this$state9 = this.state,\n xAxisMap = _this$state9.xAxisMap,\n yAxisMap = _this$state9.yAxisMap;\n var tooltipEventType = this.getTooltipEventType();\n if (tooltipEventType !== 'axis' && xAxisMap && yAxisMap) {\n var xScale = getAnyElementOfObject(xAxisMap).scale;\n var yScale = getAnyElementOfObject(yAxisMap).scale;\n var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n return _objectSpread(_objectSpread({}, e), {}, {\n xValue: xValue,\n yValue: yValue\n });\n }\n var toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n if (toolTipData) {\n return _objectSpread(_objectSpread({}, e), toolTipData);\n }\n return null;\n }\n }, {\n key: \"getCursorRectangle\",\n value: function getCursorRectangle() {\n var layout = this.props.layout;\n var _this$state10 = this.state,\n activeCoordinate = _this$state10.activeCoordinate,\n offset = _this$state10.offset,\n tooltipAxisBandSize = _this$state10.tooltipAxisBandSize;\n var halfSize = tooltipAxisBandSize / 2;\n return {\n stroke: 'none',\n fill: '#ccc',\n x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n };\n }\n }, {\n key: \"getCursorPoints\",\n value: function getCursorPoints() {\n var layout = this.props.layout;\n var _this$state11 = this.state,\n activeCoordinate = _this$state11.activeCoordinate,\n offset = _this$state11.offset;\n var x1, y1, x2, y2;\n if (layout === 'horizontal') {\n x1 = activeCoordinate.x;\n x2 = x1;\n y1 = offset.top;\n y2 = offset.top + offset.height;\n } else if (layout === 'vertical') {\n y1 = activeCoordinate.y;\n y2 = y1;\n x1 = offset.left;\n x2 = offset.left + offset.width;\n } else if (!_isNil(activeCoordinate.cx) || !_isNil(activeCoordinate.cy)) {\n if (layout === 'centric') {\n var cx = activeCoordinate.cx,\n cy = activeCoordinate.cy,\n innerRadius = activeCoordinate.innerRadius,\n outerRadius = activeCoordinate.outerRadius,\n angle = activeCoordinate.angle;\n var innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n var outerPoint = polarToCartesian(cx, cy, outerRadius, angle);\n x1 = innerPoint.x;\n y1 = innerPoint.y;\n x2 = outerPoint.x;\n y2 = outerPoint.y;\n } else {\n var _cx = activeCoordinate.cx,\n _cy = activeCoordinate.cy,\n radius = activeCoordinate.radius,\n startAngle = activeCoordinate.startAngle,\n endAngle = activeCoordinate.endAngle;\n var startPoint = polarToCartesian(_cx, _cy, radius, startAngle);\n var endPoint = polarToCartesian(_cx, _cy, radius, endAngle);\n return {\n points: [startPoint, endPoint],\n cx: _cx,\n cy: _cy,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n }\n return [{\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n }];\n }\n }, {\n key: \"inRange\",\n value: function inRange(x, y) {\n var layout = this.props.layout;\n if (layout === 'horizontal' || layout === 'vertical') {\n var offset = this.state.offset;\n var isInRange = x >= offset.left && x <= offset.left + offset.width && y >= offset.top && y <= offset.top + offset.height;\n return isInRange ? {\n x: x,\n y: y\n } : null;\n }\n var _this$state12 = this.state,\n angleAxisMap = _this$state12.angleAxisMap,\n radiusAxisMap = _this$state12.radiusAxisMap;\n if (angleAxisMap && radiusAxisMap) {\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n return inRangeOfSector({\n x: x,\n y: y\n }, angleAxis);\n }\n return null;\n }\n }, {\n key: \"parseEventsOfWrapper\",\n value: function parseEventsOfWrapper() {\n var children = this.props.children;\n var tooltipEventType = this.getTooltipEventType();\n var tooltipItem = findChildByType(children, Tooltip);\n var tooltipEvents = {};\n if (tooltipItem && tooltipEventType === 'axis') {\n if (tooltipItem.props.trigger === 'click') {\n tooltipEvents = {\n onClick: this.handleClick\n };\n } else {\n tooltipEvents = {\n onMouseEnter: this.handleMouseEnter,\n onMouseMove: this.handleMouseMove,\n onMouseLeave: this.handleMouseLeave,\n onTouchMove: this.handleTouchMove,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n };\n }\n }\n var outerEvents = adaptEventHandlers(this.props, this.handleOuterEvent);\n return _objectSpread(_objectSpread({}, outerEvents), tooltipEvents);\n }\n\n /* eslint-disable no-underscore-dangle */\n }, {\n key: \"addListener\",\n value: function addListener() {\n eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n eventCenter.setMaxListeners(eventCenter._maxListeners + 1);\n }\n }\n }, {\n key: \"removeListener\",\n value: function removeListener() {\n eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n eventCenter.setMaxListeners(eventCenter._maxListeners - 1);\n }\n }\n }, {\n key: \"triggerSyncEvent\",\n value: function triggerSyncEvent(data) {\n var syncId = this.props.syncId;\n if (!_isNil(syncId)) {\n eventCenter.emit(SYNC_EVENT, syncId, this.uniqueChartId, data);\n }\n }\n }, {\n key: \"applySyncEvent\",\n value: function applySyncEvent(data) {\n var _this$props4 = this.props,\n layout = _this$props4.layout,\n syncMethod = _this$props4.syncMethod;\n var updateId = this.state.updateId;\n var dataStartIndex = data.dataStartIndex,\n dataEndIndex = data.dataEndIndex;\n if (!_isNil(data.dataStartIndex) || !_isNil(data.dataEndIndex)) {\n this.setState(_objectSpread({\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, this.state)));\n } else if (!_isNil(data.activeTooltipIndex)) {\n var chartX = data.chartX,\n chartY = data.chartY;\n var activeTooltipIndex = data.activeTooltipIndex;\n var _this$state13 = this.state,\n offset = _this$state13.offset,\n tooltipTicks = _this$state13.tooltipTicks;\n if (!offset) {\n return;\n }\n if (typeof syncMethod === 'function') {\n // Call a callback function. If there is an application specific algorithm\n activeTooltipIndex = syncMethod(tooltipTicks, data);\n } else if (syncMethod === 'value') {\n // Set activeTooltipIndex to the index with the same value as data.activeLabel\n // For loop instead of findIndex because the latter is very slow in some browsers\n activeTooltipIndex = -1; // in case we cannot find the element\n for (var i = 0; i < tooltipTicks.length; i++) {\n if (tooltipTicks[i].value === data.activeLabel) {\n activeTooltipIndex = i;\n break;\n }\n }\n }\n var viewBox = _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n });\n // When a categorical chart is combined with another chart, the value of chartX\n // and chartY may beyond the boundaries.\n var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n var activePayload = getTooltipContent(this.state, this.props.data, activeTooltipIndex);\n var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n } : originCoordinate;\n this.setState(_objectSpread(_objectSpread({}, data), {}, {\n activeLabel: activeLabel,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex\n }));\n } else {\n this.setState(data);\n }\n }\n }, {\n key: \"filterFormatItem\",\n value: function filterFormatItem(item, displayName, childIndex) {\n var formattedGraphicalItems = this.state.formattedGraphicalItems;\n for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n var entry = formattedGraphicalItems[i];\n if (entry.item === item || entry.props.key === item.key || displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex) {\n return entry;\n }\n }\n return null;\n }\n }, {\n key: \"renderAxis\",\n value:\n /**\n * Draw axis\n * @param {Object} axisOptions The options of axis\n * @param {Object} element The axis element\n * @param {String} displayName The display name of axis\n * @param {Number} index The index of element\n * @return {ReactElement} The instance of x-axes\n */\n function renderAxis(axisOptions, element, displayName, index) {\n var _this$props5 = this.props,\n width = _this$props5.width,\n height = _this$props5.height;\n return /*#__PURE__*/React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: classNames(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: this.axesTicksGenerator\n }));\n }\n }, {\n key: \"renderClipPath\",\n value: function renderClipPath() {\n var clipPathId = this.clipPathId;\n var _this$state$offset = this.state.offset,\n left = _this$state$offset.left,\n top = _this$state$offset.top,\n height = _this$state$offset.height,\n width = _this$state$offset.width;\n return /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left,\n y: top,\n height: height,\n width: width\n })));\n }\n }, {\n key: \"getXScales\",\n value: function getXScales() {\n var xAxisMap = this.state.xAxisMap;\n return xAxisMap ? Object.entries(xAxisMap).reduce(function (res, _ref13) {\n var _ref14 = _slicedToArray(_ref13, 2),\n axisId = _ref14[0],\n axisProps = _ref14[1];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getYScales\",\n value: function getYScales() {\n var yAxisMap = this.state.yAxisMap;\n return yAxisMap ? Object.entries(yAxisMap).reduce(function (res, _ref15) {\n var _ref16 = _slicedToArray(_ref15, 2),\n axisId = _ref16[0],\n axisProps = _ref16[1];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getXScaleByAxisId\",\n value: function getXScaleByAxisId(axisId) {\n var _this$state$xAxisMap, _this$state$xAxisMap$;\n return (_this$state$xAxisMap = this.state.xAxisMap) === null || _this$state$xAxisMap === void 0 ? void 0 : (_this$state$xAxisMap$ = _this$state$xAxisMap[axisId]) === null || _this$state$xAxisMap$ === void 0 ? void 0 : _this$state$xAxisMap$.scale;\n }\n }, {\n key: \"getYScaleByAxisId\",\n value: function getYScaleByAxisId(axisId) {\n var _this$state$yAxisMap, _this$state$yAxisMap$;\n return (_this$state$yAxisMap = this.state.yAxisMap) === null || _this$state$yAxisMap === void 0 ? void 0 : (_this$state$yAxisMap$ = _this$state$yAxisMap[axisId]) === null || _this$state$yAxisMap$ === void 0 ? void 0 : _this$state$yAxisMap$.scale;\n }\n }, {\n key: \"getItemByXY\",\n value: function getItemByXY(chartXY) {\n var formattedGraphicalItems = this.state.formattedGraphicalItems;\n if (formattedGraphicalItems && formattedGraphicalItems.length) {\n for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n var graphicalItem = formattedGraphicalItems[i];\n var props = graphicalItem.props,\n item = graphicalItem.item;\n var itemDisplayName = getDisplayName(item.type);\n if (itemDisplayName === 'Bar') {\n var activeBarItem = (props.data || []).find(function (entry) {\n return isInRectangle(chartXY, entry);\n });\n if (activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: activeBarItem\n };\n }\n } else if (itemDisplayName === 'RadialBar') {\n var _activeBarItem = (props.data || []).find(function (entry) {\n return inRangeOfSector(chartXY, entry);\n });\n if (_activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: _activeBarItem\n };\n }\n }\n }\n }\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n if (!validateWidthHeight(this)) {\n return null;\n }\n var _this$props6 = this.props,\n children = _this$props6.children,\n className = _this$props6.className,\n width = _this$props6.width,\n height = _this$props6.height,\n style = _this$props6.style,\n compact = _this$props6.compact,\n title = _this$props6.title,\n desc = _this$props6.desc,\n others = _objectWithoutProperties(_this$props6, _excluded2);\n var attrs = filterProps(others);\n var map = {\n CartesianGrid: {\n handler: this.renderGrid,\n once: true\n },\n ReferenceArea: {\n handler: this.renderReferenceElement\n },\n ReferenceLine: {\n handler: this.renderReferenceElement\n },\n ReferenceDot: {\n handler: this.renderReferenceElement\n },\n XAxis: {\n handler: this.renderXAxis\n },\n YAxis: {\n handler: this.renderYAxis\n },\n Brush: {\n handler: this.renderBrush,\n once: true\n },\n Bar: {\n handler: this.renderGraphicChild\n },\n Line: {\n handler: this.renderGraphicChild\n },\n Area: {\n handler: this.renderGraphicChild\n },\n Radar: {\n handler: this.renderGraphicChild\n },\n RadialBar: {\n handler: this.renderGraphicChild\n },\n Scatter: {\n handler: this.renderGraphicChild\n },\n Pie: {\n handler: this.renderGraphicChild\n },\n Funnel: {\n handler: this.renderGraphicChild\n },\n Tooltip: {\n handler: this.renderCursor,\n once: true\n },\n PolarGrid: {\n handler: this.renderPolarGrid,\n once: true\n },\n PolarAngleAxis: {\n handler: this.renderPolarAxis\n },\n PolarRadiusAxis: {\n handler: this.renderPolarAxis\n },\n Customized: {\n handler: this.renderCustomized\n }\n };\n\n // The \"compact\" mode is mainly used as the panorama within Brush\n if (compact) {\n return /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc\n }), this.renderClipPath(), renderByOrder(children, map));\n }\n if (this.props.accessibilityLayer) {\n var _2, _img;\n // Set tabIndex to 0 by default (can be overwritten)\n attrs.tabIndex = (_2 = 0) !== null && _2 !== void 0 ? _2 : this.props.tabIndex;\n // Set role to img by default (can be overwritten)\n attrs.role = (_img = 'img') !== null && _img !== void 0 ? _img : this.props.role;\n attrs.onKeyDown = function (e) {\n _this2.accessibilityManager.keyboardEvent(e);\n // 'onKeyDown' is not currently a supported prop that can be passed through\n // if it's added, this should be added: this.props.onKeyDown(e);\n };\n\n attrs.onFocus = function () {\n _this2.accessibilityManager.focus();\n // 'onFocus' is not currently a supported prop that can be passed through\n // if it's added, the focus event should be forwarded to the prop\n };\n }\n\n var events = this.parseEventsOfWrapper();\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames('recharts-wrapper', className),\n style: _objectSpread({\n position: 'relative',\n cursor: 'default',\n width: width,\n height: height\n }, style)\n }, events, {\n ref: function ref(node) {\n _this2.container = node;\n },\n role: \"region\"\n }), /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc\n }), this.renderClipPath(), renderByOrder(children, map)), this.renderLegend(), this.renderTooltip());\n }\n }]);\n return CategoricalChartWrapper;\n }(Component), _defineProperty(_class, \"displayName\", chartName), _defineProperty(_class, \"defaultProps\", _objectSpread({\n layout: 'horizontal',\n stackOffset: 'none',\n barCategoryGap: '10%',\n barGap: 4,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n reverseStackOrder: false,\n syncMethod: 'index'\n }, defaultProps)), _defineProperty(_class, \"getDerivedStateFromProps\", function (nextProps, prevState) {\n var data = nextProps.data,\n children = nextProps.children,\n width = nextProps.width,\n height = nextProps.height,\n layout = nextProps.layout,\n stackOffset = nextProps.stackOffset,\n margin = nextProps.margin;\n if (_isNil(prevState.updateId)) {\n var defaultState = createDefaultState(nextProps);\n return _objectSpread(_objectSpread(_objectSpread({}, defaultState), {}, {\n updateId: 0\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, defaultState), {}, {\n updateId: 0\n }), prevState)), {}, {\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n if (data !== prevState.prevData || width !== prevState.prevWidth || height !== prevState.prevHeight || layout !== prevState.prevLayout || stackOffset !== prevState.prevStackOffset || !shallowEqual(margin, prevState.prevMargin)) {\n var _defaultState = createDefaultState(nextProps);\n\n // Fixes https://github.com/recharts/recharts/issues/2143\n var keepFromPrevState = {\n // (chartX, chartY) are (0,0) in default state, but we want to keep the last mouse position to avoid\n // any flickering\n chartX: prevState.chartX,\n chartY: prevState.chartY,\n // The tooltip should stay active when it was active in the previous render. If this is not\n // the case, the tooltip disappears and immediately re-appears, causing a flickering effect\n isTooltipActive: prevState.isTooltipActive\n };\n var updatesToState = _objectSpread(_objectSpread({}, getTooltipData(prevState, data, layout)), {}, {\n updateId: prevState.updateId + 1\n });\n var newState = _objectSpread(_objectSpread(_objectSpread({}, _defaultState), keepFromPrevState), updatesToState);\n return _objectSpread(_objectSpread(_objectSpread({}, newState), updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, newState), prevState)), {}, {\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n if (!isChildrenEqual(children, prevState.prevChildren)) {\n // update configuration in children\n var hasGlobalData = !_isNil(data);\n var newUpdateId = hasGlobalData ? prevState.updateId : prevState.updateId + 1;\n return _objectSpread(_objectSpread({\n updateId: newUpdateId\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, prevState), {}, {\n updateId: newUpdateId\n }), prevState)), {}, {\n prevChildren: children\n });\n }\n return null;\n }), _defineProperty(_class, \"renderActiveDot\", function (option, props) {\n var dot;\n if ( /*#__PURE__*/isValidElement(option)) {\n dot = /*#__PURE__*/cloneElement(option, props);\n } else if (_isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, props);\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-active-dot\",\n key: props.key\n }, dot);\n }), _class;\n};","/**\n * @fileOverview Cross\n */\n\nexport var Cell = function Cell(_props) {\n return null;\n};\nCell.displayName = 'Cell';","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { cloneElement, isValidElement, createElement } from 'react';\nimport classNames from 'classnames';\nimport { Text } from './Text';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { isNumOrStr, isNumber, isPercent, getPercentValue, uniqueId, mathSign } from '../util/DataUtils';\nimport { polarToCartesian } from '../util/PolarUtils';\nvar getLabel = function getLabel(props) {\n var value = props.value,\n formatter = props.formatter;\n var label = _isNil(props.children) ? value : props.children;\n if (_isFunction(formatter)) {\n return formatter(label);\n }\n return label;\n};\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n};\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n var position = labelProps.position,\n viewBox = labelProps.viewBox,\n offset = labelProps.offset,\n className = labelProps.className;\n var _ref = viewBox,\n cx = _ref.cx,\n cy = _ref.cy,\n innerRadius = _ref.innerRadius,\n outerRadius = _ref.outerRadius,\n startAngle = _ref.startAngle,\n endAngle = _ref.endAngle,\n clockWise = _ref.clockWise;\n var radius = (innerRadius + outerRadius) / 2;\n var deltaAngle = getDeltaAngle(startAngle, endAngle);\n var sign = deltaAngle >= 0 ? 1 : -1;\n var labelAngle, direction;\n if (position === 'insideStart') {\n labelAngle = startAngle + sign * offset;\n direction = clockWise;\n } else if (position === 'insideEnd') {\n labelAngle = endAngle - sign * offset;\n direction = !clockWise;\n } else if (position === 'end') {\n labelAngle = endAngle + sign * offset;\n direction = clockWise;\n }\n direction = deltaAngle <= 0 ? direction : !direction;\n var startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n var endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n \").concat(endPoint.x, \",\").concat(endPoint.y);\n var id = _isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, attrs, {\n dominantBaseline: \"central\",\n className: classNames('recharts-radial-bar-label', className)\n }), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n id: id,\n d: path\n })), /*#__PURE__*/React.createElement(\"textPath\", {\n xlinkHref: \"#\".concat(id)\n }, label));\n};\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n var viewBox = props.viewBox,\n offset = props.offset,\n position = props.position;\n var _ref2 = viewBox,\n cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var midAngle = (startAngle + endAngle) / 2;\n if (position === 'outside') {\n var _polarToCartesian = polarToCartesian(cx, cy, outerRadius + offset, midAngle),\n _x = _polarToCartesian.x,\n _y = _polarToCartesian.y;\n return {\n x: _x,\n y: _y,\n textAnchor: _x >= cx ? 'start' : 'end',\n verticalAnchor: 'middle'\n };\n }\n if (position === 'center') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n }\n if (position === 'centerTop') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n if (position === 'centerBottom') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'end'\n };\n }\n var r = (innerRadius + outerRadius) / 2;\n var _polarToCartesian2 = polarToCartesian(cx, cy, r, midAngle),\n x = _polarToCartesian2.x,\n y = _polarToCartesian2.y;\n return {\n x: x,\n y: y,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n};\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n var viewBox = props.viewBox,\n parentViewBox = props.parentViewBox,\n offset = props.offset,\n position = props.position;\n var _ref3 = viewBox,\n x = _ref3.x,\n y = _ref3.y,\n width = _ref3.width,\n height = _ref3.height;\n\n // Define vertical offsets and position inverts based on the value being positive or negative\n var verticalSign = height >= 0 ? 1 : -1;\n var verticalOffset = verticalSign * offset;\n var verticalEnd = verticalSign > 0 ? 'end' : 'start';\n var verticalStart = verticalSign > 0 ? 'start' : 'end';\n\n // Define horizontal offsets and position inverts based on the value being positive or negative\n var horizontalSign = width >= 0 ? 1 : -1;\n var horizontalOffset = horizontalSign * offset;\n var horizontalEnd = horizontalSign > 0 ? 'end' : 'start';\n var horizontalStart = horizontalSign > 0 ? 'start' : 'end';\n if (position === 'top') {\n var attrs = {\n x: x + width / 2,\n y: y - verticalSign * offset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n };\n return _objectSpread(_objectSpread({}, attrs), parentViewBox ? {\n height: Math.max(y - parentViewBox.y, 0),\n width: width\n } : {});\n }\n if (position === 'bottom') {\n var _attrs = {\n x: x + width / 2,\n y: y + height + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n };\n return _objectSpread(_objectSpread({}, _attrs), parentViewBox ? {\n height: Math.max(parentViewBox.y + parentViewBox.height - (y + height), 0),\n width: width\n } : {});\n }\n if (position === 'left') {\n var _attrs2 = {\n x: x - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs2), parentViewBox ? {\n width: Math.max(_attrs2.x - parentViewBox.x, 0),\n height: height\n } : {});\n }\n if (position === 'right') {\n var _attrs3 = {\n x: x + width + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs3), parentViewBox ? {\n width: Math.max(parentViewBox.x + parentViewBox.width - _attrs3.x, 0),\n height: height\n } : {});\n }\n var sizeAttrs = parentViewBox ? {\n width: width,\n height: height\n } : {};\n if (position === 'insideLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n if (position === 'insideRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n if (position === 'insideTop') {\n return _objectSpread({\n x: x + width / 2,\n y: y + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideBottom') {\n return _objectSpread({\n x: x + width / 2,\n y: y + height - verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (position === 'insideTopLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideTopRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideBottomLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (position === 'insideBottomRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (_isObject(position) && (isNumber(position.x) || isPercent(position.x)) && (isNumber(position.y) || isPercent(position.y))) {\n return _objectSpread({\n x: x + getPercentValue(position.x, width),\n y: y + getPercentValue(position.y, height),\n textAnchor: 'end',\n verticalAnchor: 'end'\n }, sizeAttrs);\n }\n return _objectSpread({\n x: x + width / 2,\n y: y + height / 2,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n }, sizeAttrs);\n};\nvar isPolar = function isPolar(viewBox) {\n return 'cx' in viewBox && isNumber(viewBox.cx);\n};\nexport function Label(props) {\n var viewBox = props.viewBox,\n position = props.position,\n value = props.value,\n children = props.children,\n content = props.content,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n textBreakAll = props.textBreakAll;\n if (!viewBox || _isNil(value) && _isNil(children) && ! /*#__PURE__*/isValidElement(content) && !_isFunction(content)) {\n return null;\n }\n if ( /*#__PURE__*/isValidElement(content)) {\n return /*#__PURE__*/cloneElement(content, props);\n }\n var label;\n if (_isFunction(content)) {\n label = /*#__PURE__*/createElement(content, props);\n if ( /*#__PURE__*/isValidElement(label)) {\n return label;\n }\n } else {\n label = getLabel(props);\n }\n var isPolarLabel = isPolar(viewBox);\n var attrs = filterProps(props, true);\n if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n return renderRadialLabel(props, label, attrs);\n }\n var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n return /*#__PURE__*/React.createElement(Text, _extends({\n className: classNames('recharts-label', className)\n }, attrs, positionAttrs, {\n breakAll: textBreakAll\n }), label);\n}\nLabel.displayName = 'Label';\nLabel.defaultProps = {\n offset: 5\n};\nvar parseViewBox = function parseViewBox(props) {\n var cx = props.cx,\n cy = props.cy,\n angle = props.angle,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n r = props.r,\n radius = props.radius,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n x = props.x,\n y = props.y,\n top = props.top,\n left = props.left,\n width = props.width,\n height = props.height,\n clockWise = props.clockWise,\n labelViewBox = props.labelViewBox;\n if (labelViewBox) {\n return labelViewBox;\n }\n if (isNumber(width) && isNumber(height)) {\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n }\n if (isNumber(top) && isNumber(left)) {\n return {\n x: top,\n y: left,\n width: width,\n height: height\n };\n }\n }\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n }\n if (isNumber(cx) && isNumber(cy)) {\n return {\n cx: cx,\n cy: cy,\n startAngle: startAngle || angle || 0,\n endAngle: endAngle || angle || 0,\n innerRadius: innerRadius || 0,\n outerRadius: outerRadius || radius || r || 0,\n clockWise: clockWise\n };\n }\n if (props.viewBox) {\n return props.viewBox;\n }\n return {};\n};\nvar parseLabel = function parseLabel(label, viewBox) {\n if (!label) {\n return null;\n }\n if (label === true) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox\n });\n }\n if (isNumOrStr(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox,\n value: label\n });\n }\n if ( /*#__PURE__*/isValidElement(label)) {\n if (label.type === Label) {\n return /*#__PURE__*/cloneElement(label, {\n key: 'label-implicit',\n viewBox: viewBox\n });\n }\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n if (_isFunction(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n if (_isObject(label)) {\n return /*#__PURE__*/React.createElement(Label, _extends({\n viewBox: viewBox\n }, label, {\n key: \"label-implicit\"\n }));\n }\n return null;\n};\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n var children = parentProps.children;\n var parentViewBox = parseViewBox(parentProps);\n var explicitChildren = findAllByType(children, Label).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n viewBox: viewBox || parentViewBox,\n // eslint-disable-next-line react/no-array-index-key\n key: \"label-\".concat(index)\n });\n });\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n return [implicitLabel].concat(_toConsumableArray(explicitChildren));\n};\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _last from \"lodash/last\";\nimport _isArray from \"lodash/isArray\";\nvar _excluded = [\"data\", \"valueAccessor\", \"dataKey\", \"clockWise\", \"id\", \"textBreakAll\"];\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React, { cloneElement } from 'react';\nimport { Label } from './Label';\nimport { Layer } from '../container/Layer';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nvar defaultProps = {\n valueAccessor: function valueAccessor(entry) {\n return _isArray(entry.value) ? _last(entry.value) : entry.value;\n }\n};\nexport function LabelList(props) {\n var data = props.data,\n valueAccessor = props.valueAccessor,\n dataKey = props.dataKey,\n clockWise = props.clockWise,\n id = props.id,\n textBreakAll = props.textBreakAll,\n others = _objectWithoutProperties(props, _excluded);\n if (!data || !data.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-label-list\"\n }, data.map(function (entry, index) {\n var value = _isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n var idProps = _isNil(id) ? {} : {\n id: \"\".concat(id, \"-\").concat(index)\n };\n return /*#__PURE__*/React.createElement(Label, _extends({}, filterProps(entry, true), others, idProps, {\n parentViewBox: entry.parentViewBox,\n index: index,\n value: value,\n textBreakAll: textBreakAll,\n viewBox: Label.parseViewBox(_isNil(clockWise) ? entry : _objectSpread(_objectSpread({}, entry), {}, {\n clockWise: clockWise\n })),\n key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n }));\n }));\n}\n\nLabelList.displayName = 'LabelList';\nfunction parseLabelList(label, data) {\n if (!label) {\n return null;\n }\n if (label === true) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data\n });\n }\n if ( /*#__PURE__*/React.isValidElement(label) || _isFunction(label)) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data,\n content: label\n });\n }\n if (_isObject(label)) {\n return /*#__PURE__*/React.createElement(LabelList, _extends({\n data: data\n }, label, {\n key: \"labelList-implicit\"\n }));\n }\n return null;\n}\nfunction renderCallByParent(parentProps, data) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n var children = parentProps.children;\n var explicitChildren = findAllByType(children, LabelList).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n data: data,\n // eslint-disable-next-line react/no-array-index-key\n key: \"labelList-\".concat(index)\n });\n });\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n var implicitLabelList = parseLabelList(parentProps.label, data);\n return [implicitLabelList].concat(_toConsumableArray(explicitChildren));\n}\nLabelList.renderCallByParent = renderCallByParent;\nLabelList.defaultProps = defaultProps;","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n draw(context, size) {\n const y = sqrt(size / tan30_2);\n const x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const w = sqrt(size);\n const x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size * ka);\n const x = kx * r;\n const y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (let i = 1; i < 5; ++i) {\n const a = tau * i / 5;\n const c = cos(a);\n const s = sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const y = -sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / a);\n const x0 = r / 2, y0 = r * k;\n const x1 = x0, y1 = r * k + r;\n const x2 = -x1, y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n const t = r / 2;\n const u = t * sqrt3;\n context.moveTo(0, r);\n context.lineTo(0, -r);\n context.moveTo(-u, -t);\n context.lineTo(u, t);\n context.moveTo(-u, t);\n context.lineTo(u, -t);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const s = sqrt(size) * 0.6824;\n const t = s / 2;\n const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n context.moveTo(0, -s);\n context.lineTo(u, t);\n context.lineTo(-u, t);\n context.closePath();\n }\n};\n","import _upperFirst from \"lodash/upperFirst\";\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Curve\n */\nimport React from 'react';\nimport { symbol as shapeSymbol, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'victory-vendor/d3-shape';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/ReactUtils';\nvar symbolFactories = {\n symbolCircle: symbolCircle,\n symbolCross: symbolCross,\n symbolDiamond: symbolDiamond,\n symbolSquare: symbolSquare,\n symbolStar: symbolStar,\n symbolTriangle: symbolTriangle,\n symbolWye: symbolWye\n};\nvar RADIAN = Math.PI / 180;\nvar getSymbolFactory = function getSymbolFactory(type) {\n var name = \"symbol\".concat(_upperFirst(type));\n return symbolFactories[name] || symbolCircle;\n};\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n if (sizeType === 'area') {\n return size;\n }\n switch (type) {\n case 'cross':\n return 5 * size * size / 9;\n case 'diamond':\n return 0.5 * size * size / Math.sqrt(3);\n case 'square':\n return size * size;\n case 'star':\n {\n var angle = 18 * RADIAN;\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n }\n case 'triangle':\n return Math.sqrt(3) * size * size / 4;\n case 'wye':\n return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n default:\n return Math.PI * size * size / 4;\n }\n};\nvar symbolsDefaultProps = {\n type: 'circle',\n size: 64,\n sizeType: 'area'\n};\nvar registerSymbol = function registerSymbol(key, factory) {\n symbolFactories[\"symbol\".concat(_upperFirst(key))] = factory;\n};\nexport var Symbols = function Symbols(props) {\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n var getPath = function getPath() {\n var size = props.size,\n sizeType = props.sizeType,\n type = props.type;\n var symbolFactory = getSymbolFactory(type);\n var symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n return symbol();\n };\n var className = props.className,\n cx = props.cx,\n cy = props.cy,\n size = props.size;\n var filteredProps = filterProps(props, true);\n if (cx === +cx && cy === +cy && size === +size) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filteredProps, {\n className: classNames('recharts-symbols', className),\n transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n d: getPath()\n }));\n }\n return null;\n};\nSymbols.defaultProps = symbolsDefaultProps;\nSymbols.registerSymbol = registerSymbol;","import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n circle,\n plus,\n times,\n triangle2,\n asterisk,\n square2,\n diamond2\n];\n\nexport default function Symbol(type, size) {\n let context = null,\n path = withPath(symbol);\n\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n let buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nvar SIZE = 32;\nexport var DefaultLegendContent = /*#__PURE__*/function (_PureComponent) {\n _inherits(DefaultLegendContent, _PureComponent);\n var _super = _createSuper(DefaultLegendContent);\n function DefaultLegendContent() {\n _classCallCheck(this, DefaultLegendContent);\n return _super.apply(this, arguments);\n }\n _createClass(DefaultLegendContent, [{\n key: \"renderIcon\",\n value:\n /**\n * Render the path of icon\n * @param {Object} data Data of each legend item\n * @return {String} Path element\n */\n function renderIcon(data) {\n var inactiveColor = this.props.inactiveColor;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n if (data.type === 'plainline') {\n return /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: data.payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n if (data.type === 'line') {\n return /*#__PURE__*/React.createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n if (data.type === 'rect') {\n return /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n if ( /*#__PURE__*/React.isValidElement(data.legendIcon)) {\n var iconProps = _objectSpread({}, data);\n delete iconProps.legendIcon;\n return /*#__PURE__*/React.cloneElement(data.legendIcon, iconProps);\n }\n return /*#__PURE__*/React.createElement(Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: data.type\n });\n }\n\n /**\n * Draw items of legend\n * @return {ReactElement} Items\n */\n }, {\n key: \"renderItems\",\n value: function renderItems() {\n var _this = this;\n var _this$props = this.props,\n payload = _this$props.payload,\n iconSize = _this$props.iconSize,\n layout = _this$props.layout,\n formatter = _this$props.formatter,\n inactiveColor = _this$props.inactiveColor;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map(function (entry, i) {\n var _classNames;\n var finalFormatter = entry.formatter || formatter;\n var className = classNames((_classNames = {\n 'recharts-legend-item': true\n }, _defineProperty(_classNames, \"legend-item-\".concat(i), true), _defineProperty(_classNames, \"inactive\", entry.inactive), _classNames));\n if (entry.type === 'none') {\n return null;\n }\n var color = entry.inactive ? inactiveColor : entry.color;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n className: className,\n style: itemStyle,\n key: \"legend-item-\".concat(i) // eslint-disable-line react/no-array-index-key\n }, adaptEventsOfChild(_this.props, entry, i)), /*#__PURE__*/React.createElement(Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle\n }, _this.renderIcon(entry)), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-legend-item-text\",\n style: {\n color: color\n }\n }, finalFormatter ? finalFormatter(entry.value, entry, i) : entry.value));\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n layout = _this$props2.layout,\n align = _this$props2.align;\n if (!payload || !payload.length) {\n return null;\n }\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, this.renderItems());\n }\n }]);\n return DefaultLegendContent;\n}(PureComponent);\n_defineProperty(DefaultLegendContent, \"displayName\", 'Legend');\n_defineProperty(DefaultLegendContent, \"defaultProps\", {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'middle',\n inactiveColor: '#ccc'\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\nvar _excluded = [\"ref\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Legend\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultLegendContent } from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\nfunction getUniqPayload(option, payload) {\n if (option === true) {\n return _uniqBy(payload, defaultUniqBy);\n }\n if (_isFunction(option)) {\n return _uniqBy(payload, option);\n }\n return payload;\n}\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n if (_isFunction(content)) {\n return /*#__PURE__*/React.createElement(content, props);\n }\n var ref = props.ref,\n otherProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/React.createElement(DefaultLegendContent, otherProps);\n}\nvar EPS = 1;\nexport var Legend = /*#__PURE__*/function (_PureComponent) {\n _inherits(Legend, _PureComponent);\n var _super = _createSuper(Legend);\n function Legend() {\n var _this;\n _classCallCheck(this, Legend);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n boxWidth: -1,\n boxHeight: -1\n });\n return _this;\n }\n _createClass(Legend, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"getBBox\",\n value: function getBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n return this.wrapperNode.getBoundingClientRect();\n }\n return null;\n }\n }, {\n key: \"getBBoxSnapshot\",\n value: function getBBoxSnapshot() {\n var _this$state = this.state,\n boxWidth = _this$state.boxWidth,\n boxHeight = _this$state.boxHeight;\n if (boxWidth >= 0 && boxHeight >= 0) {\n return {\n width: boxWidth,\n height: boxHeight\n };\n }\n return null;\n }\n }, {\n key: \"getDefaultPosition\",\n value: function getDefaultPosition(style) {\n var _this$props = this.props,\n layout = _this$props.layout,\n align = _this$props.align,\n verticalAlign = _this$props.verticalAlign,\n margin = _this$props.margin,\n chartWidth = _this$props.chartWidth,\n chartHeight = _this$props.chartHeight;\n var hPos, vPos;\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n var _box = this.getBBoxSnapshot() || {\n width: 0\n };\n hPos = {\n left: ((chartWidth || 0) - _box.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n var _box2 = this.getBBoxSnapshot() || {\n height: 0\n };\n vPos = {\n top: ((chartHeight || 0) - _box2.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n return _objectSpread(_objectSpread({}, hPos), vPos);\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var _this$state2 = this.state,\n boxWidth = _this$state2.boxWidth,\n boxHeight = _this$state2.boxHeight;\n var onBBoxUpdate = this.props.onBBoxUpdate;\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var _box3 = this.wrapperNode.getBoundingClientRect();\n if (Math.abs(_box3.width - boxWidth) > EPS || Math.abs(_box3.height - boxHeight) > EPS) {\n this.setState({\n boxWidth: _box3.width,\n boxHeight: _box3.height\n }, function () {\n if (onBBoxUpdate) {\n onBBoxUpdate(_box3);\n }\n });\n }\n } else if (boxWidth !== -1 || boxHeight !== -1) {\n this.setState({\n boxWidth: -1,\n boxHeight: -1\n }, function () {\n if (onBBoxUpdate) {\n onBBoxUpdate(null);\n }\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props2 = this.props,\n content = _this$props2.content,\n width = _this$props2.width,\n height = _this$props2.height,\n wrapperStyle = _this$props2.wrapperStyle,\n payloadUniqBy = _this$props2.payloadUniqBy,\n payload = _this$props2.payload;\n var outerStyle = _objectSpread(_objectSpread({\n position: 'absolute',\n width: width || 'auto',\n height: height || 'auto'\n }, this.getDefaultPosition(wrapperStyle)), wrapperStyle);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: getUniqPayload(payloadUniqBy, payload)\n })));\n }\n }], [{\n key: \"getWithHeight\",\n value: function getWithHeight(item, chartWidth) {\n var layout = item.props.layout;\n if (layout === 'vertical' && isNumber(item.props.height)) {\n return {\n height: item.props.height\n };\n }\n if (layout === 'horizontal') {\n return {\n width: item.props.width || chartWidth\n };\n }\n return null;\n }\n }]);\n return Legend;\n}(PureComponent);\n_defineProperty(Legend, \"displayName\", 'Legend');\n_defineProperty(Legend, \"defaultProps\", {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom'\n});","import React,{cloneElement,isValidElement,createRef,PureComponent,Component,forwardRef,useRef,useState,useEffect,useLayoutEffect}from'react';import {findDOMNode}from'react-dom';import debounce from'lodash/debounce';import throttle from'lodash/throttle';/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}var patchResizeHandler = function (resizeCallback, refreshMode, refreshRate, refreshOptions) {\n switch (refreshMode) {\n case 'debounce':\n return debounce(resizeCallback, refreshRate, refreshOptions);\n case 'throttle':\n return throttle(resizeCallback, refreshRate, refreshOptions);\n default:\n return resizeCallback;\n }\n};\nvar isFunction = function (fn) { return typeof fn === 'function'; };\nvar isSSR = function () { return typeof window === 'undefined'; };\nvar isDOMElement = function (element) {\n return element instanceof Element || element instanceof HTMLDocument;\n};\nvar createNotifier = function (setSize, handleWidth, handleHeight) {\n return function (_a) {\n var width = _a.width, height = _a.height;\n setSize(function (prev) {\n if (prev.width === width && prev.height === height) {\n // skip if dimensions haven't changed\n return prev;\n }\n if ((prev.width === width && !handleHeight) || (prev.height === height && !handleWidth)) {\n // process `handleHeight/handleWidth` props\n return prev;\n }\n return { width: width, height: height };\n });\n };\n};var ResizeDetector = /** @class */ (function (_super) {\n __extends(ResizeDetector, _super);\n function ResizeDetector(props) {\n var _this = _super.call(this, props) || this;\n _this.cancelHandler = function () {\n if (_this.resizeHandler && _this.resizeHandler.cancel) {\n // cancel debounced handler\n _this.resizeHandler.cancel();\n _this.resizeHandler = null;\n }\n };\n _this.attachObserver = function () {\n var _a = _this.props, targetRef = _a.targetRef, observerOptions = _a.observerOptions;\n if (isSSR()) {\n return;\n }\n if (targetRef && targetRef.current) {\n _this.targetRef.current = targetRef.current;\n }\n var element = _this.getElement();\n if (!element) {\n // can't find element to observe\n return;\n }\n if (_this.observableElement && _this.observableElement === element) {\n // element is already observed\n return;\n }\n _this.observableElement = element;\n _this.resizeObserver.observe(element, observerOptions);\n };\n _this.getElement = function () {\n var _a = _this.props, querySelector = _a.querySelector, targetDomEl = _a.targetDomEl;\n if (isSSR())\n return null;\n // in case we pass a querySelector\n if (querySelector)\n return document.querySelector(querySelector);\n // in case we pass a DOM element\n if (targetDomEl && isDOMElement(targetDomEl))\n return targetDomEl;\n // in case we pass a React ref using React.createRef()\n if (_this.targetRef && isDOMElement(_this.targetRef.current))\n return _this.targetRef.current;\n // the worse case when we don't receive any information from the parent and the library doesn't add any wrappers\n // we have to use a deprecated `findDOMNode` method in order to find a DOM element to attach to\n var currentElement = findDOMNode(_this);\n if (!currentElement)\n return null;\n var renderType = _this.getRenderType();\n switch (renderType) {\n case 'renderProp':\n return currentElement;\n case 'childFunction':\n return currentElement;\n case 'child':\n return currentElement;\n case 'childArray':\n return currentElement;\n default:\n return currentElement.parentElement;\n }\n };\n _this.createResizeHandler = function (entries) {\n var _a = _this.props, _b = _a.handleWidth, handleWidth = _b === void 0 ? true : _b, _c = _a.handleHeight, handleHeight = _c === void 0 ? true : _c, onResize = _a.onResize;\n if (!handleWidth && !handleHeight)\n return;\n var notifyResize = createNotifier(function (setStateFunc) { return _this.setState(setStateFunc, function () { return onResize === null || onResize === void 0 ? void 0 : onResize(_this.state.width, _this.state.height); }); }, handleWidth, handleHeight);\n entries.forEach(function (entry) {\n var _a = (entry && entry.contentRect) || {}, width = _a.width, height = _a.height;\n var shouldSetSize = !_this.skipOnMount && !isSSR();\n if (shouldSetSize) {\n notifyResize({ width: width, height: height });\n }\n _this.skipOnMount = false;\n });\n };\n _this.getRenderType = function () {\n var _a = _this.props, render = _a.render, children = _a.children;\n if (isFunction(render)) {\n // DEPRECATED. Use `Child Function Pattern` instead\n return 'renderProp';\n }\n if (isFunction(children)) {\n return 'childFunction';\n }\n if (isValidElement(children)) {\n return 'child';\n }\n if (Array.isArray(children)) {\n // DEPRECATED. Wrap children with a single parent\n return 'childArray';\n }\n // DEPRECATED. Use `Child Function Pattern` instead\n return 'parent';\n };\n var skipOnMount = props.skipOnMount, refreshMode = props.refreshMode, _a = props.refreshRate, refreshRate = _a === void 0 ? 1000 : _a, refreshOptions = props.refreshOptions;\n _this.state = {\n width: undefined,\n height: undefined\n };\n _this.skipOnMount = skipOnMount;\n _this.targetRef = createRef();\n _this.observableElement = null;\n if (isSSR()) {\n return _this;\n }\n _this.resizeHandler = patchResizeHandler(_this.createResizeHandler, refreshMode, refreshRate, refreshOptions);\n _this.resizeObserver = new window.ResizeObserver(_this.resizeHandler);\n return _this;\n }\n ResizeDetector.prototype.componentDidMount = function () {\n this.attachObserver();\n };\n ResizeDetector.prototype.componentDidUpdate = function () {\n this.attachObserver();\n };\n ResizeDetector.prototype.componentWillUnmount = function () {\n if (isSSR()) {\n return;\n }\n this.observableElement = null;\n this.resizeObserver.disconnect();\n this.cancelHandler();\n };\n ResizeDetector.prototype.render = function () {\n var _a = this.props, render = _a.render, children = _a.children, _b = _a.nodeType, WrapperTag = _b === void 0 ? 'div' : _b;\n var _c = this.state, width = _c.width, height = _c.height;\n var childProps = { width: width, height: height, targetRef: this.targetRef };\n var renderType = this.getRenderType();\n switch (renderType) {\n case 'renderProp':\n return render === null || render === void 0 ? void 0 : render(childProps);\n case 'childFunction': {\n var childFunction = children;\n return childFunction === null || childFunction === void 0 ? void 0 : childFunction(childProps);\n }\n case 'child': {\n // @TODO bug prone logic\n var child = children;\n if (child.type && typeof child.type === 'string') {\n // child is a native DOM elements such as div, span etc\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n childProps.targetRef; var nativeProps = __rest(childProps, [\"targetRef\"]);\n return cloneElement(child, nativeProps);\n }\n // class or functional component otherwise\n return cloneElement(child, childProps);\n }\n case 'childArray': {\n var childArray = children;\n return childArray.map(function (el) { return !!el && cloneElement(el, childProps); });\n }\n default:\n return React.createElement(WrapperTag, null);\n }\n };\n return ResizeDetector;\n}(PureComponent));function withResizeDetector(ComponentInner, options) {\n if (options === void 0) { options = {}; }\n var ResizeDetectorHOC = /** @class */ (function (_super) {\n __extends(ResizeDetectorHOC, _super);\n function ResizeDetectorHOC() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ref = createRef();\n return _this;\n }\n ResizeDetectorHOC.prototype.render = function () {\n var _a = this.props, forwardedRef = _a.forwardedRef, rest = __rest(_a, [\"forwardedRef\"]);\n var targetRef = forwardedRef !== null && forwardedRef !== void 0 ? forwardedRef : this.ref;\n return (React.createElement(ResizeDetector, __assign({}, options, { targetRef: targetRef }),\n React.createElement(ComponentInner, __assign({ targetRef: targetRef }, rest))));\n };\n return ResizeDetectorHOC;\n }(Component));\n function forwardRefWrapper(props, ref) {\n return React.createElement(ResizeDetectorHOC, __assign({}, props, { forwardedRef: ref }));\n }\n var name = ComponentInner.displayName || ComponentInner.name;\n forwardRefWrapper.displayName = \"withResizeDetector(\".concat(name, \")\");\n return forwardRef(forwardRefWrapper);\n}var useEnhancedEffect = isSSR() ? useEffect : useLayoutEffect;\nfunction useResizeDetector(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.skipOnMount, skipOnMount = _c === void 0 ? false : _c, refreshMode = _b.refreshMode, _d = _b.refreshRate, refreshRate = _d === void 0 ? 1000 : _d, refreshOptions = _b.refreshOptions, _e = _b.handleWidth, handleWidth = _e === void 0 ? true : _e, _f = _b.handleHeight, handleHeight = _f === void 0 ? true : _f, targetRef = _b.targetRef, observerOptions = _b.observerOptions, onResize = _b.onResize;\n var skipResize = useRef(skipOnMount);\n var localRef = useRef(null);\n var resizeHandler = useRef();\n var ref = targetRef !== null && targetRef !== void 0 ? targetRef : localRef;\n var _g = useState({\n width: undefined,\n height: undefined\n }), size = _g[0], setSize = _g[1];\n useEnhancedEffect(function () {\n if (!handleWidth && !handleHeight)\n return;\n var notifyResize = createNotifier(setSize, handleWidth, handleHeight);\n var resizeCallback = function (entries) {\n if (!handleWidth && !handleHeight)\n return;\n entries.forEach(function (entry) {\n var _a = (entry && entry.contentRect) || {}, width = _a.width, height = _a.height;\n var shouldSetSize = !skipResize.current;\n if (shouldSetSize) {\n notifyResize({ width: width, height: height });\n }\n skipResize.current = false;\n });\n };\n resizeHandler.current = patchResizeHandler(resizeCallback, refreshMode, refreshRate, refreshOptions);\n var resizeObserver = new window.ResizeObserver(resizeHandler.current);\n if (ref.current) {\n resizeObserver.observe(ref.current, observerOptions);\n }\n return function () {\n var _a, _b;\n resizeObserver.disconnect();\n (_b = (_a = resizeHandler.current).cancel) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n }, [refreshMode, refreshRate, refreshOptions, handleWidth, handleHeight, observerOptions, ref.current]);\n useEffect(function () {\n onResize === null || onResize === void 0 ? void 0 : onResize(size.width, size.height);\n }, [size]);\n return __assign({ ref: ref }, size);\n}export{ResizeDetector as default,useResizeDetector,withResizeDetector};//# sourceMappingURL=index.esm.js.map\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */\nimport classNames from 'classnames';\nimport React, { forwardRef, cloneElement, useState, useImperativeHandle, useRef, useEffect, useCallback, useMemo } from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport { isPercent } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nexport var ResponsiveContainer = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var aspect = _ref.aspect,\n _ref$initialDimension = _ref.initialDimension,\n initialDimension = _ref$initialDimension === void 0 ? {\n width: -1,\n height: -1\n } : _ref$initialDimension,\n _ref$width = _ref.width,\n width = _ref$width === void 0 ? '100%' : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === void 0 ? '100%' : _ref$height,\n _ref$minWidth = _ref.minWidth,\n minWidth = _ref$minWidth === void 0 ? 0 : _ref$minWidth,\n minHeight = _ref.minHeight,\n maxHeight = _ref.maxHeight,\n children = _ref.children,\n _ref$debounce = _ref.debounce,\n debounce = _ref$debounce === void 0 ? 0 : _ref$debounce,\n id = _ref.id,\n className = _ref.className,\n onResize = _ref.onResize;\n var _useState = useState({\n containerWidth: initialDimension.width,\n containerHeight: initialDimension.height\n }),\n _useState2 = _slicedToArray(_useState, 2),\n sizes = _useState2[0],\n setSizes = _useState2[1];\n var containerRef = useRef(null);\n useImperativeHandle(ref, function () {\n return containerRef;\n }, [containerRef]);\n var getContainerSize = useCallback(function () {\n if (!containerRef.current) {\n return null;\n }\n return {\n containerWidth: containerRef.current.clientWidth,\n containerHeight: containerRef.current.clientHeight\n };\n }, []);\n var updateDimensionsImmediate = useCallback(function () {\n var newSize = getContainerSize();\n if (newSize) {\n var containerWidth = newSize.containerWidth,\n containerHeight = newSize.containerHeight;\n if (onResize) onResize(containerWidth, containerHeight);\n setSizes(function (currentSizes) {\n var oldWidth = currentSizes.containerWidth,\n oldHeight = currentSizes.containerHeight;\n if (containerWidth !== oldWidth || containerHeight !== oldHeight) {\n return {\n containerWidth: containerWidth,\n containerHeight: containerHeight\n };\n }\n return currentSizes;\n });\n }\n }, [getContainerSize, onResize]);\n var chartContent = useMemo(function () {\n var containerWidth = sizes.containerWidth,\n containerHeight = sizes.containerHeight;\n if (containerWidth < 0 || containerHeight < 0) {\n return null;\n }\n warn(isPercent(width) || isPercent(height), \"The width(%s) and height(%s) are both fixed numbers,\\n maybe you don't need to use a ResponsiveContainer.\", width, height);\n warn(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n var calculatedWidth = isPercent(width) ? containerWidth : width;\n var calculatedHeight = isPercent(height) ? containerHeight : height;\n if (aspect && aspect > 0) {\n // Preserve the desired aspect ratio\n if (calculatedWidth) {\n // Will default to using width for aspect ratio\n calculatedHeight = calculatedWidth / aspect;\n } else if (calculatedHeight) {\n // But we should also take height into consideration\n calculatedWidth = calculatedHeight * aspect;\n }\n\n // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n if (maxHeight && calculatedHeight > maxHeight) {\n calculatedHeight = maxHeight;\n }\n }\n warn(calculatedWidth > 0 || calculatedHeight > 0, \"The width(%s) and height(%s) of chart should be greater than 0,\\n please check the style of container, or the props width(%s) and height(%s),\\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\\n height and width.\", calculatedWidth, calculatedHeight, width, height, minWidth, minHeight, aspect);\n return /*#__PURE__*/cloneElement(children, {\n width: calculatedWidth,\n height: calculatedHeight\n });\n }, [aspect, children, height, maxHeight, minHeight, minWidth, sizes, width]);\n useEffect(function () {\n var size = getContainerSize();\n if (size) {\n setSizes(size);\n }\n }, [getContainerSize]);\n var style = {\n width: width,\n height: height,\n minWidth: minWidth,\n minHeight: minHeight,\n maxHeight: maxHeight\n };\n return /*#__PURE__*/React.createElement(ReactResizeDetector, {\n handleWidth: true,\n handleHeight: true,\n onResize: updateDimensionsImmediate,\n targetRef: containerRef,\n refreshMode: debounce > 0 ? 'debounce' : undefined,\n refreshRate: debounce\n }, /*#__PURE__*/React.createElement(\"div\", _extends({}, id != null ? {\n id: \"\".concat(id)\n } : {}, {\n className: classNames('recharts-responsive-container', className),\n style: style,\n ref: containerRef\n }), chartContent));\n});","import _isNil from \"lodash/isNil\";\nvar _excluded = [\"dx\", \"dy\", \"textAnchor\", \"verticalAnchor\", \"scaleToFit\", \"angle\", \"lineHeight\", \"capHeight\", \"className\", \"breakAll\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React, { useMemo } from 'react';\nimport reduceCSSCalc from 'reduce-css-calc';\nimport classNames from 'classnames';\nimport { isNumber, isNumOrStr } from '../util/DataUtils';\nimport { Global } from '../util/Global';\nimport { filterProps } from '../util/ReactUtils';\nimport { getStringSize } from '../util/DOMUtils';\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\nvar calculateWordWidths = function calculateWordWidths(_ref) {\n var children = _ref.children,\n breakAll = _ref.breakAll,\n style = _ref.style;\n try {\n var words = [];\n if (!_isNil(children)) {\n if (breakAll) {\n words = children.toString().split('');\n } else {\n words = children.toString().split(BREAKING_SPACES);\n }\n }\n var wordsWithComputedWidth = words.map(function (word) {\n return {\n word: word,\n width: getStringSize(word, style).width\n };\n });\n var spaceWidth = breakAll ? 0 : getStringSize(\"\\xA0\", style).width;\n return {\n wordsWithComputedWidth: wordsWithComputedWidth,\n spaceWidth: spaceWidth\n };\n } catch (e) {\n return null;\n }\n};\nvar calculateWordsByLines = function calculateWordsByLines(_ref2, initialWordsWithComputedWith, spaceWidth, lineWidth, scaleToFit) {\n var maxLines = _ref2.maxLines,\n children = _ref2.children,\n style = _ref2.style,\n breakAll = _ref2.breakAll;\n var shouldLimitLines = isNumber(maxLines);\n var text = children;\n var calculate = function calculate() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return words.reduce(function (result, _ref3) {\n var word = _ref3.word,\n width = _ref3.width;\n var currentLine = result[result.length - 1];\n if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < Number(lineWidth))) {\n // Word can be added to an existing line\n currentLine.words.push(word);\n currentLine.width += width + spaceWidth;\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n var newLine = {\n words: [word],\n width: width\n };\n result.push(newLine);\n }\n return result;\n }, []);\n };\n var originalResult = calculate(initialWordsWithComputedWith);\n var findLongestLine = function findLongestLine(words) {\n return words.reduce(function (a, b) {\n return a.width > b.width ? a : b;\n });\n };\n if (!shouldLimitLines) {\n return originalResult;\n }\n var suffix = '…';\n var checkOverflow = function checkOverflow(index) {\n var tempText = text.slice(0, index);\n var words = calculateWordWidths({\n breakAll: breakAll,\n style: style,\n children: tempText + suffix\n }).wordsWithComputedWidth;\n var result = calculate(words);\n var doesOverflow = result.length > maxLines || findLongestLine(result).width > Number(lineWidth);\n return [doesOverflow, result];\n };\n var start = 0;\n var end = text.length - 1;\n var iterations = 0;\n var trimmedResult;\n while (start <= end && iterations <= text.length - 1) {\n var middle = Math.floor((start + end) / 2);\n var prev = middle - 1;\n var _checkOverflow = checkOverflow(prev),\n _checkOverflow2 = _slicedToArray(_checkOverflow, 2),\n doesPrevOverflow = _checkOverflow2[0],\n result = _checkOverflow2[1];\n var _checkOverflow3 = checkOverflow(middle),\n _checkOverflow4 = _slicedToArray(_checkOverflow3, 1),\n doesMiddleOverflow = _checkOverflow4[0];\n if (!doesPrevOverflow && !doesMiddleOverflow) {\n start = middle + 1;\n }\n if (doesPrevOverflow && doesMiddleOverflow) {\n end = middle - 1;\n }\n if (!doesPrevOverflow && doesMiddleOverflow) {\n trimmedResult = result;\n break;\n }\n iterations++;\n }\n\n // Fallback to originalResult (result without trimming) if we cannot find the\n // where to trim. This should not happen :tm:\n return trimmedResult || originalResult;\n};\nvar getWordsWithoutCalculate = function getWordsWithoutCalculate(children) {\n var words = !_isNil(children) ? children.toString().split(BREAKING_SPACES) : [];\n return [{\n words: words\n }];\n};\nvar getWordsByLines = function getWordsByLines(_ref4) {\n var width = _ref4.width,\n scaleToFit = _ref4.scaleToFit,\n children = _ref4.children,\n style = _ref4.style,\n breakAll = _ref4.breakAll,\n maxLines = _ref4.maxLines;\n // Only perform calculations if using features that require them (multiline, scaleToFit)\n if ((width || scaleToFit) && !Global.isSsr) {\n var wordsWithComputedWidth, spaceWidth;\n var wordWidths = calculateWordWidths({\n breakAll: breakAll,\n children: children,\n style: style\n });\n if (wordWidths) {\n var wcw = wordWidths.wordsWithComputedWidth,\n sw = wordWidths.spaceWidth;\n wordsWithComputedWidth = wcw;\n spaceWidth = sw;\n } else {\n return getWordsWithoutCalculate(children);\n }\n return calculateWordsByLines({\n breakAll: breakAll,\n children: children,\n maxLines: maxLines,\n style: style\n }, wordsWithComputedWidth, spaceWidth, width, scaleToFit);\n }\n return getWordsWithoutCalculate(children);\n};\nvar textDefaultProps = {\n x: 0,\n y: 0,\n lineHeight: '1em',\n capHeight: '0.71em',\n // Magic number from d3\n scaleToFit: false,\n textAnchor: 'start',\n verticalAnchor: 'end',\n // Maintain compat with existing charts / default SVG behavior\n fill: '#808080'\n};\nexport var Text = function Text(props) {\n var wordsByLines = useMemo(function () {\n return getWordsByLines({\n breakAll: props.breakAll,\n children: props.children,\n maxLines: props.maxLines,\n scaleToFit: props.scaleToFit,\n style: props.style,\n width: props.width\n });\n }, [props.breakAll, props.children, props.maxLines, props.scaleToFit, props.style, props.width]);\n var dx = props.dx,\n dy = props.dy,\n textAnchor = props.textAnchor,\n verticalAnchor = props.verticalAnchor,\n scaleToFit = props.scaleToFit,\n angle = props.angle,\n lineHeight = props.lineHeight,\n capHeight = props.capHeight,\n className = props.className,\n breakAll = props.breakAll,\n textProps = _objectWithoutProperties(props, _excluded);\n if (!isNumOrStr(textProps.x) || !isNumOrStr(textProps.y)) {\n return null;\n }\n var x = textProps.x + (isNumber(dx) ? dx : 0);\n var y = textProps.y + (isNumber(dy) ? dy : 0);\n var startDy;\n switch (verticalAnchor) {\n case 'start':\n startDy = reduceCSSCalc(\"calc(\".concat(capHeight, \")\"));\n break;\n case 'middle':\n startDy = reduceCSSCalc(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n break;\n default:\n startDy = reduceCSSCalc(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n break;\n }\n var transforms = [];\n if (scaleToFit) {\n var lineWidth = wordsByLines[0].width;\n var width = props.width;\n transforms.push(\"scale(\".concat((isNumber(width) ? width / lineWidth : 1) / lineWidth, \")\"));\n }\n if (angle) {\n transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n }\n if (transforms.length) {\n textProps.transform = transforms.join(' ');\n }\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, filterProps(textProps, true), {\n x: x,\n y: y,\n className: classNames('recharts-text', className),\n textAnchor: textAnchor,\n fill: textProps.fill.includes('url') ? textDefaultProps.fill : textProps.fill\n }), wordsByLines.map(function (line, index) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"tspan\", {\n x: x,\n dy: index === 0 ? startDy : lineHeight,\n key: index\n }, line.words.join(breakAll ? '' : ' '))\n );\n }));\n};\nText.defaultProps = textDefaultProps;","import _isNil from \"lodash/isNil\";\nimport _sortBy from \"lodash/sortBy\";\nimport _isArray from \"lodash/isArray\";\n/**\n * @fileOverview Default Tooltip Content\n */\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React from 'react';\nimport classNames from 'classnames';\nimport { isNumOrStr } from '../util/DataUtils';\nfunction defaultFormatter(value) {\n return _isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(' ~ ') : value;\n}\nexport var DefaultTooltipContent = function DefaultTooltipContent(props) {\n var _props$separator = props.separator,\n separator = _props$separator === void 0 ? ' : ' : _props$separator,\n _props$contentStyle = props.contentStyle,\n contentStyle = _props$contentStyle === void 0 ? {} : _props$contentStyle,\n _props$itemStyle = props.itemStyle,\n itemStyle = _props$itemStyle === void 0 ? {} : _props$itemStyle,\n _props$labelStyle = props.labelStyle,\n labelStyle = _props$labelStyle === void 0 ? {} : _props$labelStyle,\n payload = props.payload,\n formatter = props.formatter,\n itemSorter = props.itemSorter,\n wrapperClassName = props.wrapperClassName,\n labelClassName = props.labelClassName,\n label = props.label,\n labelFormatter = props.labelFormatter;\n var renderContent = function renderContent() {\n if (payload && payload.length) {\n var listStyle = {\n padding: 0,\n margin: 0\n };\n var items = (itemSorter ? _sortBy(payload, itemSorter) : payload).map(function (entry, i) {\n if (entry.type === 'none') {\n return null;\n }\n var finalItemStyle = _objectSpread({\n display: 'block',\n paddingTop: 4,\n paddingBottom: 4,\n color: entry.color || '#000'\n }, itemStyle);\n var finalFormatter = entry.formatter || formatter || defaultFormatter;\n var value = entry.value,\n name = entry.name;\n var finalValue = value;\n var finalName = name;\n if (finalFormatter && finalValue != null && finalName != null) {\n var formatted = finalFormatter(value, name, entry, i, payload);\n if (Array.isArray(formatted)) {\n var _formatted = _slicedToArray(formatted, 2);\n finalValue = _formatted[0];\n finalName = _formatted[1];\n } else {\n finalValue = formatted;\n }\n }\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n className: \"recharts-tooltip-item\",\n key: \"tooltip-item-\".concat(i),\n style: finalItemStyle\n }, isNumOrStr(finalName) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-name\"\n }, finalName) : null, isNumOrStr(finalName) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-separator\"\n }, separator) : null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-value\"\n }, finalValue), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-unit\"\n }, entry.unit || ''))\n );\n });\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-tooltip-item-list\",\n style: listStyle\n }, items);\n }\n return null;\n };\n var finalStyle = _objectSpread({\n margin: 0,\n padding: 10,\n backgroundColor: '#fff',\n border: '1px solid #ccc',\n whiteSpace: 'nowrap'\n }, contentStyle);\n var finalLabelStyle = _objectSpread({\n margin: 0\n }, labelStyle);\n var hasLabel = !_isNil(label);\n var finalLabel = hasLabel ? label : '';\n var wrapperCN = classNames('recharts-default-tooltip', wrapperClassName);\n var labelCN = classNames('recharts-tooltip-label', labelClassName);\n if (hasLabel && labelFormatter && payload !== undefined && payload !== null) {\n finalLabel = labelFormatter(label, payload);\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: wrapperCN,\n style: finalStyle\n }, /*#__PURE__*/React.createElement(\"p\", {\n className: labelCN,\n style: finalLabelStyle\n }, /*#__PURE__*/React.isValidElement(finalLabel) ? finalLabel : \"\".concat(finalLabel)), renderContent());\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport _isNil from \"lodash/isNil\";\nimport _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/**\n * @fileOverview Tooltip\n */\nimport React, { useEffect, useState, useRef, useCallback } from 'react';\nimport { translateStyle } from 'react-smooth';\nimport classNames from 'classnames';\nimport { DefaultTooltipContent } from './DefaultTooltipContent';\nimport { Global } from '../util/Global';\nimport { isNumber } from '../util/DataUtils';\nvar CLS_PREFIX = 'recharts-tooltip-wrapper';\nvar EPS = 1;\nfunction defaultUniqBy(entry) {\n return entry.dataKey;\n}\nfunction getUniqPayload(option, payload) {\n if (option === true) {\n return _uniqBy(payload, defaultUniqBy);\n }\n if (_isFunction(option)) {\n return _uniqBy(payload, option);\n }\n return payload;\n}\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n if (_isFunction(content)) {\n return /*#__PURE__*/React.createElement(content, props);\n }\n return /*#__PURE__*/React.createElement(DefaultTooltipContent, props);\n}\nvar tooltipDefaultProps = {\n active: false,\n allowEscapeViewBox: {\n x: false,\n y: false\n },\n reverseDirection: {\n x: false,\n y: false\n },\n offset: 10,\n viewBox: {\n x: 0,\n y: 0,\n height: 0,\n width: 0\n },\n coordinate: {\n x: 0,\n y: 0\n },\n // this doesn't exist on TooltipProps\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n cursorStyle: {},\n separator: ' : ',\n wrapperStyle: {},\n contentStyle: {},\n itemStyle: {},\n labelStyle: {},\n cursor: true,\n trigger: 'hover',\n isAnimationActive: !Global.isSsr,\n animationEasing: 'ease',\n animationDuration: 400,\n filterNull: true,\n useTranslate3d: false\n};\nexport var Tooltip = function Tooltip(props) {\n var _classNames;\n var _useState = useState(-1),\n _useState2 = _slicedToArray(_useState, 2),\n boxWidth = _useState2[0],\n setBoxWidth = _useState2[1];\n var _useState3 = useState(-1),\n _useState4 = _slicedToArray(_useState3, 2),\n boxHeight = _useState4[0],\n setBoxHeight = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n dismissed = _useState6[0],\n setDismissed = _useState6[1];\n var _useState7 = useState({\n x: 0,\n y: 0\n }),\n _useState8 = _slicedToArray(_useState7, 2),\n dismissedAtCoordinate = _useState8[0],\n setDismissedAtCoordinate = _useState8[1];\n var wrapperNode = useRef();\n var allowEscapeViewBox = props.allowEscapeViewBox,\n reverseDirection = props.reverseDirection,\n coordinate = props.coordinate,\n offset = props.offset,\n position = props.position,\n viewBox = props.viewBox;\n var handleKeyDown = useCallback(function (event) {\n if (event.key === 'Escape') {\n setDismissed(true);\n setDismissedAtCoordinate(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n x: coordinate === null || coordinate === void 0 ? void 0 : coordinate.x,\n y: coordinate === null || coordinate === void 0 ? void 0 : coordinate.y\n });\n });\n }\n }, [coordinate === null || coordinate === void 0 ? void 0 : coordinate.x, coordinate === null || coordinate === void 0 ? void 0 : coordinate.y]);\n useEffect(function () {\n var updateBBox = function updateBBox() {\n if (dismissed) {\n document.removeEventListener('keydown', handleKeyDown);\n if ((coordinate === null || coordinate === void 0 ? void 0 : coordinate.x) !== dismissedAtCoordinate.x || (coordinate === null || coordinate === void 0 ? void 0 : coordinate.y) !== dismissedAtCoordinate.y) {\n setDismissed(false);\n }\n } else {\n document.addEventListener('keydown', handleKeyDown);\n }\n if (wrapperNode.current && wrapperNode.current.getBoundingClientRect) {\n var box = wrapperNode.current.getBoundingClientRect();\n if (Math.abs(box.width - boxWidth) > EPS || Math.abs(box.height - boxHeight) > EPS) {\n setBoxWidth(box.width);\n setBoxHeight(box.height);\n }\n } else if (boxWidth !== -1 || boxHeight !== -1) {\n setBoxWidth(-1);\n setBoxHeight(-1);\n }\n };\n updateBBox();\n return function () {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [boxHeight, boxWidth, coordinate, dismissed, dismissedAtCoordinate.x, dismissedAtCoordinate.y, handleKeyDown]);\n var getTranslate = function getTranslate(_ref) {\n var key = _ref.key,\n tooltipDimension = _ref.tooltipDimension,\n viewBoxDimension = _ref.viewBoxDimension;\n if (position && isNumber(position[key])) {\n return position[key];\n }\n var negative = coordinate[key] - tooltipDimension - offset;\n var positive = coordinate[key] + offset;\n if (allowEscapeViewBox !== null && allowEscapeViewBox !== void 0 && allowEscapeViewBox[key]) {\n return reverseDirection[key] ? negative : positive;\n }\n if (reverseDirection !== null && reverseDirection !== void 0 && reverseDirection[key]) {\n var _tooltipBoundary = negative;\n var _viewBoxBoundary = viewBox[key];\n if (_tooltipBoundary < _viewBoxBoundary) {\n return Math.max(positive, viewBox[key]);\n }\n return Math.max(negative, viewBox[key]);\n }\n var tooltipBoundary = positive + tooltipDimension;\n var viewBoxBoundary = viewBox[key] + viewBoxDimension;\n if (tooltipBoundary > viewBoxBoundary) {\n return Math.max(negative, viewBox[key]);\n }\n return Math.max(positive, viewBox[key]);\n };\n var payload = props.payload,\n payloadUniqBy = props.payloadUniqBy,\n filterNull = props.filterNull,\n active = props.active,\n wrapperStyle = props.wrapperStyle,\n useTranslate3d = props.useTranslate3d,\n isAnimationActive = props.isAnimationActive,\n animationDuration = props.animationDuration,\n animationEasing = props.animationEasing;\n var finalPayload = getUniqPayload(payloadUniqBy, filterNull && payload && payload.length ? payload.filter(function (entry) {\n return !_isNil(entry.value);\n }) : payload);\n var hasPayload = finalPayload && finalPayload.length;\n var content = props.content;\n var outerStyle = _objectSpread({\n pointerEvents: 'none',\n visibility: !dismissed && active && hasPayload ? 'visible' : 'hidden',\n position: 'absolute',\n top: 0,\n left: 0\n }, wrapperStyle);\n var translateX, translateY;\n if (position && isNumber(position.x) && isNumber(position.y)) {\n translateX = position.x;\n translateY = position.y;\n } else if (boxWidth > 0 && boxHeight > 0 && coordinate) {\n translateX = getTranslate({\n key: 'x',\n tooltipDimension: boxWidth,\n viewBoxDimension: viewBox.width\n });\n translateY = getTranslate({\n key: 'y',\n tooltipDimension: boxHeight,\n viewBoxDimension: viewBox.height\n });\n } else {\n outerStyle.visibility = 'hidden';\n }\n outerStyle = _objectSpread(_objectSpread({}, translateStyle({\n transform: useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n })), outerStyle);\n if (isAnimationActive && active) {\n outerStyle = _objectSpread(_objectSpread({}, translateStyle({\n transition: \"transform \".concat(animationDuration, \"ms \").concat(animationEasing)\n })), outerStyle);\n }\n var cls = classNames(CLS_PREFIX, (_classNames = {}, _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-right\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-left\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-bottom\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-top\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y), _classNames));\n return (\n /*#__PURE__*/\n // ESLint is disabled to allow listening to the `Escape` key. Refer to\n // https://github.com/recharts/recharts/pull/2925\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n React.createElement(\"div\", {\n tabIndex: -1,\n role: \"dialog\",\n className: cls,\n style: outerStyle,\n ref: wrapperNode\n }, renderContent(content, _objectSpread(_objectSpread({}, props), {}, {\n payload: finalPayload\n })))\n );\n};\n\n// needs to be set so that renderByOrder can find the correct handler function\nTooltip.displayName = 'Tooltip';\n\n/**\n * needs to be set so that renderByOrder can access an have default values for\n * children.props when there are no props set by the consumer\n * doesn't work if using default parameters\n */\nTooltip.defaultProps = tooltipDefaultProps;","var _excluded = [\"children\", \"className\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Layer\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/ReactUtils';\nexport var Layer = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var children = props.children,\n className = props.className,\n others = _objectWithoutProperties(props, _excluded);\n var layerClass = classNames('recharts-layer', className);\n return /*#__PURE__*/React.createElement(\"g\", _extends({\n className: layerClass\n }, filterProps(others, true), {\n ref: ref\n }), children);\n});","var _excluded = [\"children\", \"width\", \"height\", \"viewBox\", \"className\", \"style\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Surface\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/ReactUtils';\nexport function Surface(props) {\n var children = props.children,\n width = props.width,\n height = props.height,\n viewBox = props.viewBox,\n className = props.className,\n style = props.style,\n others = _objectWithoutProperties(props, _excluded);\n var svgView = viewBox || {\n width: width,\n height: height,\n x: 0,\n y: 0\n };\n var layerClass = classNames('recharts-surface', className);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, filterProps(others, true, 'svg'), {\n className: layerClass,\n width: width,\n height: height,\n style: style,\n viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height)\n }), /*#__PURE__*/React.createElement(\"title\", null, props.title), /*#__PURE__*/React.createElement(\"desc\", null, props.desc), children);\n}","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import _isArray from \"lodash/isArray\";\nimport _upperFirst from \"lodash/upperFirst\";\nimport _isFunction from \"lodash/isFunction\";\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * @fileOverview Curve\n */\nimport React from 'react';\nimport { line as shapeLine, area as shapeArea, curveBasisClosed, curveBasisOpen, curveBasis, curveBumpX, curveBumpY, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'victory-vendor/d3-shape';\nimport classNames from 'classnames';\nimport { adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { isNumber } from '../util/DataUtils';\nvar CURVE_FACTORIES = {\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveBasis: curveBasis,\n curveBumpX: curveBumpX,\n curveBumpY: curveBumpY,\n curveLinearClosed: curveLinearClosed,\n curveLinear: curveLinear,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\nvar defined = function defined(p) {\n return p.x === +p.x && p.y === +p.y;\n};\nvar getX = function getX(p) {\n return p.x;\n};\nvar getY = function getY(p) {\n return p.y;\n};\nvar getCurveFactory = function getCurveFactory(type, layout) {\n if (_isFunction(type)) {\n return type;\n }\n var name = \"curve\".concat(_upperFirst(type));\n if ((name === 'curveMonotone' || name === 'curveBump') && layout) {\n return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n }\n return CURVE_FACTORIES[name] || curveLinear;\n};\n/**\n * Calculate the path of curve\n * @return {String} path\n */\nvar getPath = function getPath(_ref) {\n var type = _ref.type,\n points = _ref.points,\n baseLine = _ref.baseLine,\n layout = _ref.layout,\n connectNulls = _ref.connectNulls;\n var curveFactory = getCurveFactory(type, layout);\n var formatPoints = connectNulls ? points.filter(function (entry) {\n return defined(entry);\n }) : points;\n var lineFunction;\n if (_isArray(baseLine)) {\n var formatBaseLine = connectNulls ? baseLine.filter(function (base) {\n return defined(base);\n }) : baseLine;\n var areaPoints = formatPoints.map(function (entry, index) {\n return _objectSpread(_objectSpread({}, entry), {}, {\n base: formatBaseLine[index]\n });\n });\n if (layout === 'vertical') {\n lineFunction = shapeArea().y(getY).x1(getX).x0(function (d) {\n return d.base.x;\n });\n } else {\n lineFunction = shapeArea().x(getX).y1(getY).y0(function (d) {\n return d.base.y;\n });\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(areaPoints);\n }\n if (layout === 'vertical' && isNumber(baseLine)) {\n lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);\n } else if (isNumber(baseLine)) {\n lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = shapeLine().x(getX).y(getY);\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(formatPoints);\n};\nexport var Curve = function Curve(props) {\n var className = props.className,\n points = props.points,\n path = props.path,\n pathRef = props.pathRef;\n if ((!points || !points.length) && !path) {\n return null;\n }\n var realPath = points && points.length ? getPath(props) : path;\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props), adaptEventHandlers(props), {\n className: classNames('recharts-curve', className),\n d: realPath,\n ref: pathRef\n }));\n};\nCurve.defaultProps = {\n type: 'linear',\n points: [],\n connectNulls: false\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Dot\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nexport var Dot = function Dot(props) {\n var cx = props.cx,\n cy = props.cy,\n r = props.r,\n className = props.className;\n var layerClass = classNames('recharts-dot', className);\n if (cx === +cx && cy === +cy && r === +r) {\n return /*#__PURE__*/React.createElement(\"circle\", _extends({}, filterProps(props), adaptEventHandlers(props), {\n className: layerClass,\n cx: cx,\n cy: cy,\n r: r\n }));\n }\n return null;\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/**\n * @fileOverview Rectangle\n */\nimport React, { useLayoutEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/ReactUtils';\nvar getRectanglePath = function getRectanglePath(x, y, width, height, radius) {\n var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n var ySign = height >= 0 ? 1 : -1;\n var xSign = width >= 0 ? 1 : -1;\n var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n var path;\n if (maxRadius > 0 && radius instanceof Array) {\n var newRadius = [0, 0, 0, 0];\n for (var i = 0, len = 4; i < len; i++) {\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n if (newRadius[0] > 0) {\n path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n }\n path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n if (newRadius[1] > 0) {\n path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n }\n path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n if (newRadius[2] > 0) {\n path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n }\n path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n if (newRadius[3] > 0) {\n path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n }\n path += 'Z';\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n var _newRadius = Math.min(maxRadius, radius);\n path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n } else {\n path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n }\n return path;\n};\nexport var isInRectangle = function isInRectangle(point, rect) {\n if (!point || !rect) {\n return false;\n }\n var px = point.x,\n py = point.y;\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n var minX = Math.min(x, x + width);\n var maxX = Math.max(x, x + width);\n var minY = Math.min(y, y + height);\n var maxY = Math.max(y, y + height);\n return px >= minX && px <= maxX && py >= minY && py <= maxY;\n }\n return false;\n};\nexport var Rectangle = function Rectangle(props) {\n var pathRef = useRef();\n var _useState = useState(-1),\n _useState2 = _slicedToArray(_useState, 2),\n totalLength = _useState2[0],\n setTotalLength = _useState2[1];\n useLayoutEffect(function () {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n var pathTotalLength = pathRef.current.getTotalLength();\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }, []);\n var x = props.x,\n y = props.y,\n width = props.width,\n height = props.height,\n radius = props.radius,\n className = props.className;\n var animationEasing = props.animationEasing,\n animationDuration = props.animationDuration,\n animationBegin = props.animationBegin,\n isAnimationActive = props.isAnimationActive,\n isUpdateAnimationActive = props.isUpdateAnimationActive;\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n var layerClass = classNames('recharts-rectangle', className);\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: getRectanglePath(x, y, width, height, radius)\n }));\n }\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n to: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function (_ref) {\n var currWidth = _ref.width,\n currHeight = _ref.height,\n currX = _ref.x,\n currY = _ref.y;\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: getRectanglePath(currX, currY, currWidth, currHeight, radius),\n ref: pathRef\n })));\n });\n};\nRectangle.defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n // The radius of border\n // The radius of four corners when radius is a number\n // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n radius: 0,\n isAnimationActive: false,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Sector\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/ReactUtils';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n return sign * deltaAngle;\n};\nvar getTangentCircle = function getTangentCircle(_ref) {\n var cx = _ref.cx,\n cy = _ref.cy,\n radius = _ref.radius,\n angle = _ref.angle,\n sign = _ref.sign,\n isExternal = _ref.isExternal,\n cornerRadius = _ref.cornerRadius,\n cornerIsExternal = _ref.cornerIsExternal;\n var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n var theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n var center = polarToCartesian(cx, cy, centerRadius, centerAngle);\n // The coordinate of point which is tangent to the circle\n var circleTangency = polarToCartesian(cx, cy, radius, centerAngle);\n // The coordinate of point which is tangent to the radius line\n var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n var lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n return {\n center: center,\n circleTangency: circleTangency,\n lineTangency: lineTangency,\n theta: theta\n };\n};\nvar getSectorPath = function getSectorPath(_ref2) {\n var cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var angle = getDeltaAngle(startAngle, endAngle);\n\n // When the angle of sector equals to 360, star point and end point coincide\n var tempEndAngle = startAngle + angle;\n var outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n var outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n \");\n if (innerRadius > 0) {\n var innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n var innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n } else {\n path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n }\n return path;\n};\nvar getSectorWithCorner = function getSectorWithCorner(_ref3) {\n var cx = _ref3.cx,\n cy = _ref3.cy,\n innerRadius = _ref3.innerRadius,\n outerRadius = _ref3.outerRadius,\n cornerRadius = _ref3.cornerRadius,\n forceCornerRadius = _ref3.forceCornerRadius,\n cornerIsExternal = _ref3.cornerIsExternal,\n startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var sign = mathSign(endAngle - startAngle);\n var _getTangentCircle = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: startAngle,\n sign: sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n soct = _getTangentCircle.circleTangency,\n solt = _getTangentCircle.lineTangency,\n sot = _getTangentCircle.theta;\n var _getTangentCircle2 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: endAngle,\n sign: -sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eoct = _getTangentCircle2.circleTangency,\n eolt = _getTangentCircle2.lineTangency,\n eot = _getTangentCircle2.theta;\n var outerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sot - eot;\n if (outerArcAngle < 0) {\n if (forceCornerRadius) {\n return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n \");\n }\n return getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n \");\n if (innerRadius > 0) {\n var _getTangentCircle3 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: startAngle,\n sign: sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n sict = _getTangentCircle3.circleTangency,\n silt = _getTangentCircle3.lineTangency,\n sit = _getTangentCircle3.theta;\n var _getTangentCircle4 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: endAngle,\n sign: -sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eict = _getTangentCircle4.circleTangency,\n eilt = _getTangentCircle4.lineTangency,\n eit = _getTangentCircle4.theta;\n var innerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sit - eit;\n if (innerArcAngle < 0 && cornerRadius === 0) {\n return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n }\n path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n } else {\n path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n }\n return path;\n};\nexport var Sector = function Sector(props) {\n var cx = props.cx,\n cy = props.cy,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n cornerRadius = props.cornerRadius,\n forceCornerRadius = props.forceCornerRadius,\n cornerIsExternal = props.cornerIsExternal,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n className = props.className;\n if (outerRadius < innerRadius || startAngle === endAngle) {\n return null;\n }\n var layerClass = classNames('recharts-sector', className);\n var deltaRadius = outerRadius - innerRadius;\n var cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n var path;\n if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n path = getSectorWithCorner({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n cornerRadius: Math.min(cr, deltaRadius / 2),\n forceCornerRadius: forceCornerRadius,\n cornerIsExternal: cornerIsExternal,\n startAngle: startAngle,\n endAngle: endAngle\n });\n } else {\n path = getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: path,\n role: \"img\"\n }));\n};\nSector.defaultProps = {\n cx: 0,\n cy: 0,\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n cornerRadius: 0,\n forceCornerRadius: false,\n cornerIsExternal: false\n};","import _isNil from \"lodash/isNil\";\nimport _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isArray from \"lodash/isArray\";\nvar _excluded = [\"value\", \"background\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * @fileOverview Render a group of bar\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Animate from 'react-smooth';\nimport { Rectangle } from '../shape/Rectangle';\nimport { Layer } from '../container/Layer';\nimport { ErrorBar } from './ErrorBar';\nimport { Cell } from '../component/Cell';\nimport { LabelList } from '../component/LabelList';\nimport { uniqueId, mathSign, interpolateNumber } from '../util/DataUtils';\nimport { filterProps, findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfBar, getValueByDataKey, truncateByDomain, getBaseValueOfBar, findPositionOfBar, getTooltipItem } from '../util/ChartUtils';\nimport { adaptEventsOfChild } from '../util/types';\nexport var Bar = /*#__PURE__*/function (_PureComponent) {\n _inherits(Bar, _PureComponent);\n var _super = _createSuper(Bar);\n function Bar() {\n var _this;\n _classCallCheck(this, Bar);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isAnimationFinished: false\n });\n _defineProperty(_assertThisInitialized(_this), \"id\", uniqueId('recharts-bar-'));\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (onAnimationEnd) {\n onAnimationEnd();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function () {\n var onAnimationStart = _this.props.onAnimationStart;\n _this.setState({\n isAnimationFinished: false\n });\n if (onAnimationStart) {\n onAnimationStart();\n }\n });\n return _this;\n }\n _createClass(Bar, [{\n key: \"renderRectanglesStatically\",\n value: function renderRectanglesStatically(data) {\n var _this2 = this;\n var shape = this.props.shape;\n var baseProps = filterProps(this.props);\n return data && data.map(function (entry, i) {\n var props = _objectSpread(_objectSpread(_objectSpread({}, baseProps), entry), {}, {\n index: i\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-bar-rectangle\"\n }, adaptEventsOfChild(_this2.props, entry, i), {\n key: \"rectangle-\".concat(i) // eslint-disable-line react/no-array-index-key\n }), Bar.renderRectangle(shape, props));\n });\n }\n }, {\n key: \"renderRectanglesWithAnimation\",\n value: function renderRectanglesWithAnimation() {\n var _this3 = this;\n var _this$props = this.props,\n data = _this$props.data,\n layout = _this$props.layout,\n isAnimationActive = _this$props.isAnimationActive,\n animationBegin = _this$props.animationBegin,\n animationDuration = _this$props.animationDuration,\n animationEasing = _this$props.animationEasing,\n animationId = _this$props.animationId;\n var prevData = this.state.prevData;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"bar-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n var stepData = data.map(function (entry, index) {\n var prev = prevData && prevData[index];\n if (prev) {\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n var interpolatorWidth = interpolateNumber(prev.width, entry.width);\n var interpolatorHeight = interpolateNumber(prev.height, entry.height);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t),\n width: interpolatorWidth(t),\n height: interpolatorHeight(t)\n });\n }\n if (layout === 'horizontal') {\n var _interpolatorHeight = interpolateNumber(0, entry.height);\n var h = _interpolatorHeight(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n y: entry.y + entry.height - h,\n height: h\n });\n }\n var interpolator = interpolateNumber(0, entry.width);\n var w = interpolator(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n width: w\n });\n });\n return /*#__PURE__*/React.createElement(Layer, null, _this3.renderRectanglesStatically(stepData));\n });\n }\n }, {\n key: \"renderRectangles\",\n value: function renderRectangles() {\n var _this$props2 = this.props,\n data = _this$props2.data,\n isAnimationActive = _this$props2.isAnimationActive;\n var prevData = this.state.prevData;\n if (isAnimationActive && data && data.length && (!prevData || !_isEqual(prevData, data))) {\n return this.renderRectanglesWithAnimation();\n }\n return this.renderRectanglesStatically(data);\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this4 = this;\n var data = this.props.data;\n var backgroundProps = filterProps(this.props.background);\n return data.map(function (entry, i) {\n var value = entry.value,\n background = entry.background,\n rest = _objectWithoutProperties(entry, _excluded);\n if (!background) {\n return null;\n }\n var props = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, rest), {}, {\n fill: '#eee'\n }, background), backgroundProps), adaptEventsOfChild(_this4.props, entry, i)), {}, {\n index: i,\n key: \"background-bar-\".concat(i),\n className: 'recharts-bar-background-rectangle'\n });\n return Bar.renderRectangle(_this4.props.background, props);\n });\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar(needClip, clipPathId) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props3 = this.props,\n data = _this$props3.data,\n xAxis = _this$props3.xAxis,\n yAxis = _this$props3.yAxis,\n layout = _this$props3.layout,\n children = _this$props3.children;\n var errorBarItems = findAllByType(children, ErrorBar);\n if (!errorBarItems) {\n return null;\n }\n var offset = layout === 'vertical' ? data[0].height / 2 : data[0].width / 2;\n var dataPointFormatter = function dataPointFormatter(dataPoint, dataKey) {\n /**\n * if the value coming from `getComposedData` is an array then this is a stacked bar chart.\n * arr[1] represents end value of the bar since the data is in the form of [startValue, endValue].\n * */\n var value = Array.isArray(dataPoint.value) ? dataPoint.value[1] : dataPoint.value;\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: value,\n errorVal: getValueByDataKey(dataPoint, dataKey)\n };\n };\n var errorBarProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, errorBarProps, errorBarItems.map(function (item, i) {\n return /*#__PURE__*/React.cloneElement(item, {\n key: \"error-bar-\".concat(i),\n // eslint-disable-line react/no-array-index-key\n data: data,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n offset: offset,\n dataPointFormatter: dataPointFormatter\n });\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n hide = _this$props4.hide,\n data = _this$props4.data,\n className = _this$props4.className,\n xAxis = _this$props4.xAxis,\n yAxis = _this$props4.yAxis,\n left = _this$props4.left,\n top = _this$props4.top,\n width = _this$props4.width,\n height = _this$props4.height,\n isAnimationActive = _this$props4.isAnimationActive,\n background = _this$props4.background,\n id = _this$props4.id;\n if (hide || !data || !data.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var layerClass = classNames('recharts-bar', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = _isNil(id) ? this.id : id;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n }))) : null, /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-bar-rectangles\",\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, background ? this.renderBackground() : null, this.renderRectangles()), this.renderErrorBar(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, data));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curData: nextProps.data,\n prevData: prevState.curData\n };\n }\n if (nextProps.data !== prevState.curData) {\n return {\n curData: nextProps.data\n };\n }\n return null;\n }\n }, {\n key: \"renderRectangle\",\n value: function renderRectangle(option, props) {\n var rectangle;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rectangle = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n rectangle = option(props);\n } else {\n rectangle = /*#__PURE__*/React.createElement(Rectangle, props);\n }\n return rectangle;\n }\n }]);\n return Bar;\n}(PureComponent);\n_defineProperty(Bar, \"displayName\", 'Bar');\n_defineProperty(Bar, \"defaultProps\", {\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'rect',\n minPointSize: 0,\n hide: false,\n // data of bar\n data: [],\n layout: 'vertical',\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'ease'\n});\n/**\n * Compose the data of each group\n * @param {Object} props Props for the component\n * @param {Object} item An instance of Bar\n * @param {Array} barPosition The offset and size of each bar\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {Array} stackedData The stacked data of a bar item\n * @return{Array} Composed data\n */\n_defineProperty(Bar, \"getComposedData\", function (_ref2) {\n var props = _ref2.props,\n item = _ref2.item,\n barPosition = _ref2.barPosition,\n bandSize = _ref2.bandSize,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n stackedData = _ref2.stackedData,\n dataStartIndex = _ref2.dataStartIndex,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var pos = findPositionOfBar(barPosition, item);\n if (!pos) {\n return null;\n }\n var layout = props.layout;\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n children = _item$props.children,\n minPointSize = _item$props.minPointSize;\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n var baseValue = getBaseValueOfBar({\n numericAxis: numericAxis\n });\n var cells = findAllByType(children, Cell);\n var rects = displayedData.map(function (entry, index) {\n var value, x, y, width, height, background;\n if (stackedData) {\n value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);\n } else {\n value = getValueByDataKey(entry, dataKey);\n if (!_isArray(value)) {\n value = [baseValue, value];\n }\n }\n if (layout === 'horizontal') {\n var _ref4;\n var _ref3 = [yAxis.scale(value[0]), yAxis.scale(value[1])],\n baseValueScale = _ref3[0],\n currentValueScale = _ref3[1];\n x = getCateCoordinateOfBar({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n y = (_ref4 = currentValueScale !== null && currentValueScale !== void 0 ? currentValueScale : baseValueScale) !== null && _ref4 !== void 0 ? _ref4 : undefined;\n width = pos.size;\n var computedHeight = baseValueScale - currentValueScale;\n height = Number.isNaN(computedHeight) ? 0 : computedHeight;\n background = {\n x: x,\n y: yAxis.y,\n width: width,\n height: yAxis.height\n };\n if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n var delta = mathSign(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n y -= delta;\n height += delta;\n }\n } else {\n var _ref5 = [xAxis.scale(value[0]), xAxis.scale(value[1])],\n _baseValueScale = _ref5[0],\n _currentValueScale = _ref5[1];\n x = _baseValueScale;\n y = getCateCoordinateOfBar({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n width = _currentValueScale - _baseValueScale;\n height = pos.size;\n background = {\n x: xAxis.x,\n y: y,\n width: xAxis.width,\n height: height\n };\n if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n var _delta = mathSign(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n width += _delta;\n }\n }\n return _objectSpread(_objectSpread(_objectSpread({}, entry), {}, {\n x: x,\n y: y,\n width: width,\n height: height,\n value: stackedData ? value : value[1],\n payload: entry,\n background: background\n }, cells && cells[index] && cells[index].props), {}, {\n tooltipPayload: [getTooltipItem(item, entry)],\n tooltipPosition: {\n x: x + width / 2,\n y: y + height / 2\n }\n });\n });\n return _objectSpread({\n data: rects,\n layout: layout\n }, offset);\n});","import _every from \"lodash/every\";\nimport _mapValues from \"lodash/mapValues\";\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nimport { getPercentValue } from './DataUtils';\nimport { Bar } from '../cartesian/Bar';\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {String} axisType The type of axes, x-axis or y-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height,\n layout = props.layout,\n children = props.children;\n var ids = Object.keys(axisMap);\n var steps = {\n left: offset.left,\n leftMirror: offset.left,\n right: width - offset.right,\n rightMirror: width - offset.right,\n top: offset.top,\n topMirror: offset.top,\n bottom: height - offset.bottom,\n bottomMirror: height - offset.bottom\n };\n var hasBar = !!findChildByType(children, Bar);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var orientation = axis.orientation,\n domain = axis.domain,\n _axis$padding = axis.padding,\n padding = _axis$padding === void 0 ? {} : _axis$padding,\n mirror = axis.mirror,\n reversed = axis.reversed;\n var offsetKey = \"\".concat(orientation).concat(mirror ? 'Mirror' : '');\n var calculatedPadding, range, x, y, needSpace;\n if (axis.type === 'number' && (axis.padding === 'gap' || axis.padding === 'no-gap')) {\n var diff = domain[1] - domain[0];\n var smallestDistanceBetweenValues = Infinity;\n var sortedValues = axis.categoricalDomain.sort();\n sortedValues.forEach(function (value, index) {\n if (index > 0) {\n smallestDistanceBetweenValues = Math.min((value || 0) - (sortedValues[index - 1] || 0), smallestDistanceBetweenValues);\n }\n });\n var smallestDistanceInPercent = smallestDistanceBetweenValues / diff;\n var rangeWidth = axis.layout === 'vertical' ? offset.height : offset.width;\n if (axis.padding === 'gap') {\n calculatedPadding = smallestDistanceInPercent * rangeWidth / 2;\n }\n if (axis.padding === 'no-gap') {\n var gap = getPercentValue(props.barCategoryGap, smallestDistanceInPercent * rangeWidth);\n var halfBand = smallestDistanceInPercent * rangeWidth / 2;\n calculatedPadding = halfBand - gap - (halfBand - gap) / rangeWidth * gap;\n }\n }\n if (axisType === 'xAxis') {\n range = [offset.left + (padding.left || 0) + (calculatedPadding || 0), offset.left + offset.width - (padding.right || 0) - (calculatedPadding || 0)];\n } else if (axisType === 'yAxis') {\n range = layout === 'horizontal' ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)] : [offset.top + (padding.top || 0) + (calculatedPadding || 0), offset.top + offset.height - (padding.bottom || 0) - (calculatedPadding || 0)];\n } else {\n range = axis.range;\n }\n if (reversed) {\n range = [range[1], range[0]];\n }\n var _parseScale = parseScale(axis, chartName, hasBar),\n scale = _parseScale.scale,\n realScaleType = _parseScale.realScaleType;\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n if (axisType === 'xAxis') {\n needSpace = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n x = offset.left;\n y = steps[offsetKey] - needSpace * axis.height;\n } else if (axisType === 'yAxis') {\n needSpace = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n x = steps[offsetKey] - needSpace * axis.width;\n y = offset.top;\n }\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n realScaleType: realScaleType,\n x: x,\n y: y,\n scale: scale,\n width: axisType === 'xAxis' ? offset.width : axis.width,\n height: axisType === 'yAxis' ? offset.height : axis.height\n });\n finalAxis.bandSize = getBandSizeOfAxis(finalAxis, ticks);\n if (!axis.hide && axisType === 'xAxis') {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.height;\n } else if (!axis.hide) {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.width;\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var rectWithPoints = function rectWithPoints(_ref, _ref2) {\n var x1 = _ref.x,\n y1 = _ref.y;\n var x2 = _ref2.x,\n y2 = _ref2.y;\n return {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1)\n };\n};\n\n/**\n * Compute the x, y, width, and height of a box from two reference points.\n * @param {Object} coords x1, x2, y1, and y2\n * @return {Object} object\n */\nexport var rectWithCoords = function rectWithCoords(_ref3) {\n var x1 = _ref3.x1,\n y1 = _ref3.y1,\n x2 = _ref3.x2,\n y2 = _ref3.y2;\n return rectWithPoints({\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n};\nexport var ScaleHelper = /*#__PURE__*/function () {\n function ScaleHelper(scale) {\n _classCallCheck(this, ScaleHelper);\n this.scale = scale;\n }\n _createClass(ScaleHelper, [{\n key: \"domain\",\n get: function get() {\n return this.scale.domain;\n }\n }, {\n key: \"range\",\n get: function get() {\n return this.scale.range;\n }\n }, {\n key: \"rangeMin\",\n get: function get() {\n return this.range()[0];\n }\n }, {\n key: \"rangeMax\",\n get: function get() {\n return this.range()[1];\n }\n }, {\n key: \"bandwidth\",\n get: function get() {\n return this.scale.bandwidth;\n }\n }, {\n key: \"apply\",\n value: function apply(value) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref4.bandAware,\n position = _ref4.position;\n if (value === undefined) {\n return undefined;\n }\n if (position) {\n switch (position) {\n case 'start':\n {\n return this.scale(value);\n }\n case 'middle':\n {\n var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n case 'end':\n {\n var _offset = this.bandwidth ? this.bandwidth() : 0;\n return this.scale(value) + _offset;\n }\n default:\n {\n return this.scale(value);\n }\n }\n }\n if (bandAware) {\n var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + _offset2;\n }\n return this.scale(value);\n }\n }, {\n key: \"isInRange\",\n value: function isInRange(value) {\n var range = this.range();\n var first = range[0];\n var last = range[range.length - 1];\n return first <= last ? value >= first && value <= last : value >= last && value <= first;\n }\n }], [{\n key: \"create\",\n value: function create(obj) {\n return new ScaleHelper(obj);\n }\n }]);\n return ScaleHelper;\n}();\n_defineProperty(ScaleHelper, \"EPS\", 1e-4);\nexport var createLabeledScales = function createLabeledScales(options) {\n var scales = Object.keys(options).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, ScaleHelper.create(options[key])));\n }, {});\n return _objectSpread(_objectSpread({}, scales), {}, {\n apply: function apply(coord) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref5.bandAware,\n position = _ref5.position;\n return _mapValues(coord, function (value, label) {\n return scales[label].apply(value, {\n bandAware: bandAware,\n position: position\n });\n });\n },\n isInRange: function isInRange(coord) {\n return _every(coord, function (value, label) {\n return scales[label].isInRange(value);\n });\n }\n });\n};\n\n/** Normalizes the angle so that 0 <= angle < 180.\n * @param {number} angle Angle in degrees.\n * @return {number} the normalized angle with a value of at least 0 and never greater or equal to 180. */\nexport function normalizeAngle(angle) {\n return (angle % 180 + 180) % 180;\n}\n\n/** Calculates the width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n * @param {Object} size Width and height of the text in a horizontal position.\n * @param {number} angle Angle in degrees in which the text is displayed.\n * @return {number} The width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n */\nexport var getAngledRectangleWidth = function getAngledRectangleWidth(_ref6) {\n var width = _ref6.width,\n height = _ref6.height;\n var angle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Ensure angle is >= 0 && < 180\n var normalizedAngle = normalizeAngle(angle);\n var angleRadians = normalizedAngle * Math.PI / 180;\n\n /* Depending on the height and width of the rectangle, we may need to use different formulas to calculate the angled\n * width. This threshold defines when each formula should kick in. */\n var angleThreshold = Math.atan(height / width);\n var angledWidth = angleRadians > angleThreshold && angleRadians < Math.PI - angleThreshold ? height / Math.sin(angleRadians) : width / Math.cos(angleRadians);\n return Math.abs(angledWidth);\n};","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value†part that can be\n // grouped, and fractional or exponential “suffix†part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar identity = function identity(i) {\n return i;\n};\n\nexport var PLACE_HOLDER = {\n '@@functional/placeholder': true\n};\n\nvar isPlaceHolder = function isPlaceHolder(val) {\n return val === PLACE_HOLDER;\n};\n\nvar curry0 = function curry0(fn) {\n return function _curried() {\n if (arguments.length === 0 || arguments.length === 1 && isPlaceHolder(arguments.length <= 0 ? undefined : arguments[0])) {\n return _curried;\n }\n\n return fn.apply(void 0, arguments);\n };\n};\n\nvar curryN = function curryN(n, fn) {\n if (n === 1) {\n return fn;\n }\n\n return curry0(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var argsLength = args.filter(function (arg) {\n return arg !== PLACE_HOLDER;\n }).length;\n\n if (argsLength >= n) {\n return fn.apply(void 0, args);\n }\n\n return curryN(n - argsLength, curry0(function () {\n for (var _len2 = arguments.length, restArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n restArgs[_key2] = arguments[_key2];\n }\n\n var newArgs = args.map(function (arg) {\n return isPlaceHolder(arg) ? restArgs.shift() : arg;\n });\n return fn.apply(void 0, _toConsumableArray(newArgs).concat(restArgs));\n }));\n });\n};\n\nexport var curry = function curry(fn) {\n return curryN(fn.length, fn);\n};\nexport var range = function range(begin, end) {\n var arr = [];\n\n for (var i = begin; i < end; ++i) {\n arr[i - begin] = i;\n }\n\n return arr;\n};\nexport var map = curry(function (fn, arr) {\n if (Array.isArray(arr)) {\n return arr.map(fn);\n }\n\n return Object.keys(arr).map(function (key) {\n return arr[key];\n }).map(fn);\n});\nexport var compose = function compose() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n if (!args.length) {\n return identity;\n }\n\n var fns = args.reverse(); // first function can receive multiply arguments\n\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\nexport var reverse = function reverse(arr) {\n if (Array.isArray(arr)) {\n return arr.reverse();\n } // can be string\n\n\n return arr.split('').reverse.join('');\n};\nexport var memoize = function memoize(fn) {\n var lastArgs = null;\n var lastResult = null;\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n if (lastArgs && args.every(function (val, i) {\n return val === lastArgs[i];\n })) {\n return lastResult;\n }\n\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n return lastResult;\n };\n};","/**\n * @fileOverview 一些公用的è¿ç®—方法\n * @author xile611\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { curry } from './utils';\n/**\n * 获å–数值的ä½æ•°\n * å…¶ä¸ç»å¯¹å€¼å±žäºŽåŒºé—´[0.1, 1), 得到的值为0\n * ç»å¯¹å€¼å±žäºŽåŒºé—´[0.01, 0.1),得到的ä½æ•°ä¸º -1\n * ç»å¯¹å€¼å±žäºŽåŒºé—´[0.001, 0.01),得到的ä½æ•°ä¸º -2\n *\n * @param {Number} value 数值\n * @return {Integer} ä½æ•°\n */\n\nfunction getDigitCount(value) {\n var result;\n\n if (value === 0) {\n result = 1;\n } else {\n result = Math.floor(new Decimal(value).abs().log(10).toNumber()) + 1;\n }\n\n return result;\n}\n/**\n * 按照固定的æ¥é•¿èŽ·å–[start, end)这个区间的数æ®\n * 并且需è¦å¤„ç†js计算精度的问题\n *\n * @param {Decimal} start 起点\n * @param {Decimal} end 终点,ä¸åŒ…å«è¯¥å€¼\n * @param {Decimal} step æ¥é•¿\n * @return {Array} 若干数值\n */\n\n\nfunction rangeStep(start, end, step) {\n var num = new Decimal(start);\n var i = 0;\n var result = []; // magic number to prevent infinite loop\n\n while (num.lt(end) && i < 100000) {\n result.push(num.toNumber());\n num = num.add(step);\n i++;\n }\n\n return result;\n}\n/**\n * 对数值进行线性æ’值\n *\n * @param {Number} a 定义域的æžç‚¹\n * @param {Number} b 定义域的æžç‚¹\n * @param {Number} t [0, 1]内的æŸä¸ªå€¼\n * @return {Number} 定义域内的æŸä¸ªå€¼\n */\n\n\nvar interpolateNumber = curry(function (a, b, t) {\n var newA = +a;\n var newB = +b;\n return newA + t * (newB - newA);\n});\n/**\n * 线性æ’值的逆è¿ç®—\n *\n * @param {Number} a 定义域的æžç‚¹\n * @param {Number} b 定义域的æžç‚¹\n * @param {Number} x å¯ä»¥è®¤ä¸ºæ˜¯æ’值åŽçš„一个输出值\n * @return {Number} 当x在 a ~ b这个范围内时,返回值属于[0, 1]\n */\n\nvar uninterpolateNumber = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return (x - a) / diff;\n});\n/**\n * 线性æ’值的逆è¿ç®—,并且有截æ–çš„æ“作\n *\n * @param {Number} a 定义域的æžç‚¹\n * @param {Number} b 定义域的æžç‚¹\n * @param {Number} x å¯ä»¥è®¤ä¸ºæ˜¯æ’值åŽçš„一个输出值\n * @return {Number} 当x在 a ~ b这个区间内时,返回值属于[0, 1],\n * 当xä¸åœ¨ a ~ b这个区间时,会截æ–到 a ~ b 这个区间\n */\n\nvar uninterpolateTruncation = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return Math.max(0, Math.min(1, (x - a) / diff));\n});\nexport default {\n rangeStep: rangeStep,\n getDigitCount: getDigitCount,\n interpolateNumber: interpolateNumber,\n uninterpolateNumber: uninterpolateNumber,\n uninterpolateTruncation: uninterpolateTruncation\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * @fileOverview calculate tick values of scale\n * @author xile611, arcthur\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { compose, range, memoize, map, reverse } from './util/utils';\nimport Arithmetic from './util/arithmetic';\n/**\n * Calculate a interval of a minimum value and a maximum value\n *\n * @param {Number} min The minimum value\n * @param {Number} max The maximum value\n * @return {Array} An interval\n */\n\nfunction getValidInterval(_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n min = _ref2[0],\n max = _ref2[1];\n\n var validMin = min,\n validMax = max; // exchange\n\n if (min > max) {\n validMin = max;\n validMax = min;\n }\n\n return [validMin, validMax];\n}\n/**\n * Calculate the step which is easy to understand between ticks, like 10, 20, 25\n *\n * @param {Decimal} roughStep The rough step calculated by deviding the\n * difference by the tickCount\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Integer} correctionFactor A correction factor\n * @return {Decimal} The step which is easy to understand between two ticks\n */\n\n\nfunction getFormatStep(roughStep, allowDecimals, correctionFactor) {\n if (roughStep.lte(0)) {\n return new Decimal(0);\n }\n\n var digitCount = Arithmetic.getDigitCount(roughStep.toNumber()); // The ratio between the rough step and the smallest number which has a bigger\n // order of magnitudes than the rough step\n\n var digitCountValue = new Decimal(10).pow(digitCount);\n var stepRatio = roughStep.div(digitCountValue); // When an integer and a float multiplied, the accuracy of result may be wrong\n\n var stepRatioScale = digitCount !== 1 ? 0.05 : 0.1;\n var amendStepRatio = new Decimal(Math.ceil(stepRatio.div(stepRatioScale).toNumber())).add(correctionFactor).mul(stepRatioScale);\n var formatStep = amendStepRatio.mul(digitCountValue);\n return allowDecimals ? formatStep : new Decimal(Math.ceil(formatStep));\n}\n/**\n * calculate the ticks when the minimum value equals to the maximum value\n *\n * @param {Number} value The minimum valuue which is also the maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickOfSingleValue(value, tickCount, allowDecimals) {\n var step = 1; // calculate the middle value of ticks\n\n var middle = new Decimal(value);\n\n if (!middle.isint() && allowDecimals) {\n var absVal = Math.abs(value);\n\n if (absVal < 1) {\n // The step should be a float number when the difference is smaller than 1\n step = new Decimal(10).pow(Arithmetic.getDigitCount(value) - 1);\n middle = new Decimal(Math.floor(middle.div(step).toNumber())).mul(step);\n } else if (absVal > 1) {\n // Return the maximum integer which is smaller than 'value' when 'value' is greater than 1\n middle = new Decimal(Math.floor(value));\n }\n } else if (value === 0) {\n middle = new Decimal(Math.floor((tickCount - 1) / 2));\n } else if (!allowDecimals) {\n middle = new Decimal(Math.floor(value));\n }\n\n var middleIndex = Math.floor((tickCount - 1) / 2);\n var fn = compose(map(function (n) {\n return middle.add(new Decimal(n - middleIndex).mul(step)).toNumber();\n }), range);\n return fn(0, tickCount);\n}\n/**\n * Calculate the step\n *\n * @param {Number} min The minimum value of an interval\n * @param {Number} max The maximum value of an interval\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Number} correctionFactor A correction factor\n * @return {Object} The step, minimum value of ticks, maximum value of ticks\n */\n\n\nfunction calculateStep(min, max, tickCount, allowDecimals) {\n var correctionFactor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\n // dirty hack (for recharts' test)\n if (!Number.isFinite((max - min) / (tickCount - 1))) {\n return {\n step: new Decimal(0),\n tickMin: new Decimal(0),\n tickMax: new Decimal(0)\n };\n } // The step which is easy to understand between two ticks\n\n\n var step = getFormatStep(new Decimal(max).sub(min).div(tickCount - 1), allowDecimals, correctionFactor); // A medial value of ticks\n\n var middle; // When 0 is inside the interval, 0 should be a tick\n\n if (min <= 0 && max >= 0) {\n middle = new Decimal(0);\n } else {\n // calculate the middle value\n middle = new Decimal(min).add(max).div(2); // minus modulo value\n\n middle = middle.sub(new Decimal(middle).mod(step));\n }\n\n var belowCount = Math.ceil(middle.sub(min).div(step).toNumber());\n var upCount = Math.ceil(new Decimal(max).sub(middle).div(step).toNumber());\n var scaleCount = belowCount + upCount + 1;\n\n if (scaleCount > tickCount) {\n // When more ticks need to cover the interval, step should be bigger.\n return calculateStep(min, max, tickCount, allowDecimals, correctionFactor + 1);\n }\n\n if (scaleCount < tickCount) {\n // When less ticks can cover the interval, we should add some additional ticks\n upCount = max > 0 ? upCount + (tickCount - scaleCount) : upCount;\n belowCount = max > 0 ? belowCount : belowCount + (tickCount - scaleCount);\n }\n\n return {\n step: step,\n tickMin: middle.sub(new Decimal(belowCount).mul(step)),\n tickMax: middle.add(new Decimal(upCount).mul(step))\n };\n}\n/**\n * Calculate the ticks of an interval, the count of ticks will be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getNiceTickValuesFn(_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n min = _ref4[0],\n max = _ref4[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval = getValidInterval([min, max]),\n _getValidInterval2 = _slicedToArray(_getValidInterval, 2),\n cormin = _getValidInterval2[0],\n cormax = _getValidInterval2[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n var _values = cormax === Infinity ? [cormin].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return Infinity;\n }))) : [].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return -Infinity;\n })), [cormax]);\n\n return min > max ? reverse(_values) : _values;\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n } // Get the step between two ticks\n\n\n var _calculateStep = calculateStep(cormin, cormax, count, allowDecimals),\n step = _calculateStep.step,\n tickMin = _calculateStep.tickMin,\n tickMax = _calculateStep.tickMax;\n\n var values = Arithmetic.rangeStep(tickMin, tickMax.add(new Decimal(0.1).mul(step)), step);\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFn(_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n min = _ref6[0],\n max = _ref6[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval3 = getValidInterval([min, max]),\n _getValidInterval4 = _slicedToArray(_getValidInterval3, 2),\n cormin = _getValidInterval4[0],\n cormax = _getValidInterval4[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n }\n\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var fn = compose(map(function (n) {\n return new Decimal(cormin).add(new Decimal(n).mul(step)).toNumber();\n }), range);\n var values = fn(0, count).filter(function (entry) {\n return entry >= cormin && entry <= cormax;\n });\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed,\n * but the domain will be guaranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFixedDomainFn(_ref7, tickCount) {\n var _ref8 = _slicedToArray(_ref7, 2),\n min = _ref8[0],\n max = _ref8[1];\n\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n // More than two ticks should be return\n var _getValidInterval5 = getValidInterval([min, max]),\n _getValidInterval6 = _slicedToArray(_getValidInterval5, 2),\n cormin = _getValidInterval6[0],\n cormax = _getValidInterval6[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return [cormin];\n }\n\n var count = Math.max(tickCount, 2);\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var values = [].concat(_toConsumableArray(Arithmetic.rangeStep(new Decimal(cormin), new Decimal(cormax).sub(new Decimal(0.99).mul(step)), step)), [cormax]);\n return min > max ? reverse(values) : values;\n}\n\nexport var getNiceTickValues = memoize(getNiceTickValuesFn);\nexport var getTickValues = memoize(getTickValuesFn);\nexport var getTickValuesFixedDomain = memoize(getTickValuesFixedDomainFn);","import _isEqual from \"lodash/isEqual\";\nimport _sortBy from \"lodash/sortBy\";\nimport _upperFirst from \"lodash/upperFirst\";\nimport _isString from \"lodash/isString\";\nimport _isNaN from \"lodash/isNaN\";\nimport _isArray from \"lodash/isArray\";\nimport _max from \"lodash/max\";\nimport _min from \"lodash/min\";\nimport _flatMap from \"lodash/flatMap\";\nimport _isFunction from \"lodash/isFunction\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport * as d3Scales from 'victory-vendor/d3-scale';\nimport { stack as shapeStack, stackOffsetExpand, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderNone } from 'victory-vendor/d3-shape';\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\nimport { ErrorBar } from '../cartesian/ErrorBar';\nimport { Legend } from '../component/Legend';\nimport { findEntryInArray, getPercentValue, isNumber, isNumOrStr, mathSign, uniqueId } from './DataUtils';\nimport { filterProps, findAllByType, findChildByType, getDisplayName } from './ReactUtils';\n// TODO: Cause of circular dependency. Needs refactor.\n// import { RadiusAxisProps, AngleAxisProps } from '../polar/types';\nexport function getValueByDataKey(obj, dataKey, defaultValue) {\n if (_isNil(obj) || _isNil(dataKey)) {\n return defaultValue;\n }\n if (isNumOrStr(dataKey)) {\n return _get(obj, dataKey, defaultValue);\n }\n if (_isFunction(dataKey)) {\n return dataKey(obj);\n }\n return defaultValue;\n}\n/**\n * Get domain of data by key\n * @param {Array} data The data displayed in the chart\n * @param {String} key The unique key of a group of data\n * @param {String} type The type of axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */\nexport function getDomainOfDataByKey(data, key, type, filterNil) {\n var flattenData = _flatMap(data, function (entry) {\n return getValueByDataKey(entry, key);\n });\n if (type === 'number') {\n var domain = flattenData.filter(function (entry) {\n return isNumber(entry) || parseFloat(entry);\n });\n return domain.length ? [_min(domain), _max(domain)] : [Infinity, -Infinity];\n }\n var validateData = filterNil ? flattenData.filter(function (entry) {\n return !_isNil(entry);\n }) : flattenData;\n\n // 支æŒDate类型的xè½´\n return validateData.map(function (entry) {\n return isNumOrStr(entry) || entry instanceof Date ? entry : '';\n });\n}\nexport var calculateActiveTickIndex = function calculateActiveTickIndex(coordinate) {\n var _ticks$length;\n var ticks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var unsortedTicks = arguments.length > 2 ? arguments[2] : undefined;\n var axis = arguments.length > 3 ? arguments[3] : undefined;\n var index = -1;\n var len = (_ticks$length = ticks === null || ticks === void 0 ? void 0 : ticks.length) !== null && _ticks$length !== void 0 ? _ticks$length : 0;\n\n // if there are 1 or less ticks ticks then the active tick is at index 0\n if (len <= 1) {\n return 0;\n }\n if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n var range = axis.range;\n // ticks are distributed in a circle\n for (var i = 0; i < len; i++) {\n var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n var cur = unsortedTicks[i].coordinate;\n var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n var sameDirectionCoord = void 0;\n if (mathSign(cur - before) !== mathSign(after - cur)) {\n var diffInterval = [];\n if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n sameDirectionCoord = after;\n var curInRange = cur + range[1] - range[0];\n diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n } else {\n sameDirectionCoord = before;\n var afterInRange = after + range[1] - range[0];\n diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n }\n var sameInterval = [Math.min(cur, (sameDirectionCoord + cur) / 2), Math.max(cur, (sameDirectionCoord + cur) / 2)];\n if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n index = unsortedTicks[i].index;\n break;\n }\n } else {\n var min = Math.min(before, after);\n var max = Math.max(before, after);\n if (coordinate > (min + cur) / 2 && coordinate <= (max + cur) / 2) {\n index = unsortedTicks[i].index;\n break;\n }\n }\n }\n } else {\n // ticks are distributed in a single direction\n for (var _i = 0; _i < len; _i++) {\n if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n index = ticks[_i].index;\n break;\n }\n }\n }\n return index;\n};\n\n/**\n * Get the main color of each graphic item\n * @param {ReactElement} item A graphic item\n * @return {String} Color\n */\nexport var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n var _ref = item,\n displayName = _ref.type.displayName; // TODO: check if displayName is valid.\n var _item$props = item.props,\n stroke = _item$props.stroke,\n fill = _item$props.fill;\n var result;\n switch (displayName) {\n case 'Line':\n result = stroke;\n break;\n case 'Area':\n case 'Radar':\n result = stroke && stroke !== 'none' ? stroke : fill;\n break;\n default:\n result = fill;\n break;\n }\n return result;\n};\nexport var getLegendProps = function getLegendProps(_ref2) {\n var children = _ref2.children,\n formattedGraphicalItems = _ref2.formattedGraphicalItems,\n legendWidth = _ref2.legendWidth,\n legendContent = _ref2.legendContent;\n var legendItem = findChildByType(children, Legend);\n if (!legendItem) {\n return null;\n }\n var legendData;\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === 'children') {\n legendData = (formattedGraphicalItems || []).reduce(function (result, _ref3) {\n var item = _ref3.item,\n props = _ref3.props;\n var data = props.sectors || props.data || [];\n return result.concat(data.map(function (entry) {\n return {\n type: legendItem.props.iconType || item.props.legendType,\n value: entry.name,\n color: entry.fill,\n payload: entry\n };\n }));\n }, []);\n } else {\n legendData = (formattedGraphicalItems || []).map(function (_ref4) {\n var item = _ref4.item;\n var _item$props2 = item.props,\n dataKey = _item$props2.dataKey,\n name = _item$props2.name,\n legendType = _item$props2.legendType,\n hide = _item$props2.hide;\n return {\n inactive: hide,\n dataKey: dataKey,\n type: legendItem.props.iconType || legendType || 'square',\n color: getMainColorOfGraphicItem(item),\n value: name || dataKey,\n payload: item.props\n };\n });\n }\n return _objectSpread(_objectSpread(_objectSpread({}, legendItem.props), Legend.getWithHeight(legendItem, legendWidth)), {}, {\n payload: legendData,\n item: legendItem\n });\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */\nexport var getBarSizeList = function getBarSizeList(_ref5) {\n var globalSize = _ref5.barSize,\n _ref5$stackGroups = _ref5.stackGroups,\n stackGroups = _ref5$stackGroups === void 0 ? {} : _ref5$stackGroups;\n if (!stackGroups) {\n return {};\n }\n var result = {};\n var numericAxisIds = Object.keys(stackGroups);\n for (var i = 0, len = numericAxisIds.length; i < len; i++) {\n var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n var stackIds = Object.keys(sgs);\n for (var j = 0, sLen = stackIds.length; j < sLen; j++) {\n var _sgs$stackIds$j = sgs[stackIds[j]],\n items = _sgs$stackIds$j.items,\n cateAxisId = _sgs$stackIds$j.cateAxisId;\n var barItems = items.filter(function (item) {\n return getDisplayName(item.type).indexOf('Bar') >= 0;\n });\n if (barItems && barItems.length) {\n var selfSize = barItems[0].props.barSize;\n var cateId = barItems[0].props[cateAxisId];\n if (!result[cateId]) {\n result[cateId] = [];\n }\n result[cateId].push({\n item: barItems[0],\n stackList: barItems.slice(1),\n barSize: _isNil(selfSize) ? globalSize : selfSize\n });\n }\n }\n }\n return result;\n};\n\n/**\n * Calculate the size of each bar and the gap between two bars\n * @param {Number} bandSize The size of each category\n * @param {sizeList} sizeList The size of all groups\n * @param {maxBarSize} maxBarSize The maximum size of bar\n * @return {Number} The size of each bar and the gap between two bars\n */\nexport var getBarPosition = function getBarPosition(_ref6) {\n var barGap = _ref6.barGap,\n barCategoryGap = _ref6.barCategoryGap,\n bandSize = _ref6.bandSize,\n _ref6$sizeList = _ref6.sizeList,\n sizeList = _ref6$sizeList === void 0 ? [] : _ref6$sizeList,\n maxBarSize = _ref6.maxBarSize;\n var len = sizeList.length;\n if (len < 1) return null;\n var realBarGap = getPercentValue(barGap, bandSize, 0, true);\n var result;\n\n // whether or not is barSize setted by user\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n var useFull = false;\n var fullBarSize = bandSize / len;\n var sum = sizeList.reduce(function (res, entry) {\n return res + entry.barSize || 0;\n }, 0);\n sum += (len - 1) * realBarGap;\n if (sum >= bandSize) {\n sum -= (len - 1) * realBarGap;\n realBarGap = 0;\n }\n if (sum >= bandSize && fullBarSize > 0) {\n useFull = true;\n fullBarSize *= 0.9;\n sum = len * fullBarSize;\n }\n var offset = (bandSize - sum) / 2 >> 0;\n var prev = {\n offset: offset - realBarGap,\n size: 0\n };\n result = sizeList.reduce(function (res, entry) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: prev.offset + prev.size + realBarGap,\n size: useFull ? fullBarSize : entry.barSize\n }\n }]);\n prev = newRes[newRes.length - 1].position;\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: prev\n });\n });\n }\n return newRes;\n }, []);\n } else {\n var _offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n result = sizeList.reduce(function (res, entry, i) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size: size\n }\n }]);\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: newRes[newRes.length - 1].position\n });\n });\n }\n return newRes;\n }, []);\n }\n return result;\n};\nexport var appendOffsetOfLegend = function appendOffsetOfLegend(offset, items, props, legendBox) {\n var children = props.children,\n width = props.width,\n margin = props.margin;\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n // const legendHeight = height - (margin.top || 0) - (margin.bottom || 0);\n var legendProps = getLegendProps({\n children: children,\n legendWidth: legendWidth\n });\n var newOffset = offset;\n if (legendProps) {\n var box = legendBox || {};\n var align = legendProps.align,\n verticalAlign = legendProps.verticalAlign,\n layout = legendProps.layout;\n if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'middle') && isNumber(offset[align])) {\n newOffset = _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, align, newOffset[align] + (box.width || 0)));\n }\n if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && isNumber(offset[verticalAlign])) {\n newOffset = _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, verticalAlign, newOffset[verticalAlign] + (box.height || 0)));\n }\n }\n return newOffset;\n};\nvar isErrorBarRelevantForAxis = function isErrorBarRelevantForAxis(layout, axisType, direction) {\n if (_isNil(axisType)) {\n return true;\n }\n if (layout === 'horizontal') {\n return axisType === 'yAxis';\n }\n if (layout === 'vertical') {\n return axisType === 'xAxis';\n }\n if (direction === 'x') {\n return axisType === 'xAxis';\n }\n if (direction === 'y') {\n return axisType === 'yAxis';\n }\n return true;\n};\nexport var getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, layout, axisType) {\n var children = item.props.children;\n var errorBars = findAllByType(children, ErrorBar).filter(function (errorBarChild) {\n return isErrorBarRelevantForAxis(layout, axisType, errorBarChild.props.direction);\n });\n if (errorBars && errorBars.length) {\n var keys = errorBars.map(function (errorBarChild) {\n return errorBarChild.props.dataKey;\n });\n return data.reduce(function (result, entry) {\n var entryValue = getValueByDataKey(entry, dataKey, 0);\n var mainValue = _isArray(entryValue) ? [_min(entryValue), _max(entryValue)] : [entryValue, entryValue];\n var errorDomain = keys.reduce(function (prevErrorArr, k) {\n var errorValue = getValueByDataKey(entry, k, 0);\n var lowerValue = mainValue[0] - Math.abs(_isArray(errorValue) ? errorValue[0] : errorValue);\n var upperValue = mainValue[1] + Math.abs(_isArray(errorValue) ? errorValue[1] : errorValue);\n return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n }, [Infinity, -Infinity]);\n }\n return null;\n};\nexport var parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType, layout) {\n var domains = items.map(function (item) {\n return getDomainOfErrorBars(data, item, dataKey, layout, axisType);\n }).filter(function (entry) {\n return !_isNil(entry);\n });\n if (domains && domains.length) {\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n return null;\n};\n\n/**\n * Get domain of data by the configuration of item element\n * @param {Array} data The data displayed in the chart\n * @param {Array} items The instances of item\n * @param {String} type The type of axis, number - Number Axis, category - Category Axis\n * @param {LayoutType} layout The type of layout\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain\n */\nexport var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, layout, filterNil) {\n var domains = items.map(function (item) {\n var dataKey = item.props.dataKey;\n if (type === 'number' && dataKey) {\n return getDomainOfErrorBars(data, item, dataKey, layout) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n }\n return getDomainOfDataByKey(data, dataKey, type, filterNil);\n });\n if (type === 'number') {\n // Calculate the domain of number axis\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n var tag = {};\n // Get the union set of category axis\n return domains.reduce(function (result, entry) {\n for (var i = 0, len = entry.length; i < len; i++) {\n if (!tag[entry[i]]) {\n tag[entry[i]] = true;\n result.push(entry[i]);\n }\n }\n return result;\n }, []);\n};\nexport var isCategoricalAxis = function isCategoricalAxis(layout, axisType) {\n return layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n};\n\n/**\n * Calculate the Coordinates of grid\n * @param {Array} ticks The ticks in axis\n * @param {Number} min The minimun value of axis\n * @param {Number} max The maximun value of axis\n * @return {Array} Coordinates\n */\nexport var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, min, max) {\n var hasMin, hasMax;\n var values = ticks.map(function (entry) {\n if (entry.coordinate === min) {\n hasMin = true;\n }\n if (entry.coordinate === max) {\n hasMax = true;\n }\n return entry.coordinate;\n });\n if (!hasMin) {\n values.push(min);\n }\n if (!hasMax) {\n values.push(max);\n }\n return values;\n};\n\n/**\n * Get the ticks of an axis\n * @param {Object} axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array} Ticks\n */\nexport var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n if (!axis) return null;\n var scale = axis.scale;\n var duplicateDomain = axis.duplicateDomain,\n type = axis.type,\n range = axis.range;\n var offsetForBand = axis.realScaleType === 'scaleBand' ? scale.bandwidth() / 2 : 2;\n var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n offset = axis.axisType === 'angleAxis' && (range === null || range === void 0 ? void 0 : range.length) >= 2 ? mathSign(range[0] - range[1]) * 2 * offset : offset;\n\n // The ticks set by user should only affect the ticks adjacent to axis line\n if (isGrid && (axis.ticks || axis.niceTicks)) {\n var result = (axis.ticks || axis.niceTicks).map(function (entry) {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n // If the scaleContent is not a number, the coordinate will be NaN.\n // That could be the case for example with a PointScale and a string as domain.\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset: offset\n };\n });\n return result.filter(function (row) {\n return !_isNaN(row.coordinate);\n });\n }\n\n // When axis is a categorial axis, but the type of axis is number or the scale of axis is not \"auto\"\n if (axis.isCategorical && axis.categoricalDomain) {\n return axis.categoricalDomain.map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n index: index,\n offset: offset\n };\n });\n }\n if (scale.ticks && !isAll) {\n return scale.ticks(axis.tickCount).map(function (entry) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n offset: offset\n };\n });\n }\n\n // When axis has duplicated text, serial numbers are used to generate scale\n return scale.domain().map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index: index,\n offset: offset\n };\n });\n};\n\n/**\n * combine the handlers\n * @param {Function} defaultHandler Internal private handler\n * @param {Function} parentHandler Handler function specified in parent component\n * @param {Function} childHandler Handler function specified in child component\n * @return {Function} The combined handler\n */\nexport var combineEventHandlers = function combineEventHandlers(defaultHandler, parentHandler, childHandler) {\n var customizedHandler;\n if (_isFunction(childHandler)) {\n customizedHandler = childHandler;\n } else if (_isFunction(parentHandler)) {\n customizedHandler = parentHandler;\n }\n if (_isFunction(defaultHandler) || customizedHandler) {\n return function (arg1, arg2, arg3, arg4) {\n if (_isFunction(defaultHandler)) {\n defaultHandler(arg1, arg2, arg3, arg4);\n }\n if (_isFunction(customizedHandler)) {\n customizedHandler(arg1, arg2, arg3, arg4);\n }\n };\n }\n return null;\n};\n/**\n * Parse the scale function of axis\n * @param {Object} axis The option of axis\n * @param {String} chartType The displayName of chart\n * @param {Boolean} hasBar if it has a bar\n * @return {Function} The scale function\n */\nexport var parseScale = function parseScale(axis, chartType, hasBar) {\n var scale = axis.scale,\n type = axis.type,\n layout = axis.layout,\n axisType = axis.axisType;\n if (scale === 'auto') {\n if (layout === 'radial' && axisType === 'radiusAxis') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n if (layout === 'radial' && axisType === 'angleAxis') {\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0 || chartType.indexOf('ComposedChart') >= 0 && !hasBar)) {\n return {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n }\n if (type === 'category') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n if (_isString(scale)) {\n var name = \"scale\".concat(_upperFirst(scale));\n return {\n scale: (d3Scales[name] || d3Scales.scalePoint)(),\n realScaleType: d3Scales[name] ? name : 'point'\n };\n }\n return _isFunction(scale) ? {\n scale: scale\n } : {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n};\nvar EPS = 1e-4;\nexport var checkDomainOfScale = function checkDomainOfScale(scale) {\n var domain = scale.domain();\n if (!domain || domain.length <= 2) {\n return;\n }\n var len = domain.length;\n var range = scale.range();\n var min = Math.min(range[0], range[1]) - EPS;\n var max = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n if (first < min || first > max || last < min || last > max) {\n scale.domain([domain[0], domain[len - 1]]);\n }\n};\nexport var findPositionOfBar = function findPositionOfBar(barPosition, child) {\n if (!barPosition) {\n return null;\n }\n for (var i = 0, len = barPosition.length; i < len; i++) {\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\n }\n return null;\n};\nexport var truncateByDomain = function truncateByDomain(value, domain) {\n if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n return value;\n }\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n var result = [value[0], value[1]];\n if (!isNumber(value[0]) || value[0] < min) {\n result[0] = min;\n }\n if (!isNumber(value[1]) || value[1] > max) {\n result[1] = max;\n }\n if (result[0] > max) {\n result[0] = max;\n }\n if (result[1] < min) {\n result[1] = min;\n }\n return result;\n};\n\n/* eslint no-param-reassign: 0 */\nexport var offsetSign = function offsetSign(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n var negative = 0;\n for (var i = 0; i < n; ++i) {\n var value = _isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n /* eslint-disable prefer-destructuring */\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = negative;\n series[i][j][1] = negative + value;\n negative = series[i][j][1];\n }\n /* eslint-enable prefer-destructuring */\n }\n }\n};\n\nexport var offsetPositive = function offsetPositive(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n for (var i = 0; i < n; ++i) {\n var value = _isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n /* eslint-disable prefer-destructuring */\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = 0;\n series[i][j][1] = 0;\n }\n /* eslint-enable prefer-destructuring */\n }\n }\n};\n\nvar STACK_OFFSET_MAP = {\n sign: offsetSign,\n expand: stackOffsetExpand,\n none: stackOffsetNone,\n silhouette: stackOffsetSilhouette,\n wiggle: stackOffsetWiggle,\n positive: offsetPositive\n};\nexport var getStackedData = function getStackedData(data, stackItems, offsetType) {\n var dataKeys = stackItems.map(function (item) {\n return item.props.dataKey;\n });\n var stack = shapeStack().keys(dataKeys).value(function (d, key) {\n return +getValueByDataKey(d, key, 0);\n }).order(stackOrderNone).offset(STACK_OFFSET_MAP[offsetType]);\n return stack(data);\n};\nexport var getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n if (!data) {\n return null;\n }\n\n // reversing items to affect render order (for layering)\n var items = reverseStackOrder ? _items.reverse() : _items;\n var stackGroups = items.reduce(function (result, item) {\n var _item$props3 = item.props,\n stackId = _item$props3.stackId,\n hide = _item$props3.hide;\n if (hide) {\n return result;\n }\n var axisId = item.props[numericAxisId];\n var parentGroup = result[axisId] || {\n hasStack: false,\n stackGroups: {}\n };\n if (isNumOrStr(stackId)) {\n var childGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: []\n };\n childGroup.items.push(item);\n parentGroup.hasStack = true;\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[uniqueId('_stackId_')] = {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: [item]\n };\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, parentGroup));\n }, {});\n return Object.keys(stackGroups).reduce(function (result, axisId) {\n var group = stackGroups[axisId];\n if (group.hasStack) {\n group.stackGroups = Object.keys(group.stackGroups).reduce(function (res, stackId) {\n var g = group.stackGroups[stackId];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, stackId, {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType)\n }));\n }, {});\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, group));\n }, {});\n};\n\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts The configuration of axis\n * @return {Object} null\n */\nexport var getTicksOfScale = function getTicksOfScale(scale, opts) {\n var realScaleType = opts.realScaleType,\n type = opts.type,\n tickCount = opts.tickCount,\n originalDomain = opts.originalDomain,\n allowDecimals = opts.allowDecimals;\n var scaleType = realScaleType || opts.scale;\n if (scaleType !== 'auto' && scaleType !== 'linear') {\n return null;\n }\n if (tickCount && type === 'number' && originalDomain && (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n var domain = scale.domain();\n if (!domain.length) {\n return null;\n }\n var tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n scale.domain([_min(tickValues), _max(tickValues)]);\n return {\n niceTicks: tickValues\n };\n }\n if (tickCount && type === 'number') {\n var _domain = scale.domain();\n var _tickValues = getTickValuesFixedDomain(_domain, tickCount, allowDecimals);\n return {\n niceTicks: _tickValues\n };\n }\n return null;\n};\nexport var getCateCoordinateOfLine = function getCateCoordinateOfLine(_ref7) {\n var axis = _ref7.axis,\n ticks = _ref7.ticks,\n bandSize = _ref7.bandSize,\n entry = _ref7.entry,\n index = _ref7.index,\n dataKey = _ref7.dataKey;\n if (axis.type === 'category') {\n // find coordinate of category axis by the value of category\n if (!axis.allowDuplicatedCategory && axis.dataKey && !_isNil(entry[axis.dataKey])) {\n var matchedTick = findEntryInArray(ticks, 'value', entry[axis.dataKey]);\n if (matchedTick) {\n return matchedTick.coordinate + bandSize / 2;\n }\n }\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n var value = getValueByDataKey(entry, !_isNil(dataKey) ? dataKey : axis.dataKey);\n return !_isNil(value) ? axis.scale(value) : null;\n};\nexport var getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref8) {\n var axis = _ref8.axis,\n ticks = _ref8.ticks,\n offset = _ref8.offset,\n bandSize = _ref8.bandSize,\n entry = _ref8.entry,\n index = _ref8.index;\n if (axis.type === 'category') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n return !_isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nexport var getBaseValueOfBar = function getBaseValueOfBar(_ref9) {\n var numericAxis = _ref9.numericAxis;\n var domain = numericAxis.scale.domain();\n if (numericAxis.type === 'number') {\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n if (min <= 0 && max >= 0) {\n return 0;\n }\n if (max < 0) {\n return max;\n }\n return min;\n }\n return domain[0];\n};\nexport var getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n var stackId = item.props.stackId;\n if (isNumOrStr(stackId)) {\n var group = stackGroups[stackId];\n if (group && group.items.length) {\n var itemIndex = -1;\n for (var i = 0, len = group.items.length; i < len; i++) {\n if (group.items[i] === item) {\n itemIndex = i;\n break;\n }\n }\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n return null;\n};\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n return data.reduce(function (result, entry) {\n return [_min(entry.concat([result[0]]).filter(isNumber)), _max(entry.concat([result[1]]).filter(isNumber))];\n }, [Infinity, -Infinity]);\n};\nexport var getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n return Object.keys(stackGroups).reduce(function (result, stackId) {\n var group = stackGroups[stackId];\n var stackedData = group.stackedData;\n var domain = stackedData.reduce(function (res, entry) {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n }, [Infinity, -Infinity]).map(function (result) {\n return result === Infinity || result === -Infinity ? 0 : result;\n });\n};\nexport var MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n if (_isFunction(specifiedDomain)) {\n return specifiedDomain(dataDomain, allowDataOverflow);\n }\n if (!_isArray(specifiedDomain)) {\n return dataDomain;\n }\n var domain = [];\n\n /* eslint-disable prefer-destructuring */\n if (isNumber(specifiedDomain[0])) {\n domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n domain[0] = dataDomain[0] - value;\n } else if (_isFunction(specifiedDomain[0])) {\n domain[0] = specifiedDomain[0](dataDomain[0]);\n } else {\n domain[0] = dataDomain[0];\n }\n if (isNumber(specifiedDomain[1])) {\n domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n domain[1] = dataDomain[1] + _value;\n } else if (_isFunction(specifiedDomain[1])) {\n domain[1] = specifiedDomain[1](dataDomain[1]);\n } else {\n domain[1] = dataDomain[1];\n }\n /* eslint-enable prefer-destructuring */\n\n return domain;\n};\n\n/**\n * Calculate the size between two category\n * @param {Object} axis The options of axis\n * @param {Array} ticks The ticks of axis\n * @param {Boolean} isBar if items in axis are bars\n * @return {Number} Size\n */\nexport var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks, isBar) {\n if (axis && axis.scale && axis.scale.bandwidth) {\n var bandWidth = axis.scale.bandwidth();\n if (!isBar || bandWidth > 0) {\n return bandWidth;\n }\n }\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = _sortBy(ticks, function (o) {\n return o.coordinate;\n });\n var bandSize = Infinity;\n for (var i = 1, len = orderedTicks.length; i < len; i++) {\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n return bandSize === Infinity ? 0 : bandSize;\n }\n return isBar ? undefined : 0;\n};\n/**\n * parse the domain of a category axis when a domain is specified\n * @param {Array} specifiedDomain The domain specified by users\n * @param {Array} calculatedDomain The domain calculated by dateKey\n * @param {ReactElement} axisChild The axis element\n * @returns {Array} domains\n */\nexport var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n if (!specifiedDomain || !specifiedDomain.length) {\n return calculatedDomain;\n }\n if (_isEqual(specifiedDomain, _get(axisChild, 'type.defaultProps.domain'))) {\n return calculatedDomain;\n }\n return specifiedDomain;\n};\nexport var getTooltipItem = function getTooltipItem(graphicalItem, payload) {\n var _graphicalItem$props = graphicalItem.props,\n dataKey = _graphicalItem$props.dataKey,\n name = _graphicalItem$props.name,\n unit = _graphicalItem$props.unit,\n formatter = _graphicalItem$props.formatter,\n tooltipType = _graphicalItem$props.tooltipType,\n chartType = _graphicalItem$props.chartType;\n return _objectSpread(_objectSpread({}, filterProps(graphicalItem)), {}, {\n dataKey: dataKey,\n unit: unit,\n formatter: formatter,\n name: name || dataKey,\n color: getMainColorOfGraphicItem(graphicalItem),\n value: getValueByDataKey(payload, dataKey),\n type: tooltipType,\n payload: payload,\n chartType: chartType\n });\n};","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { Global } from './Global';\nvar stringCache = {\n widthCache: {},\n cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n position: 'absolute',\n top: '-20000px',\n left: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n whiteSpace: 'pre'\n};\nvar STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'lineHeight', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];\nvar MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\nfunction autoCompleteStyle(name, value) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return \"\".concat(value, \"px\");\n }\n return value;\n}\nfunction camelToMiddleLine(text) {\n var strs = text.split('');\n var formatStrs = strs.reduce(function (result, entry) {\n if (entry === entry.toUpperCase()) {\n return [].concat(_toConsumableArray(result), ['-', entry.toLowerCase()]);\n }\n return [].concat(_toConsumableArray(result), [entry]);\n }, []);\n return formatStrs.join('');\n}\nexport var getStyleString = function getStyleString(style) {\n return Object.keys(style).reduce(function (result, s) {\n return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n }, '');\n};\nexport var getStringSize = function getStringSize(text) {\n var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (text === undefined || text === null || Global.isSsr) {\n return {\n width: 0,\n height: 0\n };\n }\n var str = \"\".concat(text);\n var styleString = getStyleString(style);\n var cacheKey = \"\".concat(str, \"-\").concat(styleString);\n if (stringCache.widthCache[cacheKey]) {\n return stringCache.widthCache[cacheKey];\n }\n try {\n var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n if (!measurementSpan) {\n measurementSpan = document.createElement('span');\n measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);\n measurementSpan.setAttribute('aria-hidden', 'true');\n document.body.appendChild(measurementSpan);\n }\n // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n // https://en.wikipedia.org/wiki/Content_Security_Policy\n var measurementSpanStyle = _objectSpread(_objectSpread({}, SPAN_STYLE), style);\n Object.keys(measurementSpanStyle).map(function (styleKey) {\n measurementSpan.style[styleKey] = measurementSpanStyle[styleKey];\n return styleKey;\n });\n measurementSpan.textContent = str;\n var rect = measurementSpan.getBoundingClientRect();\n var result = {\n width: rect.width,\n height: rect.height\n };\n stringCache.widthCache[cacheKey] = result;\n if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n stringCache.cacheCount = 0;\n stringCache.widthCache = {};\n }\n return result;\n } catch (e) {\n return {\n width: 0,\n height: 0\n };\n }\n};\nexport var getOffset = function getOffset(el) {\n var html = el.ownerDocument.documentElement;\n var box = {\n top: 0,\n left: 0\n };\n\n // If we don't have gBCR, just use 0,0 rather than error\n // BlackBerry 5, iOS 3 (original iPhone)\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n return {\n top: box.top + window.pageYOffset - html.clientTop,\n left: box.left + window.pageXOffset - html.clientLeft\n };\n};\n\n/**\n * Calculate coordinate of cursor in chart\n * @param {Object} event Event object\n * @param {Object} offset The offset of main part in the svg element\n * @return {Object} {chartX, chartY}\n */\nexport var calculateChartCoordinate = function calculateChartCoordinate(event, offset) {\n return {\n chartX: Math.round(event.pageX - offset.left),\n chartY: Math.round(event.pageY - offset.top)\n };\n};","import _get from \"lodash/get\";\nimport _isArray from \"lodash/isArray\";\nimport _isNaN from \"lodash/isNaN\";\nimport _isNumber from \"lodash/isNumber\";\nimport _isString from \"lodash/isString\";\nexport var mathSign = function mathSign(value) {\n if (value === 0) {\n return 0;\n }\n if (value > 0) {\n return 1;\n }\n return -1;\n};\nexport var isPercent = function isPercent(value) {\n return _isString(value) && value.indexOf('%') === value.length - 1;\n};\nexport var isNumber = function isNumber(value) {\n return _isNumber(value) && !_isNaN(value);\n};\nexport var isNumOrStr = function isNumOrStr(value) {\n return isNumber(value) || _isString(value);\n};\nvar idCounter = 0;\nexport var uniqueId = function uniqueId(prefix) {\n var id = ++idCounter;\n return \"\".concat(prefix || '').concat(id);\n};\n\n/**\n * Get percent value of a total value\n * @param {number|string} percent A percent\n * @param {number} totalValue Total value\n * @param {number} defaultValue The value returned when percent is undefined or invalid\n * @param {boolean} validate If set to be true, the result will be validated\n * @return {number} value\n */\nexport var getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (!isNumber(percent) && !_isString(percent)) {\n return defaultValue;\n }\n var value;\n if (isPercent(percent)) {\n var index = percent.indexOf('%');\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n if (_isNaN(value)) {\n value = defaultValue;\n }\n if (validate && value > totalValue) {\n value = totalValue;\n }\n return value;\n};\nexport var getAnyElementOfObject = function getAnyElementOfObject(obj) {\n if (!obj) {\n return null;\n }\n var keys = Object.keys(obj);\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n return null;\n};\nexport var hasDuplicate = function hasDuplicate(ary) {\n if (!_isArray(ary)) {\n return false;\n }\n var len = ary.length;\n var cache = {};\n for (var i = 0; i < len; i++) {\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n return false;\n};\n\n/* @todo consider to rename this function into `getInterpolator` */\nexport var interpolateNumber = function interpolateNumber(numberA, numberB) {\n if (isNumber(numberA) && isNumber(numberB)) {\n return function (t) {\n return numberA + t * (numberB - numberA);\n };\n }\n return function () {\n return numberB;\n };\n};\nexport function findEntryInArray(ary, specifiedKey, specifiedValue) {\n if (!ary || !ary.length) {\n return null;\n }\n return ary.find(function (entry) {\n return entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : _get(entry, specifiedKey)) === specifiedValue;\n });\n}\n\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */\nexport var getLinearRegression = function getLinearRegression(data) {\n if (!data || !data.length) {\n return null;\n }\n var len = data.length;\n var xsum = 0;\n var ysum = 0;\n var xysum = 0;\n var xxsum = 0;\n var xmin = Infinity;\n var xmax = -Infinity;\n var xcurrent = 0;\n var ycurrent = 0;\n for (var i = 0; i < len; i++) {\n xcurrent = data[i].cx || 0;\n ycurrent = data[i].cy || 0;\n xsum += xcurrent;\n ysum += ycurrent;\n xysum += xcurrent * ycurrent;\n xxsum += xcurrent * xcurrent;\n xmin = Math.min(xmin, xcurrent);\n xmax = Math.max(xmax, xcurrent);\n }\n var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n return {\n xmin: xmin,\n xmax: xmax,\n a: a,\n b: (ysum - a * xsum) / len\n };\n};","var parseIsSsrByDefault = function parseIsSsrByDefault() {\n return !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n};\nexport var Global = {\n isSsr: parseIsSsrByDefault(),\n get: function get(key) {\n return Global[key];\n },\n set: function set(key, value) {\n if (typeof key === 'string') {\n Global[key] = value;\n } else {\n var keys = Object.keys(key);\n if (keys && keys.length) {\n keys.forEach(function (k) {\n Global[k] = key[k];\n });\n }\n }\n }\n};","/* eslint no-console: 0 */\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport _isNil from \"lodash/isNil\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nexport var RADIAN = Math.PI / 180;\nexport var degreeToRadian = function degreeToRadian(angle) {\n return angle * Math.PI / 180;\n};\nexport var radianToDegree = function radianToDegree(angleInRadian) {\n return angleInRadian * 180 / Math.PI;\n};\nexport var polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n return {\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius\n };\n};\nexport var getMaxRadius = function getMaxRadius(width, height) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {Object} axisType The type of axes, radius-axis or angle-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height;\n var startAngle = props.startAngle,\n endAngle = props.endAngle;\n var cx = getPercentValue(props.cx, width, width / 2);\n var cy = getPercentValue(props.cy, height, height / 2);\n var maxRadius = getMaxRadius(width, height, offset);\n var innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n var outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n var ids = Object.keys(axisMap);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var domain = axis.domain,\n reversed = axis.reversed;\n var range;\n if (_isNil(axis.range)) {\n if (axisType === 'angleAxis') {\n range = [startAngle, endAngle];\n } else if (axisType === 'radiusAxis') {\n range = [innerRadius, outerRadius];\n }\n if (reversed) {\n range = [range[1], range[0]];\n }\n } else {\n range = axis.range;\n var _range = range;\n var _range2 = _slicedToArray(_range, 2);\n startAngle = _range2[0];\n endAngle = _range2[1];\n }\n var _parseScale = parseScale(axis, chartName),\n realScaleType = _parseScale.realScaleType,\n scale = _parseScale.scale;\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n range: range,\n radius: outerRadius,\n realScaleType: realScaleType,\n scale: scale,\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n var x1 = point.x,\n y1 = point.y;\n var x2 = anotherPoint.x,\n y2 = anotherPoint.y;\n return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nexport var getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n var x = _ref.x,\n y = _ref.y;\n var cx = _ref2.cx,\n cy = _ref2.cy;\n var radius = distanceBetweenPoints({\n x: x,\n y: y\n }, {\n x: cx,\n y: cy\n });\n if (radius <= 0) {\n return {\n radius: radius\n };\n }\n var cos = (x - cx) / radius;\n var angleInRadian = Math.acos(cos);\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n return {\n radius: radius,\n angle: radianToDegree(angleInRadian),\n angleInRadian: angleInRadian\n };\n};\nexport var formatAngleOfSector = function formatAngleOfSector(_ref3) {\n var startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360\n };\n};\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n var startAngle = _ref4.startAngle,\n endAngle = _ref4.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return angle + min * 360;\n};\nexport var inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n var x = _ref5.x,\n y = _ref5.y;\n var _getAngleOfPoint = getAngleOfPoint({\n x: x,\n y: y\n }, sector),\n radius = _getAngleOfPoint.radius,\n angle = _getAngleOfPoint.angle;\n var innerRadius = sector.innerRadius,\n outerRadius = sector.outerRadius;\n if (radius < innerRadius || radius > outerRadius) {\n return false;\n }\n if (radius === 0) {\n return true;\n }\n var _formatAngleOfSector = formatAngleOfSector(sector),\n startAngle = _formatAngleOfSector.startAngle,\n endAngle = _formatAngleOfSector.endAngle;\n var formatAngle = angle;\n var inRange;\n if (startAngle <= endAngle) {\n while (formatAngle > endAngle) {\n formatAngle -= 360;\n }\n while (formatAngle < startAngle) {\n formatAngle += 360;\n }\n inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n } else {\n while (formatAngle > startAngle) {\n formatAngle -= 360;\n }\n while (formatAngle < endAngle) {\n formatAngle += 360;\n }\n inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n }\n if (inRange) {\n return _objectSpread(_objectSpread({}, sector), {}, {\n radius: radius,\n angle: reverseFormatAngleOfSetor(formatAngle, sector)\n });\n }\n return null;\n};","import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isString from \"lodash/isString\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\nimport _isArray from \"lodash/isArray\";\nvar _excluded = [\"children\"],\n _excluded2 = [\"children\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport { Children, isValidElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nimport { FilteredElementKeyMap, SVGElementPropKeys, EventKeys } from './types';\nvar REACT_BROWSER_EVENT_MAP = {\n click: 'onClick',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseover: 'onMouseOver',\n mousemove: 'onMouseMove',\n mouseout: 'onMouseOut',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n touchcancel: 'onTouchCancel',\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchstart: 'onTouchStart'\n};\nexport var SCALE_TYPES = ['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold'];\nexport var LEGEND_TYPES = ['plainline', 'line', 'square', 'rect', 'circle', 'cross', 'diamond', 'star', 'triangle', 'wye', 'none'];\nexport var TOOLTIP_TYPES = ['none'];\n\n/**\n * Get the display name of a component\n * @param {Object} Comp Specified Component\n * @return {String} Display name of Component\n */\nexport var getDisplayName = function getDisplayName(Comp) {\n if (typeof Comp === 'string') {\n return Comp;\n }\n if (!Comp) {\n return '';\n }\n return Comp.displayName || Comp.name || 'Component';\n};\n\n// `toArray` gets called multiple times during the render\n// so we can memoize last invocation (since reference to `children` is the same)\nvar lastChildren = null;\nvar lastResult = null;\nexport var toArray = function toArray(children) {\n if (children === lastChildren && _isArray(lastResult)) {\n return lastResult;\n }\n var result = [];\n Children.forEach(children, function (child) {\n if (_isNil(child)) return;\n if (isFragment(child)) {\n result = result.concat(toArray(child.props.children));\n } else {\n result.push(child);\n }\n });\n lastResult = result;\n lastChildren = children;\n return result;\n};\n\n/*\n * Find and return all matched children by type.\n * `type` must be a React.ComponentType\n */\nexport function findAllByType(children, type) {\n var result = [];\n var types = [];\n if (_isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n toArray(children).forEach(function (child) {\n var childType = _get(child, 'type.displayName') || _get(child, 'type.name');\n if (types.indexOf(childType) !== -1) {\n result.push(child);\n }\n });\n return result;\n}\n\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` must be a React.ComponentType\n */\nexport function findChildByType(children, type) {\n var result = findAllByType(children, type);\n return result && result[0];\n}\n\n/*\n * Create a new array of children excluding the ones matched the type\n */\nexport var withoutType = function withoutType(children, type) {\n var newChildren = [];\n var types;\n if (_isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n toArray(children).forEach(function (child) {\n var displayName = _get(child, 'type.displayName');\n if (displayName && types.indexOf(displayName) !== -1) {\n return;\n }\n newChildren.push(child);\n });\n return newChildren;\n};\n\n/**\n * validate the width and height props of a chart element\n * @param {Object} el A chart element\n * @return {Boolean} true If the props width and height are number, and greater than 0\n */\nexport var validateWidthHeight = function validateWidthHeight(el) {\n if (!el || !el.props) {\n return false;\n }\n var _el$props = el.props,\n width = _el$props.width,\n height = _el$props.height;\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n return false;\n }\n return true;\n};\nvar SVG_TAGS = ['a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColormatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-url', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'lineGradient', 'marker', 'mask', 'metadata', 'missing-glyph', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', 'svg', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'];\nvar isSvgElement = function isSvgElement(child) {\n return child && child.type && _isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n};\nexport var isDotProps = function isDotProps(dot) {\n return dot && _typeof(dot) === 'object' && 'cx' in dot && 'cy' in dot && 'r' in dot;\n};\n\n/**\n * Checks if the property is valid to spread onto an SVG element or onto a specific component\n * @param {unknown} property property value currently being compared\n * @param {string} key property key currently being compared\n * @param {boolean} includeEvents if events are included in spreadable props\n * @param {boolean} svgElementType checks against map of SVG element types to attributes\n * @returns {boolean} is prop valid\n */\nexport var isValidSpreadableProp = function isValidSpreadableProp(property, key, includeEvents, svgElementType) {\n var _FilteredElementKeyMa;\n /**\n * If the svg element type is explicitly included, check against the filtered element key map\n * to determine if there are attributes that should only exist on that element type.\n * @todo Add an internal cjs version of https://github.com/wooorm/svg-element-attributes for full coverage.\n */\n var matchingElementTypeKeys = (_FilteredElementKeyMa = FilteredElementKeyMap === null || FilteredElementKeyMap === void 0 ? void 0 : FilteredElementKeyMap[svgElementType]) !== null && _FilteredElementKeyMa !== void 0 ? _FilteredElementKeyMa : [];\n return !_isFunction(property) && (svgElementType && matchingElementTypeKeys.includes(key) || SVGElementPropKeys.includes(key)) || includeEvents && EventKeys.includes(key);\n};\n\n/**\n * Filter all the svg elements of children\n * @param {Array} children The children of a react element\n * @return {Array} All the svg elements\n */\nexport var filterSvgElements = function filterSvgElements(children) {\n var svgElements = [];\n toArray(children).forEach(function (entry) {\n if (isSvgElement(entry)) {\n svgElements.push(entry);\n }\n });\n return svgElements;\n};\nexport var filterProps = function filterProps(props, includeEvents, svgElementType) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n var inputProps = props;\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n if (!_isObject(inputProps)) {\n return null;\n }\n var out = {};\n\n /**\n * Props are blindly spread onto SVG elements. This loop filters out properties that we don't want to spread.\n * Items filtered out are as follows:\n * - functions in properties that are SVG attributes (functions are included when includeEvents is true)\n * - props that are SVG attributes but don't matched the passed svgElementType\n * - any prop that is not in SVGElementPropKeys (or in EventKeys if includeEvents is true)\n */\n Object.keys(inputProps).forEach(function (key) {\n var _inputProps;\n if (isValidSpreadableProp((_inputProps = inputProps) === null || _inputProps === void 0 ? void 0 : _inputProps[key], key, includeEvents, svgElementType)) {\n out[key] = inputProps[key];\n }\n });\n return out;\n};\n\n/**\n * Wether props of children changed\n * @param {Object} nextChildren The latest children\n * @param {Object} prevChildren The prev children\n * @return {Boolean} equal or not\n */\nexport var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n if (nextChildren === prevChildren) {\n return true;\n }\n var count = Children.count(nextChildren);\n if (count !== Children.count(prevChildren)) {\n return false;\n }\n if (count === 0) {\n return true;\n }\n if (count === 1) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return isSingleChildEqual(_isArray(nextChildren) ? nextChildren[0] : nextChildren, _isArray(prevChildren) ? prevChildren[0] : prevChildren);\n }\n for (var i = 0; i < count; i++) {\n var nextChild = nextChildren[i];\n var prevChild = prevChildren[i];\n if (_isArray(nextChild) || _isArray(prevChild)) {\n if (!isChildrenEqual(nextChild, prevChild)) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n } else if (!isSingleChildEqual(nextChild, prevChild)) {\n return false;\n }\n }\n return true;\n};\nexport var isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n if (_isNil(nextChild) && _isNil(prevChild)) {\n return true;\n }\n if (!_isNil(nextChild) && !_isNil(prevChild)) {\n var _ref = nextChild.props || {},\n nextChildren = _ref.children,\n nextProps = _objectWithoutProperties(_ref, _excluded);\n var _ref2 = prevChild.props || {},\n prevChildren = _ref2.children,\n prevProps = _objectWithoutProperties(_ref2, _excluded2);\n if (nextChildren && prevChildren) {\n return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n }\n if (!nextChildren && !prevChildren) {\n return shallowEqual(nextProps, prevProps);\n }\n return false;\n }\n return false;\n};\nexport var renderByOrder = function renderByOrder(children, renderMap) {\n var elements = [];\n var record = {};\n toArray(children).forEach(function (child, index) {\n if (isSvgElement(child)) {\n elements.push(child);\n } else if (child) {\n var displayName = getDisplayName(child.type);\n var _ref3 = renderMap[displayName] || {},\n handler = _ref3.handler,\n once = _ref3.once;\n if (handler && (!once || !record[displayName])) {\n var results = handler(child, displayName, index);\n elements.push(results);\n record[displayName] = true;\n }\n }\n });\n return elements;\n};\nexport var getReactEventByType = function getReactEventByType(e) {\n var type = e && e.type;\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n return null;\n};\nexport var parseChildIndex = function parseChildIndex(child, children) {\n return toArray(children).indexOf(child);\n};","export function shallowEqual(a, b) {\n /* eslint-disable no-restricted-syntax */\n for (var key in a) {\n if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n for (var _key in b) {\n if ({}.hasOwnProperty.call(b, _key) && !{}.hasOwnProperty.call(a, _key)) {\n return false;\n }\n }\n return true;\n}","import _isObject from \"lodash/isObject\";\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport { isValidElement } from 'react';\n\n//\n// Event Handler Types -- Copied from @types/react/index.d.ts and adapted for Props.\n//\nvar SVGContainerPropKeys = ['viewBox', 'children'];\nexport var SVGElementPropKeys = ['aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'className', 'color', 'height', 'id', 'lang', 'max', 'media', 'method', 'min', 'name', 'style',\n/*\n * removed 'type' SVGElementPropKey because we do not currently use any SVG elements\n * that can use it and it conflicts with the recharts prop 'type'\n * https://github.com/recharts/recharts/pull/3327\n * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/type\n */\n// 'type',\n'target', 'width', 'role', 'tabIndex', 'accentHeight', 'accumulate', 'additive', 'alignmentBaseline', 'allowReorder', 'alphabetic', 'amplitude', 'arabicForm', 'ascent', 'attributeName', 'attributeType', 'autoReverse', 'azimuth', 'baseFrequency', 'baselineShift', 'baseProfile', 'bbox', 'begin', 'bias', 'by', 'calcMode', 'capHeight', 'clip', 'clipPath', 'clipPathUnits', 'clipRule', 'colorInterpolation', 'colorInterpolationFilters', 'colorProfile', 'colorRendering', 'contentScriptType', 'contentStyleType', 'cursor', 'cx', 'cy', 'd', 'decelerate', 'descent', 'diffuseConstant', 'direction', 'display', 'divisor', 'dominantBaseline', 'dur', 'dx', 'dy', 'edgeMode', 'elevation', 'enableBackground', 'end', 'exponent', 'externalResourcesRequired', 'fill', 'fillOpacity', 'fillRule', 'filter', 'filterRes', 'filterUnits', 'floodColor', 'floodOpacity', 'focusable', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontWeight', 'format', 'from', 'fx', 'fy', 'g1', 'g2', 'glyphName', 'glyphOrientationHorizontal', 'glyphOrientationVertical', 'glyphRef', 'gradientTransform', 'gradientUnits', 'hanging', 'horizAdvX', 'horizOriginX', 'href', 'ideographic', 'imageRendering', 'in2', 'in', 'intercept', 'k1', 'k2', 'k3', 'k4', 'k', 'kernelMatrix', 'kernelUnitLength', 'kerning', 'keyPoints', 'keySplines', 'keyTimes', 'lengthAdjust', 'letterSpacing', 'lightingColor', 'limitingConeAngle', 'local', 'markerEnd', 'markerHeight', 'markerMid', 'markerStart', 'markerUnits', 'markerWidth', 'mask', 'maskContentUnits', 'maskUnits', 'mathematical', 'mode', 'numOctaves', 'offset', 'opacity', 'operator', 'order', 'orient', 'orientation', 'origin', 'overflow', 'overlinePosition', 'overlineThickness', 'paintOrder', 'panose1', 'pathLength', 'patternContentUnits', 'patternTransform', 'patternUnits', 'pointerEvents', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'preserveAlpha', 'preserveAspectRatio', 'primitiveUnits', 'r', 'radius', 'refX', 'refY', 'renderingIntent', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'result', 'rotate', 'rx', 'ry', 'seed', 'shapeRendering', 'slope', 'spacing', 'specularConstant', 'specularExponent', 'speed', 'spreadMethod', 'startOffset', 'stdDeviation', 'stemh', 'stemv', 'stitchTiles', 'stopColor', 'stopOpacity', 'strikethroughPosition', 'strikethroughThickness', 'string', 'stroke', 'strokeDasharray', 'strokeDashoffset', 'strokeLinecap', 'strokeLinejoin', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'surfaceScale', 'systemLanguage', 'tableValues', 'targetX', 'targetY', 'textAnchor', 'textDecoration', 'textLength', 'textRendering', 'to', 'transform', 'u1', 'u2', 'underlinePosition', 'underlineThickness', 'unicode', 'unicodeBidi', 'unicodeRange', 'unitsPerEm', 'vAlphabetic', 'values', 'vectorEffect', 'version', 'vertAdvY', 'vertOriginX', 'vertOriginY', 'vHanging', 'vIdeographic', 'viewTarget', 'visibility', 'vMathematical', 'widths', 'wordSpacing', 'writingMode', 'x1', 'x2', 'x', 'xChannelSelector', 'xHeight', 'xlinkActuate', 'xlinkArcrole', 'xlinkHref', 'xlinkRole', 'xlinkShow', 'xlinkTitle', 'xlinkType', 'xmlBase', 'xmlLang', 'xmlns', 'xmlnsXlink', 'xmlSpace', 'y1', 'y2', 'y', 'yChannelSelector', 'z', 'zoomAndPan', 'ref', 'key', 'angle'];\nvar PolyElementKeys = ['points', 'pathLength'];\n\n/** svg element types that have specific attribute filtration requirements */\n\n/** map of svg element types to unique svg attributes that belong to that element */\nexport var FilteredElementKeyMap = {\n svg: SVGContainerPropKeys,\n polygon: PolyElementKeys,\n polyline: PolyElementKeys\n};\nexport var EventKeys = ['dangerouslySetInnerHTML', 'onCopy', 'onCopyCapture', 'onCut', 'onCutCapture', 'onPaste', 'onPasteCapture', 'onCompositionEnd', 'onCompositionEndCapture', 'onCompositionStart', 'onCompositionStartCapture', 'onCompositionUpdate', 'onCompositionUpdateCapture', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onChangeCapture', 'onBeforeInput', 'onBeforeInputCapture', 'onInput', 'onInputCapture', 'onReset', 'onResetCapture', 'onSubmit', 'onSubmitCapture', 'onInvalid', 'onInvalidCapture', 'onLoad', 'onLoadCapture', 'onError', 'onErrorCapture', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyPressCapture', 'onKeyUp', 'onKeyUpCapture', 'onAbort', 'onAbortCapture', 'onCanPlay', 'onCanPlayCapture', 'onCanPlayThrough', 'onCanPlayThroughCapture', 'onDurationChange', 'onDurationChangeCapture', 'onEmptied', 'onEmptiedCapture', 'onEncrypted', 'onEncryptedCapture', 'onEnded', 'onEndedCapture', 'onLoadedData', 'onLoadedDataCapture', 'onLoadedMetadata', 'onLoadedMetadataCapture', 'onLoadStart', 'onLoadStartCapture', 'onPause', 'onPauseCapture', 'onPlay', 'onPlayCapture', 'onPlaying', 'onPlayingCapture', 'onProgress', 'onProgressCapture', 'onRateChange', 'onRateChangeCapture', 'onSeeked', 'onSeekedCapture', 'onSeeking', 'onSeekingCapture', 'onStalled', 'onStalledCapture', 'onSuspend', 'onSuspendCapture', 'onTimeUpdate', 'onTimeUpdateCapture', 'onVolumeChange', 'onVolumeChangeCapture', 'onWaiting', 'onWaitingCapture', 'onAuxClick', 'onAuxClickCapture', 'onClick', 'onClickCapture', 'onContextMenu', 'onContextMenuCapture', 'onDoubleClick', 'onDoubleClickCapture', 'onDrag', 'onDragCapture', 'onDragEnd', 'onDragEndCapture', 'onDragEnter', 'onDragEnterCapture', 'onDragExit', 'onDragExitCapture', 'onDragLeave', 'onDragLeaveCapture', 'onDragOver', 'onDragOverCapture', 'onDragStart', 'onDragStartCapture', 'onDrop', 'onDropCapture', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseMoveCapture', 'onMouseOut', 'onMouseOutCapture', 'onMouseOver', 'onMouseOverCapture', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onSelectCapture', 'onTouchCancel', 'onTouchCancelCapture', 'onTouchEnd', 'onTouchEndCapture', 'onTouchMove', 'onTouchMoveCapture', 'onTouchStart', 'onTouchStartCapture', 'onPointerDown', 'onPointerDownCapture', 'onPointerMove', 'onPointerMoveCapture', 'onPointerUp', 'onPointerUpCapture', 'onPointerCancel', 'onPointerCancelCapture', 'onPointerEnter', 'onPointerEnterCapture', 'onPointerLeave', 'onPointerLeaveCapture', 'onPointerOver', 'onPointerOverCapture', 'onPointerOut', 'onPointerOutCapture', 'onGotPointerCapture', 'onGotPointerCaptureCapture', 'onLostPointerCapture', 'onLostPointerCaptureCapture', 'onScroll', 'onScrollCapture', 'onWheel', 'onWheelCapture', 'onAnimationStart', 'onAnimationStartCapture', 'onAnimationEnd', 'onAnimationEndCapture', 'onAnimationIteration', 'onAnimationIterationCapture', 'onTransitionEnd', 'onTransitionEndCapture'];\n\n// Animation Types => TODO: Should be moved when react-smooth is typescriptified.\n\n/** the offset of a chart, which define the blank space all around */\n\n/** The domain of axis */\n\n/** The props definition of base axis */\n\nexport var adaptEventHandlers = function adaptEventHandlers(props, newHandler) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n var inputProps = props;\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n if (!_isObject(inputProps)) {\n return null;\n }\n var out = {};\n Object.keys(inputProps).forEach(function (key) {\n if (EventKeys.includes(key)) {\n out[key] = newHandler || function (e) {\n return inputProps[key](inputProps, e);\n };\n }\n });\n return out;\n};\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n return function (e) {\n originalHandler(data, index, e);\n return null;\n };\n};\nexport var adaptEventsOfChild = function adaptEventsOfChild(props, data, index) {\n if (!_isObject(props) || _typeof(props) !== 'object') {\n return null;\n }\n var out = null;\n Object.keys(props).forEach(function (key) {\n var item = props[key];\n if (EventKeys.includes(key) && typeof item === 'function') {\n if (!out) out = {};\n out[key] = getEventHandlerOfChild(item, data, index);\n }\n });\n return out;\n};","import React, { Component, createElement, createFactory } from 'react';\nimport shallowEqual from 'fbjs/lib/shallowEqual';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { createChangeEmitter } from 'change-emitter';\nimport $$observable from 'symbol-observable';\n\nvar setStatic = function setStatic(key, value) {\n return function (BaseComponent) {\n /* eslint-disable no-param-reassign */\n BaseComponent[key] = value;\n /* eslint-enable no-param-reassign */\n return BaseComponent;\n };\n};\n\nvar setDisplayName = function setDisplayName(displayName) {\n return setStatic('displayName', displayName);\n};\n\nvar getDisplayName = function getDisplayName(Component$$1) {\n if (typeof Component$$1 === 'string') {\n return Component$$1;\n }\n\n if (!Component$$1) {\n return undefined;\n }\n\n return Component$$1.displayName || Component$$1.name || 'Component';\n};\n\nvar wrapDisplayName = function wrapDisplayName(BaseComponent, hocName) {\n return hocName + '(' + getDisplayName(BaseComponent) + ')';\n};\n\nvar mapProps = function mapProps(propsMapper) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n var MapProps = function MapProps(props) {\n return factory(propsMapper(props));\n };\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'mapProps'))(MapProps);\n }\n return MapProps;\n };\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar withProps = function withProps(input) {\n var hoc = mapProps(function (props) {\n return _extends({}, props, typeof input === 'function' ? input(props) : input);\n });\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withProps'))(hoc(BaseComponent));\n };\n }\n return hoc;\n};\n\nvar pick = function pick(obj, keys) {\n var result = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (obj.hasOwnProperty(key)) {\n result[key] = obj[key];\n }\n }\n return result;\n};\n\nvar withPropsOnChange = function withPropsOnChange(shouldMapOrKeys, propsMapper) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n var shouldMap = typeof shouldMapOrKeys === 'function' ? shouldMapOrKeys : function (props, nextProps) {\n return !shallowEqual(pick(props, shouldMapOrKeys), pick(nextProps, shouldMapOrKeys));\n };\n\n var WithPropsOnChange = function (_Component) {\n inherits(WithPropsOnChange, _Component);\n\n function WithPropsOnChange() {\n var _temp, _this, _ret;\n\n classCallCheck(this, WithPropsOnChange);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.computedProps = propsMapper(_this.props), _temp), possibleConstructorReturn(_this, _ret);\n }\n\n WithPropsOnChange.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (shouldMap(this.props, nextProps)) {\n this.computedProps = propsMapper(nextProps);\n }\n };\n\n WithPropsOnChange.prototype.render = function render() {\n return factory(_extends({}, this.props, this.computedProps));\n };\n\n return WithPropsOnChange;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withPropsOnChange'))(WithPropsOnChange);\n }\n return WithPropsOnChange;\n };\n};\n\nvar mapValues = function mapValues(obj, func) {\n var result = {};\n /* eslint-disable no-restricted-syntax */\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[key] = func(obj[key], key);\n }\n }\n /* eslint-enable no-restricted-syntax */\n return result;\n};\n\n/* eslint-disable no-console */\nvar withHandlers = function withHandlers(handlers) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithHandlers = function (_Component) {\n inherits(WithHandlers, _Component);\n\n function WithHandlers() {\n var _temp, _this, _ret;\n\n classCallCheck(this, WithHandlers);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n\n WithHandlers.prototype.componentWillReceiveProps = function componentWillReceiveProps() {\n this.cachedHandlers = {};\n };\n\n WithHandlers.prototype.render = function render() {\n return factory(_extends({}, this.props, this.handlers));\n };\n\n return WithHandlers;\n }(Component);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.cachedHandlers = {};\n this.handlers = mapValues(typeof handlers === 'function' ? handlers(this.props) : handlers, function (createHandler, handlerName) {\n return function () {\n var cachedHandler = _this2.cachedHandlers[handlerName];\n if (cachedHandler) {\n return cachedHandler.apply(undefined, arguments);\n }\n\n var handler = createHandler(_this2.props);\n _this2.cachedHandlers[handlerName] = handler;\n\n if (process.env.NODE_ENV !== 'production' && typeof handler !== 'function') {\n console.error(\n // eslint-disable-line no-console\n 'withHandlers(): Expected a map of higher-order functions. ' + 'Refer to the docs for more info.');\n }\n\n return handler.apply(undefined, arguments);\n };\n });\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withHandlers'))(WithHandlers);\n }\n return WithHandlers;\n };\n};\n\nvar defaultProps = function defaultProps(props) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n var DefaultProps = function DefaultProps(ownerProps) {\n return factory(ownerProps);\n };\n DefaultProps.defaultProps = props;\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'defaultProps'))(DefaultProps);\n }\n return DefaultProps;\n };\n};\n\nvar omit = function omit(obj, keys) {\n var rest = objectWithoutProperties(obj, []);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (rest.hasOwnProperty(key)) {\n delete rest[key];\n }\n }\n return rest;\n};\n\nvar renameProp = function renameProp(oldName, newName) {\n var hoc = mapProps(function (props) {\n var _babelHelpers$extends;\n\n return _extends({}, omit(props, [oldName]), (_babelHelpers$extends = {}, _babelHelpers$extends[newName] = props[oldName], _babelHelpers$extends));\n });\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'renameProp'))(hoc(BaseComponent));\n };\n }\n return hoc;\n};\n\nvar keys = Object.keys;\n\n\nvar mapKeys = function mapKeys(obj, func) {\n return keys(obj).reduce(function (result, key) {\n var val = obj[key];\n /* eslint-disable no-param-reassign */\n result[func(val, key)] = val;\n /* eslint-enable no-param-reassign */\n return result;\n }, {});\n};\n\nvar renameProps = function renameProps(nameMap) {\n var hoc = mapProps(function (props) {\n return _extends({}, omit(props, keys(nameMap)), mapKeys(pick(props, keys(nameMap)), function (_, oldName) {\n return nameMap[oldName];\n }));\n });\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'renameProps'))(hoc(BaseComponent));\n };\n }\n return hoc;\n};\n\nvar flattenProp = function flattenProp(propName) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n var FlattenProp = function FlattenProp(props) {\n return factory(_extends({}, props, props[propName]));\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'flattenProp'))(FlattenProp);\n }\n return FlattenProp;\n };\n};\n\nvar withState = function withState(stateName, stateUpdaterName, initialState) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithState = function (_Component) {\n inherits(WithState, _Component);\n\n function WithState() {\n var _temp, _this, _ret;\n\n classCallCheck(this, WithState);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.state = {\n stateValue: typeof initialState === 'function' ? initialState(_this.props) : initialState\n }, _this.updateStateValue = function (updateFn, callback) {\n return _this.setState(function (_ref) {\n var stateValue = _ref.stateValue;\n return {\n stateValue: typeof updateFn === 'function' ? updateFn(stateValue) : updateFn\n };\n }, callback);\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n WithState.prototype.render = function render() {\n var _babelHelpers$extends;\n\n return factory(_extends({}, this.props, (_babelHelpers$extends = {}, _babelHelpers$extends[stateName] = this.state.stateValue, _babelHelpers$extends[stateUpdaterName] = this.updateStateValue, _babelHelpers$extends)));\n };\n\n return WithState;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withState'))(WithState);\n }\n return WithState;\n };\n};\n\nvar withStateHandlers = function withStateHandlers(initialState, stateUpdaters) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithStateHandlers = function (_Component) {\n inherits(WithStateHandlers, _Component);\n\n function WithStateHandlers() {\n var _temp, _this, _ret;\n\n classCallCheck(this, WithStateHandlers);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n\n WithStateHandlers.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n var propsChanged = nextProps !== this.props;\n // the idea is to skip render if stateUpdater handler return undefined\n // this allows to create no state update handlers with access to state and props\n var stateChanged = !shallowEqual(nextState, this.state);\n return propsChanged || stateChanged;\n };\n\n WithStateHandlers.prototype.render = function render() {\n return factory(_extends({}, this.props, this.state, this.stateUpdaters));\n };\n\n return WithStateHandlers;\n }(Component);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.state = typeof initialState === 'function' ? initialState(this.props) : initialState;\n this.stateUpdaters = mapValues(stateUpdaters, function (handler) {\n return function (mayBeEvent) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n // Having that functional form of setState can be called async\n // we need to persist SyntheticEvent\n if (mayBeEvent && typeof mayBeEvent.persist === 'function') {\n mayBeEvent.persist();\n }\n\n _this2.setState(function (state, props) {\n return handler(state, props).apply(undefined, [mayBeEvent].concat(args));\n });\n };\n });\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withStateHandlers'))(WithStateHandlers);\n }\n return WithStateHandlers;\n };\n};\n\nvar withReducer = function withReducer(stateName, dispatchName, reducer, initialState) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithReducer = function (_Component) {\n inherits(WithReducer, _Component);\n\n function WithReducer() {\n var _temp, _this, _ret;\n\n classCallCheck(this, WithReducer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.state = {\n stateValue: _this.initializeStateValue()\n }, _this.dispatch = function (action) {\n return _this.setState(function (_ref) {\n var stateValue = _ref.stateValue;\n return {\n stateValue: reducer(stateValue, action)\n };\n });\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n WithReducer.prototype.initializeStateValue = function initializeStateValue() {\n if (initialState !== undefined) {\n return typeof initialState === 'function' ? initialState(this.props) : initialState;\n }\n return reducer(undefined, { type: '@@recompose/INIT' });\n };\n\n WithReducer.prototype.render = function render() {\n var _babelHelpers$extends;\n\n return factory(_extends({}, this.props, (_babelHelpers$extends = {}, _babelHelpers$extends[stateName] = this.state.stateValue, _babelHelpers$extends[dispatchName] = this.dispatch, _babelHelpers$extends)));\n };\n\n return WithReducer;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withReducer'))(WithReducer);\n }\n return WithReducer;\n };\n};\n\nvar identity = function identity(Component$$1) {\n return Component$$1;\n};\n\nvar branch = function branch(test, left) {\n var right = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : identity;\n return function (BaseComponent) {\n var leftFactory = void 0;\n var rightFactory = void 0;\n var Branch = function Branch(props) {\n if (test(props)) {\n leftFactory = leftFactory || createFactory(left(BaseComponent));\n return leftFactory(props);\n }\n rightFactory = rightFactory || createFactory(right(BaseComponent));\n return rightFactory(props);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'branch'))(Branch);\n }\n return Branch;\n };\n};\n\nvar renderComponent = function renderComponent(Component$$1) {\n return function (_) {\n var factory = createFactory(Component$$1);\n var RenderComponent = function RenderComponent(props) {\n return factory(props);\n };\n if (process.env.NODE_ENV !== 'production') {\n RenderComponent.displayName = wrapDisplayName(Component$$1, 'renderComponent');\n }\n return RenderComponent;\n };\n};\n\nvar Nothing = function (_Component) {\n inherits(Nothing, _Component);\n\n function Nothing() {\n classCallCheck(this, Nothing);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n Nothing.prototype.render = function render() {\n return null;\n };\n\n return Nothing;\n}(Component);\n\nvar renderNothing = function renderNothing(_) {\n return Nothing;\n};\n\nvar shouldUpdate = function shouldUpdate(test) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var ShouldUpdate = function (_Component) {\n inherits(ShouldUpdate, _Component);\n\n function ShouldUpdate() {\n classCallCheck(this, ShouldUpdate);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n ShouldUpdate.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return test(this.props, nextProps);\n };\n\n ShouldUpdate.prototype.render = function render() {\n return factory(this.props);\n };\n\n return ShouldUpdate;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'shouldUpdate'))(ShouldUpdate);\n }\n return ShouldUpdate;\n };\n};\n\nvar pure = function pure(BaseComponent) {\n var hoc = shouldUpdate(function (props, nextProps) {\n return !shallowEqual(props, nextProps);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'pure'))(hoc(BaseComponent));\n }\n\n return hoc(BaseComponent);\n};\n\nvar onlyUpdateForKeys = function onlyUpdateForKeys(propKeys) {\n var hoc = shouldUpdate(function (props, nextProps) {\n return !shallowEqual(pick(nextProps, propKeys), pick(props, propKeys));\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'onlyUpdateForKeys'))(hoc(BaseComponent));\n };\n }\n return hoc;\n};\n\nvar onlyUpdateForPropTypes = function onlyUpdateForPropTypes(BaseComponent) {\n var propTypes = BaseComponent.propTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!propTypes) {\n /* eslint-disable */\n console.error('A component without any `propTypes` was passed to ' + '`onlyUpdateForPropTypes()`. Check the implementation of the ' + ('component with display name \"' + getDisplayName(BaseComponent) + '\".'));\n /* eslint-enable */\n }\n }\n\n var propKeys = Object.keys(propTypes || {});\n var OnlyUpdateForPropTypes = onlyUpdateForKeys(propKeys)(BaseComponent);\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'onlyUpdateForPropTypes'))(OnlyUpdateForPropTypes);\n }\n return OnlyUpdateForPropTypes;\n};\n\nvar withContext = function withContext(childContextTypes, getChildContext) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n var WithContext = function (_Component) {\n inherits(WithContext, _Component);\n\n function WithContext() {\n var _temp, _this, _ret;\n\n classCallCheck(this, WithContext);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.getChildContext = function () {\n return getChildContext(_this.props);\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n WithContext.prototype.render = function render() {\n return factory(this.props);\n };\n\n return WithContext;\n }(Component);\n\n WithContext.childContextTypes = childContextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withContext'))(WithContext);\n }\n return WithContext;\n };\n};\n\nvar getContext = function getContext(contextTypes) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n var GetContext = function GetContext(ownerProps, context) {\n return factory(_extends({}, ownerProps, context));\n };\n\n GetContext.contextTypes = contextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'getContext'))(GetContext);\n }\n return GetContext;\n };\n};\n\n/* eslint-disable no-console */\nvar lifecycle = function lifecycle(spec) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n\n if (process.env.NODE_ENV !== 'production' && spec.hasOwnProperty('render')) {\n console.error('lifecycle() does not support the render method; its behavior is to ' + 'pass all props and state to the base component.');\n }\n\n var Lifecycle = function (_Component) {\n inherits(Lifecycle, _Component);\n\n function Lifecycle() {\n classCallCheck(this, Lifecycle);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n Lifecycle.prototype.render = function render() {\n return factory(_extends({}, this.props, this.state));\n };\n\n return Lifecycle;\n }(Component);\n\n Object.keys(spec).forEach(function (hook) {\n return Lifecycle.prototype[hook] = spec[hook];\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'lifecycle'))(Lifecycle);\n }\n return Lifecycle;\n };\n};\n\nvar isClassComponent = function isClassComponent(Component$$1) {\n return Boolean(Component$$1 && Component$$1.prototype && typeof Component$$1.prototype.render === 'function');\n};\n\nvar toClass = function toClass(baseComponent) {\n if (isClassComponent(baseComponent)) {\n return baseComponent;\n }\n\n var ToClass = function (_Component) {\n inherits(ToClass, _Component);\n\n function ToClass() {\n classCallCheck(this, ToClass);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n ToClass.prototype.render = function render() {\n if (typeof baseComponent === 'string') {\n return React.createElement(baseComponent, this.props);\n }\n return baseComponent(this.props, this.context);\n };\n\n return ToClass;\n }(Component);\n\n ToClass.displayName = getDisplayName(baseComponent);\n ToClass.propTypes = baseComponent.propTypes;\n ToClass.contextTypes = baseComponent.contextTypes;\n ToClass.defaultProps = baseComponent.defaultProps;\n\n return ToClass;\n};\n\nvar setPropTypes = function setPropTypes(propTypes) {\n return setStatic('propTypes', propTypes);\n};\n\nfunction compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(undefined, arguments));\n };\n });\n}\n\nvar createSink = function createSink(callback) {\n return function (_Component) {\n inherits(Sink, _Component);\n\n function Sink() {\n classCallCheck(this, Sink);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n Sink.prototype.componentWillMount = function componentWillMount() {\n callback(this.props);\n };\n\n Sink.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n callback(nextProps);\n };\n\n Sink.prototype.render = function render() {\n return null;\n };\n\n return Sink;\n }(Component);\n};\n\nvar componentFromProp = function componentFromProp(propName) {\n var Component$$1 = function Component$$1(props) {\n return createElement(props[propName], omit(props, [propName]));\n };\n Component$$1.displayName = 'componentFromProp(' + propName + ')';\n return Component$$1;\n};\n\nvar nest = function nest() {\n for (var _len = arguments.length, Components = Array(_len), _key = 0; _key < _len; _key++) {\n Components[_key] = arguments[_key];\n }\n\n var factories = Components.map(createFactory);\n var Nest = function Nest(_ref) {\n var props = objectWithoutProperties(_ref, []),\n children = _ref.children;\n return factories.reduceRight(function (child, factory) {\n return factory(props, child);\n }, children);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n var displayNames = Components.map(getDisplayName);\n Nest.displayName = 'nest(' + displayNames.join(', ') + ')';\n }\n\n return Nest;\n};\n\nvar hoistStatics = function hoistStatics(higherOrderComponent) {\n return function (BaseComponent) {\n var NewComponent = higherOrderComponent(BaseComponent);\n hoistNonReactStatics(NewComponent, BaseComponent);\n return NewComponent;\n };\n};\n\nvar _config = {\n fromESObservable: null,\n toESObservable: null\n};\n\nvar configureObservable = function configureObservable(c) {\n _config = c;\n};\n\nvar config = {\n fromESObservable: function fromESObservable(observable) {\n return typeof _config.fromESObservable === 'function' ? _config.fromESObservable(observable) : observable;\n },\n toESObservable: function toESObservable(stream) {\n return typeof _config.toESObservable === 'function' ? _config.toESObservable(stream) : stream;\n }\n};\n\nvar componentFromStreamWithConfig = function componentFromStreamWithConfig(config$$1) {\n return function (propsToVdom) {\n return function (_Component) {\n inherits(ComponentFromStream, _Component);\n\n function ComponentFromStream() {\n var _config$fromESObserva;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, ComponentFromStream);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.state = { vdom: null }, _this.propsEmitter = createChangeEmitter(), _this.props$ = config$$1.fromESObservable((_config$fromESObserva = {\n subscribe: function subscribe(observer) {\n var unsubscribe = _this.propsEmitter.listen(function (props) {\n if (props) {\n observer.next(props);\n } else {\n observer.complete();\n }\n });\n return { unsubscribe: unsubscribe };\n }\n }, _config$fromESObserva[$$observable] = function () {\n return this;\n }, _config$fromESObserva)), _this.vdom$ = config$$1.toESObservable(propsToVdom(_this.props$)), _temp), possibleConstructorReturn(_this, _ret);\n }\n\n // Stream of props\n\n\n // Stream of vdom\n\n\n ComponentFromStream.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n // Subscribe to child prop changes so we know when to re-render\n this.subscription = this.vdom$.subscribe({\n next: function next(vdom) {\n _this2.setState({ vdom: vdom });\n }\n });\n this.propsEmitter.emit(this.props);\n };\n\n ComponentFromStream.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n // Receive new props from the owner\n this.propsEmitter.emit(nextProps);\n };\n\n ComponentFromStream.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n return nextState.vdom !== this.state.vdom;\n };\n\n ComponentFromStream.prototype.componentWillUnmount = function componentWillUnmount() {\n // Call without arguments to complete stream\n this.propsEmitter.emit();\n\n // Clean-up subscription before un-mounting\n this.subscription.unsubscribe();\n };\n\n ComponentFromStream.prototype.render = function render() {\n return this.state.vdom;\n };\n\n return ComponentFromStream;\n }(Component);\n };\n};\n\nvar componentFromStream = function componentFromStream(propsToVdom) {\n return componentFromStreamWithConfig(config)(propsToVdom);\n};\n\nvar identity$1 = function identity(t) {\n return t;\n};\n\nvar mapPropsStreamWithConfig = function mapPropsStreamWithConfig(config$$1) {\n var componentFromStream = componentFromStreamWithConfig({\n fromESObservable: identity$1,\n toESObservable: identity$1\n });\n return function (transform) {\n return function (BaseComponent) {\n var factory = createFactory(BaseComponent);\n var fromESObservable = config$$1.fromESObservable,\n toESObservable = config$$1.toESObservable;\n\n return componentFromStream(function (props$) {\n var _ref;\n\n return _ref = {\n subscribe: function subscribe(observer) {\n var subscription = toESObservable(transform(fromESObservable(props$))).subscribe({\n next: function next(childProps) {\n return observer.next(factory(childProps));\n }\n });\n return {\n unsubscribe: function unsubscribe() {\n return subscription.unsubscribe();\n }\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n });\n };\n };\n};\n\nvar mapPropsStream = function mapPropsStream(transform) {\n var hoc = mapPropsStreamWithConfig(config)(transform);\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return setDisplayName(wrapDisplayName(BaseComponent, 'mapPropsStream'))(hoc(BaseComponent));\n };\n }\n return hoc;\n};\n\nvar createEventHandlerWithConfig = function createEventHandlerWithConfig(config$$1) {\n return function () {\n var _config$fromESObserva;\n\n var emitter = createChangeEmitter();\n var stream = config$$1.fromESObservable((_config$fromESObserva = {\n subscribe: function subscribe(observer) {\n var unsubscribe = emitter.listen(function (value) {\n return observer.next(value);\n });\n return { unsubscribe: unsubscribe };\n }\n }, _config$fromESObserva[$$observable] = function () {\n return this;\n }, _config$fromESObserva));\n return {\n handler: emitter.emit,\n stream: stream\n };\n };\n};\n\nvar createEventHandler = createEventHandlerWithConfig(config);\n\n// Higher-order component helpers\n\nexport { mapProps, withProps, withPropsOnChange, withHandlers, defaultProps, renameProp, renameProps, flattenProp, withState, withStateHandlers, withReducer, branch, renderComponent, renderNothing, shouldUpdate, pure, onlyUpdateForKeys, onlyUpdateForPropTypes, withContext, getContext, lifecycle, toClass, setStatic, setPropTypes, setDisplayName, compose, getDisplayName, wrapDisplayName, shallowEqual, isClassComponent, createSink, componentFromProp, nest, hoistStatics, componentFromStream, componentFromStreamWithConfig, mapPropsStream, mapPropsStreamWithConfig, createEventHandler, createEventHandlerWithConfig, configureObservable as setObservableConfig };\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _postcssValueParser = require('postcss-value-parser');\n\nvar _postcssValueParser2 = _interopRequireDefault(_postcssValueParser);\n\nvar _parser = require('./parser');\n\nvar _reducer = require('./lib/reducer');\n\nvar _reducer2 = _interopRequireDefault(_reducer);\n\nvar _stringifier = require('./lib/stringifier');\n\nvar _stringifier2 = _interopRequireDefault(_stringifier);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// eslint-disable-line\nvar MATCH_CALC = /((?:\\-[a-z]+\\-)?calc)/;\n\nexports.default = function (value) {\n var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n\n return (0, _postcssValueParser2.default)(value).walk(function (node) {\n // skip anything which isn't a calc() function\n if (node.type !== 'function' || !MATCH_CALC.test(node.value)) return;\n\n // stringify calc expression and produce an AST\n var contents = _postcssValueParser2.default.stringify(node.nodes);\n\n // skip constant() and env()\n if (contents.indexOf('constant') >= 0 || contents.indexOf('env') >= 0) return;\n\n var ast = _parser.parser.parse(contents);\n\n // reduce AST to its simplest form, that is, either to a single value\n // or a simplified calc expression\n var reducedAst = (0, _reducer2.default)(ast, precision);\n\n // stringify AST and write it back\n node.type = 'word';\n node.value = (0, _stringifier2.default)(node.value, reducedAst, precision);\n }, true).toString();\n};\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _cssUnitConverter = require('css-unit-converter');\n\nvar _cssUnitConverter2 = _interopRequireDefault(_cssUnitConverter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction convertNodes(left, right, precision) {\n switch (left.type) {\n case 'LengthValue':\n case 'AngleValue':\n case 'TimeValue':\n case 'FrequencyValue':\n case 'ResolutionValue':\n return convertAbsoluteLength(left, right, precision);\n default:\n return { left: left, right: right };\n }\n}\n\nfunction convertAbsoluteLength(left, right, precision) {\n if (right.type === left.type) {\n right = {\n type: left.type,\n value: (0, _cssUnitConverter2.default)(right.value, right.unit, left.unit, precision),\n unit: left.unit\n };\n }\n return { left: left, right: right };\n}\n\nexports.default = convertNodes;\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\n\nvar _convert = require(\"./convert\");\n\nvar _convert2 = _interopRequireDefault(_convert);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction reduce(node, precision) {\n if (node.type === \"MathExpression\") return reduceMathExpression(node, precision);\n if (node.type === \"Calc\") return reduce(node.value, precision);\n\n return node;\n}\n\nfunction isEqual(left, right) {\n return left.type === right.type && left.value === right.value;\n}\n\nfunction isValueType(type) {\n switch (type) {\n case 'LengthValue':\n case 'AngleValue':\n case 'TimeValue':\n case 'FrequencyValue':\n case 'ResolutionValue':\n case 'EmValue':\n case 'ExValue':\n case 'ChValue':\n case 'RemValue':\n case 'VhValue':\n case 'VwValue':\n case 'VminValue':\n case 'VmaxValue':\n case 'PercentageValue':\n case 'Value':\n return true;\n }\n return false;\n}\n\nfunction convertMathExpression(node, precision) {\n var nodes = (0, _convert2.default)(node.left, node.right, precision);\n var left = reduce(nodes.left, precision);\n var right = reduce(nodes.right, precision);\n\n if (left.type === \"MathExpression\" && right.type === \"MathExpression\") {\n\n if (left.operator === '/' && right.operator === '*' || left.operator === '-' && right.operator === '+' || left.operator === '*' && right.operator === '/' || left.operator === '+' && right.operator === '-') {\n\n if (isEqual(left.right, right.right)) nodes = (0, _convert2.default)(left.left, right.left, precision);else if (isEqual(left.right, right.left)) nodes = (0, _convert2.default)(left.left, right.right, precision);\n\n left = reduce(nodes.left, precision);\n right = reduce(nodes.right, precision);\n }\n }\n\n node.left = left;\n node.right = right;\n return node;\n}\n\nfunction flip(operator) {\n return operator === '+' ? '-' : '+';\n}\n\nfunction flipValue(node) {\n if (isValueType(node.type)) node.value = -node.value;else if (node.type == 'MathExpression') {\n node.left = flipValue(node.left);\n node.right = flipValue(node.right);\n }\n return node;\n}\n\nfunction reduceAddSubExpression(node, precision) {\n var _node = node,\n left = _node.left,\n right = _node.right,\n op = _node.operator;\n\n\n if (left.type === 'CssVariable' || right.type === 'CssVariable') return node;\n\n // something + 0 => something\n // something - 0 => something\n if (right.value === 0) return left;\n\n // 0 + something => something\n if (left.value === 0 && op === \"+\") return right;\n\n // 0 - something => -something\n if (left.value === 0 && op === \"-\") return flipValue(right);\n\n // value + value\n // value - value\n if (left.type === right.type && isValueType(left.type)) {\n node = Object.assign({}, left);\n if (op === \"+\") node.value = left.value + right.value;else node.value = left.value - right.value;\n }\n\n // value <op> (expr)\n if (isValueType(left.type) && (right.operator === '+' || right.operator === '-') && right.type === 'MathExpression') {\n // value + (value + something) => (value + value) + something\n // value + (value - something) => (value + value) - something\n // value - (value + something) => (value - value) - something\n // value - (value - something) => (value - value) + something\n if (left.type === right.left.type) {\n node = Object.assign({}, node);\n node.left = reduce({\n type: 'MathExpression',\n operator: op,\n left: left,\n right: right.left\n }, precision);\n node.right = right.right;\n node.operator = op === '-' ? flip(right.operator) : right.operator;\n return reduce(node, precision);\n }\n // value + (something + value) => (value + value) + something\n // value + (something - value) => (value - value) + something\n // value - (something + value) => (value - value) - something\n // value - (something - value) => (value + value) - something\n else if (left.type === right.right.type) {\n node = Object.assign({}, node);\n node.left = reduce({\n type: 'MathExpression',\n operator: op === '-' ? flip(right.operator) : right.operator,\n left: left,\n right: right.right\n }, precision);\n node.right = right.left;\n return reduce(node, precision);\n }\n }\n\n // (expr) <op> value\n if (left.type === 'MathExpression' && (left.operator === '+' || left.operator === '-') && isValueType(right.type)) {\n // (value + something) + value => (value + value) + something\n // (value - something) + value => (value + value) - something\n // (value + something) - value => (value - value) + something\n // (value - something) - value => (value - value) - something\n if (right.type === left.left.type) {\n node = Object.assign({}, left);\n node.left = reduce({\n type: 'MathExpression',\n operator: op,\n left: left.left,\n right: right\n }, precision);\n return reduce(node, precision);\n }\n // (something + value) + value => something + (value + value)\n // (something - value1) + value2 => something - (value2 - value1)\n // (something + value) - value => something + (value - value)\n // (something - value) - value => something - (value + value)\n else if (right.type === left.right.type) {\n node = Object.assign({}, left);\n if (left.operator === '-') {\n node.right = reduce({\n type: 'MathExpression',\n operator: op === '-' ? '+' : '-',\n left: right,\n right: left.right\n }, precision);\n node.operator = op === '-' ? '-' : '+';\n } else {\n node.right = reduce({\n type: 'MathExpression',\n operator: op,\n left: left.right,\n right: right\n }, precision);\n }\n if (node.right.value < 0) {\n node.right.value *= -1;\n node.operator = node.operator === '-' ? '+' : '-';\n }\n return reduce(node, precision);\n }\n }\n return node;\n}\n\nfunction reduceDivisionExpression(node, precision) {\n if (!isValueType(node.right.type)) return node;\n\n if (node.right.type !== 'Value') throw new Error(\"Cannot divide by \\\"\" + node.right.unit + \"\\\", number expected\");\n\n if (node.right.value === 0) throw new Error('Cannot divide by zero');\n\n // (expr) / value\n if (node.left.type === 'MathExpression') {\n if (isValueType(node.left.left.type) && isValueType(node.left.right.type)) {\n node.left.left.value /= node.right.value;\n node.left.right.value /= node.right.value;\n return reduce(node.left, precision);\n }\n return node;\n }\n // something / value\n else if (isValueType(node.left.type)) {\n node.left.value /= node.right.value;\n return node.left;\n }\n return node;\n}\n\nfunction reduceMultiplicationExpression(node) {\n // (expr) * value\n if (node.left.type === 'MathExpression' && node.right.type === 'Value') {\n if (isValueType(node.left.left.type) && isValueType(node.left.right.type)) {\n node.left.left.value *= node.right.value;\n node.left.right.value *= node.right.value;\n return node.left;\n }\n }\n // something * value\n else if (isValueType(node.left.type) && node.right.type === 'Value') {\n node.left.value *= node.right.value;\n return node.left;\n }\n // value * (expr)\n else if (node.left.type === 'Value' && node.right.type === 'MathExpression') {\n if (isValueType(node.right.left.type) && isValueType(node.right.right.type)) {\n node.right.left.value *= node.left.value;\n node.right.right.value *= node.left.value;\n return node.right;\n }\n }\n // value * something\n else if (node.left.type === 'Value' && isValueType(node.right.type)) {\n node.right.value *= node.left.value;\n return node.right;\n }\n return node;\n}\n\nfunction reduceMathExpression(node, precision) {\n node = convertMathExpression(node, precision);\n\n switch (node.operator) {\n case \"+\":\n case \"-\":\n return reduceAddSubExpression(node, precision);\n case \"/\":\n return reduceDivisionExpression(node, precision);\n case \"*\":\n return reduceMultiplicationExpression(node);\n }\n return node;\n}\n\nexports.default = reduce;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (calc, node, precision) {\n var str = stringify(node, precision);\n\n if (node.type === \"MathExpression\") {\n // if calc expression couldn't be resolved to a single value, re-wrap it as\n // a calc()\n str = calc + \"(\" + str + \")\";\n }\n return str;\n};\n\nvar _reducer = require(\"./reducer\");\n\nvar order = {\n \"*\": 0,\n \"/\": 0,\n \"+\": 1,\n \"-\": 1\n};\n\nfunction round(value, prec) {\n if (prec !== false) {\n var precision = Math.pow(10, prec);\n return Math.round(value * precision) / precision;\n }\n return value;\n}\n\nfunction stringify(node, prec) {\n switch (node.type) {\n case \"MathExpression\":\n {\n var left = node.left,\n right = node.right,\n op = node.operator;\n\n var str = \"\";\n\n if (left.type === 'MathExpression' && order[op] < order[left.operator]) str += \"(\" + stringify(left, prec) + \")\";else str += stringify(left, prec);\n\n str += \" \" + node.operator + \" \";\n\n if (right.type === 'MathExpression' && order[op] < order[right.operator]) {\n str += \"(\" + stringify(right, prec) + \")\";\n } else if (right.type === 'MathExpression' && op === \"-\" && [\"+\", \"-\"].includes(right.operator)) {\n // fix #52 : a-(b+c) = a-b-c\n right.operator = (0, _reducer.flip)(right.operator);\n str += stringify(right, prec);\n } else {\n str += stringify(right, prec);\n }\n\n return str;\n }\n case \"Value\":\n return round(node.value, prec);\n case 'CssVariable':\n if (node.fallback) {\n return \"var(\" + node.value + \", \" + stringify(node.fallback, prec, true) + \")\";\n }\n return \"var(\" + node.value + \")\";\n case 'Calc':\n if (node.prefix) {\n return \"-\" + node.prefix + \"-calc(\" + stringify(node.value, prec) + \")\";\n }\n return \"calc(\" + stringify(node.value, prec) + \")\";\n default:\n return round(node.value, prec) + node.unit;\n }\n}\n\nmodule.exports = exports[\"default\"];","\n/* parser generated by jison 0.6.1-215 */\n\n/*\n * Returns a Parser object of the following structure:\n *\n * Parser: {\n * yy: {} The so-called \"shared state\" or rather the *source* of it;\n * the real \"shared state\" `yy` passed around to\n * the rule actions, etc. is a derivative/copy of this one,\n * not a direct reference!\n * }\n *\n * Parser.prototype: {\n * yy: {},\n * EOF: 1,\n * TERROR: 2,\n *\n * trace: function(errorMessage, ...),\n *\n * JisonParserError: function(msg, hash),\n *\n * quoteName: function(name),\n * Helper function which can be overridden by user code later on: put suitable\n * quotes around literal IDs in a description string.\n *\n * originalQuoteName: function(name),\n * The basic quoteName handler provided by JISON.\n * `cleanupAfterParse()` will clean up and reset `quoteName()` to reference this function\n * at the end of the `parse()`.\n *\n * describeSymbol: function(symbol),\n * Return a more-or-less human-readable description of the given symbol, when\n * available, or the symbol itself, serving as its own 'description' for lack\n * of something better to serve up.\n *\n * Return NULL when the symbol is unknown to the parser.\n *\n * symbols_: {associative list: name ==> number},\n * terminals_: {associative list: number ==> name},\n * nonterminals: {associative list: rule-name ==> {associative list: number ==> rule-alt}},\n * terminal_descriptions_: (if there are any) {associative list: number ==> description},\n * productions_: [...],\n *\n * performAction: function parser__performAction(yytext, yyleng, yylineno, yyloc, yystate, yysp, yyvstack, yylstack, yystack, yysstack),\n *\n * The function parameters and `this` have the following value/meaning:\n * - `this` : reference to the `yyval` internal object, which has members (`$` and `_$`)\n * to store/reference the rule value `$$` and location info `@$`.\n *\n * One important thing to note about `this` a.k.a. `yyval`: every *reduce* action gets\n * to see the same object via the `this` reference, i.e. if you wish to carry custom\n * data from one reduce action through to the next within a single parse run, then you\n * may get nasty and use `yyval` a.k.a. `this` for storing you own semi-permanent data.\n *\n * `this.yy` is a direct reference to the `yy` shared state object.\n *\n * `%parse-param`-specified additional `parse()` arguments have been added to this `yy`\n * object at `parse()` start and are therefore available to the action code via the\n * same named `yy.xxxx` attributes (where `xxxx` represents a identifier name from\n * the %parse-param` list.\n *\n * - `yytext` : reference to the lexer value which belongs to the last lexer token used\n * to match this rule. This is *not* the look-ahead token, but the last token\n * that's actually part of this rule.\n *\n * Formulated another way, `yytext` is the value of the token immediately preceeding\n * the current look-ahead token.\n * Caveats apply for rules which don't require look-ahead, such as epsilon rules.\n *\n * - `yyleng` : ditto as `yytext`, only now for the lexer.yyleng value.\n *\n * - `yylineno`: ditto as `yytext`, only now for the lexer.yylineno value.\n *\n * - `yyloc` : ditto as `yytext`, only now for the lexer.yylloc lexer token location info.\n *\n * WARNING: since jison 0.4.18-186 this entry may be NULL/UNDEFINED instead\n * of an empty object when no suitable location info can be provided.\n *\n * - `yystate` : the current parser state number, used internally for dispatching and\n * executing the action code chunk matching the rule currently being reduced.\n *\n * - `yysp` : the current state stack position (a.k.a. 'stack pointer')\n *\n * This one comes in handy when you are going to do advanced things to the parser\n * stacks, all of which are accessible from your action code (see the next entries below).\n *\n * Also note that you can access this and other stack index values using the new double-hash\n * syntax, i.e. `##$ === ##0 === yysp`, while `##1` is the stack index for all things\n * related to the first rule term, just like you have `$1`, `@1` and `#1`.\n * This is made available to write very advanced grammar action rules, e.g. when you want\n * to investigate the parse state stack in your action code, which would, for example,\n * be relevant when you wish to implement error diagnostics and reporting schemes similar\n * to the work described here:\n *\n * + Pottier, F., 2016. Reachability and error diagnosis in LR(1) automata.\n * In Journées Francophones des Languages Applicatifs.\n *\n * + Jeffery, C.L., 2003. Generating LR syntax error messages from examples.\n * ACM Transactions on Programming Languages and Systems (TOPLAS), 25(5), pp.631–640.\n *\n * - `yyrulelength`: the current rule's term count, i.e. the number of entries occupied on the stack.\n *\n * This one comes in handy when you are going to do advanced things to the parser\n * stacks, all of which are accessible from your action code (see the next entries below).\n *\n * - `yyvstack`: reference to the parser value stack. Also accessed via the `$1` etc.\n * constructs.\n *\n * - `yylstack`: reference to the parser token location stack. Also accessed via\n * the `@1` etc. constructs.\n *\n * WARNING: since jison 0.4.18-186 this array MAY contain slots which are\n * UNDEFINED rather than an empty (location) object, when the lexer/parser\n * action code did not provide a suitable location info object when such a\n * slot was filled!\n *\n * - `yystack` : reference to the parser token id stack. Also accessed via the\n * `#1` etc. constructs.\n *\n * Note: this is a bit of a **white lie** as we can statically decode any `#n` reference to\n * its numeric token id value, hence that code wouldn't need the `yystack` but *you* might\n * want access this array for your own purposes, such as error analysis as mentioned above!\n *\n * Note that this stack stores the current stack of *tokens*, that is the sequence of\n * already parsed=reduced *nonterminals* (tokens representing rules) and *terminals*\n * (lexer tokens *shifted* onto the stack until the rule they belong to is found and\n * *reduced*.\n *\n * - `yysstack`: reference to the parser state stack. This one carries the internal parser\n * *states* such as the one in `yystate`, which are used to represent\n * the parser state machine in the *parse table*. *Very* *internal* stuff,\n * what can I say? If you access this one, you're clearly doing wicked things\n *\n * - `...` : the extra arguments you specified in the `%parse-param` statement in your\n * grammar definition file.\n *\n * table: [...],\n * State transition table\n * ----------------------\n *\n * index levels are:\n * - `state` --> hash table\n * - `symbol` --> action (number or array)\n *\n * If the `action` is an array, these are the elements' meaning:\n * - index [0]: 1 = shift, 2 = reduce, 3 = accept\n * - index [1]: GOTO `state`\n *\n * If the `action` is a number, it is the GOTO `state`\n *\n * defaultActions: {...},\n *\n * parseError: function(str, hash, ExceptionClass),\n * yyError: function(str, ...),\n * yyRecovering: function(),\n * yyErrOk: function(),\n * yyClearIn: function(),\n *\n * constructParseErrorInfo: function(error_message, exception_object, expected_token_set, is_recoverable),\n * Helper function **which will be set up during the first invocation of the `parse()` method**.\n * Produces a new errorInfo 'hash object' which can be passed into `parseError()`.\n * See it's use in this parser kernel in many places; example usage:\n *\n * var infoObj = parser.constructParseErrorInfo('fail!', null,\n * parser.collect_expected_token_set(state), true);\n * var retVal = parser.parseError(infoObj.errStr, infoObj, parser.JisonParserError);\n *\n * originalParseError: function(str, hash, ExceptionClass),\n * The basic `parseError` handler provided by JISON.\n * `cleanupAfterParse()` will clean up and reset `parseError()` to reference this function\n * at the end of the `parse()`.\n *\n * options: { ... parser %options ... },\n *\n * parse: function(input[, args...]),\n * Parse the given `input` and return the parsed value (or `true` when none was provided by\n * the root action, in which case the parser is acting as a *matcher*).\n * You MAY use the additional `args...` parameters as per `%parse-param` spec of this grammar:\n * these extra `args...` are added verbatim to the `yy` object reference as member variables.\n *\n * WARNING:\n * Parser's additional `args...` parameters (via `%parse-param`) MAY conflict with\n * any attributes already added to `yy` by the jison run-time;\n * when such a collision is detected an exception is thrown to prevent the generated run-time\n * from silently accepting this confusing and potentially hazardous situation!\n *\n * The lexer MAY add its own set of additional parameters (via the `%parse-param` line in\n * the lexer section of the grammar spec): these will be inserted in the `yy` shared state\n * object and any collision with those will be reported by the lexer via a thrown exception.\n *\n * cleanupAfterParse: function(resultValue, invoke_post_methods, do_not_nuke_errorinfos),\n * Helper function **which will be set up during the first invocation of the `parse()` method**.\n * This helper API is invoked at the end of the `parse()` call, unless an exception was thrown\n * and `%options no-try-catch` has been defined for this grammar: in that case this helper MAY\n * be invoked by calling user code to ensure the `post_parse` callbacks are invoked and\n * the internal parser gets properly garbage collected under these particular circumstances.\n *\n * yyMergeLocationInfo: function(first_index, last_index, first_yylloc, last_yylloc, dont_look_back),\n * Helper function **which will be set up during the first invocation of the `parse()` method**.\n * This helper API can be invoked to calculate a spanning `yylloc` location info object.\n *\n * Note: %epsilon rules MAY specify no `first_index` and `first_yylloc`, in which case\n * this function will attempt to obtain a suitable location marker by inspecting the location stack\n * backwards.\n *\n * For more info see the documentation comment further below, immediately above this function's\n * implementation.\n *\n * lexer: {\n * yy: {...}, A reference to the so-called \"shared state\" `yy` once\n * received via a call to the `.setInput(input, yy)` lexer API.\n * EOF: 1,\n * ERROR: 2,\n * JisonLexerError: function(msg, hash),\n * parseError: function(str, hash, ExceptionClass),\n * setInput: function(input, [yy]),\n * input: function(),\n * unput: function(str),\n * more: function(),\n * reject: function(),\n * less: function(n),\n * pastInput: function(n),\n * upcomingInput: function(n),\n * showPosition: function(),\n * test_match: function(regex_match_array, rule_index, ...),\n * next: function(...),\n * lex: function(...),\n * begin: function(condition),\n * pushState: function(condition),\n * popState: function(),\n * topState: function(),\n * _currentRules: function(),\n * stateStackSize: function(),\n * cleanupAfterLex: function()\n *\n * options: { ... lexer %options ... },\n *\n * performAction: function(yy, yy_, $avoiding_name_collisions, YY_START, ...),\n * rules: [...],\n * conditions: {associative list: name ==> set},\n * }\n * }\n *\n *\n * token location info (@$, _$, etc.): {\n * first_line: n,\n * last_line: n,\n * first_column: n,\n * last_column: n,\n * range: [start_number, end_number]\n * (where the numbers are indexes into the input string, zero-based)\n * }\n *\n * ---\n *\n * The `parseError` function receives a 'hash' object with these members for lexer and\n * parser errors:\n *\n * {\n * text: (matched text)\n * token: (the produced terminal token, if any)\n * token_id: (the produced terminal token numeric ID, if any)\n * line: (yylineno)\n * loc: (yylloc)\n * }\n *\n * parser (grammar) errors will also provide these additional members:\n *\n * {\n * expected: (array describing the set of expected tokens;\n * may be UNDEFINED when we cannot easily produce such a set)\n * state: (integer (or array when the table includes grammar collisions);\n * represents the current internal state of the parser kernel.\n * can, for example, be used to pass to the `collect_expected_token_set()`\n * API to obtain the expected token set)\n * action: (integer; represents the current internal action which will be executed)\n * new_state: (integer; represents the next/planned internal state, once the current\n * action has executed)\n * recoverable: (boolean: TRUE when the parser MAY have an error recovery rule\n * available for this particular error)\n * state_stack: (array: the current parser LALR/LR internal state stack; this can be used,\n * for instance, for advanced error analysis and reporting)\n * value_stack: (array: the current parser LALR/LR internal `$$` value stack; this can be used,\n * for instance, for advanced error analysis and reporting)\n * location_stack: (array: the current parser LALR/LR internal location stack; this can be used,\n * for instance, for advanced error analysis and reporting)\n * yy: (object: the current parser internal \"shared state\" `yy`\n * as is also available in the rule actions; this can be used,\n * for instance, for advanced error analysis and reporting)\n * lexer: (reference to the current lexer instance used by the parser)\n * parser: (reference to the current parser instance)\n * }\n *\n * while `this` will reference the current parser instance.\n *\n * When `parseError` is invoked by the lexer, `this` will still reference the related *parser*\n * instance, while these additional `hash` fields will also be provided:\n *\n * {\n * lexer: (reference to the current lexer instance which reported the error)\n * }\n *\n * When `parseError` is invoked by the parser due to a **JavaScript exception** being fired\n * from either the parser or lexer, `this` will still reference the related *parser*\n * instance, while these additional `hash` fields will also be provided:\n *\n * {\n * exception: (reference to the exception thrown)\n * }\n *\n * Please do note that in the latter situation, the `expected` field will be omitted as\n * this type of failure is assumed not to be due to *parse errors* but rather due to user\n * action code in either parser or lexer failing unexpectedly.\n *\n * ---\n *\n * You can specify parser options by setting / modifying the `.yy` object of your Parser instance.\n * These options are available:\n *\n * ### options which are global for all parser instances\n *\n * Parser.pre_parse: function(yy)\n * optional: you can specify a pre_parse() function in the chunk following\n * the grammar, i.e. after the last `%%`.\n * Parser.post_parse: function(yy, retval, parseInfo) { return retval; }\n * optional: you can specify a post_parse() function in the chunk following\n * the grammar, i.e. after the last `%%`. When it does not return any value,\n * the parser will return the original `retval`.\n *\n * ### options which can be set up per parser instance\n *\n * yy: {\n * pre_parse: function(yy)\n * optional: is invoked before the parse cycle starts (and before the first\n * invocation of `lex()`) but immediately after the invocation of\n * `parser.pre_parse()`).\n * post_parse: function(yy, retval, parseInfo) { return retval; }\n * optional: is invoked when the parse terminates due to success ('accept')\n * or failure (even when exceptions are thrown).\n * `retval` contains the return value to be produced by `Parser.parse()`;\n * this function can override the return value by returning another.\n * When it does not return any value, the parser will return the original\n * `retval`.\n * This function is invoked immediately before `parser.post_parse()`.\n *\n * parseError: function(str, hash, ExceptionClass)\n * optional: overrides the default `parseError` function.\n * quoteName: function(name),\n * optional: overrides the default `quoteName` function.\n * }\n *\n * parser.lexer.options: {\n * pre_lex: function()\n * optional: is invoked before the lexer is invoked to produce another token.\n * `this` refers to the Lexer object.\n * post_lex: function(token) { return token; }\n * optional: is invoked when the lexer has produced a token `token`;\n * this function can override the returned token value by returning another.\n * When it does not return any (truthy) value, the lexer will return\n * the original `token`.\n * `this` refers to the Lexer object.\n *\n * ranges: boolean\n * optional: `true` ==> token location info will include a .range[] member.\n * flex: boolean\n * optional: `true` ==> flex-like lexing behaviour where the rules are tested\n * exhaustively to find the longest match.\n * backtrack_lexer: boolean\n * optional: `true` ==> lexer regexes are tested in order and for invoked;\n * the lexer terminates the scan when a token is returned by the action code.\n * xregexp: boolean\n * optional: `true` ==> lexer rule regexes are \"extended regex format\" requiring the\n * `XRegExp` library. When this `%option` has not been specified at compile time, all lexer\n * rule regexes have been written as standard JavaScript RegExp expressions.\n * }\n */\n\n \n \n var parser = (function () {\n\n\n// See also:\n// http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript/#35881508\n// but we keep the prototype.constructor and prototype.name assignment lines too for compatibility\n// with userland code which might access the derived class in a 'classic' way.\nfunction JisonParserError(msg, hash) {\n Object.defineProperty(this, 'name', {\n enumerable: false,\n writable: false,\n value: 'JisonParserError'\n });\n\n if (msg == null) msg = '???';\n\n Object.defineProperty(this, 'message', {\n enumerable: false,\n writable: true,\n value: msg\n });\n\n this.hash = hash;\n\n var stacktrace;\n if (hash && hash.exception instanceof Error) {\n var ex2 = hash.exception;\n this.message = ex2.message || msg;\n stacktrace = ex2.stack;\n }\n if (!stacktrace) {\n if (Error.hasOwnProperty('captureStackTrace')) { // V8/Chrome engine\n Error.captureStackTrace(this, this.constructor);\n } else {\n stacktrace = (new Error(msg)).stack;\n }\n }\n if (stacktrace) {\n Object.defineProperty(this, 'stack', {\n enumerable: false,\n writable: false,\n value: stacktrace\n });\n }\n}\n\nif (typeof Object.setPrototypeOf === 'function') {\n Object.setPrototypeOf(JisonParserError.prototype, Error.prototype);\n} else {\n JisonParserError.prototype = Object.create(Error.prototype);\n}\nJisonParserError.prototype.constructor = JisonParserError;\nJisonParserError.prototype.name = 'JisonParserError';\n\n\n\n\n // helper: reconstruct the productions[] table\n function bp(s) {\n var rv = [];\n var p = s.pop;\n var r = s.rule;\n for (var i = 0, l = p.length; i < l; i++) {\n rv.push([\n p[i],\n r[i]\n ]);\n }\n return rv;\n }\n \n\n\n // helper: reconstruct the defaultActions[] table\n function bda(s) {\n var rv = {};\n var d = s.idx;\n var g = s.goto;\n for (var i = 0, l = d.length; i < l; i++) {\n var j = d[i];\n rv[j] = g[i];\n }\n return rv;\n }\n \n\n\n // helper: reconstruct the 'goto' table\n function bt(s) {\n var rv = [];\n var d = s.len;\n var y = s.symbol;\n var t = s.type;\n var a = s.state;\n var m = s.mode;\n var g = s.goto;\n for (var i = 0, l = d.length; i < l; i++) {\n var n = d[i];\n var q = {};\n for (var j = 0; j < n; j++) {\n var z = y.shift();\n switch (t.shift()) {\n case 2:\n q[z] = [\n m.shift(),\n g.shift()\n ];\n break;\n\n case 0:\n q[z] = a.shift();\n break;\n\n default:\n // type === 1: accept\n q[z] = [\n 3\n ];\n }\n }\n rv.push(q);\n }\n return rv;\n }\n \n\n\n // helper: runlength encoding with increment step: code, length: step (default step = 0)\n // `this` references an array\n function s(c, l, a) {\n a = a || 0;\n for (var i = 0; i < l; i++) {\n this.push(c);\n c += a;\n }\n }\n\n // helper: duplicate sequence from *relative* offset and length.\n // `this` references an array\n function c(i, l) {\n i = this.length - i;\n for (l += i; i < l; i++) {\n this.push(this[i]);\n }\n }\n\n // helper: unpack an array using helpers and data, all passed in an array argument 'a'.\n function u(a) {\n var rv = [];\n for (var i = 0, l = a.length; i < l; i++) {\n var e = a[i];\n // Is this entry a helper function?\n if (typeof e === 'function') {\n i++;\n e.apply(rv, a[i]);\n } else {\n rv.push(e);\n }\n }\n return rv;\n }\n \n\nvar parser = {\n // Code Generator Information Report\n // ---------------------------------\n //\n // Options:\n //\n // default action mode: ............. [\"classic\",\"merge\"]\n // test-compile action mode: ........ \"parser:*,lexer:*\"\n // try..catch: ...................... true\n // default resolve on conflict: ..... true\n // on-demand look-ahead: ............ false\n // error recovery token skip maximum: 3\n // yyerror in parse actions is: ..... NOT recoverable,\n // yyerror in lexer actions and other non-fatal lexer are:\n // .................................. NOT recoverable,\n // debug grammar/output: ............ false\n // has partial LR conflict upgrade: true\n // rudimentary token-stack support: false\n // parser table compression mode: ... 2\n // export debug tables: ............. false\n // export *all* tables: ............. false\n // module type: ..................... commonjs\n // parser engine type: .............. lalr\n // output main() in the module: ..... true\n // has user-specified main(): ....... false\n // has user-specified require()/import modules for main():\n // .................................. false\n // number of expected conflicts: .... 0\n //\n //\n // Parser Analysis flags:\n //\n // no significant actions (parser is a language matcher only):\n // .................................. false\n // uses yyleng: ..................... false\n // uses yylineno: ................... false\n // uses yytext: ..................... false\n // uses yylloc: ..................... false\n // uses ParseError API: ............. false\n // uses YYERROR: .................... false\n // uses YYRECOVERING: ............... false\n // uses YYERROK: .................... false\n // uses YYCLEARIN: .................. false\n // tracks rule values: .............. true\n // assigns rule values: ............. true\n // uses location tracking: .......... false\n // assigns location: ................ false\n // uses yystack: .................... false\n // uses yysstack: ................... false\n // uses yysp: ....................... true\n // uses yyrulelength: ............... false\n // uses yyMergeLocationInfo API: .... false\n // has error recovery: .............. false\n // has error reporting: ............. false\n //\n // --------- END OF REPORT -----------\n\ntrace: function no_op_trace() { },\nJisonParserError: JisonParserError,\nyy: {},\noptions: {\n type: \"lalr\",\n hasPartialLrUpgradeOnConflict: true,\n errorRecoveryTokenDiscardCount: 3\n},\nsymbols_: {\n \"$accept\": 0,\n \"$end\": 1,\n \"ADD\": 3,\n \"ANGLE\": 16,\n \"CHS\": 22,\n \"COMMA\": 14,\n \"CSS_CPROP\": 13,\n \"CSS_VAR\": 12,\n \"DIV\": 6,\n \"EMS\": 20,\n \"EOF\": 1,\n \"EXS\": 21,\n \"FREQ\": 18,\n \"LENGTH\": 15,\n \"LPAREN\": 7,\n \"MUL\": 5,\n \"NESTED_CALC\": 9,\n \"NUMBER\": 11,\n \"PERCENTAGE\": 28,\n \"PREFIX\": 10,\n \"REMS\": 23,\n \"RES\": 19,\n \"RPAREN\": 8,\n \"SUB\": 4,\n \"TIME\": 17,\n \"VHS\": 24,\n \"VMAXS\": 27,\n \"VMINS\": 26,\n \"VWS\": 25,\n \"css_value\": 33,\n \"css_variable\": 32,\n \"error\": 2,\n \"expression\": 29,\n \"math_expression\": 30,\n \"value\": 31\n},\nterminals_: {\n 1: \"EOF\",\n 2: \"error\",\n 3: \"ADD\",\n 4: \"SUB\",\n 5: \"MUL\",\n 6: \"DIV\",\n 7: \"LPAREN\",\n 8: \"RPAREN\",\n 9: \"NESTED_CALC\",\n 10: \"PREFIX\",\n 11: \"NUMBER\",\n 12: \"CSS_VAR\",\n 13: \"CSS_CPROP\",\n 14: \"COMMA\",\n 15: \"LENGTH\",\n 16: \"ANGLE\",\n 17: \"TIME\",\n 18: \"FREQ\",\n 19: \"RES\",\n 20: \"EMS\",\n 21: \"EXS\",\n 22: \"CHS\",\n 23: \"REMS\",\n 24: \"VHS\",\n 25: \"VWS\",\n 26: \"VMINS\",\n 27: \"VMAXS\",\n 28: \"PERCENTAGE\"\n},\nTERROR: 2,\n EOF: 1,\n\n // internals: defined here so the object *structure* doesn't get modified by parse() et al,\n // thus helping JIT compilers like Chrome V8.\n originalQuoteName: null,\n originalParseError: null,\n cleanupAfterParse: null,\n constructParseErrorInfo: null,\n yyMergeLocationInfo: null,\n\n __reentrant_call_depth: 0, // INTERNAL USE ONLY\n __error_infos: [], // INTERNAL USE ONLY: the set of parseErrorInfo objects created since the last cleanup\n __error_recovery_infos: [], // INTERNAL USE ONLY: the set of parseErrorInfo objects created since the last cleanup\n\n // APIs which will be set up depending on user action code analysis:\n //yyRecovering: 0,\n //yyErrOk: 0,\n //yyClearIn: 0,\n\n // Helper APIs\n // -----------\n\n // Helper function which can be overridden by user code later on: put suitable quotes around\n // literal IDs in a description string.\n quoteName: function parser_quoteName(id_str) {\n return '\"' + id_str + '\"';\n },\n\n // Return the name of the given symbol (terminal or non-terminal) as a string, when available.\n //\n // Return NULL when the symbol is unknown to the parser.\n getSymbolName: function parser_getSymbolName(symbol) {\n if (this.terminals_[symbol]) {\n return this.terminals_[symbol];\n }\n\n // Otherwise... this might refer to a RULE token i.e. a non-terminal: see if we can dig that one up.\n //\n // An example of this may be where a rule's action code contains a call like this:\n //\n // parser.getSymbolName(#$)\n //\n // to obtain a human-readable name of the current grammar rule.\n var s = this.symbols_;\n for (var key in s) {\n if (s[key] === symbol) {\n return key;\n }\n }\n return null;\n },\n\n // Return a more-or-less human-readable description of the given symbol, when available,\n // or the symbol itself, serving as its own 'description' for lack of something better to serve up.\n //\n // Return NULL when the symbol is unknown to the parser.\n describeSymbol: function parser_describeSymbol(symbol) {\n if (symbol !== this.EOF && this.terminal_descriptions_ && this.terminal_descriptions_[symbol]) {\n return this.terminal_descriptions_[symbol];\n }\n else if (symbol === this.EOF) {\n return 'end of input';\n }\n var id = this.getSymbolName(symbol);\n if (id) {\n return this.quoteName(id);\n }\n return null;\n },\n\n // Produce a (more or less) human-readable list of expected tokens at the point of failure.\n //\n // The produced list may contain token or token set descriptions instead of the tokens\n // themselves to help turning this output into something that easier to read by humans\n // unless `do_not_describe` parameter is set, in which case a list of the raw, *numeric*,\n // expected terminals and nonterminals is produced.\n //\n // The returned list (array) will not contain any duplicate entries.\n collect_expected_token_set: function parser_collect_expected_token_set(state, do_not_describe) {\n var TERROR = this.TERROR;\n var tokenset = [];\n var check = {};\n // Has this (error?) state been outfitted with a custom expectations description text for human consumption?\n // If so, use that one instead of the less palatable token set.\n if (!do_not_describe && this.state_descriptions_ && this.state_descriptions_[state]) {\n return [\n this.state_descriptions_[state]\n ];\n }\n for (var p in this.table[state]) {\n p = +p;\n if (p !== TERROR) {\n var d = do_not_describe ? p : this.describeSymbol(p);\n if (d && !check[d]) {\n tokenset.push(d);\n check[d] = true; // Mark this token description as already mentioned to prevent outputting duplicate entries.\n }\n }\n }\n return tokenset;\n },\nproductions_: bp({\n pop: u([\n 29,\n s,\n [30, 10],\n 31,\n 31,\n 32,\n 32,\n s,\n [33, 15]\n]),\n rule: u([\n 2,\n s,\n [3, 5],\n 4,\n 7,\n s,\n [1, 4],\n 2,\n 4,\n 6,\n s,\n [1, 14],\n 2\n])\n}),\nperformAction: function parser__PerformAction(yystate /* action[1] */, yysp, yyvstack) {\n\n /* this == yyval */\n\n // the JS engine itself can go and remove these statements when `yy` turns out to be unused in any action code!\n var yy = this.yy;\n var yyparser = yy.parser;\n var yylexer = yy.lexer;\n\n \n\n switch (yystate) {\ncase 0:\n /*! Production:: $accept : expression $end */\n\n // default action (generated by JISON mode classic/merge :: 1,VT,VA,-,-,-,-,-,-):\n this.$ = yyvstack[yysp - 1];\n // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,-,-,-,-,-,-)\n break;\n\ncase 1:\n /*! Production:: expression : math_expression EOF */\n\n // default action (generated by JISON mode classic/merge :: 2,VT,VA,-,-,-,-,-,-):\n this.$ = yyvstack[yysp - 1];\n // END of default action (generated by JISON mode classic/merge :: 2,VT,VA,-,-,-,-,-,-)\n \n \n return yyvstack[yysp - 1];\n break;\n\ncase 2:\n /*! Production:: math_expression : math_expression ADD math_expression */\ncase 3:\n /*! Production:: math_expression : math_expression SUB math_expression */\ncase 4:\n /*! Production:: math_expression : math_expression MUL math_expression */\ncase 5:\n /*! Production:: math_expression : math_expression DIV math_expression */\n\n this.$ = { type: 'MathExpression', operator: yyvstack[yysp - 1], left: yyvstack[yysp - 2], right: yyvstack[yysp] };\n break;\n\ncase 6:\n /*! Production:: math_expression : LPAREN math_expression RPAREN */\n\n this.$ = yyvstack[yysp - 1];\n break;\n\ncase 7:\n /*! Production:: math_expression : NESTED_CALC LPAREN math_expression RPAREN */\n\n this.$ = { type: 'Calc', value: yyvstack[yysp - 1] };\n break;\n\ncase 8:\n /*! Production:: math_expression : SUB PREFIX SUB NESTED_CALC LPAREN math_expression RPAREN */\n\n this.$ = { type: 'Calc', value: yyvstack[yysp - 1], prefix: yyvstack[yysp - 5] };\n break;\n\ncase 9:\n /*! Production:: math_expression : css_variable */\ncase 10:\n /*! Production:: math_expression : css_value */\ncase 11:\n /*! Production:: math_expression : value */\n\n this.$ = yyvstack[yysp];\n break;\n\ncase 12:\n /*! Production:: value : NUMBER */\n\n this.$ = { type: 'Value', value: parseFloat(yyvstack[yysp]) };\n break;\n\ncase 13:\n /*! Production:: value : SUB NUMBER */\n\n this.$ = { type: 'Value', value: parseFloat(yyvstack[yysp]) * -1 };\n break;\n\ncase 14:\n /*! Production:: css_variable : CSS_VAR LPAREN CSS_CPROP RPAREN */\n\n this.$ = { type: 'CssVariable', value: yyvstack[yysp - 1] };\n break;\n\ncase 15:\n /*! Production:: css_variable : CSS_VAR LPAREN CSS_CPROP COMMA math_expression RPAREN */\n\n this.$ = { type: 'CssVariable', value: yyvstack[yysp - 3], fallback: yyvstack[yysp - 1] };\n break;\n\ncase 16:\n /*! Production:: css_value : LENGTH */\n\n this.$ = { type: 'LengthValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 17:\n /*! Production:: css_value : ANGLE */\n\n this.$ = { type: 'AngleValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 18:\n /*! Production:: css_value : TIME */\n\n this.$ = { type: 'TimeValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 19:\n /*! Production:: css_value : FREQ */\n\n this.$ = { type: 'FrequencyValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 20:\n /*! Production:: css_value : RES */\n\n this.$ = { type: 'ResolutionValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 21:\n /*! Production:: css_value : EMS */\n\n this.$ = { type: 'EmValue', value: parseFloat(yyvstack[yysp]), unit: 'em' };\n break;\n\ncase 22:\n /*! Production:: css_value : EXS */\n\n this.$ = { type: 'ExValue', value: parseFloat(yyvstack[yysp]), unit: 'ex' };\n break;\n\ncase 23:\n /*! Production:: css_value : CHS */\n\n this.$ = { type: 'ChValue', value: parseFloat(yyvstack[yysp]), unit: 'ch' };\n break;\n\ncase 24:\n /*! Production:: css_value : REMS */\n\n this.$ = { type: 'RemValue', value: parseFloat(yyvstack[yysp]), unit: 'rem' };\n break;\n\ncase 25:\n /*! Production:: css_value : VHS */\n\n this.$ = { type: 'VhValue', value: parseFloat(yyvstack[yysp]), unit: 'vh' };\n break;\n\ncase 26:\n /*! Production:: css_value : VWS */\n\n this.$ = { type: 'VwValue', value: parseFloat(yyvstack[yysp]), unit: 'vw' };\n break;\n\ncase 27:\n /*! Production:: css_value : VMINS */\n\n this.$ = { type: 'VminValue', value: parseFloat(yyvstack[yysp]), unit: 'vmin' };\n break;\n\ncase 28:\n /*! Production:: css_value : VMAXS */\n\n this.$ = { type: 'VmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'vmax' };\n break;\n\ncase 29:\n /*! Production:: css_value : PERCENTAGE */\n\n this.$ = { type: 'PercentageValue', value: parseFloat(yyvstack[yysp]), unit: '%' };\n break;\n\ncase 30:\n /*! Production:: css_value : SUB css_value */\n\n var prev = yyvstack[yysp]; prev.value *= -1; this.$ = prev;\n break;\n\n}\n},\ntable: bt({\n len: u([\n 24,\n 1,\n 5,\n 23,\n 1,\n 18,\n s,\n [0, 3],\n 1,\n s,\n [0, 16],\n s,\n [23, 4],\n c,\n [28, 3],\n 0,\n 0,\n 16,\n 1,\n 6,\n 6,\n s,\n [0, 3],\n 5,\n 1,\n 2,\n c,\n [37, 3],\n c,\n [20, 3],\n 5,\n 0,\n 0\n]),\n symbol: u([\n 4,\n 7,\n 9,\n 11,\n 12,\n s,\n [15, 19, 1],\n 1,\n 1,\n s,\n [3, 4, 1],\n c,\n [30, 19],\n c,\n [29, 4],\n 7,\n 4,\n 10,\n 11,\n c,\n [22, 14],\n c,\n [19, 3],\n c,\n [43, 22],\n c,\n [23, 69],\n c,\n [139, 4],\n 8,\n c,\n [51, 24],\n 4,\n c,\n [138, 15],\n 13,\n c,\n [186, 5],\n 8,\n c,\n [6, 6],\n c,\n [5, 5],\n 9,\n 8,\n 14,\n c,\n [159, 47],\n c,\n [60, 10]\n]),\n type: u([\n s,\n [2, 19],\n s,\n [0, 5],\n 1,\n s,\n [2, 24],\n s,\n [0, 4],\n c,\n [22, 19],\n c,\n [43, 42],\n c,\n [23, 70],\n c,\n [28, 25],\n c,\n [45, 25],\n c,\n [113, 54]\n]),\n state: u([\n 1,\n 2,\n 8,\n 6,\n 7,\n 30,\n c,\n [4, 3],\n 33,\n 37,\n c,\n [5, 3],\n 38,\n c,\n [4, 3],\n 39,\n c,\n [4, 3],\n 40,\n c,\n [4, 3],\n 42,\n c,\n [21, 4],\n 50,\n c,\n [5, 3],\n 51,\n c,\n [4, 3]\n]),\n mode: u([\n s,\n [1, 179],\n s,\n [2, 3],\n c,\n [5, 5],\n c,\n [6, 4],\n s,\n [1, 57]\n]),\n goto: u([\n 5,\n 3,\n 4,\n 24,\n s,\n [9, 15, 1],\n s,\n [25, 5, 1],\n c,\n [24, 19],\n 31,\n 35,\n 32,\n 34,\n c,\n [18, 14],\n 36,\n c,\n [38, 19],\n c,\n [19, 57],\n c,\n [118, 4],\n 41,\n c,\n [24, 19],\n 43,\n 35,\n c,\n [16, 14],\n 44,\n s,\n [2, 3],\n 28,\n 29,\n 2,\n s,\n [3, 3],\n 28,\n 29,\n 3,\n c,\n [53, 4],\n s,\n [45, 5, 1],\n c,\n [100, 42],\n 52,\n c,\n [5, 4],\n 53\n])\n}),\ndefaultActions: bda({\n idx: u([\n 6,\n 7,\n 8,\n s,\n [10, 16, 1],\n 33,\n 34,\n 39,\n 40,\n 41,\n 45,\n 47,\n 52,\n 53\n]),\n goto: u([\n 9,\n 10,\n 11,\n s,\n [16, 14, 1],\n 12,\n 1,\n 30,\n 13,\n s,\n [4, 4, 1],\n 14,\n 15,\n 8\n])\n}),\nparseError: function parseError(str, hash, ExceptionClass) {\n if (hash.recoverable) {\n if (typeof this.trace === 'function') {\n this.trace(str);\n }\n hash.destroy(); // destroy... well, *almost*!\n } else {\n if (typeof this.trace === 'function') {\n this.trace(str);\n }\n if (!ExceptionClass) {\n ExceptionClass = this.JisonParserError;\n }\n throw new ExceptionClass(str, hash);\n }\n},\nparse: function parse(input) {\n var self = this;\n var stack = new Array(128); // token stack: stores token which leads to state at the same index (column storage)\n var sstack = new Array(128); // state stack: stores states (column storage)\n\n var vstack = new Array(128); // semantic value stack\n\n var table = this.table;\n var sp = 0; // 'stack pointer': index into the stacks\n\n\n \n\n\n var symbol = 0;\n\n\n\n var TERROR = this.TERROR;\n var EOF = this.EOF;\n var ERROR_RECOVERY_TOKEN_DISCARD_COUNT = (this.options.errorRecoveryTokenDiscardCount | 0) || 3;\n var NO_ACTION = [0, 54 /* === table.length :: ensures that anyone using this new state will fail dramatically! */];\n\n var lexer;\n if (this.__lexer__) {\n lexer = this.__lexer__;\n } else {\n lexer = this.__lexer__ = Object.create(this.lexer);\n }\n\n var sharedState_yy = {\n parseError: undefined,\n quoteName: undefined,\n lexer: undefined,\n parser: undefined,\n pre_parse: undefined,\n post_parse: undefined,\n pre_lex: undefined,\n post_lex: undefined // WARNING: must be written this way for the code expanders to work correctly in both ES5 and ES6 modes!\n };\n\n var ASSERT;\n if (typeof assert !== 'function') {\n ASSERT = function JisonAssert(cond, msg) {\n if (!cond) {\n throw new Error('assertion failed: ' + (msg || '***'));\n }\n };\n } else {\n ASSERT = assert;\n }\n\n this.yyGetSharedState = function yyGetSharedState() {\n return sharedState_yy;\n };\n\n\n\n\n\n\n\n\n function shallow_copy_noclobber(dst, src) {\n for (var k in src) {\n if (typeof dst[k] === 'undefined' && Object.prototype.hasOwnProperty.call(src, k)) {\n dst[k] = src[k];\n }\n }\n }\n\n // copy state\n shallow_copy_noclobber(sharedState_yy, this.yy);\n\n sharedState_yy.lexer = lexer;\n sharedState_yy.parser = this;\n\n\n\n\n\n\n // Does the shared state override the default `parseError` that already comes with this instance?\n if (typeof sharedState_yy.parseError === 'function') {\n this.parseError = function parseErrorAlt(str, hash, ExceptionClass) {\n if (!ExceptionClass) {\n ExceptionClass = this.JisonParserError;\n }\n return sharedState_yy.parseError.call(this, str, hash, ExceptionClass);\n };\n } else {\n this.parseError = this.originalParseError;\n }\n\n // Does the shared state override the default `quoteName` that already comes with this instance?\n if (typeof sharedState_yy.quoteName === 'function') {\n this.quoteName = function quoteNameAlt(id_str) {\n return sharedState_yy.quoteName.call(this, id_str);\n };\n } else {\n this.quoteName = this.originalQuoteName;\n }\n\n // set up the cleanup function; make it an API so that external code can re-use this one in case of\n // calamities or when the `%options no-try-catch` option has been specified for the grammar, in which\n // case this parse() API method doesn't come with a `finally { ... }` block any more!\n //\n // NOTE: as this API uses parse() as a closure, it MUST be set again on every parse() invocation,\n // or else your `sharedState`, etc. references will be *wrong*!\n this.cleanupAfterParse = function parser_cleanupAfterParse(resultValue, invoke_post_methods, do_not_nuke_errorinfos) {\n var rv;\n\n if (invoke_post_methods) {\n var hash;\n\n if (sharedState_yy.post_parse || this.post_parse) {\n // create an error hash info instance: we re-use this API in a **non-error situation**\n // as this one delivers all parser internals ready for access by userland code.\n hash = this.constructParseErrorInfo(null /* no error! */, null /* no exception! */, null, false);\n }\n\n if (sharedState_yy.post_parse) {\n rv = sharedState_yy.post_parse.call(this, sharedState_yy, resultValue, hash);\n if (typeof rv !== 'undefined') resultValue = rv;\n }\n if (this.post_parse) {\n rv = this.post_parse.call(this, sharedState_yy, resultValue, hash);\n if (typeof rv !== 'undefined') resultValue = rv;\n }\n\n // cleanup:\n if (hash && hash.destroy) {\n hash.destroy();\n }\n }\n\n if (this.__reentrant_call_depth > 1) return resultValue; // do not (yet) kill the sharedState when this is a reentrant run.\n\n // clean up the lingering lexer structures as well:\n if (lexer.cleanupAfterLex) {\n lexer.cleanupAfterLex(do_not_nuke_errorinfos);\n }\n\n // prevent lingering circular references from causing memory leaks:\n if (sharedState_yy) {\n sharedState_yy.lexer = undefined;\n sharedState_yy.parser = undefined;\n if (lexer.yy === sharedState_yy) {\n lexer.yy = undefined;\n }\n }\n sharedState_yy = undefined;\n this.parseError = this.originalParseError;\n this.quoteName = this.originalQuoteName;\n\n // nuke the vstack[] array at least as that one will still reference obsoleted user values.\n // To be safe, we nuke the other internal stack columns as well...\n stack.length = 0; // fastest way to nuke an array without overly bothering the GC\n sstack.length = 0;\n\n vstack.length = 0;\n sp = 0;\n\n // nuke the error hash info instances created during this run.\n // Userland code must COPY any data/references\n // in the error hash instance(s) it is more permanently interested in.\n if (!do_not_nuke_errorinfos) {\n for (var i = this.__error_infos.length - 1; i >= 0; i--) {\n var el = this.__error_infos[i];\n if (el && typeof el.destroy === 'function') {\n el.destroy();\n }\n }\n this.__error_infos.length = 0;\n\n\n }\n\n return resultValue;\n };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // NOTE: as this API uses parse() as a closure, it MUST be set again on every parse() invocation,\n // or else your `lexer`, `sharedState`, etc. references will be *wrong*!\n this.constructParseErrorInfo = function parser_constructParseErrorInfo(msg, ex, expected, recoverable) {\n var pei = {\n errStr: msg,\n exception: ex,\n text: lexer.match,\n value: lexer.yytext,\n token: this.describeSymbol(symbol) || symbol,\n token_id: symbol,\n line: lexer.yylineno,\n\n expected: expected,\n recoverable: recoverable,\n state: state,\n action: action,\n new_state: newState,\n symbol_stack: stack,\n state_stack: sstack,\n value_stack: vstack,\n\n stack_pointer: sp,\n yy: sharedState_yy,\n lexer: lexer,\n parser: this,\n\n // and make sure the error info doesn't stay due to potential\n // ref cycle via userland code manipulations.\n // These would otherwise all be memory leak opportunities!\n //\n // Note that only array and object references are nuked as those\n // constitute the set of elements which can produce a cyclic ref.\n // The rest of the members is kept intact as they are harmless.\n destroy: function destructParseErrorInfo() {\n // remove cyclic references added to error info:\n // info.yy = null;\n // info.lexer = null;\n // info.value = null;\n // info.value_stack = null;\n // ...\n var rec = !!this.recoverable;\n for (var key in this) {\n if (this.hasOwnProperty(key) && typeof key === 'object') {\n this[key] = undefined;\n }\n }\n this.recoverable = rec;\n }\n };\n // track this instance so we can `destroy()` it once we deem it superfluous and ready for garbage collection!\n this.__error_infos.push(pei);\n return pei;\n };\n\n\n\n\n\n\n\n\n\n\n\n\n\n function getNonTerminalFromCode(symbol) {\n var tokenName = self.getSymbolName(symbol);\n if (!tokenName) {\n tokenName = symbol;\n }\n return tokenName;\n }\n\n\n function stdLex() {\n var token = lexer.lex();\n // if token isn't its numeric value, convert\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n\n return token || EOF;\n }\n\n function fastLex() {\n var token = lexer.fastLex();\n // if token isn't its numeric value, convert\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n\n return token || EOF;\n }\n\n var lex = stdLex;\n\n\n var state, action, r, t;\n var yyval = {\n $: true,\n _$: undefined,\n yy: sharedState_yy\n };\n var p;\n var yyrulelen;\n var this_production;\n var newState;\n var retval = false;\n\n\n try {\n this.__reentrant_call_depth++;\n\n lexer.setInput(input, sharedState_yy);\n\n // NOTE: we *assume* no lexer pre/post handlers are set up *after* \n // this initial `setInput()` call: hence we can now check and decide\n // whether we'll go with the standard, slower, lex() API or the\n // `fast_lex()` one:\n if (typeof lexer.canIUse === 'function') {\n var lexerInfo = lexer.canIUse();\n if (lexerInfo.fastLex && typeof fastLex === 'function') {\n lex = fastLex;\n }\n } \n\n\n\n vstack[sp] = null;\n sstack[sp] = 0;\n stack[sp] = 0;\n ++sp;\n\n\n\n\n\n if (this.pre_parse) {\n this.pre_parse.call(this, sharedState_yy);\n }\n if (sharedState_yy.pre_parse) {\n sharedState_yy.pre_parse.call(this, sharedState_yy);\n }\n\n newState = sstack[sp - 1];\n for (;;) {\n // retrieve state number from top of stack\n state = newState; // sstack[sp - 1];\n\n // use default actions if available\n if (this.defaultActions[state]) {\n action = 2;\n newState = this.defaultActions[state];\n } else {\n // The single `==` condition below covers both these `===` comparisons in a single\n // operation:\n //\n // if (symbol === null || typeof symbol === 'undefined') ...\n if (!symbol) {\n symbol = lex();\n }\n // read action for current state and first input\n t = (table[state] && table[state][symbol]) || NO_ACTION;\n newState = t[1];\n action = t[0];\n\n\n\n\n\n\n\n\n\n\n\n // handle parse error\n if (!action) {\n var errStr;\n var errSymbolDescr = (this.describeSymbol(symbol) || symbol);\n var expected = this.collect_expected_token_set(state);\n\n // Report error\n if (typeof lexer.yylineno === 'number') {\n errStr = 'Parse error on line ' + (lexer.yylineno + 1) + ': ';\n } else {\n errStr = 'Parse error: ';\n }\n if (typeof lexer.showPosition === 'function') {\n errStr += '\\n' + lexer.showPosition(79 - 10, 10) + '\\n';\n }\n if (expected.length) {\n errStr += 'Expecting ' + expected.join(', ') + ', got unexpected ' + errSymbolDescr;\n } else {\n errStr += 'Unexpected ' + errSymbolDescr;\n }\n // we cannot recover from the error!\n p = this.constructParseErrorInfo(errStr, null, expected, false);\n r = this.parseError(p.errStr, p, this.JisonParserError);\n if (typeof r !== 'undefined') {\n retval = r;\n }\n break;\n }\n\n\n }\n\n\n\n\n\n\n\n\n\n\n switch (action) {\n // catch misc. parse failures:\n default:\n // this shouldn't happen, unless resolve defaults are off\n if (action instanceof Array) {\n p = this.constructParseErrorInfo('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol, null, null, false);\n r = this.parseError(p.errStr, p, this.JisonParserError);\n if (typeof r !== 'undefined') {\n retval = r;\n }\n break;\n }\n // Another case of better safe than sorry: in case state transitions come out of another error recovery process\n // or a buggy LUT (LookUp Table):\n p = this.constructParseErrorInfo('Parsing halted. No viable error recovery approach available due to internal system failure.', null, null, false);\n r = this.parseError(p.errStr, p, this.JisonParserError);\n if (typeof r !== 'undefined') {\n retval = r;\n }\n break;\n\n // shift:\n case 1:\n stack[sp] = symbol;\n vstack[sp] = lexer.yytext;\n\n sstack[sp] = newState; // push state\n\n ++sp;\n symbol = 0;\n\n\n\n\n // Pick up the lexer details for the current symbol as that one is not 'look-ahead' any more:\n\n\n\n\n continue;\n\n // reduce:\n case 2:\n\n\n\n this_production = this.productions_[newState - 1]; // `this.productions_[]` is zero-based indexed while states start from 1 upwards...\n yyrulelen = this_production[1];\n\n\n\n\n\n\n\n\n\n\n r = this.performAction.call(yyval, newState, sp - 1, vstack);\n\n if (typeof r !== 'undefined') {\n retval = r;\n break;\n }\n\n // pop off stack\n sp -= yyrulelen;\n\n // don't overwrite the `symbol` variable: use a local var to speed things up:\n var ntsymbol = this_production[0]; // push nonterminal (reduce)\n stack[sp] = ntsymbol;\n vstack[sp] = yyval.$;\n\n // goto new state = table[STATE][NONTERMINAL]\n newState = table[sstack[sp - 1]][ntsymbol];\n sstack[sp] = newState;\n ++sp;\n\n\n\n\n\n\n\n\n\n continue;\n\n // accept:\n case 3:\n if (sp !== -2) {\n retval = true;\n // Return the `$accept` rule's `$$` result, if available.\n //\n // Also note that JISON always adds this top-most `$accept` rule (with implicit,\n // default, action):\n //\n // $accept: <startSymbol> $end\n // %{ $$ = $1; @$ = @1; %}\n //\n // which, combined with the parse kernel's `$accept` state behaviour coded below,\n // will produce the `$$` value output of the <startSymbol> rule as the parse result,\n // IFF that result is *not* `undefined`. (See also the parser kernel code.)\n //\n // In code:\n //\n // %{\n // @$ = @1; // if location tracking support is included\n // if (typeof $1 !== 'undefined')\n // return $1;\n // else\n // return true; // the default parse result if the rule actions don't produce anything\n // %}\n sp--;\n if (typeof vstack[sp] !== 'undefined') {\n retval = vstack[sp];\n }\n }\n break;\n }\n\n // break out of loop: we accept or fail with error\n break;\n }\n } catch (ex) {\n // report exceptions through the parseError callback too, but keep the exception intact\n // if it is a known parser or lexer error which has been thrown by parseError() already:\n if (ex instanceof this.JisonParserError) {\n throw ex;\n }\n else if (lexer && typeof lexer.JisonLexerError === 'function' && ex instanceof lexer.JisonLexerError) {\n throw ex;\n }\n\n p = this.constructParseErrorInfo('Parsing aborted due to exception.', ex, null, false);\n retval = false;\n r = this.parseError(p.errStr, p, this.JisonParserError);\n if (typeof r !== 'undefined') {\n retval = r;\n }\n } finally {\n retval = this.cleanupAfterParse(retval, true, true);\n this.__reentrant_call_depth--;\n } // /finally\n\n return retval;\n}\n};\nparser.originalParseError = parser.parseError;\nparser.originalQuoteName = parser.quoteName;\n/* lexer generated by jison-lex 0.6.1-215 */\n\n/*\n * Returns a Lexer object of the following structure:\n *\n * Lexer: {\n * yy: {} The so-called \"shared state\" or rather the *source* of it;\n * the real \"shared state\" `yy` passed around to\n * the rule actions, etc. is a direct reference!\n *\n * This \"shared context\" object was passed to the lexer by way of \n * the `lexer.setInput(str, yy)` API before you may use it.\n *\n * This \"shared context\" object is passed to the lexer action code in `performAction()`\n * so userland code in the lexer actions may communicate with the outside world \n * and/or other lexer rules' actions in more or less complex ways.\n *\n * }\n *\n * Lexer.prototype: {\n * EOF: 1,\n * ERROR: 2,\n *\n * yy: The overall \"shared context\" object reference.\n *\n * JisonLexerError: function(msg, hash),\n *\n * performAction: function lexer__performAction(yy, yyrulenumber, YY_START),\n *\n * The function parameters and `this` have the following value/meaning:\n * - `this` : reference to the `lexer` instance. \n * `yy_` is an alias for `this` lexer instance reference used internally.\n *\n * - `yy` : a reference to the `yy` \"shared state\" object which was passed to the lexer\n * by way of the `lexer.setInput(str, yy)` API before.\n *\n * Note:\n * The extra arguments you specified in the `%parse-param` statement in your\n * **parser** grammar definition file are passed to the lexer via this object\n * reference as member variables.\n *\n * - `yyrulenumber` : index of the matched lexer rule (regex), used internally.\n *\n * - `YY_START`: the current lexer \"start condition\" state.\n *\n * parseError: function(str, hash, ExceptionClass),\n *\n * constructLexErrorInfo: function(error_message, is_recoverable),\n * Helper function.\n * Produces a new errorInfo 'hash object' which can be passed into `parseError()`.\n * See it's use in this lexer kernel in many places; example usage:\n *\n * var infoObj = lexer.constructParseErrorInfo('fail!', true);\n * var retVal = lexer.parseError(infoObj.errStr, infoObj, lexer.JisonLexerError);\n *\n * options: { ... lexer %options ... },\n *\n * lex: function(),\n * Produce one token of lexed input, which was passed in earlier via the `lexer.setInput()` API.\n * You MAY use the additional `args...` parameters as per `%parse-param` spec of the **lexer** grammar:\n * these extra `args...` are added verbatim to the `yy` object reference as member variables.\n *\n * WARNING:\n * Lexer's additional `args...` parameters (via lexer's `%parse-param`) MAY conflict with\n * any attributes already added to `yy` by the **parser** or the jison run-time; \n * when such a collision is detected an exception is thrown to prevent the generated run-time \n * from silently accepting this confusing and potentially hazardous situation! \n *\n * cleanupAfterLex: function(do_not_nuke_errorinfos),\n * Helper function.\n *\n * This helper API is invoked when the **parse process** has completed: it is the responsibility\n * of the **parser** (or the calling userland code) to invoke this method once cleanup is desired. \n *\n * This helper may be invoked by user code to ensure the internal lexer gets properly garbage collected.\n *\n * setInput: function(input, [yy]),\n *\n *\n * input: function(),\n *\n *\n * unput: function(str),\n *\n *\n * more: function(),\n *\n *\n * reject: function(),\n *\n *\n * less: function(n),\n *\n *\n * pastInput: function(n),\n *\n *\n * upcomingInput: function(n),\n *\n *\n * showPosition: function(),\n *\n *\n * test_match: function(regex_match_array, rule_index),\n *\n *\n * next: function(),\n *\n *\n * begin: function(condition),\n *\n *\n * pushState: function(condition),\n *\n *\n * popState: function(),\n *\n *\n * topState: function(),\n *\n *\n * _currentRules: function(),\n *\n *\n * stateStackSize: function(),\n *\n *\n * performAction: function(yy, yy_, yyrulenumber, YY_START),\n *\n *\n * rules: [...],\n *\n *\n * conditions: {associative list: name ==> set},\n * }\n *\n *\n * token location info (`yylloc`): {\n * first_line: n,\n * last_line: n,\n * first_column: n,\n * last_column: n,\n * range: [start_number, end_number]\n * (where the numbers are indexes into the input string, zero-based)\n * }\n *\n * ---\n *\n * The `parseError` function receives a 'hash' object with these members for lexer errors:\n *\n * {\n * text: (matched text)\n * token: (the produced terminal token, if any)\n * token_id: (the produced terminal token numeric ID, if any)\n * line: (yylineno)\n * loc: (yylloc)\n * recoverable: (boolean: TRUE when the parser MAY have an error recovery rule\n * available for this particular error)\n * yy: (object: the current parser internal \"shared state\" `yy`\n * as is also available in the rule actions; this can be used,\n * for instance, for advanced error analysis and reporting)\n * lexer: (reference to the current lexer instance used by the parser)\n * }\n *\n * while `this` will reference the current lexer instance.\n *\n * When `parseError` is invoked by the lexer, the default implementation will\n * attempt to invoke `yy.parser.parseError()`; when this callback is not provided\n * it will try to invoke `yy.parseError()` instead. When that callback is also not\n * provided, a `JisonLexerError` exception will be thrown containing the error\n * message and `hash`, as constructed by the `constructLexErrorInfo()` API.\n *\n * Note that the lexer's `JisonLexerError` error class is passed via the\n * `ExceptionClass` argument, which is invoked to construct the exception\n * instance to be thrown, so technically `parseError` will throw the object\n * produced by the `new ExceptionClass(str, hash)` JavaScript expression.\n *\n * ---\n *\n * You can specify lexer options by setting / modifying the `.options` object of your Lexer instance.\n * These options are available:\n *\n * (Options are permanent.)\n * \n * yy: {\n * parseError: function(str, hash, ExceptionClass)\n * optional: overrides the default `parseError` function.\n * }\n *\n * lexer.options: {\n * pre_lex: function()\n * optional: is invoked before the lexer is invoked to produce another token.\n * `this` refers to the Lexer object.\n * post_lex: function(token) { return token; }\n * optional: is invoked when the lexer has produced a token `token`;\n * this function can override the returned token value by returning another.\n * When it does not return any (truthy) value, the lexer will return\n * the original `token`.\n * `this` refers to the Lexer object.\n *\n * WARNING: the next set of options are not meant to be changed. They echo the abilities of\n * the lexer as per when it was compiled!\n *\n * ranges: boolean\n * optional: `true` ==> token location info will include a .range[] member.\n * flex: boolean\n * optional: `true` ==> flex-like lexing behaviour where the rules are tested\n * exhaustively to find the longest match.\n * backtrack_lexer: boolean\n * optional: `true` ==> lexer regexes are tested in order and for invoked;\n * the lexer terminates the scan when a token is returned by the action code.\n * xregexp: boolean\n * optional: `true` ==> lexer rule regexes are \"extended regex format\" requiring the\n * `XRegExp` library. When this %option has not been specified at compile time, all lexer\n * rule regexes have been written as standard JavaScript RegExp expressions.\n * }\n */\n\n\nvar lexer = function() {\n /**\n * See also:\n * http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript/#35881508\n * but we keep the prototype.constructor and prototype.name assignment lines too for compatibility\n * with userland code which might access the derived class in a 'classic' way.\n *\n * @public\n * @constructor\n * @nocollapse\n */\n function JisonLexerError(msg, hash) {\n Object.defineProperty(this, 'name', {\n enumerable: false,\n writable: false,\n value: 'JisonLexerError'\n });\n\n if (msg == null)\n msg = '???';\n\n Object.defineProperty(this, 'message', {\n enumerable: false,\n writable: true,\n value: msg\n });\n\n this.hash = hash;\n var stacktrace;\n\n if (hash && hash.exception instanceof Error) {\n var ex2 = hash.exception;\n this.message = ex2.message || msg;\n stacktrace = ex2.stack;\n }\n\n if (!stacktrace) {\n if (Error.hasOwnProperty('captureStackTrace')) {\n // V8\n Error.captureStackTrace(this, this.constructor);\n } else {\n stacktrace = new Error(msg).stack;\n }\n }\n\n if (stacktrace) {\n Object.defineProperty(this, 'stack', {\n enumerable: false,\n writable: false,\n value: stacktrace\n });\n }\n }\n\n if (typeof Object.setPrototypeOf === 'function') {\n Object.setPrototypeOf(JisonLexerError.prototype, Error.prototype);\n } else {\n JisonLexerError.prototype = Object.create(Error.prototype);\n }\n\n JisonLexerError.prototype.constructor = JisonLexerError;\n JisonLexerError.prototype.name = 'JisonLexerError';\n\n var lexer = {\n \n// Code Generator Information Report\n// ---------------------------------\n//\n// Options:\n//\n// backtracking: .................... false\n// location.ranges: ................. false\n// location line+column tracking: ... true\n//\n//\n// Forwarded Parser Analysis flags:\n//\n// uses yyleng: ..................... false\n// uses yylineno: ................... false\n// uses yytext: ..................... false\n// uses yylloc: ..................... false\n// uses lexer values: ............... true / true\n// location tracking: ............... false\n// location assignment: ............. false\n//\n//\n// Lexer Analysis flags:\n//\n// uses yyleng: ..................... ???\n// uses yylineno: ................... ???\n// uses yytext: ..................... ???\n// uses yylloc: ..................... ???\n// uses ParseError API: ............. ???\n// uses yyerror: .................... ???\n// uses location tracking & editing: ???\n// uses more() API: ................. ???\n// uses unput() API: ................ ???\n// uses reject() API: ............... ???\n// uses less() API: ................. ???\n// uses display APIs pastInput(), upcomingInput(), showPosition():\n// ............................. ???\n// uses describeYYLLOC() API: ....... ???\n//\n// --------- END OF REPORT -----------\n\nEOF: 1,\n ERROR: 2,\n\n // JisonLexerError: JisonLexerError, /// <-- injected by the code generator\n\n // options: {}, /// <-- injected by the code generator\n\n // yy: ..., /// <-- injected by setInput()\n\n __currentRuleSet__: null, /// INTERNAL USE ONLY: internal rule set cache for the current lexer state \n\n __error_infos: [], /// INTERNAL USE ONLY: the set of lexErrorInfo objects created since the last cleanup \n __decompressed: false, /// INTERNAL USE ONLY: mark whether the lexer instance has been 'unfolded' completely and is now ready for use \n done: false, /// INTERNAL USE ONLY \n _backtrack: false, /// INTERNAL USE ONLY \n _input: '', /// INTERNAL USE ONLY \n _more: false, /// INTERNAL USE ONLY \n _signaled_error_token: false, /// INTERNAL USE ONLY \n conditionStack: [], /// INTERNAL USE ONLY; managed via `pushState()`, `popState()`, `topState()` and `stateStackSize()` \n match: '', /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks input which has been matched so far for the lexer token under construction. `match` is identical to `yytext` except that this one still contains the matched input string after `lexer.performAction()` has been invoked, where userland code MAY have changed/replaced the `yytext` value entirely! \n matched: '', /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks entire input which has been matched so far \n matches: false, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks RE match result for last (successful) match attempt \n yytext: '', /// ADVANCED USE ONLY: tracks input which has been matched so far for the lexer token under construction; this value is transferred to the parser as the 'token value' when the parser consumes the lexer token produced through a call to the `lex()` API. \n offset: 0, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks the 'cursor position' in the input string, i.e. the number of characters matched so far \n yyleng: 0, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: length of matched input for the token under construction (`yytext`) \n yylineno: 0, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: 'line number' at which the token under construction is located \n yylloc: null, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks location info (lines + columns) for the token under construction \n\n /**\n * INTERNAL USE: construct a suitable error info hash object instance for `parseError`.\n * \n * @public\n * @this {RegExpLexer}\n */\n constructLexErrorInfo: function lexer_constructLexErrorInfo(msg, recoverable, show_input_position) {\n msg = '' + msg;\n\n // heuristic to determine if the error message already contains a (partial) source code dump\n // as produced by either `showPosition()` or `prettyPrintRange()`:\n if (show_input_position == undefined) {\n show_input_position = !(msg.indexOf('\\n') > 0 && msg.indexOf('^') > 0);\n }\n\n if (this.yylloc && show_input_position) {\n if (typeof this.prettyPrintRange === 'function') {\n var pretty_src = this.prettyPrintRange(this.yylloc);\n\n if (!/\\n\\s*$/.test(msg)) {\n msg += '\\n';\n }\n\n msg += '\\n Erroneous area:\\n' + this.prettyPrintRange(this.yylloc);\n } else if (typeof this.showPosition === 'function') {\n var pos_str = this.showPosition();\n\n if (pos_str) {\n if (msg.length && msg[msg.length - 1] !== '\\n' && pos_str[0] !== '\\n') {\n msg += '\\n' + pos_str;\n } else {\n msg += pos_str;\n }\n }\n }\n }\n\n /** @constructor */\n var pei = {\n errStr: msg,\n recoverable: !!recoverable,\n text: this.match, // This one MAY be empty; userland code should use the `upcomingInput` API to obtain more text which follows the 'lexer cursor position'... \n token: null,\n line: this.yylineno,\n loc: this.yylloc,\n yy: this.yy,\n lexer: this,\n\n /**\n * and make sure the error info doesn't stay due to potential\n * ref cycle via userland code manipulations.\n * These would otherwise all be memory leak opportunities!\n * \n * Note that only array and object references are nuked as those\n * constitute the set of elements which can produce a cyclic ref.\n * The rest of the members is kept intact as they are harmless.\n * \n * @public\n * @this {LexErrorInfo}\n */\n destroy: function destructLexErrorInfo() {\n // remove cyclic references added to error info:\n // info.yy = null;\n // info.lexer = null;\n // ...\n var rec = !!this.recoverable;\n\n for (var key in this) {\n if (this.hasOwnProperty(key) && typeof key === 'object') {\n this[key] = undefined;\n }\n }\n\n this.recoverable = rec;\n }\n };\n\n // track this instance so we can `destroy()` it once we deem it superfluous and ready for garbage collection!\n this.__error_infos.push(pei);\n\n return pei;\n },\n\n /**\n * handler which is invoked when a lexer error occurs.\n * \n * @public\n * @this {RegExpLexer}\n */\n parseError: function lexer_parseError(str, hash, ExceptionClass) {\n if (!ExceptionClass) {\n ExceptionClass = this.JisonLexerError;\n }\n\n if (this.yy) {\n if (this.yy.parser && typeof this.yy.parser.parseError === 'function') {\n return this.yy.parser.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;\n } else if (typeof this.yy.parseError === 'function') {\n return this.yy.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;\n }\n }\n\n throw new ExceptionClass(str, hash);\n },\n\n /**\n * method which implements `yyerror(str, ...args)` functionality for use inside lexer actions.\n * \n * @public\n * @this {RegExpLexer}\n */\n yyerror: function yyError(str /*, ...args */) {\n var lineno_msg = '';\n\n if (this.yylloc) {\n lineno_msg = ' on line ' + (this.yylineno + 1);\n }\n\n var p = this.constructLexErrorInfo(\n 'Lexical error' + lineno_msg + ': ' + str,\n this.options.lexerErrorsAreRecoverable\n );\n\n // Add any extra args to the hash under the name `extra_error_attributes`:\n var args = Array.prototype.slice.call(arguments, 1);\n\n if (args.length) {\n p.extra_error_attributes = args;\n }\n\n return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n },\n\n /**\n * final cleanup function for when we have completed lexing the input;\n * make it an API so that external code can use this one once userland\n * code has decided it's time to destroy any lingering lexer error\n * hash object instances and the like: this function helps to clean\n * up these constructs, which *may* carry cyclic references which would\n * otherwise prevent the instances from being properly and timely\n * garbage-collected, i.e. this function helps prevent memory leaks!\n * \n * @public\n * @this {RegExpLexer}\n */\n cleanupAfterLex: function lexer_cleanupAfterLex(do_not_nuke_errorinfos) {\n // prevent lingering circular references from causing memory leaks:\n this.setInput('', {});\n\n // nuke the error hash info instances created during this run.\n // Userland code must COPY any data/references\n // in the error hash instance(s) it is more permanently interested in.\n if (!do_not_nuke_errorinfos) {\n for (var i = this.__error_infos.length - 1; i >= 0; i--) {\n var el = this.__error_infos[i];\n\n if (el && typeof el.destroy === 'function') {\n el.destroy();\n }\n }\n\n this.__error_infos.length = 0;\n }\n\n return this;\n },\n\n /**\n * clear the lexer token context; intended for internal use only\n * \n * @public\n * @this {RegExpLexer}\n */\n clear: function lexer_clear() {\n this.yytext = '';\n this.yyleng = 0;\n this.match = '';\n\n // - DO NOT reset `this.matched`\n this.matches = false;\n\n this._more = false;\n this._backtrack = false;\n var col = (this.yylloc ? this.yylloc.last_column : 0);\n\n this.yylloc = {\n first_line: this.yylineno + 1,\n first_column: col,\n last_line: this.yylineno + 1,\n last_column: col,\n range: [this.offset, this.offset]\n };\n },\n\n /**\n * resets the lexer, sets new input\n * \n * @public\n * @this {RegExpLexer}\n */\n setInput: function lexer_setInput(input, yy) {\n this.yy = yy || this.yy || {};\n\n // also check if we've fully initialized the lexer instance,\n // including expansion work to be done to go from a loaded\n // lexer to a usable lexer:\n if (!this.__decompressed) {\n // step 1: decompress the regex list:\n var rules = this.rules;\n\n for (var i = 0, len = rules.length; i < len; i++) {\n var rule_re = rules[i];\n\n // compression: is the RE an xref to another RE slot in the rules[] table?\n if (typeof rule_re === 'number') {\n rules[i] = rules[rule_re];\n }\n }\n\n // step 2: unfold the conditions[] set to make these ready for use:\n var conditions = this.conditions;\n\n for (var k in conditions) {\n var spec = conditions[k];\n var rule_ids = spec.rules;\n var len = rule_ids.length;\n var rule_regexes = new Array(len + 1); // slot 0 is unused; we use a 1-based index approach here to keep the hottest code in `lexer_next()` fast and simple! \n var rule_new_ids = new Array(len + 1);\n\n for (var i = 0; i < len; i++) {\n var idx = rule_ids[i];\n var rule_re = rules[idx];\n rule_regexes[i + 1] = rule_re;\n rule_new_ids[i + 1] = idx;\n }\n\n spec.rules = rule_new_ids;\n spec.__rule_regexes = rule_regexes;\n spec.__rule_count = len;\n }\n\n this.__decompressed = true;\n }\n\n this._input = input || '';\n this.clear();\n this._signaled_error_token = false;\n this.done = false;\n this.yylineno = 0;\n this.matched = '';\n this.conditionStack = ['INITIAL'];\n this.__currentRuleSet__ = null;\n\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0,\n range: [0, 0]\n };\n\n this.offset = 0;\n return this;\n },\n\n /**\n * edit the remaining input via user-specified callback.\n * This can be used to forward-adjust the input-to-parse, \n * e.g. inserting macro expansions and alike in the\n * input which has yet to be lexed.\n * The behaviour of this API contrasts the `unput()` et al\n * APIs as those act on the *consumed* input, while this\n * one allows one to manipulate the future, without impacting\n * the current `yyloc` cursor location or any history. \n * \n * Use this API to help implement C-preprocessor-like\n * `#include` statements, etc.\n * \n * The provided callback must be synchronous and is\n * expected to return the edited input (string).\n *\n * The `cpsArg` argument value is passed to the callback\n * as-is.\n *\n * `callback` interface: \n * `function callback(input, cpsArg)`\n * \n * - `input` will carry the remaining-input-to-lex string\n * from the lexer.\n * - `cpsArg` is `cpsArg` passed into this API.\n * \n * The `this` reference for the callback will be set to\n * reference this lexer instance so that userland code\n * in the callback can easily and quickly access any lexer\n * API. \n *\n * When the callback returns a non-string-type falsey value,\n * we assume the callback did not edit the input and we\n * will using the input as-is.\n *\n * When the callback returns a non-string-type value, it\n * is converted to a string for lexing via the `\"\" + retval`\n * operation. (See also why: http://2ality.com/2012/03/converting-to-string.html \n * -- that way any returned object's `toValue()` and `toString()`\n * methods will be invoked in a proper/desirable order.)\n * \n * @public\n * @this {RegExpLexer}\n */\n editRemainingInput: function lexer_editRemainingInput(callback, cpsArg) {\n var rv = callback.call(this, this._input, cpsArg);\n\n if (typeof rv !== 'string') {\n if (rv) {\n this._input = '' + rv;\n } \n // else: keep `this._input` as is. \n } else {\n this._input = rv;\n }\n\n return this;\n },\n\n /**\n * consumes and returns one char from the input\n * \n * @public\n * @this {RegExpLexer}\n */\n input: function lexer_input() {\n if (!this._input) {\n //this.done = true; -- don't set `done` as we want the lex()/next() API to be able to produce one custom EOF token match after this anyhow. (lexer can match special <<EOF>> tokens and perform user action code for a <<EOF>> match, but only does so *once*)\n return null;\n }\n\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n\n // Count the linenumber up when we hit the LF (or a stand-alone CR).\n // On CRLF, the linenumber is incremented when you fetch the CR or the CRLF combo\n // and we advance immediately past the LF as well, returning both together as if\n // it was all a single 'character' only.\n var slice_len = 1;\n\n var lines = false;\n\n if (ch === '\\n') {\n lines = true;\n } else if (ch === '\\r') {\n lines = true;\n var ch2 = this._input[1];\n\n if (ch2 === '\\n') {\n slice_len++;\n ch += ch2;\n this.yytext += ch2;\n this.yyleng++;\n this.offset++;\n this.match += ch2;\n this.matched += ch2;\n this.yylloc.range[1]++;\n }\n }\n\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n this.yylloc.last_column = 0;\n } else {\n this.yylloc.last_column++;\n }\n\n this.yylloc.range[1]++;\n this._input = this._input.slice(slice_len);\n return ch;\n },\n\n /**\n * unshifts one char (or an entire string) into the input\n * \n * @public\n * @this {RegExpLexer}\n */\n unput: function lexer_unput(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.yyleng = this.yytext.length;\n this.offset -= len;\n this.match = this.match.substr(0, this.match.length - len);\n this.matched = this.matched.substr(0, this.matched.length - len);\n\n if (lines.length > 1) {\n this.yylineno -= lines.length - 1;\n this.yylloc.last_line = this.yylineno + 1;\n\n // Get last entirely matched line into the `pre_lines[]` array's\n // last index slot; we don't mind when other previously \n // matched lines end up in the array too. \n var pre = this.match;\n\n var pre_lines = pre.split(/(?:\\r\\n?|\\n)/g);\n\n if (pre_lines.length === 1) {\n pre = this.matched;\n pre_lines = pre.split(/(?:\\r\\n?|\\n)/g);\n }\n\n this.yylloc.last_column = pre_lines[pre_lines.length - 1].length;\n } else {\n this.yylloc.last_column -= len;\n }\n\n this.yylloc.range[1] = this.yylloc.range[0] + this.yyleng;\n this.done = false;\n return this;\n },\n\n /**\n * cache matched text and append it on next action\n * \n * @public\n * @this {RegExpLexer}\n */\n more: function lexer_more() {\n this._more = true;\n return this;\n },\n\n /**\n * signal the lexer that this rule fails to match the input, so the\n * next matching rule (regex) should be tested instead.\n * \n * @public\n * @this {RegExpLexer}\n */\n reject: function lexer_reject() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n // when the `parseError()` call returns, we MUST ensure that the error is registered.\n // We accomplish this by signaling an 'error' token to be produced for the current\n // `.lex()` run.\n var lineno_msg = '';\n\n if (this.yylloc) {\n lineno_msg = ' on line ' + (this.yylineno + 1);\n }\n\n var p = this.constructLexErrorInfo(\n 'Lexical error' + lineno_msg + ': You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).',\n false\n );\n\n this._signaled_error_token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n }\n\n return this;\n },\n\n /**\n * retain first n characters of the match\n * \n * @public\n * @this {RegExpLexer}\n */\n less: function lexer_less(n) {\n return this.unput(this.match.slice(n));\n },\n\n /**\n * return (part of the) already matched input, i.e. for error\n * messages.\n * \n * Limit the returned string length to `maxSize` (default: 20).\n * \n * Limit the returned string to the `maxLines` number of lines of\n * input (default: 1).\n * \n * Negative limit values equal *unlimited*.\n * \n * @public\n * @this {RegExpLexer}\n */\n pastInput: function lexer_pastInput(maxSize, maxLines) {\n var past = this.matched.substring(0, this.matched.length - this.match.length);\n\n if (maxSize < 0)\n maxSize = past.length;\n else if (!maxSize)\n maxSize = 20;\n\n if (maxLines < 0)\n maxLines = past.length; // can't ever have more input lines than this! \n else if (!maxLines)\n maxLines = 1;\n\n // `substr` anticipation: treat \\r\\n as a single character and take a little\n // more than necessary so that we can still properly check against maxSize\n // after we've transformed and limited the newLines in here:\n past = past.substr(-maxSize * 2 - 2);\n\n // now that we have a significantly reduced string to process, transform the newlines\n // and chop them, then limit them:\n var a = past.replace(/\\r\\n|\\r/g, '\\n').split('\\n');\n\n a = a.slice(-maxLines);\n past = a.join('\\n');\n\n // When, after limiting to maxLines, we still have too much to return,\n // do add an ellipsis prefix...\n if (past.length > maxSize) {\n past = '...' + past.substr(-maxSize);\n }\n\n return past;\n },\n\n /**\n * return (part of the) upcoming input, i.e. for error messages.\n * \n * Limit the returned string length to `maxSize` (default: 20).\n * \n * Limit the returned string to the `maxLines` number of lines of input (default: 1).\n * \n * Negative limit values equal *unlimited*.\n *\n * > ### NOTE ###\n * >\n * > *\"upcoming input\"* is defined as the whole of the both\n * > the *currently lexed* input, together with any remaining input\n * > following that. *\"currently lexed\"* input is the input \n * > already recognized by the lexer but not yet returned with\n * > the lexer token. This happens when you are invoking this API\n * > from inside any lexer rule action code block. \n * >\n * \n * @public\n * @this {RegExpLexer}\n */\n upcomingInput: function lexer_upcomingInput(maxSize, maxLines) {\n var next = this.match;\n\n if (maxSize < 0)\n maxSize = next.length + this._input.length;\n else if (!maxSize)\n maxSize = 20;\n\n if (maxLines < 0)\n maxLines = maxSize; // can't ever have more input lines than this! \n else if (!maxLines)\n maxLines = 1;\n\n // `substring` anticipation: treat \\r\\n as a single character and take a little\n // more than necessary so that we can still properly check against maxSize\n // after we've transformed and limited the newLines in here:\n if (next.length < maxSize * 2 + 2) {\n next += this._input.substring(0, maxSize * 2 + 2); // substring is faster on Chrome/V8 \n }\n\n // now that we have a significantly reduced string to process, transform the newlines\n // and chop them, then limit them:\n var a = next.replace(/\\r\\n|\\r/g, '\\n').split('\\n');\n\n a = a.slice(0, maxLines);\n next = a.join('\\n');\n\n // When, after limiting to maxLines, we still have too much to return,\n // do add an ellipsis postfix...\n if (next.length > maxSize) {\n next = next.substring(0, maxSize) + '...';\n }\n\n return next;\n },\n\n /**\n * return a string which displays the character position where the\n * lexing error occurred, i.e. for error messages\n * \n * @public\n * @this {RegExpLexer}\n */\n showPosition: function lexer_showPosition(maxPrefix, maxPostfix) {\n var pre = this.pastInput(maxPrefix).replace(/\\s/g, ' ');\n var c = new Array(pre.length + 1).join('-');\n return pre + this.upcomingInput(maxPostfix).replace(/\\s/g, ' ') + '\\n' + c + '^';\n },\n\n /**\n * return an YYLLOC info object derived off the given context (actual, preceding, following, current).\n * Use this method when the given `actual` location is not guaranteed to exist (i.e. when\n * it MAY be NULL) and you MUST have a valid location info object anyway:\n * then we take the given context of the `preceding` and `following` locations, IFF those are available,\n * and reconstruct the `actual` location info from those.\n * If this fails, the heuristic is to take the `current` location, IFF available.\n * If this fails as well, we assume the sought location is at/around the current lexer position\n * and then produce that one as a response. DO NOTE that these heuristic/derived location info\n * values MAY be inaccurate!\n *\n * NOTE: `deriveLocationInfo()` ALWAYS produces a location info object *copy* of `actual`, not just\n * a *reference* hence all input location objects can be assumed to be 'constant' (function has no side-effects).\n * \n * @public\n * @this {RegExpLexer}\n */\n deriveLocationInfo: function lexer_deriveYYLLOC(actual, preceding, following, current) {\n var loc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0,\n range: [0, 0]\n };\n\n if (actual) {\n loc.first_line = actual.first_line | 0;\n loc.last_line = actual.last_line | 0;\n loc.first_column = actual.first_column | 0;\n loc.last_column = actual.last_column | 0;\n\n if (actual.range) {\n loc.range[0] = actual.range[0] | 0;\n loc.range[1] = actual.range[1] | 0;\n }\n }\n\n if (loc.first_line <= 0 || loc.last_line < loc.first_line) {\n // plan B: heuristic using preceding and following:\n if (loc.first_line <= 0 && preceding) {\n loc.first_line = preceding.last_line | 0;\n loc.first_column = preceding.last_column | 0;\n\n if (preceding.range) {\n loc.range[0] = actual.range[1] | 0;\n }\n }\n\n if ((loc.last_line <= 0 || loc.last_line < loc.first_line) && following) {\n loc.last_line = following.first_line | 0;\n loc.last_column = following.first_column | 0;\n\n if (following.range) {\n loc.range[1] = actual.range[0] | 0;\n }\n }\n\n // plan C?: see if the 'current' location is useful/sane too:\n if (loc.first_line <= 0 && current && (loc.last_line <= 0 || current.last_line <= loc.last_line)) {\n loc.first_line = current.first_line | 0;\n loc.first_column = current.first_column | 0;\n\n if (current.range) {\n loc.range[0] = current.range[0] | 0;\n }\n }\n\n if (loc.last_line <= 0 && current && (loc.first_line <= 0 || current.first_line >= loc.first_line)) {\n loc.last_line = current.last_line | 0;\n loc.last_column = current.last_column | 0;\n\n if (current.range) {\n loc.range[1] = current.range[1] | 0;\n }\n }\n }\n\n // sanitize: fix last_line BEFORE we fix first_line as we use the 'raw' value of the latter\n // or plan D heuristics to produce a 'sensible' last_line value:\n if (loc.last_line <= 0) {\n if (loc.first_line <= 0) {\n loc.first_line = this.yylloc.first_line;\n loc.last_line = this.yylloc.last_line;\n loc.first_column = this.yylloc.first_column;\n loc.last_column = this.yylloc.last_column;\n loc.range[0] = this.yylloc.range[0];\n loc.range[1] = this.yylloc.range[1];\n } else {\n loc.last_line = this.yylloc.last_line;\n loc.last_column = this.yylloc.last_column;\n loc.range[1] = this.yylloc.range[1];\n }\n }\n\n if (loc.first_line <= 0) {\n loc.first_line = loc.last_line;\n loc.first_column = 0; // loc.last_column; \n loc.range[1] = loc.range[0];\n }\n\n if (loc.first_column < 0) {\n loc.first_column = 0;\n }\n\n if (loc.last_column < 0) {\n loc.last_column = (loc.first_column > 0 ? loc.first_column : 80);\n }\n\n return loc;\n },\n\n /**\n * return a string which displays the lines & columns of input which are referenced \n * by the given location info range, plus a few lines of context.\n * \n * This function pretty-prints the indicated section of the input, with line numbers \n * and everything!\n * \n * This function is very useful to provide highly readable error reports, while\n * the location range may be specified in various flexible ways:\n * \n * - `loc` is the location info object which references the area which should be\n * displayed and 'marked up': these lines & columns of text are marked up by `^`\n * characters below each character in the entire input range.\n * \n * - `context_loc` is the *optional* location info object which instructs this\n * pretty-printer how much *leading* context should be displayed alongside\n * the area referenced by `loc`. This can help provide context for the displayed\n * error, etc.\n * \n * When this location info is not provided, a default context of 3 lines is\n * used.\n * \n * - `context_loc2` is another *optional* location info object, which serves\n * a similar purpose to `context_loc`: it specifies the amount of *trailing*\n * context lines to display in the pretty-print output.\n * \n * When this location info is not provided, a default context of 1 line only is\n * used.\n * \n * Special Notes:\n * \n * - when the `loc`-indicated range is very large (about 5 lines or more), then\n * only the first and last few lines of this block are printed while a\n * `...continued...` message will be printed between them.\n * \n * This serves the purpose of not printing a huge amount of text when the `loc`\n * range happens to be huge: this way a manageable & readable output results\n * for arbitrary large ranges.\n * \n * - this function can display lines of input which whave not yet been lexed.\n * `prettyPrintRange()` can access the entire input!\n * \n * @public\n * @this {RegExpLexer}\n */\n prettyPrintRange: function lexer_prettyPrintRange(loc, context_loc, context_loc2) {\n loc = this.deriveLocationInfo(loc, context_loc, context_loc2);\n const CONTEXT = 3;\n const CONTEXT_TAIL = 1;\n const MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT = 2;\n var input = this.matched + this._input;\n var lines = input.split('\\n');\n var l0 = Math.max(1, (context_loc ? context_loc.first_line : loc.first_line - CONTEXT));\n var l1 = Math.max(1, (context_loc2 ? context_loc2.last_line : loc.last_line + CONTEXT_TAIL));\n var lineno_display_width = 1 + Math.log10(l1 | 1) | 0;\n var ws_prefix = new Array(lineno_display_width).join(' ');\n var nonempty_line_indexes = [];\n\n var rv = lines.slice(l0 - 1, l1 + 1).map(function injectLineNumber(line, index) {\n var lno = index + l0;\n var lno_pfx = (ws_prefix + lno).substr(-lineno_display_width);\n var rv = lno_pfx + ': ' + line;\n var errpfx = new Array(lineno_display_width + 1).join('^');\n var offset = 2 + 1;\n var len = 0;\n\n if (lno === loc.first_line) {\n offset += loc.first_column;\n\n len = Math.max(\n 2,\n ((lno === loc.last_line ? loc.last_column : line.length)) - loc.first_column + 1\n );\n } else if (lno === loc.last_line) {\n len = Math.max(2, loc.last_column + 1);\n } else if (lno > loc.first_line && lno < loc.last_line) {\n len = Math.max(2, line.length + 1);\n }\n\n if (len) {\n var lead = new Array(offset).join('.');\n var mark = new Array(len).join('^');\n rv += '\\n' + errpfx + lead + mark;\n\n if (line.trim().length > 0) {\n nonempty_line_indexes.push(index);\n }\n }\n\n rv = rv.replace(/\\t/g, ' ');\n return rv;\n });\n\n // now make sure we don't print an overly large amount of error area: limit it \n // to the top and bottom line count:\n if (nonempty_line_indexes.length > 2 * MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT) {\n var clip_start = nonempty_line_indexes[MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT - 1] + 1;\n var clip_end = nonempty_line_indexes[nonempty_line_indexes.length - MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT] - 1;\n var intermediate_line = new Array(lineno_display_width + 1).join(' ') + ' (...continued...)';\n intermediate_line += '\\n' + new Array(lineno_display_width + 1).join('-') + ' (---------------)';\n rv.splice(clip_start, clip_end - clip_start + 1, intermediate_line);\n }\n\n return rv.join('\\n');\n },\n\n /**\n * helper function, used to produce a human readable description as a string, given\n * the input `yylloc` location object.\n * \n * Set `display_range_too` to TRUE to include the string character index position(s)\n * in the description if the `yylloc.range` is available.\n * \n * @public\n * @this {RegExpLexer}\n */\n describeYYLLOC: function lexer_describe_yylloc(yylloc, display_range_too) {\n var l1 = yylloc.first_line;\n var l2 = yylloc.last_line;\n var c1 = yylloc.first_column;\n var c2 = yylloc.last_column;\n var dl = l2 - l1;\n var dc = c2 - c1;\n var rv;\n\n if (dl === 0) {\n rv = 'line ' + l1 + ', ';\n\n if (dc <= 1) {\n rv += 'column ' + c1;\n } else {\n rv += 'columns ' + c1 + ' .. ' + c2;\n }\n } else {\n rv = 'lines ' + l1 + '(column ' + c1 + ') .. ' + l2 + '(column ' + c2 + ')';\n }\n\n if (yylloc.range && display_range_too) {\n var r1 = yylloc.range[0];\n var r2 = yylloc.range[1] - 1;\n\n if (r2 <= r1) {\n rv += ' {String Offset: ' + r1 + '}';\n } else {\n rv += ' {String Offset range: ' + r1 + ' .. ' + r2 + '}';\n }\n }\n\n return rv;\n },\n\n /**\n * test the lexed token: return FALSE when not a match, otherwise return token.\n * \n * `match` is supposed to be an array coming out of a regex match, i.e. `match[0]`\n * contains the actually matched text string.\n * \n * Also move the input cursor forward and update the match collectors:\n * \n * - `yytext`\n * - `yyleng`\n * - `match`\n * - `matches`\n * - `yylloc`\n * - `offset`\n * \n * @public\n * @this {RegExpLexer}\n */\n test_match: function lexer_test_match(match, indexed_rule) {\n var token, lines, backup, match_str, match_str_len;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.yylloc.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column,\n range: this.yylloc.range.slice(0)\n },\n\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n\n //_signaled_error_token: this._signaled_error_token,\n yy: this.yy,\n\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n }\n\n match_str = match[0];\n match_str_len = match_str.length;\n\n // if (match_str.indexOf('\\n') !== -1 || match_str.indexOf('\\r') !== -1) {\n lines = match_str.split(/(?:\\r\\n?|\\n)/g);\n\n if (lines.length > 1) {\n this.yylineno += lines.length - 1;\n this.yylloc.last_line = this.yylineno + 1;\n this.yylloc.last_column = lines[lines.length - 1].length;\n } else {\n this.yylloc.last_column += match_str_len;\n }\n\n // }\n this.yytext += match_str;\n\n this.match += match_str;\n this.matched += match_str;\n this.matches = match;\n this.yyleng = this.yytext.length;\n this.yylloc.range[1] += match_str_len;\n\n // previous lex rules MAY have invoked the `more()` API rather than producing a token:\n // those rules will already have moved this `offset` forward matching their match lengths,\n // hence we must only add our own match length now:\n this.offset += match_str_len;\n\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match_str_len);\n\n // calling this method:\n //\n // function lexer__performAction(yy, yyrulenumber, YY_START) {...}\n token = this.performAction.call(\n this,\n this.yy,\n indexed_rule,\n this.conditionStack[this.conditionStack.length - 1] /* = YY_START */\n );\n\n // otherwise, when the action codes are all simple return token statements:\n //token = this.simpleCaseActionClusters[indexed_rule];\n\n if (this.done && this._input) {\n this.done = false;\n }\n\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n\n this.__currentRuleSet__ = null;\n return false; // rule action called reject() implying the next rule should be tested instead. \n } else if (this._signaled_error_token) {\n // produce one 'error' token as `.parseError()` in `reject()`\n // did not guarantee a failure signal by throwing an exception!\n token = this._signaled_error_token;\n\n this._signaled_error_token = false;\n return token;\n }\n\n return false;\n },\n\n /**\n * return next match in input\n * \n * @public\n * @this {RegExpLexer}\n */\n next: function lexer_next() {\n if (this.done) {\n this.clear();\n return this.EOF;\n }\n\n if (!this._input) {\n this.done = true;\n }\n\n var token, match, tempMatch, index;\n\n if (!this._more) {\n this.clear();\n }\n\n var spec = this.__currentRuleSet__;\n\n if (!spec) {\n // Update the ruleset cache as we apparently encountered a state change or just started lexing.\n // The cache is set up for fast lookup -- we assume a lexer will switch states much less often than it will\n // invoke the `lex()` token-producing API and related APIs, hence caching the set for direct access helps\n // speed up those activities a tiny bit.\n spec = this.__currentRuleSet__ = this._currentRules();\n\n // Check whether a *sane* condition has been pushed before: this makes the lexer robust against\n // user-programmer bugs such as https://github.com/zaach/jison-lex/issues/19\n if (!spec || !spec.rules) {\n var lineno_msg = '';\n\n if (this.options.trackPosition) {\n lineno_msg = ' on line ' + (this.yylineno + 1);\n }\n\n var p = this.constructLexErrorInfo(\n 'Internal lexer engine error' + lineno_msg + ': The lex grammar programmer pushed a non-existing condition name \"' + this.topState() + '\"; this is a fatal error and should be reported to the application programmer team!',\n false\n );\n\n // produce one 'error' token until this situation has been resolved, most probably by parse termination!\n return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n }\n }\n\n var rule_ids = spec.rules;\n var regexes = spec.__rule_regexes;\n var len = spec.__rule_count;\n\n // Note: the arrays are 1-based, while `len` itself is a valid index,\n // hence the non-standard less-or-equal check in the next loop condition!\n for (var i = 1; i <= len; i++) {\n tempMatch = this._input.match(regexes[i]);\n\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rule_ids[i]);\n\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = undefined;\n continue; // rule action called reject() implying a rule MISmatch. \n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n\n if (match) {\n token = this.test_match(match, rule_ids[index]);\n\n if (token !== false) {\n return token;\n }\n\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n\n if (!this._input) {\n this.done = true;\n this.clear();\n return this.EOF;\n } else {\n var lineno_msg = '';\n\n if (this.options.trackPosition) {\n lineno_msg = ' on line ' + (this.yylineno + 1);\n }\n\n var p = this.constructLexErrorInfo(\n 'Lexical error' + lineno_msg + ': Unrecognized text.',\n this.options.lexerErrorsAreRecoverable\n );\n\n var pendingInput = this._input;\n var activeCondition = this.topState();\n var conditionStackDepth = this.conditionStack.length;\n token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n\n if (token === this.ERROR) {\n // we can try to recover from a lexer error that `parseError()` did not 'recover' for us\n // by moving forward at least one character at a time IFF the (user-specified?) `parseError()`\n // has not consumed/modified any pending input or changed state in the error handler:\n if (!this.matches && // and make sure the input has been modified/consumed ...\n pendingInput === this._input && // ...or the lexer state has been modified significantly enough\n // to merit a non-consuming error handling action right now.\n activeCondition === this.topState() && conditionStackDepth === this.conditionStack.length) {\n this.input();\n }\n }\n\n return token;\n }\n },\n\n /**\n * return next match that has a token\n * \n * @public\n * @this {RegExpLexer}\n */\n lex: function lexer_lex() {\n var r;\n\n // allow the PRE/POST handlers set/modify the return token for maximum flexibility of the generated lexer:\n if (typeof this.pre_lex === 'function') {\n r = this.pre_lex.call(this, 0);\n }\n\n if (typeof this.options.pre_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.options.pre_lex.call(this, r) || r;\n }\n\n if (this.yy && typeof this.yy.pre_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.yy.pre_lex.call(this, r) || r;\n }\n\n while (!r) {\n r = this.next();\n }\n\n if (this.yy && typeof this.yy.post_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.yy.post_lex.call(this, r) || r;\n }\n\n if (typeof this.options.post_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.options.post_lex.call(this, r) || r;\n }\n\n if (typeof this.post_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.post_lex.call(this, r) || r;\n }\n\n return r;\n },\n\n /**\n * return next match that has a token. Identical to the `lex()` API but does not invoke any of the \n * `pre_lex()` nor any of the `post_lex()` callbacks.\n * \n * @public\n * @this {RegExpLexer}\n */\n fastLex: function lexer_fastLex() {\n var r;\n\n while (!r) {\n r = this.next();\n }\n\n return r;\n },\n\n /**\n * return info about the lexer state that can help a parser or other lexer API user to use the\n * most efficient means available. This API is provided to aid run-time performance for larger\n * systems which employ this lexer.\n * \n * @public\n * @this {RegExpLexer}\n */\n canIUse: function lexer_canIUse() {\n var rv = {\n fastLex: !(typeof this.pre_lex === 'function' || typeof this.options.pre_lex === 'function' || this.yy && typeof this.yy.pre_lex === 'function' || this.yy && typeof this.yy.post_lex === 'function' || typeof this.options.post_lex === 'function' || typeof this.post_lex === 'function') && typeof this.fastLex === 'function'\n };\n\n return rv;\n },\n\n /**\n * backwards compatible alias for `pushState()`;\n * the latter is symmetrical with `popState()` and we advise to use\n * those APIs in any modern lexer code, rather than `begin()`.\n * \n * @public\n * @this {RegExpLexer}\n */\n begin: function lexer_begin(condition) {\n return this.pushState(condition);\n },\n\n /**\n * activates a new lexer condition state (pushes the new lexer\n * condition state onto the condition stack)\n * \n * @public\n * @this {RegExpLexer}\n */\n pushState: function lexer_pushState(condition) {\n this.conditionStack.push(condition);\n this.__currentRuleSet__ = null;\n return this;\n },\n\n /**\n * pop the previously active lexer condition state off the condition\n * stack\n * \n * @public\n * @this {RegExpLexer}\n */\n popState: function lexer_popState() {\n var n = this.conditionStack.length - 1;\n\n if (n > 0) {\n this.__currentRuleSet__ = null;\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n /**\n * return the currently active lexer condition state; when an index\n * argument is provided it produces the N-th previous condition state,\n * if available\n * \n * @public\n * @this {RegExpLexer}\n */\n topState: function lexer_topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return 'INITIAL';\n }\n },\n\n /**\n * (internal) determine the lexer rule set which is active for the\n * currently active lexer condition state\n * \n * @public\n * @this {RegExpLexer}\n */\n _currentRules: function lexer__currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]];\n } else {\n return this.conditions['INITIAL'];\n }\n },\n\n /**\n * return the number of states currently on the stack\n * \n * @public\n * @this {RegExpLexer}\n */\n stateStackSize: function lexer_stateStackSize() {\n return this.conditionStack.length;\n },\n\n options: {\n trackPosition: true\n },\n\n JisonLexerError: JisonLexerError,\n\n performAction: function lexer__performAction(yy, yyrulenumber, YY_START) {\n var yy_ = this;\n var YYSTATE = YY_START;\n\n switch (yyrulenumber) {\n case 1:\n /*! Conditions:: INITIAL */\n /*! Rule:: \\s+ */\n /* skip whitespace */\n break;\n\n default:\n return this.simpleCaseActionClusters[yyrulenumber];\n }\n },\n\n simpleCaseActionClusters: {\n /*! Conditions:: INITIAL */\n /*! Rule:: (--[0-9a-z-A-Z-]*) */\n 0: 13,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\* */\n 2: 5,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\/ */\n 3: 6,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\+ */\n 4: 3,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: - */\n 5: 4,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)px\\b */\n 6: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)cm\\b */\n 7: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)mm\\b */\n 8: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)in\\b */\n 9: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)pt\\b */\n 10: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)pc\\b */\n 11: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)deg\\b */\n 12: 16,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)grad\\b */\n 13: 16,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)rad\\b */\n 14: 16,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)turn\\b */\n 15: 16,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)s\\b */\n 16: 17,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)ms\\b */\n 17: 17,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)Hz\\b */\n 18: 18,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)kHz\\b */\n 19: 18,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)dpi\\b */\n 20: 19,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)dpcm\\b */\n 21: 19,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)dppx\\b */\n 22: 19,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)em\\b */\n 23: 20,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)ex\\b */\n 24: 21,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)ch\\b */\n 25: 22,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)rem\\b */\n 26: 23,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vw\\b */\n 27: 25,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vh\\b */\n 28: 24,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vmin\\b */\n 29: 26,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vmax\\b */\n 30: 27,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)% */\n 31: 28,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)\\b */\n 32: 11,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: (calc) */\n 33: 9,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: (var) */\n 34: 12,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([a-z]+) */\n 35: 10,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\( */\n 36: 7,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\) */\n 37: 8,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: , */\n 38: 14,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: $ */\n 39: 1\n },\n\n rules: [\n /* 0: */ /^(?:(--[\\d\\-A-Za-z]*))/,\n /* 1: */ /^(?:\\s+)/,\n /* 2: */ /^(?:\\*)/,\n /* 3: */ /^(?:\\/)/,\n /* 4: */ /^(?:\\+)/,\n /* 5: */ /^(?:-)/,\n /* 6: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)px\\b)/,\n /* 7: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)cm\\b)/,\n /* 8: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)mm\\b)/,\n /* 9: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)in\\b)/,\n /* 10: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)pt\\b)/,\n /* 11: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)pc\\b)/,\n /* 12: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)deg\\b)/,\n /* 13: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)grad\\b)/,\n /* 14: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)rad\\b)/,\n /* 15: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)turn\\b)/,\n /* 16: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)s\\b)/,\n /* 17: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)ms\\b)/,\n /* 18: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)Hz\\b)/,\n /* 19: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)kHz\\b)/,\n /* 20: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)dpi\\b)/,\n /* 21: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)dpcm\\b)/,\n /* 22: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)dppx\\b)/,\n /* 23: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)em\\b)/,\n /* 24: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)ex\\b)/,\n /* 25: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)ch\\b)/,\n /* 26: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)rem\\b)/,\n /* 27: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vw\\b)/,\n /* 28: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vh\\b)/,\n /* 29: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vmin\\b)/,\n /* 30: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vmax\\b)/,\n /* 31: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)%)/,\n /* 32: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)\\b)/,\n /* 33: */ /^(?:(calc))/,\n /* 34: */ /^(?:(var))/,\n /* 35: */ /^(?:([a-z]+))/,\n /* 36: */ /^(?:\\()/,\n /* 37: */ /^(?:\\))/,\n /* 38: */ /^(?:,)/,\n /* 39: */ /^(?:$)/\n ],\n\n conditions: {\n 'INITIAL': {\n rules: [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n 21,\n 22,\n 23,\n 24,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 38,\n 39\n ],\n\n inclusive: true\n }\n }\n };\n\n return lexer;\n}();\nparser.lexer = lexer;\n\n\n\nfunction Parser() {\n this.yy = {};\n}\nParser.prototype = parser;\nparser.Parser = Parser;\n\nreturn new Parser();\n})();\n\n \n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\n exports.parser = parser;\n exports.Parser = parser.Parser;\n exports.parse = function () {\n return parser.parse.apply(parser, arguments);\n };\n \n}\n","var parse = require(\"./parse\");\nvar walk = require(\"./walk\");\nvar stringify = require(\"./stringify\");\n\nfunction ValueParser(value) {\n if (this instanceof ValueParser) {\n this.nodes = parse(value);\n return this;\n }\n return new ValueParser(value);\n}\n\nValueParser.prototype.toString = function() {\n return Array.isArray(this.nodes) ? stringify(this.nodes) : \"\";\n};\n\nValueParser.prototype.walk = function(cb, bubble) {\n walk(this.nodes, cb, bubble);\n return this;\n};\n\nValueParser.unit = require(\"./unit\");\n\nValueParser.walk = walk;\n\nValueParser.stringify = stringify;\n\nmodule.exports = ValueParser;\n","var openParentheses = \"(\".charCodeAt(0);\nvar closeParentheses = \")\".charCodeAt(0);\nvar singleQuote = \"'\".charCodeAt(0);\nvar doubleQuote = '\"'.charCodeAt(0);\nvar backslash = \"\\\\\".charCodeAt(0);\nvar slash = \"/\".charCodeAt(0);\nvar comma = \",\".charCodeAt(0);\nvar colon = \":\".charCodeAt(0);\nvar star = \"*\".charCodeAt(0);\n\nmodule.exports = function(input) {\n var tokens = [];\n var value = input;\n\n var next, quote, prev, token, escape, escapePos, whitespacePos;\n var pos = 0;\n var code = value.charCodeAt(pos);\n var max = value.length;\n var stack = [{ nodes: tokens }];\n var balanced = 0;\n var parent;\n\n var name = \"\";\n var before = \"\";\n var after = \"\";\n\n while (pos < max) {\n // Whitespaces\n if (code <= 32) {\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n token = value.slice(pos, next);\n\n prev = tokens[tokens.length - 1];\n if (code === closeParentheses && balanced) {\n after = token;\n } else if (prev && prev.type === \"div\") {\n prev.after = token;\n } else if (\n code === comma ||\n code === colon ||\n (code === slash && value.charCodeAt(next + 1) !== star)\n ) {\n before = token;\n } else {\n tokens.push({\n type: \"space\",\n sourceIndex: pos,\n value: token\n });\n }\n\n pos = next;\n\n // Quotes\n } else if (code === singleQuote || code === doubleQuote) {\n next = pos;\n quote = code === singleQuote ? \"'\" : '\"';\n token = {\n type: \"string\",\n sourceIndex: pos,\n quote: quote\n };\n do {\n escape = false;\n next = value.indexOf(quote, next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += quote;\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n token.value = value.slice(pos + 1, next);\n\n tokens.push(token);\n pos = next + 1;\n code = value.charCodeAt(pos);\n\n // Comments\n } else if (code === slash && value.charCodeAt(pos + 1) === star) {\n token = {\n type: \"comment\",\n sourceIndex: pos\n };\n\n next = value.indexOf(\"*/\", pos);\n if (next === -1) {\n token.unclosed = true;\n next = value.length;\n }\n\n token.value = value.slice(pos + 2, next);\n tokens.push(token);\n\n pos = next + 2;\n code = value.charCodeAt(pos);\n\n // Dividers\n } else if (code === slash || code === comma || code === colon) {\n token = value[pos];\n\n tokens.push({\n type: \"div\",\n sourceIndex: pos - before.length,\n value: token,\n before: before,\n after: \"\"\n });\n before = \"\";\n\n pos += 1;\n code = value.charCodeAt(pos);\n\n // Open parentheses\n } else if (openParentheses === code) {\n // Whitespaces after open parentheses\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n token = {\n type: \"function\",\n sourceIndex: pos - name.length,\n value: name,\n before: value.slice(pos + 1, next)\n };\n pos = next;\n\n if (name === \"url\" && code !== singleQuote && code !== doubleQuote) {\n next -= 1;\n do {\n escape = false;\n next = value.indexOf(\")\", next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += \")\";\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n // Whitespaces before closed\n whitespacePos = next;\n do {\n whitespacePos -= 1;\n code = value.charCodeAt(whitespacePos);\n } while (code <= 32);\n if (pos !== whitespacePos + 1) {\n token.nodes = [\n {\n type: \"word\",\n sourceIndex: pos,\n value: value.slice(pos, whitespacePos + 1)\n }\n ];\n } else {\n token.nodes = [];\n }\n if (token.unclosed && whitespacePos + 1 !== next) {\n token.after = \"\";\n token.nodes.push({\n type: \"space\",\n sourceIndex: whitespacePos + 1,\n value: value.slice(whitespacePos + 1, next)\n });\n } else {\n token.after = value.slice(whitespacePos + 1, next);\n }\n pos = next + 1;\n code = value.charCodeAt(pos);\n tokens.push(token);\n } else {\n balanced += 1;\n token.after = \"\";\n tokens.push(token);\n stack.push(token);\n tokens = token.nodes = [];\n parent = token;\n }\n name = \"\";\n\n // Close parentheses\n } else if (closeParentheses === code && balanced) {\n pos += 1;\n code = value.charCodeAt(pos);\n\n parent.after = after;\n after = \"\";\n balanced -= 1;\n stack.pop();\n parent = stack[balanced];\n tokens = parent.nodes;\n\n // Words\n } else {\n next = pos;\n do {\n if (code === backslash) {\n next += 1;\n }\n next += 1;\n code = value.charCodeAt(next);\n } while (\n next < max &&\n !(\n code <= 32 ||\n code === singleQuote ||\n code === doubleQuote ||\n code === comma ||\n code === colon ||\n code === slash ||\n code === openParentheses ||\n (code === closeParentheses && balanced)\n )\n );\n token = value.slice(pos, next);\n\n if (openParentheses === code) {\n name = token;\n } else {\n tokens.push({\n type: \"word\",\n sourceIndex: pos,\n value: token\n });\n }\n\n pos = next;\n }\n }\n\n for (pos = stack.length - 1; pos; pos -= 1) {\n stack[pos].unclosed = true;\n }\n\n return stack[0].nodes;\n};\n","function stringifyNode(node, custom) {\n var type = node.type;\n var value = node.value;\n var buf;\n var customResult;\n\n if (custom && (customResult = custom(node)) !== undefined) {\n return customResult;\n } else if (type === \"word\" || type === \"space\") {\n return value;\n } else if (type === \"string\") {\n buf = node.quote || \"\";\n return buf + value + (node.unclosed ? \"\" : buf);\n } else if (type === \"comment\") {\n return \"/*\" + value + (node.unclosed ? \"\" : \"*/\");\n } else if (type === \"div\") {\n return (node.before || \"\") + value + (node.after || \"\");\n } else if (Array.isArray(node.nodes)) {\n buf = stringify(node.nodes);\n if (type !== \"function\") {\n return buf;\n }\n return (\n value +\n \"(\" +\n (node.before || \"\") +\n buf +\n (node.after || \"\") +\n (node.unclosed ? \"\" : \")\")\n );\n }\n return value;\n}\n\nfunction stringify(nodes, custom) {\n var result, i;\n\n if (Array.isArray(nodes)) {\n result = \"\";\n for (i = nodes.length - 1; ~i; i -= 1) {\n result = stringifyNode(nodes[i], custom) + result;\n }\n return result;\n }\n return stringifyNode(nodes, custom);\n}\n\nmodule.exports = stringify;\n","var minus = \"-\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar dot = \".\".charCodeAt(0);\nvar exp = \"e\".charCodeAt(0);\nvar EXP = \"E\".charCodeAt(0);\n\nmodule.exports = function(value) {\n var pos = 0;\n var length = value.length;\n var dotted = false;\n var sciPos = -1;\n var containsNumber = false;\n var code;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code >= 48 && code <= 57) {\n containsNumber = true;\n } else if (code === exp || code === EXP) {\n if (sciPos > -1) {\n break;\n }\n sciPos = pos;\n } else if (code === dot) {\n if (dotted) {\n break;\n }\n dotted = true;\n } else if (code === plus || code === minus) {\n if (pos !== 0) {\n break;\n }\n } else {\n break;\n }\n\n pos += 1;\n }\n\n if (sciPos + 1 === pos) pos--;\n\n return containsNumber\n ? {\n number: value.slice(0, pos),\n unit: value.slice(pos)\n }\n : false;\n};\n","module.exports = function walk(nodes, cb, bubble) {\n var i, max, node, result;\n\n for (i = 0, max = nodes.length; i < max; i += 1) {\n node = nodes[i];\n if (!bubble) {\n result = cb(node, i, nodes);\n }\n\n if (\n result !== false &&\n node.type === \"function\" &&\n Array.isArray(node.nodes)\n ) {\n walk(node.nodes, cb, bubble);\n }\n\n if (bubble) {\n cb(node, i, nodes);\n }\n }\n};\n","/*!\n * $script.js JS loader & dependency manager\n * https://github.com/ded/script.js\n * (c) Dustin Diaz 2014 | License MIT\n */\n\n(function (name, definition) {\n if (typeof module != 'undefined' && module.exports) module.exports = definition()\n else if (typeof define == 'function' && define.amd) define(definition)\n else this[name] = definition()\n})('$script', function () {\n var doc = document\n , head = doc.getElementsByTagName('head')[0]\n , s = 'string'\n , f = false\n , push = 'push'\n , readyState = 'readyState'\n , onreadystatechange = 'onreadystatechange'\n , list = {}\n , ids = {}\n , delay = {}\n , scripts = {}\n , scriptpath\n , urlArgs\n\n function every(ar, fn) {\n for (var i = 0, j = ar.length; i < j; ++i) if (!fn(ar[i])) return f\n return 1\n }\n function each(ar, fn) {\n every(ar, function (el) {\n fn(el)\n return 1\n })\n }\n\n function $script(paths, idOrDone, optDone) {\n paths = paths[push] ? paths : [paths]\n var idOrDoneIsDone = idOrDone && idOrDone.call\n , done = idOrDoneIsDone ? idOrDone : optDone\n , id = idOrDoneIsDone ? paths.join('') : idOrDone\n , queue = paths.length\n function loopFn(item) {\n return item.call ? item() : list[item]\n }\n function callback() {\n if (!--queue) {\n list[id] = 1\n done && done()\n for (var dset in delay) {\n every(dset.split('|'), loopFn) && !each(delay[dset], loopFn) && (delay[dset] = [])\n }\n }\n }\n setTimeout(function () {\n each(paths, function loading(path, force) {\n if (path === null) return callback()\n \n if (!force && !/^https?:\\/\\//.test(path) && scriptpath) {\n path = (path.indexOf('.js') === -1) ? scriptpath + path + '.js' : scriptpath + path;\n }\n \n if (scripts[path]) {\n if (id) ids[id] = 1\n return (scripts[path] == 2) ? callback() : setTimeout(function () { loading(path, true) }, 0)\n }\n\n scripts[path] = 1\n if (id) ids[id] = 1\n create(path, callback)\n })\n }, 0)\n return $script\n }\n\n function create(path, fn) {\n var el = doc.createElement('script'), loaded\n el.onload = el.onerror = el[onreadystatechange] = function () {\n if ((el[readyState] && !(/^c|loade/.test(el[readyState]))) || loaded) return;\n el.onload = el[onreadystatechange] = null\n loaded = 1\n scripts[path] = 2\n fn()\n }\n el.async = 1\n el.src = urlArgs ? path + (path.indexOf('?') === -1 ? '?' : '&') + urlArgs : path;\n head.insertBefore(el, head.lastChild)\n }\n\n $script.get = create\n\n $script.order = function (scripts, id, done) {\n (function callback(s) {\n s = scripts.shift()\n !scripts.length ? $script(s, id, done) : $script(s, callback)\n }())\n }\n\n $script.path = function (p) {\n scriptpath = p\n }\n $script.urlArgs = function (str) {\n urlArgs = str;\n }\n $script.ready = function (deps, ready, req) {\n deps = deps[push] ? deps : [deps]\n var missing = [];\n !each(deps, function (dep) {\n list[dep] || missing[push](dep);\n }) && every(deps, function (dep) {return list[dep]}) ?\n ready() : !function (key) {\n delay[key] = delay[key] || []\n delay[key][push](ready)\n req && req(missing)\n }(deps.join('|'))\n return $script\n }\n\n $script.done = function (idOrDone) {\n $script([null], idOrDone)\n }\n\n return $script\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatting = exports.complex = exports.basic = void 0;\nexports.basic = [\n [\"font\", \"fontSize\"],\n [\"fontColor\"],\n [\"horizontalRule\"],\n [\"link\", \"image\"],\n];\nexports.complex = [\n [\"undo\", \"redo\"],\n [\"font\", \"fontSize\", \"formatBlock\"],\n [\"bold\", \"underline\", \"italic\", \"strike\", \"subscript\", \"superscript\"],\n [\"removeFormat\"],\n \"/\",\n [\"fontColor\", \"hiliteColor\"],\n [\"outdent\", \"indent\"],\n [\"align\", \"horizontalRule\", \"list\", \"table\"],\n [\"link\", \"image\", \"video\"],\n [\"fullScreen\", \"showBlocks\", \"codeView\"],\n [\"preview\", \"print\"],\n [\"save\", \"template\"],\n];\nexports.formatting = [\n [\"undo\", \"redo\"],\n [\"bold\", \"underline\", \"italic\", \"strike\", \"subscript\", \"superscript\"],\n [\"removeFormat\"],\n [\"outdent\", \"indent\"],\n [\"fullScreen\", \"showBlocks\", \"codeView\"],\n [\"preview\", \"print\"],\n];\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar plugins_1 = __importDefault(require(\"suneditor/src/plugins\"));\nvar suneditor_1 = __importDefault(require(\"suneditor\"));\nvar getLanguage_1 = __importDefault(require(\"../lang/getLanguage\"));\nvar events_1 = require(\"../data/events\");\nvar SunEditor = function (props) {\n var name = props.name, lang = props.lang, _a = props.setOptions, setOptions = _a === void 0 ? {} : _a, placeholder = props.placeholder, _b = props.width, width = _b === void 0 ? \"100%\" : _b, height = props.height, defaultValue = props.defaultValue, setContents = props.setContents, setDefaultStyle = props.setDefaultStyle, getSunEditorInstance = props.getSunEditorInstance, appendContents = props.appendContents, _c = props.setAllPlugins, setAllPlugins = _c === void 0 ? true : _c, _d = props.disable, disable = _d === void 0 ? false : _d, _e = props.readOnly, readOnly = _e === void 0 ? false : _e, _f = props.hide, hide = _f === void 0 ? false : _f, _g = props.hideToolbar, hideToolbar = _g === void 0 ? false : _g, _h = props.disableToolbar, disableToolbar = _h === void 0 ? false : _h, onChange = props.onChange, autoFocus = props.autoFocus, onBlur = props.onBlur, onLoad = props.onLoad;\n var txtArea = (0, react_1.useRef)(null);\n var editor = (0, react_1.useRef)(null);\n var initialEffect = (0, react_1.useRef)(true);\n (0, react_1.useEffect)(function () {\n var _a;\n var options = __assign(__assign({}, setOptions), { lang: lang ? (0, getLanguage_1.default)(lang) : setOptions.lang, width: width !== null && width !== void 0 ? width : setOptions.width, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : setOptions.placeholder, plugins: (_a = setOptions.plugins) !== null && _a !== void 0 ? _a : (setAllPlugins ? plugins_1.default : undefined), height: height !== null && height !== void 0 ? height : setOptions.height, value: defaultValue !== null && defaultValue !== void 0 ? defaultValue : setOptions.value, defaultStyle: setDefaultStyle !== null && setDefaultStyle !== void 0 ? setDefaultStyle : setOptions.defaultStyle });\n if (name && options.value)\n txtArea.current.value = options.value;\n editor.current = suneditor_1.default.create(txtArea.current, options);\n if (getSunEditorInstance)\n getSunEditorInstance(editor.current);\n editor.current.onload = function (_, reload) {\n if (reload)\n return onLoad === null || onLoad === void 0 ? void 0 : onLoad(reload);\n if (setContents) {\n editor.current.setContents(setContents);\n editor.current.core.focusEdge(null);\n }\n if (appendContents)\n editor.current.appendContents(appendContents);\n if (editor.current.util.isIE)\n editor.current.core._createDefaultRange();\n if (disable)\n editor.current.disable();\n if (readOnly)\n editor.current.readOnly(true);\n if (hide)\n editor.current.hide();\n if (hideToolbar)\n editor.current.toolbar.hide();\n if (disableToolbar)\n editor.current.toolbar.disable();\n if (autoFocus === false)\n editor.current.core.context.element.wysiwyg.blur();\n else if (autoFocus)\n editor.current.core.context.element.wysiwyg.focus();\n return onLoad === null || onLoad === void 0 ? void 0 : onLoad(reload);\n };\n editor.current.onChange = function (content) {\n if (name && txtArea.current)\n txtArea.current.value = content;\n if (onChange)\n onChange(content);\n };\n if (onBlur) {\n editor.current.onBlur = function (e) {\n return onBlur(e, editor.current.getContents(true));\n };\n }\n events_1.events.forEach(function (event) {\n var value = props[event];\n if (value && editor.current) {\n editor.current[event] = value;\n }\n });\n return function () {\n if (editor.current)\n editor.current.destroy();\n editor.current = null;\n };\n }, []);\n (0, react_1.useEffect)(function () {\n var _a;\n if (initialEffect.current)\n return;\n (_a = editor.current) === null || _a === void 0 ? void 0 : _a.setOptions({\n lang: (0, getLanguage_1.default)(lang),\n });\n }, [lang]);\n (0, react_1.useEffect)(function () {\n var _a;\n if (initialEffect.current)\n return;\n (_a = editor.current) === null || _a === void 0 ? void 0 : _a.setOptions({\n placeholder: placeholder,\n height: height,\n width: width,\n });\n }, [placeholder, height, width]);\n (0, react_1.useEffect)(function () {\n var _a;\n if (setDefaultStyle && !initialEffect.current)\n (_a = editor.current) === null || _a === void 0 ? void 0 : _a.setDefaultStyle(setDefaultStyle);\n }, [setDefaultStyle]);\n (0, react_1.useEffect)(function () {\n var _a, _b;\n if (!initialEffect.current &&\n setContents !== undefined &&\n !((_a = editor.current) === null || _a === void 0 ? void 0 : _a.core.hasFocus)) {\n (_b = editor.current) === null || _b === void 0 ? void 0 : _b.setContents(setContents);\n }\n }, [setContents]);\n (0, react_1.useEffect)(function () {\n var _a, _b, _c;\n if (!initialEffect.current &&\n appendContents !== undefined &&\n !((_a = editor.current) === null || _a === void 0 ? void 0 : _a.core.hasFocus)) {\n (_b = editor.current) === null || _b === void 0 ? void 0 : _b.appendContents(appendContents);\n (_c = editor.current) === null || _c === void 0 ? void 0 : _c.core.focusEdge(null);\n }\n }, [appendContents]);\n (0, react_1.useEffect)(function () {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n if (initialEffect.current)\n return;\n (_a = editor.current) === null || _a === void 0 ? void 0 : _a.readOnly(readOnly);\n if (hideToolbar)\n (_b = editor.current) === null || _b === void 0 ? void 0 : _b.toolbar.hide();\n else\n (_c = editor.current) === null || _c === void 0 ? void 0 : _c.toolbar.show();\n if (disableToolbar)\n (_d = editor.current) === null || _d === void 0 ? void 0 : _d.toolbar.disable();\n else\n (_e = editor.current) === null || _e === void 0 ? void 0 : _e.toolbar.enable();\n if (disable)\n (_f = editor.current) === null || _f === void 0 ? void 0 : _f.disable();\n else\n (_g = editor.current) === null || _g === void 0 ? void 0 : _g.enable();\n if (hide)\n (_h = editor.current) === null || _h === void 0 ? void 0 : _h.hide();\n else\n (_j = editor.current) === null || _j === void 0 ? void 0 : _j.show();\n }, [disable, hideToolbar, disableToolbar, hide, readOnly]);\n (0, react_1.useEffect)(function () {\n initialEffect.current = false;\n }, []);\n return (react_1.default.createElement(\"textarea\", __assign({ style: { visibility: \"hidden\" }, ref: txtArea }, { name: name })));\n};\nexports.default = SunEditor;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.events = void 0;\nexports.events = [\n \"onMouseDown\",\n \"onScroll\",\n \"onInput\",\n \"onClick\",\n \"onKeyUp\",\n \"onKeyDown\",\n \"onFocus\",\n \"onImageUploadBefore\",\n \"onVideoUploadBefore\",\n \"onAudioUploadBefore\",\n \"onImageUpload\",\n \"onAudioUpload\",\n \"onVideoUpload\",\n \"onImageUploadError\",\n \"onVideoUploadError\",\n \"onAudioUploadError\",\n \"onSave\",\n \"onSetToolbarButtons\",\n \"imageUploadHandler\",\n \"toggleCodeView\",\n \"toggleFullScreen\",\n \"showInline\",\n \"showController\",\n];\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buttonList = void 0;\nvar SunEditor_1 = __importDefault(require(\"./components/SunEditor\"));\nexports.buttonList = __importStar(require(\"./buttons/buttonList\"));\nexports.default = SunEditor_1.default;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar getLanguage = function (lang) {\n switch (typeof lang) {\n case \"object\":\n return lang;\n case \"string\":\n return require(\"suneditor/src/lang/\".concat(lang, \".js\"));\n default:\n return undefined;\n }\n};\nexports.default = getLanguage;\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'ckb',\n toolbar: {\n default: 'بنه‌ڕه‌ت',\n save: 'پاشه‌كه‌وتكردن',\n font: 'Ùۆنت',\n formats: 'Formats',\n fontSize: 'قه‌باره‌',\n bold: 'تۆخكردن',\n underline: 'Ù‡ÛŽÚµ به‌ژێردا بێنه‌',\n italic: 'لار',\n strike: 'Ù‡ÛŽÚµ به‌ناودا بێنه‌',\n subscript: 'ژێرسکریپت',\n superscript: 'سەرنووس',\n removeFormat: 'لابردنی Ùۆرمات',\n fontColor: 'ره‌نگی Ùۆنت',\n hiliteColor: 'ره‌نگی دیاركراو',\n indent: 'بۆشایی بەجێهێشتن',\n outdent: 'لابردنی بۆشایی',\n align: 'ئاراسته‌',\n alignLeft: 'لای چه‌پ',\n alignRight: 'لای راست',\n alignCenter: 'ناوه‌ند',\n alignJustify: 'به‌رێكی دابه‌ش بكه‌',\n list: 'لیست',\n orderList: 'لیستی ریزكراو',\n unorderList: 'لیستی ریزنه‌كراو',\n horizontalRule: 'Ù‡ÛŽÚµÛŒ ئاسۆیی',\n hr_solid: 'پته‌و',\n hr_dotted: 'نوكته‌ نوكته‌',\n hr_dashed: 'داش داش',\n table: 'خشته‌',\n link: 'به‌سته‌ر',\n math: 'بیركاری',\n image: 'وێنه‌',\n video: 'ڤیدیۆ',\n audio: 'ده‌نگ',\n fullScreen: 'Ù¾Ú• به‌ شاشه‌',\n showBlocks: 'بڵۆك نیشانبده',\n codeView: 'بینینی كۆده‌كان',\n undo: 'ÙˆÛ•Ú© خۆی Ù„ÛŽ بکەوە',\n redo: 'هەڵگەڕاندنەوە',\n preview: 'پێشبینین',\n print: 'پرینت',\n tag_p: 'په‌ره‌گراÙ',\n tag_div: 'ÛŒ ئاسایی (DIV)',\n tag_h: 'سەرپەڕە',\n tag_blockquote: 'ده‌ق',\n tag_pre: 'كۆد',\n template: 'قاڵب',\n lineHeight: 'بڵندی دێر',\n paragraphStyle: 'ستایلی په‌ره‌گراÙ',\n textStyle: 'ستایلی نوسین',\n imageGallery: 'گاله‌ری وێنه‌كان',\n dir_ltr: 'من اليسار إلى اليمين',\n dir_rtl: 'من اليمين الى اليسار',\n mention: 'تنويه ب'\n },\n dialogBox: {\n linkBox: {\n title: 'به‌سته‌ر دابنێ',\n url: 'به‌سته‌ر',\n text: 'تێكستی به‌سته‌ر',\n newWindowCheck: 'له‌ په‌نجه‌ره‌یه‌كی نوێ بكه‌ره‌وه‌',\n downloadLinkCheck: 'رابط التØميل',\n bookmark: 'المرجعية'\n },\n mathBox: {\n title: 'بیركاری',\n inputLabel: 'نیشانه‌كانی بیركاری',\n fontSizeLabel: 'قه‌باره‌ی Ùۆنت',\n previewLabel: 'پێشبینین'\n },\n imageBox: {\n title: 'وێنه‌یه‌ك دابنێ',\n file: 'Ùایلێك هه‌ڵبژێره‌',\n url: 'به‌سته‌ری وێنه‌',\n altText: 'نوسینی جێگره‌وه‌'\n },\n videoBox: {\n title: 'ڤیدیۆیه‌ك دابنێ',\n file: 'Ùایلێك هه‌ڵبژێره‌',\n url: 'YouTube/Vimeo به‌سته‌ری له‌ناودانان وه‌ك '\n },\n audioBox: {\n title: 'ده‌نگێك دابنێ',\n file: 'Ùایلێك هه‌ڵبژێره‌',\n url: 'به‌سته‌ری ده‌نگ'\n },\n browser: {\n tags: 'تاگه‌كان',\n search: 'گه‌ران',\n },\n caption: 'پێناسه‌یه‌ك دابنێ',\n close: 'داخستن',\n submitButton: 'ناردن',\n revertButton: 'بیگەڕێنەوە سەر باری سەرەتایی',\n proportion: 'رێژه‌كان وه‌ك خۆی بهێڵه‌وه‌',\n basic: 'سه‌ره‌تایی',\n left: 'چه‌پ',\n right: 'راست',\n center: 'ناوەڕاست',\n width: 'پانی',\n height: 'به‌رزی',\n size: 'قه‌باره‌',\n ratio: 'رێژه‌'\n },\n controller: {\n edit: 'دەسکاریکردن',\n unlink: 'سڕینەوەی بەستەر',\n remove: 'سڕینه‌وه‌',\n insertRowAbove: 'ریزك له‌ سه‌ره‌وه‌ زیادبكه‌',\n insertRowBelow: 'ریزێك له‌ خواره‌وه‌ زیادبكه‌',\n deleteRow: 'ریز بسره‌وه‌',\n insertColumnBefore: 'ستونێك له‌ پێشه‌وه‌ زیادبكه‌',\n insertColumnAfter: 'ستونێك له‌ دواوه‌ زیادبكه‌',\n deleteColumn: 'ستونێك بسره‌وه‌',\n fixedColumnWidth: 'پانی ستون نه‌گۆربكه‌',\n resize100: 'قه‌باره‌ بگۆره‌ بۆ Ù¡Ù Ù %',\n resize75: 'قه‌باره‌ بگۆره‌ بۆ ٧٥%',\n resize50: 'قه‌باره‌ بگۆره‌ بۆ Ù¥Ù %',\n resize25: 'قه‌باره‌ بگۆره‌ بۆ ٢٥%',\n autoSize: 'قه‌باره‌ی خۆكارانه‌',\n mirrorHorizontal: 'هه‌ڵگه‌رێنه‌وه‌ به‌ده‌وری ته‌وه‌ره‌ی ئاسۆیی',\n mirrorVertical: 'هه‌ڵگه‌رێنه‌وه‌ به‌ده‌وری ته‌وه‌ره‌ی ستونی',\n rotateLeft: 'بسوڕێنه‌ به‌لای چه‌پدا',\n rotateRight: 'بسورێنه‌ به‌لای راستدا',\n maxSize: 'گه‌وره‌ترین قه‌باره‌',\n minSize: 'بچوكترین قه‌باره‌',\n tableHeader: 'سه‌ردێری خشته‌ك',\n mergeCells: 'خانه‌كان تێكه‌ڵبكه‌',\n splitCells: 'خانه‌كان Ù„ÛŽÙƒ جیابكه‌وه‌',\n HorizontalSplit: 'جیاكردنه‌وه‌ی ئاسۆیی',\n VerticalSplit: 'جیاكردنه‌وه‌ی ستونی'\n },\n menu: {\n spaced: 'بۆشای هه‌بێت',\n bordered: 'لێواری هه‌بێت',\n neon: 'نیۆن',\n translucent: 'كه‌مێك وه‌ك شووشه‌',\n shadow: 'سێبه‌ر',\n code: 'كۆد'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'ckb', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * \n * Danish translation by davidkonrad at github or gmail\n *\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'da',\n toolbar: {\n default: 'Default',\n save: 'Gem',\n font: 'Skrifttype',\n formats: 'Format',\n fontSize: 'Skriftstørrelse',\n bold: 'Fed',\n underline: 'Understreget',\n italic: 'SkrÃ¥skrift',\n strike: 'Overstreget',\n subscript: 'Sænket skrift',\n superscript: 'Hævet skrift',\n removeFormat: 'Fjern formatering',\n fontColor: 'Skriftfarve',\n hiliteColor: 'Baggrundsfarve',\n indent: 'Ryk ind',\n outdent: 'Ryk ud',\n align: 'Justering',\n alignLeft: 'Venstrejustering',\n alignRight: 'Højrejustering',\n alignCenter: 'Midterjustering',\n alignJustify: 'Tilpas margin',\n list: 'Lister',\n orderList: 'Nummereret liste',\n unorderList: 'Uordnet liste',\n horizontalRule: 'Horisontal linie',\n hr_solid: 'Almindelig',\n hr_dotted: 'Punkteret',\n hr_dashed: 'Streget',\n table: 'Tabel',\n link: 'Link',\n math: 'Math',\n image: 'Billede',\n video: 'Video',\n audio: 'Audio',\n fullScreen: 'Fuld skærm',\n showBlocks: 'Vis blokke',\n codeView: 'Vis koder',\n undo: 'Undo',\n redo: 'Redo',\n preview: 'Preview',\n print: 'Print',\n tag_p: 'Paragraph',\n tag_div: 'Normal (DIV)',\n tag_h: 'Overskrift',\n tag_blockquote: 'Citer',\n tag_pre: 'Code',\n template: 'Schablone',\n lineHeight: 'Linjehøjde',\n paragraphStyle: 'Afsnitstil',\n textStyle: 'Tekststil',\n imageGallery: 'Billedgalleri',\n dir_ltr: 'Venstre til højre',\n dir_rtl: 'Højre til venstre',\n mention: 'Nævne'\n },\n dialogBox: {\n linkBox: {\n title: 'Indsæt link',\n url: 'URL til link',\n text: 'Tekst for link',\n newWindowCheck: 'Ã…ben i nyt faneblad',\n downloadLinkCheck: 'Download link',\n bookmark: 'Bogmærke'\n },\n mathBox: {\n title: 'Math',\n inputLabel: 'Matematisk notation',\n fontSizeLabel: 'Skriftstørrelse',\n previewLabel: 'Preview'\n },\n imageBox: {\n title: 'Indsæt billede',\n file: 'Indsæt fra fil',\n url: 'Indsæt fra URL',\n altText: 'Alternativ tekst'\n },\n videoBox: {\n title: 'Indsæt Video',\n file: 'Indsæt fra fil',\n url: 'Indlejr video / YouTube,Vimeo'\n },\n audioBox: {\n title: 'Indsæt Audio',\n file: 'Indsæt fra fil',\n url: 'Indsæt fra URL'\n },\n browser: {\n tags: 'Tags',\n search: 'Søg',\n },\n caption: 'Indsæt beskrivelse',\n close: 'Luk',\n submitButton: 'Gennemfør',\n revertButton: 'Gendan',\n proportion: 'Bevar proportioner',\n basic: 'Basis',\n left: 'Venstre',\n right: 'Højre',\n center: 'Center',\n width: 'Bredde',\n height: 'Højde',\n size: 'Størrelse',\n ratio: 'Forhold'\n },\n controller: {\n edit: 'Rediger',\n unlink: 'Fjern link',\n remove: 'Fjern',\n insertRowAbove: 'Indsæt række foroven',\n insertRowBelow: 'Indsæt række nedenfor',\n deleteRow: 'Slet række',\n insertColumnBefore: 'Indsæt kolonne før',\n insertColumnAfter: 'Indsæt kolonne efter',\n deleteColumn: 'Slet kolonne',\n fixedColumnWidth: 'Fast søjlebredde',\n resize100: 'Forstør 100%',\n resize75: 'Forstør 75%',\n resize50: 'Forstør 50%',\n resize25: 'Forstør 25%',\n autoSize: 'Auto størrelse',\n mirrorHorizontal: 'Spejling, horisontal',\n mirrorVertical: 'Spejling, vertikal',\n rotateLeft: 'Roter til venstre',\n rotateRight: 'Toter til højre',\n maxSize: 'Max størrelse',\n minSize: 'Min størrelse',\n tableHeader: 'Tabel overskrift',\n mergeCells: 'Sammenlæg celler (merge)',\n splitCells: 'Opdel celler',\n HorizontalSplit: 'Opdel horisontalt',\n VerticalSplit: 'Opdel vertikalt'\n },\n menu: {\n spaced: 'Brev Afstand',\n bordered: 'Afgrænsningslinje',\n neon: 'Neon',\n translucent: 'Gennemsigtig',\n shadow: 'Skygge',\n code: 'Code'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'da', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2019 @Gundolf68\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'de',\n toolbar: {\n default: 'Standard',\n save: 'Speichern',\n font: 'Schriftart',\n formats: 'Format',\n fontSize: 'Schriftgröße',\n bold: 'Fett',\n underline: 'Unterstrichen',\n italic: 'Kursiv',\n strike: 'Durchgestrichen',\n subscript: 'Tiefgestellt',\n superscript: 'Hochgestellt',\n removeFormat: 'Format entfernen',\n fontColor: 'Schriftfarbe',\n hiliteColor: 'Farbe für Hervorhebungen',\n indent: 'Einzug vergrößern',\n outdent: 'Einzug verkleinern',\n align: 'Ausrichtung',\n alignLeft: 'Links ausrichten',\n alignRight: 'Rechts ausrichten',\n alignCenter: 'Zentriert ausrichten',\n alignJustify: 'Blocksatz',\n list: 'Liste',\n orderList: 'Nummerierte Liste',\n unorderList: 'Aufzählung',\n horizontalRule: 'Horizontale Linie',\n hr_solid: 'Strich',\n hr_dotted: 'Gepunktet',\n hr_dashed: 'Gestrichelt',\n table: 'Tabelle',\n link: 'Link',\n math: 'Mathematik',\n image: 'Bild',\n video: 'Video',\n audio: 'Audio',\n fullScreen: 'Vollbild',\n showBlocks: 'Blockformatierungen anzeigen',\n codeView: 'Quelltext anzeigen',\n undo: 'Rückgängig',\n redo: 'Wiederholen',\n preview: 'Vorschau',\n print: 'Drucken',\n tag_p: 'Absatz',\n tag_div: 'Normal (DIV)',\n tag_h: 'Header',\n tag_blockquote: 'Zitat',\n tag_pre: 'Quellcode',\n template: 'Vorlage',\n lineHeight: 'Zeilenhöhe',\n paragraphStyle: 'Absatzstil',\n textStyle: 'Textstil',\n imageGallery: 'Bildergalerie',\n dir_ltr: 'Links nach rechts',\n dir_rtl: 'Rechts nach links',\n mention: 'Erwähnen'\n },\n dialogBox: {\n linkBox: {\n title: 'Link einfügen',\n url: 'Link-URL',\n text: 'Link-Text',\n newWindowCheck: 'In neuem Fenster anzeigen',\n downloadLinkCheck: 'Download-Link',\n bookmark: 'Lesezeichen'\n },\n mathBox: {\n title: 'Mathematik',\n inputLabel: 'Mathematische Notation',\n fontSizeLabel: 'Schriftgröße',\n previewLabel: 'Vorschau'\n },\n imageBox: {\n title: 'Bild einfügen',\n file: 'Datei auswählen',\n url: 'Bild-URL',\n altText: 'Alternativer Text'\n },\n videoBox: {\n title: 'Video einfügen',\n file: 'Datei auswählen',\n url: 'Video-URL, YouTube/Vimeo'\n },\n audioBox: {\n title: 'Audio einfügen',\n file: 'Datei auswählen',\n url: 'Audio-URL'\n },\n browser: {\n tags: 'Stichworte',\n search: 'Suche',\n },\n caption: 'Beschreibung eingeben',\n close: 'Schließen',\n submitButton: 'Ãœbernehmen',\n revertButton: 'Rückgängig',\n proportion: 'Seitenverhältnis beibehalten',\n basic: 'Standard',\n left: 'Links',\n right: 'Rechts',\n center: 'Zentriert',\n width: 'Breite',\n height: 'Höhe',\n size: 'Größe',\n ratio: 'Verhältnis'\n },\n controller: {\n edit: 'Bearbeiten',\n unlink: 'Link entfernen',\n remove: 'Löschen',\n insertRowAbove: 'Zeile oberhalb einfügen',\n insertRowBelow: 'Zeile unterhalb einfügen',\n deleteRow: 'Zeile löschen',\n insertColumnBefore: 'Spalte links einfügen',\n insertColumnAfter: 'Spalte rechts einfügen',\n deleteColumn: 'Spalte löschen',\n fixedColumnWidth: 'Feste Spaltenbreite',\n resize100: 'Zoom 100%',\n resize75: 'Zoom 75%',\n resize50: 'Zoom 50%',\n resize25: 'Zoom 25%',\n autoSize: 'Automatische Größenanpassung',\n mirrorHorizontal: 'Horizontal spiegeln',\n mirrorVertical: 'Vertikal spiegeln',\n rotateLeft: 'Nach links drehen',\n rotateRight: 'Nach rechts drehen',\n maxSize: 'Maximale Größe',\n minSize: 'Mindestgröße',\n tableHeader: 'Tabellenüberschrift',\n mergeCells: 'Zellen verbinden',\n splitCells: 'Zellen teilen',\n HorizontalSplit: 'Horizontal teilen',\n VerticalSplit: 'Vertikal teilen'\n },\n menu: {\n spaced: 'Buchstabenabstand',\n bordered: 'Umrandet',\n neon: 'Neon',\n translucent: 'Durchscheinend',\n shadow: 'Schatten',\n code: 'Quellcode'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'de', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'en',\n toolbar: {\n default: 'Default',\n save: 'Save',\n font: 'Font',\n formats: 'Formats',\n fontSize: 'Size',\n bold: 'Bold',\n underline: 'Underline',\n italic: 'Italic',\n strike: 'Strike',\n subscript: 'Subscript',\n superscript: 'Superscript',\n removeFormat: 'Remove Format',\n fontColor: 'Font Color',\n hiliteColor: 'Highlight Color',\n indent: 'Indent',\n outdent: 'Outdent',\n align: 'Align',\n alignLeft: 'Align left',\n alignRight: 'Align right',\n alignCenter: 'Align center',\n alignJustify: 'Align justify',\n list: 'List',\n orderList: 'Ordered list',\n unorderList: 'Unordered list',\n horizontalRule: 'Horizontal line',\n hr_solid: 'Solid',\n hr_dotted: 'Dotted',\n hr_dashed: 'Dashed',\n table: 'Table',\n link: 'Link',\n math: 'Math',\n image: 'Image',\n video: 'Video',\n audio: 'Audio',\n fullScreen: 'Full screen',\n showBlocks: 'Show blocks',\n codeView: 'Code view',\n undo: 'Undo',\n redo: 'Redo',\n preview: 'Preview',\n print: 'print',\n tag_p: 'Paragraph',\n tag_div: 'Normal (DIV)',\n tag_h: 'Header',\n tag_blockquote: 'Quote',\n tag_pre: 'Code',\n template: 'Template',\n lineHeight: 'Line height',\n paragraphStyle: 'Paragraph style',\n textStyle: 'Text style',\n imageGallery: 'Image gallery',\n dir_ltr: 'Left to right',\n dir_rtl: 'Right to left',\n mention: 'Mention'\n },\n dialogBox: {\n linkBox: {\n title: 'Insert Link',\n url: 'URL to link',\n text: 'Text to display',\n newWindowCheck: 'Open in new window',\n downloadLinkCheck: 'Download link',\n bookmark: 'Bookmark'\n },\n mathBox: {\n title: 'Math',\n inputLabel: 'Mathematical Notation',\n fontSizeLabel: 'Font Size',\n previewLabel: 'Preview'\n },\n imageBox: {\n title: 'Insert image',\n file: 'Select from files',\n url: 'Image URL',\n altText: 'Alternative text'\n },\n videoBox: {\n title: 'Insert Video',\n file: 'Select from files',\n url: 'Media embed URL, YouTube/Vimeo'\n },\n audioBox: {\n title: 'Insert Audio',\n file: 'Select from files',\n url: 'Audio URL'\n },\n browser: {\n tags: 'Tags',\n search: 'Search',\n },\n caption: 'Insert description',\n close: 'Close',\n submitButton: 'Submit',\n revertButton: 'Revert',\n proportion: 'Constrain proportions',\n basic: 'Basic',\n left: 'Left',\n right: 'Right',\n center: 'Center',\n width: 'Width',\n height: 'Height',\n size: 'Size',\n ratio: 'Ratio'\n },\n controller: {\n edit: 'Edit',\n unlink: 'Unlink',\n remove: 'Remove',\n insertRowAbove: 'Insert row above',\n insertRowBelow: 'Insert row below',\n deleteRow: 'Delete row',\n insertColumnBefore: 'Insert column before',\n insertColumnAfter: 'Insert column after',\n deleteColumn: 'Delete column',\n fixedColumnWidth: 'Fixed column width',\n resize100: 'Resize 100%',\n resize75: 'Resize 75%',\n resize50: 'Resize 50%',\n resize25: 'Resize 25%',\n autoSize: 'Auto size',\n mirrorHorizontal: 'Mirror, Horizontal',\n mirrorVertical: 'Mirror, Vertical',\n rotateLeft: 'Rotate left',\n rotateRight: 'Rotate right',\n maxSize: 'Max size',\n minSize: 'Min size',\n tableHeader: 'Table header',\n mergeCells: 'Merge cells',\n splitCells: 'Split Cells',\n HorizontalSplit: 'Horizontal split',\n VerticalSplit: 'Vertical split'\n },\n menu: {\n spaced: 'Spaced',\n bordered: 'Bordered',\n neon: 'Neon',\n translucent: 'Translucent',\n shadow: 'Shadow',\n code: 'Code'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'en', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n\tif (typeof module === 'object' && typeof module.exports === 'object') {\n\t\tmodule.exports = global.document ?\n\t\t\tfactory(global, true) :\n\t\t\tfunction (w) {\n\t\t\t\tif (!w.document) {\n\t\t\t\t\tthrow new Error('SUNEDITOR_LANG a window with a document');\n\t\t\t\t}\n\t\t\t\treturn factory(w);\n\t\t\t};\n\t} else {\n\t\tfactory(global);\n\t}\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n\tconst lang = {\n\t\tcode: 'es',\n\t\ttoolbar: {\n\t\t\tdefault: 'Valor por defecto',\n\t\t\tsave: 'Guardar',\n\t\t\tfont: 'Fuente',\n\t\t\tformats: 'Formato',\n\t\t\tfontSize: 'Tamaño de fuente',\n\t\t\tbold: 'Negrita',\n\t\t\tunderline: 'Subrayado',\n\t\t\titalic: 'Cursiva',\n\t\t\tstrike: 'Tachado',\n\t\t\tsubscript: 'SubÃndice',\n\t\t\tsuperscript: 'SuperÃndice',\n\t\t\tremoveFormat: 'Eliminar formato',\n\t\t\tfontColor: 'Color de fuente',\n\t\t\thiliteColor: 'Color de resaltado',\n\t\t\tindent: 'Más tabulación',\n\t\t\toutdent: 'Menos tabulación',\n\t\t\talign: 'Alinear',\n\t\t\talignLeft: 'Alinear a la izquierda',\n\t\t\talignRight: 'Alinear a la derecha',\n\t\t\talignCenter: 'Alinear al centro',\n\t\t\talignJustify: 'Justificar',\n\t\t\tlist: 'Lista',\n\t\t\torderList: 'Lista ordenada',\n\t\t\tunorderList: 'Lista desordenada',\n\t\t\thorizontalRule: 'Horizontal line',\n\t\t\thr_solid: 'LÃnea horizontal solida',\n\t\t\thr_dotted: 'LÃnea horizontal punteada',\n\t\t\thr_dashed: 'LÃnea horizontal discontinua',\n\t\t\ttable: 'Tabla',\n\t\t\tlink: 'Link',\n\t\t\tmath: 'Matemáticas',\n\t\t\timage: 'Imagen',\n\t\t\tvideo: 'Video',\n\t\t\taudio: 'Audio',\n\t\t\tfullScreen: 'Pantalla completa',\n\t\t\tshowBlocks: 'Ver bloques',\n\t\t\tcodeView: 'Ver código fuente',\n\t\t\tundo: 'UndoDeshacer última acción',\n\t\t\tredo: 'Rehacer última acción',\n\t\t\tpreview: 'Vista previa',\n\t\t\tprint: 'Imprimir',\n\t\t\ttag_p: 'Párrafo',\n\t\t\ttag_div: 'Normal (DIV)',\n\t\t\ttag_h: 'Header',\n\t\t\ttag_blockquote: 'Cita',\n\t\t\ttag_pre: 'Código',\n\t\t\ttemplate: 'Plantilla',\n\t\t\tlineHeight: 'Altura de la lÃnea',\n\t\t\tparagraphStyle: 'Estilo del parrafo',\n\t\t\ttextStyle: 'Estilo del texto',\n\t\t\timageGallery: 'GalerÃa de imágenes',\n\t\t\tdir_ltr: 'De izquierda a derecha',\n dir_rtl: 'De derecha a izquierda',\n\t\t\tmention: 'Mencionar'\n\t\t},\n\t\tdialogBox: {\n\t\t\tlinkBox: {\n\t\t\t\ttitle: 'Insertar Link',\n\t\t\t\turl: '¿Hacia que URL lleva el link?',\n\t\t\t\ttext: 'Texto para mostrar',\n\t\t\t\tnewWindowCheck: 'Abrir en una nueva ventana',\n\t\t\t\tdownloadLinkCheck: 'Enlace de descarga',\n bookmark: 'Marcador'\n\t\t\t},\n\t\t\tmathBox: {\n title: 'Matemáticas',\n inputLabel: 'Notación Matemática',\n fontSizeLabel: 'Tamaño de fuente',\n previewLabel: 'Vista previa'\n },\n\t\t\timageBox: {\n\t\t\t\ttitle: 'Insertar imagen',\n\t\t\t\tfile: 'Seleccionar desde los archivos',\n\t\t\t\turl: 'URL de la imagen',\n\t\t\t\taltText: 'Texto alternativo'\n\t\t\t},\n\t\t\tvideoBox: {\n\t\t\t\ttitle: 'Insertar Video',\n\t\t\t\tfile: 'Seleccionar desde los archivos',\n\t\t\t\turl: '¿URL del vÃdeo? Youtube/Vimeo'\n\t\t\t},\n\t\t\taudioBox: {\n title: 'Insertar Audio',\n file: 'Seleccionar desde los archivos',\n url: 'URL de la audio'\n },\n browser: {\n tags: 'Etiquetas',\n search: 'Buscar',\n },\n\t\t\tcaption: 'Insertar descripción',\n\t\t\tclose: 'Cerrar',\n\t\t\tsubmitButton: 'Enviar',\n\t\t\trevertButton: 'revertir',\n\t\t\tproportion: 'Restringir las proporciones',\n\t\t\tbasic: 'Basico',\n\t\t\tleft: 'Izquierda',\n\t\t\tright: 'derecha',\n\t\t\tcenter: 'Centro',\n\t\t\twidth: 'Ancho',\n\t\t\theight: 'Alto',\n\t\t\tsize: 'Tamaño',\n\t\t\tratio: 'Proporción'\n\t\t},\n\t\tcontroller: {\n\t\t\tedit: 'Editar',\n\t\t\tunlink: 'Desvincular',\n\t\t\tremove: 'RemoveQuitar',\n\t\t\tinsertRowAbove: 'Insertar fila arriba',\n\t\t\tinsertRowBelow: 'Insertar fila debajo',\n\t\t\tdeleteRow: 'Eliminar fila',\n\t\t\tinsertColumnBefore: 'Insertar columna antes',\n\t\t\tinsertColumnAfter: 'Insertar columna después',\n\t\t\tdeleteColumn: 'Eliminar columna',\n\t\t\tfixedColumnWidth: 'Ancho de columna fijo',\n\t\t\tresize100: 'Redimensionar 100%',\n\t\t\tresize75: 'Redimensionar 75%',\n\t\t\tresize50: 'Redimensionar 50%',\n\t\t\tresize25: 'Redimensionar 25%',\n\t\t\tautoSize: 'Tamaño automático',\n\t\t\tmirrorHorizontal: 'Espejo, Horizontal',\n\t\t\tmirrorVertical: 'Espejo, Vertical',\n\t\t\trotateLeft: 'Girar a la izquierda',\n\t\t\trotateRight: 'Girar a la derecha',\n\t\t\tmaxSize: 'Tamaño máximo',\n\t\t\tminSize: 'Tamaño minÃmo',\n\t\t\ttableHeader: 'Encabezado de tabla',\n\t\t\tmergeCells: 'Combinar celdas',\n\t\t\tsplitCells: 'Dividir celdas',\n\t\t\tHorizontalSplit: 'División horizontal',\n\t\t\tVerticalSplit: 'División vertical'\n\t\t},\n\t\tmenu: {\n\t\t\tspaced: 'Espaciado',\n\t\t\tbordered: 'Bordeado',\n\t\t\tneon: 'Neón',\n\t\t\ttranslucent: 'Translúcido',\n\t\t\tshadow: 'Sombreado',\n code: 'Código'\n\t\t}\n\t};\n\n\tif (typeof noGlobal === typeof undefined) {\n\t\tif (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'es', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n\t}\n\n\treturn lang;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2019 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'fr',\n toolbar: {\n default: 'Défaut',\n save: 'Sauvegarder',\n font: 'Police',\n formats: 'Formats',\n fontSize: 'Taille',\n bold: 'Gras',\n underline: 'Souligné',\n italic: 'Italique',\n strike: 'Barré',\n subscript: 'Indice',\n superscript: 'Exposant',\n removeFormat: 'Effacer le formatage',\n fontColor: 'Couleur du texte',\n hiliteColor: 'Couleur en arrière plan',\n indent: 'Indenter',\n outdent: 'Désindenter',\n align: 'Alignement',\n alignLeft: 'À gauche',\n alignRight: 'À droite',\n alignCenter: 'Centré',\n alignJustify: 'Justifié',\n list: 'Liste',\n orderList: 'Ordonnée',\n unorderList: 'Non-ordonnée',\n horizontalRule: 'Ligne horizontale',\n hr_solid: 'Solide',\n hr_dotted: 'Points',\n hr_dashed: 'Tirets',\n table: 'Table',\n link: 'Lien',\n math: 'Math',\n image: 'Image',\n video: 'Video',\n audio: 'Audio',\n fullScreen: 'Plein écran',\n showBlocks: 'Voir les blocs',\n codeView: 'Voir le code',\n undo: 'Annuler',\n redo: 'Rétablir',\n preview: 'Prévisualiser',\n print: 'Imprimer',\n tag_p: 'Paragraphe',\n tag_div: 'Normal (DIV)',\n tag_h: 'Titre',\n tag_blockquote: 'Citation',\n tag_pre: 'Code',\n template: 'Template',\n lineHeight: 'Hauteur de la ligne',\n paragraphStyle: 'Style de paragraphe',\n textStyle: 'Style de texte',\n imageGallery: 'Galerie d\\'images',\n dir_ltr: 'De gauche à droite',\n dir_rtl: 'De droite à gauche',\n mention: 'Mention'\n },\n dialogBox: {\n linkBox: {\n title: 'Insérer un lien',\n url: 'Adresse URL du lien',\n text: 'Texte à afficher',\n newWindowCheck: 'Ouvrir dans une nouvelle fenêtre',\n downloadLinkCheck: 'Lien de téléchargement',\n bookmark: 'Signet'\n },\n mathBox: {\n title: 'Math',\n inputLabel: 'Notation mathématique',\n fontSizeLabel: 'Taille',\n previewLabel: 'Prévisualiser'\n },\n imageBox: {\n title: 'Insérer une image',\n file: 'Sélectionner le fichier',\n url: 'Adresse URL du fichier',\n altText: 'Texte Alternatif'\n },\n videoBox: {\n title: 'Insérer une vidéo',\n file: 'Sélectionner le fichier',\n url: 'URL d’intégration du média, YouTube/Vimeo'\n },\n audioBox: {\n title: 'Insérer un fichier audio',\n file: 'Sélectionner le fichier',\n url: 'Adresse URL du fichier'\n },\n browser: {\n tags: 'Mots clés',\n search: 'Chercher',\n },\n caption: 'Insérer une description',\n close: 'Fermer',\n submitButton: 'Appliquer',\n revertButton: 'Revenir en arrière',\n proportion: 'Maintenir le rapport hauteur/largeur',\n basic: 'Basique',\n left: 'Gauche',\n right: 'Droite',\n center: 'Centré',\n width: 'Largeur',\n height: 'Hauteur',\n size: 'Taille',\n ratio: 'Rapport'\n },\n controller: {\n edit: 'Modifier',\n unlink: 'Supprimer un lien',\n remove: 'Effacer',\n insertRowAbove: 'Insérer une ligne en dessous',\n insertRowBelow: 'Insérer une ligne au dessus',\n deleteRow: 'Effacer la ligne',\n insertColumnBefore: 'Insérer une colonne avant',\n insertColumnAfter: 'Insérer une colonne après',\n deleteColumn: 'Effacer la colonne',\n fixedColumnWidth: 'Largeur de colonne fixe',\n resize100: 'Redimensionner à 100%',\n resize75: 'Redimensionner à 75%',\n resize50: 'Redimensionner à 50%',\n resize25: 'Redimensionner à 25%',\n autoSize: 'Taille automatique',\n mirrorHorizontal: 'Mirroir, Horizontal',\n mirrorVertical: 'Mirroir, Vertical',\n rotateLeft: 'Rotation à gauche',\n rotateRight: 'Rotation à droite',\n maxSize: 'Taille max',\n minSize: 'Taille min',\n tableHeader: 'En-tête de table',\n mergeCells: 'Fusionner les cellules',\n splitCells: 'Diviser les Cellules',\n HorizontalSplit: 'Scission horizontale',\n VerticalSplit: 'Scission verticale'\n },\n menu: {\n spaced: 'Espacement',\n bordered: 'Ligne de démarcation',\n neon: 'Néon',\n translucent: 'Translucide',\n shadow: 'Ombre',\n code: 'Code'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'fr', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'he',\n toolbar: {\n default: 'ברירת מחדל',\n save: 'שמור',\n font: 'גופן',\n formats: 'עיצוב',\n fontSize: 'גודל',\n bold: 'מודגש',\n underline: 'קו תחתון',\n italic: '× ×˜×•×™',\n strike: 'קו חוצה',\n subscript: 'עילי',\n superscript: 'תחתי',\n removeFormat: 'הסר עיצוב',\n fontColor: 'צבע גופן',\n hiliteColor: 'צבע קו תחתון',\n indent: 'הגדל ×›× ×™×¡×”',\n outdent: 'הקטן ×›× ×™×¡×”',\n align: 'יישור',\n alignLeft: 'יישר לשמ×ל',\n alignRight: 'יישר לימין',\n alignCenter: 'מרכז',\n alignJustify: 'יישר ×œ×©× ×™ הצדדי×',\n list: 'רשימה',\n orderList: 'מספור',\n unorderList: 'תבליטי×',\n horizontalRule: 'קו ×ופקי',\n hr_solid: 'קו',\n hr_dotted: '× ×§×•×“×•×ª',\n hr_dashed: 'מקפי×',\n table: 'טבלה',\n link: 'קישור',\n math: 'מתמטיקה',\n image: '×ª×ž×•× ×”',\n video: 'חוזי',\n audio: 'שמע',\n fullScreen: 'מסך מל×',\n showBlocks: 'הצג גושי×',\n codeView: 'הצג קוד',\n undo: 'בטל',\n redo: 'חזור',\n preview: 'תצוגה מקדימה',\n print: 'הדפס',\n tag_p: 'פסקה',\n tag_div: 'רגילה (DIV)',\n tag_h: 'כותרת',\n tag_blockquote: 'ציטוט',\n tag_pre: 'קוד',\n template: '×ª×‘× ×™×ª',\n lineHeight: 'גובה השורה',\n paragraphStyle: '×¡×’× ×•×Ÿ פסקה',\n textStyle: '×¡×’× ×•×Ÿ גופן',\n imageGallery: 'גלרית ×ª×ž×•× ×•×ª',\n dir_ltr: 'משמ×ל לימין',\n dir_rtl: 'מימין לשמ×ל',\n mention: 'הזכר'\n },\n dialogBox: {\n linkBox: {\n title: '×”×›× ×¡ קשור',\n url: 'כתובת קשור',\n text: 'תי×ור',\n newWindowCheck: 'פתח בחלון חדש',\n downloadLinkCheck: 'קישור להורדה',\n bookmark: '×¡×ž× ×™×”'\n },\n mathBox: {\n title: '× ×•×¡×—×”',\n inputLabel: '×¡×™×ž× ×™× ×ž×ª×ž×˜×™×',\n fontSizeLabel: 'גודל גופן',\n previewLabel: 'תצוגה מקדימה'\n },\n imageBox: {\n title: '×”×›× ×¡ ×ª×ž×•× ×”',\n file: 'בחר מקובץ',\n url: 'כתובת URL ×ª×ž×•× ×”',\n altText: 'תי×ור (תגית alt)'\n },\n videoBox: {\n title: '×”×›× ×¡ סרטון',\n file: 'בחר מקובץ',\n url: 'כתובת הטמעה YouTube/Vimeo'\n },\n audioBox: {\n title: '×”×›× ×¡ שמע',\n file: 'בחר מקובץ',\n url: 'כתובת URL שמע'\n },\n browser: {\n tags: 'תג',\n search: 'חפש',\n },\n caption: '×”×›× ×¡ תי×ור',\n close: 'סגור',\n submitButton: 'שלח',\n revertButton: 'בטל',\n proportion: 'שמר יחס',\n basic: 'בסיסי',\n left: 'שמ×ל',\n right: 'ימין',\n center: 'מרכז',\n width: 'רוחב',\n height: 'גובה',\n size: 'גודל',\n ratio: 'יחס'\n },\n controller: {\n edit: 'ערוך',\n unlink: 'הסר קישורי×',\n remove: 'הסר',\n insertRowAbove: '×”×›× ×¡ שורה מעל',\n insertRowBelow: '×”×›× ×¡ שורה מתחת',\n deleteRow: 'מחק שורה',\n insertColumnBefore: '×”×›× ×¡ עמודה ×œ×¤× ×™',\n insertColumnAfter: '×”×›× ×¡ עמודה ×חרי',\n deleteColumn: 'מחק עמודה',\n fixedColumnWidth: 'קבע רוחב עמודות',\n resize100: '×œ×œ× ×”×§×˜× ×”',\n resize75: 'הקטן 75%',\n resize50: 'הקטן 50%',\n resize25: 'הקטן 25%',\n autoSize: 'הקטן ×וטומטית',\n mirrorHorizontal: 'הפוך לרוחב',\n mirrorVertical: 'הפוך לגובה',\n rotateLeft: 'סובב שמ×לה',\n rotateRight: 'סובב ×™×ž×™× ×”',\n maxSize: 'גודל מרבי',\n minSize: 'גודל מזערי',\n tableHeader: 'כותרת טבלה',\n mergeCells: 'מזג ת××™×',\n splitCells: 'פצל ת×',\n HorizontalSplit: 'פצל לגובה',\n VerticalSplit: 'פצל לרוחב'\n },\n menu: {\n spaced: 'מרווח',\n bordered: 'בעל מית×ר',\n neon: 'זוהר',\n translucent: 'שקוף למחצה',\n shadow: 'צל',\n code: 'קוד'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'he', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));\n","'use strict';\n\nimport ckb from './ckb';\nimport da from './da';\nimport de from './de';\nimport en from './en';\nimport es from './es';\nimport fr from './fr';\nimport he from './he';\nimport it from './it';\nimport ja from './ja';\nimport ko from './ko';\nimport lv from './lv';\nimport nl from './nl';\nimport pl from './pl';\nimport pt_br from './pt_br';\nimport ro from './ro';\nimport ru from './ru';\nimport se from './se';\nimport ua from './ua';\nimport ur from './ur';\nimport zh_cn from './zh_cn';\n\nexport { ckb, da, de, en, es, fr, he, it, ja, ko, lv, nl, pl, pt_br, ro, ru, se, ua, ur, zh_cn };\nexport default { ckb, da, de, en, es, fr, he, it, ja, ko, lv, nl, pl, pt_br, ro, ru, se, ua, ur, zh_cn };\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG una finestra con un documento');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'it',\n toolbar: {\n default: 'Predefinita',\n save: 'Salva',\n font: 'Font',\n formats: 'Formato',\n fontSize: 'Grandezza',\n bold: 'Grassetto',\n underline: 'Sottolineato',\n italic: 'Corsivo',\n strike: 'Barrato',\n subscript: 'Apice',\n superscript: 'Pedice',\n removeFormat: 'Rimuovi formattazione',\n fontColor: 'Colore testo',\n hiliteColor: 'Colore sottolineatura',\n indent: 'Aumenta rientro',\n outdent: 'Riduci rientro',\n align: 'Allinea',\n alignLeft: 'Allinea a sinistra',\n alignRight: 'Allinea a destra',\n alignCenter: 'Allinea al centro',\n alignJustify: 'Giustifica testo',\n list: 'Elenco',\n orderList: 'Elenco numerato',\n unorderList: 'Elenco puntato',\n horizontalRule: 'Linea orizzontale',\n hr_solid: 'Linea continua',\n hr_dotted: 'Puntini',\n hr_dashed: 'Trattini',\n table: 'Tabella',\n link: 'Collegamento ipertestuale',\n math: 'Formula matematica',\n image: 'Immagine',\n video: 'Video',\n audio: 'Audio',\n fullScreen: 'A tutto schermo',\n showBlocks: 'Visualizza blocchi',\n codeView: 'Visualizza codice',\n undo: 'Annulla',\n redo: 'Ripristina',\n preview: 'Anteprima',\n print: 'Stampa',\n tag_p: 'Paragrafo',\n tag_div: 'Normale (DIV)',\n tag_h: 'Titolo',\n tag_blockquote: 'Citazione',\n tag_pre: 'Codice',\n template: 'Modello',\n lineHeight: 'Interlinea',\n paragraphStyle: 'Stile paragrafo',\n textStyle: 'Stile testo',\n imageGallery: 'Galleria di immagini',\n dir_ltr: 'Da sinistra a destra',\n dir_rtl: 'Da destra a sinistra',\n mention: 'Menzione'\n },\n dialogBox: {\n linkBox: {\n title: 'Inserisci un link',\n url: 'Indirizzo',\n text: 'Testo da visualizzare',\n newWindowCheck: 'Apri in una nuova finestra',\n downloadLinkCheck: 'Link per scaricare',\n bookmark: 'Segnalibro'\n },\n mathBox: {\n title: 'Matematica',\n inputLabel: 'Notazione matematica',\n fontSizeLabel: 'Grandezza testo',\n previewLabel: 'Anteprima'\n },\n imageBox: {\n title: 'Inserisci immagine',\n file: 'Seleziona da file',\n url: 'Indirizzo immagine',\n altText: 'Testo alternativo (ALT)'\n },\n videoBox: {\n title: 'Inserisci video',\n file: 'Seleziona da file',\n url: 'Indirizzo video di embed, YouTube/Vimeo'\n },\n audioBox: {\n title: 'Inserisci audio',\n file: 'Seleziona da file',\n url: 'Indirizzo audio'\n },\n browser: {\n tags: 'tag',\n search: 'Ricerca',\n },\n caption: 'Inserisci didascalia',\n close: 'Chiudi',\n submitButton: 'Invia',\n revertButton: 'Annulla',\n proportion: 'Proporzionale',\n basic: 'Da impostazione',\n left: 'Sinistra',\n right: 'Destra',\n center: 'Centrato',\n width: 'Larghezza',\n height: 'Altezza',\n size: 'Dimensioni',\n ratio: 'Rapporto'\n },\n controller: {\n edit: 'Modifica',\n unlink: 'Elimina link',\n remove: 'Rimuovi',\n insertRowAbove: 'Inserisci riga sopra',\n insertRowBelow: 'Inserisci riga sotto',\n deleteRow: 'Cancella riga',\n insertColumnBefore: 'Inserisci colonna prima',\n insertColumnAfter: 'Inserisci colonna dopo',\n deleteColumn: 'Cancella colonna',\n fixedColumnWidth: 'Larghezza delle colonne fissa',\n resize100: 'Ridimensiona 100%',\n resize75: 'Ridimensiona 75%',\n resize50: 'Ridimensiona 50%',\n resize25: 'Ridimensiona 25%',\n autoSize: 'Ridimensione automatica',\n mirrorHorizontal: 'Capovolgi orizzontalmente',\n mirrorVertical: 'Capovolgi verticalmente',\n rotateLeft: 'Ruota a sinistra',\n rotateRight: 'Ruota a destra',\n maxSize: 'Dimensione massima',\n minSize: 'Dimensione minima',\n tableHeader: 'Intestazione tabella',\n mergeCells: 'Unisci celle',\n splitCells: 'Dividi celle',\n HorizontalSplit: 'Separa orizontalmente',\n VerticalSplit: 'Separa verticalmente'\n },\n menu: {\n spaced: 'Spaziato',\n bordered: 'Bordato',\n neon: 'Luminoso',\n translucent: 'Traslucido',\n shadow: 'Ombra',\n code: 'Codice'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'it', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2019 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'ja',\n toolbar: {\n default: 'デフォルト',\n save: 'ä¿å˜',\n font: 'フォント',\n formats: '段è½å½¢å¼',\n fontSize: 'サイズ',\n bold: '太å—',\n underline: '下線',\n italic: 'イタリック',\n strike: 'å–り消ã—ç·š',\n subscript: '下付ã',\n superscript: '上付ã',\n removeFormat: 'å½¢å¼ã‚’削除',\n fontColor: 'æ–‡å—色',\n hiliteColor: 'æ–‡å—ã®èƒŒæ™¯è‰²',\n indent: 'インデント',\n outdent: 'インデント',\n align: 'ソート',\n alignLeft: 'å·¦æƒãˆ',\n alignRight: 'å³æƒãˆ',\n alignCenter: 'ä¸å¤®æƒãˆ',\n alignJustify: '両端æƒãˆ',\n list: 'リスト',\n orderList: '数値ブリット',\n unorderList: '円形ブリット',\n horizontalRule: '水平線を挿入',\n hr_solid: '実線',\n hr_dotted: '点線',\n hr_dashed: 'ダッシュ',\n table: 'テーブル',\n link: 'リンク',\n math: 'æ•°å¦',\n image: 'ç”»åƒ',\n video: 'å‹•ç”»',\n audio: 'オーディオ',\n fullScreen: 'フルスクリーン',\n showBlocks: 'ブãƒãƒƒã‚¯è¡¨ç¤º',\n codeView: 'HTMLã®ç·¨é›†',\n undo: 'å…ƒã«æˆ»ã™',\n redo: 'å†å®Ÿè¡Œ',\n preview: 'プレビュー',\n print: 'å°åˆ·',\n tag_p: '本文',\n tag_div: '基本(DIV)',\n tag_h: 'タイトル',\n tag_blockquote: '引用',\n tag_pre: 'コード',\n template: 'テンプレート',\n lineHeight: 'è¡Œã®é«˜ã•',\n paragraphStyle: '段è½ã‚¹ã‚¿ã‚¤ãƒ«',\n textStyle: 'テã‚ストスタイル',\n imageGallery: 'イメージギャラリー',\n dir_ltr: 'å·¦ã‹ã‚‰å³ã¸',\n dir_rtl: 'å³ã‹ã‚‰å·¦ã«',\n mention: '言åŠã™ã‚‹'\n },\n dialogBox: {\n linkBox: {\n title: 'リンクã®æŒ¿å…¥',\n url: 'インターãƒãƒƒãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹',\n text: 'ç”»é¢ã®ãƒ†ã‚スト',\n newWindowCheck: '別ウィンドウã§é–‹ã',\n downloadLinkCheck: 'ダウンãƒãƒ¼ãƒ‰ãƒªãƒ³ã‚¯',\n bookmark: 'ブックマーク'\n },\n mathBox: {\n title: 'æ•°å¦',\n inputLabel: 'æ•°å¦è¡¨è¨˜',\n fontSizeLabel: 'サイズ',\n previewLabel: 'プレビュー'\n },\n imageBox: {\n title: 'ç”»åƒã®æŒ¿å…¥',\n file: 'ファイルã®é¸æŠž',\n url: 'イメージアドレス',\n altText: 'ç½®æ›æ–‡å—列'\n },\n videoBox: {\n title: '動画を挿入',\n file: 'ファイルã®é¸æŠž',\n url: 'メディア埋ã‚è¾¼ã¿ã‚¢ãƒ‰ãƒ¬ã‚¹, YouTube/Vimeo'\n },\n audioBox: {\n title: 'オーディオを挿入',\n file: 'ファイルã®é¸æŠž',\n url: 'オーディオアドレス'\n },\n browser: {\n tags: 'ã‚¿ã‚°',\n search: '探ã™',\n },\n caption: '説明付ã‘',\n close: 'é–‰ã˜ã‚‹',\n submitButton: '確èª',\n revertButton: 'å…ƒã«æˆ»ã™',\n proportion: 'ã®å‰²åˆã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚º',\n basic: '基本',\n left: 'å·¦',\n right: 'å³',\n center: 'ä¸å¤®',\n width: '横',\n height: '縦',\n size: 'サイズ',\n ratio: '比率'\n },\n controller: {\n edit: '編集',\n unlink: 'リンク解除',\n remove: '削除',\n insertRowAbove: '上ã«è¡Œã‚’挿入',\n insertRowBelow: '下ã«è¡Œã‚’挿入',\n deleteRow: 'è¡Œã®å‰Šé™¤',\n insertColumnBefore: 'å·¦ã«åˆ—を挿入',\n insertColumnAfter: 'å³ã«åˆ—を挿入',\n deleteColumn: '列を削除ã™ã‚‹',\n fixedColumnWidth: '固定列幅',\n resize100: '100ï¼… サイズ',\n resize75: '75ï¼… サイズ',\n resize50: '50ï¼… サイズ',\n resize25: '25ï¼… サイズ',\n autoSize: '自動サイズ',\n mirrorHorizontal: 'å·¦å³å転',\n mirrorVertical: '上下å転',\n rotateLeft: 'å·¦ã«å›žè»¢',\n rotateRight: 'å³ã«å›žè»¢',\n maxSize: '最大サイズ',\n minSize: '最å°ã‚µã‚¤ã‚º',\n tableHeader: '表ã®ãƒ˜ãƒƒãƒ€ãƒ¼',\n mergeCells: 'セルã®çµåˆ',\n splitCells: 'セルを分割',\n HorizontalSplit: '横分割',\n VerticalSplit: '垂直分割'\n },\n menu: {\n spaced: 'æ–‡å—é–“éš”',\n bordered: '境界線',\n neon: 'ãƒã‚ªãƒ³',\n translucent: 'åŠé€æ˜Ž',\n shadow: 'å½±',\n code: 'コード'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'ja', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'ko',\n toolbar: {\n default: '기본값',\n save: 'ì €ìž¥',\n font: '글꼴',\n formats: '문단 형ì‹',\n fontSize: 'í¬ê¸°',\n bold: '굵게',\n underline: '밑줄',\n italic: '기울임',\n strike: 'ì·¨ì†Œì„ ',\n subscript: '아래 첨ìž',\n superscript: '위 첨ìž',\n removeFormat: 'í˜•ì‹ ì œê±°',\n fontColor: '글ìžìƒ‰',\n hiliteColor: '배경색',\n indent: '들여쓰기',\n outdent: '내어쓰기',\n align: 'ì •ë ¬',\n alignLeft: '왼쪽 ì •ë ¬',\n alignRight: '오른쪽 ì •ë ¬',\n alignCenter: 'ê°€ìš´ë° ì •ë ¬',\n alignJustify: '양쪽 ì •ë ¬',\n list: '리스트',\n orderList: '숫ìží˜• 리스트',\n unorderList: 'ì›í˜• 리스트',\n horizontalRule: '가로 줄 삽입',\n hr_solid: 'ì‹¤ì„ ',\n hr_dotted: 'ì ì„ ',\n hr_dashed: '대시',\n table: 'í…Œì´ë¸”',\n link: 'ë§í¬',\n math: '수ì‹',\n image: 'ì´ë¯¸ì§€',\n video: 'ë™ì˜ìƒ',\n audio: '오디오',\n fullScreen: 'ì „ì²´ 화면',\n showBlocks: 'ë¸”ë¡ ë³´ê¸°',\n codeView: 'HTML 편집',\n undo: '실행 취소',\n redo: '다시 실행',\n preview: '미리보기',\n print: 'ì¸ì‡„',\n tag_p: '본문',\n tag_div: '기본 (DIV)',\n tag_h: 'ì œëª©',\n tag_blockquote: 'ì¸ìš©ë¬¸',\n tag_pre: '코드',\n template: '템플릿',\n lineHeight: '줄 높ì´',\n paragraphStyle: '문단 스타ì¼',\n textStyle: 'ê¸€ìž ìŠ¤íƒ€ì¼',\n imageGallery: 'ì´ë¯¸ì§€ 갤러리',\n dir_ltr: '왼쪽ì—ì„œ 오른쪽',\n dir_rtl: '오른쪽ì—ì„œ 왼쪽',\n mention: '멘션'\n },\n dialogBox: {\n linkBox: {\n title: 'ë§í¬ 삽입',\n url: 'ì¸í„°ë„· 주소',\n text: '화면 í…스트',\n newWindowCheck: '새창으로 열기',\n downloadLinkCheck: '다운로드 ë§í¬',\n bookmark: 'ë¶ë§ˆí¬'\n },\n mathBox: {\n title: '수ì‹',\n inputLabel: '수학ì 표기법',\n fontSizeLabel: 'ê¸€ìž í¬ê¸°',\n previewLabel: '미리보기'\n },\n imageBox: {\n title: 'ì´ë¯¸ì§€ 삽입',\n file: 'íŒŒì¼ ì„ íƒ',\n url: 'ì´ë¯¸ì§€ 주소',\n altText: '대체 문ìžì—´'\n },\n videoBox: {\n title: 'ë™ì˜ìƒ 삽입',\n file: 'íŒŒì¼ ì„ íƒ',\n url: '미디어 ìž„ë² ë“œ 주소, ìœ íŠœë¸Œ/비메오'\n },\n audioBox: {\n title: '오디오 삽입',\n file: 'íŒŒì¼ ì„ íƒ',\n url: '오디오 íŒŒì¼ ì£¼ì†Œ'\n },\n browser: {\n tags: '태그',\n search: '검색',\n },\n caption: '설명 넣기',\n close: '닫기',\n submitButton: '확ì¸',\n revertButton: 'ë˜ëŒë¦¬ê¸°',\n proportion: '비율 맞춤',\n basic: '기본',\n left: '왼쪽',\n right: '오른쪽',\n center: '가운ë°',\n width: '가로',\n height: '세로',\n size: 'í¬ê¸°',\n ratio: '비율'\n },\n controller: {\n edit: '편집',\n unlink: 'ë§í¬ í•´ì œ',\n remove: 'ì‚ì œ',\n insertRowAbove: 'ìœ„ì— í–‰ 삽입',\n insertRowBelow: 'ì•„ëž˜ì— í–‰ 삽입',\n deleteRow: 'í–‰ ì‚ì œ',\n insertColumnBefore: 'ì™¼ìª½ì— ì—´ 삽입',\n insertColumnAfter: 'ì˜¤ë¥¸ìª½ì— ì—´ 삽입',\n deleteColumn: 'ì—´ ì‚ì œ',\n fixedColumnWidth: 'ê³ ì • ëœ ì—´ 너비',\n resize100: '100% í¬ê¸°',\n resize75: '75% í¬ê¸°',\n resize50: '50% í¬ê¸°',\n resize25: '25% í¬ê¸°',\n autoSize: 'ìžë™ í¬ê¸°',\n mirrorHorizontal: '좌우 ë°˜ì „',\n mirrorVertical: 'ìƒí•˜ ë°˜ì „',\n rotateLeft: '왼쪽으로 íšŒì „',\n rotateRight: '오른쪽으로 íšŒì „',\n maxSize: '최대화',\n minSize: '최소화',\n tableHeader: 'í…Œì´ë¸” ì œëª©',\n mergeCells: 'ì…€ 병합',\n splitCells: 'ì…€ ë¶„í• ',\n HorizontalSplit: '가로 ë¶„í• ',\n VerticalSplit: '세로 ë¶„í• '\n },\n menu: {\n spaced: 'ê¸€ìž ê°„ê²©',\n bordered: 'ê²½ê³„ì„ ',\n neon: '네온',\n translucent: '반투명',\n shadow: '그림ìž',\n code: '코드'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'ko', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'lv',\n toolbar: {\n default: 'NoklusÄ“juma',\n save: 'SaglabÄt',\n font: 'Fonts',\n formats: 'FormÄti',\n fontSize: 'Fonta lielums',\n bold: 'Treknraksts',\n underline: 'PasvÄ«trot',\n italic: 'SlÄ«praksts',\n strike: 'PÄrsvÄ«trojums',\n subscript: 'ApakÅ¡raksts',\n superscript: 'AugÅ¡raksts',\n removeFormat: 'Noņemt formÄtu',\n fontColor: 'Fonta krÄsa',\n hiliteColor: 'Teksta iezÄ«mÄ“Å¡anas krÄsa',\n indent: 'PalielinÄt atkÄpi',\n outdent: 'SamazinÄt atkÄpi',\n align: 'IzlÄ«dzinÄt',\n alignLeft: 'LÄ«dzinÄt pa kreisi',\n alignRight: 'LÄ«dzinÄt pa labi',\n alignCenter: 'CentrÄ“t',\n alignJustify: 'Taisnot',\n list: 'Saraksts',\n orderList: 'NumerÄcija',\n unorderList: 'Aizzimes',\n horizontalRule: 'HorizontÄla lÄ«nija',\n hr_solid: 'Ciets',\n hr_dotted: 'Punktiņš',\n hr_dashed: 'BraÅ¡a',\n table: 'Tabula',\n link: 'Saite',\n math: 'MatemÄtika',\n image: 'AttÄ“ls',\n video: 'Video',\n audio: 'Audio',\n fullScreen: 'PilnekrÄna režīms',\n showBlocks: 'ParÄdit blokus',\n codeView: 'Koda skats',\n undo: 'Atsaukt',\n redo: 'AtkÄrtot',\n preview: 'PriekÅ¡skatÄ«jums',\n print: 'DrukÄt',\n tag_p: 'ParagrÄfs',\n tag_div: 'NormÄli (DIV)',\n tag_h: 'Galvene',\n tag_blockquote: 'CitÄts',\n tag_pre: 'Kods',\n template: 'Veidne',\n lineHeight: 'LÄ«nijas augstums',\n paragraphStyle: 'ParagrÄfa stils',\n textStyle: 'Teksta stils',\n imageGallery: 'AttÄ“lu galerija',\n dir_ltr: 'No kreisÄs uz labo',\n dir_rtl: 'No labÄs uz kreiso',\n mention: 'PieminÄ“t'\n },\n dialogBox: {\n linkBox: {\n title: 'Ievietot saiti',\n url: 'Saites URL',\n text: 'ParÄdÄmais teksts',\n newWindowCheck: 'AtvÄ“rt jaunÄ logÄ',\n downloadLinkCheck: 'LejupielÄdes saite',\n bookmark: 'GrÄmatzÄ«me'\n },\n mathBox: {\n title: 'MatemÄtika',\n inputLabel: 'MatemÄtiskÄ notÄcija',\n fontSizeLabel: 'Fonta lielums',\n previewLabel: 'PriekÅ¡skatÄ«jums'\n },\n imageBox: {\n title: 'Ievietot attÄ“lu',\n file: 'IzvÄ“lieties no failiem',\n url: 'AttÄ“la URL',\n altText: 'AlternatÄ«vs teksts'\n },\n videoBox: {\n title: 'Ievietot video',\n file: 'IzvÄ“lieties no failiem',\n url: 'Multivides iegulÅ¡anas URL, YouTube/Vimeo'\n },\n audioBox: {\n title: 'Ievietot audio',\n file: 'IzvÄ“lieties no failiem',\n url: 'Audio URL'\n },\n browser: {\n tags: 'Tagi',\n search: 'MeklÄ“t'\n },\n caption: 'Ievietot aprakstu',\n close: 'AizvÄ“rt',\n submitButton: 'Iesniegt',\n revertButton: 'Atjaunot',\n proportion: 'Ierobežo proporcijas',\n basic: 'Nav iesaiņojuma',\n left: 'Pa kreisi',\n right: 'LabajÄ pusÄ“',\n center: 'Centrs',\n width: 'Platums',\n height: 'Augstums',\n size: 'IzmÄ“rs',\n ratio: 'AttiecÄ«ba'\n },\n controller: {\n edit: 'Rediģēt',\n unlink: 'AtsaistÄ«t',\n remove: 'Noņemt',\n insertRowAbove: 'Ievietot rindu virs',\n insertRowBelow: 'Ievietot rindu zemÄk',\n deleteRow: 'DzÄ“st rindu',\n insertColumnBefore: 'Ievietot kolonnu pirms',\n insertColumnAfter: 'Ievietot kolonnu aiz',\n deleteColumn: 'DzÄ“st kolonnu',\n fixColumnWidth: 'FiksÄ“ts kolonnas platums',\n resize100: 'MainÄ«t izmÄ“ru 100%',\n resize75: 'MainÄ«t izmÄ“ru 75%',\n resize50: 'MainÄ«t izmÄ“ru 50%',\n resize25: 'MainÄ«t izmÄ“ru 25%',\n autoSize: 'AutomÄtiskais izmÄ“rs',\n mirrorHorizontal: 'Spogulis, horizontÄls',\n mirrorVertical: 'Spogulis, vertikÄls',\n rotateLeft: 'Pagriezt pa kreisi',\n rotateRight: 'Pagriezt pa labi',\n maxSize: 'MaksimÄlais izmÄ“rs',\n minSize: 'MinimÄlais izmÄ“rs',\n tableHeader: 'Tabulas galvene',\n mergeCells: 'Apvienot Å¡Å«nas',\n splitCells: 'SadalÄ«t Å¡Å«nas',\n HorizontalSplit: 'HorizontÄls sadalÄ«jums',\n VerticalSplit: 'VertikÄls sadalÄ«jums'\n },\n menu: {\n spaced: 'Ar atstarpi',\n bordered: 'RobežojÄs',\n neon: 'Neona',\n translucent: 'CaurspÄ«dÄ«gs',\n shadow: 'Ä’na',\n code: 'Kods'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'lv', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'nl',\n toolbar: {\n default: 'Standaard',\n save: 'Opslaan',\n font: 'Lettertype',\n formats: 'Formaten',\n fontSize: 'Lettergrootte',\n bold: 'Vetgedrukt',\n underline: 'Onderstrepen',\n italic: 'Cursief',\n strike: 'Doorstrepen',\n subscript: 'Subscript',\n superscript: 'Superscript',\n removeFormat: 'Opmaak verwijderen',\n fontColor: 'Tekstkleur',\n hiliteColor: 'Tekst markeren',\n indent: 'Inspringen',\n outdent: 'Inspringen ongedaan maken',\n align: 'Uitlijnen',\n alignLeft: 'Links uitlijnen',\n alignRight: 'Rechts uitlijnen',\n alignCenter: 'In het midden uitlijnen',\n alignJustify: 'Uitvullen',\n list: 'Lijst',\n orderList: 'Geordende lijst',\n unorderList: 'Ongeordende lijst',\n horizontalRule: 'Horizontale regel',\n hr_solid: 'Standaard',\n hr_dotted: 'Gestippeld',\n hr_dashed: 'Gestreept',\n table: 'Tabel',\n link: 'Link',\n math: 'Wiskunde',\n image: 'Afbeelding',\n video: 'Video',\n audio: 'Audio',\n fullScreen: 'Volledig scherm',\n showBlocks: 'Blokken tonen',\n codeView: 'Broncode weergeven',\n undo: 'Ongedaan maken',\n redo: 'Ongedaan maken herstellen',\n preview: 'Voorbeeldweergave',\n print: 'Printen',\n tag_p: 'Alinea',\n tag_div: 'Normaal (div)',\n tag_h: 'Kop',\n tag_blockquote: 'Citaat',\n tag_pre: 'Code',\n template: 'Sjabloon',\n lineHeight: 'Lijnhoogte',\n paragraphStyle: 'Alineastijl',\n textStyle: 'Tekststijl',\n imageGallery: 'Galerij',\n dir_ltr: 'Van links naar rechts',\n dir_rtl: 'Rechts naar links',\n mention: 'Vermelding'\n },\n dialogBox: {\n linkBox: {\n title: 'Link invoegen',\n url: 'URL',\n text: 'Tekst van de link',\n newWindowCheck: 'In een nieuw tabblad openen',\n downloadLinkCheck: 'Downloadlink',\n bookmark: 'Bladwijzer'\n },\n mathBox: {\n title: 'Wiskunde',\n inputLabel: 'Wiskundige notatie',\n fontSizeLabel: 'Lettergrootte',\n previewLabel: 'Voorbeeld'\n },\n imageBox: {\n title: 'Afbeelding invoegen',\n file: 'Selecteer een bestand van uw apparaat',\n url: 'URL',\n altText: 'Alt-tekst'\n },\n videoBox: {\n title: 'Video invoegen',\n file: 'Selecteer een bestand van uw apparaat',\n url: 'Embedded URL (YouTube/Vimeo)'\n },\n audioBox: {\n title: 'Audio invoegen',\n file: 'Selecteer een bestand van uw apparaat',\n url: 'URL'\n },\n browser: {\n tags: 'Tags',\n search: 'Zoeken',\n },\n caption: 'Omschrijving toevoegen',\n close: 'Sluiten',\n submitButton: 'Toepassen',\n revertButton: 'Standaardwaarden herstellen',\n proportion: 'Verhouding behouden',\n basic: 'Standaard',\n left: 'Links',\n right: 'Rechts',\n center: 'Midden',\n width: 'Breedte',\n height: 'Hoogte',\n size: 'Grootte',\n ratio: 'Verhouding'\n },\n controller: {\n edit: 'Bewerken',\n unlink: 'Ontkoppelen',\n remove: 'Verwijderen',\n insertRowAbove: 'Rij hierboven invoegen',\n insertRowBelow: 'Rij hieronder invoegen',\n deleteRow: 'Rij verwijderen',\n insertColumnBefore: 'Kolom links invoegen',\n insertColumnAfter: 'Kolom rechts invoegen',\n deleteColumn: 'Kolom verwijderen',\n fixedColumnWidth: 'Vaste kolombreedte',\n resize100: 'Formaat wijzigen: 100%',\n resize75: 'Formaat wijzigen: 75%',\n resize50: 'Formaat wijzigen: 50%',\n resize25: 'Formaat wijzigen: 25%',\n autoSize: 'Automatische grootte',\n mirrorHorizontal: 'Horizontaal spiegelen',\n mirrorVertical: 'Verticaal spiegelen',\n rotateLeft: 'Naar links draaien',\n rotateRight: 'Naar rechts draaien',\n maxSize: 'Maximale grootte',\n minSize: 'Minimale grootte',\n tableHeader: 'Tabelkoppen',\n mergeCells: 'Cellen samenvoegen',\n splitCells: 'Cellen splitsen',\n HorizontalSplit: 'Horizontaal splitsen',\n VerticalSplit: 'Verticaal splitsen'\n },\n menu: {\n spaced: 'Uit elkaar',\n bordered: 'Omlijnd',\n neon: 'Neon',\n translucent: 'Doorschijnend',\n shadow: 'Schaduw',\n code: 'Code'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'nl', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'pl',\n toolbar: {\n default: 'DomyÅ›lne',\n save: 'Zapisz',\n font: 'Czcionka',\n formats: 'Formaty',\n fontSize: 'Rozmiar',\n bold: 'Pogrubienie',\n underline: 'PodkreÅ›lenie',\n italic: 'Kursywa',\n strike: 'PrzekreÅ›lenie',\n subscript: 'Indeks dolny',\n superscript: 'Indeks górny',\n removeFormat: 'Wyczyść formatowanie',\n fontColor: 'Kolor tekstu',\n hiliteColor: 'Kolor tÅ‚a tekstu',\n indent: 'ZwiÄ™ksz wciÄ™cie',\n outdent: 'Zmniejsz wciÄ™cie',\n align: 'Wyrównaj',\n alignLeft: 'Do lewej',\n alignRight: 'Do prawej',\n alignCenter: 'Do Å›rodka',\n alignJustify: 'Wyjustuj',\n list: 'Lista',\n orderList: 'Lista numerowana',\n unorderList: 'Lista wypunktowana',\n horizontalRule: 'Pozioma linia',\n hr_solid: 'CiÄ…gÅ‚a',\n hr_dotted: 'Kropkowana',\n hr_dashed: 'Przerywana',\n table: 'Tabela',\n link: 'OdnoÅ›nik',\n math: 'Matematyczne',\n image: 'Obraz',\n video: 'Wideo',\n audio: 'Audio',\n fullScreen: 'PeÅ‚ny ekran',\n showBlocks: 'Pokaż bloki',\n codeView: 'Widok kodu',\n undo: 'Cofnij',\n redo: 'Ponów',\n preview: 'PodglÄ…d', \n print: 'Drukuj',\n tag_p: 'Akapit',\n tag_div: 'Blok (DIV)',\n tag_h: 'Nagłówek H',\n tag_blockquote: 'Cytat',\n tag_pre: 'Kod',\n template: 'Szablon',\n lineHeight: 'OdstÄ™p miÄ™dzy wierszami',\n paragraphStyle: 'Styl akapitu',\n textStyle: 'Styl tekstu',\n imageGallery: 'Galeria obrazów',\n dir_ltr: 'Od lewej do prawej',\n dir_rtl: 'Od prawej do lewej',\n mention: 'Wzmianka'\n },\n dialogBox: {\n linkBox: {\n title: 'Wstaw odnoÅ›nik',\n url: 'Adres URL',\n text: 'Tekst do wyÅ›wietlenia',\n newWindowCheck: 'Otwórz w nowym oknie',\n downloadLinkCheck: 'Link do pobrania',\n bookmark: 'ZakÅ‚adka'\n },\n mathBox: {\n title: 'Matematyczne',\n inputLabel: 'Zapis matematyczny',\n fontSizeLabel: 'Rozmiar czcionki',\n previewLabel: 'PodglÄ…d'\n },\n imageBox: {\n title: 'Wstaw obraz',\n file: 'Wybierz plik',\n url: 'Adres URL obrazka',\n altText: 'Tekst alternatywny'\n },\n videoBox: {\n title: 'Wstaw wideo',\n file: 'Wybierz plik',\n url: 'Adres URL video, np. YouTube/Vimeo'\n },\n audioBox: {\n title: 'Wstaw audio',\n file: 'Wybierz plik',\n url: 'Adres URL audio'\n },\n browser: {\n tags: 'Tagi',\n search: 'Szukaj',\n },\n caption: 'Wstaw opis',\n close: 'Zamknij',\n submitButton: 'Zatwierdź',\n revertButton: 'Cofnij zmiany',\n proportion: 'Ogranicz proporcje',\n basic: 'Bez wyrównania',\n left: 'Do lewej',\n right: 'Do prawej',\n center: 'Do Å›rodka',\n width: 'Szerokość',\n height: 'Wysokość',\n size: 'Rozmiar',\n ratio: 'Proporcje'\n },\n controller: {\n edit: 'Edycja',\n unlink: 'UsuÅ„ odnoÅ›nik',\n remove: 'UsuÅ„',\n insertRowAbove: 'Wstaw wiersz powyżej',\n insertRowBelow: 'Wstaw wiersz poniżej',\n deleteRow: 'UsuÅ„ wiersz',\n insertColumnBefore: 'Wstaw kolumnÄ™ z lewej',\n insertColumnAfter: 'Wstaw kolumnÄ™ z prawej',\n deleteColumn: 'UsuÅ„ kolumnÄ™',\n fixedColumnWidth: 'StaÅ‚a szerokość kolumny',\n resize100: 'ZmieÅ„ rozmiar - 100%',\n resize75: 'ZmieÅ„ rozmiar - 75%',\n resize50: 'ZmieÅ„ rozmiar - 50%',\n resize25: 'ZmieÅ„ rozmiar - 25%',\n autoSize: 'Rozmiar automatyczny',\n mirrorHorizontal: 'Odbicie lustrzane w poziomie',\n mirrorVertical: 'Odbicie lustrzane w pionie',\n rotateLeft: 'Obróć w lewo',\n rotateRight: 'Obróć w prawo',\n maxSize: 'Maksymalny rozmiar',\n minSize: 'Minimalny rozmiar',\n tableHeader: 'Nagłówek tabeli',\n mergeCells: 'Scal komórki',\n splitCells: 'Podziel komórki',\n HorizontalSplit: 'PodziaÅ‚ poziomy',\n VerticalSplit: 'PodziaÅ‚ pionowy'\n },\n menu: {\n spaced: 'Rozstawiony',\n bordered: 'Z obwódkÄ…',\n neon: 'Neon',\n translucent: 'Półprzezroczysty',\n shadow: 'CieÅ„',\n code: 'Kod'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'pl', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * Brazilian Portuguese translation by lpeil github\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'pt_br',\n toolbar: {\n default: 'Padrão',\n save: 'Salvar',\n font: 'Fonte',\n formats: 'Formatos',\n fontSize: 'Tamanho',\n bold: 'Negrito',\n underline: 'Sublinhado',\n italic: 'Itálico',\n strike: 'Riscado',\n subscript: 'Subescrito',\n superscript: 'Sobrescrito',\n removeFormat: 'Remover Formatação',\n fontColor: 'Cor da Fonte',\n hiliteColor: 'Cor de destaque',\n indent: 'Recuo',\n outdent: 'Avançar',\n align: 'Alinhar',\n alignLeft: 'Alinhar à esquerda',\n alignRight: 'Alinhar à direita',\n alignCenter: 'Centralizar',\n alignJustify: 'Justificar',\n list: 'Lista',\n orderList: 'Lista ordenada',\n unorderList: 'Lista desordenada',\n horizontalRule: 'Linha horizontal',\n hr_solid: 'sólida',\n hr_dotted: 'pontilhada',\n hr_dashed: 'tracejada',\n table: 'Tabela',\n link: 'Link',\n math: 'Matemática',\n image: 'Imagem',\n video: 'VÃdeo',\n audio: 'Ãudio',\n fullScreen: 'Tela cheia',\n showBlocks: 'Mostrar blocos',\n codeView: 'Mostrar códigos',\n undo: 'Voltar',\n redo: 'Refazer',\n preview: 'Prever',\n print: 'Imprimir',\n tag_p: 'Paragráfo',\n tag_div: '(DIV) Normal',\n tag_h: 'Cabeçalho',\n tag_blockquote: 'Citar',\n tag_pre: 'Código',\n template: 'Modelo',\n lineHeight: 'Altura da linha',\n paragraphStyle: 'Estilo do parágrafo',\n textStyle: 'Estilo do texto',\n imageGallery: 'Galeria de imagens',\n dir_ltr: 'Esquerda para direita',\n dir_rtl: 'Direita para esquerda',\n mention: 'Menção'\n },\n dialogBox: {\n linkBox: {\n title: 'Inserir link',\n url: 'URL para link',\n text: 'Texto a mostrar',\n newWindowCheck: 'Abrir em nova guia',\n downloadLinkCheck: 'Link para Download',\n bookmark: 'marcar páginas'\n },\n mathBox: {\n title: 'Matemática',\n inputLabel: 'Notação matemática',\n fontSizeLabel: 'Tamanho',\n previewLabel: 'Prever'\n },\n imageBox: {\n title: 'Inserir imagens',\n file: 'Selecionar arquivos',\n url: 'URL da imagem',\n altText: 'Texto alternativo'\n },\n videoBox: {\n title: 'Inserir vÃdeo',\n file: 'Selecionar arquivos',\n url: 'URL do YouTube/Vimeo'\n },\n audioBox: {\n title: 'Inserir áudio',\n file: 'Selecionar arquivos',\n url: 'URL da áudio'\n },\n browser: {\n tags: 'Tag',\n search: 'Procurar',\n },\n caption: 'Inserir descrição',\n close: 'Fechar',\n submitButton: 'Enviar',\n revertButton: 'Reverter',\n proportion: 'Restringir proporções',\n basic: 'Básico',\n left: 'Esquerda',\n right: 'Direita',\n center: 'Centro',\n width: 'Largura',\n height: 'Altura',\n size: 'Tamanho',\n ratio: 'Proporções'\n },\n controller: {\n edit: 'Editar',\n unlink: 'Remover link',\n remove: 'Remover',\n insertRowAbove: 'Inserir linha acima',\n insertRowBelow: 'Inserir linha abaixo',\n deleteRow: 'Deletar linha',\n insertColumnBefore: 'Inserir coluna antes',\n insertColumnAfter: 'Inserir coluna depois',\n deleteColumn: 'Deletar coluna',\n fixedColumnWidth: 'Largura fixa da coluna',\n resize100: 'Redimensionar para 100%',\n resize75: 'Redimensionar para 75%',\n resize50: 'Redimensionar para 50%',\n resize25: 'Redimensionar para 25%',\n autoSize: 'Tamanho automático',\n mirrorHorizontal: 'Espelho, Horizontal',\n mirrorVertical: 'Espelho, Vertical',\n rotateLeft: 'Girar para esquerda',\n rotateRight: 'Girar para direita',\n maxSize: 'Tam máx',\n minSize: 'Tam mÃn',\n tableHeader: 'Cabeçalho da tabela',\n mergeCells: 'Mesclar células',\n splitCells: 'Dividir células',\n HorizontalSplit: 'Divisão horizontal',\n VerticalSplit: 'Divisão vertical'\n },\n menu: {\n spaced: 'Espaçado',\n bordered: 'Com borda',\n neon: 'Neon',\n translucent: 'Translúcido',\n shadow: 'Sombreado',\n code: 'Código'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'pt_br', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'ro',\n toolbar: {\n default: 'Default',\n save: 'Salvează',\n font: 'Font',\n formats: 'Format',\n fontSize: 'Dimensiune',\n bold: 'ÃŽngroÈ™at',\n underline: 'Subliniat',\n italic: 'ÃŽnclinat',\n strike: 'Tăiat',\n subscript: 'Subscript',\n superscript: 'Superscript',\n removeFormat: 'Șterge formatare',\n fontColor: 'Culoare font',\n hiliteColor: 'Culoare de evidenÈ›iere',\n indent: 'Indentează',\n outdent: 'Fără indentare',\n align: 'Aliniere',\n alignLeft: 'Aliniere la stânga',\n alignRight: 'Aliniere la dreapta',\n alignCenter: 'Aliniere la centru',\n alignJustify: 'Aliniere stânga - dreapta',\n list: 'Listă',\n orderList: 'Listă ordonată',\n unorderList: 'Listă neordonată',\n horizontalRule: 'Linie orizontală',\n hr_solid: 'Solid',\n hr_dotted: 'Punctat',\n hr_dashed: 'Punctate',\n table: 'Tabel',\n link: 'Link',\n math: 'Matematică',\n image: 'Imagine',\n video: 'Video',\n audio: 'Audio',\n fullScreen: 'Tot ecranul',\n showBlocks: 'Arată blocuri',\n codeView: 'Vizualizare cod',\n undo: 'Anulează',\n redo: 'Refă',\n preview: 'Previzualizare',\n print: 'printează',\n tag_p: 'Paragraf',\n tag_div: 'Normal (DIV)',\n tag_h: 'Antet',\n tag_blockquote: 'Quote',\n tag_pre: 'Citat',\n template: 'Template',\n lineHeight: 'ÃŽnălÈ›ime linie',\n paragraphStyle: 'Stil paragraf',\n textStyle: 'Stil text',\n imageGallery: 'Galerie de imagini',\n dir_ltr: 'De la stânga la dreapta',\n dir_rtl: 'De la dreapta la stanga',\n mention: 'Mentiune'\n },\n dialogBox: {\n linkBox: {\n title: 'Inserează Link',\n url: 'Adresă link',\n text: 'Text de afiÈ™at',\n newWindowCheck: 'Deschide în fereastră nouă',\n downloadLinkCheck: 'Link de descărcare',\n bookmark: 'Marcaj'\n },\n mathBox: {\n title: 'Matematică',\n inputLabel: 'NotaÈ›ie matematică',\n fontSizeLabel: 'Dimensiune font',\n previewLabel: 'Previzualizare'\n },\n imageBox: {\n title: 'Inserează imagine',\n file: 'Selectează',\n url: 'URL imagine',\n altText: 'text alternativ'\n },\n videoBox: {\n title: 'Inserează video',\n file: 'Selectează',\n url: 'Include URL, youtube/vimeo'\n },\n audioBox: {\n title: 'Inserează Audio',\n file: 'Selectează',\n url: 'URL Audio'\n },\n browser: {\n tags: 'Etichete',\n search: 'Căutareim',\n },\n caption: 'Inserează descriere',\n close: 'ÃŽnchide',\n submitButton: 'Salvează',\n revertButton: 'Revenire',\n proportion: 'Constrânge proporÈ›iile',\n basic: 'De bază',\n left: 'Stânga',\n right: 'Dreapta',\n center: 'Centru',\n width: 'Lățime',\n height: 'ÃŽnălÈ›ime',\n size: 'Dimensiune',\n ratio: 'Ratie'\n },\n controller: {\n edit: 'Editează',\n unlink: 'Scoate link',\n remove: 'Elimină',\n insertRowAbove: 'Inserează rând deasupra',\n insertRowBelow: 'Inserează rând dedesupt',\n deleteRow: 'Șterge linie',\n insertColumnBefore: 'Inserează coloană înainte',\n insertColumnAfter: 'Inserează coloană după',\n deleteColumn: 'Șterge coloană',\n fixedColumnWidth: 'Lățime fixă coloană',\n resize100: 'Redimensionare 100%',\n resize75: 'Redimensionare 75%',\n resize50: 'Redimensionare 50%',\n resize25: 'Redimensionare 25%',\n autoSize: 'Dimensiune automată',\n mirrorHorizontal: 'Oglindă, orizontal',\n mirrorVertical: 'Oglindă, vertical',\n rotateLeft: 'RoteÈ™te la stânga',\n rotateRight: 'RoteÈ™te la dreapta',\n maxSize: 'Dimensiune maximă',\n minSize: 'Dimensiune minimă',\n tableHeader: 'Antet tabel',\n mergeCells: 'ÃŽmbină celule',\n splitCells: 'Divizează celule',\n HorizontalSplit: 'Despicare orizontală',\n VerticalSplit: 'Despicare verticală'\n },\n menu: {\n spaced: 'SpaÈ›iat',\n bordered: 'Mărginit',\n neon: 'Neon',\n translucent: 'Translucent',\n shadow: 'Umbră',\n code: 'Citat'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'ro', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'ru',\n toolbar: {\n default: 'По умолчанию',\n save: 'Сохранить',\n font: 'Шрифт',\n formats: 'Стиль абзаца',\n fontSize: 'Размер шрифта',\n bold: 'Полужирный',\n underline: 'Подчёркнутый',\n italic: 'КурÑив',\n strike: 'Зачеркнутый',\n subscript: 'Ðижний индекÑ',\n superscript: 'Верхний индекÑ',\n removeFormat: 'ОчиÑтить форматирование',\n fontColor: 'Цвет текÑта',\n hiliteColor: 'Цвет фона',\n indent: 'Увеличить отÑтуп',\n outdent: 'Уменьшить отÑтуп',\n align: 'Выравнивание',\n alignLeft: 'Слева',\n alignRight: 'Справа',\n alignCenter: 'По центру',\n alignJustify: 'По ширине',\n list: 'СпиÑки',\n orderList: 'Ðумерованный',\n unorderList: 'Маркированный',\n horizontalRule: 'Ð“Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ',\n hr_solid: 'СплошнаÑ',\n hr_dotted: 'Пунктир',\n hr_dashed: 'ШтриховаÑ',\n table: 'Таблица',\n link: 'СÑылка',\n math: 'математичеÑкий',\n image: 'Изображение',\n video: 'Видео',\n audio: 'Ðудио',\n fullScreen: 'Полный Ñкран',\n showBlocks: 'Блочный вид',\n codeView: 'Редактировать HTML',\n undo: 'Отменить',\n redo: 'Вернуть',\n preview: 'Предварительный проÑмотр',\n print: 'Печать',\n tag_p: 'ТекÑÑ‚',\n tag_div: 'Базовый',\n tag_h: 'Заголовок',\n tag_blockquote: 'Цитата',\n tag_pre: 'Код',\n template: 'Шаблон',\n lineHeight: 'Ð’Ñ‹Ñота линии',\n paragraphStyle: 'Стиль абзаца',\n textStyle: 'Стиль текÑта',\n imageGallery: 'ГалереÑ',\n dir_ltr: 'Слева направо',\n dir_rtl: 'Справа налево',\n mention: 'Упоминание'\n },\n dialogBox: {\n linkBox: {\n title: 'Ð’Ñтавить ÑÑылку',\n url: 'СÑылка',\n text: 'ТекÑÑ‚',\n newWindowCheck: 'Открывать в новом окне',\n downloadLinkCheck: 'СÑылка Ð´Ð»Ñ ÑкачиваниÑ',\n bookmark: 'Закладка'\n },\n mathBox: {\n title: 'математичеÑкий',\n inputLabel: 'МатематичеÑÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ',\n fontSizeLabel: 'Кегль',\n previewLabel: 'Предварительный проÑмотр'\n },\n imageBox: {\n title: 'Ð’Ñтавить изображение',\n file: 'Выберите файл',\n url: 'ÐÐ´Ñ€ÐµÑ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ',\n altText: 'ТекÑтовое опиÑание изображениÑ'\n },\n videoBox: {\n title: 'Ð’Ñтавить видео',\n file: 'Выберите файл',\n url: 'СÑылка на видео, Youtube,Vimeo'\n },\n audioBox: {\n title: 'Ð’Ñтавить аудио',\n file: 'Выберите файл',\n url: 'ÐÐ´Ñ€ÐµÑ Ð°ÑƒÐ´Ð¸Ð¾'\n },\n browser: {\n tags: 'Теги',\n search: 'ПоиÑк',\n },\n caption: 'Добавить подпиÑÑŒ',\n close: 'Закрыть',\n submitButton: 'Подтвердить',\n revertButton: 'СброÑить',\n proportion: 'Сохранить пропорции',\n basic: 'Без обтеканиÑ',\n left: 'Слева',\n right: 'Справа',\n center: 'По центру',\n width: 'Ширина',\n height: 'Ð’Ñ‹Ñота',\n size: 'Размер',\n ratio: 'Соотношение'\n },\n controller: {\n edit: 'Изменить',\n unlink: 'Убрать ÑÑылку',\n remove: 'Удалить',\n insertRowAbove: 'Ð’Ñтавить Ñтроку выше',\n insertRowBelow: 'Ð’Ñтавить Ñтроку ниже',\n deleteRow: 'Удалить Ñтроку',\n insertColumnBefore: 'Ð’Ñтавить Ñтолбец Ñлева',\n insertColumnAfter: 'Ð’Ñтавить Ñтолбец Ñправа',\n deleteColumn: 'Удалить Ñтолбец',\n fixedColumnWidth: 'ФикÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð° Ñтолбца',\n resize100: 'Размер 100%',\n resize75: 'Размер 75%',\n resize50: 'Размер 50%',\n resize25: 'Размер 25%',\n autoSize: 'Ðвто размер',\n mirrorHorizontal: 'Отразить по горизонтали',\n mirrorVertical: 'Отразить по вертикали',\n rotateLeft: 'Повернуть против чаÑовой Ñтрелки',\n rotateRight: 'Повернуть по чаÑовой Ñтрелке',\n maxSize: 'Ширина по размеру Ñтраницы',\n minSize: 'Ширина по Ñодержимому',\n tableHeader: 'Строка заголовков',\n mergeCells: 'Объединить Ñчейки',\n splitCells: 'Разделить Ñчейку',\n HorizontalSplit: 'Разделить горизонтально',\n VerticalSplit: 'Разделить вертикально'\n },\n menu: {\n spaced: 'интервал',\n bordered: 'Ð“Ñ€Ð°Ð½Ð¸Ñ‡Ð½Ð°Ñ Ð›Ð¸Ð½Ð¸Ñ',\n neon: 'неон',\n translucent: 'полупрозрачный',\n shadow: 'Тень',\n code: 'Код'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'ru', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * \n * Swedish translation by olehrb at github or gmail\n *\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'se',\n toolbar: {\n default: 'Default',\n save: 'Spara',\n font: 'Typsnitt',\n formats: 'Format',\n fontSize: 'Textstorlek',\n bold: 'Fet',\n underline: 'Understruket',\n italic: 'Kursiv',\n strike: 'Överstruket',\n subscript: 'Sänkt skrift',\n superscript: 'Höjd skrift',\n removeFormat: 'Ta bort formattering',\n fontColor: 'Textfärg',\n hiliteColor: 'Bakgrundsfärg',\n indent: 'Minska indrag',\n outdent: 'Öka indrag',\n align: 'Justering',\n alignLeft: 'Vänsterjustering',\n alignRight: 'Högerjustering',\n alignCenter: 'Mittenjusteirng',\n alignJustify: 'Justera indrag',\n list: 'Listor',\n orderList: 'Numrerad lista',\n unorderList: 'Oordnad lista',\n horizontalRule: 'Horisontell linje',\n hr_solid: 'Solid',\n hr_dotted: 'Punkter',\n hr_dashed: 'Prickad',\n table: 'Tabell',\n link: 'Länk',\n math: 'Math',\n image: 'Bild',\n video: 'Video',\n audio: 'Ljud',\n fullScreen: 'Helskärm',\n showBlocks: 'Visa block',\n codeView: 'Visa koder',\n undo: 'Ã…ngra',\n redo: 'Gör om',\n preview: 'Preview',\n print: 'Print',\n tag_p: 'Paragraf',\n tag_div: 'Normal (DIV)',\n tag_h: 'Rubrik',\n tag_blockquote: 'Citer',\n tag_pre: 'Kod',\n template: 'Mall',\n lineHeight: 'Linjehöjd',\n paragraphStyle: 'Stil pÃ¥ stycke',\n textStyle: 'Textstil',\n imageGallery: 'Bildgalleri',\n dir_ltr: 'Vänster till höger',\n dir_rtl: 'Höger till vänster',\n mention: 'Namn'\n },\n dialogBox: {\n linkBox: {\n title: 'Lägg till länk',\n url: 'URL till länk',\n text: 'Länktext',\n newWindowCheck: 'Öppna i nytt fönster',\n downloadLinkCheck: 'Nedladdningslänk',\n bookmark: 'Bokmärke'\n },\n mathBox: {\n title: 'Math',\n inputLabel: 'Matematisk notation',\n fontSizeLabel: 'Textstorlek',\n previewLabel: 'Preview'\n },\n imageBox: {\n title: 'Lägg till bild',\n file: 'Lägg till frÃ¥n fil',\n url: 'Lägg till frÃ¥n URL',\n altText: 'Alternativ text'\n },\n videoBox: {\n title: 'Lägg till video',\n file: 'Lägg till frÃ¥n fil',\n url: 'Bädda in video / YouTube,Vimeo'\n },\n audioBox: {\n title: 'Lägg till ljud',\n file: 'Lägg till frÃ¥n fil',\n url: 'Lägg till frÃ¥n URL'\n },\n browser: {\n tags: 'Tags',\n search: 'Sök',\n },\n caption: 'Lägg till beskrivning',\n close: 'Stäng',\n submitButton: 'Skicka',\n revertButton: 'Ã…tergÃ¥',\n proportion: 'Spara proportioner',\n basic: 'Basic',\n left: 'Vänster',\n right: 'Höger',\n center: 'Center',\n width: 'Bredd',\n height: 'Höjd',\n size: 'Storlek',\n ratio: 'FörhÃ¥llande'\n },\n controller: {\n edit: 'Redigera',\n unlink: 'Ta bort länk',\n remove: 'Ta bort',\n insertRowAbove: 'Lägg till rad över',\n insertRowBelow: 'Lägg till rad under',\n deleteRow: 'Ta bort rad',\n insertColumnBefore: 'Lägg till kolumn före',\n insertColumnAfter: 'Lägg till kolumn efter',\n deleteColumn: 'Ta bort kolumner',\n fixedColumnWidth: 'Fast kolumnbredd',\n resize100: 'Förstora 100%',\n resize75: 'Förstora 75%',\n resize50: 'Förstora 50%',\n resize25: 'Förstora 25%',\n autoSize: 'Autostorlek',\n mirrorHorizontal: 'Spegling, horisontell',\n mirrorVertical: 'Spegling, vertikal',\n rotateLeft: 'Rotera till vänster',\n rotateRight: 'Rotera till höger',\n maxSize: 'Maxstorlek',\n minSize: 'Minsta storlek',\n tableHeader: 'Rubrik tabell',\n mergeCells: 'Sammanfoga celler (merge)',\n splitCells: 'Separera celler',\n HorizontalSplit: 'Separera horisontalt',\n VerticalSplit: 'Separera vertikalt'\n },\n menu: {\n spaced: 'AvstÃ¥nd',\n bordered: 'Avgränsningslinje',\n neon: 'Neon',\n translucent: 'Genomskinlig',\n shadow: 'Skugga',\n code: 'Kod'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'se', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n\"use strict\";\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n})(typeof window !== \"undefined\" ? window : this, function(window, noGlobal) {\n const lang = {\n code: \"ua\",\n toolbar: {\n default: \"По замовчуваннÑм\",\n save: \"Зберегти\",\n font: \"Шрифт\",\n formats: \"Стиль абзацу\",\n fontSize: \"Розмір шрифту\",\n bold: \"Жирний\",\n underline: \"ПідкреÑлений\",\n italic: \"КурÑив\",\n strike: \"ПерекреÑлити\",\n subscript: \"Ðижній індекÑ\",\n superscript: \"Верхній індекÑ\",\n removeFormat: \"ОчиÑтити форматуваннÑ\",\n fontColor: \"Колір текÑту\",\n hiliteColor: \"Колір виділеннÑ\",\n indent: \"Збільшити відÑтуп\",\n outdent: \"Зменшити відÑтуп\",\n align: \"ВирівнюваннÑ\",\n alignLeft: \"За лівим краєм\",\n alignRight: \"За правим краєм\",\n alignCenter: \"По центру\",\n alignJustify: \"За шириною\",\n list: \"СпиÑок\",\n orderList: \"Ðумерований\",\n unorderList: \"Маркований\",\n horizontalRule: \"Горизонтальна лініÑ\",\n hr_solid: \"Суцільна\",\n hr_dotted: \"Пунктирна\",\n hr_dashed: \"Штрихова\",\n table: \"ТаблицÑ\",\n link: \"ПоÑиланнÑ\",\n math: \"Формула\",\n image: \"ЗображеннÑ\",\n video: \"Відео\",\n audio: \"Ðудіо\",\n fullScreen: \"Повний екран\",\n showBlocks: \"Показати блоки\",\n codeView: \"Редагувати Ñк HTML\",\n undo: \"СкаÑувати\",\n redo: \"Виконати знову\",\n preview: \"Попередній переглÑд\",\n print: \"Друк\",\n tag_p: \"Ðбзац\",\n tag_div: \"Базовий\",\n tag_h: \"Заголовок\",\n tag_blockquote: \"Цитата\",\n tag_pre: \"Код\",\n template: \"Шаблон\",\n lineHeight: \"ВиÑота лінії\",\n paragraphStyle: \"Стиль абзацу\",\n textStyle: \"Стиль текÑту\",\n imageGallery: \"ГалереÑ\",\n dir_ltr: 'Зліва направо',\n dir_rtl: 'Справа наліво',\n mention: \"Згадати\"\n },\n dialogBox: {\n linkBox: {\n title: \"Ð’Ñтавити поÑиланнÑ\",\n url: \"ПоÑиланнÑ\",\n text: \"ТекÑÑ‚\",\n newWindowCheck: \"Відкривати в новому вікні\",\n downloadLinkCheck: 'ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ',\n bookmark: 'Закладка'\n },\n mathBox: {\n title: \"Формула\",\n inputLabel: \"Математична запиÑ\",\n fontSizeLabel: \"Розмір шрифту\",\n previewLabel: \"Попередній переглÑд\"\n },\n imageBox: {\n title: \"Ð’Ñтавити зображеннÑ\",\n file: \"Виберіть файл\",\n url: \"ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° зображеннÑ\",\n altText: \"ТекÑтовий Ð¾Ð¿Ð¸Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ\"\n },\n videoBox: {\n title: \"Ð’Ñтавити відео\",\n file: \"Виберіть файл\",\n url: \"ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° відео, Youtube, Vimeo\"\n },\n audioBox: {\n title: \"Ð’Ñтавити аудіо\",\n file: \"Виберіть файл\",\n url: \"ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° аудіо\"\n },\n browser: {\n tags: \"Теги\",\n search: \"Пошук\"\n },\n caption: \"Додати підпиÑ\",\n close: \"Закрити\",\n submitButton: \"Підтвердити\",\n revertButton: \"Скинути\",\n proportion: \"Зберегти пропорції\",\n basic: \"Без обтіканнÑ\",\n left: \"Зліва\",\n right: \"Справа\",\n center: \"По центру\",\n width: \"Ширина\",\n height: \"ВиÑота\",\n size: \"Розмір\",\n ratio: \"СпіввідношеннÑ\"\n },\n controller: {\n edit: \"Змінити\",\n unlink: \"Прибрати поÑиланнÑ\",\n remove: \"Видалити\",\n insertRowAbove: \"Ð’Ñтавити Ñ€Ñдок вище\",\n insertRowBelow: \"Ð’Ñтавити Ñ€Ñдок нижче\",\n deleteRow: \"Видалити Ñ€Ñдок\",\n insertColumnBefore: \"Ð’Ñтавити Ñтовпець зліва\",\n insertColumnAfter: \"Ð’Ñтавити Ñтовпець Ñправа\",\n deleteColumn: \"Видалити Ñтовпець\",\n fixedColumnWidth: \"ФікÑована ширина ÑтовпцÑ\",\n resize100: \"Розмір 100%\",\n resize75: \"Розмір 75%\",\n resize50: \"Розмір 50%\",\n resize25: \"Розмір 25%\",\n autoSize: \"Ðвто розмір\",\n mirrorHorizontal: \"Відобразити по горизонталі\",\n mirrorVertical: \"Відобразити по вертикалі\",\n rotateLeft: \"Повернути проти годинникової Ñтрілки\",\n rotateRight: \"Повернути за годинниковою Ñтрілкою\",\n maxSize: \"Ширина за розміром Ñторінки\",\n minSize: \"Ширина за вміÑтом\",\n tableHeader: \"Заголовок таблиці\",\n mergeCells: \"Об'єднати клітинки\",\n splitCells: \"Розділити клітинку\",\n HorizontalSplit: \"Розділити горизонтально\",\n VerticalSplit: \"Розділити вертикально\"\n },\n menu: {\n spaced: \"Інтервал\",\n bordered: \"З лініÑми\",\n neon: \"Ðеон\",\n translucent: \"Ðапівпрозорий\",\n shadow: \"Тінь\",\n code: \"Код\"\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, \"SUNEDITOR_LANG\", {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {},\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, \"ua\", {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang,\n });\n }\n\n return lang;\n});\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'ur',\n toolbar: {\n default: 'Ø·Û’ شدÛ',\n save: 'Ù…ØÙوظ کریں',\n font: 'Ùونٹ',\n formats: 'Ùارمیٹس',\n fontSize: 'سائز',\n bold: 'بولڈ',\n underline: 'انڈر لائن',\n italic: 'ترچھا',\n strike: 'Ù„Ú©ÛŒØ±Û Ú©Ø±Ø¯Û',\n subscript: 'ذیلی',\n superscript: 'انتÛائی',\n removeFormat: 'Ùارمیٹ Ú©Ùˆ Øذ٠دیں',\n fontColor: 'لکھائی کا رنگ',\n hiliteColor: 'نمایاں رنگ',\n indent: 'ØاشیÛ',\n outdent: 'ÛØ§Ø´ÛŒÛ ÙˆØ§Ù¾Ø³',\n align: 'رخ',\n alignLeft: 'بائیں طرÙ',\n alignRight: 'دائیں طرÙ',\n alignCenter: 'مرکز میں طرÙ',\n alignJustify: 'Ûر طر٠برابر',\n list: 'ÙÛرست',\n orderList: 'ترتیب Ø´Ø¯Û ÙÛرست',\n unorderList: 'غیر ترتیب Ø´Ø¯Û ÙÛرست',\n horizontalRule: 'لکیر',\n hr_solid: 'ٹھوس',\n hr_dotted: 'نقطے دار',\n hr_dashed: 'ڈیشڈ',\n table: 'میز',\n link: 'لنک',\n math: 'ریاضی',\n image: 'تصویر',\n video: 'ویڈیو',\n audio: 'آواز',\n fullScreen: 'پوری اسکرین',\n showBlocks: 'ڈبے دکھائیں',\n codeView: 'Ú©ÙˆÚˆ کا نظارÛ',\n undo: 'واپس کریں',\n redo: 'Ø¯ÙˆØ¨Ø§Ø±Û Ú©Ø±ÛŒÚº',\n preview: 'پیشنظر',\n print: 'پرنٹ کریں',\n tag_p: 'پیراگراÙ',\n tag_div: 'عام (div)',\n tag_h: 'Ûیڈر',\n tag_blockquote: 'اقتباس',\n tag_pre: 'Ú©ÙˆÚˆ',\n template: 'سانچÛ',\n lineHeight: 'لکیر Ú©ÛŒ اونچائی',\n paragraphStyle: 'عبارت کا انداز',\n textStyle: 'متن کا انداز',\n imageGallery: 'تصویری نگارخانÛ',\n dir_ltr: 'بائیں سے دائیں',\n dir_rtl: 'دائیں سے بائیں',\n mention: 'تذکرÛ'\n },\n dialogBox: {\n linkBox: {\n title: 'لنک داخل کریں',\n url: 'لنک کرنے Ú©Û’ لیے URL',\n text: 'ظاÛر کرنے Ú©Û’ لیے متن',\n newWindowCheck: 'نئی ونڈو میں کھولیں',\n downloadLinkCheck: 'ڈاؤن لوڈ لنک',\n bookmark: 'بک مارک'\n },\n mathBox: {\n title: 'ریاضی',\n inputLabel: 'ریاضیاتی اشارے',\n fontSizeLabel: 'Øر٠کا سائز',\n previewLabel: 'پیش نظارÛ'\n },\n imageBox: {\n title: 'تصویر داخل کریں',\n file: 'Ùائلوں سے منتخب کریں',\n url: 'تصویری URL',\n altText: 'متبادل متن'\n },\n videoBox: {\n title: 'ویڈیو داخل کریں',\n file: 'Ùائلوں سے منتخب کریں',\n url: 'ذرائع ابلاغ کا یو آر ایل، یوٹیوب/ویمیو'\n },\n audioBox: {\n title: 'آواز داخل کریں',\n file: 'Ùائلوں سے منتخب کریں',\n url: 'آواز URL'\n },\n browser: {\n tags: 'ٹیگز',\n search: 'تلاش کریں',\n },\n caption: 'عنوان',\n close: 'بند کریں',\n submitButton: 'بھیجیں',\n revertButton: 'واپس',\n proportion: 'تناسب Ú©Ùˆ Ù…Øدود کریں',\n basic: 'بنیادی',\n left: 'بائیں',\n right: 'دائیں',\n center: 'مرکز',\n width: 'چوڑائی',\n height: 'اونچائی',\n size: 'Øجم',\n ratio: 'تناسب'\n },\n controller: {\n edit: 'ترمیم',\n unlink: 'لنک ختم کریں',\n remove: 'ØØ°Ù',\n insertRowAbove: 'اوپر قطار شامل کریں',\n insertRowBelow: 'نیچے قطار شامل کریں',\n deleteRow: 'قطار Ú©Ùˆ Øذ٠کریں',\n insertColumnBefore: 'Ù¾ÛÙ„Û’ ستون شامل کریں',\n insertColumnAfter: 'اس Ú©Û’ بعد ستون شامل کریں',\n deleteColumn: 'ستون Øذ٠کریں',\n fixedColumnWidth: 'Ù…Ù‚Ø±Ø±Û Ø³ØªÙˆÙ† Ú©ÛŒ چوڑائی',\n resize100: '100% کا Øجم تبدیل کریں',\n resize75: '75% کا Øجم تبدیل کریں',\n resize50: '50% کا Øجم تبدیل کریں',\n resize25: '25% کا Øجم تبدیل کریں',\n autoSize: 'ازخود Øجم',\n mirrorHorizontal: 'آئینÛØŒ اÙÙ‚ÛŒ',\n mirrorVertical: 'آئینÛØŒ عمودی',\n rotateLeft: 'بائیں گھومو',\n rotateRight: 'دائیں گھمائیں',\n maxSize: 'Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û Ø³Ø§Ø¦Ø²',\n minSize: 'Ú©Ù… از Ú©Ù… سائز',\n tableHeader: 'میز Ú©ÛŒ سرخی',\n mergeCells: 'Øجروں Ú©Ùˆ ضم کریں',\n splitCells: 'Øجروں Ú©Ùˆ Ø¹Ù„ÛŒØ¯Û Ú©Ø±Ùˆ',\n HorizontalSplit: 'اÙÙ‚ÛŒ تقسیم',\n VerticalSplit: 'عمودی تقسیم'\n },\n menu: {\n spaced: 'ÙاصلÛ',\n bordered: 'سرØدی',\n neon: 'نیین',\n translucent: 'پارباسی',\n shadow: 'سایÛ',\n code: 'Ú©ÙˆÚˆ'\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'ur', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2019 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_LANG a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const lang = {\n code: 'zh_cn',\n toolbar: {\n default: '默认',\n save: 'ä¿å˜',\n font: 'å—体',\n formats: 'æ ¼å¼',\n fontSize: 'å—å·',\n bold: '粗体',\n underline: '下划线',\n italic: '斜体',\n strike: 'åˆ é™¤çº¿',\n subscript: 'ä¸‹æ ‡',\n superscript: 'ä¸Šæ ‡',\n removeFormat: 'æ¸…é™¤æ ¼å¼',\n fontColor: 'å—体颜色',\n hiliteColor: '背景颜色',\n indent: 'å¢žåŠ ç¼©è¿›',\n outdent: 'å‡å°‘缩进',\n align: '对é½æ–¹å¼',\n alignLeft: '左对é½',\n alignRight: 'å³å¯¹é½',\n alignCenter: 'å±…ä¸',\n alignJustify: '两端对é½',\n list: '列表',\n orderList: '有åºåˆ—表',\n unorderList: 'æ— åºåˆ—表',\n horizontalRule: '水平线',\n hr_solid: '实线',\n hr_dotted: '点线',\n hr_dashed: '虚线',\n table: 'è¡¨æ ¼',\n link: '超链接',\n math: 'æ•°å¦',\n image: '图片',\n video: '视频',\n audio: '音讯',\n fullScreen: 'å…¨å±',\n showBlocks: '显示å—区域',\n codeView: '代ç 视图',\n undo: '撤消',\n redo: 'æ¢å¤',\n preview: '预览',\n print: '打å°',\n tag_p: '段è½',\n tag_div: 'æ£æ–‡ (DIV)',\n tag_h: 'æ ‡é¢˜',\n tag_blockquote: '引用',\n tag_pre: '代ç ',\n template: '模æ¿',\n lineHeight: '行高',\n paragraphStyle: '段è½æ ·å¼',\n textStyle: 'æ–‡å—æ ·å¼',\n imageGallery: '图片库',\n dir_ltr: '左到å³',\n dir_rtl: 'å³åˆ°å·¦',\n mention: 'æ到'\n },\n dialogBox: {\n linkBox: {\n title: 'æ’入超链接',\n url: '网å€',\n text: 'è¦æ˜¾ç¤ºçš„æ–‡å—',\n newWindowCheck: 'åœ¨æ–°æ ‡ç¾é¡µä¸æ‰“å¼€',\n downloadLinkCheck: '下载链接',\n bookmark: '书ç¾'\n },\n mathBox: {\n title: 'æ•°å¦',\n inputLabel: 'æ•°å¦ç¬¦å·',\n fontSizeLabel: 'å—å·',\n previewLabel: '预览'\n },\n imageBox: {\n title: 'æ’入图片',\n file: 'ä¸Šä¼ å›¾ç‰‡',\n url: '图片网å€',\n altText: '替æ¢æ–‡å—'\n },\n videoBox: {\n title: 'æ’入视频',\n file: 'ä¸Šä¼ å›¾ç‰‡',\n url: '嵌入网å€, Youtube,Vimeo'\n },\n audioBox: {\n title: 'æ’入音频',\n file: 'ä¸Šä¼ å›¾ç‰‡',\n url: '音频网å€'\n },\n browser: {\n tags: 'æ ‡ç¾',\n search: 'æœç´¢',\n },\n caption: 'æ ‡é¢˜',\n close: 'å–消',\n submitButton: '确定',\n revertButton: 'æ¢å¤',\n proportion: '比例',\n basic: '基本',\n left: 'å·¦',\n right: 'å³',\n center: 'å±…ä¸',\n width: '宽度',\n height: '高度',\n size: '尺寸',\n ratio: '比'\n },\n controller: {\n edit: '编辑',\n unlink: '去除链接',\n remove: 'åˆ é™¤',\n insertRowAbove: '在上方æ’å…¥',\n insertRowBelow: '在下方æ’å…¥',\n deleteRow: 'åˆ é™¤è¡Œ',\n insertColumnBefore: '在左侧æ’å…¥',\n insertColumnAfter: '在å³ä¾§æ’å…¥',\n deleteColumn: 'åˆ é™¤åˆ—',\n fixedColumnWidth: '固定列宽',\n resize100: '放大 100%',\n resize75: '放大 75%',\n resize50: '放大 50%',\n resize25: '放大 25%',\n mirrorHorizontal: '翻转左å³',\n mirrorVertical: '翻转上下',\n rotateLeft: 'å‘左旋转',\n rotateRight: 'å‘å³æ—‹è½¬',\n maxSize: '最大尺寸',\n minSize: '最å°å°ºå¯¸',\n tableHeader: 'è¡¨æ ¼æ ‡é¢˜',\n mergeCells: 'åˆå¹¶å•å…ƒæ ¼',\n splitCells: '分割å•å…ƒæ ¼',\n HorizontalSplit: '水平分割',\n VerticalSplit: '垂直分割'\n },\n menu: {\n spaced: '间隔开',\n bordered: '边界线',\n neon: '霓虹ç¯',\n translucent: 'åŠé€æ˜Ž',\n shadow: '阴影',\n code: '代ç '\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_LANG) {\n Object.defineProperty(window, 'SUNEDITOR_LANG', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_LANG, 'zh_cn', {\n enumerable: true,\n writable: true,\n configurable: true,\n value: lang\n });\n }\n\n return lang;\n}));\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'blockquote',\n display: 'command',\n add: function (core, targetElement) {\n const context = core.context;\n context.blockquote = {\n targetButton: targetElement,\n tag: core.util.createElement('BLOCKQUOTE')\n };\n },\n\n /**\n * @Override core\n */\n active: function (element) {\n if (!element) {\n this.util.removeClass(this.context.blockquote.targetButton, 'active');\n } else if (/blockquote/i.test(element.nodeName)) {\n this.util.addClass(this.context.blockquote.targetButton, 'active');\n return true;\n }\n \n return false;\n },\n\n /**\n * @Override core\n */\n action: function () {\n const currentBlockquote = this.util.getParentElement(this.getSelectionNode(), 'blockquote');\n\n if (currentBlockquote) {\n this.detachRangeFormatElement(currentBlockquote, null, null, false, false);\n } else {\n this.applyRangeFormatElement(this.context.blockquote.tag.cloneNode(false));\n }\n }\n};","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'align',\n display: 'submenu',\n add: function (core, targetElement) {\n const icons = core.icons;\n const context = core.context;\n context.align = {\n targetButton: targetElement,\n _itemMenu: null,\n _alignList: null,\n currentAlign: '',\n defaultDir: core.options.rtl ? 'right' : 'left',\n icons: {\n justify: icons.align_justify,\n left: icons.align_left,\n right: icons.align_right,\n center: icons.align_center\n }\n };\n\n /** set submenu */\n let listDiv = this.setSubmenu(core);\n let listUl = context.align._itemMenu = listDiv.querySelector('ul');\n\n /** add event listeners */\n listUl.addEventListener('click', this.pickup.bind(core));\n context.align._alignList = listUl.querySelectorAll('li button');\n\n /** append target button menu */\n core.initMenuTarget(this.name, targetElement, listDiv);\n\n /** empty memory */\n listDiv = null, listUl = null;\n },\n\n setSubmenu: function (core) {\n const lang = core.lang;\n const icons = core.icons;\n const listDiv = core.util.createElement('DIV');\n const alignItems = core.options.alignItems;\n\n let html = '';\n for (let i = 0, item, text; i < alignItems.length; i++) {\n item = alignItems[i];\n text = lang.toolbar['align' + item.charAt(0).toUpperCase() + item.slice(1)];\n html += '<li>' +\n '<button type=\"button\" class=\"se-btn-list se-btn-align\" data-value=\"' + item + '\" title=\"' + text + '\" aria-label=\"' + text + '\">' +\n '<span class=\"se-list-icon\">' + icons['align_' + item] + '</span>' + text +\n '</button>' +\n '</li>';\n }\n\n listDiv.className = 'se-submenu se-list-layer se-list-align';\n listDiv.innerHTML = '' +\n '<div class=\"se-list-inner\">' +\n '<ul class=\"se-list-basic\">' +\n html +\n '</ul>' +\n '</div>';\n\n return listDiv;\n },\n\n /**\n * @Override core\n */\n active: function (element) {\n const alignContext = this.context.align;\n const targetButton = alignContext.targetButton;\n const target = targetButton.firstElementChild;\n\n if (!element) {\n this.util.changeElement(target, alignContext.icons[alignContext.defaultDir]);\n targetButton.removeAttribute('data-focus');\n } else if (this.util.isFormatElement(element)) {\n const textAlign = element.style.textAlign;\n if (textAlign) {\n this.util.changeElement(target, alignContext.icons[textAlign] || alignContext.icons[alignContext.defaultDir]);\n targetButton.setAttribute('data-focus', textAlign);\n return true;\n }\n }\n\n return false;\n },\n\n /**\n * @Override submenu\n */\n on: function () {\n const alignContext = this.context.align;\n const alignList = alignContext._alignList;\n const currentAlign = alignContext.targetButton.getAttribute('data-focus') || alignContext.defaultDir;\n\n if (currentAlign !== alignContext.currentAlign) {\n for (let i = 0, len = alignList.length; i < len; i++) {\n if (currentAlign === alignList[i].getAttribute('data-value')) {\n this.util.addClass(alignList[i], 'active');\n } else {\n this.util.removeClass(alignList[i], 'active');\n }\n }\n\n alignContext.currentAlign = currentAlign;\n }\n },\n\n exchangeDir: function () {\n const dir = this.options.rtl ? 'right' : 'left';\n if (!this.context.align || this.context.align.defaultDir === dir) return;\n\n this.context.align.defaultDir = dir;\n let menu = this.context.align._itemMenu;\n let leftBtn = menu.querySelector('[data-value=\"left\"]');\n let rightBtn = menu.querySelector('[data-value=\"right\"]');\n if (leftBtn && rightBtn) {\n const lp = leftBtn.parentElement;\n const rp = rightBtn.parentElement;\n lp.appendChild(rightBtn);\n rp.appendChild(leftBtn);\n }\n },\n\n pickup: function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n let target = e.target;\n let value = null;\n\n while (!value && !/UL/i.test(target.tagName)) {\n value = target.getAttribute('data-value');\n target = target.parentNode;\n }\n\n if (!value) return;\n\n const defaultDir = this.context.align.defaultDir;\n const selectedFormsts = this.getSelectedElements();\n for (let i = 0, len = selectedFormsts.length; i < len; i++) {\n this.util.setStyle(selectedFormsts[i], 'textAlign', (value === defaultDir ? '' : value));\n }\n\n this.effectNode = null;\n this.submenuOff();\n this.focus();\n \n // history stack\n this.history.push(false);\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'font',\n display: 'submenu',\n add: function (core, targetElement) {\n const context = core.context;\n context.font = {\n targetText: targetElement.querySelector('.txt'),\n targetTooltip: targetElement.parentNode.querySelector('.se-tooltip-text'),\n _fontList: null,\n currentFont: ''\n };\n\n /** set submenu */\n let listDiv = this.setSubmenu(core);\n\n /** add event listeners */\n listDiv.querySelector('.se-list-inner').addEventListener('click', this.pickup.bind(core));\n\n context.font._fontList = listDiv.querySelectorAll('ul li button');\n\n /** append target button menu */\n core.initMenuTarget(this.name, targetElement, listDiv);\n\n /** empty memory */\n listDiv = null;\n },\n\n setSubmenu: function (core) {\n const lang = core.lang;\n const listDiv = core.util.createElement('DIV');\n\n listDiv.className = 'se-submenu se-list-layer se-list-font-family';\n\n let font, text, i, len;\n let fontList = core.options.font;\n\n let list = '<div class=\"se-list-inner\">' +\n '<ul class=\"se-list-basic\">' +\n '<li><button type=\"button\" class=\"default_value se-btn-list\" title=\"' + lang.toolbar.default + '\" aria-label=\"' + lang.toolbar.default + '\">(' + lang.toolbar.default + ')</button></li>';\n for (i = 0, len = fontList.length; i < len; i++) {\n font = fontList[i];\n text = font.split(',')[0];\n list += '<li><button type=\"button\" class=\"se-btn-list\" data-value=\"' + font + '\" data-txt=\"' + text + '\" title=\"' + text + '\" aria-label=\"' + text + '\" style=\"font-family:' + font + ';\">' + text + '</button></li>';\n }\n list += '</ul></div>';\n listDiv.innerHTML = list;\n\n return listDiv;\n },\n\n /**\n * @Override core\n */\n active: function (element) {\n const target = this.context.font.targetText;\n const tooltip = this.context.font.targetTooltip;\n\n if (!element) {\n const font = this.hasFocus ? this.wwComputedStyle.fontFamily : this.lang.toolbar.font;\n this.util.changeTxt(target, font);\n this.util.changeTxt(tooltip, this.hasFocus ? this.lang.toolbar.font + (font ? ' (' + font + ')' : '') : font);\n } else if (element.style && element.style.fontFamily.length > 0) {\n const selectFont = element.style.fontFamily.replace(/[\"']/g,'');\n this.util.changeTxt(target, selectFont);\n this.util.changeTxt(tooltip, this.lang.toolbar.font + ' (' + selectFont + ')');\n return true;\n }\n\n return false;\n },\n\n /**\n * @Override submenu\n */\n on: function () {\n const fontContext = this.context.font;\n const fontList = fontContext._fontList;\n const currentFont = fontContext.targetText.textContent;\n\n if (currentFont !== fontContext.currentFont) {\n for (let i = 0, len = fontList.length; i < len; i++) {\n if (currentFont === fontList[i].getAttribute('data-value')) {\n this.util.addClass(fontList[i], 'active');\n } else {\n this.util.removeClass(fontList[i], 'active');\n }\n }\n\n fontContext.currentFont = currentFont;\n }\n },\n\n pickup: function (e) {\n if (!/^BUTTON$/i.test(e.target.tagName)) return false;\n\n e.preventDefault();\n e.stopPropagation();\n\n const value = e.target.getAttribute('data-value');\n\n if (value) {\n const newNode = this.util.createElement('SPAN');\n newNode.style.fontFamily = value;\n this.nodeChange(newNode, ['font-family'], null, null);\n } else {\n this.nodeChange(null, ['font-family'], ['span'], true);\n }\n \n this.submenuOff();\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'fontSize',\n display: 'submenu',\n add: function (core, targetElement) {\n const context = core.context;\n context.fontSize = {\n targetText: targetElement.querySelector('.txt'),\n _sizeList: null,\n currentSize: ''\n };\n\n /** set submenu */\n let listDiv = this.setSubmenu(core);\n let listUl = listDiv.querySelector('ul');\n\n /** add event listeners */\n listUl.addEventListener('click', this.pickup.bind(core));\n context.fontSize._sizeList = listUl.querySelectorAll('li button');\n\n /** append target button menu */\n core.initMenuTarget(this.name, targetElement, listDiv);\n\n /** empty memory */\n listDiv = null, listUl = null;\n },\n\n setSubmenu: function (core) {\n const option = core.options;\n const lang = core.lang;\n const listDiv = core.util.createElement('DIV');\n\n listDiv.className = 'se-submenu se-list-layer se-list-font-size';\n\n const sizeList = !option.fontSize ? [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72] : option.fontSize;\n\n let list = '<div class=\"se-list-inner\">' +\n '<ul class=\"se-list-basic\">' +\n '<li><button type=\"button\" class=\"default_value se-btn-list\" title=\"' + lang.toolbar.default + '\" aria-label=\"' + lang.toolbar.default + '\">(' + lang.toolbar.default + ')</button></li>';\n for (let i = 0, unit = option.fontSizeUnit, len = sizeList.length, size; i < len; i++) {\n size = sizeList[i];\n list += '<li><button type=\"button\" class=\"se-btn-list\" data-value=\"' + size + unit + '\" title=\"' + size + unit + '\" aria-label=\"' + size + unit + '\" style=\"font-size:' + size + unit + ';\">' + size + '</button></li>';\n }\n list += '</ul></div>';\n\n listDiv.innerHTML = list;\n\n return listDiv;\n },\n\n /**\n * @Override core\n */\n active: function (element) {\n if (!element) {\n this.util.changeTxt(this.context.fontSize.targetText, this.hasFocus ? this._convertFontSize.call(this, this.options.fontSizeUnit, this.wwComputedStyle.fontSize) : this.lang.toolbar.fontSize);\n } else if (element.style && element.style.fontSize.length > 0) {\n this.util.changeTxt(this.context.fontSize.targetText, this._convertFontSize.call(this, this.options.fontSizeUnit, element.style.fontSize));\n return true;\n }\n\n return false;\n },\n\n /**\n * @Override submenu\n */\n on: function () {\n const fontSizeContext = this.context.fontSize;\n const sizeList = fontSizeContext._sizeList;\n const currentSize = fontSizeContext.targetText.textContent;\n\n if (currentSize !== fontSizeContext.currentSize) {\n for (let i = 0, len = sizeList.length; i < len; i++) {\n if (currentSize === sizeList[i].getAttribute('data-value')) {\n this.util.addClass(sizeList[i], 'active');\n } else {\n this.util.removeClass(sizeList[i], 'active');\n }\n }\n\n fontSizeContext.currentSize = currentSize;\n }\n },\n\n pickup: function (e) {\n if (!/^BUTTON$/i.test(e.target.tagName)) return false;\n \n e.preventDefault();\n e.stopPropagation();\n\n const value = e.target.getAttribute('data-value');\n\n if (value) {\n const newNode = this.util.createElement('SPAN');\n newNode.style.fontSize = value;\n this.nodeChange(newNode, ['font-size'], null, null);\n } else {\n this.nodeChange(null, ['font-size'], ['span'], true);\n }\n\n this.submenuOff();\n }\n};\n","/*\r\n * wysiwyg web editor\r\n *\r\n * suneditor.js\r\n * Copyright 2018 JiHong Lee.\r\n * MIT license.\r\n */\r\n'use strict';\r\n\r\nexport default {\r\n name: 'colorPicker',\r\n /**\r\n * @description Constructor\r\n * @param {Object} core Core object \r\n */\r\n add: function (core) {\r\n const context = core.context;\r\n context.colorPicker = {\r\n colorListHTML: '',\r\n _colorInput: '',\r\n _defaultColor: '#000',\r\n _styleProperty: 'color',\r\n _currentColor: '',\r\n _colorList: []\r\n };\r\n\r\n /** set submenu */\r\n context.colorPicker.colorListHTML = this.createColorList(core, this._makeColorList);\r\n },\r\n\r\n /**\r\n * @description Create color list\r\n * @param {Object} core Core object \r\n * @param {Function} makeColor this._makeColorList\r\n * @returns {String} HTML string\r\n */\r\n createColorList: function (core, makeColor) {\r\n const option = core.options;\r\n const lang = core.lang;\r\n const colorList = !option.colorList || option.colorList.length === 0 ?\r\n [\r\n '#ff0000', '#ff5e00', '#ffe400', '#abf200', '#00d8ff', '#0055ff', '#6600ff', '#ff00dd', '#000000',\r\n '#ffd8d8', '#fae0d4', '#faf4c0', '#e4f7ba', '#d4f4fa', '#d9e5ff', '#e8d9ff', '#ffd9fa', '#f1f1f1',\r\n '#ffa7a7', '#ffc19e', '#faed7d', '#cef279', '#b2ebf4', '#b2ccff', '#d1b2ff', '#ffb2f5', '#bdbdbd',\r\n '#f15f5f', '#f29661', '#e5d85c', '#bce55c', '#5cd1e5', '#6699ff', '#a366ff', '#f261df', '#8c8c8c',\r\n '#980000', '#993800', '#998a00', '#6b9900', '#008299', '#003399', '#3d0099', '#990085', '#353535',\r\n '#670000', '#662500', '#665c00', '#476600', '#005766', '#002266', '#290066', '#660058', '#222222'\r\n ] : option.colorList;\r\n\r\n let colorArr = [];\r\n let list = '<div class=\"se-list-inner\">';\r\n for (let i = 0, len = colorList.length, color; i < len; i++) {\r\n color = colorList[i];\r\n if (!color) continue;\r\n \r\n if (typeof color === 'string') {\r\n colorArr.push(color);\r\n if (i < len - 1) continue;\r\n }\r\n if (colorArr.length > 0) {\r\n list += '<div class=\"se-selector-color\">' + makeColor(colorArr) + '</div>';\r\n colorArr = [];\r\n }\r\n if (typeof color === 'object') {\r\n list += '<div class=\"se-selector-color\">' + makeColor(color) + '</div>';\r\n }\r\n }\r\n list += '' +\r\n '<form class=\"se-form-group\">' +\r\n '<input type=\"text\" maxlength=\"9\" class=\"_se_color_picker_input se-color-input\"/>' +\r\n '<button type=\"submit\" class=\"se-btn-primary _se_color_picker_submit\" title=\"' + lang.dialogBox.submitButton + '\" aria-label=\"' + lang.dialogBox.submitButton + '\">' +\r\n core.icons.checked +\r\n '</button>' +\r\n '<button type=\"button\" class=\"se-btn _se_color_picker_remove\" title=\"' + lang.toolbar.removeFormat + '\" aria-label=\"' + lang.toolbar.removeFormat + '\">' +\r\n core.icons.erase +\r\n '</button>' +\r\n '</form>' +\r\n '</div>';\r\n\r\n return list;\r\n },\r\n\r\n /**\r\n * @description Internal function used by this.createColorList\r\n * @param {Array} colorList Color list\r\n * @private\r\n */\r\n _makeColorList: function (colorList) {\r\n let list = '';\r\n\r\n list += '<ul class=\"se-color-pallet\">';\r\n for (let i = 0, len = colorList.length, color; i < len; i++) {\r\n color = colorList[i];\r\n if (typeof color === 'string') {\r\n list += '<li>' +\r\n '<button type=\"button\" data-value=\"' + color + '\" title=\"' + color + '\" aria-label=\"' + color + '\" style=\"background-color:' + color + ';\"></button>' +\r\n '</li>';\r\n }\r\n }\r\n list += '</ul>';\r\n\r\n return list;\r\n },\r\n \r\n /**\r\n * @description Displays or resets the currently selected color at color list.\r\n * @param {Node} node Current Selected node\r\n * @param {String|null} color Color value\r\n */\r\n init: function (node, color) {\r\n const colorPicker = this.plugins.colorPicker;\r\n let fillColor = color ? color : colorPicker.getColorInNode.call(this, node) || this.context.colorPicker._defaultColor;\r\n fillColor = colorPicker.isHexColor(fillColor) ? fillColor : colorPicker.rgb2hex(fillColor) || fillColor;\r\n\r\n const colorList = this.context.colorPicker._colorList;\r\n if (colorList) {\r\n for (let i = 0, len = colorList.length; i < len; i++) {\r\n if (fillColor.toLowerCase() === colorList[i].getAttribute('data-value').toLowerCase()) {\r\n this.util.addClass(colorList[i], 'active');\r\n } else {\r\n this.util.removeClass(colorList[i], 'active');\r\n }\r\n }\r\n }\r\n\r\n colorPicker.setInputText.call(this, colorPicker.colorName2hex.call(this, fillColor));\r\n },\r\n\r\n /**\r\n * @description Store color values\r\n * @param {String} hexColorStr Hax color value\r\n */\r\n setCurrentColor: function (hexColorStr) {\r\n this.context.colorPicker._currentColor = hexColorStr;\r\n this.context.colorPicker._colorInput.style.borderColor = hexColorStr;\r\n },\r\n\r\n /**\r\n * @description Set color at input element\r\n * @param {String} hexColorStr Hax color value\r\n */\r\n setInputText: function (hexColorStr) {\r\n hexColorStr = /^#/.test(hexColorStr) ? hexColorStr : '#' + hexColorStr;\r\n this.context.colorPicker._colorInput.value = hexColorStr;\r\n this.plugins.colorPicker.setCurrentColor.call(this, hexColorStr);\r\n },\r\n\r\n /**\r\n * @description Gets color value at color property of node\r\n * @param {Node} node Selected node \r\n * @returns {String}\r\n */\r\n getColorInNode: function (node) {\r\n let findColor = '';\r\n const styleProperty = this.context.colorPicker._styleProperty;\r\n\r\n while (node && !this.util.isWysiwygDiv(node) && findColor.length === 0) {\r\n if (node.nodeType === 1 && node.style[styleProperty]) findColor = node.style[styleProperty];\r\n node = node.parentNode;\r\n }\r\n\r\n return findColor;\r\n },\r\n\r\n /**\r\n * @description Function to check hex format color\r\n * @param {String} str Color value\r\n */\r\n isHexColor: function (str) {\r\n return /^#[0-9a-f]{3}(?:[0-9a-f]{3})?$/i.test(str);\r\n },\r\n\r\n /**\r\n * @description Function to convert hex format to a rgb color\r\n * @param {String} rgb RGB color format\r\n * @returns {String}\r\n */\r\n rgb2hex: function (rgb) {\r\n const rgbMatch = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\r\n\r\n return (rgbMatch && rgbMatch.length === 4) ? \"#\" +\r\n (\"0\" + parseInt(rgbMatch[1],10).toString(16)).slice(-2) +\r\n (\"0\" + parseInt(rgbMatch[2],10).toString(16)).slice(-2) +\r\n (\"0\" + parseInt(rgbMatch[3],10).toString(16)).slice(-2) : '';\r\n },\r\n\r\n /**\r\n * @description Converts color values of other formats to hex color values and returns.\r\n * @param {String} colorName Color value\r\n * @returns {String}\r\n */\r\n colorName2hex: function (colorName) {\r\n if (/^#/.test(colorName)) return colorName;\r\n var temp = this.util.createElement('div');\r\n temp.style.display = 'none';\r\n temp.style.color = colorName;\r\n var colors = this._w.getComputedStyle(this._d.body.appendChild(temp)).color.match(/\\d+/g).map(function (a) { return parseInt(a,10); });\r\n this.util.removeItem(temp);\r\n return (colors.length >= 3) ? '#' + (((1 << 24) + (colors[0] << 16) + (colors[1] << 8) + colors[2]).toString(16).substr(1)) : false;\r\n }\r\n};","/*\r\n * wysiwyg web editor\r\n *\r\n * suneditor.js\r\n * Copyright 2017 JiHong Lee.\r\n * MIT license.\r\n */\r\n'use strict';\r\n\r\nimport colorPicker from '../modules/_colorPicker';\r\n\r\nexport default {\r\n name: 'fontColor',\r\n display: 'submenu',\r\n add: function (core, targetElement) {\r\n core.addModule([colorPicker]);\r\n\r\n const context = core.context;\r\n context.fontColor = {\r\n previewEl: null,\r\n colorInput: null,\r\n colorList: null\r\n };\r\n\r\n /** set submenu */\r\n let listDiv = this.setSubmenu(core);\r\n context.fontColor.colorInput = listDiv.querySelector('._se_color_picker_input');\r\n\r\n /** add event listeners */\r\n context.fontColor.colorInput.addEventListener('keyup', this.onChangeInput.bind(core));\r\n listDiv.querySelector('._se_color_picker_submit').addEventListener('click', this.submit.bind(core));\r\n listDiv.querySelector('._se_color_picker_remove').addEventListener('click', this.remove.bind(core));\r\n listDiv.addEventListener('click', this.pickup.bind(core));\r\n context.fontColor.colorList = listDiv.querySelectorAll('li button');\r\n\r\n /** append target button menu */\r\n core.initMenuTarget(this.name, targetElement, listDiv);\r\n\r\n /** empty memory */\r\n listDiv = null;\r\n },\r\n\r\n setSubmenu: function (core) {\r\n const colorArea = core.context.colorPicker.colorListHTML;\r\n const listDiv = core.util.createElement('DIV');\r\n\r\n listDiv.className = 'se-submenu se-list-layer';\r\n listDiv.innerHTML = colorArea;\r\n\r\n return listDiv;\r\n },\r\n\r\n /**\r\n * @Override submenu\r\n */\r\n on: function () {\r\n const contextPicker = this.context.colorPicker;\r\n const contextFontColor = this.context.fontColor;\r\n\r\n contextPicker._colorInput = contextFontColor.colorInput;\r\n const color = this.wwComputedStyle.color;\r\n contextPicker._defaultColor = color ? this.plugins.colorPicker.isHexColor(color) ? color : this.plugins.colorPicker.rgb2hex(color) : \"#333333\";\r\n contextPicker._styleProperty = 'color';\r\n contextPicker._colorList = contextFontColor.colorList;\r\n \r\n this.plugins.colorPicker.init.call(this, this.getSelectionNode(), null);\r\n },\r\n\r\n /**\r\n * @Override _colorPicker\r\n */\r\n onChangeInput: function (e) {\r\n this.plugins.colorPicker.setCurrentColor.call(this, e.target.value);\r\n },\r\n\r\n submit: function () {\r\n this.plugins.fontColor.applyColor.call(this, this.context.colorPicker._currentColor);\r\n },\r\n\r\n pickup: function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n this.plugins.fontColor.applyColor.call(this, e.target.getAttribute('data-value'));\r\n },\r\n\r\n remove: function () {\r\n this.nodeChange(null, ['color'], ['span'], true);\r\n this.submenuOff();\r\n },\r\n\r\n applyColor: function (color) {\r\n if (!color) return;\r\n\r\n const newNode = this.util.createElement('SPAN');\r\n newNode.style.color = color;\r\n this.nodeChange(newNode, ['color'], null, null);\r\n\r\n this.submenuOff();\r\n }\r\n};\r\n","/*\r\n * wysiwyg web editor\r\n *\r\n * suneditor.js\r\n * Copyright 2017 JiHong Lee.\r\n * MIT license.\r\n */\r\n'use strict';\r\n\r\nimport colorPicker from '../modules/_colorPicker';\r\n\r\nexport default {\r\n name: 'hiliteColor',\r\n display: 'submenu',\r\n add: function (core, targetElement) {\r\n core.addModule([colorPicker]);\r\n\r\n const context = core.context;\r\n context.hiliteColor = {\r\n previewEl: null,\r\n colorInput: null,\r\n colorList: null\r\n };\r\n\r\n /** set submenu */\r\n let listDiv = this.setSubmenu(core);\r\n context.hiliteColor.colorInput = listDiv.querySelector('._se_color_picker_input');\r\n\r\n /** add event listeners */\r\n context.hiliteColor.colorInput.addEventListener('keyup', this.onChangeInput.bind(core));\r\n listDiv.querySelector('._se_color_picker_submit').addEventListener('click', this.submit.bind(core));\r\n listDiv.querySelector('._se_color_picker_remove').addEventListener('click', this.remove.bind(core));\r\n listDiv.addEventListener('click', this.pickup.bind(core));\r\n\r\n context.hiliteColor.colorList = listDiv.querySelectorAll('li button');\r\n\r\n /** append target button menu */\r\n core.initMenuTarget(this.name, targetElement, listDiv);\r\n\r\n /** empty memory */\r\n listDiv = null;\r\n },\r\n\r\n setSubmenu: function (core) {\r\n const colorArea = core.context.colorPicker.colorListHTML;\r\n const listDiv = core.util.createElement('DIV');\r\n\r\n listDiv.className = 'se-submenu se-list-layer';\r\n listDiv.innerHTML = colorArea;\r\n\r\n return listDiv;\r\n },\r\n\r\n /**\r\n * @Override submenu\r\n */\r\n on: function () {\r\n const contextPicker = this.context.colorPicker;\r\n const contextHiliteColor = this.context.hiliteColor;\r\n\r\n contextPicker._colorInput = contextHiliteColor.colorInput;\r\n const color = this.wwComputedStyle.backgroundColor;\r\n contextPicker._defaultColor = color ? this.plugins.colorPicker.isHexColor(color) ? color : this.plugins.colorPicker.rgb2hex(color) : \"#ffffff\";\r\n contextPicker._styleProperty = 'backgroundColor';\r\n contextPicker._colorList = contextHiliteColor.colorList;\r\n \r\n this.plugins.colorPicker.init.call(this, this.getSelectionNode(), null);\r\n },\r\n\r\n /**\r\n * @Override _colorPicker\r\n */\r\n onChangeInput: function (e) {\r\n this.plugins.colorPicker.setCurrentColor.call(this, e.target.value);\r\n },\r\n\r\n submit: function () {\r\n this.plugins.hiliteColor.applyColor.call(this, this.context.colorPicker._currentColor);\r\n },\r\n\r\n pickup: function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n this.plugins.hiliteColor.applyColor.call(this, e.target.getAttribute('data-value'));\r\n },\r\n\r\n remove: function () {\r\n this.nodeChange(null, ['background-color'], ['span'], true);\r\n this.submenuOff();\r\n },\r\n\r\n applyColor: function (color) {\r\n if (!color) return;\r\n \r\n const newNode = this.util.createElement('SPAN');\r\n newNode.style.backgroundColor = color;\r\n this.nodeChange(newNode, ['background-color'], null, null);\r\n \r\n this.submenuOff();\r\n }\r\n};\r\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'horizontalRule',\n display: 'submenu',\n add: function (core, targetElement) {\n core.context.horizontalRule = {\n currentHR: null,\n };\n\n /** set submenu */\n let listDiv = this.setSubmenu(core);\n\n /** add event listeners */\n listDiv.querySelector('ul').addEventListener('click', this.horizontalRulePick.bind(core));\n\n /** append target button menu */\n core.initMenuTarget(this.name, targetElement, listDiv);\n\n /** empty memory */\n listDiv = null;\n },\n\n setSubmenu: function (core) {\n const lang = core.lang;\n const listDiv = core.util.createElement('DIV');\n const items = core.options.hrItems || [{name: lang.toolbar.hr_solid, class: '__se__solid'}, {name: lang.toolbar.hr_dashed, class: '__se__dashed'}, {name: lang.toolbar.hr_dotted, class: '__se__dotted'}];\n \n let list = '';\n for (let i = 0, len = items.length; i < len; i++) {\n list += '<li>' +\n '<button type=\"button\" class=\"se-btn-list btn_line\" data-command=\"horizontalRule\" data-value=\"' + items[i].class + '\" title=\"' + items[i].name + '\" aria-label=\"' + items[i].name + '\">' +\n '<hr' + (items[i].class ? ' class=\"' + items[i].class + '\"' : '') + (items[i].style ? ' style=\"' + items[i].style + '\"' : '') + '/>' +\n '</button>' +\n '</li>';\n }\n \n listDiv.className = 'se-submenu se-list-layer se-list-line';\n listDiv.innerHTML = '' +\n '<div class=\"se-list-inner\">' +\n '<ul class=\"se-list-basic\">' +\n list +\n '</ul>' +\n '</div>';\n\n return listDiv;\n },\n\n active: function (element) {\n if (!element) {\n if (this.util.hasClass(this.context.horizontalRule.currentHR, 'on')) {\n this.controllersOff();\n }\n } else if (/HR/i.test(element.nodeName)) {\n this.context.horizontalRule.currentHR = element;\n if (!this.util.hasClass(element, 'on')) {\n this.util.addClass(element, 'on');\n this.controllersOn('hr', this.util.removeClass.bind(this.util, element, 'on'));\n }\n return true;\n }\n\n return false;\n },\n\n appendHr: function (hrTemp) {\n this.focus();\n return this.insertComponent(hrTemp.cloneNode(false), false, true, false);\n },\n\n horizontalRulePick: function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n let target = e.target;\n let command = target.getAttribute('data-command');\n \n while (!command && !/UL/i.test(target.tagName)) {\n target = target.parentNode;\n command = target.getAttribute('data-command');\n }\n\n if (!command) return;\n\n const oNode = this.plugins.horizontalRule.appendHr.call(this, target.firstElementChild);\n if (oNode) {\n this.setRange(oNode, 0, oNode, 0);\n this.submenuOff();\n }\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'list',\n display: 'submenu',\n add: function (core, targetElement) {\n const context = core.context;\n context.list = {\n targetButton: targetElement,\n _list: null,\n currentList: '',\n icons: {\n bullets: core.icons.list_bullets,\n number: core.icons.list_number\n }\n };\n\n /** set submenu */\n let listDiv = this.setSubmenu(core);\n let listUl = listDiv.querySelector('ul');\n\n /** add event listeners */\n listUl.addEventListener('click', this.pickup.bind(core));\n context.list._list = listUl.querySelectorAll('li button');\n\n /** append target button menu */\n core.initMenuTarget(this.name, targetElement, listDiv);\n\n /** empty memory */\n listDiv = null, listUl = null;\n },\n\n setSubmenu: function (core) {\n const lang = core.lang;\n const listDiv = core.util.createElement('DIV');\n\n listDiv.className = 'se-submenu se-list-layer';\n listDiv.innerHTML = '' +\n '<div class=\"se-list-inner\">' +\n '<ul class=\"se-list-basic\">' +\n '<li><button type=\"button\" class=\"se-btn-list se-tooltip\" data-command=\"OL\" title=\"' + lang.toolbar.orderList + '\" aria-label=\"' + lang.toolbar.orderList + '\">' +\n core.icons.list_number +\n '</button></li>' +\n '<li><button type=\"button\" class=\"se-btn-list se-tooltip\" data-command=\"UL\" title=\"' + lang.toolbar.unorderList + '\" aria-label=\"' + lang.toolbar.unorderList + '\">' +\n core.icons.list_bullets +\n '</button></li>' +\n '</ul>' +\n '</div>';\n\n return listDiv;\n },\n\n /**\n * @Override core\n */\n active: function (element) {\n const button = this.context.list.targetButton;\n const icon = button.firstElementChild;\n const util = this.util;\n\n if (util.isList(element)) {\n const nodeName = element.nodeName;\n button.setAttribute('data-focus', nodeName);\n util.addClass(button, 'active');\n if (/UL/i.test(nodeName)) {\n util.changeElement(icon, this.context.list.icons.bullets);\n } else {\n util.changeElement(icon, this.context.list.icons.number);\n }\n \n return true;\n } else {\n button.removeAttribute('data-focus');\n util.changeElement(icon, this.context.list.icons.number);\n util.removeClass(button, 'active');\n }\n\n return false;\n },\n\n /**\n * @Override submenu\n */\n on: function () {\n const listContext = this.context.list;\n const list = listContext._list;\n const currentList = listContext.targetButton.getAttribute('data-focus') || '';\n\n if (currentList !== listContext.currentList) {\n for (let i = 0, len = list.length; i < len; i++) {\n if (currentList === list[i].getAttribute('data-command')) {\n this.util.addClass(list[i], 'active');\n } else {\n this.util.removeClass(list[i], 'active');\n }\n }\n\n listContext.currentList = currentList;\n }\n },\n\n editList: function (command, selectedCells, detach) {\n let range = this.getRange();\n let selectedFormats = !selectedCells ? this.getSelectedElementsAndComponents(false) : selectedCells;\n\n if (selectedFormats.length === 0) {\n if (selectedCells) return;\n range = this.getRange_addLine(range, null);\n selectedFormats = this.getSelectedElementsAndComponents(false);\n if (selectedFormats.length === 0) return;\n }\n \n const util = this.util;\n util.sortByDepth(selectedFormats, true);\n\n // merge\n let firstSel = selectedFormats[0];\n let lastSel = selectedFormats[selectedFormats.length - 1];\n let topEl = (util.isListCell(firstSel) || util.isComponent(firstSel)) && !firstSel.previousElementSibling ? firstSel.parentNode.previousElementSibling : firstSel.previousElementSibling;\n let bottomEl = (util.isListCell(lastSel) || util.isComponent(lastSel)) && !lastSel.nextElementSibling ? lastSel.parentNode.nextElementSibling : lastSel.nextElementSibling;\n\n const isCollapsed = range.collapsed;\n const originRange = {\n sc: range.startContainer,\n so: (range.startContainer === range.endContainer && util.onlyZeroWidthSpace(range.startContainer) && range.startOffset === 0 && range.endOffset === 1) ? range.endOffset : range.startOffset,\n ec: range.endContainer,\n eo: range.endOffset\n };\n let afterRange = null;\n let isRemove = true;\n\n for (let i = 0, len = selectedFormats.length; i < len; i++) {\n if (!util.isList(util.getRangeFormatElement(selectedFormats[i], function (current) {\n return this.getRangeFormatElement(current) && current !== selectedFormats[i];\n }.bind(util)))) {\n isRemove = false;\n break;\n }\n }\n\n if (isRemove && (!topEl || (firstSel.tagName !== topEl.tagName || command !== topEl.tagName.toUpperCase())) && (!bottomEl || (lastSel.tagName !== bottomEl.tagName || command !== bottomEl.tagName.toUpperCase()))) {\n if (detach) {\n for (let i = 0, len = selectedFormats.length; i < len; i++) {\n for (let j = i - 1; j >= 0; j--) {\n if (selectedFormats[j].contains(selectedFormats[i])) {\n selectedFormats.splice(i, 1);\n i--; len--;\n break;\n }\n }\n }\n }\n\n const currentFormat = util.getRangeFormatElement(firstSel);\n const cancel = currentFormat && currentFormat.tagName === command;\n let rangeArr, tempList;\n const passComponent = function (current) {\n return !this.isComponent(current);\n }.bind(util);\n \n if (!cancel) tempList = util.createElement(command);\n\n for (let i = 0, len = selectedFormats.length, r, o; i < len; i++) {\n o = util.getRangeFormatElement(selectedFormats[i], passComponent);\n if (!o || !util.isList(o)) continue;\n\n if (!r) {\n r = o;\n rangeArr = {r: r, f: [util.getParentElement(selectedFormats[i], 'LI')]};\n } else {\n if (r !== o) {\n if (detach && util.isListCell(o.parentNode)) {\n this.plugins.list._detachNested.call(this, rangeArr.f);\n } else {\n afterRange = this.detachRangeFormatElement(rangeArr.f[0].parentNode, rangeArr.f, tempList, false, true);\n }\n \n o = selectedFormats[i].parentNode;\n if (!cancel) tempList = util.createElement(command);\n \n r = o;\n rangeArr = {r: r, f: [util.getParentElement(selectedFormats[i], 'LI')]};\n } else {\n rangeArr.f.push(util.getParentElement(selectedFormats[i], 'LI'));\n }\n }\n \n if (i === len - 1) {\n if (detach && util.isListCell(o.parentNode)) {\n this.plugins.list._detachNested.call(this, rangeArr.f);\n } else {\n afterRange = this.detachRangeFormatElement(rangeArr.f[0].parentNode, rangeArr.f, tempList, false, true);\n }\n }\n }\n } else {\n const topElParent = topEl ? topEl.parentNode : topEl;\n const bottomElParent = bottomEl ? bottomEl.parentNode : bottomEl;\n topEl = topElParent && !util.isWysiwygDiv(topElParent) && topElParent.nodeName === command ? topElParent : topEl;\n bottomEl = bottomElParent && !util.isWysiwygDiv(bottomElParent) && bottomElParent.nodeName === command ? bottomElParent : bottomEl;\n\n const mergeTop = topEl && topEl.tagName === command;\n const mergeBottom = bottomEl && bottomEl.tagName === command;\n \n let list = mergeTop ? topEl : util.createElement(command);\n let firstList = null;\n let lastList = null;\n let topNumber = null;\n let bottomNumber = null;\n\n const passComponent = function (current) {\n return !this.isComponent(current) && !this.isList(current);\n }.bind(util);\n \n for (let i = 0, len = selectedFormats.length, newCell, fTag, isCell, next, originParent, nextParent, parentTag, siblingTag, rangeTag; i < len; i++) {\n fTag = selectedFormats[i];\n if (fTag.childNodes.length === 0 && !util._isIgnoreNodeChange(fTag)) {\n util.removeItem(fTag);\n continue;\n }\n next = selectedFormats[i + 1];\n originParent = fTag.parentNode;\n nextParent = next ? next.parentNode : null;\n isCell = util.isListCell(fTag);\n rangeTag = util.isRangeFormatElement(originParent) ? originParent : null;\n parentTag = isCell && !util.isWysiwygDiv(originParent) ? originParent.parentNode : originParent;\n siblingTag = isCell && !util.isWysiwygDiv(originParent) ? (!next || util.isListCell(parentTag)) ? originParent : originParent.nextSibling : fTag.nextSibling;\n\n newCell = util.createElement('LI');\n util.copyFormatAttributes(newCell, fTag);\n\n if (i === 0 && originRange.sc === fTag) {\n originRange.sc = newCell;\n }\n if (i === len - 1 && originRange.ec === fTag) {\n originRange.ec = newCell;\n }\n\n if (util.isComponent(fTag)) {\n const isHR = /^HR$/i.test(fTag.nodeName);\n if (!isHR) newCell.innerHTML = '<br>';\n newCell.innerHTML += fTag.outerHTML;\n if (isHR) newCell.innerHTML += '<br>';\n } else {\n const fChildren = fTag.childNodes;\n while (fChildren[0]) {\n newCell.appendChild(fChildren[0]);\n }\n }\n list.appendChild(newCell);\n\n if (!next) lastList = list;\n if (!next || parentTag !== nextParent || util.isRangeFormatElement(siblingTag)) {\n if (!firstList) firstList = list;\n if ((!mergeTop || !next || parentTag !== nextParent) && !(next && util.isList(nextParent) && nextParent === originParent)) {\n if (list.parentNode !== parentTag) parentTag.insertBefore(list, siblingTag);\n }\n }\n\n util.removeItem(fTag);\n if (mergeTop && topNumber === null) topNumber = list.children.length - 1;\n if (next && (util.getRangeFormatElement(nextParent, passComponent) !== util.getRangeFormatElement(originParent, passComponent) || (util.isList(nextParent) && util.isList(originParent) && util.getElementDepth(nextParent) !== util.getElementDepth(originParent)))) {\n list = util.createElement(command);\n }\n\n if (rangeTag && rangeTag.children.length === 0) util.removeItem(rangeTag);\n }\n\n if (topNumber) {\n firstList = firstList.children[topNumber];\n }\n\n if (mergeBottom) {\n bottomNumber = list.children.length - 1;\n list.innerHTML += bottomEl.innerHTML;\n lastList = list.children[bottomNumber];\n util.removeItem(bottomEl);\n }\n }\n \n this.effectNode = null;\n return !isCollapsed ? originRange : afterRange;\n },\n\n _detachNested: function (cells) {\n const first = cells[0];\n const last = cells[cells.length - 1];\n const next = last.nextElementSibling;\n const originList = first.parentNode;\n const sibling = originList.parentNode.nextElementSibling;\n const parentNode = originList.parentNode.parentNode;\n\n for (let c = 0, cLen = cells.length; c < cLen; c++) {\n parentNode.insertBefore(cells[c], sibling);\n }\n\n if (next && originList.children.length > 0) {\n const newList = originList.cloneNode(false);\n const children = originList.childNodes;\n const index = this.util.getPositionIndex(next);\n while (children[index]) {\n newList.appendChild(children[index]);\n }\n last.appendChild(newList);\n }\n\n if (originList.children.length === 0) this.util.removeItem(originList);\n this.util.mergeSameTags(parentNode);\n\n const edge = this.util.getEdgeChildNodes(first, last);\n\n return {\n cc: first.parentNode,\n sc: edge.sc,\n ec: edge.ec\n };\n },\n\n editInsideList: function (remove, selectedCells) {\n selectedCells = !selectedCells ? this.getSelectedElements().filter(function (el) { return this.isListCell(el); }.bind(this.util)) : selectedCells;\n const cellsLen = selectedCells.length;\n if (cellsLen === 0 || (!remove && (!this.util.isListCell(selectedCells[0].previousElementSibling) && !this.util.isListCell(selectedCells[cellsLen - 1].nextElementSibling)))) {\n return {\n sc: selectedCells[0],\n so: 0,\n ec: selectedCells[cellsLen - 1],\n eo: 1\n };\n }\n\n let originList = selectedCells[0].parentNode;\n let lastCell = selectedCells[cellsLen - 1];\n let range = null;\n\n if (remove) {\n if (originList !== lastCell.parentNode && this.util.isList(lastCell.parentNode.parentNode) && lastCell.nextElementSibling) {\n lastCell = lastCell.nextElementSibling;\n while (lastCell) {\n selectedCells.push(lastCell);\n lastCell = lastCell.nextElementSibling;\n }\n }\n range = this.plugins.list.editList.call(this, originList.nodeName.toUpperCase(), selectedCells, true);\n } else {\n let innerList = this.util.createElement(originList.nodeName);\n let prev = selectedCells[0].previousElementSibling;\n let next = lastCell.nextElementSibling;\n const nodePath = { s: null, e: null, sl: originList, el: originList };\n\n for (let i = 0, len = cellsLen, c; i < len; i++) {\n c = selectedCells[i];\n if (c.parentNode !== originList) {\n this.plugins.list._insiedList.call(this, originList, innerList, prev, next, nodePath);\n originList = c.parentNode;\n innerList = this.util.createElement(originList.nodeName);\n }\n \n prev = c.previousElementSibling;\n next = c.nextElementSibling;\n innerList.appendChild(c);\n }\n \n this.plugins.list._insiedList.call(this, originList, innerList, prev, next, nodePath);\n\n const sc = this.util.getNodeFromPath(nodePath.s, nodePath.sl);\n const ec = this.util.getNodeFromPath(nodePath.e, nodePath.el);\n range = {\n sc: sc,\n so: 0,\n ec: ec,\n eo: ec.textContent.length\n };\n }\n\n return range;\n },\n\n _insiedList: function (originList, innerList, prev, next, nodePath) {\n let insertPrev = false;\n\n if (prev && innerList.tagName === prev.tagName) {\n const children = innerList.children;\n while (children[0]) {\n prev.appendChild(children[0]);\n }\n\n innerList = prev;\n insertPrev = true;\n }\n\n if (next && innerList.tagName === next.tagName) {\n const children = next.children;\n while (children[0]) {\n innerList.appendChild(children[0]);\n }\n\n const temp = next.nextElementSibling;\n next.parentNode.removeChild(next);\n next = temp;\n }\n\n if (!insertPrev) {\n if (this.util.isListCell(prev)) {\n originList = prev;\n next = null;\n }\n\n originList.insertBefore(innerList, next);\n\n if (!nodePath.s) {\n nodePath.s = this.util.getNodePath(innerList.firstElementChild.firstChild, originList, null);\n nodePath.sl = originList;\n }\n\n const slPath = originList.contains(nodePath.sl) ? this.util.getNodePath(nodePath.sl, originList) : null;\n nodePath.e = this.util.getNodePath(innerList.lastElementChild.firstChild, originList, null);\n nodePath.el = originList;\n\n this.util.mergeSameTags(originList, [nodePath.s, nodePath.e, slPath], false);\n this.util.mergeNestedTags(originList);\n if (slPath) nodePath.sl = this.util.getNodeFromPath(slPath, originList);\n }\n\n return innerList;\n },\n\n pickup: function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n let target = e.target;\n let command = '';\n\n while (!command && !/^UL$/i.test(target.tagName)) {\n command = target.getAttribute('data-command');\n target = target.parentNode;\n }\n\n if (!command) return;\n\n const range = this.plugins.list.editList.call(this, command, null, false);\n if (range) this.setRange(range.sc, range.so, range.ec, range.eo);\n\n this.submenuOff();\n\n // history stack\n this.history.push(false);\n }\n};\n","/*\r\n * wysiwyg web editor\r\n *\r\n * suneditor.js\r\n * Copyright 2017 JiHong Lee.\r\n * MIT license.\r\n */\r\n'use strict';\r\n\r\nexport default {\r\n name: 'table',\r\n display: 'submenu',\r\n add: function (core, targetElement) {\r\n const context = core.context;\r\n let contextTable = context.table = {\r\n _element: null,\r\n _tdElement: null,\r\n _trElement: null,\r\n _trElements: null,\r\n _tableXY: [],\r\n _maxWidth: true,\r\n _fixedColumn: false,\r\n _rtl: core.options.rtl,\r\n cellControllerTop: core.options.tableCellControllerPosition === 'top',\r\n resizeText: null,\r\n headerButton: null,\r\n mergeButton: null,\r\n splitButton: null,\r\n splitMenu: null,\r\n maxText: core.lang.controller.maxSize,\r\n minText: core.lang.controller.minSize,\r\n _physical_cellCnt: 0,\r\n _logical_cellCnt: 0,\r\n _rowCnt: 0,\r\n _rowIndex: 0,\r\n _physical_cellIndex: 0,\r\n _logical_cellIndex: 0,\r\n _current_colSpan: 0,\r\n _current_rowSpan: 0,\r\n icons: {\r\n expansion: core.icons.expansion,\r\n reduction: core.icons.reduction\r\n }\r\n };\r\n\r\n /** set submenu */\r\n let listDiv = this.setSubmenu(core);\r\n let tablePicker = listDiv.querySelector('.se-controller-table-picker');\r\n\r\n contextTable.tableHighlight = listDiv.querySelector('.se-table-size-highlighted');\r\n contextTable.tableUnHighlight = listDiv.querySelector('.se-table-size-unhighlighted');\r\n contextTable.tableDisplay = listDiv.querySelector('.se-table-size-display');\r\n if (core.options.rtl) contextTable.tableHighlight.style.left = (10 * 18 - 13) + 'px';\r\n\r\n /** set table controller */\r\n let tableController = this.setController_table(core);\r\n contextTable.tableController = tableController;\r\n contextTable.resizeButton = tableController.querySelector('._se_table_resize');\r\n contextTable.resizeText = tableController.querySelector('._se_table_resize > span > span');\r\n contextTable.columnFixedButton = tableController.querySelector('._se_table_fixed_column');\r\n contextTable.headerButton = tableController.querySelector('._se_table_header');\r\n\r\n /** set resizing */\r\n let resizeDiv = this.setController_tableEditor(core, contextTable.cellControllerTop);\r\n contextTable.resizeDiv = resizeDiv;\r\n contextTable.splitMenu = resizeDiv.querySelector('.se-btn-group-sub');\r\n contextTable.mergeButton = resizeDiv.querySelector('._se_table_merge_button');\r\n contextTable.splitButton = resizeDiv.querySelector('._se_table_split_button');\r\n contextTable.insertRowAboveButton = resizeDiv.querySelector('._se_table_insert_row_a');\r\n contextTable.insertRowBelowButton = resizeDiv.querySelector('._se_table_insert_row_b');\r\n \r\n /** add event listeners */\r\n tablePicker.addEventListener('mousemove', this.onMouseMove_tablePicker.bind(core, contextTable));\r\n tablePicker.addEventListener('click', this.appendTable.bind(core));\r\n resizeDiv.addEventListener('click', this.onClick_tableController.bind(core));\r\n tableController.addEventListener('click', this.onClick_tableController.bind(core));\r\n\r\n /** append target button menu */\r\n core.initMenuTarget(this.name, targetElement, listDiv);\r\n\r\n /** append controller */\r\n context.element.relative.appendChild(resizeDiv);\r\n context.element.relative.appendChild(tableController);\r\n\r\n /** empty memory */\r\n listDiv = null, tablePicker = null, resizeDiv = null, tableController = null, contextTable = null;\r\n },\r\n\r\n setSubmenu: function (core) {\r\n const listDiv = core.util.createElement('DIV');\r\n listDiv.className = 'se-submenu se-selector-table';\r\n listDiv.innerHTML = '' +\r\n '<div class=\"se-table-size\">' +\r\n '<div class=\"se-table-size-picker se-controller-table-picker\"></div>' +\r\n '<div class=\"se-table-size-highlighted\"></div>' +\r\n '<div class=\"se-table-size-unhighlighted\"></div>' +\r\n '</div>' +\r\n '<div class=\"se-table-size-display\">1 x 1</div>';\r\n\r\n return listDiv;\r\n },\r\n\r\n setController_table: function (core) {\r\n const lang = core.lang;\r\n const icons = core.icons;\r\n const tableResize = core.util.createElement('DIV');\r\n\r\n tableResize.className = 'se-controller se-controller-table';\r\n tableResize.innerHTML = '' +\r\n '<div>' +\r\n '<div class=\"se-btn-group\">' +\r\n '<button type=\"button\" data-command=\"resize\" class=\"se-btn se-tooltip _se_table_resize\">' +\r\n icons.expansion +\r\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.maxSize + '</span></span>' +\r\n '</button>' +\r\n '<button type=\"button\" data-command=\"layout\" class=\"se-btn se-tooltip _se_table_fixed_column\">' +\r\n icons.fixed_column_width +\r\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.fixedColumnWidth + '</span></span>' +\r\n '</button>' +\r\n '<button type=\"button\" data-command=\"header\" class=\"se-btn se-tooltip _se_table_header\">' +\r\n icons.table_header +\r\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.tableHeader + '</span></span>' +\r\n '</button>' +\r\n '<button type=\"button\" data-command=\"remove\" class=\"se-btn se-tooltip\">' +\r\n icons.delete +\r\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.remove + '</span></span>' +\r\n '</button>' +\r\n '</div>' +\r\n '</div>';\r\n\r\n return tableResize;\r\n },\r\n\r\n setController_tableEditor: function (core, cellControllerTop) {\r\n const lang = core.lang;\r\n const icons = core.icons;\r\n const tableResize = core.util.createElement('DIV');\r\n\r\n tableResize.className = 'se-controller se-controller-table-cell';\r\n tableResize.innerHTML = (cellControllerTop ? '' : '<div class=\"se-arrow se-arrow-up\"></div>') +\r\n '<div class=\"se-btn-group\">' +\r\n '<button type=\"button\" data-command=\"insert\" data-value=\"row\" data-option=\"up\" class=\"se-btn se-tooltip _se_table_insert_row_a\">' +\r\n icons.insert_row_above +\r\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.insertRowAbove + '</span></span>' +\r\n '</button>' +\r\n '<button type=\"button\" data-command=\"insert\" data-value=\"row\" data-option=\"down\" class=\"se-btn se-tooltip _se_table_insert_row_b\">' +\r\n icons.insert_row_below +\r\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.insertRowBelow + '</span></span>' +\r\n '</button>' +\r\n '<button type=\"button\" data-command=\"delete\" data-value=\"row\" class=\"se-btn se-tooltip\">' +\r\n icons.delete_row +\r\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.deleteRow + '</span></span>' +\r\n '</button>' +\r\n '<button type=\"button\" data-command=\"merge\" class=\"_se_table_merge_button se-btn se-tooltip\" disabled>' +\r\n icons.merge_cell +\r\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.mergeCells + '</span></span>' +\r\n '</button>' +\r\n '</div>' +\r\n '<div class=\"se-btn-group\" style=\"padding-top: 0;\">' +\r\n '<button type=\"button\" data-command=\"insert\" data-value=\"cell\" data-option=\"left\" class=\"se-btn se-tooltip\">' +\r\n icons.insert_column_left +\r\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.insertColumnBefore + '</span></span>' +\r\n '</button>' +\r\n '<button type=\"button\" data-command=\"insert\" data-value=\"cell\" data-option=\"right\" class=\"se-btn se-tooltip\">' +\r\n icons.insert_column_right +\r\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.insertColumnAfter + '</span></span>' +\r\n '</button>' +\r\n '<button type=\"button\" data-command=\"delete\" data-value=\"cell\" class=\"se-btn se-tooltip\">' +\r\n icons.delete_column +\r\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.deleteColumn + '</span></span>' +\r\n '</button>' +\r\n '<button type=\"button\" data-command=\"onsplit\" class=\"_se_table_split_button se-btn se-tooltip\">' +\r\n icons.split_cell +\r\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.splitCells + '</span></span>' +\r\n '</button>' +\r\n '<div class=\"se-btn-group-sub sun-editor-common se-list-layer se-table-split\">' +\r\n '<div class=\"se-list-inner\">' +\r\n '<ul class=\"se-list-basic\">' +\r\n '<li class=\"se-btn-list\" data-command=\"split\" data-value=\"vertical\" style=\"line-height:32px;\" title=\"' + lang.controller.VerticalSplit + '\" aria-label=\"' + lang.controller.VerticalSplit + '\">' + \r\n lang.controller.VerticalSplit + '</li>' +\r\n '<li class=\"se-btn-list\" data-command=\"split\" data-value=\"horizontal\" style=\"line-height:32px;\" title=\"' + lang.controller.HorizontalSplit + '\" aria-label=\"' + lang.controller.HorizontalSplit + '\">' + \r\n lang.controller.HorizontalSplit + '</li>' +\r\n '</ul>' +\r\n '</div>' +\r\n '</div>' +\r\n '</div>';\r\n\r\n return tableResize;\r\n },\r\n\r\n appendTable: function () {\r\n const oTable = this.util.createElement('TABLE');\r\n const createCells = this.plugins.table.createCells;\r\n\r\n const x = this.context.table._tableXY[0];\r\n let y = this.context.table._tableXY[1];\r\n let tableHTML = '<tbody>';\r\n while (y > 0) {\r\n tableHTML += '<tr>' + createCells.call(this, 'td', x) + '</tr>';\r\n --y;\r\n }\r\n tableHTML += '</tbody>';\r\n oTable.innerHTML = tableHTML;\r\n\r\n const changed = this.insertComponent(oTable, false, true, false);\r\n \r\n if (changed) {\r\n const firstTd = oTable.querySelector('td div');\r\n this.setRange(firstTd, 0, firstTd, 0);\r\n this.plugins.table.reset_table_picker.call(this);\r\n }\r\n },\r\n\r\n createCells: function (nodeName, cnt, returnElement) {\r\n nodeName = nodeName.toLowerCase();\r\n\r\n if (!returnElement) {\r\n let cellsHTML = '';\r\n while (cnt > 0) {\r\n cellsHTML += '<' +nodeName + '><div><br></div></' + nodeName + '>';\r\n cnt--;\r\n }\r\n return cellsHTML;\r\n } else {\r\n const cell = this.util.createElement(nodeName);\r\n cell.innerHTML = '<div><br></div>';\r\n return cell;\r\n }\r\n },\r\n\r\n onMouseMove_tablePicker: function (contextTable, e) {\r\n e.stopPropagation();\r\n\r\n let x = this._w.Math.ceil(e.offsetX / 18);\r\n let y = this._w.Math.ceil(e.offsetY / 18);\r\n x = x < 1 ? 1 : x;\r\n y = y < 1 ? 1 : y;\r\n \r\n if (contextTable._rtl) {\r\n contextTable.tableHighlight.style.left = (x * 18 - 13) + 'px';\r\n x = 11 - x;\r\n }\r\n \r\n contextTable.tableHighlight.style.width = x + 'em';\r\n contextTable.tableHighlight.style.height = y + 'em';\r\n\r\n // let x_u = x < 5 ? 5 : (x > 9 ? 10 : x + 1);\r\n // let y_u = y < 5 ? 5 : (y > 9 ? 10 : y + 1);\r\n // contextTable.tableUnHighlight.style.width = x_u + 'em';\r\n // contextTable.tableUnHighlight.style.height = y_u + 'em';\r\n\r\n this.util.changeTxt(contextTable.tableDisplay, x + ' x ' + y);\r\n contextTable._tableXY = [x, y];\r\n },\r\n\r\n reset_table_picker: function () {\r\n if (!this.context.table.tableHighlight) return;\r\n\r\n const highlight = this.context.table.tableHighlight.style;\r\n const unHighlight = this.context.table.tableUnHighlight.style;\r\n\r\n highlight.width = '1em';\r\n highlight.height = '1em';\r\n unHighlight.width = '10em';\r\n unHighlight.height = '10em';\r\n\r\n this.util.changeTxt(this.context.table.tableDisplay, '1 x 1');\r\n this.submenuOff();\r\n },\r\n\r\n init: function () {\r\n const contextTable = this.context.table;\r\n const tablePlugin = this.plugins.table;\r\n\r\n tablePlugin._removeEvents.call(this);\r\n\r\n if (tablePlugin._selectedTable) {\r\n const selectedCells = tablePlugin._selectedTable.querySelectorAll('.se-table-selected-cell');\r\n for (let i = 0, len = selectedCells.length; i < len; i++) {\r\n this.util.removeClass(selectedCells[i], 'se-table-selected-cell');\r\n }\r\n }\r\n\r\n tablePlugin._toggleEditor.call(this, true);\r\n\r\n contextTable._element = null;\r\n contextTable._tdElement = null;\r\n contextTable._trElement = null;\r\n contextTable._trElements = null;\r\n contextTable._tableXY = [];\r\n contextTable._maxWidth = true;\r\n contextTable._fixedColumn = false;\r\n contextTable._physical_cellCnt = 0;\r\n contextTable._logical_cellCnt = 0;\r\n contextTable._rowCnt = 0;\r\n contextTable._rowIndex = 0;\r\n contextTable._physical_cellIndex = 0;\r\n contextTable._logical_cellIndex = 0;\r\n contextTable._current_colSpan = 0;\r\n contextTable._current_rowSpan = 0;\r\n\r\n tablePlugin._shift = false;\r\n tablePlugin._selectedCells = null;\r\n tablePlugin._selectedTable = null;\r\n tablePlugin._ref = null;\r\n\r\n tablePlugin._fixedCell = null;\r\n tablePlugin._selectedCell = null;\r\n tablePlugin._fixedCellName = null;\r\n },\r\n\r\n /** table edit controller */\r\n call_controller_tableEdit: function (tdElement) {\r\n const tablePlugin = this.plugins.table;\r\n const contextTable = this.context.table;\r\n\r\n if (!this.getSelection().isCollapsed && !tablePlugin._selectedCell) {\r\n this.controllersOff();\r\n this.util.removeClass(tdElement, 'se-table-selected-cell');\r\n return;\r\n }\r\n\r\n const tableElement = contextTable._element || this.plugins.table._selectedTable || this.util.getParentElement(tdElement, 'TABLE');\r\n contextTable._maxWidth = this.util.hasClass(tableElement, 'se-table-size-100') || tableElement.style.width === '100%' || (!tableElement.style.width && !this.util.hasClass(tableElement, 'se-table-size-auto'));\r\n contextTable._fixedColumn = this.util.hasClass(tableElement, 'se-table-layout-fixed') || tableElement.style.tableLayout === 'fixed';\r\n tablePlugin.setTableStyle.call(this, contextTable._maxWidth ? 'width|column' : 'width');\r\n \r\n tablePlugin.setPositionControllerTop.call(this, tableElement);\r\n tablePlugin.setPositionControllerDiv.call(this, tdElement, tablePlugin._shift);\r\n \r\n if (!tablePlugin._shift) this.controllersOn(contextTable.resizeDiv, contextTable.tableController, tablePlugin.init.bind(this), tdElement, 'table');\r\n },\r\n\r\n setPositionControllerTop: function (tableElement) {\r\n this.setControllerPosition(this.context.table.tableController, tableElement, 'top', {left: 0, top: 0});\r\n },\r\n\r\n setPositionControllerDiv: function (tdElement, reset) {\r\n const contextTable = this.context.table;\r\n const resizeDiv = contextTable.resizeDiv;\r\n \r\n this.plugins.table.setCellInfo.call(this, tdElement, reset);\r\n \r\n if (contextTable.cellControllerTop) {\r\n this.setControllerPosition(resizeDiv, contextTable._element, 'top', {left: contextTable.tableController.offsetWidth, top: 0});\r\n } else {\r\n this.setControllerPosition(resizeDiv, tdElement, 'bottom', {left: 0, top: 0});\r\n }\r\n },\r\n\r\n setCellInfo: function (tdElement, reset) {\r\n const contextTable = this.context.table;\r\n const table = contextTable._element = this.plugins.table._selectedTable || this.util.getParentElement(tdElement, 'TABLE');\r\n\r\n if (/THEAD/i.test(table.firstElementChild.nodeName)) {\r\n this.util.addClass(contextTable.headerButton, 'active');\r\n } else {\r\n this.util.removeClass(contextTable.headerButton, 'active');\r\n }\r\n\r\n if (reset || contextTable._physical_cellCnt === 0) {\r\n if (contextTable._tdElement !== tdElement) {\r\n contextTable._tdElement = tdElement;\r\n contextTable._trElement = tdElement.parentNode;\r\n }\r\n\r\n const rows = contextTable._trElements = table.rows;\r\n const cellIndex = tdElement.cellIndex;\r\n\r\n let cellCnt = 0;\r\n for (let i = 0, cells = rows[0].cells, len = rows[0].cells.length; i < len; i++) {\r\n cellCnt += cells[i].colSpan;\r\n }\r\n\r\n // row cnt, row index\r\n const rowIndex = contextTable._rowIndex = contextTable._trElement.rowIndex;\r\n contextTable._rowCnt = rows.length;\r\n\r\n // cell cnt, physical cell index\r\n contextTable._physical_cellCnt = contextTable._trElement.cells.length;\r\n contextTable._logical_cellCnt = cellCnt;\r\n contextTable._physical_cellIndex = cellIndex;\r\n\r\n // span\r\n contextTable._current_colSpan = contextTable._tdElement.colSpan - 1;\r\n contextTable._current_rowSpan - contextTable._trElement.cells[cellIndex].rowSpan - 1;\r\n\r\n // find logcal cell index\r\n let rowSpanArr = [];\r\n let spanIndex = [];\r\n for (let i = 0, cells, colSpan; i <= rowIndex; i++) {\r\n cells = rows[i].cells;\r\n colSpan = 0;\r\n for (let c = 0, cLen = cells.length, cell, cs, rs, logcalIndex; c < cLen; c++) {\r\n cell = cells[c];\r\n cs = cell.colSpan - 1;\r\n rs = cell.rowSpan - 1;\r\n logcalIndex = c + colSpan;\r\n\r\n if (spanIndex.length > 0) {\r\n for (let r = 0, arr; r < spanIndex.length; r++) {\r\n arr = spanIndex[r];\r\n if (arr.row > i) continue;\r\n if (logcalIndex >= arr.index) {\r\n colSpan += arr.cs;\r\n logcalIndex += arr.cs;\r\n arr.rs -= 1;\r\n arr.row = i + 1;\r\n if (arr.rs < 1) {\r\n spanIndex.splice(r, 1);\r\n r--;\r\n } \r\n } else if (c === cLen - 1) {\r\n arr.rs -= 1;\r\n arr.row = i + 1;\r\n if (arr.rs < 1) {\r\n spanIndex.splice(r, 1);\r\n r--;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // logcal cell index\r\n if (i === rowIndex && c === cellIndex) {\r\n contextTable._logical_cellIndex = logcalIndex;\r\n break;\r\n }\r\n\r\n if (rs > 0) {\r\n rowSpanArr.push({\r\n index: logcalIndex,\r\n cs: cs + 1,\r\n rs: rs,\r\n row: -1\r\n });\r\n }\r\n \r\n colSpan += cs;\r\n }\r\n\r\n spanIndex = spanIndex.concat(rowSpanArr).sort(function (a, b) {return a.index - b.index;});\r\n rowSpanArr = [];\r\n }\r\n\r\n rowSpanArr = null;\r\n spanIndex = null;\r\n }\r\n },\r\n\r\n editTable: function (type, option) {\r\n const tablePlugin = this.plugins.table;\r\n const contextTable = this.context.table;\r\n const table = contextTable._element;\r\n const isRow = type === 'row';\r\n\r\n if (isRow) {\r\n const tableAttr = contextTable._trElement.parentNode;\r\n if (/^THEAD$/i.test(tableAttr.nodeName)) {\r\n if (option === 'up') {\r\n return;\r\n } else if (!tableAttr.nextElementSibling || !/^TBODY$/i.test(tableAttr.nextElementSibling.nodeName)) {\r\n table.innerHTML += '<tbody><tr>' + tablePlugin.createCells.call(this, 'td', contextTable._logical_cellCnt, false) + '</tr></tbody>';\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // multi\r\n if (tablePlugin._ref) {\r\n const positionCell = contextTable._tdElement;\r\n const selectedCells = tablePlugin._selectedCells;\r\n // multi - row\r\n if (isRow) {\r\n // remove row\r\n if (!option) {\r\n let row = selectedCells[0].parentNode;\r\n const removeCells = [selectedCells[0]];\r\n\r\n for (let i = 1, len = selectedCells.length, cell; i < len; i++) {\r\n cell = selectedCells[i];\r\n if (row !== cell.parentNode) {\r\n removeCells.push(cell);\r\n row = cell.parentNode;\r\n }\r\n }\r\n\r\n for (let i = 0, len = removeCells.length; i < len; i++) {\r\n tablePlugin.setCellInfo.call(this, removeCells[i], true);\r\n tablePlugin.editRow.call(this, option);\r\n }\r\n } else { // edit row\r\n tablePlugin.setCellInfo.call(this, option === 'up' ? selectedCells[0] : selectedCells[selectedCells.length - 1], true);\r\n tablePlugin.editRow.call(this, option, positionCell);\r\n }\r\n } else { // multi - cell\r\n const firstRow = selectedCells[0].parentNode;\r\n // remove cell\r\n if (!option) {\r\n const removeCells = [selectedCells[0]];\r\n \r\n for (let i = 1, len = selectedCells.length, cell; i < len; i++) {\r\n cell = selectedCells[i];\r\n if (firstRow === cell.parentNode) {\r\n removeCells.push(cell);\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n for (let i = 0, len = removeCells.length; i < len; i++) {\r\n tablePlugin.setCellInfo.call(this, removeCells[i], true);\r\n tablePlugin.editCell.call(this, option);\r\n }\r\n } else { // edit cell\r\n let rightCell = null;\r\n\r\n for (let i = 0, len = selectedCells.length - 1; i < len; i++) {\r\n if (firstRow !== selectedCells[i + 1].parentNode) {\r\n rightCell = selectedCells[i];\r\n break;\r\n }\r\n }\r\n\r\n tablePlugin.setCellInfo.call(this, option === 'left' ? selectedCells[0] : rightCell || selectedCells[0], true);\r\n tablePlugin.editCell.call(this, option, positionCell);\r\n }\r\n }\r\n\r\n if (!option) tablePlugin.init.call(this);\r\n } // one\r\n else {\r\n tablePlugin[isRow ? 'editRow' : 'editCell'].call(this, option);\r\n }\r\n\r\n // after remove\r\n if (!option) {\r\n const children = table.children;\r\n for (let i = 0; i < children.length; i++) {\r\n if (children[i].children.length === 0) {\r\n this.util.removeItem(children[i]);\r\n i--;\r\n }\r\n }\r\n\r\n if (table.children.length === 0) this.util.removeItem(table);\r\n }\r\n },\r\n\r\n editRow: function (option, positionResetElement) {\r\n const contextTable = this.context.table;\r\n const remove = !option;\r\n\r\n const up = option === 'up';\r\n const originRowIndex = contextTable._rowIndex;\r\n const rowIndex = remove || up ? originRowIndex : originRowIndex + contextTable._current_rowSpan + 1;\r\n const sign = remove ? -1 : 1;\r\n \r\n const rows = contextTable._trElements;\r\n let cellCnt = contextTable._logical_cellCnt;\r\n\r\n for (let i = 0, len = originRowIndex + (remove ? -1 : 0), cell; i <= len; i++) {\r\n cell = rows[i].cells;\r\n if (cell.length === 0) return;\r\n \r\n for (let c = 0, cLen = cell.length, rs, cs; c < cLen; c++) {\r\n rs = cell[c].rowSpan;\r\n cs = cell[c].colSpan;\r\n if (rs < 2 && cs < 2) continue;\r\n\r\n if (rs + i > rowIndex && rowIndex > i) {\r\n cell[c].rowSpan = rs + sign;\r\n cellCnt -= cs;\r\n }\r\n }\r\n }\r\n\r\n if (remove) {\r\n const next = rows[originRowIndex + 1];\r\n if (next) {\r\n const spanCells = [];\r\n let cells = rows[originRowIndex].cells;\r\n let colSpan = 0;\r\n\r\n for (let i = 0, len = cells.length, cell, logcalIndex; i < len; i++) {\r\n cell = cells[i];\r\n logcalIndex = i + colSpan;\r\n colSpan += cell.colSpan - 1;\r\n\r\n if (cell.rowSpan > 1) {\r\n cell.rowSpan -= 1;\r\n spanCells.push({cell: cell.cloneNode(false), index: logcalIndex});\r\n }\r\n }\r\n\r\n if (spanCells.length > 0) {\r\n let spanCell = spanCells.shift();\r\n cells = next.cells;\r\n colSpan = 0;\r\n\r\n for (let i = 0, len = cells.length, cell, logcalIndex; i < len; i++) {\r\n cell = cells[i];\r\n logcalIndex = i + colSpan;\r\n colSpan += cell.colSpan - 1;\r\n \r\n if (logcalIndex >= spanCell.index) {\r\n i--, colSpan--;\r\n colSpan += spanCell.cell.colSpan - 1;\r\n next.insertBefore(spanCell.cell, cell);\r\n spanCell = spanCells.shift();\r\n if (!spanCell) break;\r\n }\r\n }\r\n\r\n if (spanCell) {\r\n next.appendChild(spanCell.cell);\r\n for (let i = 0, len = spanCells.length; i < len; i++) {\r\n next.appendChild(spanCells[i].cell);\r\n }\r\n }\r\n }\r\n }\r\n\r\n contextTable._element.deleteRow(rowIndex);\r\n } else {\r\n const newRow = contextTable._element.insertRow(rowIndex);\r\n newRow.innerHTML = this.plugins.table.createCells.call(this, 'td', cellCnt, false);\r\n }\r\n\r\n if (!remove) {\r\n this.plugins.table.setPositionControllerDiv.call(this, positionResetElement || contextTable._tdElement, true);\r\n } else {\r\n this.controllersOff();\r\n }\r\n },\r\n\r\n editCell: function (option, positionResetElement) {\r\n const contextTable = this.context.table;\r\n const util = this.util;\r\n const remove = !option;\r\n\r\n const left = option === 'left';\r\n const colSpan = contextTable._current_colSpan;\r\n const cellIndex = remove || left ? contextTable._logical_cellIndex : contextTable._logical_cellIndex + colSpan + 1;\r\n\r\n const rows = contextTable._trElements;\r\n let rowSpanArr = [];\r\n let spanIndex = [];\r\n let passCell = 0;\r\n const removeCell = [];\r\n const removeSpanArr = [];\r\n\r\n for (let i = 0, len = contextTable._rowCnt, row, insertIndex, cells, newCell, applySpan, cellColSpan; i < len; i++) {\r\n row = rows[i];\r\n insertIndex = cellIndex;\r\n applySpan = false;\r\n cells = row.cells;\r\n cellColSpan = 0;\r\n\r\n for (let c = 0, cell, cLen = cells.length, rs, cs, removeIndex; c < cLen; c++) {\r\n cell = cells[c];\r\n if (!cell) break;\r\n\r\n rs = cell.rowSpan - 1;\r\n cs = cell.colSpan - 1;\r\n\r\n if (!remove) {\r\n if (c >= insertIndex) break;\r\n if (cs > 0) {\r\n if (passCell < 1 && cs + c >= insertIndex) {\r\n cell.colSpan += 1;\r\n insertIndex = null;\r\n passCell = rs + 1;\r\n break;\r\n }\r\n\r\n insertIndex -= cs;\r\n }\r\n\r\n if (!applySpan) {\r\n for (let r = 0, arr; r < spanIndex.length; r++) {\r\n arr = spanIndex[r];\r\n insertIndex -= arr.cs;\r\n arr.rs -= 1;\r\n if (arr.rs < 1) {\r\n spanIndex.splice(r, 1);\r\n r--;\r\n } \r\n }\r\n applySpan = true;\r\n }\r\n } else {\r\n removeIndex = c + cellColSpan;\r\n\r\n if (spanIndex.length > 0) {\r\n const lastCell = !cells[c + 1];\r\n for (let r = 0, arr; r < spanIndex.length; r++) {\r\n arr = spanIndex[r];\r\n if (arr.row > i) continue;\r\n\r\n if (removeIndex >= arr.index) {\r\n cellColSpan += arr.cs;\r\n removeIndex = c + cellColSpan;\r\n arr.rs -= 1;\r\n arr.row = i + 1;\r\n if (arr.rs < 1) {\r\n spanIndex.splice(r, 1);\r\n r--;\r\n } \r\n } else if (lastCell) {\r\n arr.rs -= 1;\r\n arr.row = i + 1;\r\n if (arr.rs < 1) {\r\n spanIndex.splice(r, 1);\r\n r--;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (rs > 0) {\r\n rowSpanArr.push({\r\n rs: rs,\r\n cs: cs + 1,\r\n index: removeIndex,\r\n row: -1\r\n });\r\n }\r\n\r\n if (removeIndex >= insertIndex && removeIndex + cs <= insertIndex + colSpan) {\r\n removeCell.push(cell);\r\n } else if (removeIndex <= insertIndex + colSpan && removeIndex + cs >= insertIndex) {\r\n cell.colSpan -= util.getOverlapRangeAtIndex(cellIndex, cellIndex + colSpan, removeIndex, removeIndex + cs); \r\n } else if (rs > 0 && (removeIndex < insertIndex || removeIndex + cs > insertIndex + colSpan)) {\r\n removeSpanArr.push({\r\n cell: cell,\r\n i: i,\r\n rs: i + rs\r\n });\r\n }\r\n\r\n cellColSpan += cs;\r\n }\r\n }\r\n\r\n spanIndex = spanIndex.concat(rowSpanArr).sort(function (a, b) {return a.index - b.index;});\r\n rowSpanArr = [];\r\n\r\n if (!remove) {\r\n if (passCell > 0) {\r\n passCell -= 1;\r\n continue;\r\n }\r\n\r\n if (insertIndex !== null && cells.length > 0) {\r\n newCell = this.plugins.table.createCells.call(this, cells[0].nodeName, 0, true);\r\n newCell = row.insertBefore(newCell, cells[insertIndex]);\r\n }\r\n }\r\n }\r\n\r\n if (remove) {\r\n let removeFirst, removeEnd;\r\n for (let r = 0, rLen = removeCell.length, row; r < rLen; r++) {\r\n row = removeCell[r].parentNode;\r\n util.removeItem(removeCell[r]);\r\n if (row.cells.length === 0) {\r\n if (!removeFirst) removeFirst = util.getArrayIndex(rows, row);\r\n removeEnd = util.getArrayIndex(rows, row);\r\n util.removeItem(row);\r\n }\r\n }\r\n\r\n for (let c = 0, cLen = removeSpanArr.length, rowSpanCell; c < cLen; c++) {\r\n rowSpanCell = removeSpanArr[c];\r\n rowSpanCell.cell.rowSpan = util.getOverlapRangeAtIndex(removeFirst, removeEnd, rowSpanCell.i, rowSpanCell.rs);\r\n }\r\n\r\n this.controllersOff();\r\n } else {\r\n this.plugins.table.setPositionControllerDiv.call(this, positionResetElement || contextTable._tdElement, true);\r\n }\r\n },\r\n\r\n _closeSplitMenu: null,\r\n openSplitMenu: function () {\r\n this.util.addClass(this.context.table.splitButton, 'on');\r\n this.context.table.splitMenu.style.display = 'inline-table';\r\n\r\n this.plugins.table._closeSplitMenu = function () {\r\n this.util.removeClass(this.context.table.splitButton, 'on');\r\n this.context.table.splitMenu.style.display = 'none';\r\n this.removeDocEvent('click', this.plugins.table._closeSplitMenu);\r\n this.plugins.table._closeSplitMenu = null;\r\n }.bind(this);\r\n\r\n this.addDocEvent('click', this.plugins.table._closeSplitMenu);\r\n },\r\n\r\n splitCells: function (direction) {\r\n const util = this.util;\r\n const vertical = direction === 'vertical';\r\n const contextTable = this.context.table;\r\n const currentCell = contextTable._tdElement;\r\n const rows = contextTable._trElements;\r\n const currentRow = contextTable._trElement;\r\n const index = contextTable._logical_cellIndex;\r\n const rowIndex = contextTable._rowIndex;\r\n const newCell = this.plugins.table.createCells.call(this, currentCell.nodeName, 0, true);\r\n\r\n // vertical\r\n if (vertical) {\r\n const currentColSpan = currentCell.colSpan;\r\n newCell.rowSpan = currentCell.rowSpan;\r\n\r\n // colspan > 1\r\n if (currentColSpan > 1) {\r\n newCell.colSpan = this._w.Math.floor(currentColSpan/2);\r\n currentCell.colSpan = currentColSpan - newCell.colSpan;\r\n currentRow.insertBefore(newCell, currentCell.nextElementSibling);\r\n } else { // colspan - 1\r\n let rowSpanArr = [];\r\n let spanIndex = [];\r\n\r\n for (let i = 0, len = contextTable._rowCnt, cells, colSpan; i < len; i++) {\r\n cells = rows[i].cells;\r\n colSpan = 0;\r\n for (let c = 0, cLen = cells.length, cell, cs, rs, logcalIndex; c < cLen; c++) {\r\n cell = cells[c];\r\n cs = cell.colSpan - 1;\r\n rs = cell.rowSpan - 1;\r\n logcalIndex = c + colSpan;\r\n\r\n if (spanIndex.length > 0) {\r\n for (let r = 0, arr; r < spanIndex.length; r++) {\r\n arr = spanIndex[r];\r\n if (arr.row > i) continue;\r\n if (logcalIndex >= arr.index) {\r\n colSpan += arr.cs;\r\n logcalIndex += arr.cs;\r\n arr.rs -= 1;\r\n arr.row = i + 1;\r\n if (arr.rs < 1) {\r\n spanIndex.splice(r, 1);\r\n r--;\r\n } \r\n } else if (c === cLen - 1) {\r\n arr.rs -= 1;\r\n arr.row = i + 1;\r\n if (arr.rs < 1) {\r\n spanIndex.splice(r, 1);\r\n r--;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (logcalIndex <= index && rs > 0) {\r\n rowSpanArr.push({\r\n index: logcalIndex,\r\n cs: cs + 1,\r\n rs: rs,\r\n row: -1\r\n });\r\n }\r\n\r\n if (cell !== currentCell && logcalIndex <= index && logcalIndex + cs >= index + currentColSpan - 1) {\r\n cell.colSpan += 1;\r\n break;\r\n }\r\n\r\n if (logcalIndex > index) break;\r\n \r\n colSpan += cs;\r\n }\r\n\r\n spanIndex = spanIndex.concat(rowSpanArr).sort(function (a, b) {return a.index - b.index;});\r\n rowSpanArr = [];\r\n }\r\n\r\n currentRow.insertBefore(newCell, currentCell.nextElementSibling);\r\n }\r\n } else { // horizontal\r\n const currentRowSpan = currentCell.rowSpan;\r\n newCell.colSpan = currentCell.colSpan;\r\n\r\n // rowspan > 1\r\n if (currentRowSpan > 1) {\r\n newCell.rowSpan = this._w.Math.floor(currentRowSpan/2);\r\n const newRowSpan = currentRowSpan - newCell.rowSpan;\r\n\r\n const rowSpanArr = [];\r\n const nextRowIndex = util.getArrayIndex(rows, currentRow) + newRowSpan;\r\n\r\n for (let i = 0, cells, colSpan; i < nextRowIndex; i++) {\r\n cells = rows[i].cells;\r\n colSpan = 0;\r\n for (let c = 0, cLen = cells.length, cell, cs, logcalIndex; c < cLen; c++) {\r\n logcalIndex = c + colSpan;\r\n if (logcalIndex >= index) break;\r\n\r\n cell = cells[c];\r\n cs = cell.rowSpan - 1;\r\n if (cs > 0 && cs + i >= nextRowIndex && logcalIndex < index) {\r\n rowSpanArr.push({\r\n index: logcalIndex,\r\n cs: cell.colSpan\r\n });\r\n }\r\n colSpan += cell.colSpan - 1;\r\n }\r\n }\r\n\r\n const nextRow = rows[nextRowIndex];\r\n const nextCells = nextRow.cells;\r\n let rs = rowSpanArr.shift();\r\n\r\n for (let c = 0, cLen = nextCells.length, colSpan = 0, cell, cs, logcalIndex, insertIndex; c < cLen; c++) {\r\n logcalIndex = c + colSpan;\r\n cell = nextCells[c];\r\n cs = cell.colSpan - 1;\r\n insertIndex = logcalIndex + cs + 1;\r\n\r\n if (rs && insertIndex >= rs.index) {\r\n colSpan += rs.cs;\r\n insertIndex += rs.cs;\r\n rs = rowSpanArr.shift();\r\n }\r\n \r\n if (insertIndex >= index || c === cLen - 1) {\r\n nextRow.insertBefore(newCell, cell.nextElementSibling);\r\n break;\r\n }\r\n\r\n colSpan += cs;\r\n }\r\n\r\n currentCell.rowSpan = newRowSpan;\r\n } else { // rowspan - 1\r\n newCell.rowSpan = currentCell.rowSpan;\r\n const newRow = util.createElement('TR');\r\n newRow.appendChild(newCell);\r\n\r\n for (let i = 0, cells; i < rowIndex; i++) {\r\n cells = rows[i].cells;\r\n if (cells.length === 0) return;\r\n\r\n for (let c = 0, cLen = cells.length; c < cLen; c++) {\r\n if (i + cells[c].rowSpan - 1 >= rowIndex) {\r\n cells[c].rowSpan += 1;\r\n }\r\n }\r\n }\r\n\r\n const physicalIndex = contextTable._physical_cellIndex;\r\n const cells = currentRow.cells;\r\n\r\n for (let c = 0, cLen = cells.length; c < cLen; c++) {\r\n if (c === physicalIndex) continue; \r\n cells[c].rowSpan += 1; \r\n }\r\n\r\n currentRow.parentNode.insertBefore(newRow, currentRow.nextElementSibling);\r\n }\r\n }\r\n\r\n this.focusEdge(currentCell);\r\n this.plugins.table.setPositionControllerDiv.call(this, currentCell, true);\r\n },\r\n\r\n mergeCells: function () {\r\n const tablePlugin = this.plugins.table;\r\n const contextTable = this.context.table;\r\n const util = this.util;\r\n\r\n const ref = tablePlugin._ref;\r\n const selectedCells = tablePlugin._selectedCells;\r\n const mergeCell = selectedCells[0];\r\n \r\n let emptyRowFirst = null;\r\n let emptyRowLast = null;\r\n let cs = (ref.ce - ref.cs) + 1;\r\n let rs = (ref.re - ref.rs) + 1;\r\n let mergeHTML = '';\r\n let row = null;\r\n\r\n for (let i = 1, len = selectedCells.length, cell, ch; i < len; i++) {\r\n cell = selectedCells[i];\r\n if (row !== cell.parentNode) row = cell.parentNode;\r\n\r\n ch = cell.children;\r\n for (let c = 0, cLen = ch.length; c < cLen; c++) {\r\n if (util.isFormatElement(ch[c]) && util.onlyZeroWidthSpace(ch[c].textContent)) {\r\n util.removeItem(ch[c]);\r\n } \r\n }\r\n\r\n mergeHTML += cell.innerHTML;\r\n util.removeItem(cell);\r\n\r\n if (row.cells.length === 0) {\r\n if (!emptyRowFirst) emptyRowFirst = row;\r\n else emptyRowLast = row;\r\n rs -= 1;\r\n }\r\n }\r\n\r\n if (emptyRowFirst) {\r\n const rows = contextTable._trElements;\r\n const rowIndexFirst = util.getArrayIndex(rows, emptyRowFirst);\r\n const rowIndexLast = util.getArrayIndex(rows, emptyRowLast || emptyRowFirst);\r\n const removeRows = [];\r\n \r\n for (let i = 0, cells; i <= rowIndexLast; i++) {\r\n cells = rows[i].cells;\r\n if (cells.length === 0) {\r\n removeRows.push(rows[i]);\r\n continue;\r\n }\r\n \r\n for (let c = 0, cLen = cells.length, cell, rs; c < cLen; c++) {\r\n cell = cells[c];\r\n rs = cell.rowSpan - 1;\r\n if (rs > 0 && i + rs >= rowIndexFirst) {\r\n cell.rowSpan -= util.getOverlapRangeAtIndex(rowIndexFirst, rowIndexLast, i, i + rs);\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0, len = removeRows.length; i < len; i++) {\r\n util.removeItem(removeRows[i]);\r\n }\r\n }\r\n\r\n mergeCell.innerHTML += mergeHTML;\r\n mergeCell.colSpan = cs;\r\n mergeCell.rowSpan = rs;\r\n\r\n this.controllersOff();\r\n tablePlugin.setActiveButton.call(this, true, false);\r\n tablePlugin.call_controller_tableEdit.call(this, mergeCell);\r\n\r\n util.addClass(mergeCell, 'se-table-selected-cell');\r\n this.focusEdge(mergeCell);\r\n },\r\n\r\n toggleHeader: function () {\r\n const util = this.util;\r\n const headerButton = this.context.table.headerButton;\r\n const active = util.hasClass(headerButton, 'active');\r\n const table = this.context.table._element;\r\n\r\n if (!active) {\r\n const header = util.createElement('THEAD');\r\n header.innerHTML = '<tr>' + this.plugins.table.createCells.call(this, 'th', this.context.table._logical_cellCnt, false) + '</tr>';\r\n table.insertBefore(header, table.firstElementChild);\r\n } else {\r\n util.removeItem(table.querySelector('thead'));\r\n }\r\n\r\n util.toggleClass(headerButton, 'active');\r\n\r\n if (/TH/i.test(this.context.table._tdElement.nodeName)) {\r\n this.controllersOff();\r\n } else {\r\n this.plugins.table.setPositionControllerDiv.call(this, this.context.table._tdElement, false);\r\n }\r\n },\r\n\r\n setTableStyle: function (styles) {\r\n const contextTable = this.context.table;\r\n const tableElement = contextTable._element;\r\n let icon, span, sizeIcon, text;\r\n\r\n if (styles.indexOf('width') > -1) {\r\n icon = contextTable.resizeButton.firstElementChild;\r\n span = contextTable.resizeText;\r\n\r\n if (!contextTable._maxWidth) {\r\n sizeIcon = contextTable.icons.expansion;\r\n text = contextTable.maxText;\r\n contextTable.columnFixedButton.style.display = 'none';\r\n this.util.removeClass(tableElement, 'se-table-size-100');\r\n this.util.addClass(tableElement, 'se-table-size-auto');\r\n } else {\r\n sizeIcon = contextTable.icons.reduction;\r\n text = contextTable.minText;\r\n contextTable.columnFixedButton.style.display = 'block';\r\n this.util.removeClass(tableElement, 'se-table-size-auto');\r\n this.util.addClass(tableElement, 'se-table-size-100');\r\n }\r\n \r\n this.util.changeElement(icon, sizeIcon);\r\n this.util.changeTxt(span, text);\r\n }\r\n\r\n if (styles.indexOf('column') > -1) {\r\n if (!contextTable._fixedColumn) {\r\n this.util.removeClass(tableElement, 'se-table-layout-fixed');\r\n this.util.addClass(tableElement, 'se-table-layout-auto');\r\n this.util.removeClass(contextTable.columnFixedButton, 'active');\r\n } else {\r\n this.util.removeClass(tableElement, 'se-table-layout-auto');\r\n this.util.addClass(tableElement, 'se-table-layout-fixed');\r\n this.util.addClass(contextTable.columnFixedButton, 'active');\r\n }\r\n \r\n }\r\n },\r\n\r\n setActiveButton: function (fixedCell, selectedCell) {\r\n const contextTable = this.context.table;\r\n\r\n if (/^TH$/i.test(fixedCell.nodeName)) {\r\n contextTable.insertRowAboveButton.setAttribute('disabled', true);\r\n contextTable.insertRowBelowButton.setAttribute('disabled', true);\r\n } else {\r\n contextTable.insertRowAboveButton.removeAttribute('disabled');\r\n contextTable.insertRowBelowButton.removeAttribute('disabled');\r\n }\r\n\r\n if (!selectedCell || fixedCell === selectedCell) {\r\n contextTable.splitButton.removeAttribute('disabled');\r\n contextTable.mergeButton.setAttribute('disabled', true);\r\n } else {\r\n contextTable.splitButton.setAttribute('disabled', true);\r\n contextTable.mergeButton.removeAttribute('disabled');\r\n }\r\n },\r\n\r\n // multi selecte\r\n _bindOnSelect: null,\r\n _bindOffSelect: null,\r\n _bindOffShift: null,\r\n _selectedCells: null,\r\n _shift: false,\r\n _fixedCell: null,\r\n _fixedCellName: null,\r\n _selectedCell: null,\r\n _selectedTable: null,\r\n _ref: null,\r\n _toggleEditor: function (enabled) {\r\n this.context.element.wysiwyg.setAttribute('contenteditable', enabled);\r\n if (enabled) this.util.removeClass(this.context.element.wysiwyg, 'se-disabled');\r\n else this.util.addClass(this.context.element.wysiwyg, 'se-disabled');\r\n },\r\n\r\n _offCellMultiSelect: function (e) {\r\n e.stopPropagation();\r\n const tablePlugin = this.plugins.table;\r\n\r\n if (!tablePlugin._shift) {\r\n tablePlugin._removeEvents.call(this);\r\n tablePlugin._toggleEditor.call(this, true);\r\n } else if (tablePlugin._initBind) {\r\n this._wd.removeEventListener('touchmove', tablePlugin._initBind);\r\n tablePlugin._initBind = null;\r\n }\r\n\r\n if (!tablePlugin._fixedCell || !tablePlugin._selectedTable) return;\r\n \r\n tablePlugin.setActiveButton.call(this, tablePlugin._fixedCell, tablePlugin._selectedCell);\r\n tablePlugin.call_controller_tableEdit.call(this, tablePlugin._selectedCell || tablePlugin._fixedCell);\r\n\r\n tablePlugin._selectedCells = tablePlugin._selectedTable.querySelectorAll('.se-table-selected-cell');\r\n if (tablePlugin._selectedCell && tablePlugin._fixedCell) this.focusEdge(tablePlugin._selectedCell);\r\n\r\n if (!tablePlugin._shift) {\r\n tablePlugin._fixedCell = null;\r\n tablePlugin._selectedCell = null;\r\n tablePlugin._fixedCellName = null;\r\n }\r\n },\r\n\r\n _onCellMultiSelect: function (e) {\r\n this._antiBlur = true;\r\n const tablePlugin = this.plugins.table;\r\n const target = this.util.getParentElement(e.target, this.util.isCell);\r\n\r\n if (tablePlugin._shift) {\r\n if (target === tablePlugin._fixedCell) tablePlugin._toggleEditor.call(this, true);\r\n else tablePlugin._toggleEditor.call(this, false);\r\n } else if (!tablePlugin._ref) {\r\n if (target === tablePlugin._fixedCell) return;\r\n else tablePlugin._toggleEditor.call(this, false);\r\n }\r\n\r\n if (!target || target === tablePlugin._selectedCell || tablePlugin._fixedCellName !== target.nodeName || \r\n tablePlugin._selectedTable !== this.util.getParentElement(target, 'TABLE')) {\r\n return;\r\n }\r\n\r\n tablePlugin._selectedCell = target;\r\n tablePlugin._setMultiCells.call(this, tablePlugin._fixedCell, target);\r\n },\r\n\r\n _setMultiCells: function (startCell, endCell) {\r\n const tablePlugin = this.plugins.table;\r\n const rows = tablePlugin._selectedTable.rows;\r\n const util = this.util;\r\n\r\n const selectedCells = tablePlugin._selectedTable.querySelectorAll('.se-table-selected-cell');\r\n for (let i = 0, len = selectedCells.length; i < len; i++) {\r\n util.removeClass(selectedCells[i], 'se-table-selected-cell');\r\n }\r\n\r\n if (startCell === endCell) {\r\n util.addClass(startCell, 'se-table-selected-cell');\r\n if (!tablePlugin._shift) return;\r\n }\r\n\r\n let findSelectedCell = true;\r\n let spanIndex = [];\r\n let rowSpanArr = [];\r\n const ref = tablePlugin._ref = {_i: 0, cs: null, ce: null, rs: null, re: null};\r\n\r\n for (let i = 0, len = rows.length, cells, colSpan; i < len; i++) {\r\n cells = rows[i].cells;\r\n colSpan = 0;\r\n\r\n for (let c = 0, cLen = cells.length, cell, logcalIndex, cs, rs; c < cLen; c++) {\r\n cell = cells[c];\r\n cs = cell.colSpan - 1;\r\n rs = cell.rowSpan - 1;\r\n logcalIndex = c + colSpan;\r\n\r\n if (spanIndex.length > 0) {\r\n for (let r = 0, arr; r < spanIndex.length; r++) {\r\n arr = spanIndex[r];\r\n if (arr.row > i) continue;\r\n if (logcalIndex >= arr.index) {\r\n colSpan += arr.cs;\r\n logcalIndex += arr.cs;\r\n arr.rs -= 1;\r\n arr.row = i + 1;\r\n if (arr.rs < 1) {\r\n spanIndex.splice(r, 1);\r\n r--;\r\n }\r\n } else if (c === cLen - 1) {\r\n arr.rs -= 1;\r\n arr.row = i + 1;\r\n if (arr.rs < 1) {\r\n spanIndex.splice(r, 1);\r\n r--;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (findSelectedCell) {\r\n if (cell === startCell || cell === endCell) {\r\n ref.cs = ref.cs !== null && ref.cs < logcalIndex ? ref.cs : logcalIndex;\r\n ref.ce = ref.ce !== null && ref.ce > logcalIndex + cs ? ref.ce : logcalIndex + cs;\r\n ref.rs = ref.rs !== null && ref.rs < i ? ref.rs : i;\r\n ref.re = ref.re !== null && ref.re > i + rs ? ref.re : i + rs;\r\n ref._i += 1;\r\n }\r\n \r\n if (ref._i === 2) {\r\n findSelectedCell = false;\r\n spanIndex = [];\r\n rowSpanArr = [];\r\n i = -1;\r\n break;\r\n }\r\n } else if (util.getOverlapRangeAtIndex(ref.cs, ref.ce, logcalIndex, logcalIndex + cs) && util.getOverlapRangeAtIndex(ref.rs, ref.re, i, i + rs)) {\r\n const newCs = ref.cs < logcalIndex ? ref.cs : logcalIndex;\r\n const newCe = ref.ce > logcalIndex + cs ? ref.ce : logcalIndex + cs;\r\n const newRs = ref.rs < i ? ref.rs : i;\r\n const newRe = ref.re > i + rs ? ref.re : i + rs;\r\n\r\n if (ref.cs !== newCs || ref.ce !== newCe || ref.rs !== newRs || ref.re !== newRe) {\r\n ref.cs = newCs;\r\n ref.ce = newCe;\r\n ref.rs = newRs;\r\n ref.re = newRe;\r\n i = -1;\r\n\r\n spanIndex = [];\r\n rowSpanArr = [];\r\n break;\r\n }\r\n\r\n util.addClass(cell, 'se-table-selected-cell');\r\n }\r\n\r\n if (rs > 0) {\r\n rowSpanArr.push({\r\n index: logcalIndex,\r\n cs: cs + 1,\r\n rs: rs,\r\n row: -1\r\n });\r\n }\r\n\r\n colSpan += cell.colSpan - 1;\r\n }\r\n\r\n spanIndex = spanIndex.concat(rowSpanArr).sort(function (a, b) {return a.index - b.index;});\r\n rowSpanArr = [];\r\n }\r\n },\r\n\r\n _removeEvents: function () {\r\n const tablePlugin = this.plugins.table;\r\n\r\n if (tablePlugin._initBind) {\r\n this._wd.removeEventListener('touchmove', tablePlugin._initBind);\r\n tablePlugin._initBind = null;\r\n }\r\n\r\n if (tablePlugin._bindOnSelect) {\r\n this._wd.removeEventListener('mousedown', tablePlugin._bindOnSelect);\r\n this._wd.removeEventListener('mousemove', tablePlugin._bindOnSelect);\r\n tablePlugin._bindOnSelect = null;\r\n }\r\n\r\n if (tablePlugin._bindOffSelect) {\r\n this._wd.removeEventListener('mouseup', tablePlugin._bindOffSelect);\r\n tablePlugin._bindOffSelect = null;\r\n }\r\n\r\n if (tablePlugin._bindOffShift) {\r\n this._wd.removeEventListener('keyup', tablePlugin._bindOffShift);\r\n tablePlugin._bindOffShift = null;\r\n }\r\n },\r\n\r\n _initBind: null,\r\n onTableCellMultiSelect: function (tdElement, shift) {\r\n const tablePlugin = this.plugins.table;\r\n\r\n tablePlugin._removeEvents.call(this);\r\n this.controllersOff();\r\n\r\n tablePlugin._shift = shift;\r\n tablePlugin._fixedCell = tdElement;\r\n tablePlugin._fixedCellName = tdElement.nodeName;\r\n tablePlugin._selectedTable = this.util.getParentElement(tdElement, 'TABLE');\r\n\r\n const selectedCells = tablePlugin._selectedTable.querySelectorAll('.se-table-selected-cell');\r\n for (let i = 0, len = selectedCells.length; i < len; i++) {\r\n this.util.removeClass(selectedCells[i], 'se-table-selected-cell');\r\n }\r\n\r\n this.util.addClass(tdElement, 'se-table-selected-cell');\r\n \r\n tablePlugin._bindOnSelect = tablePlugin._onCellMultiSelect.bind(this);\r\n tablePlugin._bindOffSelect = tablePlugin._offCellMultiSelect.bind(this);\r\n\r\n if (!shift) {\r\n this._wd.addEventListener('mousemove', tablePlugin._bindOnSelect, false);\r\n } else {\r\n tablePlugin._bindOffShift = function () {\r\n this.controllersOn(this.context.table.resizeDiv, this.context.table.tableController, this.plugins.table.init.bind(this), tdElement, 'table');\r\n if (!tablePlugin._ref) this.controllersOff();\r\n }.bind(this);\r\n\r\n this._wd.addEventListener('keyup', tablePlugin._bindOffShift, false);\r\n this._wd.addEventListener('mousedown', tablePlugin._bindOnSelect, false);\r\n }\r\n\r\n this._wd.addEventListener('mouseup', tablePlugin._bindOffSelect, false);\r\n tablePlugin._initBind = tablePlugin.init.bind(this);\r\n this._wd.addEventListener('touchmove', tablePlugin._initBind, false);\r\n },\r\n\r\n onClick_tableController: function (e) {\r\n e.stopPropagation();\r\n const target = e.target.getAttribute('data-command') ? e.target : e.target.parentNode;\r\n\r\n if (target.getAttribute('disabled')) return;\r\n\r\n const command = target.getAttribute('data-command');\r\n const value = target.getAttribute('data-value');\r\n const option = target.getAttribute('data-option');\r\n const tablePlugin = this.plugins.table;\r\n \r\n if (typeof tablePlugin._closeSplitMenu === 'function') {\r\n tablePlugin._closeSplitMenu();\r\n if (command === 'onsplit') return;\r\n }\r\n\r\n if (!command) return;\r\n\r\n e.preventDefault();\r\n const contextTable = this.context.table;\r\n\r\n switch (command) {\r\n case 'insert':\r\n case 'delete':\r\n tablePlugin.editTable.call(this, value, option);\r\n break;\r\n case 'header':\r\n tablePlugin.toggleHeader.call(this);\r\n break;\r\n case 'onsplit':\r\n tablePlugin.openSplitMenu.call(this);\r\n break;\r\n case 'split':\r\n tablePlugin.splitCells.call(this, value);\r\n break;\r\n case 'merge':\r\n tablePlugin.mergeCells.call(this);\r\n break;\r\n case 'resize':\r\n contextTable._maxWidth = !contextTable._maxWidth;\r\n tablePlugin.setTableStyle.call(this, 'width');\r\n tablePlugin.setPositionControllerTop.call(this, contextTable._element);\r\n tablePlugin.setPositionControllerDiv.call(this, contextTable._tdElement, tablePlugin._shift);\r\n break;\r\n case 'layout':\r\n contextTable._fixedColumn = !contextTable._fixedColumn;\r\n tablePlugin.setTableStyle.call(this, 'column');\r\n tablePlugin.setPositionControllerTop.call(this, contextTable._element);\r\n tablePlugin.setPositionControllerDiv.call(this, contextTable._tdElement, tablePlugin._shift);\r\n break;\r\n case 'remove':\r\n const emptyDiv = contextTable._element.parentNode;\r\n this.util.removeItem(contextTable._element);\r\n this.controllersOff();\r\n\r\n if (emptyDiv !== this.context.element.wysiwyg) this.util.removeItemAllParents(emptyDiv, function (current) { return current.childNodes.length === 0; }, null);\r\n this.focus();\r\n }\r\n\r\n // history stack\r\n this.history.push(false);\r\n }\r\n};\r\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'formatBlock',\n display: 'submenu',\n add: function (core, targetElement) {\n const context = core.context;\n context.formatBlock = {\n targetText: targetElement.querySelector('.txt'),\n targetTooltip: targetElement.parentNode.querySelector('.se-tooltip-text'),\n _formatList: null,\n currentFormat: ''\n };\n\n /** set submenu */\n let listDiv = this.setSubmenu(core);\n\n /** add event listeners */\n listDiv.querySelector('ul').addEventListener('click', this.pickUp.bind(core));\n context.formatBlock._formatList = listDiv.querySelectorAll('li button');\n\n /** append target button menu */\n core.initMenuTarget(this.name, targetElement, listDiv);\n\n /** empty memory */\n listDiv = null;\n },\n\n setSubmenu: function (core) {\n const option = core.options;\n const lang_toolbar = core.lang.toolbar;\n const listDiv = core.util.createElement('DIV');\n listDiv.className = 'se-submenu se-list-layer se-list-format';\n\n const defaultFormats = ['p', 'div', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n const formatList = !option.formats || option.formats.length === 0 ? defaultFormats : option.formats;\n\n let list = '<div class=\"se-list-inner\"><ul class=\"se-list-basic\">';\n for (let i = 0, len = formatList.length, format, tagName, command, name, h, attrs, className; i < len; i++) {\n format = formatList[i];\n \n if (typeof format === 'string' && defaultFormats.indexOf(format) > -1) {\n tagName = format.toLowerCase();\n command = tagName === 'blockquote' ? 'range' : tagName === 'pre' ? 'free' : 'replace';\n h = /^h/.test(tagName) ? tagName.match(/\\d+/)[0] : '';\n name = lang_toolbar['tag_' + (h ? 'h' : tagName)] + h;\n className = '';\n attrs = '';\n } else {\n tagName = format.tag.toLowerCase();\n command = format.command;\n name = format.name || tagName;\n className = format.class;\n attrs = className ? ' class=\"' + className + '\"' : '';\n }\n\n list += '<li>' +\n '<button type=\"button\" class=\"se-btn-list\" data-command=\"' + command + '\" data-value=\"' + tagName + '\" data-class=\"' + className + '\" title=\"' + name + '\" aria-label=\"' + name + '\">' +\n '<' + tagName + attrs + '>' + name + '</' + tagName + '>' +\n '</button></li>';\n }\n list += '</ul></div>';\n\n listDiv.innerHTML = list;\n\n return listDiv;\n },\n\n /**\n * @Override core\n */\n active: function (element) {\n let formatTitle = this.lang.toolbar.formats;\n const target = this.context.formatBlock.targetText;\n\n if (!element) {\n this.util.changeTxt(target, formatTitle);\n } else if (this.util.isFormatElement(element)) {\n const formatContext = this.context.formatBlock;\n const formatList = formatContext._formatList;\n const nodeName = element.nodeName.toLowerCase();\n const className = (element.className.match(/(\\s|^)__se__format__[^\\s]+/) || [''])[0].trim();\n\n for (let i = 0, len = formatList.length, f; i < len; i++) {\n f = formatList[i];\n if (nodeName === f.getAttribute('data-value') && className === f.getAttribute('data-class')) {\n formatTitle = f.title;\n break;\n }\n }\n\n this.util.changeTxt(target, formatTitle);\n target.setAttribute('data-value', nodeName);\n target.setAttribute('data-class', className);\n\n return true;\n }\n\n return false;\n },\n\n /**\n * @Override submenu\n */\n on: function () {\n const formatContext = this.context.formatBlock;\n const formatList = formatContext._formatList;\n const target = formatContext.targetText;\n const currentFormat = (target.getAttribute('data-value') || '') + (target.getAttribute('data-class') || '');\n\n if (currentFormat !== formatContext.currentFormat) {\n for (let i = 0, len = formatList.length, f; i < len; i++) {\n f = formatList[i];\n if (currentFormat === f.getAttribute('data-value') + f.getAttribute('data-class')) {\n this.util.addClass(f, 'active');\n } else {\n this.util.removeClass(f, 'active');\n }\n }\n\n formatContext.currentFormat = currentFormat;\n }\n },\n\n pickUp: function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n let target = e.target;\n let command = null, value = null, tag = null, className = '';\n \n while (!command && !/UL/i.test(target.tagName)) {\n command = target.getAttribute('data-command');\n value = target.getAttribute('data-value');\n className = target.getAttribute('data-class');\n if (command) {\n tag = target.firstChild;\n break;\n }\n target = target.parentNode;\n }\n\n if (!command) return;\n\n // blockquote\n if (command === 'range') {\n const rangeElement = tag.cloneNode(false);\n this.applyRangeFormatElement(rangeElement);\n }\n // free, replace\n else {\n let range = this.getRange();\n let selectedFormsts = this.getSelectedElementsAndComponents(false);\n\n if (selectedFormsts.length === 0) {\n range = this.getRange_addLine(range, null);\n selectedFormsts = this.getSelectedElementsAndComponents(false);\n if (selectedFormsts.length === 0) return;\n }\n\n const startOffset = range.startOffset;\n const endOffset = range.endOffset;\n\n const util = this.util;\n let first = selectedFormsts[0];\n let last = selectedFormsts[selectedFormsts.length - 1];\n const firstPath = util.getNodePath(range.startContainer, first, null, null);\n const lastPath = util.getNodePath(range.endContainer, last, null, null);\n \n // remove selected list\n const rlist = this.detachList(selectedFormsts, false);\n if (rlist.sc) first = rlist.sc;\n if (rlist.ec) last = rlist.ec;\n\n // change format tag\n this.setRange(util.getNodeFromPath(firstPath, first), startOffset, util.getNodeFromPath(lastPath, last), endOffset);\n const modifiedFormsts = this.getSelectedElementsAndComponents(false);\n\n // free format\n if (command === 'free') {\n const len = modifiedFormsts.length - 1;\n let parentNode = modifiedFormsts[len].parentNode;\n let freeElement = tag.cloneNode(false);\n const focusElement = freeElement;\n \n for (let i = len, f, html, before, next, inner, isComp, first = true; i >= 0; i--) {\n f = modifiedFormsts[i];\n if (f === (!modifiedFormsts[i + 1] ? null : modifiedFormsts[i + 1].parentNode)) continue;\n \n isComp = util.isComponent(f);\n html = isComp ? '' : f.innerHTML.replace(/(?!>)\\s+(?=<)|\\n/g, ' ');\n before = util.getParentElement(f, function (current) {\n return current.parentNode === parentNode;\n });\n \n if (parentNode !== f.parentNode || isComp) {\n if (util.isFormatElement(parentNode)) {\n parentNode.parentNode.insertBefore(freeElement, parentNode.nextSibling);\n parentNode = parentNode.parentNode;\n } else {\n parentNode.insertBefore(freeElement, before ? before.nextSibling : null);\n parentNode = f.parentNode;\n }\n\n next = freeElement.nextSibling;\n if (next && freeElement.nodeName === next.nodeName && util.isSameAttributes(freeElement, next)) {\n freeElement.innerHTML += '<BR>' + next.innerHTML;\n util.removeItem(next);\n }\n\n freeElement = tag.cloneNode(false);\n first = true;\n }\n \n inner = freeElement.innerHTML;\n freeElement.innerHTML = ((first || !html || !inner || /<br>$/i.test(html)) ? html : html + '<BR>') + inner;\n\n if (i === 0) {\n parentNode.insertBefore(freeElement, f);\n next = f.nextSibling;\n if (next && freeElement.nodeName === next.nodeName && util.isSameAttributes(freeElement, next)) {\n freeElement.innerHTML += '<BR>' + next.innerHTML;\n util.removeItem(next);\n }\n\n const prev = freeElement.previousSibling;\n if (prev && freeElement.nodeName === prev.nodeName && util.isSameAttributes(freeElement, prev)) {\n prev.innerHTML += '<BR>' + freeElement.innerHTML;\n util.removeItem(freeElement);\n }\n }\n\n if (!isComp) util.removeItem(f);\n if (!!html) first = false;\n }\n \n this.setRange(focusElement, 0, focusElement, 0);\n }\n // replace format\n else {\n for (let i = 0, len = modifiedFormsts.length, node, newFormat; i < len; i++) {\n node = modifiedFormsts[i];\n \n if ((node.nodeName.toLowerCase() !== value.toLowerCase() || (node.className.match(/(\\s|^)__se__format__[^\\s]+/) || [''])[0].trim() !== className) && !util.isComponent(node)) {\n newFormat = tag.cloneNode(false);\n util.copyFormatAttributes(newFormat, node);\n newFormat.innerHTML = node.innerHTML;\n \n node.parentNode.replaceChild(newFormat, node);\n }\n \n if (i === 0) first = newFormat || node;\n if (i === len - 1) last = newFormat || node;\n newFormat = null;\n }\n \n this.setRange(util.getNodeFromPath(firstPath, first), startOffset, util.getNodeFromPath(lastPath, last), endOffset);\n }\n\n // history stack\n this.history.push(false);\n }\n\n this.submenuOff();\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 20197 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'lineHeight',\n display: 'submenu',\n add: function (core, targetElement) {\n const context = core.context;\n context.lineHeight = {\n _sizeList: null,\n currentSize: -1\n };\n\n /** set submenu */\n let listDiv = this.setSubmenu(core);\n let listUl = listDiv.querySelector('ul');\n\n /** add event listeners */\n listUl.addEventListener('click', this.pickup.bind(core));\n\n context.lineHeight._sizeList = listUl.querySelectorAll('li button');\n\n /** append target button menu */\n core.initMenuTarget(this.name, targetElement, listDiv);\n\n /** empty memory */\n listDiv = null, listUl = null;\n },\n\n setSubmenu: function (core) {\n const option = core.options;\n const lang = core.lang;\n const listDiv = core.util.createElement('DIV');\n\n listDiv.className = 'se-submenu se-list-layer';\n\n const sizeList = !option.lineHeights ? [\n {text: '1', value: 1},\n {text: '1.15', value: 1.15},\n {text: '1.5', value: 1.5},\n {text: '2', value: 2}\n ] : option.lineHeights;\n\n let list = '<div class=\"se-list-inner\">' +\n '<ul class=\"se-list-basic\">' +\n '<li><button type=\"button\" class=\"default_value se-btn-list\" title=\"' + lang.toolbar.default + '\" aria-label=\"' + lang.toolbar.default + '\">(' + lang.toolbar.default + ')</button></li>';\n for (let i = 0, len = sizeList.length, size; i < len; i++) {\n size = sizeList[i];\n list += '<li><button type=\"button\" class=\"se-btn-list\" data-value=\"' + size.value + '\" title=\"' + size.text + '\" aria-label=\"' + size.text + '\">' + size.text + '</button></li>';\n }\n list += '</ul></div>';\n\n listDiv.innerHTML = list;\n\n return listDiv;\n },\n\n /**\n * @Override submenu\n */\n on: function () {\n const lineHeightContext = this.context.lineHeight;\n const sizeList = lineHeightContext._sizeList;\n const format = this.util.getFormatElement(this.getSelectionNode());\n const currentSize = !format ? '' : format.style.lineHeight + '';\n\n if (currentSize !== lineHeightContext.currentSize) {\n for (let i = 0, len = sizeList.length; i < len; i++) {\n if (currentSize === sizeList[i].getAttribute('data-value')) {\n this.util.addClass(sizeList[i], 'active');\n } else {\n this.util.removeClass(sizeList[i], 'active');\n }\n }\n\n lineHeightContext.currentSize = currentSize;\n }\n },\n\n pickup: function (e) {\n if (!/^BUTTON$/i.test(e.target.tagName)) return false;\n \n e.preventDefault();\n e.stopPropagation();\n\n const value = e.target.getAttribute('data-value') || '';\n const formats = this.getSelectedElements();\n\n for (let i = 0, len = formats.length; i < len; i++) {\n formats[i].style.lineHeight = value;\n }\n\n this.submenuOff();\n\n // history stack\n this.history.push(false);\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'template',\n display: 'submenu',\n add: function (core, targetElement) {\n const context = core.context;\n context.template = {\n selectedIndex: -1\n };\n\n /** set submenu */\n let templateDiv = this.setSubmenu(core);\n\n /** add event listeners */\n templateDiv.querySelector('ul').addEventListener('click', this.pickup.bind(core));\n\n /** append target button menu */\n core.initMenuTarget(this.name, targetElement, templateDiv);\n\n /** empty memory */\n templateDiv = null;\n },\n\n setSubmenu: function (core) {\n const templateList = core.options.templates;\n if (!templateList || templateList.length === 0) {\n throw Error('[SUNEDITOR.plugins.template.fail] To use the \"template\" plugin, please define the \"templates\" option.');\n }\n\n const listDiv = core.util.createElement('DIV');\n listDiv.className = 'se-list-layer';\n\n let list = '<div class=\"se-submenu se-list-inner\">' +\n '<ul class=\"se-list-basic\">';\n for (let i = 0, len = templateList.length, t; i < len; i++) {\n t = templateList[i];\n list += '<li><button type=\"button\" class=\"se-btn-list\" data-value=\"' + i + '\" title=\"' + t.name + '\" aria-label=\"' + t.name + '\">' + t.name + '</button></li>';\n }\n list += '</ul></div>';\n\n listDiv.innerHTML = list;\n\n return listDiv;\n },\n\n pickup: function (e) {\n if (!/^BUTTON$/i.test(e.target.tagName)) return false;\n\n e.preventDefault();\n e.stopPropagation();\n\n this.context.template.selectedIndex = e.target.getAttribute('data-value') * 1;\n const temp = this.options.templates[this.context.template.selectedIndex];\n\n if (temp.html) {\n this.setContents(temp.html);\n } else {\n this.submenuOff();\n throw Error('[SUNEDITOR.template.fail] cause : \"templates[i].html not found\"');\n }\n \n this.submenuOff();\n }\n};","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'paragraphStyle',\n display: 'submenu',\n add: function (core, targetElement) {\n const context = core.context;\n context.paragraphStyle = {\n _classList: null\n };\n\n /** set submenu */\n let listDiv = this.setSubmenu(core);\n\n /** add event listeners */\n listDiv.querySelector('ul').addEventListener('click', this.pickUp.bind(core));\n\n context.paragraphStyle._classList = listDiv.querySelectorAll('li button');\n\n /** append target button menu */\n core.initMenuTarget(this.name, targetElement, listDiv);\n\n /** empty memory */\n listDiv = null;\n },\n\n setSubmenu: function (core) {\n const option = core.options;\n const listDiv = core.util.createElement('DIV');\n listDiv.className = 'se-submenu se-list-layer se-list-format';\n\n const menuLang = core.lang.menu;\n const defaultList = {\n spaced: {\n name: menuLang.spaced,\n class: '__se__p-spaced',\n _class: ''\n },\n bordered: {\n name: menuLang.bordered,\n class: '__se__p-bordered',\n _class: ''\n },\n neon: {\n name: menuLang.neon,\n class: '__se__p-neon',\n _class: ''\n }\n };\n const paragraphStyles = !option.paragraphStyles || option.paragraphStyles.length === 0 ? ['spaced', 'bordered', 'neon'] : option.paragraphStyles;\n\n let list = '<div class=\"se-list-inner\"><ul class=\"se-list-basic\">';\n for (let i = 0, len = paragraphStyles.length, p, name, attrs, _class; i < len; i++) {\n p = paragraphStyles[i];\n\n if (typeof p === 'string') {\n const defaultStyle = defaultList[p.toLowerCase()];\n if (!defaultStyle) continue;\n p = defaultStyle;\n }\n\n name = p.name;\n attrs = p.class ? ' class=\"' + p.class + '\"' : '';\n _class = p._class;\n\n list += '<li>' +\n '<button type=\"button\" class=\"se-btn-list' + (_class ? ' ' + _class: '') + '\" data-value=\"' + p.class + '\" title=\"' + name + '\" aria-label=\"' + name + '\">' +\n '<div' + attrs + '>' + name + '</div>' +\n '</button></li>';\n }\n list += '</ul></div>';\n\n listDiv.innerHTML = list;\n\n return listDiv;\n },\n\n /**\n * @Override submenu\n */\n on: function () {\n const paragraphContext = this.context.paragraphStyle;\n const paragraphList = paragraphContext._classList;\n const currentFormat = this.util.getFormatElement(this.getSelectionNode());\n\n for (let i = 0, len = paragraphList.length; i < len; i++) {\n if (this.util.hasClass(currentFormat, paragraphList[i].getAttribute('data-value'))) {\n this.util.addClass(paragraphList[i], 'active');\n } else {\n this.util.removeClass(paragraphList[i], 'active');\n }\n }\n },\n\n pickUp: function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n let target = e.target;\n let value = null;\n \n while (!/^UL$/i.test(target.tagName)) {\n value = target.getAttribute('data-value');\n if (value) break;\n target = target.parentNode;\n }\n\n if (!value) return;\n\n let selectedFormsts = this.getSelectedElements();\n if (selectedFormsts.length === 0) {\n this.getRange_addLine(this.getRange(), null);\n selectedFormsts = this.getSelectedElements();\n if (selectedFormsts.length === 0) return;\n }\n\n // change format class\n const toggleClass = this.util.hasClass(target, 'active') ? this.util.removeClass.bind(this.util) : this.util.addClass.bind(this.util);\n for (let i = 0, len = selectedFormsts.length; i < len; i++) {\n toggleClass(selectedFormsts[i], value);\n }\n\n this.submenuOff();\n\n // history stack\n this.history.push(false);\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'textStyle',\n display: 'submenu',\n add: function (core, targetElement) {\n const context = core.context;\n context.textStyle = {\n _styleList: null\n };\n\n /** set submenu */\n let listDiv = this.setSubmenu(core);\n let listUl = listDiv.querySelector('ul');\n\n /** add event listeners */\n listUl.addEventListener('click', this.pickup.bind(core));\n\n context.textStyle._styleList = listDiv.querySelectorAll('li button');\n\n /** append target button menu */\n core.initMenuTarget(this.name, targetElement, listDiv);\n\n /** empty memory */\n listDiv = null, listUl = null;\n },\n\n setSubmenu: function (core) {\n const option = core.options;\n const listDiv = core.util.createElement('DIV');\n listDiv.className = 'se-submenu se-list-layer se-list-format';\n\n const defaultList = {\n code: {\n name: core.lang.menu.code,\n class: '__se__t-code',\n tag: 'code',\n },\n translucent: {\n name: core.lang.menu.translucent,\n style: 'opacity: 0.5;',\n tag: 'span',\n },\n shadow: {\n name: core.lang.menu.shadow,\n class: '__se__t-shadow',\n tag: 'span',\n }\n };\n const styleList = !option.textStyles ? core._w.Object.keys(defaultList) : option.textStyles;\n\n let list = '<div class=\"se-list-inner\"><ul class=\"se-list-basic\">';\n for (let i = 0, len = styleList.length, t, tag, name, attrs, command, value, _class; i < len; i++) {\n t = styleList[i];\n attrs = '', value = '', command = [];\n\n if (typeof t === 'string') {\n const defaultStyle = defaultList[t.toLowerCase()];\n if (!defaultStyle) continue;\n t = defaultStyle;\n }\n\n name = t.name;\n tag = t.tag || 'span';\n _class = t._class;\n\n if (t.style) {\n attrs += ' style=\"' + t.style + '\"';\n value += t.style.replace(/:[^;]+(;|$)\\s*/g, ',');\n command.push('style');\n }\n if (t.class) {\n attrs += ' class=\"' + t.class + '\"';\n value += '.' + t.class.trim().replace(/\\s+/g, ',.');\n command.push('class');\n }\n\n value = value.replace(/,$/, '');\n\n list += '<li>' +\n '<button type=\"button\" class=\"se-btn-list' + (_class ? ' ' + _class: '') + '\" data-command=\"' + tag + '\" data-value=\"' + value + '\" title=\"' + name + '\" aria-label=\"' + name + '\">' +\n '<' + tag + attrs + '>' + name + '</' + tag + '>' +\n '</button></li>';\n }\n list += '</ul></div>';\n\n listDiv.innerHTML = list;\n\n return listDiv;\n },\n\n /**\n * @Override submenu\n */\n on: function () {\n const util = this.util;\n const textStyleContext = this.context.textStyle;\n const styleButtonList = textStyleContext._styleList;\n const selectionNode = this.getSelectionNode();\n\n for (let i = 0, len = styleButtonList.length, btn, data, active; i < len; i++) {\n btn = styleButtonList[i];\n data = btn.getAttribute('data-value').split(',');\n \n for (let v = 0, node, value; v < data.length; v++) {\n node = selectionNode;\n active = false;\n \n while (node && !util.isFormatElement(node) && !util.isComponent(node)) {\n if (node.nodeName.toLowerCase() === btn.getAttribute('data-command').toLowerCase()) {\n value = data[v];\n if (/^\\./.test(value) ? util.hasClass(node, value.replace(/^\\./, '')) : !!node.style[value]) {\n active = true;\n break;\n }\n }\n node = node.parentNode;\n }\n\n if (!active) break;\n }\n\n active ? util.addClass(btn, 'active') : util.removeClass(btn, 'active');\n }\n\n },\n\n pickup: function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n let target = e.target;\n let command = null, tag = null;\n \n while (!command && !/UL/i.test(target.tagName)) {\n command = target.getAttribute('data-command');\n if (command) {\n tag = target.firstChild;\n break;\n }\n target = target.parentNode;\n }\n\n if (!command) return;\n\n const checkStyles = tag.style.cssText.replace(/:.+(;|$)/g, ',').split(',');\n checkStyles.pop();\n\n const classes = tag.classList;\n for (let i = 0, len = classes.length; i < len; i++) {\n checkStyles.push('.' + classes[i]);\n }\n\n const newNode = this.util.hasClass(target, 'active') ? null : tag.cloneNode(false);\n const removeNodes = newNode ? null : [tag.nodeName];\n this.nodeChange(newNode, checkStyles, removeNodes, true);\n\n this.submenuOff();\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2018 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'selectMenu',\n add: function (core) {\n core.context.selectMenu = {\n caller: {},\n callerContext: null\n };\n },\n\n setForm: function () {\n return '<div class=\"se-select-list\"></div>';\n },\n\n createList: function (listContext, items, html) {\n listContext.form.innerHTML = '<ul>' + html + '</ul>';\n listContext.items = items;\n listContext.menus = listContext.form.querySelectorAll('li');\n },\n\n initEvent: function (pluginName, forms) {\n const form = forms.querySelector('.se-select-list');\n const context = this.context.selectMenu.caller[pluginName] = {\n form: form,\n items: [],\n menus: [],\n index: -1,\n item: null,\n clickMethod: null,\n callerName: pluginName\n };\n\n form.addEventListener('mousedown', this.plugins.selectMenu.onMousedown_list);\n form.addEventListener('mousemove', this.plugins.selectMenu.onMouseMove_list.bind(this, context));\n form.addEventListener('click', this.plugins.selectMenu.onClick_list.bind(this, context));\n },\n\n onMousedown_list: function (e) {\n e.preventDefault();\n e.stopPropagation();\n },\n\n onMouseMove_list: function (context, e) {\n this.util.addClass(context.form, '__se_select-menu-mouse-move');\n const index = e.target.getAttribute('data-index');\n if (!index) return;\n context.index = index * 1;\n },\n\n onClick_list: function (context, e) {\n const index = e.target.getAttribute('data-index');\n if (!index) return;\n context.clickMethod.call(this, context.items[index]);\n },\n\n moveItem: function (listContext, num) {\n this.util.removeClass(listContext.form, '__se_select-menu-mouse-move');\n num = listContext.index + num;\n const menus = listContext.menus;\n const len = menus.length;\n const selectIndex = listContext.index = num >= len ? 0 : num < 0 ? len - 1 : num;\n \n for (let i = 0; i < len; i++) {\n if (i === selectIndex) {\n this.util.addClass(menus[i], 'active');\n } else {\n this.util.removeClass(menus[i], 'active');\n }\n }\n\n listContext.item = listContext.items[selectIndex];\n },\n\n getItem: function (listContext, index) {\n index = (!index || index < 0) ? listContext.index : index;\n return listContext.items[index];\n },\n\n on: function (callerName, clickMethod) {\n const listContext = this.context.selectMenu.caller[callerName];\n this.context.selectMenu.callerContext = listContext;\n listContext.clickMethod = clickMethod;\n listContext.callerName = callerName;\n },\n\n open: function (listContext, positionHandler) {\n const form = listContext.form;\n form.style.visibility = 'hidden';\n form.style.display = 'block';\n positionHandler(form);\n form.style.visibility = '';\n },\n\n close: function (listContext) {\n listContext.form.style.display = 'none';\n listContext.items = [];\n listContext.menus = [];\n listContext.index = -1;\n listContext.item = null;\n },\n\n init: function (listContext) {\n if (!listContext) return;\n listContext.items = [];\n listContext.menus = [];\n listContext.index = -1;\n listContext.item = null;\n listContext.callerName = '';\n this.context.selectMenu.callerContext = null;\n }\n};","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nimport selectMenu from './_selectMenu';\n\nexport default {\n name: 'anchor',\n add: function (core) {\n core.addModule([selectMenu]);\n \n core.context.anchor = {\n caller: {},\n forms: this.setDialogForm(core),\n host: (core._w.location.origin + core._w.location.pathname).replace(/\\/$/, ''),\n callerContext: null\n };\n },\n\n /** dialog */\n setDialogForm: function (core) {\n const lang = core.lang;\n const relList = core.options.linkRel;\n const defaultRel = (core.options.linkRelDefault.default || '').split(' ');\n const icons = core.icons;\n const forms = core.util.createElement('DIV');\n\n let html = '<div class=\"se-dialog-body\">' +\n '<div class=\"se-dialog-form\">' +\n '<label>' + lang.dialogBox.linkBox.url + '</label>' +\n '<div class=\"se-dialog-form-files\">' +\n '<input class=\"se-input-form se-input-url\" type=\"text\" placeholder=\"' + (core.options.protocol || '') + '\" />' +\n '<button type=\"button\" class=\"se-btn se-dialog-files-edge-button _se_bookmark_button\" title=\"' + lang.dialogBox.linkBox.bookmark + '\" aria-label=\"' + lang.dialogBox.linkBox.bookmark + '\">' + icons.bookmark + '</button>' +\n core.plugins.selectMenu.setForm() +\n '</div>' +\n '<div class=\"se-anchor-preview-form\">' +\n '<span class=\"se-svg se-anchor-preview-icon _se_anchor_bookmark_icon\">' + icons.bookmark + '</span>' +\n '<span class=\"se-svg se-anchor-preview-icon _se_anchor_download_icon\">' + icons.download + '</span>' +\n '<pre class=\"se-link-preview\"></pre>' +\n '</div>' +\n '</div>' +\n '<div class=\"se-dialog-form\">' +\n '<label>' + lang.dialogBox.linkBox.text + '</label><input class=\"se-input-form _se_anchor_text\" type=\"text\" />' +\n '</div>' +\n '<div class=\"se-dialog-form-footer\">' +\n '<label><input type=\"checkbox\" class=\"se-dialog-btn-check _se_anchor_check\" /> ' + lang.dialogBox.linkBox.newWindowCheck + '</label>' +\n '<label><input type=\"checkbox\" class=\"se-dialog-btn-check _se_anchor_download\" /> ' + lang.dialogBox.linkBox.downloadLinkCheck + '</label>';\n if (relList.length > 0) {\n html += '<div class=\"se-anchor-rel\"><button type=\"button\" class=\"se-btn se-btn-select se-anchor-rel-btn\"><rel></button>' +\n '<div class=\"se-anchor-rel-wrapper\"><pre class=\"se-link-preview se-anchor-rel-preview\"></pre></div>' +\n '<div class=\"se-list-layer\">' +\n '<div class=\"se-list-inner\">' +\n '<ul class=\"se-list-basic se-list-checked\">';\n for (let i = 0, len = relList.length, rel; i < len; i++) {\n rel = relList[i];\n html += '<li><button type=\"button\" class=\"se-btn-list' + (defaultRel.indexOf(rel) > -1 ? ' se-checked' : '') + '\" data-command=\"' + rel + '\" title=\"' + rel + '\" aria-label=\"' + rel + '\"><span class=\"se-svg\">' + icons.checked + '</span>' + rel + '</button></li>';\n }\n html += '</ul></div></div></div>';\n }\n\n html += '</div></div>';\n\n forms.innerHTML = html;\n return forms;\n },\n\n initEvent: function (pluginName, forms) {\n const anchorPlugin = this.plugins.anchor;\n const context = this.context.anchor.caller[pluginName] = {\n modal: forms,\n urlInput: null,\n linkDefaultRel: this.options.linkRelDefault,\n defaultRel: this.options.linkRelDefault.default || '',\n currentRel: [],\n linkAnchor: null,\n linkValue: '',\n _change: false,\n callerName: pluginName\n };\n\n if (typeof context.linkDefaultRel.default === 'string') context.linkDefaultRel.default = context.linkDefaultRel.default.trim();\n if (typeof context.linkDefaultRel.check_new_window === 'string') context.linkDefaultRel.check_new_window = context.linkDefaultRel.check_new_window.trim();\n if (typeof context.linkDefaultRel.check_bookmark === 'string') context.linkDefaultRel.check_bookmark = context.linkDefaultRel.check_bookmark.trim();\n\n context.urlInput = forms.querySelector('.se-input-url');\n context.anchorText = forms.querySelector('._se_anchor_text');\n context.newWindowCheck = forms.querySelector('._se_anchor_check');\n context.downloadCheck = forms.querySelector('._se_anchor_download');\n context.download = forms.querySelector('._se_anchor_download_icon');\n context.preview = forms.querySelector('.se-link-preview');\n context.bookmark = forms.querySelector('._se_anchor_bookmark_icon');\n context.bookmarkButton = forms.querySelector('._se_bookmark_button');\n\n this.plugins.selectMenu.initEvent.call(this, pluginName, forms);\n const listContext = this.context.selectMenu.caller[pluginName];\n \n /** rel */\n if (this.options.linkRel.length > 0) {\n context.relButton = forms.querySelector('.se-anchor-rel-btn');\n context.relList = forms.querySelector('.se-list-layer');\n context.relPreview = forms.querySelector('.se-anchor-rel-preview');\n context.relButton.addEventListener('click', anchorPlugin.onClick_relButton.bind(this, context));\n context.relList.addEventListener('click', anchorPlugin.onClick_relList.bind(this, context));\n }\n\n context.newWindowCheck.addEventListener('change', anchorPlugin.onChange_newWindowCheck.bind(this, context));\n context.downloadCheck.addEventListener('change', anchorPlugin.onChange_downloadCheck.bind(this, context));\n context.anchorText.addEventListener('input', anchorPlugin.onChangeAnchorText.bind(this, context));\n context.urlInput.addEventListener('input', anchorPlugin.onChangeUrlInput.bind(this, context));\n context.urlInput.addEventListener('keydown', anchorPlugin.onKeyDownUrlInput.bind(this, listContext));\n context.urlInput.addEventListener('focus', anchorPlugin.onFocusUrlInput.bind(this, context, listContext));\n context.urlInput.addEventListener('blur', anchorPlugin.onBlurUrlInput.bind(this, listContext));\n context.bookmarkButton.addEventListener('click', anchorPlugin.onClick_bookmarkButton.bind(this, context));\n },\n\n on: function (contextAnchor, update) {\n const anchorPlugin = this.plugins.anchor;\n\n if (!update) {\n anchorPlugin.init.call(this, contextAnchor);\n contextAnchor.anchorText.value = this.getSelection().toString().trim();\n contextAnchor.newWindowCheck.checked = this.options.linkTargetNewWindow;\n } else if (contextAnchor.linkAnchor) {\n this.context.dialog.updateModal = true;\n const href = contextAnchor.linkAnchor.getAttribute('href');\n contextAnchor.linkValue = contextAnchor.preview.textContent = contextAnchor.urlInput.value = anchorPlugin.selfPathBookmark.call(this, href) ? href.substr(href.lastIndexOf('#')) : href;\n contextAnchor.anchorText.value = contextAnchor.linkAnchor.textContent;\n contextAnchor.newWindowCheck.checked = (/_blank/i.test(contextAnchor.linkAnchor.target) ? true : false);\n contextAnchor.downloadCheck.checked = contextAnchor.linkAnchor.download;\n }\n\n this.context.anchor.callerContext = contextAnchor;\n anchorPlugin.setRel.call(this, contextAnchor, (update && contextAnchor.linkAnchor) ? contextAnchor.linkAnchor.rel : contextAnchor.defaultRel);\n anchorPlugin.setLinkPreview.call(this, contextAnchor, contextAnchor.linkValue);\n this.plugins.selectMenu.on.call(this, contextAnchor.callerName, this.plugins.anchor.setHeaderBookmark);\n },\n\n selfPathBookmark: function(path) {\n const href = this._w.location.href.replace(/\\/$/, '');\n return path.indexOf('#') === 0 || (path.indexOf(href) === 0 && path.indexOf('#') === (href.indexOf(\"#\") === -1 ? href.length : href.substr(0, href.indexOf(\"#\")).length));\n },\n\n _closeRelMenu: null,\n toggleRelList: function (contextAnchor, show) {\n if (!show) {\n if (this.plugins.anchor._closeRelMenu) this.plugins.anchor._closeRelMenu();\n } else {\n const target = contextAnchor.relButton;\n const relList = contextAnchor.relList;\n this.util.addClass(target, 'active');\n relList.style.visibility = 'hidden';\n relList.style.display = 'block';\n if (!this.options.rtl) relList.style.left = (target.offsetLeft + target.offsetWidth + 1) + 'px';\n else relList.style.left = (target.offsetLeft - relList.offsetWidth - 1) + 'px';\n relList.style.top = (target.offsetTop + (target.offsetHeight / 2) - (relList.offsetHeight / 2)) + 'px';\n relList.style.visibility = '';\n\n this.plugins.anchor._closeRelMenu = function (context, target, e) {\n if (e && (context.relButton.contains(e.target) || context.relList.contains(e.target))) return;\n this.util.removeClass(target, 'active');\n context.relList.style.display = 'none';\n this.modalForm.removeEventListener('click', this.plugins.anchor._closeRelMenu);\n this.plugins.anchor._closeRelMenu = null;\n }.bind(this, contextAnchor, target);\n \n this.modalForm.addEventListener('click', this.plugins.anchor._closeRelMenu);\n }\n },\n\n onClick_relButton: function (contextAnchor, e) {\n this.plugins.anchor.toggleRelList.call(this, contextAnchor, !this.util.hasClass(e.target, 'active'));\n },\n\n onClick_relList: function (contextAnchor, e) {\n const target = e.target;\n const cmd = target.getAttribute('data-command');\n if (!cmd) return;\n \n const current = contextAnchor.currentRel;\n const checked = this.util.toggleClass(target, 'se-checked');\n const index = current.indexOf(cmd);\n if (checked) {\n if (index === -1) current.push(cmd);\n } else {\n if (index > -1) current.splice(index, 1);\n }\n\n contextAnchor.relPreview.title = contextAnchor.relPreview.textContent = current.join(' ');\n },\n\n setRel: function (contextAnchor, relAttr) {\n const relListEl = contextAnchor.relList;\n const rels = contextAnchor.currentRel = !relAttr ? [] : relAttr.split(' ');\n if (!relListEl) return;\n\n const checkedRel = relListEl.querySelectorAll('button');\n for (let i = 0, len = checkedRel.length, cmd; i < len; i++) {\n cmd = checkedRel[i].getAttribute('data-command');\n if (rels.indexOf(cmd) > -1) {\n this.util.addClass(checkedRel[i], 'se-checked');\n } else {\n this.util.removeClass(checkedRel[i], 'se-checked');\n }\n }\n\n contextAnchor.relPreview.title = contextAnchor.relPreview.textContent = rels.join(' ');\n },\n\n createHeaderList: function (contextAnchor, contextList, urlValue) {\n const headers = this.util.getListChildren(this.context.element.wysiwyg, function(current) {\n return /h[1-6]/i.test(current.nodeName);\n });\n if (headers.length === 0) return;\n\n const valueRegExp = new this._w.RegExp('^' + urlValue.replace(/^#/, ''), 'i');\n const list = [];\n let html = '';\n for(let i = 0, len = headers.length, h; i < len; i++) {\n h = headers[i];\n if (!valueRegExp.test(h.textContent)) continue;\n list.push(h);\n html += '<li class=\"se-select-item\" data-index=\"' + i + '\">' + h.textContent + '</li>';\n }\n\n if (list.length === 0) {\n this.plugins.selectMenu.close.call(this, contextList);\n } else {\n this.plugins.selectMenu.createList(contextList, list, html);\n this.plugins.selectMenu.open.call(this, contextList, this.plugins.anchor._setMenuListPosition.bind(this, contextAnchor));\n }\n },\n\n _setMenuListPosition: function (contextAnchor, list) {\n list.style.top = (contextAnchor.urlInput.offsetHeight + 1) + 'px';\n },\n\n onKeyDownUrlInput: function (contextList, e) {\n const keyCode = e.keyCode;\n switch (keyCode) {\n case 38: // up\n e.preventDefault();\n e.stopPropagation();\n this.plugins.selectMenu.moveItem.call(this, contextList, -1);\n break;\n case 40: // down\n e.preventDefault();\n e.stopPropagation();\n this.plugins.selectMenu.moveItem.call(this, contextList, 1);\n break;\n case 13: // enter\n if (contextList.index > -1) {\n e.preventDefault();\n e.stopPropagation();\n this.plugins.anchor.setHeaderBookmark.call(this, this.plugins.selectMenu.getItem(contextList, null));\n }\n break;\n }\n },\n\n setHeaderBookmark: function (header) {\n const contextAnchor = this.context.anchor.callerContext;\n const id = header.id || 'h_' + this._w.Math.random().toString().replace(/.+\\./, '');\n header.id = id;\n contextAnchor.urlInput.value = '#' + id;\n\n if (!contextAnchor.anchorText.value.trim() || !contextAnchor._change) {\n contextAnchor.anchorText.value = header.textContent;\n }\n \n this.plugins.anchor.setLinkPreview.call(this, contextAnchor, contextAnchor.urlInput.value);\n this.plugins.selectMenu.close.call(this, this.context.selectMenu.callerContext);\n this.context.anchor.callerContext.urlInput.focus();\n },\n\n onChangeAnchorText: function (contextAnchor, e) {\n contextAnchor._change = !!e.target.value.trim();\n },\n\n onChangeUrlInput: function (contextAnchor, e) {\n const value = e.target.value.trim();\n this.plugins.anchor.setLinkPreview.call(this, contextAnchor, value);\n\n if (this.plugins.anchor.selfPathBookmark.call(this, value)) this.plugins.anchor.createHeaderList.call(this, contextAnchor, this.context.selectMenu.callerContext, value);\n else this.plugins.selectMenu.close.call(this, this.context.selectMenu.callerContext);\n },\n\n onFocusUrlInput: function (contextAnchor, contextLink) {\n const value = contextAnchor.urlInput.value;\n if (this.plugins.anchor.selfPathBookmark.call(this, value)) this.plugins.anchor.createHeaderList.call(this, contextAnchor, contextLink, value);\n },\n\n onBlurUrlInput: function (contextList) {\n this.plugins.selectMenu.close.call(this, contextList);\n },\n\n setLinkPreview: function (context, value) {\n const preview = context.preview;\n const protocol = this.options.linkProtocol;\n const noPrefix = this.options.linkNoPrefix;\n const reservedProtocol = /^(mailto\\:|tel\\:|sms\\:|https*\\:\\/\\/|#)/.test(value) || value.indexOf(protocol) === 0;\n const sameProtocol = !protocol ? false : this._w.RegExp('^' + value.substr(0, protocol.length)).test(protocol);\n value = context.linkValue = preview.textContent = !value ? '' : noPrefix ? value : (protocol && !reservedProtocol && !sameProtocol) ? protocol + value : reservedProtocol ? value : /^www\\./.test(value) ? 'http://' + value : this.context.anchor.host + (/^\\//.test(value) ? '' : '/') + value;\n\n if (this.plugins.anchor.selfPathBookmark.call(this, value)) {\n context.bookmark.style.display = 'block';\n this.util.addClass(context.bookmarkButton, 'active');\n } else {\n context.bookmark.style.display = 'none';\n this.util.removeClass(context.bookmarkButton, 'active');\n }\n\n if (!this.plugins.anchor.selfPathBookmark.call(this, value) && context.downloadCheck.checked) {\n context.download.style.display = 'block';\n } else {\n context.download.style.display = 'none';\n }\n },\n\n setCtx: function (anchor, contextAnchor) {\n if (!anchor) return;\n contextAnchor.linkAnchor = anchor;\n contextAnchor.linkValue = anchor.href;\n contextAnchor.currentRel = anchor.rel.split(\" \");\n },\n\n updateAnchor: function (anchor, url, displayText, contextAnchor, notText) {\n // download\n if (!this.plugins.anchor.selfPathBookmark.call(this, url) && contextAnchor.downloadCheck.checked) {\n anchor.setAttribute('download', displayText || url);\n } else {\n anchor.removeAttribute('download');\n }\n\n // new window\n if (contextAnchor.newWindowCheck.checked) anchor.target = '_blank';\n else anchor.removeAttribute('target');\n \n // rel\n const rel = contextAnchor.currentRel.join(' ');\n if (!rel) anchor.removeAttribute('rel');\n else anchor.rel = rel;\n\n // set url\n anchor.href = url;\n if (notText) {\n if (anchor.children.length === 0) anchor.textContent = '';\n } else {\n anchor.textContent = displayText;\n }\n },\n\n createAnchor: function (contextAnchor, notText) {\n if (contextAnchor.linkValue.length === 0) return null;\n \n const url = contextAnchor.linkValue;\n const anchor = contextAnchor.anchorText;\n const displayText = anchor.value.length === 0 ? url : anchor.value;\n\n const oA = contextAnchor.linkAnchor || this.util.createElement('A');\n this.plugins.anchor.updateAnchor.call(this, oA, url, displayText, contextAnchor, notText);\n\n contextAnchor.linkValue = contextAnchor.preview.textContent = contextAnchor.urlInput.value = contextAnchor.anchorText.value = '';\n\n return oA;\n },\n\n onClick_bookmarkButton: function (contextAnchor) {\n let url = contextAnchor.urlInput.value;\n if (this.plugins.anchor.selfPathBookmark.call(this, url)) {\n url = url.substr(1);\n contextAnchor.bookmark.style.display = 'none';\n this.util.removeClass(contextAnchor.bookmarkButton, 'active');\n this.plugins.selectMenu.close.call(this, this.context.selectMenu.callerContext);\n } else {\n url = '#' + url;\n contextAnchor.bookmark.style.display = 'block';\n this.util.addClass(contextAnchor.bookmarkButton, 'active');\n contextAnchor.downloadCheck.checked = false;\n contextAnchor.download.style.display = 'none';\n this.plugins.anchor.createHeaderList.call(this, contextAnchor, this.context.selectMenu.callerContext, url);\n }\n\n contextAnchor.urlInput.value = url;\n this.plugins.anchor.setLinkPreview.call(this, contextAnchor, url);\n contextAnchor.urlInput.focus();\n },\n\n onChange_newWindowCheck: function (contextAnchor, e) {\n if (typeof contextAnchor.linkDefaultRel.check_new_window !== 'string') return;\n if (e.target.checked) {\n this.plugins.anchor.setRel.call(this, contextAnchor, this.plugins.anchor._relMerge.call(this, contextAnchor, contextAnchor.linkDefaultRel.check_new_window));\n } else {\n this.plugins.anchor.setRel.call(this, contextAnchor, this.plugins.anchor._relDelete.call(this, contextAnchor, contextAnchor.linkDefaultRel.check_new_window));\n }\n },\n\n onChange_downloadCheck: function (contextAnchor, e) {\n if (e.target.checked) {\n contextAnchor.download.style.display = 'block';\n contextAnchor.bookmark.style.display = 'none';\n this.util.removeClass(contextAnchor.bookmarkButton, 'active');\n contextAnchor.linkValue = contextAnchor.preview.textContent = contextAnchor.urlInput.value = contextAnchor.urlInput.value.replace(/^\\#+/, '');\n if (typeof contextAnchor.linkDefaultRel.check_bookmark === 'string') {\n this.plugins.anchor.setRel.call(this, contextAnchor, this.plugins.anchor._relMerge.call(this, contextAnchor, contextAnchor.linkDefaultRel.check_bookmark));\n }\n } else {\n contextAnchor.download.style.display = 'none';\n if (typeof contextAnchor.linkDefaultRel.check_bookmark === 'string') {\n this.plugins.anchor.setRel.call(this, contextAnchor, this.plugins.anchor._relDelete.call(this, contextAnchor, contextAnchor.linkDefaultRel.check_bookmark));\n }\n }\n },\n\n _relMerge: function (contextAnchor, relAttr) {\n const current = contextAnchor.currentRel;\n if (!relAttr) return current.join(' ');\n \n if (/^only\\:/.test(relAttr)) {\n relAttr = relAttr.replace(/^only\\:/, '').trim();\n contextAnchor.currentRel = relAttr.split(' ');\n return relAttr;\n }\n\n const rels = relAttr.split(' ');\n for (let i = 0, len = rels.length, index; i < len; i++) {\n index = current.indexOf(rels[i]);\n if (index === -1) current.push(rels[i]);\n }\n\n return current.join(' ');\n },\n\n _relDelete: function (contextAnchor, relAttr) {\n if (!relAttr) return contextAnchor.currentRel.join(' ');\n if (/^only\\:/.test(relAttr)) relAttr = relAttr.replace(/^only\\:/, '').trim();\n\n const rels = contextAnchor.currentRel.join(' ').replace(this._w.RegExp(relAttr + '\\\\s*'), '');\n contextAnchor.currentRel = rels.split(' ');\n return rels;\n },\n\n init: function (contextAnchor) {\n contextAnchor.linkAnchor = null;\n contextAnchor.linkValue = contextAnchor.preview.textContent = contextAnchor.urlInput.value = '';\n contextAnchor.anchorText.value = '';\n contextAnchor.newWindowCheck.checked = false;\n contextAnchor.downloadCheck.checked = false;\n contextAnchor._change = false;\n this.plugins.anchor.setRel.call(this, contextAnchor, contextAnchor.defaultRel);\n if (contextAnchor.relList) {\n this.plugins.anchor.toggleRelList.call(this, contextAnchor, false);\n }\n this.context.anchor.callerContext = null;\n this.plugins.selectMenu.init.call(this, this.context.selectMenu.callerContext);\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nimport dialog from '../modules/dialog';\nimport anchor from '../modules/_anchor';\n\nexport default {\n name: 'link',\n display: 'dialog',\n add: function (core) {\n core.addModule([dialog, anchor]);\n\n const context = core.context;\n const contextLink = context.link = {\n focusElement: null, // @Override dialog // This element has focus when the dialog is opened.\n _linkAnchor: null,\n anchorCtx: null\n };\n\n /** link dialog */\n let link_dialog = this.setDialog(core);\n contextLink.modal = link_dialog;\n \n /** link controller */\n let link_controller = this.setController_LinkButton(core);\n contextLink.linkController = link_controller;\n\n link_dialog.querySelector('form').addEventListener('submit', this.submit.bind(core));\n link_controller.addEventListener('click', this.onClick_linkController.bind(core));\n\n /** append html */\n context.dialog.modal.appendChild(link_dialog);\n\n /** append controller */\n context.element.relative.appendChild(link_controller);\n\n /** link event */\n core.plugins.anchor.initEvent.call(core, 'link', link_dialog);\n contextLink.focusElement = context.anchor.caller.link.urlInput;\n\n /** empty memory */\n link_dialog = null, link_controller = null;\n },\n\n /** dialog */\n setDialog: function (core) {\n const lang = core.lang;\n const dialog = core.util.createElement('DIV');\n const icons = core.icons;\n\n dialog.className = 'se-dialog-content';\n dialog.style.display = 'none';\n let html = '' +\n '<form>' +\n '<div class=\"se-dialog-header\">' +\n '<button type=\"button\" data-command=\"close\" class=\"se-btn se-dialog-close\" title=\"' + lang.dialogBox.close + '\" aria-label=\"' + lang.dialogBox.close + '\">' +\n icons.cancel +\n '</button>' +\n '<span class=\"se-modal-title\">' + lang.dialogBox.linkBox.title + '</span>' +\n '</div>' +\n core.context.anchor.forms.innerHTML +\n '<div class=\"se-dialog-footer\">' +\n '<button type=\"submit\" class=\"se-btn-primary\" title=\"' + lang.dialogBox.submitButton + '\" aria-label=\"' + lang.dialogBox.submitButton + '\"><span>' + lang.dialogBox.submitButton + '</span></button>' +\n '</div>' +\n '</form>';\n\n dialog.innerHTML = html;\n return dialog;\n },\n\n /** modify controller button */\n setController_LinkButton: function (core) {\n const lang = core.lang;\n const icons = core.icons;\n const link_btn = core.util.createElement('DIV');\n\n link_btn.className = 'se-controller se-controller-link';\n link_btn.innerHTML = '' +\n '<div class=\"se-arrow se-arrow-up\"></div>' +\n '<div class=\"link-content\"><span><a target=\"_blank\" href=\"\"></a> </span>' +\n '<div class=\"se-btn-group\">' +\n '<button type=\"button\" data-command=\"update\" tabindex=\"-1\" class=\"se-btn se-tooltip\">' +\n icons.edit +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.edit + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"unlink\" tabindex=\"-1\" class=\"se-btn se-tooltip\">' +\n icons.unlink +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.unlink + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"delete\" tabindex=\"-1\" class=\"se-btn se-tooltip\">' +\n icons.delete +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.remove + '</span></span>' +\n '</button>' +\n '</div>' +\n '</div>';\n\n return link_btn;\n },\n\n /**\n * @Override dialog\n */\n open: function () {\n this.plugins.dialog.open.call(this, 'link', 'link' === this.currentControllerName);\n },\n\n submit: function (e) {\n this.showLoading();\n\n e.preventDefault();\n e.stopPropagation();\n\n try {\n const oA = this.plugins.anchor.createAnchor.call(this, this.context.anchor.caller.link, false);\n if (oA === null) return;\n \n if (!this.context.dialog.updateModal) {\n const selectedFormats = this.getSelectedElements();\n if (selectedFormats.length > 1) {\n const oFormat = this.util.createElement(selectedFormats[0].nodeName);\n oFormat.appendChild(oA);\n if (!this.insertNode(oFormat, null, true)) return;\n } else {\n if (!this.insertNode(oA, null, true)) return;\n }\n \n this.setRange(oA.childNodes[0], 0, oA.childNodes[0], oA.textContent.length);\n } else {\n // set range\n const textNode = this.context.link._linkAnchor.childNodes[0];\n this.setRange(textNode, 0, textNode, textNode.textContent.length);\n }\n } finally {\n this.plugins.dialog.close.call(this);\n this.closeLoading();\n // history stack\n this.history.push(false);\n }\n\n return false;\n },\n\n /**\n * @Override core\n */\n active: function (element) {\n if (!element) {\n if (this.controllerArray.indexOf(this.context.link.linkController) > -1) {\n this.controllersOff();\n }\n } else if (this.util.isAnchor(element) && element.getAttribute('data-image-link') === null) {\n if (this.controllerArray.indexOf(this.context.link.linkController) < 0) {\n this.plugins.link.call_controller.call(this, element);\n }\n return true;\n }\n\n return false;\n },\n\n /**\n * @Override dialog\n */\n on: function (update) {\n this.plugins.anchor.on.call(this, this.context.anchor.caller.link, update);\n },\n\n call_controller: function (selectionATag) {\n this.editLink = this.context.link._linkAnchor = this.context.anchor.caller.link.linkAnchor = selectionATag;\n const linkBtn = this.context.link.linkController;\n const link = linkBtn.querySelector('a');\n\n link.href = selectionATag.href;\n link.title = selectionATag.textContent;\n link.textContent = selectionATag.textContent;\n\n this.util.addClass(selectionATag, 'on');\n this.setControllerPosition(linkBtn, selectionATag, 'bottom', {left: 0, top: 0});\n this.controllersOn(linkBtn, selectionATag, 'link', this.util.removeClass.bind(this.util, this.context.link._linkAnchor, 'on'));\n },\n\n onClick_linkController: function (e) {\n e.stopPropagation();\n\n const command = e.target.getAttribute('data-command') || e.target.parentNode.getAttribute('data-command');\n if (!command) return;\n\n e.preventDefault();\n\n if (/update/.test(command)) {\n this.plugins.dialog.open.call(this, 'link', true);\n } else if (/unlink/.test(command)) {\n const sc = this.util.getChildElement(this.context.link._linkAnchor, function (current) { return current.childNodes.length === 0 || current.nodeType === 3; }, false);\n const ec = this.util.getChildElement(this.context.link._linkAnchor, function (current) { return current.childNodes.length === 0 || current.nodeType === 3; }, true);\n this.setRange(sc, 0, ec, ec.textContent.length);\n this.nodeChange(null, null, ['A'], false);\n } else {\n /** delete */\n this.util.removeItem(this.context.link._linkAnchor);\n this.context.anchor.caller.link.linkAnchor = null;\n this.focus();\n\n // history stack\n this.history.push(false);\n }\n\n this.controllersOff();\n },\n\n /**\n * @Override dialog\n */\n init: function () {\n this.context.link.linkController.style.display = 'none';\n this.plugins.anchor.init.call(this, this.context.anchor.caller.link);\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nimport dialog from '../modules/dialog';\nimport anchor from '../modules/_anchor';\nimport component from '../modules/component';\nimport resizing from '../modules/resizing';\nimport fileManager from '../modules/fileManager';\n\nexport default {\n name: 'image',\n display: 'dialog',\n add: function (core) {\n core.addModule([dialog, anchor, component, resizing, fileManager]);\n \n const options = core.options;\n const context = core.context;\n const contextImage = context.image = {\n _infoList: [], // @Override fileManager\n _infoIndex: 0, // @Override fileManager\n _uploadFileLength: 0, // @Override fileManager\n focusElement: null, // @Override dialog // This element has focus when the dialog is opened.\n sizeUnit: options._imageSizeUnit,\n _linkElement: '',\n _altText: '',\n _align: 'none',\n _floatClassRegExp: '__se__float\\\\-[a-z]+',\n _v_src: {_linkValue: ''},\n svgDefaultSize: '30%',\n base64RenderIndex: 0,\n // @require @Override component\n _element: null,\n _cover: null,\n _container: null,\n // @Override resizing properties\n inputX: null,\n inputY: null,\n _element_w: 1,\n _element_h: 1,\n _element_l: 0,\n _element_t: 0,\n _defaultSizeX: 'auto',\n _defaultSizeY: 'auto',\n _origin_w: options.imageWidth === 'auto' ? '' : options.imageWidth,\n _origin_h: options.imageHeight === 'auto' ? '' : options.imageHeight,\n _proportionChecked: true,\n _resizing: options.imageResizing,\n _resizeDotHide: !options.imageHeightShow,\n _rotation: options.imageRotation,\n _alignHide: !options.imageAlignShow,\n _onlyPercentage: options.imageSizeOnlyPercentage,\n _ratio: false,\n _ratioX: 1,\n _ratioY: 1,\n _captionShow: true,\n _captionChecked: false,\n _caption: null,\n captionCheckEl: null\n };\n\n /** image dialog */\n let image_dialog = this.setDialog(core);\n contextImage.modal = image_dialog;\n contextImage.imgInputFile = image_dialog.querySelector('._se_image_file');\n contextImage.imgUrlFile = image_dialog.querySelector('._se_image_url');\n contextImage.focusElement = contextImage.imgInputFile || contextImage.imgUrlFile;\n contextImage.altText = image_dialog.querySelector('._se_image_alt');\n contextImage.captionCheckEl = image_dialog.querySelector('._se_image_check_caption');\n contextImage.previewSrc = image_dialog.querySelector('._se_tab_content_image .se-link-preview');\n\n /** add event listeners */\n image_dialog.querySelector('.se-dialog-tabs').addEventListener('click', this.openTab.bind(core));\n image_dialog.querySelector('form').addEventListener('submit', this.submit.bind(core));\n if (contextImage.imgInputFile) image_dialog.querySelector('.se-file-remove').addEventListener('click', this._removeSelectedFiles.bind(contextImage.imgInputFile, contextImage.imgUrlFile, contextImage.previewSrc));\n if (contextImage.imgUrlFile) contextImage.imgUrlFile.addEventListener('input', this._onLinkPreview.bind(contextImage.previewSrc, contextImage._v_src, options.linkProtocol));\n if (contextImage.imgInputFile && contextImage.imgUrlFile) contextImage.imgInputFile.addEventListener('change', this._fileInputChange.bind(contextImage));\n\n const imageGalleryButton = image_dialog.querySelector('.__se__gallery');\n if (imageGalleryButton) imageGalleryButton.addEventListener('click', this._openGallery.bind(core));\n \n contextImage.proportion = {};\n contextImage.inputX = {};\n contextImage.inputY = {};\n if (options.imageResizing) {\n contextImage.proportion = image_dialog.querySelector('._se_image_check_proportion');\n contextImage.inputX = image_dialog.querySelector('._se_image_size_x');\n contextImage.inputY = image_dialog.querySelector('._se_image_size_y');\n contextImage.inputX.value = options.imageWidth;\n contextImage.inputY.value = options.imageHeight;\n \n contextImage.inputX.addEventListener('keyup', this.setInputSize.bind(core, 'x'));\n contextImage.inputY.addEventListener('keyup', this.setInputSize.bind(core, 'y'));\n\n contextImage.inputX.addEventListener('change', this.setRatio.bind(core));\n contextImage.inputY.addEventListener('change', this.setRatio.bind(core));\n contextImage.proportion.addEventListener('change', this.setRatio.bind(core));\n \n image_dialog.querySelector('.se-dialog-btn-revert').addEventListener('click', this.sizeRevert.bind(core));\n }\n\n /** append html */\n context.dialog.modal.appendChild(image_dialog);\n\n /** link event */\n core.plugins.anchor.initEvent.call(core, 'image', image_dialog.querySelector('._se_tab_content_url'));\n contextImage.anchorCtx = core.context.anchor.caller.image;\n\n /** empty memory */\n image_dialog = null;\n },\n\n /** dialog */\n setDialog: function (core) {\n const option = core.options;\n const lang = core.lang;\n const dialog = core.util.createElement('DIV');\n\n dialog.className = 'se-dialog-content se-dialog-image';\n dialog.style.display = 'none';\n\n let html = '' +\n '<div class=\"se-dialog-header\">' +\n '<button type=\"button\" data-command=\"close\" class=\"se-btn se-dialog-close\" class=\"close\" title=\"' + lang.dialogBox.close + '\" aria-label=\"' + lang.dialogBox.close + '\">' +\n core.icons.cancel +\n '</button>' +\n '<span class=\"se-modal-title\">' + lang.dialogBox.imageBox.title + '</span>' +\n '</div>' +\n '<div class=\"se-dialog-tabs\">' +\n '<button type=\"button\" class=\"_se_tab_link active\" data-tab-link=\"image\">' + lang.toolbar.image + '</button>' +\n '<button type=\"button\" class=\"_se_tab_link\" data-tab-link=\"url\">' + lang.toolbar.link + '</button>' +\n '</div>' +\n '<form method=\"post\" enctype=\"multipart/form-data\">' +\n '<div class=\"_se_tab_content _se_tab_content_image\">' +\n '<div class=\"se-dialog-body\"><div style=\"border-bottom: 1px dashed #ccc;\">';\n \n if (option.imageFileInput) {\n html += '' +\n '<div class=\"se-dialog-form\">' +\n '<label>' + lang.dialogBox.imageBox.file + '</label>' +\n '<div class=\"se-dialog-form-files\">' +\n '<input class=\"se-input-form _se_image_file\" type=\"file\" accept=\"' + option.imageAccept + '\"' + (option.imageMultipleFile ? ' multiple=\"multiple\"' : '') + '/>' +\n '<button type=\"button\" class=\"se-btn se-dialog-files-edge-button se-file-remove\" title=\"' + lang.controller.remove + '\" aria-label=\"' + lang.controller.remove + '\">' + core.icons.cancel + '</button>' +\n '</div>' +\n '</div>' ;\n }\n \n if (option.imageUrlInput) {\n html += '' +\n '<div class=\"se-dialog-form\">' +\n '<label>' + lang.dialogBox.imageBox.url + '</label>' +\n '<div class=\"se-dialog-form-files\">' +\n '<input class=\"se-input-form se-input-url _se_image_url\" type=\"text\" />' +\n ((option.imageGalleryUrl && core.plugins.imageGallery) ? '<button type=\"button\" class=\"se-btn se-dialog-files-edge-button __se__gallery\" title=\"' + lang.toolbar.imageGallery + '\" aria-label=\"' + lang.toolbar.imageGallery + '\">' + core.icons.image_gallery + '</button>' : '') +\n '</div>' +\n '<pre class=\"se-link-preview\"></pre>' +\n '</div>';\n }\n \n html += '</div>' +\n '<div class=\"se-dialog-form\">' +\n '<label>' + lang.dialogBox.imageBox.altText + '</label><input class=\"se-input-form _se_image_alt\" type=\"text\" />' +\n '</div>';\n\n if (option.imageResizing) {\n const onlyPercentage = option.imageSizeOnlyPercentage;\n const onlyPercentDisplay = onlyPercentage ? ' style=\"display: none !important;\"' : '';\n const heightDisplay = !option.imageHeightShow ? ' style=\"display: none !important;\"' : '';\n html += '<div class=\"se-dialog-form\">';\n if (onlyPercentage || !option.imageHeightShow) {\n html += '' +\n '<div class=\"se-dialog-size-text\">' +\n '<label class=\"size-w\">' + lang.dialogBox.size + '</label>' +\n '</div>';\n } else {\n html += '' +\n '<div class=\"se-dialog-size-text\">' +\n '<label class=\"size-w\">' + lang.dialogBox.width + '</label>' +\n '<label class=\"se-dialog-size-x\"> </label>' +\n '<label class=\"size-h\">' + lang.dialogBox.height + '</label>' +\n '</div>';\n }\n html += '' +\n '<input class=\"se-input-control _se_image_size_x\" placeholder=\"auto\"' + (onlyPercentage ? ' type=\"number\" min=\"1\"' : 'type=\"text\"') + (onlyPercentage ? ' max=\"100\"' : '') + ' />' +\n '<label class=\"se-dialog-size-x\"' + heightDisplay + '>' + (onlyPercentage ? '%' : 'x') + '</label>' +\n '<input type=\"text\" class=\"se-input-control _se_image_size_y\" placeholder=\"auto\"' + onlyPercentDisplay + (onlyPercentage ? ' max=\"100\"' : '') + heightDisplay + '/>' +\n '<label' + onlyPercentDisplay + heightDisplay + '><input type=\"checkbox\" class=\"se-dialog-btn-check _se_image_check_proportion\" checked/> ' + lang.dialogBox.proportion + '</label>' +\n '<button type=\"button\" title=\"' + lang.dialogBox.revertButton + '\" aria-label=\"' + lang.dialogBox.revertButton + '\" class=\"se-btn se-dialog-btn-revert\" style=\"float: right;\">' + core.icons.revert + '</button>' +\n '</div>' ;\n }\n\n html += '' +\n '<div class=\"se-dialog-form se-dialog-form-footer\">' +\n '<label><input type=\"checkbox\" class=\"se-dialog-btn-check _se_image_check_caption\" /> ' + lang.dialogBox.caption + '</label>' +\n '</div>' +\n '</div>' +\n '</div>' +\n '<div class=\"_se_tab_content _se_tab_content_url\" style=\"display: none\">' +\n core.context.anchor.forms.innerHTML +\n '</div>' +\n '<div class=\"se-dialog-footer\">' +\n '<div' + (option.imageAlignShow ? '' : ' style=\"display: none\"') + '>' +\n '<label><input type=\"radio\" name=\"suneditor_image_radio\" class=\"se-dialog-btn-radio\" value=\"none\" checked>' + lang.dialogBox.basic + '</label>' +\n '<label><input type=\"radio\" name=\"suneditor_image_radio\" class=\"se-dialog-btn-radio\" value=\"left\">' + lang.dialogBox.left + '</label>' +\n '<label><input type=\"radio\" name=\"suneditor_image_radio\" class=\"se-dialog-btn-radio\" value=\"center\">' + lang.dialogBox.center + '</label>' +\n '<label><input type=\"radio\" name=\"suneditor_image_radio\" class=\"se-dialog-btn-radio\" value=\"right\">' + lang.dialogBox.right + '</label>' +\n '</div>' +\n '<button type=\"submit\" class=\"se-btn-primary\" title=\"' + lang.dialogBox.submitButton + '\" aria-label=\"' + lang.dialogBox.submitButton + '\"><span>' + lang.dialogBox.submitButton + '</span></button>' +\n '</div>' +\n '</form>';\n\n dialog.innerHTML = html;\n\n return dialog;\n },\n\n _fileInputChange: function () {\n if (!this.imgInputFile.value) {\n this.imgUrlFile.removeAttribute('disabled');\n this.previewSrc.style.textDecoration = '';\n } else {\n this.imgUrlFile.setAttribute('disabled', true);\n this.previewSrc.style.textDecoration = 'line-through';\n }\n },\n\n _removeSelectedFiles: function (urlInput, previewSrc) {\n this.value = '';\n if (urlInput) {\n urlInput.removeAttribute('disabled');\n previewSrc.style.textDecoration = '';\n }\n },\n\n _openGallery: function () {\n this.callPlugin('imageGallery', this.plugins.imageGallery.open.bind(this, this.plugins.image._setUrlInput.bind(this.context.image)), null);\n },\n\n _setUrlInput: function (target) {\n this.altText.value = target.alt;\n this._v_src._linkValue = this.previewSrc.textContent = this.imgUrlFile.value = target.src;\n this.imgUrlFile.focus();\n },\n\n _onLinkPreview: function (context, protocol, e) {\n const value = e.target.value.trim();\n context._linkValue = this.textContent = !value ? '' : (protocol && value.indexOf('://') === -1 && value.indexOf('#') !== 0) ? protocol + value : value.indexOf('://') === -1 ? '/' + value : value;\n },\n\n /**\n * @Override @Required fileManager\n */\n fileTags: ['img'],\n\n /**\n * @Override core, fileManager, resizing\n * @description It is called from core.selectComponent.\n * @param {Element} element Target element\n */\n select: function (element) {\n this.plugins.image.onModifyMode.call(this, element, this.plugins.resizing.call_controller_resize.call(this, element, 'image'));\n },\n\n /**\n * @Override fileManager, resizing\n */\n destroy: function (element) {\n const imageEl = element || this.context.image._element;\n const imageContainer = this.util.getParentElement(imageEl, this.util.isMediaComponent) || imageEl;\n const dataIndex = imageEl.getAttribute('data-index') * 1;\n let focusEl = (imageContainer.previousElementSibling || imageContainer.nextElementSibling);\n \n const emptyDiv = imageContainer.parentNode;\n this.util.removeItem(imageContainer);\n this.plugins.image.init.call(this);\n this.controllersOff();\n\n if (emptyDiv !== this.context.element.wysiwyg) this.util.removeItemAllParents(emptyDiv, function (current) { return current.childNodes.length === 0; }, null);\n\n // focus\n this.focusEdge(focusEl);\n \n // event\n this.plugins.fileManager.deleteInfo.call(this, 'image', dataIndex, this.functions.onImageUpload);\n\n // history stack\n this.history.push(false);\n },\n\n /**\n * @Required @Override dialog\n */\n on: function (update) {\n const contextImage = this.context.image;\n \n if (!update) {\n contextImage.inputX.value = contextImage._origin_w = this.options.imageWidth === contextImage._defaultSizeX ? '' : this.options.imageWidth;\n contextImage.inputY.value = contextImage._origin_h = this.options.imageHeight === contextImage._defaultSizeY ? '' : this.options.imageHeight;\n if (contextImage.imgInputFile && this.options.imageMultipleFile) contextImage.imgInputFile.setAttribute('multiple', 'multiple');\n } else {\n if (contextImage.imgInputFile && this.options.imageMultipleFile) contextImage.imgInputFile.removeAttribute('multiple');\n }\n this.plugins.anchor.on.call(this, contextImage.anchorCtx, update);\n },\n\n /**\n * @Required @Override dialog\n */\n open: function () {\n this.plugins.dialog.open.call(this, 'image', 'image' === this.currentControllerName);\n },\n\n openTab: function (e) {\n const modal = this.context.image.modal;\n const targetElement = (e === 'init' ? modal.querySelector('._se_tab_link') : e.target);\n\n if (!/^BUTTON$/i.test(targetElement.tagName)) {\n return false;\n }\n\n // Declare all variables\n const tabName = targetElement.getAttribute('data-tab-link');\n const contentClassName = '_se_tab_content';\n let i, tabContent, tabLinks;\n\n // Get all elements with class=\"tabcontent\" and hide them\n tabContent = modal.getElementsByClassName(contentClassName);\n for (i = 0; i < tabContent.length; i++) {\n tabContent[i].style.display = 'none';\n }\n\n // Get all elements with class=\"tablinks\" and remove the class \"active\"\n tabLinks = modal.getElementsByClassName('_se_tab_link');\n for (i = 0; i < tabLinks.length; i++) {\n this.util.removeClass(tabLinks[i], 'active');\n }\n\n // Show the current tab, and add an \"active\" class to the button that opened the tab\n modal.querySelector('.' + contentClassName + '_' + tabName).style.display = 'block';\n this.util.addClass(targetElement, 'active');\n\n // focus\n if (tabName === 'image' && this.context.image.focusElement) {\n this.context.image.focusElement.focus();\n } else if (tabName === 'url') {\n this.context.anchor.caller.image.urlInput.focus();\n }\n\n return false;\n },\n\n submit: function (e) {\n const contextImage = this.context.image;\n const imagePlugin = this.plugins.image;\n\n e.preventDefault();\n e.stopPropagation();\n\n contextImage._altText = contextImage.altText.value;\n contextImage._align = contextImage.modal.querySelector('input[name=\"suneditor_image_radio\"]:checked').value;\n contextImage._captionChecked = contextImage.captionCheckEl.checked;\n if (contextImage._resizing) contextImage._proportionChecked = contextImage.proportion.checked;\n\n try {\n if (this.context.dialog.updateModal) {\n imagePlugin.update_image.call(this, false, true, false);\n }\n \n if (contextImage.imgInputFile && contextImage.imgInputFile.files.length > 0) {\n this.showLoading();\n imagePlugin.submitAction.call(this, this.context.image.imgInputFile.files);\n } else if (contextImage.imgUrlFile && contextImage._v_src._linkValue.length > 0) {\n this.showLoading();\n imagePlugin.onRender_imgUrl.call(this, contextImage._v_src._linkValue);\n }\n } catch (error) {\n this.closeLoading();\n throw Error('[SUNEDITOR.image.submit.fail] cause : \"' + error.message + '\"');\n } finally {\n this.plugins.dialog.close.call(this);\n }\n\n return false;\n },\n\n submitAction: function (fileList) {\n if (fileList.length === 0) return;\n\n let fileSize = 0;\n let files = [];\n for (let i = 0, len = fileList.length; i < len; i++) {\n if (/image/i.test(fileList[i].type)) {\n files.push(fileList[i]);\n fileSize += fileList[i].size;\n }\n }\n\n const limitSize = this.options.imageUploadSizeLimit;\n if (limitSize > 0) {\n let infoSize = 0;\n const imagesInfo = this.context.image._infoList;\n for (let i = 0, len = imagesInfo.length; i < len; i++) {\n infoSize += imagesInfo[i].size * 1;\n }\n\n if ((fileSize + infoSize) > limitSize) {\n this.closeLoading();\n const err = '[SUNEDITOR.imageUpload.fail] Size of uploadable total images: ' + (limitSize/1000) + 'KB';\n if (typeof this.functions.onImageUploadError !== 'function' || this.functions.onImageUploadError(err, { 'limitSize': limitSize, 'currentSize': infoSize, 'uploadSize': fileSize }, this)) {\n this.functions.noticeOpen(err);\n }\n return;\n }\n }\n\n const contextImage = this.context.image;\n contextImage._uploadFileLength = files.length;\n \n const anchor = this.plugins.anchor.createAnchor.call(this, contextImage.anchorCtx, true);\n const info = {\n anchor: anchor,\n inputWidth: contextImage.inputX.value,\n inputHeight: contextImage.inputY.value,\n align: contextImage._align,\n isUpdate: this.context.dialog.updateModal,\n alt: contextImage._altText,\n element: contextImage._element\n };\n\n if (typeof this.functions.onImageUploadBefore === 'function') {\n const result = this.functions.onImageUploadBefore(files, info, this, function (data) {\n if (data && this._w.Array.isArray(data.result)) {\n this.plugins.image.register.call(this, info, data);\n } else {\n this.plugins.image.upload.call(this, info, data);\n }\n }.bind(this));\n \n if (typeof result === 'undefined') return;\n if (!result) {\n this.closeLoading();\n return;\n }\n if (this._w.Array.isArray(result) && result.length > 0) files = result;\n }\n\n this.plugins.image.upload.call(this, info, files);\n },\n\n error: function (message, response) {\n this.closeLoading();\n if (typeof this.functions.onImageUploadError !== 'function' || this.functions.onImageUploadError(message, response, this)) {\n this.functions.noticeOpen(message);\n throw Error('[SUNEDITOR.plugin.image.error] response: ' + message);\n }\n },\n\n upload: function (info, files) {\n if (!files) {\n this.closeLoading();\n return;\n }\n if (typeof files === 'string') {\n this.plugins.image.error.call(this, files, null);\n return;\n }\n\n const imageUploadUrl = this.options.imageUploadUrl;\n const filesLen = this.context.dialog.updateModal ? 1 : files.length;\n\n // server upload\n if (typeof imageUploadUrl === 'string' && imageUploadUrl.length > 0) {\n const formData = new FormData();\n for (let i = 0; i < filesLen; i++) {\n formData.append('file-' + i, files[i]);\n }\n this.plugins.fileManager.upload.call(this, imageUploadUrl, this.options.imageUploadHeader, formData, this.plugins.image.callBack_imgUpload.bind(this, info), this.functions.onImageUploadError);\n } else { // base64\n this.plugins.image.setup_reader.call(this, files, info.anchor, info.inputWidth, info.inputHeight, info.align, info.alt, filesLen, info.isUpdate);\n }\n },\n\n callBack_imgUpload: function (info, xmlHttp) {\n if (typeof this.functions.imageUploadHandler === 'function') {\n this.functions.imageUploadHandler(xmlHttp, info, this);\n } else {\n const response = JSON.parse(xmlHttp.responseText);\n if (response.errorMessage) {\n this.plugins.image.error.call(this, response.errorMessage, response);\n } else {\n this.plugins.image.register.call(this, info, response);\n }\n }\n },\n\n register: function (info, response) {\n const fileList = response.result;\n\n for (let i = 0, len = fileList.length, file; i < len; i++) {\n file = { name: fileList[i].name, size: fileList[i].size };\n if (info.isUpdate) {\n this.plugins.image.update_src.call(this, fileList[i].url, info.element, file);\n break;\n } else {\n this.plugins.image.create_image.call(this, fileList[i].url, info.anchor, info.inputWidth, info.inputHeight, info.align, file, info.alt);\n }\n }\n \n this.closeLoading();\n },\n\n setup_reader: function (files, anchor, width, height, align, alt, filesLen, isUpdate) {\n try {\n this.context.image.base64RenderIndex = filesLen;\n const wFileReader = this._w.FileReader;\n const filesStack = [filesLen];\n this.context.image.inputX.value = width;\n this.context.image.inputY.value = height;\n \n for (let i = 0, reader, file; i < filesLen; i++) {\n reader = new wFileReader();\n file = files[i];\n \n reader.onload = function (reader, update, updateElement, file, index) {\n filesStack[index] = { result: reader.result, file: file };\n\n if (--this.context.image.base64RenderIndex === 0) {\n this.plugins.image.onRender_imgBase64.call(this, update, filesStack, updateElement, anchor, width, height, align, alt);\n this.closeLoading();\n }\n }.bind(this, reader, isUpdate, this.context.image._element, file, i);\n\n reader.readAsDataURL(file);\n }\n } catch (e) {\n this.closeLoading();\n throw Error('[SUNEDITOR.image.setup_reader.fail] cause : \"' + e.message + '\"');\n }\n },\n\n onRender_imgBase64: function (update, filesStack, updateElement, anchor, width, height, align, alt) {\n const updateMethod = this.plugins.image.update_src;\n const createMethod = this.plugins.image.create_image;\n \n for (let i = 0, len = filesStack.length; i < len; i++) {\n if (update) {\n this.context.image._element.setAttribute('data-file-name', filesStack[i].file.name);\n this.context.image._element.setAttribute('data-file-size', filesStack[i].file.size);\n updateMethod.call(this, filesStack[i].result, updateElement, filesStack[i].file);\n } else {\n createMethod.call(this, filesStack[i].result, anchor, width, height, align, filesStack[i].file, alt);\n }\n }\n },\n\n onRender_imgUrl: function (url) {\n if (!url) url = this.context.image._v_src._linkValue;\n if (!url) return false;\n const contextImage = this.context.image;\n\n try {\n const file = {name: url.split('/').pop(), size: 0};\n if (this.context.dialog.updateModal) this.plugins.image.update_src.call(this, url, contextImage._element, file);\n else this.plugins.image.create_image.call(this, url, this.plugins.anchor.createAnchor.call(this, contextImage.anchorCtx, true), contextImage.inputX.value, contextImage.inputY.value, contextImage._align, file, contextImage._altText);\n } catch (e) {\n throw Error('[SUNEDITOR.image.URLRendering.fail] cause : \"' + e.message + '\"');\n } finally {\n this.closeLoading();\n }\n },\n\n onRender_link: function (imgTag, anchor) {\n if (anchor) {\n anchor.setAttribute('data-image-link', 'image');\n imgTag.setAttribute('data-image-link', anchor.href);\n anchor.appendChild(imgTag);\n return anchor;\n }\n\n return imgTag;\n },\n\n /**\n * @Override resizing\n * @param {String} xy 'x': width, 'y': height\n * @param {KeyboardEvent} e Event object\n */\n setInputSize: function (xy, e) {\n if (e && e.keyCode === 32) {\n e.preventDefault();\n return;\n }\n\n this.plugins.resizing._module_setInputSize.call(this, this.context.image, xy);\n },\n\n /**\n * @Override resizing\n */\n setRatio: function () {\n this.plugins.resizing._module_setRatio.call(this, this.context.image);\n },\n\n /**\n * @Override fileManager\n */\n checkFileInfo: function () {\n const imagePlugin = this.plugins.image;\n const contextImage = this.context.image;\n\n const modifyHandler = function (tag) {\n imagePlugin.onModifyMode.call(this, tag, null);\n imagePlugin.openModify.call(this, true);\n // get size\n contextImage.inputX.value = contextImage._origin_w;\n contextImage.inputY.value = contextImage._origin_h;\n // get align\n const format = this.util.getFormatElement(tag);\n if (format) contextImage._align = format.style.textAlign || format.style.float;\n // link\n if (this.util.isAnchor(tag.parentNode) && !contextImage.anchorCtx.linkValue) contextImage.anchorCtx.linkValue = ' ';\n \n imagePlugin.update_image.call(this, true, false, true);\n imagePlugin.init.call(this);\n }.bind(this);\n\n this.plugins.fileManager.checkInfo.call(this, 'image', ['img'], this.functions.onImageUpload, modifyHandler, true);\n },\n\n /**\n * @Override fileManager\n */\n resetFileInfo: function () {\n this.plugins.fileManager.resetInfo.call(this, 'image', this.functions.onImageUpload);\n },\n\n create_image: function (src, anchor, width, height, align, file, alt) {\n const imagePlugin = this.plugins.image;\n const contextImage = this.context.image;\n this.context.resizing._resize_plugin = 'image';\n\n let oImg = this.util.createElement('IMG');\n oImg.src = src;\n oImg.alt = alt;\n oImg.setAttribute('data-rotate', '0');\n anchor = imagePlugin.onRender_link.call(this, oImg, anchor ? anchor.cloneNode(false) : null);\n\n if (contextImage._resizing) {\n oImg.setAttribute('data-proportion', contextImage._proportionChecked);\n }\n\n const cover = this.plugins.component.set_cover.call(this, anchor);\n const container = this.plugins.component.set_container.call(this, cover, 'se-image-container');\n\n // caption\n if (contextImage._captionChecked) {\n contextImage._caption = this.plugins.component.create_caption.call(this);\n cover.appendChild(contextImage._caption);\n }\n\n contextImage._element = oImg;\n contextImage._cover = cover;\n contextImage._container = container;\n\n // set size\n imagePlugin.applySize.call(this, width, height);\n\n // align\n imagePlugin.setAlign.call(this, align, oImg, cover, container);\n\n oImg.onload = imagePlugin._image_create_onload.bind(this, oImg, contextImage.svgDefaultSize, container);\n if (this.insertComponent(container, true, true, true)) this.plugins.fileManager.setInfo.call(this, 'image', oImg, this.functions.onImageUpload, file, true);\n this.context.resizing._resize_plugin = '';\n },\n\n _image_create_onload: function (oImg, svgDefaultSize, container) {\n // svg exception handling\n if (oImg.offsetWidth === 0) this.plugins.image.applySize.call(this, svgDefaultSize, '');\n if (this.options.mediaAutoSelect) {\n this.selectComponent(oImg, 'image');\n } else {\n const line = this.appendFormatTag(container, null);\n if (line) this.setRange(line, 0, line, 0);\n }\n },\n\n update_image: function (init, openController, notHistoryPush) {\n const contextImage = this.context.image;\n let imageEl = contextImage._element;\n let cover = contextImage._cover;\n let container = contextImage._container;\n let isNewContainer = false;\n\n if (cover === null) {\n isNewContainer = true;\n imageEl = contextImage._element.cloneNode(true);\n cover = this.plugins.component.set_cover.call(this, imageEl);\n }\n\n if (container === null) {\n cover = cover.cloneNode(true);\n imageEl = cover.querySelector('img');\n isNewContainer = true;\n container = this.plugins.component.set_container.call(this, cover, 'se-image-container');\n } else if (isNewContainer) {\n container.innerHTML = '';\n container.appendChild(cover);\n contextImage._cover = cover;\n contextImage._element = imageEl;\n isNewContainer = false;\n }\n\n // check size\n let changeSize;\n const x = this.util.isNumber(contextImage.inputX.value) ? contextImage.inputX.value + contextImage.sizeUnit : contextImage.inputX.value;\n const y = this.util.isNumber(contextImage.inputY.value) ? contextImage.inputY.value + contextImage.sizeUnit : contextImage.inputY.value;\n if (/%$/.test(imageEl.style.width)) {\n changeSize = x !== container.style.width || y !== container.style.height;\n } else {\n changeSize = x !== imageEl.style.width || y !== imageEl.style.height;\n }\n\n // alt\n imageEl.alt = contextImage._altText;\n \n // caption\n let modifiedCaption = false;\n if (contextImage._captionChecked) {\n if (!contextImage._caption) {\n contextImage._caption = this.plugins.component.create_caption.call(this);\n cover.appendChild(contextImage._caption);\n modifiedCaption = true;\n }\n } else {\n if (contextImage._caption) {\n this.util.removeItem(contextImage._caption);\n contextImage._caption = null;\n modifiedCaption = true;\n }\n }\n\n // link\n let isNewAnchor = null;\n const anchor = this.plugins.anchor.createAnchor.call(this, contextImage.anchorCtx, true);\n if (anchor) {\n if (contextImage._linkElement !== anchor || (isNewContainer && !container.contains(anchor))) {\n contextImage._linkElement = anchor.cloneNode(false);\n cover.insertBefore(this.plugins.image.onRender_link.call(this, imageEl, contextImage._linkElement), contextImage._caption);\n isNewAnchor = contextImage._element;\n } else {\n contextImage._linkElement.setAttribute('data-image-link', 'image');\n }\n } else if (contextImage._linkElement !== null) {\n const imageElement = imageEl;\n imageElement.setAttribute('data-image-link', '');\n if (cover.contains(contextImage._linkElement)) {\n const newEl = imageElement.cloneNode(true);\n cover.removeChild(contextImage._linkElement);\n cover.insertBefore(newEl, contextImage._caption);\n contextImage._element = imageEl = newEl;\n }\n }\n\n let existElement = null;\n if (isNewContainer) {\n existElement = (this.util.isRangeFormatElement(contextImage._element.parentNode) || this.util.isWysiwygDiv(contextImage._element.parentNode)) ? \n contextImage._element : \n this.util.isAnchor(contextImage._element.parentNode) ? contextImage._element.parentNode : this.util.getFormatElement(contextImage._element) || contextImage._element;\n \n if (this.util.getParentElement(contextImage._element, this.util.isNotCheckingNode)) {\n existElement = isNewAnchor ? anchor : contextImage._element;\n existElement.parentNode.replaceChild(container, existElement);\n } else if (this.util.isListCell(existElement)) {\n const refer = this.util.getParentElement(contextImage._element, function (current) { return current.parentNode === existElement; });\n existElement.insertBefore(container, refer);\n this.util.removeItem(contextImage._element);\n this.util.removeEmptyNode(refer, null, true);\n } else if (this.util.isFormatElement(existElement)) {\n const refer = this.util.getParentElement(contextImage._element, function (current) { return current.parentNode === existElement; });\n existElement = this.util.splitElement(existElement, refer);\n existElement.parentNode.insertBefore(container, existElement);\n this.util.removeItem(contextImage._element);\n this.util.removeEmptyNode(existElement, null, true);\n if (existElement.children.length === 0) existElement.innerHTML = this.util.htmlRemoveWhiteSpace(existElement.innerHTML);\n } else {\n if (this.util.isFormatElement(existElement.parentNode)) {\n const formats = existElement.parentNode;\n formats.parentNode.insertBefore(container, existElement.previousSibling ? formats.nextElementSibling : formats);\n if (contextImage.__updateTags.map(function (current) { return existElement.contains(current); }).length === 0) this.util.removeItem(existElement);\n } else {\n existElement.parentNode.replaceChild(container, existElement);\n }\n }\n\n imageEl = container.querySelector('img');\n\n contextImage._element = imageEl;\n contextImage._cover = cover;\n contextImage._container = container;\n }\n\n if (isNewAnchor) {\n if (!isNewContainer) {\n this.util.removeItem(anchor);\n } else {\n this.util.removeItem(isNewAnchor);\n if (this.util.getListChildren(anchor, function (current) { return /IMG/i.test(current.tagName); }).length === 0) {\n this.util.removeItem(anchor);\n }\n }\n }\n\n // transform\n if (modifiedCaption || (!contextImage._onlyPercentage && changeSize)) {\n if (!init && (/\\d+/.test(imageEl.style.height) || (this.context.resizing._rotateVertical && contextImage._captionChecked))) {\n if (/%$/.test(contextImage.inputX.value) || /%$/.test(contextImage.inputY.value)) {\n this.plugins.resizing.resetTransform.call(this, imageEl);\n } else {\n this.plugins.resizing.setTransformSize.call(this, imageEl, this.util.getNumber(contextImage.inputX.value, 0), this.util.getNumber(contextImage.inputY.value, 0));\n }\n }\n }\n\n // size\n if (contextImage._resizing) {\n imageEl.setAttribute('data-proportion', contextImage._proportionChecked);\n if (changeSize) {\n this.plugins.image.applySize.call(this);\n }\n }\n\n // align\n this.plugins.image.setAlign.call(this, null, imageEl, null, null);\n\n // set imagesInfo\n if (init) {\n this.plugins.fileManager.setInfo.call(this, 'image', imageEl, this.functions.onImageUpload, null, true);\n }\n\n if (openController) {\n this.selectComponent(imageEl, 'image');\n }\n\n // history stack\n if (!notHistoryPush) this.history.push(false);\n },\n\n update_src: function (src, element, file) {\n element.src = src;\n this._w.setTimeout(this.plugins.fileManager.setInfo.bind(this, 'image', element, this.functions.onImageUpload, file, true));\n this.selectComponent(element, 'image');\n },\n\n /**\n * @Required @Override fileManager, resizing\n */\n onModifyMode: function (element, size) {\n if (!element) return;\n \n const contextImage = this.context.image;\n contextImage._linkElement = contextImage.anchorCtx.linkAnchor = this.util.isAnchor(element.parentNode) ? element.parentNode : null;\n contextImage._element = element;\n contextImage._cover = this.util.getParentElement(element, 'FIGURE');\n contextImage._container = this.util.getParentElement(element, this.util.isMediaComponent);\n contextImage._caption = this.util.getChildElement(contextImage._cover, 'FIGCAPTION');\n contextImage._align = element.getAttribute('data-align') || element.style.float || 'none';\n element.style.float = '';\n this.plugins.anchor.setCtx(contextImage._linkElement, contextImage.anchorCtx);\n\n if (size) {\n contextImage._element_w = size.w;\n contextImage._element_h = size.h;\n contextImage._element_t = size.t;\n contextImage._element_l = size.l;\n }\n\n let userSize = contextImage._element.getAttribute('data-size') || contextImage._element.getAttribute('data-origin');\n let w, h;\n if (userSize) {\n userSize = userSize.split(',');\n w = userSize[0];\n h = userSize[1];\n } else if (size) {\n w = size.w;\n h = size.h;\n }\n\n contextImage._origin_w = w || element.style.width || element.width || '';\n contextImage._origin_h = h || element.style.height || element.height || '';\n },\n\n /**\n * @Required @Override fileManager, resizing\n */\n openModify: function (notOpen) {\n const contextImage = this.context.image;\n if (contextImage.imgUrlFile) {\n contextImage._v_src._linkValue = contextImage.previewSrc.textContent = contextImage.imgUrlFile.value = contextImage._element.src;\n }\n contextImage._altText = contextImage.altText.value = contextImage._element.alt;\n (contextImage.modal.querySelector('input[name=\"suneditor_image_radio\"][value=\"' + contextImage._align + '\"]') || contextImage.modal.querySelector('input[name=\"suneditor_image_radio\"][value=\"none\"]')).checked = true;\n contextImage._align = contextImage.modal.querySelector('input[name=\"suneditor_image_radio\"]:checked').value;\n contextImage._captionChecked = contextImage.captionCheckEl.checked = !!contextImage._caption;\n \n if (contextImage._resizing) {\n this.plugins.resizing._module_setModifyInputSize.call(this, contextImage, this.plugins.image);\n }\n\n if (!notOpen) this.plugins.dialog.open.call(this, 'image', true);\n },\n\n /**\n * @Override fileManager\n */\n applySize: function (w, h) {\n const contextImage = this.context.image;\n\n if (!w) w = contextImage.inputX.value || this.options.imageWidth;\n if (!h) h = contextImage.inputY.value || this.options.imageHeight;\n \n if ((contextImage._onlyPercentage && !!w) || /%$/.test(w)) {\n this.plugins.image.setPercentSize.call(this, w, h);\n return true;\n } else if ((!w || w === 'auto') && (!h || h === 'auto')) {\n this.plugins.image.setAutoSize.call(this);\n } else {\n this.plugins.image.setSize.call(this, w, h, false);\n }\n\n return false;\n },\n\n /**\n * @Override resizing\n */\n sizeRevert: function () {\n this.plugins.resizing._module_sizeRevert.call(this, this.context.image);\n },\n\n /**\n * @Override resizing\n */\n setSize: function (w, h, notResetPercentage, direction) {\n const contextImage = this.context.image;\n const onlyW = /^(rw|lw)$/.test(direction) && /\\d+/.test(contextImage._element.style.height);\n const onlyH = /^(th|bh)$/.test(direction) && /\\d+/.test(contextImage._element.style.width);\n\n if (!onlyH) {\n contextImage._element.style.width = this.util.isNumber(w) ? w + contextImage.sizeUnit : w;\n this.plugins.image.cancelPercentAttr.call(this);\n }\n if (!onlyW) {\n contextImage._element.style.height = this.util.isNumber(h) ? h + contextImage.sizeUnit : /%$/.test(h) ? '' : h;\n }\n\n if (contextImage._align === 'center') this.plugins.image.setAlign.call(this, null, null, null, null);\n if (!notResetPercentage) contextImage._element.removeAttribute('data-percentage');\n\n // save current size\n this.plugins.resizing._module_saveCurrentSize.call(this, contextImage);\n },\n\n /**\n * @Override resizing\n */\n setAutoSize: function () {\n const contextImage = this.context.image;\n\n if (contextImage._caption) contextImage._caption.style.marginTop = '';\n this.plugins.resizing.resetTransform.call(this, contextImage._element);\n this.plugins.image.cancelPercentAttr.call(this);\n\n contextImage._element.style.maxWidth = '';\n contextImage._element.style.width = '';\n contextImage._element.style.height = '';\n contextImage._cover.style.width = '';\n contextImage._cover.style.height = '';\n\n this.plugins.image.setAlign.call(this, null, null, null, null);\n contextImage._element.setAttribute('data-percentage', 'auto,auto');\n\n // save current size\n this.plugins.resizing._module_saveCurrentSize.call(this, contextImage);\n },\n \n /**\n * @Override resizing\n */\n setOriginSize: function () {\n const contextImage = this.context.image;\n contextImage._element.removeAttribute('data-percentage');\n\n this.plugins.resizing.resetTransform.call(this, contextImage._element);\n this.plugins.image.cancelPercentAttr.call(this);\n\n const originSize = (contextImage._element.getAttribute('data-origin') || '').split(',');\n const w = originSize[0];\n const h = originSize[1];\n\n if (originSize) {\n if (contextImage._onlyPercentage || (/%$/.test(w) && (/%$/.test(h) || !/\\d/.test(h)))) {\n this.plugins.image.setPercentSize.call(this, w, h);\n } else {\n this.plugins.image.setSize.call(this, w, h);\n }\n\n // save current size\n this.plugins.resizing._module_saveCurrentSize.call(this, contextImage);\n }\n },\n\n /**\n * @Override resizing\n */\n setPercentSize: function (w, h) {\n const contextImage = this.context.image;\n h = !!h && !/%$/.test(h) && !this.util.getNumber(h, 0) ? this.util.isNumber(h) ? h + '%' : h : this.util.isNumber(h) ? h + contextImage.sizeUnit : (h || '');\n const heightPercentage = /%$/.test(h);\n\n contextImage._container.style.width = this.util.isNumber(w) ? w + '%' : w;\n contextImage._container.style.height = '';\n contextImage._cover.style.width = '100%';\n contextImage._cover.style.height = !heightPercentage ? '' : h;\n contextImage._element.style.width = '100%';\n contextImage._element.style.height = heightPercentage ? '' : h;\n contextImage._element.style.maxWidth = '';\n\n if (contextImage._align === 'center') this.plugins.image.setAlign.call(this, null, null, null, null);\n\n contextImage._element.setAttribute('data-percentage', w + ',' + h);\n this.plugins.resizing.setCaptionPosition.call(this, contextImage._element);\n\n // save current size\n this.plugins.resizing._module_saveCurrentSize.call(this, contextImage);\n },\n\n /**\n * @Override resizing\n */\n cancelPercentAttr: function () {\n const contextImage = this.context.image;\n \n contextImage._cover.style.width = '';\n contextImage._cover.style.height = '';\n contextImage._container.style.width = '';\n contextImage._container.style.height = '';\n\n this.util.removeClass(contextImage._container, this.context.image._floatClassRegExp);\n this.util.addClass(contextImage._container, '__se__float-' + contextImage._align);\n\n if (contextImage._align === 'center') this.plugins.image.setAlign.call(this, null, null, null, null);\n },\n\n /**\n * @Override resizing\n */\n setAlign: function (align, element, cover, container) {\n const contextImage = this.context.image;\n \n if (!align) align = contextImage._align;\n if (!element) element = contextImage._element;\n if (!cover) cover = contextImage._cover;\n if (!container) container = contextImage._container;\n\n if (/%$/.test(element.style.width) && align === 'center') {\n container.style.minWidth = '100%';\n cover.style.width = container.style.width;\n } else {\n container.style.minWidth = '';\n cover.style.width = this.context.resizing._rotateVertical ? (element.style.height || element.offsetHeight) : ((!element.style.width || element.style.width === 'auto') ? '' : element.style.width || '100%');\n }\n\n if (!this.util.hasClass(container, '__se__float-' + align)) {\n this.util.removeClass(container, contextImage._floatClassRegExp);\n this.util.addClass(container, '__se__float-' + align);\n }\n \n element.setAttribute('data-align', align);\n },\n\n /**\n * @Override dialog\n */\n init: function () {\n const contextImage = this.context.image;\n if (contextImage.imgInputFile) contextImage.imgInputFile.value = '';\n if (contextImage.imgUrlFile) contextImage._v_src._linkValue = contextImage.previewSrc.textContent = contextImage.imgUrlFile.value = '';\n if (contextImage.imgInputFile && contextImage.imgUrlFile) {\n contextImage.imgUrlFile.removeAttribute('disabled');\n contextImage.previewSrc.style.textDecoration = '';\n }\n\n contextImage.altText.value = '';\n contextImage.modal.querySelector('input[name=\"suneditor_image_radio\"][value=\"none\"]').checked = true;\n contextImage.captionCheckEl.checked = false;\n contextImage._element = null;\n this.plugins.image.openTab.call(this, 'init');\n\n if (contextImage._resizing) {\n contextImage.inputX.value = this.options.imageWidth === contextImage._defaultSizeX ? '' : this.options.imageWidth;\n contextImage.inputY.value = this.options.imageHeight === contextImage._defaultSizeY ? '' : this.options.imageHeight;\n contextImage.proportion.checked = true;\n contextImage._ratio = false;\n contextImage._ratioX = 1;\n contextImage._ratioY = 1;\n }\n\n this.plugins.anchor.init.call(this, contextImage.anchorCtx);\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nimport dialog from '../modules/dialog';\nimport component from '../modules/component';\nimport resizing from '../modules/resizing';\nimport fileManager from '../modules/fileManager';\n\nexport default {\n name: 'video',\n display: 'dialog',\n add: function (core) {\n core.addModule([dialog, component, resizing, fileManager]);\n\n const options = core.options;\n const context = core.context;\n const contextVideo = context.video = {\n _infoList: [], // @Override fileManager\n _infoIndex: 0, // @Override fileManager\n _uploadFileLength: 0, // @Override fileManager\n focusElement: null, // @Override dialog // This element has focus when the dialog is opened.\n sizeUnit: options._videoSizeUnit,\n _align: 'none',\n _floatClassRegExp: '__se__float\\\\-[a-z]+',\n _youtubeQuery: options.youtubeQuery,\n _videoRatio: (options.videoRatio * 100) + '%',\n _defaultRatio: (options.videoRatio * 100) + '%',\n _linkValue: '',\n // @require @Override component\n _element: null,\n _cover: null,\n _container: null,\n // @Override resizing properties\n inputX: null,\n inputY: null,\n _element_w: 1,\n _element_h: 1,\n _element_l: 0,\n _element_t: 0,\n _defaultSizeX: '100%',\n _defaultSizeY: (options.videoRatio * 100) + '%',\n _origin_w: options.videoWidth === '100%' ? '' : options.videoWidth,\n _origin_h: options.videoHeight === '56.25%' ? '' : options.videoHeight,\n _proportionChecked: true,\n _resizing: options.videoResizing,\n _resizeDotHide: !options.videoHeightShow,\n _rotation: options.videoRotation,\n _alignHide: !options.videoAlignShow,\n _onlyPercentage: options.videoSizeOnlyPercentage,\n _ratio: false,\n _ratioX: 1,\n _ratioY: 1,\n _captionShow: false\n };\n\n /** video dialog */\n let video_dialog = this.setDialog(core);\n contextVideo.modal = video_dialog;\n contextVideo.videoInputFile = video_dialog.querySelector('._se_video_file');\n contextVideo.videoUrlFile = video_dialog.querySelector('.se-input-url');\n contextVideo.focusElement = contextVideo.videoUrlFile || contextVideo.videoInputFile;\n contextVideo.preview = video_dialog.querySelector('.se-link-preview');\n\n /** add event listeners */\n video_dialog.querySelector('form').addEventListener('submit', this.submit.bind(core));\n if (contextVideo.videoInputFile) video_dialog.querySelector('.se-dialog-files-edge-button').addEventListener('click', this._removeSelectedFiles.bind(contextVideo.videoInputFile, contextVideo.videoUrlFile, contextVideo.preview));\n if (contextVideo.videoInputFile && contextVideo.videoUrlFile) contextVideo.videoInputFile.addEventListener('change', this._fileInputChange.bind(contextVideo));\n if (contextVideo.videoUrlFile) contextVideo.videoUrlFile.addEventListener('input', this._onLinkPreview.bind(contextVideo.preview, contextVideo, options.linkProtocol));\n\n contextVideo.proportion = {};\n contextVideo.videoRatioOption = {};\n contextVideo.inputX = {};\n contextVideo.inputY = {};\n if (options.videoResizing) {\n contextVideo.proportion = video_dialog.querySelector('._se_video_check_proportion');\n contextVideo.videoRatioOption = video_dialog.querySelector('.se-video-ratio');\n contextVideo.inputX = video_dialog.querySelector('._se_video_size_x');\n contextVideo.inputY = video_dialog.querySelector('._se_video_size_y');\n contextVideo.inputX.value = options.videoWidth;\n contextVideo.inputY.value = options.videoHeight;\n\n contextVideo.inputX.addEventListener('keyup', this.setInputSize.bind(core, 'x'));\n contextVideo.inputY.addEventListener('keyup', this.setInputSize.bind(core, 'y'));\n\n contextVideo.inputX.addEventListener('change', this.setRatio.bind(core));\n contextVideo.inputY.addEventListener('change', this.setRatio.bind(core));\n contextVideo.proportion.addEventListener('change', this.setRatio.bind(core));\n contextVideo.videoRatioOption.addEventListener('change', this.setVideoRatio.bind(core));\n\n video_dialog.querySelector('.se-dialog-btn-revert').addEventListener('click', this.sizeRevert.bind(core));\n }\n\n /** append html */\n context.dialog.modal.appendChild(video_dialog);\n\n /** empty memory */\n video_dialog = null;\n },\n\n /** dialog */\n setDialog: function (core) {\n const option = core.options;\n const lang = core.lang;\n const dialog = core.util.createElement('DIV');\n\n dialog.className = 'se-dialog-content';\n dialog.style.display = 'none';\n let html = '' +\n '<form method=\"post\" enctype=\"multipart/form-data\">' +\n '<div class=\"se-dialog-header\">' +\n '<button type=\"button\" data-command=\"close\" class=\"se-btn se-dialog-close\" title=\"' + lang.dialogBox.close + '\" aria-label=\"' + lang.dialogBox.close + '\">' +\n core.icons.cancel +\n '</button>' +\n '<span class=\"se-modal-title\">' + lang.dialogBox.videoBox.title + '</span>' +\n '</div>' +\n '<div class=\"se-dialog-body\">';\n\n if (option.videoFileInput) {\n html += '' +\n '<div class=\"se-dialog-form\">' +\n '<label>' + lang.dialogBox.videoBox.file + '</label>' +\n '<div class=\"se-dialog-form-files\">' +\n '<input class=\"se-input-form _se_video_file\" type=\"file\" accept=\"' + option.videoAccept + '\"' + (option.videoMultipleFile ? ' multiple=\"multiple\"' : '') + '/>' +\n '<button type=\"button\" data-command=\"filesRemove\" class=\"se-btn se-dialog-files-edge-button se-file-remove\" title=\"' + lang.controller.remove + '\" aria-label=\"' + lang.controller.remove + '\">' + core.icons.cancel + '</button>' +\n '</div>' +\n '</div>' ;\n }\n \n if (option.videoUrlInput) {\n html += '' +\n '<div class=\"se-dialog-form\">' +\n '<label>' + lang.dialogBox.videoBox.url + '</label>' +\n '<input class=\"se-input-form se-input-url\" type=\"text\" />' +\n '<pre class=\"se-link-preview\"></pre>' +\n '</div>';\n }\n\n if (option.videoResizing) {\n const ratioList = option.videoRatioList || [{name: '16:9', value: 0.5625}, {name: '4:3', value: 0.75}, {name: '21:9', value: 0.4285}];\n const ratio = option.videoRatio;\n const onlyPercentage = option.videoSizeOnlyPercentage;\n const onlyPercentDisplay = onlyPercentage ? ' style=\"display: none !important;\"' : '';\n const heightDisplay = !option.videoHeightShow ? ' style=\"display: none !important;\"' : '';\n const ratioDisplay = !option.videoRatioShow ? ' style=\"display: none !important;\"' : '';\n const onlyWidthDisplay = !onlyPercentage && !option.videoHeightShow && !option.videoRatioShow ? ' style=\"display: none !important;\"' : '';\n html += '' +\n '<div class=\"se-dialog-form\">' +\n '<div class=\"se-dialog-size-text\">' +\n '<label class=\"size-w\">' + lang.dialogBox.width + '</label>' +\n '<label class=\"se-dialog-size-x\"> </label>' +\n '<label class=\"size-h\"' + heightDisplay + '>' + lang.dialogBox.height + '</label>' +\n '<label class=\"size-h\"' + ratioDisplay + '>(' + lang.dialogBox.ratio + ')</label>' +\n '</div>' +\n '<input class=\"se-input-control _se_video_size_x\" placeholder=\"100%\"' + (onlyPercentage ? ' type=\"number\" min=\"1\"' : 'type=\"text\"') + (onlyPercentage ? ' max=\"100\"' : '') + '/>' +\n '<label class=\"se-dialog-size-x\"' + onlyWidthDisplay + '>' + (onlyPercentage ? '%' : 'x') + '</label>' +\n '<input class=\"se-input-control _se_video_size_y\" placeholder=\"' + (option.videoRatio * 100) + '%\"' + (onlyPercentage ? ' type=\"number\" min=\"1\"' : 'type=\"text\"') + (onlyPercentage ? ' max=\"100\"' : '') + heightDisplay + '/>' +\n '<select class=\"se-input-select se-video-ratio\" title=\"' + lang.dialogBox.ratio + '\" aria-label=\"' + lang.dialogBox.ratio + '\"' + ratioDisplay + '>';\n if (!heightDisplay) html += '<option value=\"\"> - </option>';\n for (let i = 0, len = ratioList.length; i < len; i++) {\n html += '<option value=\"' + ratioList[i].value + '\"' + (ratio.toString() === ratioList[i].value.toString() ? ' selected' : '') + '>' + ratioList[i].name + '</option>';\n }\n html += '</select>' +\n '<button type=\"button\" title=\"' + lang.dialogBox.revertButton + '\" aria-label=\"' + lang.dialogBox.revertButton + '\" class=\"se-btn se-dialog-btn-revert\" style=\"float: right;\">' + core.icons.revert + '</button>' +\n '</div>' +\n '<div class=\"se-dialog-form se-dialog-form-footer\"' + onlyPercentDisplay + onlyWidthDisplay + '>' +\n '<label><input type=\"checkbox\" class=\"se-dialog-btn-check _se_video_check_proportion\" checked/> ' + lang.dialogBox.proportion + '</label>' +\n '</div>';\n }\n\n html += '' +\n '</div>' +\n '<div class=\"se-dialog-footer\">' +\n '<div' + (option.videoAlignShow ? '' : ' style=\"display: none\"') + '>' +\n '<label><input type=\"radio\" name=\"suneditor_video_radio\" class=\"se-dialog-btn-radio\" value=\"none\" checked>' + lang.dialogBox.basic + '</label>' +\n '<label><input type=\"radio\" name=\"suneditor_video_radio\" class=\"se-dialog-btn-radio\" value=\"left\">' + lang.dialogBox.left + '</label>' +\n '<label><input type=\"radio\" name=\"suneditor_video_radio\" class=\"se-dialog-btn-radio\" value=\"center\">' + lang.dialogBox.center + '</label>' +\n '<label><input type=\"radio\" name=\"suneditor_video_radio\" class=\"se-dialog-btn-radio\" value=\"right\">' + lang.dialogBox.right + '</label>' +\n '</div>' +\n '<button type=\"submit\" class=\"se-btn-primary\" title=\"' + lang.dialogBox.submitButton + '\" aria-label=\"' + lang.dialogBox.submitButton + '\"><span>' + lang.dialogBox.submitButton + '</span></button>' +\n '</div>' +\n '</form>';\n\n dialog.innerHTML = html;\n\n return dialog;\n },\n\n _fileInputChange: function () {\n if (!this.videoInputFile.value) {\n this.videoUrlFile.removeAttribute('disabled');\n this.preview.style.textDecoration = '';\n } else {\n this.videoUrlFile.setAttribute('disabled', true);\n this.preview.style.textDecoration = 'line-through';\n }\n },\n\n _removeSelectedFiles: function (urlInput, preview) {\n this.value = '';\n if (urlInput) {\n urlInput.removeAttribute('disabled');\n preview.style.textDecoration = '';\n }\n },\n\n _onLinkPreview: function (context, protocol, e) {\n const value = e.target.value.trim();\n if (/^<iframe.*\\/iframe>$/.test(value)) {\n context._linkValue = value;\n this.textContent = '<IFrame :src=\"..\"></IFrame>';\n } else {\n context._linkValue = this.textContent = !value ? '' : (protocol && value.indexOf('://') === -1 && value.indexOf('#') !== 0) ? protocol + value : value.indexOf('://') === -1 ? '/' + value : value;\n }\n },\n\n _setTagAttrs: function (element) {\n element.setAttribute('controls', true);\n\n const attrs = this.options.videoTagAttrs;\n if (!attrs) return;\n\n for (let key in attrs) {\n if (!this.util.hasOwn(attrs, key)) continue;\n element.setAttribute(key, attrs[key]);\n }\n },\n\n createVideoTag: function () {\n const videoTag = this.util.createElement('VIDEO');\n this.plugins.video._setTagAttrs.call(this, videoTag);\n return videoTag;\n },\n\n _setIframeAttrs: function (element) {\n element.frameBorder = '0';\n element.allowFullscreen = true;\n\n const attrs = this.options.videoIframeAttrs;\n if (!attrs) return;\n\n for (let key in attrs) {\n if (!this.util.hasOwn(attrs, key)) continue;\n element.setAttribute(key, attrs[key]);\n }\n },\n\n createIframeTag: function () {\n const iframeTag = this.util.createElement('IFRAME');\n this.plugins.video._setIframeAttrs.call(this, iframeTag);\n return iframeTag;\n },\n\n /**\n * @Override @Required fileManager\n */\n fileTags: ['iframe', 'video'],\n\n /**\n * @Override core, resizing, fileManager\n * @description It is called from core.selectComponent.\n * @param {Element} element Target element\n */\n select: function (element) {\n this.plugins.video.onModifyMode.call(this, element, this.plugins.resizing.call_controller_resize.call(this, element, 'video'));\n },\n\n /**\n * @Override fileManager, resizing\n */\n destroy: function (element) {\n const frame = element || this.context.video._element;\n const container = this.context.video._container;\n const dataIndex = frame.getAttribute('data-index') * 1;\n let focusEl = (container.previousElementSibling || container.nextElementSibling);\n\n const emptyDiv = container.parentNode;\n this.util.removeItem(container);\n this.plugins.video.init.call(this);\n this.controllersOff();\n\n if (emptyDiv !== this.context.element.wysiwyg) this.util.removeItemAllParents(emptyDiv, function (current) { return current.childNodes.length === 0; }, null);\n\n // focus\n this.focusEdge(focusEl);\n\n // event\n this.plugins.fileManager.deleteInfo.call(this, 'video', dataIndex, this.functions.onVideoUpload);\n\n // history stack\n this.history.push(false);\n },\n\n /**\n * @Required @Override dialog\n */\n on: function (update) {\n const contextVideo = this.context.video;\n\n if (!update) {\n contextVideo.inputX.value = contextVideo._origin_w = this.options.videoWidth === contextVideo._defaultSizeX ? '' : this.options.videoWidth;\n contextVideo.inputY.value = contextVideo._origin_h = this.options.videoHeight === contextVideo._defaultSizeY ? '' : this.options.videoHeight;\n contextVideo.proportion.disabled = true;\n if (contextVideo.videoInputFile && this.options.videoMultipleFile) contextVideo.videoInputFile.setAttribute('multiple', 'multiple');\n } else {\n if (contextVideo.videoInputFile && this.options.videoMultipleFile) contextVideo.videoInputFile.removeAttribute('multiple');\n }\n\n if (contextVideo._resizing) {\n this.plugins.video.setVideoRatioSelect.call(this, contextVideo._origin_h || contextVideo._defaultRatio);\n }\n },\n\n /**\n * @Required @Override dialog\n */\n open: function () {\n this.plugins.dialog.open.call(this, 'video', 'video' === this.currentControllerName);\n },\n \n setVideoRatio: function (e) {\n const contextVideo = this.context.video;\n const value = e.target.options[e.target.selectedIndex].value;\n\n contextVideo._defaultSizeY = contextVideo._videoRatio = !value ? contextVideo._defaultSizeY : (value * 100) + '%';\n contextVideo.inputY.placeholder = !value ? '' : (value * 100) + '%';\n contextVideo.inputY.value = '';\n },\n\n /**\n * @Override resizing\n * @param {String} xy 'x': width, 'y': height\n * @param {KeyboardEvent} e Event object\n */\n setInputSize: function (xy, e) {\n if (e && e.keyCode === 32) {\n e.preventDefault();\n return;\n }\n\n const contextVideo = this.context.video;\n this.plugins.resizing._module_setInputSize.call(this, contextVideo, xy);\n\n if (xy === 'y') {\n this.plugins.video.setVideoRatioSelect.call(this, e.target.value || contextVideo._defaultRatio);\n }\n },\n\n /**\n * @Override resizing\n */\n setRatio: function () {\n this.plugins.resizing._module_setRatio.call(this, this.context.video);\n },\n\n submit: function (e) {\n const contextVideo = this.context.video;\n const videoPlugin = this.plugins.video;\n\n e.preventDefault();\n e.stopPropagation();\n\n contextVideo._align = contextVideo.modal.querySelector('input[name=\"suneditor_video_radio\"]:checked').value;\n\n try {\n if (contextVideo.videoInputFile && contextVideo.videoInputFile.files.length > 0) {\n this.showLoading();\n videoPlugin.submitAction.call(this, this.context.video.videoInputFile.files);\n } else if (contextVideo.videoUrlFile && contextVideo._linkValue.length > 0) {\n this.showLoading();\n videoPlugin.setup_url.call(this, contextVideo._linkValue);\n }\n } catch (error) {\n this.closeLoading();\n throw Error('[SUNEDITOR.video.submit.fail] cause : \"' + error.message + '\"');\n } finally {\n this.plugins.dialog.close.call(this);\n }\n\n return false;\n },\n\n submitAction: function (fileList) {\n if (fileList.length === 0) return;\n\n let fileSize = 0;\n let files = [];\n for (let i = 0, len = fileList.length; i < len; i++) {\n if (/video/i.test(fileList[i].type)) {\n files.push(fileList[i]);\n fileSize += fileList[i].size;\n }\n }\n\n const limitSize = this.options.videoUploadSizeLimit;\n if (limitSize > 0) {\n let infoSize = 0;\n const videosInfo = this.context.video._infoList;\n for (let i = 0, len = videosInfo.length; i < len; i++) {\n infoSize += videosInfo[i].size * 1;\n }\n\n if ((fileSize + infoSize) > limitSize) {\n this.closeLoading();\n const err = '[SUNEDITOR.videoUpload.fail] Size of uploadable total videos: ' + (limitSize/1000) + 'KB';\n if (typeof this.functions.onVideoUploadError !== 'function' || this.functions.onVideoUploadError(err, { 'limitSize': limitSize, 'currentSize': infoSize, 'uploadSize': fileSize }, this)) {\n this.functions.noticeOpen(err);\n }\n return;\n }\n }\n\n const contextVideo = this.context.video;\n contextVideo._uploadFileLength = files.length;\n\n const info = {\n inputWidth: contextVideo.inputX.value,\n inputHeight: contextVideo.inputY.value,\n align: contextVideo._align,\n isUpdate: this.context.dialog.updateModal,\n element: contextVideo._element\n };\n\n if (typeof this.functions.onVideoUploadBefore === 'function') {\n const result = this.functions.onVideoUploadBefore(files, info, this, function (data) {\n if (data && this._w.Array.isArray(data.result)) {\n this.plugins.video.register.call(this, info, data);\n } else {\n this.plugins.video.upload.call(this, info, data);\n }\n }.bind(this));\n\n if (typeof result === 'undefined') return;\n if (!result) {\n this.closeLoading();\n return;\n }\n if (typeof result === 'object' && result.length > 0) files = result;\n }\n\n this.plugins.video.upload.call(this, info, files);\n },\n\n error: function (message, response) {\n this.closeLoading();\n if (typeof this.functions.onVideoUploadError !== 'function' || this.functions.onVideoUploadError(message, response, this)) {\n this.functions.noticeOpen(message);\n throw Error('[SUNEDITOR.plugin.video.error] response: ' + message);\n }\n },\n\n upload: function (info, files) {\n if (!files) {\n this.closeLoading();\n return;\n }\n if (typeof files === 'string') {\n this.plugins.video.error.call(this, files, null);\n return;\n }\n\n const videoUploadUrl = this.options.videoUploadUrl;\n const filesLen = this.context.dialog.updateModal ? 1 : files.length;\n\n // server upload\n if (typeof videoUploadUrl === 'string' && videoUploadUrl.length > 0) {\n const formData = new FormData();\n for (let i = 0; i < filesLen; i++) {\n formData.append('file-' + i, files[i]);\n }\n this.plugins.fileManager.upload.call(this, videoUploadUrl, this.options.videoUploadHeader, formData, this.plugins.video.callBack_videoUpload.bind(this, info), this.functions.onVideoUploadError);\n } else {\n throw Error('[SUNEDITOR.videoUpload.fail] cause : There is no \"videoUploadUrl\" option.');\n }\n },\n\n callBack_videoUpload: function (info, xmlHttp) {\n if (typeof this.functions.videoUploadHandler === 'function') {\n this.functions.videoUploadHandler(xmlHttp, info, this);\n } else {\n const response = JSON.parse(xmlHttp.responseText);\n if (response.errorMessage) {\n this.plugins.video.error.call(this, response.errorMessage, response);\n } else {\n this.plugins.video.register.call(this, info, response);\n }\n }\n },\n\n register: function (info, response) {\n const fileList = response.result;\n const videoTag = this.plugins.video.createVideoTag.call(this);\n\n for (let i = 0, len = fileList.length, file; i < len; i++) {\n file = { name: fileList[i].name, size: fileList[i].size };\n this.plugins.video.create_video.call(this, (info.isUpdate ? info.element : videoTag.cloneNode(false)), fileList[i].url, info.inputWidth, info.inputHeight, info.align, file, info.isUpdate);\n }\n\n this.closeLoading();\n },\n\n setup_url: function (url) {\n try {\n const contextVideo = this.context.video;\n if (!url) url = contextVideo._linkValue;\n if (!url) return false;\n\n /** iframe source */\n if (/^<iframe.*\\/iframe>$/.test(url)) {\n const oIframe = (new this._w.DOMParser()).parseFromString(url, 'text/html').querySelector('iframe');\n url = oIframe.src;\n if (url.length === 0) return false;\n }\n \n /** youtube */\n if (/youtu\\.?be/.test(url)) {\n if (!/^http/.test(url)) url = 'https://' + url;\n url = url.replace('watch?v=', '');\n if (!/^\\/\\/.+\\/embed\\//.test(url)) {\n url = url.replace(url.match(/\\/\\/.+\\//)[0], '//www.youtube.com/embed/').replace('&', '?&');\n }\n\n if (contextVideo._youtubeQuery.length > 0) {\n if (/\\?/.test(url)) {\n const splitUrl = url.split('?');\n url = splitUrl[0] + '?' + contextVideo._youtubeQuery + '&' + splitUrl[1];\n } else {\n url += '?' + contextVideo._youtubeQuery;\n }\n }\n } else if (/vimeo\\.com/.test(url)) {\n if (url.endsWith('/')) {\n url = url.slice(0, -1);\n }\n url = 'https://player.vimeo.com/video/' + url.slice(url.lastIndexOf('/') + 1);\n }\n\n this.plugins.video.create_video.call(this, this.plugins.video[(!/embed|iframe|player|\\/e\\/|\\.php|\\.html?/.test(url) && !/vimeo\\.com/.test(url) ? \"createVideoTag\" : \"createIframeTag\")].call(this), url, contextVideo.inputX.value, contextVideo.inputY.value, contextVideo._align, null, this.context.dialog.updateModal);\n } catch (error) {\n throw Error('[SUNEDITOR.video.upload.fail] cause : \"' + error.message + '\"');\n } finally {\n this.closeLoading();\n }\n },\n\n create_video: function (oFrame, src, width, height, align, file, isUpdate) {\n this.context.resizing._resize_plugin = 'video';\n const contextVideo = this.context.video;\n \n let cover = null;\n let container = null;\n let init = false;\n\n /** update */\n if (isUpdate) {\n oFrame = contextVideo._element;\n if (oFrame.src !== src) {\n init = true;\n const isYoutube = /youtu\\.?be/.test(src);\n const isVimeo = /vimeo\\.com/.test(src);\n if ((isYoutube || isVimeo) && !/^iframe$/i.test(oFrame.nodeName)) {\n const newTag = this.plugins.video.createIframeTag.call(this);\n newTag.src = src;\n oFrame.parentNode.replaceChild(newTag, oFrame);\n contextVideo._element = oFrame = newTag;\n } else if (!isYoutube && !isVimeo && !/^videoo$/i.test(oFrame.nodeName)) {\n const newTag = this.plugins.video.createVideoTag.call(this);\n newTag.src = src;\n oFrame.parentNode.replaceChild(newTag, oFrame);\n contextVideo._element = oFrame = newTag;\n } else {\n oFrame.src = src;\n }\n }\n container = contextVideo._container;\n cover = this.util.getParentElement(oFrame, 'FIGURE');\n }\n /** create */\n else {\n init = true;\n oFrame.src = src;\n contextVideo._element = oFrame;\n cover = this.plugins.component.set_cover.call(this, oFrame);\n container = this.plugins.component.set_container.call(this, cover, 'se-video-container');\n }\n\n /** rendering */\n contextVideo._cover = cover;\n contextVideo._container = container;\n\n const inputUpdate = (this.plugins.resizing._module_getSizeX.call(this, contextVideo) !== (width || contextVideo._defaultSizeX)) || (this.plugins.resizing._module_getSizeY.call(this, contextVideo) !== (height || contextVideo._videoRatio));\n const changeSize = !isUpdate || inputUpdate;\n\n if (contextVideo._resizing) {\n this.context.video._proportionChecked = contextVideo.proportion.checked;\n oFrame.setAttribute('data-proportion', contextVideo._proportionChecked);\n }\n\n // size\n let isPercent = false;\n if (changeSize) {\n isPercent = this.plugins.video.applySize.call(this);\n }\n\n // align\n if (!(isPercent && align === 'center')) {\n this.plugins.video.setAlign.call(this, null, oFrame, cover, container);\n }\n\n let changed = true;\n if (!isUpdate) {\n changed = this.insertComponent(container, false, true, !this.options.mediaAutoSelect);\n if (!this.options.mediaAutoSelect) {\n const line = this.appendFormatTag(container, null);\n if (line) this.setRange(line, 0, line, 0);\n }\n } else if (contextVideo._resizing && this.context.resizing._rotateVertical && changeSize) {\n this.plugins.resizing.setTransformSize.call(this, oFrame, null, null);\n }\n\n if (changed) {\n if (init) {\n this.plugins.fileManager.setInfo.call(this, 'video', oFrame, this.functions.onVideoUpload, file, true);\n }\n if (isUpdate) {\n this.selectComponent(oFrame, 'video');\n // history stack\n this.history.push(false);\n }\n }\n\n this.context.resizing._resize_plugin = '';\n },\n\n _update_videoCover: function (oFrame) {\n if (!oFrame) return;\n\n const contextVideo = this.context.video;\n \n if (/^video$/i.test(oFrame.nodeName)) this.plugins.video._setTagAttrs.call(this, oFrame);\n else this.plugins.video._setIframeAttrs.call(this, oFrame);\n \n let existElement = (this.util.isRangeFormatElement(oFrame.parentNode) || this.util.isWysiwygDiv(oFrame.parentNode)) ? \n oFrame : this.util.getFormatElement(oFrame) || oFrame;\n\n const prevFrame = oFrame;\n contextVideo._element = oFrame = oFrame.cloneNode(true);\n const cover = contextVideo._cover = this.plugins.component.set_cover.call(this, oFrame);\n const container = contextVideo._container = this.plugins.component.set_container.call(this, cover, 'se-video-container');\n\n try {\n const figcaption = existElement.querySelector('figcaption');\n let caption = null;\n if (!!figcaption) {\n caption = this.util.createElement('DIV');\n caption.innerHTML = figcaption.innerHTML;\n this.util.removeItem(figcaption);\n }\n\n // size\n const size = (oFrame.getAttribute('data-size') || oFrame.getAttribute('data-origin') || '').split(',');\n this.plugins.video.applySize.call(this, (size[0] || prevFrame.style.width || prevFrame.width || ''), (size[1] || prevFrame.style.height || prevFrame.height || ''));\n\n // align\n const format = this.util.getFormatElement(prevFrame);\n if (format) contextVideo._align = format.style.textAlign || format.style.float;\n this.plugins.video.setAlign.call(this, null, oFrame, cover, container);\n\n if (this.util.getParentElement(prevFrame, this.util.isNotCheckingNode)) {\n prevFrame.parentNode.replaceChild(container, prevFrame);\n } else if (this.util.isListCell(existElement)) {\n const refer = this.util.getParentElement(prevFrame, function (current) { return current.parentNode === existElement; });\n existElement.insertBefore(container, refer);\n this.util.removeItem(prevFrame);\n this.util.removeEmptyNode(refer, null, true);\n } else if (this.util.isFormatElement(existElement)) {\n const refer = this.util.getParentElement(prevFrame, function (current) { return current.parentNode === existElement; });\n existElement = this.util.splitElement(existElement, refer);\n existElement.parentNode.insertBefore(container, existElement);\n this.util.removeItem(prevFrame);\n this.util.removeEmptyNode(existElement, null, true);\n if (existElement.children.length === 0) existElement.innerHTML = this.util.htmlRemoveWhiteSpace(existElement.innerHTML);\n } else {\n existElement.parentNode.replaceChild(container, existElement);\n }\n\n if (!!caption) existElement.parentNode.insertBefore(caption, container.nextElementSibling);\n } catch (error) {\n console.warn('[SUNEDITOR.video.error] Maybe the video tag is nested.', error);\n }\n\n this.plugins.fileManager.setInfo.call(this, 'video', oFrame, this.functions.onVideoUpload, null, true);\n this.plugins.video.init.call(this);\n },\n\n /**\n * @Required @Override fileManager, resizing\n */\n onModifyMode: function (element, size) {\n const contextVideo = this.context.video;\n contextVideo._element = element;\n contextVideo._cover = this.util.getParentElement(element, 'FIGURE');\n contextVideo._container = this.util.getParentElement(element, this.util.isMediaComponent);\n contextVideo._align = element.style.float || element.getAttribute('data-align') || 'none';\n element.style.float = '';\n\n if (size) {\n contextVideo._element_w = size.w;\n contextVideo._element_h = size.h;\n contextVideo._element_t = size.t;\n contextVideo._element_l = size.l;\n }\n\n let origin = contextVideo._element.getAttribute('data-size') || contextVideo._element.getAttribute('data-origin');\n let w, h;\n if (origin) {\n origin = origin.split(',');\n w = origin[0];\n h = origin[1];\n } else if (size) {\n w = size.w;\n h = size.h;\n }\n\n contextVideo._origin_w = w || element.style.width || element.width || '';\n contextVideo._origin_h = h || element.style.height || element.height || '';\n },\n\n /**\n * @Required @Override fileManager, resizing\n */\n openModify: function (notOpen) {\n const contextVideo = this.context.video;\n\n if (contextVideo.videoUrlFile) contextVideo._linkValue = contextVideo.preview.textContent = contextVideo.videoUrlFile.value = (contextVideo._element.src || (contextVideo._element.querySelector('source') || '').src || '');\n (contextVideo.modal.querySelector('input[name=\"suneditor_video_radio\"][value=\"' + contextVideo._align + '\"]') || contextVideo.modal.querySelector('input[name=\"suneditor_video_radio\"][value=\"none\"]')).checked = true;\n\n if (contextVideo._resizing) {\n this.plugins.resizing._module_setModifyInputSize.call(this, contextVideo, this.plugins.video);\n \n const y = contextVideo._videoRatio = this.plugins.resizing._module_getSizeY.call(this, contextVideo);\n const ratioSelected = this.plugins.video.setVideoRatioSelect.call(this, y);\n if (!ratioSelected) contextVideo.inputY.value = contextVideo._onlyPercentage ? this.util.getNumber(y, 2) : y;\n }\n\n if (!notOpen) this.plugins.dialog.open.call(this, 'video', true);\n },\n \n setVideoRatioSelect: function (value) {\n let ratioSelected = false;\n const contextVideo = this.context.video;\n const ratioOptions = contextVideo.videoRatioOption.options;\n\n if (/%$/.test(value) || contextVideo._onlyPercentage) value = (this.util.getNumber(value, 2) / 100) + '';\n else if (!this.util.isNumber(value) || (value * 1) >= 1) value = '';\n\n contextVideo.inputY.placeholder = '';\n for (let i = 0, len = ratioOptions.length; i < len; i++) {\n if (ratioOptions[i].value === value) {\n ratioSelected = ratioOptions[i].selected = true;\n contextVideo.inputY.placeholder = !value ? '' : (value * 100) + '%';\n }\n else ratioOptions[i].selected = false;\n }\n\n return ratioSelected;\n },\n\n /**\n * @Override fileManager\n */\n checkFileInfo: function () {\n this.plugins.fileManager.checkInfo.call(this, 'video', ['iframe', 'video'], this.functions.onVideoUpload, this.plugins.video._update_videoCover.bind(this), true);\n },\n\n /**\n * @Override fileManager\n */\n resetFileInfo: function () {\n this.plugins.fileManager.resetInfo.call(this, 'video', this.functions.onVideoUpload);\n },\n\n /**\n * @Override fileManager\n */\n applySize: function (w, h) {\n const contextVideo = this.context.video;\n\n if (!w) w = contextVideo.inputX.value || this.options.videoWidth;\n if (!h) h = contextVideo.inputY.value || this.options.videoHeight;\n \n if (contextVideo._onlyPercentage || /%$/.test(w) || !w) {\n this.plugins.video.setPercentSize.call(this, (w || '100%'), (h || (/%$/.test(contextVideo._videoRatio) ? contextVideo._videoRatio : contextVideo._defaultRatio)));\n return true;\n } else if ((!w || w === 'auto') && (!h || h === 'auto')) {\n this.plugins.video.setAutoSize.call(this);\n } else {\n this.plugins.video.setSize.call(this, w, (h || contextVideo._videoRatio || contextVideo._defaultRatio), false);\n }\n\n return false;\n },\n\n /**\n * @Override resizing\n */\n sizeRevert: function () {\n this.plugins.resizing._module_sizeRevert.call(this, this.context.video);\n },\n\n /**\n * @Override resizing\n */\n setSize: function (w, h, notResetPercentage, direction) {\n const contextVideo = this.context.video;\n const onlyW = /^(rw|lw)$/.test(direction);\n const onlyH = /^(th|bh)$/.test(direction);\n\n if (!onlyH) w = this.util.getNumber(w, 0);\n if (!onlyW) h = this.util.isNumber(h) ? h + contextVideo.sizeUnit : !h ? '' : h;\n w = w ? w + contextVideo.sizeUnit : '';\n\n if (!onlyH) contextVideo._element.style.width = w;\n if (!onlyW) contextVideo._cover.style.paddingBottom = contextVideo._cover.style.height = h;\n\n if (!onlyH && !/%$/.test(w)) {\n contextVideo._cover.style.width = w;\n contextVideo._container.style.width = '';\n }\n\n if (!onlyW && !/%$/.test(h)) {\n contextVideo._element.style.height = h;\n } else {\n contextVideo._element.style.height = '';\n }\n\n if (!notResetPercentage) contextVideo._element.removeAttribute('data-percentage');\n\n // save current size\n this.plugins.resizing._module_saveCurrentSize.call(this, contextVideo);\n },\n\n /**\n * @Override resizing\n */\n setAutoSize: function () {\n this.plugins.video.setPercentSize.call(this, 100, this.context.video._defaultRatio);\n },\n\n /**\n * @Override resizing\n */\n setOriginSize: function (dataSize) {\n const contextVideo = this.context.video;\n contextVideo._element.removeAttribute('data-percentage');\n\n this.plugins.resizing.resetTransform.call(this, contextVideo._element);\n this.plugins.video.cancelPercentAttr.call(this);\n\n const originSize = ((dataSize ? contextVideo._element.getAttribute('data-size') : '') || contextVideo._element.getAttribute('data-origin') || '').split(',');\n \n if (originSize) {\n const w = originSize[0];\n const h = originSize[1];\n\n if (contextVideo._onlyPercentage || (/%$/.test(w) && (/%$/.test(h) || !/\\d/.test(h)))) {\n this.plugins.video.setPercentSize.call(this, w, h);\n } else {\n this.plugins.video.setSize.call(this, w, h);\n }\n\n // save current size\n this.plugins.resizing._module_saveCurrentSize.call(this, contextVideo);\n }\n },\n\n /**\n * @Override resizing\n */\n setPercentSize: function (w, h) {\n const contextVideo = this.context.video;\n h = !!h && !/%$/.test(h) && !this.util.getNumber(h, 0) ? this.util.isNumber(h) ? h + '%' : h : this.util.isNumber(h) ? h + contextVideo.sizeUnit : (h || contextVideo._defaultRatio);\n\n contextVideo._container.style.width = this.util.isNumber(w) ? w + '%' : w;\n contextVideo._container.style.height = '';\n contextVideo._cover.style.width = '100%';\n contextVideo._cover.style.height = h;\n contextVideo._cover.style.paddingBottom = h;\n contextVideo._element.style.width = '100%';\n contextVideo._element.style.height = '100%';\n contextVideo._element.style.maxWidth = '';\n\n if (contextVideo._align === 'center') this.plugins.video.setAlign.call(this, null, null, null, null);\n contextVideo._element.setAttribute('data-percentage', w + ',' + h);\n\n // save current size\n this.plugins.resizing._module_saveCurrentSize.call(this, contextVideo);\n },\n\n /**\n * @Override resizing\n */\n cancelPercentAttr: function () {\n const contextVideo = this.context.video;\n \n contextVideo._cover.style.width = '';\n contextVideo._cover.style.height = '';\n contextVideo._cover.style.paddingBottom = '';\n contextVideo._container.style.width = '';\n contextVideo._container.style.height = '';\n\n this.util.removeClass(contextVideo._container, this.context.video._floatClassRegExp);\n this.util.addClass(contextVideo._container, '__se__float-' + contextVideo._align);\n\n if (contextVideo._align === 'center') this.plugins.video.setAlign.call(this, null, null, null, null);\n },\n\n /**\n * @Override resizing\n */\n setAlign: function (align, element, cover, container) {\n const contextVideo = this.context.video;\n \n if (!align) align = contextVideo._align;\n if (!element) element = contextVideo._element;\n if (!cover) cover = contextVideo._cover;\n if (!container) container = contextVideo._container;\n\n if (/%$/.test(element.style.width) && align === 'center') {\n container.style.minWidth = '100%';\n cover.style.width = container.style.width;\n cover.style.height = cover.style.height;\n cover.style.paddingBottom = !/%$/.test(cover.style.height) ? cover.style.height : this.util.getNumber((this.util.getNumber(cover.style.height, 2) / 100) * this.util.getNumber(cover.style.width, 2), 2) + '%';\n } else {\n container.style.minWidth = '';\n cover.style.width = this.context.resizing._rotateVertical ? (element.style.height || element.offsetHeight) : (element.style.width || '100%');\n cover.style.paddingBottom = cover.style.height;\n }\n\n if (!this.util.hasClass(container, '__se__float-' + align)) {\n this.util.removeClass(container, contextVideo._floatClassRegExp);\n this.util.addClass(container, '__se__float-' + align);\n }\n \n element.setAttribute('data-align', align);\n },\n\n /**\n * @Override dialog\n */\n init: function () {\n const contextVideo = this.context.video;\n if (contextVideo.videoInputFile) contextVideo.videoInputFile.value = '';\n if (contextVideo.videoUrlFile) contextVideo._linkValue = contextVideo.preview.textContent = contextVideo.videoUrlFile.value = '';\n if (contextVideo.videoInputFile && contextVideo.videoUrlFile) {\n contextVideo.videoUrlFile.removeAttribute('disabled');\n contextVideo.preview.style.textDecoration = '';\n }\n\n contextVideo._origin_w = this.options.videoWidth;\n contextVideo._origin_h = this.options.videoHeight;\n contextVideo.modal.querySelector('input[name=\"suneditor_video_radio\"][value=\"none\"]').checked = true;\n \n if (contextVideo._resizing) {\n contextVideo.inputX.value = this.options.videoWidth === contextVideo._defaultSizeX ? '' : this.options.videoWidth;\n contextVideo.inputY.value = this.options.videoHeight === contextVideo._defaultSizeY ? '' : this.options.videoHeight;\n contextVideo.proportion.checked = true;\n contextVideo.proportion.disabled = true;\n this.plugins.video.setVideoRatioSelect.call(this, contextVideo._defaultRatio);\n }\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nimport dialog from '../modules/dialog';\nimport component from '../modules/component';\nimport fileManager from '../modules/fileManager';\n\nexport default {\n name: 'audio',\n display: 'dialog',\n add: function (core) {\n core.addModule([dialog, component, fileManager]);\n\n const context = core.context;\n const contextAudio = context.audio = {\n _infoList: [], // @Override fileManager\n _infoIndex: 0, // @Override fileManager\n _uploadFileLength: 0, // @Override fileManager\n focusElement: null, // @Override dialog // This element has focus when the dialog is opened.\n targetSelect: null,\n _origin_w: core.options.audioWidth,\n _origin_h: core.options.audioHeight,\n _linkValue: '',\n // @require @Override component\n _element: null,\n _cover: null,\n _container: null,\n };\n\n /** dialog */\n let audio_dialog = this.setDialog(core);\n contextAudio.modal = audio_dialog;\n contextAudio.audioInputFile = audio_dialog.querySelector('._se_audio_files');\n contextAudio.audioUrlFile = audio_dialog.querySelector('.se-input-url');\n contextAudio.focusElement = contextAudio.audioInputFile || contextAudio.audioUrlFile;\n contextAudio.preview = audio_dialog.querySelector('.se-link-preview');\n\n /** controller */\n let audio_controller = this.setController(core);\n contextAudio.controller = audio_controller;\n\n /** add event listeners */\n audio_dialog.querySelector('form').addEventListener('submit', this.submit.bind(core));\n if (contextAudio.audioInputFile) audio_dialog.querySelector('.se-dialog-files-edge-button').addEventListener('click', this._removeSelectedFiles.bind(contextAudio.audioInputFile, contextAudio.audioUrlFile, contextAudio.preview));\n if (contextAudio.audioInputFile && contextAudio.audioUrlFile) contextAudio.audioInputFile.addEventListener('change', this._fileInputChange.bind(contextAudio));\n audio_controller.addEventListener('click', this.onClick_controller.bind(core));\n if (contextAudio.audioUrlFile) contextAudio.audioUrlFile.addEventListener('input', this._onLinkPreview.bind(contextAudio.preview, contextAudio, core.options.linkProtocol));\n\n /** append html */\n context.dialog.modal.appendChild(audio_dialog);\n\n /** append controller */\n context.element.relative.appendChild(audio_controller);\n\n /** empty memory */\n audio_dialog = null, audio_controller = null;\n },\n\n /** HTML - dialog */\n setDialog: function (core) {\n const option = core.options;\n const lang = core.lang;\n const dialog = core.util.createElement('DIV');\n\n dialog.className = 'se-dialog-content';\n dialog.style.display = 'none';\n let html = '' +\n '<form method=\"post\" enctype=\"multipart/form-data\">' +\n '<div class=\"se-dialog-header\">' +\n '<button type=\"button\" data-command=\"close\" class=\"se-btn se-dialog-close\" title=\"' + lang.dialogBox.close + '\" aria-label=\"' + lang.dialogBox.close + '\">' +\n core.icons.cancel +\n '</button>' +\n '<span class=\"se-modal-title\">' + lang.dialogBox.audioBox.title + '</span>' +\n '</div>' +\n '<div class=\"se-dialog-body\">';\n\n if (option.audioFileInput) {\n html += '' +\n '<div class=\"se-dialog-form\">' +\n '<label>' + lang.dialogBox.audioBox.file + '</label>' +\n '<div class=\"se-dialog-form-files\">' +\n '<input class=\"se-input-form _se_audio_files\" type=\"file\" accept=\"' + option.audioAccept + '\"' + (option.audioMultipleFile ? ' multiple=\"multiple\"' : '') + '/>' +\n '<button type=\"button\" data-command=\"filesRemove\" class=\"se-btn se-dialog-files-edge-button se-file-remove\" title=\"' + lang.controller.remove + '\" aria-label=\"' + lang.controller.remove + '\">' + core.icons.cancel + '</button>' +\n '</div>' +\n '</div>';\n }\n \n if (option.audioUrlInput) {\n html += '' +\n '<div class=\"se-dialog-form\">' +\n '<label>' + lang.dialogBox.audioBox.url + '</label>' +\n '<input class=\"se-input-form se-input-url\" type=\"text\" />' +\n '<pre class=\"se-link-preview\"></pre>' +\n '</div>';\n }\n \n html += '' +\n '</div>' +\n '<div class=\"se-dialog-footer\">' +\n '<button type=\"submit\" class=\"se-btn-primary\" title=\"' + lang.dialogBox.submitButton + '\" aria-label=\"' + lang.dialogBox.submitButton + '\"><span>' + lang.dialogBox.submitButton + '</span></button>' +\n '</div>' +\n '</form>';\n\n dialog.innerHTML = html;\n\n return dialog;\n },\n\n /** HTML - controller */\n setController: function (core) {\n const lang = core.lang;\n const icons = core.icons;\n const link_btn = core.util.createElement('DIV');\n\n link_btn.className = 'se-controller se-controller-link';\n link_btn.innerHTML = '' +\n '<div class=\"se-arrow se-arrow-up\"></div>' +\n '<div class=\"link-content\">' +\n '<div class=\"se-btn-group\">' +\n '<button type=\"button\" data-command=\"update\" tabindex=\"-1\" class=\"se-tooltip\">' +\n icons.edit +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.edit + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"delete\" tabindex=\"-1\" class=\"se-tooltip\">' +\n icons.delete +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.remove + '</span></span>' +\n '</button>' +\n '</div>' +\n '</div>';\n\n return link_btn;\n },\n\n // Disable url input when uploading files\n _fileInputChange: function () {\n if (!this.audioInputFile.value) {\n this.audioUrlFile.removeAttribute('disabled');\n this.preview.style.textDecoration = '';\n } else {\n this.audioUrlFile.setAttribute('disabled', true);\n this.preview.style.textDecoration = 'line-through';\n }\n },\n\n // Disable url input when uploading files\n _removeSelectedFiles: function (urlInput, preview) {\n this.value = '';\n if (urlInput) {\n urlInput.removeAttribute('disabled');\n preview.style.textDecoration = '';\n }\n },\n\n // create new audio tag\n _createAudioTag: function () {\n const oAudio = this.util.createElement('AUDIO');\n this.plugins.audio._setTagAttrs.call(this, oAudio);\n\n const w = this.context.audio._origin_w;\n const h = this.context.audio._origin_h;\n oAudio.setAttribute('origin-size', w + ',' + h);\n oAudio.style.cssText = (w ? ('width:' + w + '; ') : '') + (h ? ('height:' + h + ';') : '');\n\n return oAudio;\n },\n\n _setTagAttrs: function (element) {\n element.setAttribute('controls', true);\n\n const attrs = this.options.audioTagAttrs;\n if (!attrs) return;\n\n for (let key in attrs) {\n if (!this.util.hasOwn(attrs, key)) continue;\n element.setAttribute(key, attrs[key]);\n }\n },\n\n _onLinkPreview: function (context, protocol, e) {\n const value = e.target.value.trim();\n context._linkValue = this.textContent = !value ? '' : (protocol && value.indexOf('://') === -1 && value.indexOf('#') !== 0) ? protocol + value : value.indexOf('://') === -1 ? '/' + value : value;\n },\n\n /**\n * @Required @Override fileManager\n */\n fileTags: ['audio'],\n\n /**\n * @Override core, fileManager, resizing\n * @description It is called from core.selectComponent.\n * @param {Element} element Target element\n */\n select: function (element) {\n this.plugins.audio.onModifyMode.call(this, element);\n },\n\n /**\n * @Override fileManager, resizing \n */\n destroy: function (element) {\n element = element || this.context.audio._element;\n const container = this.util.getParentElement(element, this.util.isComponent) || element;\n const dataIndex = element.getAttribute('data-index') * 1;\n const focusEl = (container.previousElementSibling || container.nextElementSibling);\n\n const emptyDiv = container.parentNode;\n this.util.removeItem(container);\n this.plugins.audio.init.call(this);\n this.controllersOff();\n\n if (emptyDiv !== this.context.element.wysiwyg) this.util.removeItemAllParents(emptyDiv, function (current) { return current.childNodes.length === 0; }, null);\n\n // focus\n this.focusEdge(focusEl);\n\n // fileManager event\n this.plugins.fileManager.deleteInfo.call(this, 'audio', dataIndex, this.functions.onAudioUpload);\n\n // history stack\n this.history.push(false);\n },\n\n /**\n * @Override fileManager\n */\n checkFileInfo: function () {\n this.plugins.fileManager.checkInfo.call(this, 'audio', ['audio'], this.functions.onAudioUpload, this.plugins.audio.updateCover.bind(this), false);\n },\n\n /**\n * @Override fileManager\n */\n resetFileInfo: function () {\n this.plugins.fileManager.resetInfo.call(this, 'audio', this.functions.onAudioUpload);\n },\n\n /**\n * @Required @Override dialog\n */\n on: function (update) {\n const contextAudio = this.context.audio;\n\n if (!update) {\n this.plugins.audio.init.call(this);\n if (contextAudio.audioInputFile && this.options.audioMultipleFile) contextAudio.audioInputFile.setAttribute('multiple', 'multiple');\n } else if (contextAudio._element) {\n this.context.dialog.updateModal = true;\n contextAudio._linkValue = contextAudio.preview.textContent = contextAudio.audioUrlFile.value = contextAudio._element.src;\n if (contextAudio.audioInputFile && this.options.audioMultipleFile) contextAudio.audioInputFile.removeAttribute('multiple');\n } else {\n if (contextAudio.audioInputFile && this.options.audioMultipleFile) contextAudio.audioInputFile.removeAttribute('multiple');\n }\n },\n\n /**\n * @Required @Override dialog\n */\n open: function () {\n this.plugins.dialog.open.call(this, 'audio', 'audio' === this.currentControllerName);\n },\n\n submit: function (e) {\n const contextAudio = this.context.audio;\n\n e.preventDefault();\n e.stopPropagation();\n\n try {\n if (contextAudio.audioInputFile && contextAudio.audioInputFile.files.length > 0) {\n this.showLoading();\n this.plugins.audio.submitAction.call(this, contextAudio.audioInputFile.files);\n } else if (contextAudio.audioUrlFile && contextAudio._linkValue.length > 0) {\n this.showLoading();\n this.plugins.audio.setupUrl.call(this, contextAudio._linkValue);\n }\n } catch (error) {\n this.closeLoading();\n throw Error('[SUNEDITOR.audio.submit.fail] cause : \"' + error.message + '\"');\n } finally {\n this.plugins.dialog.close.call(this);\n }\n\n return false;\n },\n\n submitAction: function (fileList) {\n if (fileList.length === 0) return;\n\n let fileSize = 0;\n let files = [];\n for (let i = 0, len = fileList.length; i < len; i++) {\n if (/audio/i.test(fileList[i].type)) {\n files.push(fileList[i]);\n fileSize += fileList[i].size;\n }\n }\n\n const limitSize = this.options.audioUploadSizeLimit;\n if (limitSize > 0) {\n let infoSize = 0;\n const audiosInfo = this.context.audio._infoList;\n for (let i = 0, len = audiosInfo.length; i < len; i++) {\n infoSize += audiosInfo[i].size * 1;\n }\n\n if ((fileSize + infoSize) > limitSize) {\n this.closeLoading();\n const err = '[SUNEDITOR.audioUpload.fail] Size of uploadable total audios: ' + (limitSize/1000) + 'KB';\n if (typeof this.functions.onAudioUploadError !== 'function' || this.functions.onAudioUploadError(err, { 'limitSize': limitSize, 'currentSize': infoSize, 'uploadSize': fileSize }, this)) {\n this.functions.noticeOpen(err);\n }\n return;\n }\n }\n\n const contextAudio = this.context.audio;\n contextAudio._uploadFileLength = files.length;\n\n const info = {\n isUpdate: this.context.dialog.updateModal,\n element: contextAudio._element\n };\n\n if (typeof this.functions.onAudioUploadBefore === 'function') {\n const result = this.functions.onAudioUploadBefore(files, info, this, function (data) {\n if (data && this._w.Array.isArray(data.result)) {\n this.plugins.audio.register.call(this, info, data);\n } else {\n this.plugins.audio.upload.call(this, info, data);\n }\n }.bind(this));\n\n if (typeof result === 'undefined') return;\n if (!result) {\n this.closeLoading();\n return;\n }\n if (typeof result === 'object' && result.length > 0) files = result;\n }\n\n this.plugins.audio.upload.call(this, info, files);\n },\n\n error: function (message, response) {\n this.closeLoading();\n if (typeof this.functions.onAudioUploadError !== 'function' || this.functions.onAudioUploadError(message, response, this)) {\n this.functions.noticeOpen(message);\n throw Error('[SUNEDITOR.plugin.audio.exception] response: ' + message);\n }\n },\n\n upload: function (info, files) {\n if (!files) {\n this.closeLoading();\n return;\n }\n if (typeof files === 'string') {\n this.plugins.audio.error.call(this, files, null);\n return;\n }\n\n const audioUploadUrl = this.options.audioUploadUrl;\n const filesLen = this.context.dialog.updateModal ? 1 : files.length;\n\n // create formData\n const formData = new FormData();\n for (let i = 0; i < filesLen; i++) {\n formData.append('file-' + i, files[i]);\n }\n\n // server upload\n this.plugins.fileManager.upload.call(this, audioUploadUrl, this.options.audioUploadHeader, formData, this.plugins.audio.callBack_upload.bind(this, info), this.functions.onAudioUploadError);\n },\n\n callBack_upload: function (info, xmlHttp) {\n if (typeof this.functions.audioUploadHandler === 'function') {\n this.functions.audioUploadHandler(xmlHttp, info, this);\n } else {\n const response = JSON.parse(xmlHttp.responseText);\n if (response.errorMessage) {\n this.plugins.audio.error.call(this, response.errorMessage, response);\n } else {\n this.plugins.audio.register.call(this, info, response);\n }\n }\n },\n\n register: function (info, response) {\n const fileList = response.result;\n\n for (let i = 0, len = fileList.length, file, oAudio; i < len; i++) {\n if (info.isUpdate) oAudio = info.element;\n else oAudio = this.plugins.audio._createAudioTag.call(this);\n\n file = { name: fileList[i].name, size: fileList[i].size };\n this.plugins.audio.create_audio.call(this, oAudio, fileList[i].url, file, info.isUpdate);\n }\n\n this.closeLoading();\n },\n\n setupUrl: function (src) {\n try {\n if (src.length === 0) return false;\n this.plugins.audio.create_audio.call(this, this.plugins.audio._createAudioTag.call(this), src, null, this.context.dialog.updateModal);\n } catch (error) {\n throw Error('[SUNEDITOR.audio.audio.fail] cause : \"' + error.message + '\"');\n } finally {\n this.closeLoading();\n }\n },\n\n create_audio: function (element, src, file, isUpdate) {\n const contextAudio = this.context.audio;\n \n // create new tag\n if (!isUpdate) {\n element.src = src;\n const cover = this.plugins.component.set_cover.call(this, element);\n const container = this.plugins.component.set_container.call(this, cover, '');\n if (!this.insertComponent(container, false, true, !this.options.mediaAutoSelect)) {\n this.focus();\n return;\n }\n if (!this.options.mediaAutoSelect) {\n const line = this.appendFormatTag(container, null);\n if (line) this.setRange(line, 0, line, 0);\n }\n } // update\n else {\n if (contextAudio._element) element = contextAudio._element;\n if (element && element.src !== src) {\n element.src = src;\n this.selectComponent(element, 'audio');\n } else {\n this.selectComponent(element, 'audio');\n return;\n }\n }\n\n this.plugins.fileManager.setInfo.call(this, 'audio', element, this.functions.onAudioUpload, file, false);\n if (isUpdate) this.history.push(false);\n },\n\n updateCover: function (element) {\n const contextAudio = this.context.audio;\n this.plugins.audio._setTagAttrs.call(this, element);\n \n // find component element\n let existElement = (this.util.isRangeFormatElement(element.parentNode) || this.util.isWysiwygDiv(element.parentNode)) ? \n element : this.util.getFormatElement(element) || element;\n\n // clone element\n const prevElement = element;\n contextAudio._element = element = element.cloneNode(false);\n const cover = this.plugins.component.set_cover.call(this, element);\n const container = this.plugins.component.set_container.call(this, cover, 'se-audio-container');\n\n try {\n if (this.util.getParentElement(prevElement, this.util.isNotCheckingNode)) {\n prevElement.parentNode.replaceChild(container, prevElement);\n } else if (this.util.isListCell(existElement)) {\n const refer = this.util.getParentElement(prevElement, function (current) { return current.parentNode === existElement; });\n existElement.insertBefore(container, refer);\n this.util.removeItem(prevElement);\n this.util.removeEmptyNode(refer, null, true);\n } else if (this.util.isFormatElement(existElement)) {\n const refer = this.util.getParentElement(prevElement, function (current) { return current.parentNode === existElement; });\n existElement = this.util.splitElement(existElement, refer);\n existElement.parentNode.insertBefore(container, existElement);\n this.util.removeItem(prevElement);\n this.util.removeEmptyNode(existElement, null, true);\n if (existElement.children.length === 0) existElement.innerHTML = this.util.htmlRemoveWhiteSpace(existElement.innerHTML);\n } else {\n existElement.parentNode.replaceChild(container, existElement);\n }\n } catch (error) {\n console.warn('[SUNEDITOR.audio.error] Maybe the audio tag is nested.', error);\n }\n\n this.plugins.fileManager.setInfo.call(this, 'audio', element, this.functions.onAudioUpload, null, false);\n this.plugins.audio.init.call(this);\n },\n\n /**\n * @Required @Override fileManager, resizing\n */\n onModifyMode: function (selectionTag) {\n const contextAudio = this.context.audio;\n \n this.setControllerPosition(contextAudio.controller, selectionTag, 'bottom', {left: 0, top: 0});\n this.controllersOn(contextAudio.controller, selectionTag, this.plugins.audio.onControllerOff.bind(this, selectionTag), 'audio');\n\n this.util.addClass(selectionTag, 'active');\n contextAudio._element = selectionTag;\n contextAudio._cover = this.util.getParentElement(selectionTag, 'FIGURE');\n contextAudio._container = this.util.getParentElement(selectionTag, this.util.isComponent);\n },\n\n /**\n * @Required @Override fileManager, resizing\n */\n openModify: function (notOpen) {\n if (this.context.audio.audioUrlFile) {\n const contextAudio = this.context.audio;\n contextAudio._linkValue = contextAudio.preview.textContent = contextAudio.audioUrlFile.value = contextAudio._element.src;\n }\n if (!notOpen) this.plugins.dialog.open.call(this, 'audio', true);\n },\n\n onClick_controller: function (e) {\n e.stopPropagation();\n\n const command = e.target.getAttribute('data-command');\n if (!command) return;\n\n e.preventDefault();\n\n if (/update/.test(command)) {\n this.plugins.audio.openModify.call(this, false);\n }\n else { /** delete */\n this.plugins.audio.destroy.call(this, this.context.audio._element);\n }\n\n this.controllersOff();\n },\n\n onControllerOff: function (selectionTag) {\n this.util.removeClass(selectionTag, 'active');\n this.context.audio.controller.style.display = 'none';\n },\n\n /**\n * @Required @Override dialog\n */\n init: function () {\n if (this.context.dialog.updateModal) return;\n const contextAudio = this.context.audio;\n\n if (contextAudio.audioInputFile) contextAudio.audioInputFile.value = '';\n if (contextAudio.audioUrlFile) contextAudio._linkValue = contextAudio.preview.textContent = contextAudio.audioUrlFile.value = '';\n if (contextAudio.audioInputFile && contextAudio.audioUrlFile) {\n contextAudio.audioUrlFile.removeAttribute('disabled');\n contextAudio.preview.style.textDecoration = '';\n }\n\n contextAudio._element = null;\n }\n};","'use strict';\n\nimport dialog from '../modules/dialog';\n\nconst KATEX_WEBSITE = \"https://katex.org/docs/supported.html\";\n\nexport default {\n name: 'math',\n display: 'dialog',\n add: function (core) {\n core.addModule([dialog]);\n\n const context = core.context;\n context.math = {\n focusElement: null, // @Override dialog // This element has focus when the dialog is opened.\n previewElement: null,\n fontSizeElement: null,\n defaultFontSize: '',\n _mathExp: null\n };\n\n /** math dialog */\n let math_dialog = this.setDialog(core);\n context.math.modal = math_dialog;\n context.math.focusElement = math_dialog.querySelector('.se-math-exp');\n context.math.previewElement = math_dialog.querySelector('.se-math-preview');\n context.math.fontSizeElement = math_dialog.querySelector('.se-math-size');\n context.math.focusElement.addEventListener(core.util.isIE ? 'textinput' : 'input', this._renderMathExp.bind(core, context.math), false);\n context.math.fontSizeElement.addEventListener('change', function (e) { this.fontSize = e.target.value; }.bind(context.math.previewElement.style), false);\n\n /** math controller */\n let math_controller = this.setController_MathButton(core);\n context.math.mathController = math_controller;\n context.math._mathExp = null;\n\n /** add event listeners */\n math_dialog.querySelector('form').addEventListener('submit', this.submit.bind(core), false);\n math_controller.addEventListener('click', this.onClick_mathController.bind(core));\n context.math.previewElement.style.fontSize = context.math.defaultFontSize;\n\n /** append html */\n context.dialog.modal.appendChild(math_dialog);\n context.element.relative.appendChild(math_controller);\n\n /** empty memory */\n math_dialog = null, math_controller = null;\n },\n\n /** dialog */\n setDialog: function (core) {\n const lang = core.lang;\n const dialog = core.util.createElement('DIV');\n const fontSize = core.options.mathFontSize;\n let defaultFontSize = fontSize[0].value;\n\n dialog.className = 'se-dialog-content';\n dialog.style.display = 'none';\n let html = '' +\n '<form>' +\n '<div class=\"se-dialog-header\">' +\n '<button type=\"button\" data-command=\"close\" class=\"se-btn se-dialog-close\" title=\"' + lang.dialogBox.close + '\" aria-label=\"' + lang.dialogBox.close + '\">' +\n core.icons.cancel +\n '</button>' +\n '<span class=\"se-modal-title\">' + lang.dialogBox.mathBox.title + '</span>' +\n '</div>' +\n '<div class=\"se-dialog-body\">' +\n '<div class=\"se-dialog-form\">' +\n '<label>' + lang.dialogBox.mathBox.inputLabel + ' (<a href=\"' + KATEX_WEBSITE + '\" target=\"_blank\">KaTeX</a>)</label>' +\n '<textarea class=\"se-input-form se-math-exp\" type=\"text\"></textarea>' +\n '</div>' +\n '<div class=\"se-dialog-form\">' +\n '<label>' + lang.dialogBox.mathBox.fontSizeLabel + '</label>' +\n '<select class=\"se-input-select se-math-size\">';\n for (let i = 0, len = fontSize.length, f; i < len; i++) {\n f = fontSize[i];\n if (f.default) defaultFontSize = f.value;\n html += '<option value=\"' + f.value + '\"' + (f.default ? ' selected' : '') + '>' + f.text + '</option>';\n }\n html += '</select>' +\n '</div>' +\n '<div class=\"se-dialog-form\">' +\n '<label>' + lang.dialogBox.mathBox.previewLabel + '</label>' +\n '<p class=\"se-math-preview\"></p>' +\n '</div>' +\n '</div>' +\n '<div class=\"se-dialog-footer\">' +\n '<button type=\"submit\" class=\"se-btn-primary\" title=\"' + lang.dialogBox.submitButton + '\" aria-label=\"' + lang.dialogBox.submitButton + '\"><span>' + lang.dialogBox.submitButton + '</span></button>' +\n '</div>' +\n '</form>';\n\n core.context.math.defaultFontSize = defaultFontSize;\n dialog.innerHTML = html;\n return dialog;\n },\n\n /** modify controller button */\n setController_MathButton: function (core) {\n const lang = core.lang;\n const math_btn = core.util.createElement('DIV');\n\n math_btn.className = 'se-controller se-controller-link';\n math_btn.innerHTML = '' +\n '<div class=\"se-arrow se-arrow-up\"></div>' +\n '<div class=\"link-content\">' +\n '<div class=\"se-btn-group\">' +\n '<button type=\"button\" data-command=\"update\" tabindex=\"-1\" class=\"se-btn se-tooltip\">' +\n core.icons.edit +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.edit + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"delete\" tabindex=\"-1\" class=\"se-btn se-tooltip\">' +\n core.icons.delete +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.remove + '</span></span>' +\n '</button>' +\n '</div>' +\n '</div>' +\n '';\n\n return math_btn;\n },\n\n /**\n * @Required @Override dialog\n */\n open: function () {\n this.plugins.dialog.open.call(this, 'math', 'math' === this.currentControllerName);\n },\n\n /**\n * @Override core - managedTagsInfo\n */\n managedTags: function () {\n return {\n className: 'katex',\n method: function (element) {\n if (!element.getAttribute('data-exp') || !this.options.katex) return;\n const dom = this._d.createRange().createContextualFragment(this.plugins.math._renderer.call(this, this.util.HTMLDecoder(element.getAttribute('data-exp'))));\n element.innerHTML = dom.querySelector('.katex').innerHTML;\n element.setAttribute('contenteditable', false);\n }\n };\n },\n\n _renderer: function (exp) {\n let result = '';\n try {\n this.util.removeClass(this.context.math.focusElement, 'se-error');\n result = this.options.katex.src.renderToString(exp, {throwOnError: true, displayMode: true});\n } catch(error) {\n this.util.addClass(this.context.math.focusElement, 'se-error');\n result = '<span class=\"se-math-katex-error\">Katex syntax error. (Refer <a href=\"' + KATEX_WEBSITE + '\" target=\"_blank\">KaTeX</a>)</span>';\n console.warn('[SUNEDITOR.math.Katex.error] ', error);\n }\n return result;\n },\n\n _renderMathExp: function (contextMath, e) {\n contextMath.previewElement.innerHTML = this.plugins.math._renderer.call(this, e.target.value);\n },\n\n submit: function (e) {\n this.showLoading();\n\n e.preventDefault();\n e.stopPropagation();\n\n const submitAction = function () {\n if (this.context.math.focusElement.value.trim().length === 0) return false;\n\n const contextMath = this.context.math;\n const mathExp = contextMath.focusElement.value;\n const katexEl = contextMath.previewElement.querySelector('.katex');\n\n if (!katexEl) return false;\n katexEl.className = '__se__katex ' + katexEl.className;\n katexEl.setAttribute('contenteditable', false);\n katexEl.setAttribute('data-exp', this.util.HTMLEncoder(mathExp));\n katexEl.setAttribute('data-font-size', contextMath.fontSizeElement.value);\n katexEl.style.fontSize = contextMath.fontSizeElement.value;\n\n if (!this.context.dialog.updateModal) {\n const selectedFormats = this.getSelectedElements();\n\n if (selectedFormats.length > 1) {\n const oFormat = this.util.createElement(selectedFormats[0].nodeName);\n oFormat.appendChild(katexEl);\n if (!this.insertNode(oFormat, null, true)) return false;\n } else {\n if (!this.insertNode(katexEl, null, true)) return false;\n }\n\n const empty = this.util.createTextNode(this.util.zeroWidthSpace);\n katexEl.parentNode.insertBefore(empty, katexEl.nextSibling);\n this.setRange(katexEl, 0, katexEl, 1);\n } else {\n const containerEl = this.util.getParentElement(contextMath._mathExp, '.katex');\n containerEl.parentNode.replaceChild(katexEl, containerEl);\n this.setRange(katexEl, 0, katexEl, 1);\n }\n\n contextMath.focusElement.value = '';\n contextMath.fontSizeElement.value = '1em';\n contextMath.previewElement.style.fontSize = '1em';\n contextMath.previewElement.innerHTML = '';\n\n return true;\n }.bind(this);\n\n try {\n if (submitAction()) {\n this.plugins.dialog.close.call(this);\n // history stack\n this.history.push(false);\n }\n } catch (e) {\n this.plugins.dialog.close.call(this);\n } finally {\n this.closeLoading();\n }\n\n return false;\n },\n\n active: function (element) {\n if (!element) {\n if (this.controllerArray.indexOf(this.context.math.mathController) > -1) {\n this.controllersOff();\n }\n } else if (element.getAttribute('data-exp')) {\n if (this.controllerArray.indexOf(this.context.math.mathController) < 0) {\n this.setRange(element, 0, element, 1);\n this.plugins.math.call_controller.call(this, element);\n }\n return true;\n }\n\n return false;\n },\n\n on: function (update) {\n if (!update) {\n this.plugins.math.init.call(this);\n } else {\n const contextMath = this.context.math;\n if (contextMath._mathExp) {\n const exp = this.util.HTMLDecoder(contextMath._mathExp.getAttribute('data-exp'));\n const fontSize = contextMath._mathExp.getAttribute('data-font-size') || '1em';\n this.context.dialog.updateModal = true;\n contextMath.focusElement.value = exp;\n contextMath.fontSizeElement.value = fontSize;\n contextMath.previewElement.innerHTML = this.plugins.math._renderer.call(this, exp);\n contextMath.previewElement.style.fontSize = fontSize;\n }\n }\n },\n\n call_controller: function (mathTag) {\n this.context.math._mathExp = mathTag;\n const mathBtn = this.context.math.mathController;\n\n this.setControllerPosition(mathBtn, mathTag, 'bottom', {left: 0, top: 0});\n this.controllersOn(mathBtn, mathTag, 'math');\n },\n\n onClick_mathController: function (e) {\n e.stopPropagation();\n\n const command = e.target.getAttribute('data-command') || e.target.parentNode.getAttribute('data-command');\n if (!command) return;\n\n e.preventDefault();\n\n if (/update/.test(command)) {\n this.context.math.focusElement.value = this.util.HTMLDecoder(this.context.math._mathExp.getAttribute('data-exp'));\n this.plugins.dialog.open.call(this, 'math', true);\n } else {\n /** delete */\n this.util.removeItem(this.context.math._mathExp);\n this.context.math._mathExp = null;\n this.focus();\n\n // history stack\n this.history.push(false);\n }\n\n this.controllersOff();\n },\n\n init: function () {\n const contextMath = this.context.math;\n contextMath.mathController.style.display = 'none';\n contextMath._mathExp = null;\n contextMath.focusElement.value = '';\n contextMath.previewElement.innerHTML = '';\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nimport fileBrowser from '../modules/fileBrowser';\n\nexport default {\n name: 'imageGallery',\n /**\n * @description Constructor\n * @param {Object} core Core object \n */\n add: function (core) {\n core.addModule([fileBrowser]);\n\n const context = core.context;\n context.imageGallery = {\n title: core.lang.toolbar.imageGallery, // @Required @Override fileBrowser - File browser window title.\n url: core.options.imageGalleryUrl, // @Required @Override fileBrowser - File server url.\n header: core.options.imageGalleryHeader, // @Required @Override fileBrowser - File server http header.\n listClass: 'se-image-list', // @Required @Override fileBrowser - Class name of list div.\n itemTemplateHandler: this.drawItems, // @Required @Override fileBrowser - Function that defines the HTML of an file item.\n selectorHandler: this.setImage.bind(core), // @Required @Override fileBrowser - Function that action when item click.\n columnSize: 4 // @Option @Override fileBrowser - Number of \"div.se-file-item-column\" to be created (default: 4)\n };\n },\n \n /**\n * @Required @Override fileBrowser\n * @description Open a file browser.\n * @param {Function|null} selectorHandler When the function comes as an argument value, it substitutes \"context.selectorHandler\".\n */\n open: function (selectorHandler) {\n this.plugins.fileBrowser.open.call(this, 'imageGallery', selectorHandler);\n },\n\n /**\n * @Required @Override fileBrowser\n * @description Define the HTML of the item to be put in \"div.se-file-item-column\".\n * Format: [\n * { src: \"image src\", name: \"name(@option)\", alt: \"image alt(@option)\", tag: \"tag name(@option)\" }\n * ]\n * @param {Object} item Item of the response data's array\n */\n drawItems: function (item) {\n const srcName = item.src.split('/').pop();\n return '<div class=\"se-file-item-img\"><img src=\"' + (item.thumbnail || item.src) + '\" alt=\"' + (item.alt || srcName) + '\" data-command=\"pick\" data-value=\"' + (item.src || item.thumbnail) + '\">' +\n '<div class=\"se-file-img-name se-file-name-back\"></div>' +\n '<div class=\"se-file-img-name __se__img_name\">' + (item.name || srcName) + '</div>' +\n '</div>';\n },\n\n setImage: function (target, fileName) {\n this.callPlugin('image', function () {\n const file = {name: fileName, size: 0};\n this.plugins.image.create_image.call(this, target.getAttribute('data-value'), null, this.context.image._origin_w, this.context.image._origin_h, 'none', file, target.alt);\n }.bind(this), null);\n }\n};","'use strict';\n\n// command\nimport blockquote from './command/blockquote';\n\n// submenu\nimport align from './submenu/align';\nimport font from './submenu/font';\nimport fontSize from './submenu/fontSize';\nimport fontColor from './submenu/fontColor';\nimport hiliteColor from './submenu/hiliteColor';\nimport horizontalRule from './submenu/horizontalRule';\nimport list from './submenu/list';\nimport table from './submenu/table';\nimport formatBlock from './submenu/formatBlock';\nimport lineHeight from './submenu/lineHeight';\nimport template from './submenu/template';\nimport paragraphStyle from './submenu/paragraphStyle';\nimport textStyle from './submenu/textStyle';\n\n// dialog\nimport link from './dialog/link';\nimport image from './dialog/image';\nimport video from './dialog/video';\nimport audio from './dialog/audio';\nimport math from './dialog/math';\n\n// file browser\nimport imageGallery from './fileBrowser/imageGallery';\n\nexport { blockquote, align, font, fontSize, fontColor, hiliteColor, horizontalRule, list, table, formatBlock, lineHeight, template, paragraphStyle, textStyle, link, image, video, audio, math, imageGallery };\nexport default { blockquote, align, font, fontSize, fontColor, hiliteColor, horizontalRule, list, table, formatBlock, lineHeight, template, paragraphStyle, textStyle, link, image, video, audio, math, imageGallery };\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_MODULES a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const component = {\n name: 'component',\n /**\n * @description Create a container for the resizing component and insert the element.\n * @param {Element} cover Cover element (FIGURE)\n * @param {String} className Class name of container (fixed: se-component)\n * @returns {Element} Created container element\n */\n set_container: function (cover, className) {\n const container = this.util.createElement('DIV');\n container.className = 'se-component ' + className;\n container.appendChild(cover);\n \n return container;\n },\n\n /**\n * @description Cover the target element with a FIGURE element.\n * @param {Element} element Target element\n */\n set_cover: function (element) {\n const cover = this.util.createElement('FIGURE');\n cover.appendChild(element);\n \n return cover;\n },\n\n /**\n * @description Return HTML string of caption(FIGCAPTION) element\n * @returns {String}\n */\n create_caption: function () {\n const caption = this.util.createElement('FIGCAPTION');\n caption.innerHTML = '<div>' + this.lang.dialogBox.caption + '</div>';\n return caption;\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_MODULES) {\n Object.defineProperty(window, 'SUNEDITOR_MODULES', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_MODULES, 'component', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: component\n });\n }\n\n return component;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_MODULES a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const dialog = {\n name: 'dialog',\n /**\n * @description Constructor\n * @param {Object} core Core object \n */\n add: function (core) {\n const context = core.context;\n context.dialog = {\n kind: '',\n updateModal: false,\n _closeSignal: false\n };\n\n /** dialog */\n let dialog_div = core.util.createElement('DIV');\n dialog_div.className = 'se-dialog sun-editor-common';\n\n let dialog_back = core.util.createElement('DIV');\n dialog_back.className = 'se-dialog-back';\n dialog_back.style.display = 'none';\n\n let dialog_area = core.util.createElement('DIV');\n dialog_area.className = 'se-dialog-inner';\n dialog_area.style.display = 'none';\n\n dialog_div.appendChild(dialog_back);\n dialog_div.appendChild(dialog_area);\n\n context.dialog.modalArea = dialog_div;\n context.dialog.back = dialog_back;\n context.dialog.modal = dialog_area;\n\n /** add event listeners */\n context.dialog.modal.addEventListener('mousedown', this._onMouseDown_dialog.bind(core));\n context.dialog.modal.addEventListener('click', this._onClick_dialog.bind(core));\n \n /** append html */\n context.element.relative.appendChild(dialog_div);\n \n /** empty memory */\n dialog_div = null, dialog_back = null, dialog_area = null;\n },\n\n /**\n * @description Event to control the behavior of closing the dialog\n * @param {MouseEvent} e Event object\n * @private\n */\n _onMouseDown_dialog: function (e) {\n if (/se-dialog-inner/.test(e.target.className)) {\n this.context.dialog._closeSignal = true;\n } else {\n this.context.dialog._closeSignal = false;\n }\n },\n\n /**\n * @description Event to close the window when the outside area of the dialog or close button is click\n * @param {MouseEvent} e Event object\n * @private\n */\n _onClick_dialog: function (e) {\n if (/close/.test(e.target.getAttribute('data-command')) || this.context.dialog._closeSignal) {\n this.plugins.dialog.close.call(this);\n }\n },\n\n /**\n * @description Open a Dialog plugin\n * @param {String} kind Dialog plugin name\n * @param {Boolean} update Whether it will open for update ('image' === this.currentControllerName)\n */\n open: function (kind, update) {\n if (this.modalForm) return false;\n if (this.plugins.dialog._bindClose) {\n this._d.removeEventListener('keydown', this.plugins.dialog._bindClose);\n this.plugins.dialog._bindClose = null;\n }\n\n this.plugins.dialog._bindClose = function (e) {\n if (!/27/.test(e.keyCode)) return;\n this.plugins.dialog.close.call(this);\n }.bind(this);\n this._d.addEventListener('keydown', this.plugins.dialog._bindClose);\n\n this.context.dialog.updateModal = update;\n\n if (this.options.popupDisplay === 'full') {\n this.context.dialog.modalArea.style.position = 'fixed';\n } else {\n this.context.dialog.modalArea.style.position = 'absolute';\n }\n\n this.context.dialog.kind = kind;\n this.modalForm = this.context[kind].modal;\n const focusElement = this.context[kind].focusElement;\n\n if (typeof this.plugins[kind].on === 'function') this.plugins[kind].on.call(this, update);\n\n this.context.dialog.modalArea.style.display = 'block';\n this.context.dialog.back.style.display = 'block';\n this.context.dialog.modal.style.display = 'block';\n this.modalForm.style.display = 'block';\n\n if (focusElement) focusElement.focus();\n },\n\n _bindClose: null,\n \n /**\n * @description Close a Dialog plugin\n * The plugin's \"init\" method is called.\n */\n close: function () {\n if (this.plugins.dialog._bindClose) {\n this._d.removeEventListener('keydown', this.plugins.dialog._bindClose);\n this.plugins.dialog._bindClose = null;\n }\n\n const kind = this.context.dialog.kind;\n this.modalForm.style.display = 'none';\n this.context.dialog.back.style.display = 'none';\n this.context.dialog.modalArea.style.display = 'none';\n this.context.dialog.updateModal = false;\n if (typeof this.plugins[kind].init === 'function') this.plugins[kind].init.call(this);\n this.context.dialog.kind = '';\n this.modalForm = null;\n this.focus();\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_MODULES) {\n Object.defineProperty(window, 'SUNEDITOR_MODULES', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_MODULES, 'dialog', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: dialog\n });\n }\n\n return dialog;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_MODULES a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const fileBrowser = {\n name: 'fileBrowser',\n _xmlHttp: null,\n _loading: null,\n\n /**\n * @description Constructor\n * @param {Object} core Core object \n */\n add: function (core) {\n const context = core.context;\n context.fileBrowser = {\n _closeSignal: false,\n area: null,\n header: null,\n tagArea: null,\n body: null,\n list: null,\n tagElements: null,\n items: [],\n selectedTags: [],\n selectorHandler: null,\n contextPlugin: '',\n columnSize: 4\n };\n\n /** fileBrowser */\n let browser_div = core.util.createElement('DIV');\n browser_div.className = 'se-file-browser sun-editor-common';\n\n let back = core.util.createElement('DIV');\n back.className = 'se-file-browser-back';\n\n let content = core.util.createElement('DIV');\n content.className = 'se-file-browser-inner';\n content.innerHTML = this.set_browser(core);\n\n browser_div.appendChild(back);\n browser_div.appendChild(content);\n this._loading = browser_div.querySelector('.se-loading-box');\n\n context.fileBrowser.area = browser_div;\n context.fileBrowser.header = content.querySelector('.se-file-browser-header');\n context.fileBrowser.titleArea = content.querySelector('.se-file-browser-title');\n context.fileBrowser.tagArea = content.querySelector('.se-file-browser-tags');\n context.fileBrowser.body = content.querySelector('.se-file-browser-body');\n context.fileBrowser.list = content.querySelector('.se-file-browser-list');\n\n /** add event listeners */\n context.fileBrowser.tagArea.addEventListener('click', this.onClickTag.bind(core));\n context.fileBrowser.list.addEventListener('click', this.onClickFile.bind(core));\n content.addEventListener('mousedown', this._onMouseDown_browser.bind(core));\n content.addEventListener('click', this._onClick_browser.bind(core));\n \n /** append html */\n context.element.relative.appendChild(browser_div);\n \n /** empty memory */\n browser_div = null, back = null, content = null;\n },\n\n set_browser: function (core) {\n const lang = core.lang;\n\n return '<div class=\"se-file-browser-content\">' +\n '<div class=\"se-file-browser-header\">' +\n '<button type=\"button\" data-command=\"close\" class=\"se-btn se-file-browser-close\" class=\"close\" title=\"' + lang.dialogBox.close + '\" aria-label=\"' + lang.dialogBox.close + '\">' +\n core.icons.cancel +\n '</button>' +\n '<span class=\"se-file-browser-title\"></span>' +\n '<div class=\"se-file-browser-tags\"></div>' +\n '</div>' +\n '<div class=\"se-file-browser-body\">' +\n '<div class=\"se-loading-box sun-editor-common\"><div class=\"se-loading-effect\"></div></div>' +\n '<div class=\"se-file-browser-list\"></div>' +\n '</div>' +\n '</div>';\n },\n\n /**\n * @description Event to control the behavior of closing the browser\n * @param {MouseEvent} e Event object\n * @private\n */\n _onMouseDown_browser: function (e) {\n if (/se-file-browser-inner/.test(e.target.className)) {\n this.context.fileBrowser._closeSignal = true;\n } else {\n this.context.fileBrowser._closeSignal = false;\n }\n },\n\n /**\n * @description Event to close the window when the outside area of the browser or close button is click\n * @param {MouseEvent} e Event object\n * @private\n */\n _onClick_browser: function (e) {\n e.stopPropagation();\n\n if (/close/.test(e.target.getAttribute('data-command')) || this.context.fileBrowser._closeSignal) {\n this.plugins.fileBrowser.close.call(this);\n }\n },\n\n /**\n * @description Open a file browser plugin\n * @param {String} pluginName Plugin name using the file browser\n * @param {Function|null} selectorHandler When the function comes as an argument value, it substitutes \"context.selectorHandler\".\n */\n open: function (pluginName, selectorHandler) {\n if (this.plugins.fileBrowser._bindClose) {\n this._d.removeEventListener('keydown', this.plugins.fileBrowser._bindClose);\n this.plugins.fileBrowser._bindClose = null;\n }\n\n this.plugins.fileBrowser._bindClose = function (e) {\n if (!/27/.test(e.keyCode)) return;\n this.plugins.fileBrowser.close.call(this);\n }.bind(this);\n this._d.addEventListener('keydown', this.plugins.fileBrowser._bindClose);\n\n const fileBrowserContext = this.context.fileBrowser;\n fileBrowserContext.contextPlugin = pluginName;\n fileBrowserContext.selectorHandler = selectorHandler;\n \n const pluginContext = this.context[pluginName];\n const listClassName = pluginContext.listClass;\n if (!this.util.hasClass(fileBrowserContext.list, listClassName)) {\n fileBrowserContext.list.className = 'se-file-browser-list ' + listClassName;\n }\n\n if (this.options.popupDisplay === 'full') {\n fileBrowserContext.area.style.position = 'fixed';\n } else {\n fileBrowserContext.area.style.position = 'absolute';\n }\n \n fileBrowserContext.titleArea.textContent = pluginContext.title;\n fileBrowserContext.area.style.display = 'block';\n\n this.plugins.fileBrowser._drawFileList.call(this, this.context[pluginName].url, this.context[pluginName].header);\n },\n\n _bindClose: null,\n \n /**\n * @description Close a fileBrowser plugin\n * The plugin's \"init\" method is called.\n */\n close: function () {\n const fileBrowserPlugin = this.plugins.fileBrowser;\n\n if (fileBrowserPlugin._xmlHttp) {\n fileBrowserPlugin._xmlHttp.abort();\n }\n\n if (fileBrowserPlugin._bindClose) {\n this._d.removeEventListener('keydown', fileBrowserPlugin._bindClose);\n fileBrowserPlugin._bindClose = null;\n }\n\n const fileBrowserContext = this.context.fileBrowser;\n fileBrowserContext.area.style.display = 'none';\n fileBrowserContext.selectorHandler = null;\n fileBrowserContext.selectedTags = [];\n fileBrowserContext.items = [];\n fileBrowserContext.list.innerHTML = fileBrowserContext.tagArea.innerHTML = fileBrowserContext.titleArea.textContent = '';\n\n if (typeof this.plugins[fileBrowserContext.contextPlugin].init === 'function') this.plugins[fileBrowserContext.contextPlugin].init.call(this);\n fileBrowserContext.contextPlugin = '';\n },\n\n /**\n * @description Show file browser loading box\n */\n showBrowserLoading: function () {\n this._loading.style.display = 'block';\n },\n\n /**\n * @description Close file browser loading box\n */\n closeBrowserLoading: function () {\n this._loading.style.display = 'none';\n },\n\n _drawFileList: function (url, browserHeader) {\n const fileBrowserPlugin = this.plugins.fileBrowser;\n\n const xmlHttp = fileBrowserPlugin._xmlHttp = this.util.getXMLHttpRequest();\n xmlHttp.onreadystatechange = fileBrowserPlugin._callBackGet.bind(this, xmlHttp);\n xmlHttp.open('get', url, true);\n if(browserHeader !== null && typeof browserHeader === 'object' && this._w.Object.keys(browserHeader).length > 0){\n for(let key in browserHeader){\n xmlHttp.setRequestHeader(key, browserHeader[key]);\n }\n }\n xmlHttp.send(null);\n\n this.plugins.fileBrowser.showBrowserLoading();\n },\n\n _callBackGet: function (xmlHttp) {\n if (xmlHttp.readyState === 4) {\n this.plugins.fileBrowser._xmlHttp = null;\n if (xmlHttp.status === 200) {\n try {\n const res = JSON.parse(xmlHttp.responseText);\n if (res.result.length > 0) {\n this.plugins.fileBrowser._drawListItem.call(this, res.result, true);\n } else if (res.nullMessage) {\n this.context.fileBrowser.list.innerHTML = res.nullMessage;\n }\n } catch (e) {\n throw Error('[SUNEDITOR.fileBrowser.drawList.fail] cause : \"' + e.message + '\"');\n } finally {\n this.plugins.fileBrowser.closeBrowserLoading();\n this.context.fileBrowser.body.style.maxHeight = (this._w.innerHeight - this.context.fileBrowser.header.offsetHeight - 50) + 'px';\n }\n } else { // exception\n this.plugins.fileBrowser.closeBrowserLoading();\n if (xmlHttp.status !== 0) {\n const res = !xmlHttp.responseText ? xmlHttp : JSON.parse(xmlHttp.responseText);\n const err = '[SUNEDITOR.fileBrowser.get.serverException] status: ' + xmlHttp.status + ', response: ' + (res.errorMessage || xmlHttp.responseText);\n throw Error(err);\n }\n }\n }\n },\n\n _drawListItem: function (items, update) {\n const fileBrowserContext = this.context.fileBrowser;\n const pluginContext = this.context[fileBrowserContext.contextPlugin];\n\n const _tags = [];\n const len = items.length;\n const columnSize = pluginContext.columnSize || fileBrowserContext.columnSize;\n const splitSize = columnSize <= 1 ? 1 : (Math.round(len/columnSize) || 1);\n const drawItemHandler = pluginContext.itemTemplateHandler;\n \n let tagsHTML = '';\n let listHTML = '<div class=\"se-file-item-column\">';\n let columns = 1;\n for (let i = 0, item, tags; i < len; i++) {\n item = items[i];\n tags = !item.tag ? [] : typeof item.tag === 'string' ? item.tag.split(',') : item.tag;\n tags = item.tag = tags.map(function (v) { return v.trim(); });\n listHTML += drawItemHandler(item);\n\n if ((i + 1) % splitSize === 0 && columns < columnSize && (i + 1) < len) {\n columns++;\n listHTML += '</div><div class=\"se-file-item-column\">';\n }\n \n if (update && tags.length > 0) {\n for (let t = 0, tLen = tags.length, tag; t < tLen; t++) {\n tag = tags[t];\n if (tag && _tags.indexOf(tag) === -1) {\n _tags.push(tag);\n tagsHTML += '<a title=\"' + tag + '\" aria-label=\"' + tag + '\">' + tag + '</a>';\n }\n }\n }\n }\n listHTML += '</div>';\n\n fileBrowserContext.list.innerHTML = listHTML;\n\n if (update) {\n fileBrowserContext.items = items;\n fileBrowserContext.tagArea.innerHTML = tagsHTML;\n fileBrowserContext.tagElements = fileBrowserContext.tagArea.querySelectorAll('A');\n }\n },\n\n onClickTag: function (e) {\n const target = e.target;\n if (!this.util.isAnchor(target)) return;\n\n const tagName = target.textContent;\n const fileBrowserPlugin = this.plugins.fileBrowser;\n const fileBrowserContext = this.context.fileBrowser;\n\n const selectTag = fileBrowserContext.tagArea.querySelector('a[title=\"' + tagName + '\"]');\n const selectedTags = fileBrowserContext.selectedTags;\n const sTagIndex = selectedTags.indexOf(tagName);\n\n if (sTagIndex > -1){\n selectedTags.splice(sTagIndex, 1);\n this.util.removeClass(selectTag, 'on');\n } else {\n selectedTags.push(tagName);\n this.util.addClass(selectTag, 'on');\n }\n\n fileBrowserPlugin._drawListItem.call(this,\n selectedTags.length === 0 ?\n fileBrowserContext.items :\n fileBrowserContext.items.filter(function (item) {\n return item.tag.some(function (tag) {\n return selectedTags.indexOf(tag) > -1;\n });\n }), false);\n },\n\n onClickFile: function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n const fileBrowserContext = this.context.fileBrowser;\n const listEl = fileBrowserContext.list;\n let target = e.target;\n let command = null;\n\n if (target === listEl) return;\n\n while (listEl !== target.parentNode) {\n command = target.getAttribute('data-command');\n if (command) break;\n target = target.parentNode;\n }\n\n if (!command) return;\n\n const handler = (fileBrowserContext.selectorHandler || this.context[fileBrowserContext.contextPlugin].selectorHandler);\n handler(target, target.parentNode.querySelector('.__se__img_name').textContent);\n this.plugins.fileBrowser.close.call(this);\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_MODULES) {\n Object.defineProperty(window, 'SUNEDITOR_MODULES', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_MODULES, 'fileBrowser', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: fileBrowser\n });\n }\n\n return fileBrowser;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_MODULES a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const fileManager = {\n name: 'fileManager',\n _xmlHttp: null,\n\n _checkMediaComponent: function (tag) {\n if (/IMG/i.test(tag)) {\n return !/FIGURE/i.test(tag.parentElement.nodeName) || !/FIGURE/i.test(tag.parentElement.parentElement.nodeName);\n }\n return true;\n },\n\n /**\n * @description Upload the file to the server.\n * @param {String} uploadUrl Upload server url\n * @param {Object|null} uploadHeader Request header\n * @param {FormData} formData FormData in body\n * @param {Function|null} callBack Success call back function\n * @param {Function|null} errorCallBack Error call back function\n * @example this.plugins.fileManager.upload.call(this, imageUploadUrl, this.options.imageUploadHeader, formData, this.plugins.image.callBack_imgUpload.bind(this, info), this.functions.onImageUploadError);\n */\n upload: function (uploadUrl, uploadHeader, formData, callBack, errorCallBack) {\n this.showLoading();\n const filePlugin = this.plugins.fileManager;\n const xmlHttp = filePlugin._xmlHttp = this.util.getXMLHttpRequest();\n\n xmlHttp.onreadystatechange = filePlugin._callBackUpload.bind(this, xmlHttp, callBack, errorCallBack);\n xmlHttp.open('post', uploadUrl, true);\n if(uploadHeader !== null && typeof uploadHeader === 'object' && this._w.Object.keys(uploadHeader).length > 0){\n for(let key in uploadHeader){\n xmlHttp.setRequestHeader(key, uploadHeader[key]);\n }\n }\n xmlHttp.send(formData);\n },\n\n _callBackUpload: function (xmlHttp, callBack, errorCallBack) {\n if (xmlHttp.readyState === 4) {\n if (xmlHttp.status === 200) {\n try {\n callBack(xmlHttp);\n } catch (e) {\n throw Error('[SUNEDITOR.fileManager.upload.callBack.fail] cause : \"' + e.message + '\"');\n } finally {\n this.closeLoading();\n }\n } else { // exception\n this.closeLoading();\n const res = !xmlHttp.responseText ? xmlHttp : JSON.parse(xmlHttp.responseText);\n if (typeof errorCallBack !== 'function' || errorCallBack('', res, this)) {\n const err = '[SUNEDITOR.fileManager.upload.serverException] status: ' + xmlHttp.status + ', response: ' + (res.errorMessage || xmlHttp.responseText);\n this.functions.noticeOpen(err);\n throw Error(err);\n }\n }\n }\n },\n \n /**\n * @description Checke the file's information and modify the tag that does not fit the format.\n * @param {String} pluginName Plugin name\n * @param {Array} tagNames Tag array to check\n * @param {Function|null} uploadEventHandler Event handler to process updated file info after checking (used in \"setInfo\")\n * @param {Function} modifyHandler A function to modify a tag that does not fit the format (Argument value: Tag element)\n * @param {Boolean} resizing True if the plugin is using a resizing module\n * @example \n * const modifyHandler = function (tag) {\n * imagePlugin.onModifyMode.call(this, tag, null);\n * imagePlugin.openModify.call(this, true);\n * imagePlugin.update_image.call(this, true, false, true);\n * }.bind(this);\n * this.plugins.fileManager.checkInfo.call(this, 'image', ['img'], this.functions.onImageUpload, modifyHandler, true);\n */\n checkInfo: function (pluginName, tagNames, uploadEventHandler, modifyHandler, resizing) {\n let tags = [];\n for (let i = 0, len = tagNames.length; i < len; i++) {\n tags = tags.concat([].slice.call(this.context.element.wysiwyg.querySelectorAll(tagNames[i] + ':not([data-se-embed=\"true\"])')));\n }\n\n const fileManagerPlugin = this.plugins.fileManager;\n const context = this.context[pluginName];\n const infoList = context._infoList;\n const setFileInfo = fileManagerPlugin.setInfo.bind(this);\n\n if (tags.length === infoList.length) {\n // reset\n if (this._componentsInfoReset) {\n for (let i = 0, len = tags.length; i < len; i++) {\n setFileInfo(pluginName, tags[i], uploadEventHandler, null, resizing);\n }\n return ;\n } else {\n let infoUpdate = false;\n for (let i = 0, len = infoList.length, info; i < len; i++) {\n info = infoList[i];\n if (tags.filter(function (t) { return info.src === t.src && info.index.toString() === t.getAttribute('data-index'); }).length === 0) {\n infoUpdate = true;\n break;\n }\n }\n // pass\n if (!infoUpdate) return;\n }\n }\n\n // check\n const _resize_plugin = resizing ? this.context.resizing._resize_plugin : '';\n if (resizing) this.context.resizing._resize_plugin = pluginName;\n const currentTags = [];\n const infoIndex = [];\n for (let i = 0, len = infoList.length; i < len; i++) {\n infoIndex[i] = infoList[i].index;\n }\n context.__updateTags = tags;\n\n while (tags.length > 0) {\n const tag = tags.shift();\n if (!this.util.getParentElement(tag, this.util.isMediaComponent) || !fileManagerPlugin._checkMediaComponent(tag)) {\n currentTags.push(context._infoIndex);\n modifyHandler(tag);\n } else if (!tag.getAttribute('data-index') || infoIndex.indexOf(tag.getAttribute('data-index') * 1) < 0) {\n currentTags.push(context._infoIndex);\n tag.removeAttribute('data-index');\n setFileInfo(pluginName, tag, uploadEventHandler, null, resizing);\n } else {\n currentTags.push(tag.getAttribute('data-index') * 1);\n }\n }\n\n for (let i = 0, dataIndex; i < infoList.length; i++) {\n dataIndex = infoList[i].index;\n if (currentTags.indexOf(dataIndex) > -1) continue;\n\n infoList.splice(i, 1);\n if (typeof uploadEventHandler === 'function') uploadEventHandler(null, dataIndex, 'delete', null, 0, this);\n i--;\n }\n\n if (resizing) this.context.resizing._resize_plugin = _resize_plugin;\n },\n\n /**\n * @description Create info object of file and add it to \"_infoList\" (this.context[pluginName]._infoList[])\n * @param {String} pluginName Plugin name \n * @param {Element} element \n * @param {Function|null} uploadEventHandler Event handler to process updated file info (created in setInfo)\n * @param {Object|null} file \n * @param {Boolean} resizing True if the plugin is using a resizing module\n * @example \n * uploadCallBack {.. file = { name: fileList[i].name, size: fileList[i].size };\n * this.plugins.fileManager.setInfo.call(this, 'image', oImg, this.functions.onImageUpload, file, true);\n */\n setInfo: function (pluginName, element, uploadEventHandler, file, resizing) {\n const _resize_plugin = resizing ? this.context.resizing._resize_plugin : '';\n if (resizing) this.context.resizing._resize_plugin = pluginName;\n \n const plguin = this.plugins[pluginName];\n const context = this.context[pluginName];\n const infoList = context._infoList;\n let dataIndex = element.getAttribute('data-index');\n let info = null;\n let state = '';\n\n if (!file) {\n file = {\n 'name': element.getAttribute('data-file-name') || (typeof element.src === 'string' ? element.src.split('/').pop() : ''),\n 'size': element.getAttribute('data-file-size') || 0\n };\n }\n \n // create\n if (!dataIndex || this._componentsInfoInit) {\n state = 'create';\n dataIndex = context._infoIndex++;\n \n element.setAttribute('data-index', dataIndex);\n element.setAttribute('data-file-name', file.name);\n element.setAttribute('data-file-size', file.size);\n \n info = {\n src: element.src,\n index: dataIndex * 1,\n name: file.name,\n size: file.size\n };\n \n infoList.push(info);\n } else { // update\n state = 'update';\n dataIndex *= 1;\n \n for (let i = 0, len = infoList.length; i < len; i++) {\n if (dataIndex === infoList[i].index) {\n info = infoList[i];\n break;\n }\n }\n \n if (!info) {\n dataIndex = context._infoIndex++;\n info = { index: dataIndex };\n infoList.push(info);\n }\n \n info.src = element.src;\n info.name = element.getAttribute(\"data-file-name\");\n info.size = element.getAttribute(\"data-file-size\") * 1;\n }\n \n // method bind\n info.element = element;\n info.delete = plguin.destroy.bind(this, element);\n info.select = function (element) {\n element.scrollIntoView(true);\n this._w.setTimeout(plguin.select.bind(this, element));\n }.bind(this, element);\n \n if (resizing) {\n if (!element.getAttribute('origin-size') && element.naturalWidth) {\n element.setAttribute('origin-size', element.naturalWidth + ',' + element.naturalHeight);\n }\n \n if (!element.getAttribute('data-origin')) {\n const container = this.util.getParentElement(element, this.util.isMediaComponent);\n const cover = this.util.getParentElement(element, 'FIGURE');\n \n const w = this.plugins.resizing._module_getSizeX.call(this, context, element, cover, container);\n const h = this.plugins.resizing._module_getSizeY.call(this, context, element, cover, container);\n element.setAttribute('data-origin', w + ',' + h);\n element.setAttribute('data-size', w + ',' + h);\n }\n \n if (!element.style.width) {\n const size = (element.getAttribute('data-size') || element.getAttribute('data-origin') || '').split(',');\n plguin.onModifyMode.call(this, element, null);\n plguin.applySize.call(this, size[0], size[1]);\n }\n \n this.context.resizing._resize_plugin = _resize_plugin;\n }\n\n if (typeof uploadEventHandler === 'function') uploadEventHandler(element, dataIndex, state, info, --context._uploadFileLength < 0 ? 0 : context._uploadFileLength, this);\n },\n\n /**\n * @description Delete info object at \"_infoList\"\n * @param {String} pluginName Plugin name \n * @param {Number} index index of info object (this.context[pluginName]._infoList[].index)\n * @param {Function|null} uploadEventHandler Event handler to process updated file info (created in setInfo)\n */\n deleteInfo: function (pluginName, index, uploadEventHandler) {\n if (index >= 0) {\n const infoList = this.context[pluginName]._infoList;\n \n for (let i = 0, len = infoList.length; i < len; i++) {\n if (index === infoList[i].index) {\n infoList.splice(i, 1);\n if (typeof uploadEventHandler === 'function') uploadEventHandler(null, index, 'delete', null, 0, this);\n return;\n }\n }\n }\n },\n\n /**\n * @description Reset info object and \"_infoList = []\", \"_infoIndex = 0\"\n * @param {String} pluginName Plugin name \n * @param {Function|null} uploadEventHandler Event handler to process updated file info (created in setInfo)\n */\n resetInfo: function (pluginName, uploadEventHandler) {\n const context = this.context[pluginName];\n\n if (typeof uploadEventHandler === 'function') {\n const infoList = context._infoList;\n for (let i = 0, len = infoList.length; i < len; i++) {\n uploadEventHandler(null, infoList[i].index, 'delete', null, 0, this);\n }\n }\n\n context._infoList = [];\n context._infoIndex = 0;\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_MODULES) {\n Object.defineProperty(window, 'SUNEDITOR_MODULES', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_MODULES, 'fileManager', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: fileManager\n });\n }\n\n return fileManager;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\n(function (global, factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = global.document ?\n factory(global, true) :\n function (w) {\n if (!w.document) {\n throw new Error('SUNEDITOR_MODULES a window with a document');\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n}(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {\n const resizing = {\n name: 'resizing',\n /**\n * @description Constructor\n * Require context properties when resizing module\n inputX: Element,\n inputY: Element,\n _container: null,\n _cover: null,\n _element: null,\n _element_w: 1,\n _element_h: 1,\n _element_l: 0,\n _element_t: 0,\n _defaultSizeX: 'auto',\n _defaultSizeY: 'auto',\n _origin_w: core.options.imageWidth === 'auto' ? '' : core.options.imageWidth,\n _origin_h: core.options.imageHeight === 'auto' ? '' : core.options.imageHeight,\n _proportionChecked: true,\n // -- select function --\n _resizing: core.options.imageResizing,\n _resizeDotHide: !core.options.imageHeightShow,\n _rotation: core.options.imageRotation,\n _onlyPercentage: core.options.imageSizeOnlyPercentage,\n _ratio: false,\n _ratioX: 1,\n _ratioY: 1\n _captionShow: true,\n // -- when used caption (_captionShow: true) --\n _caption: null,\n _captionChecked: false,\n captionCheckEl: null,\n * @param {Object} core Core object \n */\n add: function (core) {\n const icons = core.icons;\n const context = core.context;\n context.resizing = {\n _resizeClientX: 0,\n _resizeClientY: 0,\n _resize_plugin: '',\n _resize_w: 0,\n _resize_h: 0,\n _origin_w: 0,\n _origin_h: 0,\n _rotateVertical: false,\n _resize_direction: '',\n _move_path: null,\n _isChange: false,\n alignIcons: {\n basic: icons.align_justify,\n left: icons.align_left,\n right: icons.align_right,\n center: icons.align_center\n }\n };\n \n /** resize controller, button */\n let resize_div_container = this.setController_resize(core);\n context.resizing.resizeContainer = resize_div_container;\n \n context.resizing.resizeDiv = resize_div_container.querySelector('.se-modal-resize');\n context.resizing.resizeDot = resize_div_container.querySelector('.se-resize-dot');\n context.resizing.resizeDisplay = resize_div_container.querySelector('.se-resize-display');\n \n let resize_button = this.setController_button(core);\n context.resizing.resizeButton = resize_button;\n \n let resize_handles = context.resizing.resizeHandles = context.resizing.resizeDot.querySelectorAll('span');\n context.resizing.resizeButtonGroup = resize_button.querySelector('._se_resizing_btn_group');\n context.resizing.rotationButtons = resize_button.querySelectorAll('._se_resizing_btn_group ._se_rotation');\n context.resizing.percentageButtons = resize_button.querySelectorAll('._se_resizing_btn_group ._se_percentage');\n \n context.resizing.alignMenu = resize_button.querySelector('.se-resizing-align-list');\n context.resizing.alignMenuList = context.resizing.alignMenu.querySelectorAll('button');\n \n context.resizing.alignButton = resize_button.querySelector('._se_resizing_align_button');\n context.resizing.autoSizeButton = resize_button.querySelector('._se_resizing_btn_group ._se_auto_size');\n context.resizing.captionButton = resize_button.querySelector('._se_resizing_caption_button');\n \n /** add event listeners */\n resize_div_container.addEventListener('mousedown', function (e) { e.preventDefault(); });\n resize_handles[0].addEventListener('mousedown', this.onMouseDown_resize_handle.bind(core));\n resize_handles[1].addEventListener('mousedown', this.onMouseDown_resize_handle.bind(core));\n resize_handles[2].addEventListener('mousedown', this.onMouseDown_resize_handle.bind(core));\n resize_handles[3].addEventListener('mousedown', this.onMouseDown_resize_handle.bind(core));\n resize_handles[4].addEventListener('mousedown', this.onMouseDown_resize_handle.bind(core));\n resize_handles[5].addEventListener('mousedown', this.onMouseDown_resize_handle.bind(core));\n resize_handles[6].addEventListener('mousedown', this.onMouseDown_resize_handle.bind(core));\n resize_handles[7].addEventListener('mousedown', this.onMouseDown_resize_handle.bind(core));\n resize_button.addEventListener('click', this.onClick_resizeButton.bind(core));\n \n /** append html */\n context.element.relative.appendChild(resize_div_container);\n context.element.relative.appendChild(resize_button);\n \n /** empty memory */\n resize_div_container = null, resize_button = null, resize_handles = null;\n },\n \n /** resize controller, button (image, iframe, video) */\n setController_resize: function (core) {\n const resize_container = core.util.createElement('DIV');\n \n resize_container.className = 'se-controller se-resizing-container';\n resize_container.style.display = 'none';\n resize_container.innerHTML = '' +\n '<div class=\"se-modal-resize\"></div>' +\n '<div class=\"se-resize-dot\">' +\n '<span class=\"tl\"></span>' +\n '<span class=\"tr\"></span>' +\n '<span class=\"bl\"></span>' +\n '<span class=\"br\"></span>' +\n '<span class=\"lw\"></span>' +\n '<span class=\"th\"></span>' +\n '<span class=\"rw\"></span>' +\n '<span class=\"bh\"></span>' +\n '<div class=\"se-resize-display\"></div>' +\n '</div>';\n \n return resize_container;\n },\n \n setController_button: function (core) {\n const lang = core.lang;\n const icons = core.icons;\n const resize_button = core.util.createElement(\"DIV\");\n \n resize_button.className = \"se-controller se-controller-resizing\";\n resize_button.innerHTML = '' +\n '<div class=\"se-arrow se-arrow-up\"></div>' +\n '<div class=\"se-btn-group _se_resizing_btn_group\">' +\n '<button type=\"button\" data-command=\"percent\" data-value=\"1\" class=\"se-tooltip _se_percentage\">' +\n '<span>100%</span>' +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.resize100 + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"percent\" data-value=\"0.75\" class=\"se-tooltip _se_percentage\">' +\n '<span>75%</span>' +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.resize75 + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"percent\" data-value=\"0.5\" class=\"se-tooltip _se_percentage\">' +\n '<span>50%</span>' +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.resize50 + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"auto\" class=\"se-btn se-tooltip _se_auto_size\">' +\n icons.auto_size +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.autoSize + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"rotate\" data-value=\"-90\" class=\"se-btn se-tooltip _se_rotation\">' +\n icons.rotate_left +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.rotateLeft + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"rotate\" data-value=\"90\" class=\"se-btn se-tooltip _se_rotation\">' +\n icons.rotate_right +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.rotateRight + '</span></span>' +\n '</button>' +\n '</div>' +\n '<div class=\"se-btn-group\" style=\"padding-top: 0;\">' +\n '<button type=\"button\" data-command=\"mirror\" data-value=\"h\" class=\"se-btn se-tooltip\">' +\n icons.mirror_horizontal +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.mirrorHorizontal + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"mirror\" data-value=\"v\" class=\"se-btn se-tooltip\">' +\n icons.mirror_vertical +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.mirrorVertical + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"onalign\" class=\"se-btn se-tooltip _se_resizing_align_button\">' +\n icons.align_justify +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.toolbar.align + '</span></span>' +\n '</button>' +\n '<div class=\"se-btn-group-sub sun-editor-common se-list-layer se-resizing-align-list\">' +\n '<div class=\"se-list-inner\">' +\n '<ul class=\"se-list-basic\">' +\n '<li><button type=\"button\" class=\"se-btn-list se-tooltip\" data-command=\"align\" data-value=\"basic\">' +\n icons.align_justify +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.dialogBox.basic + '</span></span>' +\n '</button></li>' +\n '<li><button type=\"button\" class=\"se-btn-list se-tooltip\" data-command=\"align\" data-value=\"left\">' +\n icons.align_left +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.dialogBox.left + '</span></span>' +\n '</button></li>' +\n '<li><button type=\"button\" class=\"se-btn-list se-tooltip\" data-command=\"align\" data-value=\"center\">' +\n icons.align_center +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.dialogBox.center + '</span></span>' +\n '</button></li>' +\n '<li><button type=\"button\" class=\"se-btn-list se-tooltip\" data-command=\"align\" data-value=\"right\">' +\n icons.align_right +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.dialogBox.right + '</span></span>' +\n '</button></li>' +\n '</ul>' +\n '</div>' +\n '</div>' +\n '<button type=\"button\" data-command=\"caption\" class=\"se-btn se-tooltip _se_resizing_caption_button\">' +\n icons.caption +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.dialogBox.caption + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"revert\" class=\"se-btn se-tooltip\">' +\n icons.revert +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.dialogBox.revertButton + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"update\" class=\"se-btn se-tooltip\">' +\n icons.modify +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.edit + '</span></span>' +\n '</button>' +\n '<button type=\"button\" data-command=\"delete\" class=\"se-btn se-tooltip\">' +\n icons.delete +\n '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + lang.controller.remove + '</span></span>' +\n '</button>' +\n '</div>';\n \n return resize_button;\n },\n \n /**\n * @description Gets the width size\n * @param {Object} contextPlugin context object of plugin (core.context[plugin])\n * @param {Element} element Target element\n * @param {Element} cover Cover element (FIGURE)\n * @param {Element} container Container element (DIV.se-component)\n * @returns {String}\n */\n _module_getSizeX: function (contextPlugin, element, cover, container) {\n if (!element) element = contextPlugin._element;\n if (!cover) cover = contextPlugin._cover;\n if (!container) container = contextPlugin._container;\n \n if (!element) return '';\n \n return !/%$/.test(element.style.width) ? element.style.width : ((container && this.util.getNumber(container.style.width, 2)) || 100) + '%';\n },\n \n /**\n * @description Gets the height size\n * @param {Object} contextPlugin context object of plugin (core.context[plugin])\n * @param {Element} element Target element\n * @param {Element} cover Cover element (FIGURE)\n * @param {Element} container Container element (DIV.se-component)\n * @returns {String}\n */\n _module_getSizeY: function (contextPlugin, element, cover, container) {\n if (!element) element = contextPlugin._element;\n if (!cover) cover = contextPlugin._cover;\n if (!container) container = contextPlugin._container;\n \n if (!container || !cover) return (element && element.style.height) || '';\n \n return this.util.getNumber(cover.style.paddingBottom, 0) > 0 && !this.context.resizing._rotateVertical ? cover.style.height : (!/%$/.test(element.style.height) || !/%$/.test(element.style.width) ? element.style.height : ((container && this.util.getNumber(container.style.height, 2)) || 100) + '%');\n },\n\n /**\n * @description Called at the \"openModify\" to put the size of the current target into the size input element.\n * @param {Object} contextPlugin context object of plugin (core.context[plugin])\n * @param {Object} pluginObj Plugin object\n */\n _module_setModifyInputSize: function (contextPlugin, pluginObj) {\n const percentageRotation = contextPlugin._onlyPercentage && this.context.resizing._rotateVertical;\n contextPlugin.proportion.checked = contextPlugin._proportionChecked = contextPlugin._element.getAttribute('data-proportion') !== 'false';\n \n let x = percentageRotation ? '' : this.plugins.resizing._module_getSizeX.call(this, contextPlugin);\n if (x === contextPlugin._defaultSizeX) x = '';\n if (contextPlugin._onlyPercentage) x = this.util.getNumber(x, 2);\n contextPlugin.inputX.value = x;\n pluginObj.setInputSize.call(this, 'x');\n \n if (!contextPlugin._onlyPercentage) {\n let y = percentageRotation ? '' : this.plugins.resizing._module_getSizeY.call(this, contextPlugin);\n if (y === contextPlugin._defaultSizeY) y = '';\n if (contextPlugin._onlyPercentage) y = this.util.getNumber(y, 2);\n contextPlugin.inputY.value = y;\n }\n \n contextPlugin.inputX.disabled = percentageRotation ? true : false;\n contextPlugin.inputY.disabled = percentageRotation ? true : false;\n contextPlugin.proportion.disabled = percentageRotation ? true : false;\n \n pluginObj.setRatio.call(this);\n },\n \n /**\n * @description It is called in \"setInputSize\" (input tag keyupEvent), \n * checks the value entered in the input tag, \n * calculates the ratio, and sets the calculated value in the input tag of the opposite size.\n * @param {Object} contextPlugin context object of plugin (core.context[plugin])\n * @param {String} xy 'x': width, 'y': height\n */\n _module_setInputSize: function (contextPlugin, xy) {\n if (contextPlugin._onlyPercentage) {\n if (xy === 'x' && contextPlugin.inputX.value > 100) contextPlugin.inputX.value = 100;\n return;\n }\n \n if (contextPlugin.proportion.checked && contextPlugin._ratio && /\\d/.test(contextPlugin.inputX.value) && /\\d/.test(contextPlugin.inputY.value)) {\n const xUnit = contextPlugin.inputX.value.replace(/\\d+|\\./g, '') || contextPlugin.sizeUnit;\n const yUnit = contextPlugin.inputY.value.replace(/\\d+|\\./g, '') || contextPlugin.sizeUnit;\n \n if (xUnit !== yUnit) return;\n \n const dec = xUnit === '%' ? 2 : 0;\n \n if (xy === 'x') {\n contextPlugin.inputY.value = this.util.getNumber(contextPlugin._ratioY * this.util.getNumber(contextPlugin.inputX.value, dec), dec) + yUnit;\n } else {\n contextPlugin.inputX.value = this.util.getNumber(contextPlugin._ratioX * this.util.getNumber(contextPlugin.inputY.value, dec), dec) + xUnit;\n }\n }\n },\n \n /**\n * @description It is called in \"setRatio\" (input and proportionCheck tags changeEvent), \n * checks the value of the input tag, calculates the ratio, and resets it in the input tag.\n * @param {Object} contextPlugin context object of plugin (core.context[plugin])\n */\n _module_setRatio: function (contextPlugin) {\n const xValue = contextPlugin.inputX.value;\n const yValue = contextPlugin.inputY.value;\n \n if (contextPlugin.proportion.checked && /\\d+/.test(xValue) && /\\d+/.test(yValue)) {\n const xUnit = xValue.replace(/\\d+|\\./g, '') || contextPlugin.sizeUnit;\n const yUnit = yValue.replace(/\\d+|\\./g, '') || contextPlugin.sizeUnit;\n \n if (xUnit !== yUnit) {\n contextPlugin._ratio = false;\n } else if (!contextPlugin._ratio) {\n const x = this.util.getNumber(xValue, 0);\n const y = this.util.getNumber(yValue, 0);\n \n contextPlugin._ratio = true;\n contextPlugin._ratioX = x / y;\n contextPlugin._ratioY = y / x;\n }\n } else {\n contextPlugin._ratio = false;\n }\n },\n \n /**\n * @description Revert size of element to origin size (plugin._origin_w, plugin._origin_h)\n * @param {Object} contextPlugin context object of plugin (core.context[plugin])\n */\n _module_sizeRevert: function (contextPlugin) {\n if (contextPlugin._onlyPercentage) {\n contextPlugin.inputX.value = contextPlugin._origin_w > 100 ? 100 : contextPlugin._origin_w;\n } else {\n contextPlugin.inputX.value = contextPlugin._origin_w;\n contextPlugin.inputY.value = contextPlugin._origin_h;\n }\n },\n \n /**\n * @description Save the size data (element.setAttribute(\"data-size\"))\n * Used at the \"setSize\" method\n * @param {Object} contextPlugin context object of plugin (core.context[plugin])\n */\n _module_saveCurrentSize: function (contextPlugin) {\n const x = this.plugins.resizing._module_getSizeX.call(this, contextPlugin);\n const y = this.plugins.resizing._module_getSizeY.call(this, contextPlugin);\n contextPlugin._element.setAttribute('data-size', x + ',' + y);\n if (!!contextPlugin._videoRatio) contextPlugin._videoRatio = y;\n },\n \n /**\n * @description Call the resizing module\n * @param {Element} targetElement Resizing target element\n * @param {string} plugin Plugin name\n * @returns {Object} Size of resizing div {w, h, t, l}\n */\n call_controller_resize: function (targetElement, plugin) {\n const contextResizing = this.context.resizing;\n const contextPlugin = this.context[plugin];\n contextResizing._resize_plugin = plugin;\n \n const resizeContainer = contextResizing.resizeContainer;\n const resizeDiv = contextResizing.resizeDiv;\n const offset = this.util.getOffset(targetElement, this.context.element.wysiwygFrame);\n \n const isVertical = contextResizing._rotateVertical = /^(90|270)$/.test(Math.abs(targetElement.getAttribute('data-rotate')).toString());\n \n const w = isVertical ? targetElement.offsetHeight : targetElement.offsetWidth;\n const h = isVertical ? targetElement.offsetWidth : targetElement.offsetHeight;\n const t = offset.top;\n const l = offset.left - this.context.element.wysiwygFrame.scrollLeft;\n \n resizeContainer.style.top = t + 'px';\n resizeContainer.style.left = l + 'px';\n resizeContainer.style.width = w + 'px';\n resizeContainer.style.height = h + 'px';\n \n resizeDiv.style.top = '0px';\n resizeDiv.style.left = '0px';\n resizeDiv.style.width = w + 'px';\n resizeDiv.style.height = h + 'px';\n \n let align = targetElement.getAttribute('data-align') || 'basic';\n align = align === 'none' ? 'basic' : align;\n \n // text\n const container = this.util.getParentElement(targetElement, this.util.isComponent);\n const cover = this.util.getParentElement(targetElement, 'FIGURE');\n const displayX = this.plugins.resizing._module_getSizeX.call(this, contextPlugin, targetElement, cover, container) || 'auto';\n const displayY = contextPlugin._onlyPercentage && plugin === 'image' ? '' : ', ' + (this.plugins.resizing._module_getSizeY.call(this, contextPlugin, targetElement, cover, container) || 'auto');\n this.util.changeTxt(contextResizing.resizeDisplay, this.lang.dialogBox[align] + ' (' + displayX + displayY + ')');\n \n // resizing display\n contextResizing.resizeButtonGroup.style.display = contextPlugin._resizing ? '' : 'none';\n const resizeDotShow = contextPlugin._resizing && !contextPlugin._resizeDotHide && !contextPlugin._onlyPercentage ? 'flex' : 'none';\n const resizeHandles = contextResizing.resizeHandles;\n for (let i = 0, len = resizeHandles.length; i < len; i++) {\n resizeHandles[i].style.display = resizeDotShow;\n }\n \n if (contextPlugin._resizing) {\n const rotations = contextResizing.rotationButtons;\n rotations[0].style.display = rotations[1].style.display = contextPlugin._rotation ? '' : 'none';\n }\n \n // align icon\n if (contextPlugin._alignHide) {\n contextResizing.alignButton.style.display = 'none';\n } else {\n contextResizing.alignButton.style.display = '';\n const alignList = contextResizing.alignMenuList;\n this.util.changeElement(contextResizing.alignButton.firstElementChild, contextResizing.alignIcons[align]);\n for (let i = 0, len = alignList.length; i < len; i++) {\n if (alignList[i].getAttribute('data-value') === align) this.util.addClass(alignList[i], 'on');\n else this.util.removeClass(alignList[i], 'on');\n }\n }\n \n // percentage active\n const pButtons = contextResizing.percentageButtons;\n const value = /%$/.test(targetElement.style.width) && /%$/.test(container.style.width) ? (this.util.getNumber(container.style.width, 0) / 100) + '' : '' ;\n for (let i = 0, len = pButtons.length; i < len; i++) {\n if (pButtons[i].getAttribute('data-value') === value) {\n this.util.addClass(pButtons[i], 'active');\n } else {\n this.util.removeClass(pButtons[i], 'active');\n }\n }\n \n // caption display, active\n if (!contextPlugin._captionShow) {\n contextResizing.captionButton.style.display = 'none';\n } else {\n contextResizing.captionButton.style.display = '';\n if (this.util.getChildElement(targetElement.parentNode, 'figcaption')) {\n this.util.addClass(contextResizing.captionButton, 'active');\n contextPlugin._captionChecked = true;\n } else {\n this.util.removeClass(contextResizing.captionButton, 'active');\n contextPlugin._captionChecked = false;\n }\n }\n\n resizeContainer.style.display = 'block';\n\n const addOffset = {left: 0, top: 50};\n if (this.options.iframe) {\n addOffset.left -= this.context.element.wysiwygFrame.parentElement.offsetLeft;\n addOffset.top -= this.context.element.wysiwygFrame.parentElement.offsetTop;\n }\n\n this.setControllerPosition(contextResizing.resizeButton, resizeContainer, 'bottom', addOffset);\n this.controllersOn(resizeContainer, contextResizing.resizeButton, this.util.setDisabledButtons.bind(this.util, false, this.resizingDisabledButtons), targetElement, plugin);\n this.util.setDisabledButtons(true, this.resizingDisabledButtons);\n \n contextResizing._resize_w = w;\n contextResizing._resize_h = h;\n \n const originSize = (targetElement.getAttribute('origin-size') || '').split(',');\n contextResizing._origin_w = originSize[0] || targetElement.naturalWidth;\n contextResizing._origin_h = originSize[1] || targetElement.naturalHeight;\n \n return {\n w: w,\n h: h,\n t: t,\n l: l\n };\n },\n \n _closeAlignMenu: null,\n\n /**\n * @description Open align submenu of module\n */\n openAlignMenu: function () {\n const alignButton = this.context.resizing.alignButton;\n this.util.addClass(alignButton, 'on');\n this.context.resizing.alignMenu.style.top = (alignButton.offsetTop + alignButton.offsetHeight) + 'px';\n this.context.resizing.alignMenu.style.left = (alignButton.offsetLeft - alignButton.offsetWidth / 2) + 'px';\n this.context.resizing.alignMenu.style.display = 'block';\n \n this.plugins.resizing._closeAlignMenu = function () {\n this.util.removeClass(this.context.resizing.alignButton, 'on');\n this.context.resizing.alignMenu.style.display = 'none';\n this.removeDocEvent('click', this.plugins.resizing._closeAlignMenu);\n this.plugins.resizing._closeAlignMenu = null;\n }.bind(this);\n \n this.addDocEvent('click', this.plugins.resizing._closeAlignMenu);\n },\n \n /**\n * @description Click event of resizing toolbar\n * Performs the action of the clicked toolbar button.\n * @param {MouseEvent} e Event object\n */\n onClick_resizeButton: function (e) {\n e.stopPropagation();\n \n const target = e.target;\n const command = target.getAttribute('data-command') || target.parentNode.getAttribute('data-command');\n \n if (!command) return;\n \n const value = target.getAttribute('data-value') || target.parentNode.getAttribute('data-value');\n \n const pluginName = this.context.resizing._resize_plugin;\n const currentContext = this.context[pluginName];\n const contextEl = currentContext._element;\n const currentModule = this.plugins[pluginName];\n \n e.preventDefault();\n \n if (typeof this.plugins.resizing._closeAlignMenu === 'function') {\n this.plugins.resizing._closeAlignMenu();\n if (command === 'onalign') return;\n }\n \n switch (command) {\n case 'auto':\n this.plugins.resizing.resetTransform.call(this, contextEl);\n currentModule.setAutoSize.call(this);\n this.selectComponent(contextEl, pluginName);\n break;\n case 'percent':\n let percentY = this.plugins.resizing._module_getSizeY.call(this, currentContext);\n if (this.context.resizing._rotateVertical) {\n const percentage = contextEl.getAttribute('data-percentage');\n if (percentage) percentY = percentage.split(',')[1];\n }\n \n this.plugins.resizing.resetTransform.call(this, contextEl);\n currentModule.setPercentSize.call(this, (value * 100), (this.util.getNumber(percentY, 0) === null || !/%$/.test(percentY)) ? '' : percentY);\n this.selectComponent(contextEl, pluginName);\n break;\n case 'mirror':\n const r = contextEl.getAttribute('data-rotate') || '0';\n let x = contextEl.getAttribute('data-rotateX') || '';\n let y = contextEl.getAttribute('data-rotateY') || '';\n \n if ((value === 'h' && !this.context.resizing._rotateVertical) || (value === 'v' && this.context.resizing._rotateVertical)) {\n y = y ? '' : '180';\n } else {\n x = x ? '' : '180';\n }\n \n contextEl.setAttribute('data-rotateX', x);\n contextEl.setAttribute('data-rotateY', y);\n \n this.plugins.resizing._setTransForm(contextEl, r, x, y);\n break;\n case 'rotate':\n const contextResizing = this.context.resizing;\n const slope = (contextEl.getAttribute('data-rotate') * 1) + (value * 1);\n const deg = this._w.Math.abs(slope) >= 360 ? 0 : slope;\n \n contextEl.setAttribute('data-rotate', deg);\n contextResizing._rotateVertical = /^(90|270)$/.test(this._w.Math.abs(deg).toString());\n this.plugins.resizing.setTransformSize.call(this, contextEl, null, null);\n \n this.selectComponent(contextEl, pluginName);\n break;\n case 'onalign':\n this.plugins.resizing.openAlignMenu.call(this);\n return;\n case 'align':\n const alignValue = value === 'basic' ? 'none' : value;\n currentModule.setAlign.call(this, alignValue, null, null, null);\n this.selectComponent(contextEl, pluginName);\n break;\n case 'caption':\n const caption = !currentContext._captionChecked;\n currentModule.openModify.call(this, true);\n currentContext._captionChecked = currentContext.captionCheckEl.checked = caption;\n \n currentModule.update_image.call(this, false, false, false);\n \n if (caption) {\n const captionText = this.util.getChildElement(currentContext._caption, function (current) {\n return current.nodeType === 3;\n });\n \n if (!captionText) {\n currentContext._caption.focus();\n } else {\n this.setRange(captionText, 0, captionText, captionText.textContent.length);\n }\n \n this.controllersOff();\n } else {\n this.selectComponent(contextEl, pluginName);\n currentModule.openModify.call(this, true);\n }\n \n break;\n case 'revert':\n currentModule.setOriginSize.call(this);\n this.selectComponent(contextEl, pluginName);\n break;\n case 'update':\n currentModule.openModify.call(this);\n this.controllersOff();\n break;\n case 'delete':\n currentModule.destroy.call(this);\n break;\n }\n \n // history stack\n this.history.push(false);\n },\n \n /**\n * @description Initialize the transform style (rotation) of the element.\n * @param {Element} element Target element\n */\n resetTransform: function (element) {\n const size = (element.getAttribute('data-size') || element.getAttribute('data-origin') || '').split(',');\n this.context.resizing._rotateVertical = false;\n \n element.style.maxWidth = '';\n element.style.transform = '';\n element.style.transformOrigin = '';\n element.setAttribute('data-rotate', '');\n element.setAttribute('data-rotateX', '');\n element.setAttribute('data-rotateY', '');\n \n this.plugins[this.context.resizing._resize_plugin].setSize.call(this, size[0] ? size[0] : 'auto', size[1] ? size[1] : '', true);\n },\n \n /**\n * @description Set the transform style (rotation) of the element.\n * @param {Element} element Target element\n * @param {Number|null} width Element's width size\n * @param {Number|null} height Element's height size\n */\n setTransformSize: function (element, width, height) {\n let percentage = element.getAttribute('data-percentage');\n const isVertical = this.context.resizing._rotateVertical;\n const deg = element.getAttribute('data-rotate') * 1;\n let transOrigin = '';\n \n if (percentage && !isVertical) {\n percentage = percentage.split(',');\n if (percentage[0] === 'auto' && percentage[1] === 'auto') {\n this.plugins[this.context.resizing._resize_plugin].setAutoSize.call(this);\n } else {\n this.plugins[this.context.resizing._resize_plugin].setPercentSize.call(this, percentage[0], percentage[1]);\n }\n } else {\n const cover = this.util.getParentElement(element, 'FIGURE');\n \n const offsetW = width || element.offsetWidth;\n const offsetH = height || element.offsetHeight;\n const w = (isVertical ? offsetH : offsetW) + 'px';\n const h = (isVertical ? offsetW : offsetH) + 'px';\n \n this.plugins[this.context.resizing._resize_plugin].cancelPercentAttr.call(this);\n this.plugins[this.context.resizing._resize_plugin].setSize.call(this, offsetW + 'px', offsetH + 'px', true);\n \n cover.style.width = w;\n cover.style.height = (!!this.context[this.context.resizing._resize_plugin]._caption ? '' : h);\n \n if (isVertical) {\n let transW = (offsetW/2) + 'px ' + (offsetW/2) + 'px 0';\n let transH = (offsetH/2) + 'px ' + (offsetH/2) + 'px 0';\n transOrigin = deg === 90 || deg === -270 ? transH : transW;\n }\n }\n \n element.style.transformOrigin = transOrigin;\n this.plugins.resizing._setTransForm(element, deg.toString(), element.getAttribute('data-rotateX') || '', element.getAttribute('data-rotateY') || '');\n \n if (isVertical) element.style.maxWidth = 'none';\n else element.style.maxWidth = '';\n \n this.plugins.resizing.setCaptionPosition.call(this, element);\n },\n \n _setTransForm: function (element, r, x, y) {\n let width = (element.offsetWidth - element.offsetHeight) * (/-/.test(r) ? 1 : -1);\n let translate = '';\n \n if (/[1-9]/.test(r) && (x || y)) {\n translate = x ? 'Y' : 'X';\n \n switch (r) {\n case '90':\n translate = x && y ? 'X' : y ? translate : '';\n break;\n case '270':\n width *= -1;\n translate = x && y ? 'Y' : x ? translate : '';\n break;\n case '-90':\n translate = x && y ? 'Y' : x ? translate : '';\n break;\n case '-270':\n width *= -1;\n translate = x && y ? 'X' : y ? translate : '';\n break;\n default:\n translate = '';\n }\n }\n \n if (r % 180 === 0) {\n element.style.maxWidth = '';\n }\n \n element.style.transform = 'rotate(' + r + 'deg)' + (x ? ' rotateX(' + x + 'deg)' : '') + (y ? ' rotateY(' + y + 'deg)' : '') + (translate ? ' translate' + translate + '(' + width + 'px)' : '');\n },\n \n /**\n * @description The position of the caption is set automatically.\n * @param {Element} element Target element (not caption element)\n */\n setCaptionPosition: function (element) {\n const figcaption = this.util.getChildElement(this.util.getParentElement(element, 'FIGURE'), 'FIGCAPTION');\n if (figcaption) {\n figcaption.style.marginTop = (this.context.resizing._rotateVertical ? element.offsetWidth - element.offsetHeight : 0) + 'px';\n }\n },\n \n /**\n * @description Mouse down event of resize handles\n * @param {MouseEvent} e Event object \n */\n onMouseDown_resize_handle: function (e) {\n e.stopPropagation();\n e.preventDefault();\n \n const contextResizing = this.context.resizing;\n const direction = contextResizing._resize_direction = e.target.classList[0];\n \n contextResizing._resizeClientX = e.clientX;\n contextResizing._resizeClientY = e.clientY;\n this.context.element.resizeBackground.style.display = 'block';\n contextResizing.resizeButton.style.display = 'none';\n contextResizing.resizeDiv.style.float = /l/.test(direction) ? 'right' : /r/.test(direction) ? 'left' : 'none';\n \n const closureFunc_bind = function closureFunc(e) {\n if (e.type === 'keydown' && e.keyCode !== 27) return;\n \n const change = contextResizing._isChange;\n contextResizing._isChange = false;\n \n this.removeDocEvent('mousemove', resizing_element_bind);\n this.removeDocEvent('mouseup', closureFunc_bind);\n this.removeDocEvent('keydown', closureFunc_bind);\n \n if (e.type === 'keydown') {\n this.controllersOff();\n this.context.element.resizeBackground.style.display = 'none';\n this.plugins[this.context.resizing._resize_plugin].init.call(this);\n } else {\n // element resize\n this.plugins.resizing.cancel_controller_resize.call(this, direction);\n // history stack\n if (change) this.history.push(false);\n }\n }.bind(this);\n \n const resizing_element_bind = this.plugins.resizing.resizing_element.bind(this, contextResizing, direction, this.context[contextResizing._resize_plugin]);\n this.addDocEvent('mousemove', resizing_element_bind);\n this.addDocEvent('mouseup', closureFunc_bind);\n this.addDocEvent('keydown', closureFunc_bind);\n },\n \n /**\n * @description Mouse move event after call \"onMouseDown_resize_handle\" of resize handles\n * The size of the module's \"div\" is adjusted according to the mouse move event.\n * @param {Object} contextResizing \"core.context.resizing\" object (binding argument)\n * @param {String} direction Direction (\"tl\", \"tr\", \"bl\", \"br\", \"lw\", \"th\", \"rw\", \"bh\") (binding argument)\n * @param {Object} plugin \"core.context[currentPlugin]\" object (binding argument)\n * @param {MouseEvent} e Event object\n */\n resizing_element: function (contextResizing, direction, plugin, e) {\n const clientX = e.clientX;\n const clientY = e.clientY;\n \n let resultW = plugin._element_w;\n let resultH = plugin._element_h;\n \n const w = plugin._element_w + (/r/.test(direction) ? clientX - contextResizing._resizeClientX : contextResizing._resizeClientX - clientX);\n const h = plugin._element_h + (/b/.test(direction) ? clientY - contextResizing._resizeClientY : contextResizing._resizeClientY - clientY);\n const wh = ((plugin._element_h / plugin._element_w) * w);\n \n if (/t/.test(direction)) contextResizing.resizeDiv.style.top = (plugin._element_h - (/h/.test(direction) ? h : wh)) + 'px';\n if (/l/.test(direction)) contextResizing.resizeDiv.style.left = (plugin._element_w - w) + 'px';\n \n if (/r|l/.test(direction)) {\n contextResizing.resizeDiv.style.width = w + 'px';\n resultW = w;\n }\n \n if (/^(t|b)[^h]$/.test(direction)) {\n contextResizing.resizeDiv.style.height = wh + 'px';\n resultH = wh;\n }\n else if (/^(t|b)h$/.test(direction)) {\n contextResizing.resizeDiv.style.height = h + 'px';\n resultH = h;\n }\n \n contextResizing._resize_w = resultW;\n contextResizing._resize_h = resultH;\n this.util.changeTxt(contextResizing.resizeDisplay, this._w.Math.round(resultW) + ' x ' + this._w.Math.round(resultH));\n contextResizing._isChange = true;\n },\n \n /**\n * @description Resize the element to the size of the \"div\" adjusted in the \"resizing_element\" method.\n * Called at the mouse-up event registered in \"onMouseDown_resize_handle\".\n * @param {String} direction Direction (\"tl\", \"tr\", \"bl\", \"br\", \"lw\", \"th\", \"rw\", \"bh\")\n */\n cancel_controller_resize: function (direction) {\n const isVertical = this.context.resizing._rotateVertical;\n this.controllersOff();\n this.context.element.resizeBackground.style.display = 'none';\n \n let w = this._w.Math.round(isVertical ? this.context.resizing._resize_h : this.context.resizing._resize_w);\n let h = this._w.Math.round(isVertical ? this.context.resizing._resize_w : this.context.resizing._resize_h);\n \n if (!isVertical && !/%$/.test(w)) {\n const padding = 16;\n const limit = this.context.element.wysiwygFrame.clientWidth - (padding * 2) - 2;\n \n if (this.util.getNumber(w, 0) > limit) {\n h = this._w.Math.round((h / w) * limit);\n w = limit;\n }\n }\n \n const pluginName = this.context.resizing._resize_plugin;\n this.plugins[pluginName].setSize.call(this, w, h, false, direction);\n if (isVertical) this.plugins.resizing.setTransformSize.call(this, this.context[this.context.resizing._resize_plugin]._element, w, h);\n\n this.selectComponent(this.context[pluginName]._element, pluginName);\n }\n };\n\n if (typeof noGlobal === typeof undefined) {\n if (!window.SUNEDITOR_MODULES) {\n Object.defineProperty(window, 'SUNEDITOR_MODULES', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: {}\n });\n }\n\n Object.defineProperty(window.SUNEDITOR_MODULES, 'resizing', {\n enumerable: true,\n writable: false,\n configurable: false,\n value: resizing\n });\n }\n\n return resizing;\n}));","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2020 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n // rtl icon\n rtl: {\n italic: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10.5 15.8\" xml:space=\"preserve\"><g><path d=\"M0.3,0.1c0.3,0,0.5,0,0.7,0c1,0.1,1.7,0.1,2.2,0.1H4L7.2,0l0.2,1.1H7c-0.5,0-1,0.1-1.5,0.3v0.4l0.3,1.9L6,4.4L6.3,6 l0.1,0.4l0.1,0.5c0.1,0.2,0.1,0.4,0.2,0.7s0.1,0.6,0.2,0.9L7,9.1l0.6,2.8l0.3,1.4c0.1,0.4,0.2,0.7,0.4,1c0.4,0.2,0.8,0.3,1.2,0.4 l0.8,0.2l0.2,0.9l-1.1,0c-0.9-0.1-1.5-0.1-1.8-0.1h-2c-0.9,0.1-1.4,0.2-1.5,0.2c-0.1,0-0.2,0-0.3,0H3.4c-0.1,0-0.2,0-0.2,0 l-0.1-0.4c0-0.2-0.1-0.4-0.1-0.6l0.7-0.1c0.4,0,0.8-0.1,1.2-0.2c0-0.1,0-0.2,0-0.3l-0.1-0.5l-0.4-2.4L4,9.6L3.4,6.4 C3.2,5.7,3,4.7,2.7,3.3c0-0.3-0.1-0.5-0.1-0.8C2.5,2.1,2.4,1.9,2.3,1.6C2,1.4,1.6,1.3,1.3,1.2C0.9,1.2,0.5,1.1,0.2,0.9L0,0.4L0,0 L0.3,0.1L0.3,0.1z\"/></g></svg>',\n indent: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.7 12.4\" xml:space=\"preserve\"><g><g><path d=\"M15.5,10.1L15.5,10.1c0.1,0,0.3,0.1,0.3,0.3v1.7c0,0.1,0,0.1-0.1,0.2c-0.1,0.1-0.1,0.1-0.2,0.1l-15.2,0 c-0.1,0-0.1,0-0.2-0.1C0,12.2,0,12.2,0,12.1l0-1.7c0-0.1,0-0.1,0.1-0.2c0.1-0.1,0.1-0.1,0.2-0.1C0.3,10.1,15.5,10.1,15.5,10.1z M9.8,6.7c0.1,0,0.1,0,0.2,0.1C10.1,6.9,10.1,7,10.1,7v1.7c0,0.1,0,0.2-0.1,0.2C10,9,9.9,9,9.8,9L0.3,9C0.2,9,0.1,9,0.1,8.9 C0,8.9,0,8.8,0,8.7V7C0,7,0,6.9,0.1,6.8c0.1-0.1,0.1-0.1,0.2-0.1C0.3,6.7,9.8,6.7,9.8,6.7z M0.3,3.4h9.6h0c0.1,0,0.3,0.1,0.3,0.3 v1.7v0c0,0.1-0.1,0.3-0.3,0.3H0.3c-0.1,0-0.1,0-0.2-0.1C0,5.5,0,5.4,0,5.3V3.6c0-0.1,0-0.1,0.1-0.2C0.1,3.4,0.2,3.4,0.3,3.4 L0.3,3.4z M0.3,0l15.2,0c0.1,0,0.1,0,0.2,0.1c0.1,0.1,0.1,0.1,0.1,0.2V2c0,0.1,0,0.2-0.1,0.2c-0.1,0.1-0.1,0.1-0.2,0.1H0.3 c-0.1,0-0.1,0-0.2-0.1C0,2.1,0,2,0,2l0-1.7c0-0.1,0-0.1,0.1-0.2C0.1,0,0.2,0,0.3,0z\"/></g><path d=\"M13.1,3.5L15.7,6c0.1,0.1,0.1,0.3,0,0.4l-2.5,2.5C13.1,9,13,9,12.9,9c-0.1,0-0.1,0-0.2-0.1c-0.1-0.1-0.1-0.1-0.1-0.2V3.7 c0-0.1,0-0.2,0.1-0.2c0.1-0.1,0.1-0.1,0.2-0.1C13,3.4,13.1,3.4,13.1,3.5z\"/></g></svg>',\n outdent: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.7 12.4\" xml:space=\"preserve\"><g><g><path d=\"M15.5,10.1L15.5,10.1c0.1,0,0.3,0.1,0.3,0.3v1.7c0,0.1,0,0.1-0.1,0.2c-0.1,0.1-0.1,0.1-0.2,0.1l-15.2,0 c-0.1,0-0.1,0-0.2-0.1C0,12.2,0,12.2,0,12.1l0-1.7c0-0.1,0-0.1,0.1-0.2c0.1-0.1,0.1-0.1,0.2-0.1C0.3,10.1,15.5,10.1,15.5,10.1z M9.8,6.7c0.1,0,0.1,0,0.2,0.1C10.1,6.9,10.1,7,10.1,7v1.7c0,0.1,0,0.2-0.1,0.2C10,9,9.9,9,9.8,9L0.3,9C0.2,9,0.1,9,0.1,8.9 C0,8.9,0,8.8,0,8.7V7C0,7,0,6.9,0.1,6.8c0.1-0.1,0.1-0.1,0.2-0.1C0.3,6.7,9.8,6.7,9.8,6.7z M0.3,3.4h9.6h0c0.1,0,0.3,0.1,0.3,0.3 v1.7v0c0,0.1-0.1,0.3-0.3,0.3H0.3c-0.1,0-0.1,0-0.2-0.1C0,5.5,0,5.4,0,5.3V3.6c0-0.1,0-0.1,0.1-0.2C0.1,3.4,0.2,3.4,0.3,3.4 L0.3,3.4z M0.3,0l15.2,0c0.1,0,0.1,0,0.2,0.1c0.1,0.1,0.1,0.1,0.1,0.2V2c0,0.1,0,0.2-0.1,0.2c-0.1,0.1-0.1,0.1-0.2,0.1H0.3 c-0.1,0-0.1,0-0.2-0.1C0,2.1,0,2,0,2l0-1.7c0-0.1,0-0.1,0.1-0.2C0.1,0,0.2,0,0.3,0z\"/></g><path d=\"M15.5,3.4c0.1,0,0.1,0,0.2,0.1c0.1,0.1,0.1,0.1,0.1,0.2v5.1c0,0.1,0,0.1-0.1,0.2C15.6,9,15.5,9,15.5,9 c-0.1,0-0.1,0-0.2-0.1l-2.5-2.5c-0.1-0.1-0.1-0.3,0-0.4l2.5-2.5C15.3,3.4,15.4,3.4,15.5,3.4z\"/></g></svg>',\n list_bullets: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.7 12.4\" xml:space=\"preserve\"><g><path d=\"M12.4,10.7c0,0.9,0.8,1.7,1.7,1.7c0.9,0,1.7-0.8,1.7-1.7C15.7,9.8,15,9,14.1,9c-0.4,0-0.9,0.2-1.2,0.5 C12.5,9.8,12.4,10.2,12.4,10.7C12.4,10.7,12.4,10.7,12.4,10.7z M12.4,6.2c0,0.9,0.8,1.7,1.7,1.7c0.4,0,0.9-0.2,1.2-0.5 c0.3-0.3,0.4-0.7,0.4-1.1c0-0.9-0.7-1.7-1.6-1.7C13.1,4.6,12.4,5.3,12.4,6.2C12.4,6.2,12.4,6.2,12.4,6.2z M0,9.8v1.7 c0,0.1,0,0.1,0.1,0.2c0.1,0.1,0.1,0.1,0.2,0.1l10.7,0c0,0,0,0,0,0c0.1,0,0.3-0.1,0.3-0.3V9.8c0-0.1,0-0.1-0.1-0.2 C11.1,9.6,11,9.6,11,9.6l-10.7,0c-0.1,0-0.1,0-0.2,0.1C0,9.7,0,9.8,0,9.8L0,9.8z M12.9,2.9c0.3,0.3,0.7,0.5,1.2,0.5 c0.4,0,0.9-0.2,1.2-0.5c0.7-0.7,0.7-1.7,0-2.4C14.9,0.2,14.5,0,14.1,0c-0.4,0-0.9,0.2-1.2,0.5c-0.3,0.3-0.5,0.7-0.5,1.2 C12.4,2.1,12.5,2.6,12.9,2.9z M0,5.3V7c0,0.1,0,0.1,0.1,0.2c0.1,0.1,0.1,0.1,0.2,0.1H11c0.1,0,0.1,0,0.2-0.1 c0.1-0.1,0.1-0.1,0.1-0.2V5.3c0,0,0,0,0,0c0-0.1-0.1-0.3-0.3-0.3H0.3c-0.1,0-0.1,0-0.2,0.1C0,5.2,0,5.3,0,5.3L0,5.3z M0,0.8v1.7 c0,0.1,0,0.1,0.1,0.2c0.1,0.1,0.1,0.1,0.2,0.1h10.7c0.1,0,0.1,0,0.2-0.1c0,0,0.1-0.1,0.1-0.2V0.8c0-0.1,0-0.1-0.1-0.2 c0-0.1-0.1-0.1-0.2-0.1H0.3c-0.1,0-0.1,0-0.2,0.1C0,0.7,0,0.8,0,0.8L0,0.8z\"/></g></svg>',\n list_number: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.7 15.7\" xml:space=\"preserve\"><g><path d=\"M0,11.5l0,1.7c0,0.1,0,0.1,0.1,0.2c0.1,0.1,0.1,0.1,0.2,0.1H11c0.1,0,0.2,0,0.2-0.1c0.1-0.1,0.1-0.1,0.1-0.2v-1.7 c0-0.1,0-0.1-0.1-0.2c-0.1-0.1-0.1-0.1-0.2-0.1H0.3c-0.1,0-0.2,0-0.2,0.1C0,11.4,0,11.4,0,11.5L0,11.5z M0,8.7c0,0.1,0,0.1,0.1,0.2 C0.1,8.9,0.2,9,0.3,9H11c0.1,0,0.2,0,0.2-0.1c0.1-0.1,0.1-0.1,0.1-0.2V7c0-0.1,0-0.1-0.1-0.2c-0.1-0.1-0.1-0.1-0.2-0.1l-10.7,0 c-0.1,0-0.2,0-0.2,0.1C0,6.8,0,6.9,0,7C0,7,0,8.7,0,8.7z M0,2.5v1.7c0,0.1,0,0.1,0.1,0.2c0,0,0.1,0.1,0.2,0.1l10.7,0 c0.1,0,0.2,0,0.2-0.1c0.1-0.1,0.1-0.1,0.1-0.2V2.4c0-0.1,0-0.1-0.1-0.2c-0.1,0-0.1,0-0.2,0H0.3c-0.1,0-0.1,0-0.2,0 C0,2.3,0,2.4,0,2.5L0,2.5z\"/></g><path d=\"M15.6,14.2c0-0.3-0.1-0.6-0.3-0.8c-0.2-0.2-0.4-0.4-0.7-0.4l0.9-1v-0.8h-2.9v1.3h0.9v-0.5h0.9l0,0c-0.1,0.1-0.2,0.2-0.3,0.3 s-0.2,0.3-0.4,0.5l-0.3,0.3l0.2,0.5c0.6,0,0.9,0.1,0.9,0.5c0,0.1-0.1,0.3-0.2,0.4c-0.1,0.1-0.3,0.1-0.4,0.1c-0.3,0-0.7-0.1-0.9-0.3 l-0.5,0.8c0.4,0.4,0.9,0.6,1.5,0.6c0.4,0,0.9-0.1,1.2-0.4C15.5,15.1,15.6,14.7,15.6,14.2z\"/><path d=\"M15.6,8.7h-0.9v0.5h-1.1c0-0.2,0.2-0.4,0.4-0.5c0.2-0.2,0.4-0.3,0.7-0.4c0.3-0.2,0.5-0.3,0.7-0.6c0.2-0.2,0.3-0.5,0.3-0.8 c0-0.4-0.2-0.8-0.5-1c-0.6-0.4-1.4-0.5-2-0.1c-0.3,0.2-0.5,0.4-0.6,0.7L13.3,7c0.1-0.3,0.4-0.5,0.7-0.5c0.1,0,0.3,0,0.3,0.1 c0.1,0.1,0.1,0.2,0.1,0.3c0,0.2-0.1,0.3-0.2,0.4c-0.2,0.1-0.3,0.3-0.5,0.4c-0.2,0.1-0.4,0.3-0.6,0.4c-0.2,0.2-0.4,0.4-0.5,0.6 c-0.1,0.2-0.2,0.5-0.2,0.8c0,0.2,0,0.3,0,0.5h3.2L15.6,8.7L15.6,8.7z\"/><path d=\"M15.6,3.6h-1V0h-0.9l-1.2,1.1l0.6,0.7c0.2-0.1,0.3-0.3,0.4-0.5l0,0v2.2h-0.9v0.9h3L15.6,3.6L15.6,3.6z\"/></svg>',\n link: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.7 15.7\" xml:space=\"preserve\"><g><path d=\"M7.4,9.9l3.1,3.1c0.3,0.3,0.8,0.5,1.3,0.5c0.5,0,0.9-0.2,1.3-0.5c0,0,0,0,0,0c0.7-0.7,0.7-1.9,0-2.6L9.9,7.3 c0-0.1,0-0.2,0-0.3C9.9,7,10,7,10.1,7l2.2-0.2c0.1,0,0.1,0,0.2,0.1l2.1,2.1c0.4,0.4,0.7,0.8,0.9,1.3c0.2,0.5,0.3,1,0.3,1.5 c0,0.5-0.1,1-0.3,1.5c-0.8,2-3.2,3-5.2,2.2c-0.5-0.2-0.9-0.5-1.3-0.9l-2.1-2.1c-0.1,0-0.1-0.1-0.1-0.2L7,10.1C7,10,7,9.9,7.1,9.9 C7.2,9.8,7.3,9.9,7.4,9.9z M1.2,1.1C1.6,0.7,2,0.4,2.5,0.3c1-0.4,2.1-0.4,3.1,0C6,0.4,6.5,0.7,6.8,1.1L9,3.2C9,3.3,9.1,3.3,9,3.4 L8.8,5.6c0,0.1-0.1,0.2-0.2,0.2c-0.1,0.1-0.2,0.1-0.3,0L5.3,2.7C5,2.3,4.5,2.1,4,2.1c-0.5,0-0.9,0.2-1.3,0.5c0,0,0,0,0,0 C2,3.4,2,4.5,2.7,5.2l3.1,3.2c0.1,0.1,0.1,0.2,0,0.3c0,0.1-0.1,0.1-0.2,0.1L3.5,9C3.4,9,3.4,9,3.3,8.9L1.2,6.8c0,0,0,0,0,0 C-0.4,5.2-0.4,2.7,1.2,1.1L1.2,1.1z M14.3,6h-2.6c0,0,0,0,0,0c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0-0.2,0.1-0.3l2.5-0.7 c0.1,0,0.1,0,0.2,0c0.1,0,0.1,0.1,0.1,0.2l0.1,0.8c0,0.1,0,0.1-0.1,0.2C14.5,6,14.4,6,14.3,6L14.3,6z M10.2,4.1 c0,0.1-0.1,0.2-0.2,0.2l0,0c0,0,0,0,0,0C9.8,4.2,9.7,4.1,9.8,4L9.7,1.4c0-0.1,0-0.1,0.1-0.2c0.1,0,0.1,0,0.2,0h0.8 c0.1,0,0.1,0,0.2,0.1c0,0.1,0,0.1,0,0.2L10.2,4.1L10.2,4.1z M1.5,9.7h1.3h1.3c0.1,0,0.2,0.1,0.2,0.2c0,0.1,0,0.2-0.1,0.3l-2.5,0.6 H1.6c0,0-0.1,0-0.1,0c-0.1,0-0.1-0.1-0.1-0.2L1.2,9.9c0-0.1,0-0.1,0.1-0.2c0-0.1,0.1-0.1,0.2-0.1L1.5,9.7z M5.6,11.6 C5.6,11.6,5.6,11.6,5.6,11.6c0-0.1,0.1-0.2,0.3-0.1c0,0,0,0,0,0c0.1,0,0.2,0.1,0.2,0.2v2.6c0,0.1,0,0.1-0.1,0.2 c0,0-0.1,0.1-0.2,0.1L5,14.5c-0.1,0-0.1,0-0.2-0.1c0-0.1,0-0.1,0-0.2L5.6,11.6L5.6,11.6z\"/></g></svg>',\n unlink: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.7 15.7\" xml:space=\"preserve\"><g><path d=\"M14.6,14.6c1.6-1.6,1.6-4.1,0-5.7l0,0l-3.1-3.1l-1.2,1.6l2.9,2.9c0.4,0.4,0.6,0.9,0.6,1.5c0,1.1-0.9,2.1-2.1,2.1l0,0 c-0.6,0-1.1-0.2-1.5-0.6l-0.4-0.4l-1.7,1l0.8,0.8C10.4,16.2,13,16.2,14.6,14.6L14.6,14.6L14.6,14.6z M3.6,6C3,5.9,2.6,5.5,2.3,5 S1.9,4,2.1,3.4C2.3,2.9,2.6,2.5,3,2.2C3.5,2,4.1,1.9,4.6,2l3.3,1.4l0.5-2L5.1,0.1C4-0.1,2.9,0,2,0.5C1.1,1.1,0.4,1.9,0.2,3 C-0.1,4,0,5.1,0.6,6C1.1,6.9,1.9,7.6,3,7.8l5.4,2l0.5-2L6.2,6.9L3.6,6z\"/></g></svg>'\n },\n // common, ltr icon\n redo: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.59 14.18\"><g><path d=\"M11.58,18.48a6.84,6.84,0,1,1,6.85-6.85s0,.26,0,.67a8,8,0,0,1-.22,1.44l.91-.55a.51.51,0,0,1,.36,0,.45.45,0,0,1,.29.22.47.47,0,0,1,.06.36.45.45,0,0,1-.22.29L17.42,15.3l-.12,0h-.25l-.12-.06-.09-.09-.06-.07,0-.06-.87-2.12a.43.43,0,0,1,0-.37.49.49,0,0,1,.27-.26.41.41,0,0,1,.36,0,.53.53,0,0,1,.27.26l.44,1.09a6.51,6.51,0,0,0,.24-1.36,4.58,4.58,0,0,0,0-.64,5.83,5.83,0,0,0-1.73-4.17,5.88,5.88,0,0,0-8.34,0,5.9,5.9,0,0,0,4.17,10.06.51.51,0,0,1,.33.15.48.48,0,0,1,0,.68.53.53,0,0,1-.33.12Z\" transform=\"translate(-4.48 -4.54)\"/></g></svg>',\n undo: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.59 14.18\"><g><path d=\"M5,14a.43.43,0,0,1-.22-.29.46.46,0,0,1,.06-.36.43.43,0,0,1,.29-.22.56.56,0,0,1,.36,0l.91.55a8.27,8.27,0,0,1-.22-1.45,5.07,5.07,0,0,1,0-.67A6.85,6.85,0,1,1,13,18.47a.44.44,0,0,1-.33-.13.48.48,0,0,1,0-.68.51.51,0,0,1,.33-.15A5.89,5.89,0,0,0,17.15,7.45a5.88,5.88,0,0,0-8.33,0,5.84,5.84,0,0,0-1.73,4.17s0,.25,0,.65a6.49,6.49,0,0,0,.24,1.37l.44-1.09a.57.57,0,0,1,.27-.26.41.41,0,0,1,.36,0,.53.53,0,0,1,.27.26.43.43,0,0,1,0,.37L7.82,15l0,.09-.09.09-.1.07-.06,0H7.28l-.13,0-1.09-.63c-.65-.36-1-.57-1.1-.63Z\" transform=\"translate(-4.49 -4.53)\"/></g></svg>',\n bold: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 11.76 15.75\"><g><path d=\"M6.4,3.76V19.5h6.76a5.55,5.55,0,0,0,2-.32,4.93,4.93,0,0,0,1.52-1,4.27,4.27,0,0,0,1.48-3.34,3.87,3.87,0,0,0-.69-2.37,5.74,5.74,0,0,0-.71-.83,3.44,3.44,0,0,0-1.1-.65,3.6,3.6,0,0,0,1.58-1.36,3.66,3.66,0,0,0,.53-1.93,3.7,3.7,0,0,0-1.21-2.87,4.65,4.65,0,0,0-3.25-1.1H6.4Zm2.46,6.65V5.57h3.52a4.91,4.91,0,0,1,1.36.15,2.3,2.3,0,0,1,.85.45,2.06,2.06,0,0,1,.74,1.71,2.3,2.3,0,0,1-.78,1.92,2.54,2.54,0,0,1-.86.46,4.7,4.7,0,0,1-1.32.15H8.86Zm0,7.27V12.15H12.7a4.56,4.56,0,0,1,1.38.17,3.43,3.43,0,0,1,.95.49,2.29,2.29,0,0,1,.92,2,2.73,2.73,0,0,1-.83,2.1,2.66,2.66,0,0,1-.83.58,3.25,3.25,0,0,1-1.26.2H8.86Z\" transform=\"translate(-6.4 -3.75)\"/></g></svg>',\n underline: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9.78 15.74\"><g><path d=\"M14.64,3.76h2.52v7.72a4.51,4.51,0,0,1-.59,2.31,3.76,3.76,0,0,1-1.71,1.53,6.12,6.12,0,0,1-2.64.53,5,5,0,0,1-3.57-1.18,4.17,4.17,0,0,1-1.27-3.24V3.76H9.9v7.3a3,3,0,0,0,.55,2,2.3,2.3,0,0,0,1.83.65,2.26,2.26,0,0,0,1.8-.65,3.09,3.09,0,0,0,.55-2V3.76Zm2.52,13.31V19.5H7.39V17.08h9.77Z\" transform=\"translate(-7.38 -3.76)\"/></g></svg>',\n italic: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10.49 15.76\"><g><path d=\"M17.16,3.79l.37,0-.06.38-.14.52A10,10,0,0,1,16.21,5a9.37,9.37,0,0,0-1,.32,6.68,6.68,0,0,0-.25.89c-.06.31-.11.59-.14.85-.3,1.36-.52,2.41-.68,3.14l-.61,3.18L13.1,15l-.43,2.4-.12.46a.62.62,0,0,0,0,.28c.44.1.85.17,1.23.22l.68.11a4.51,4.51,0,0,1-.08.6l-.09.42a.92.92,0,0,0-.23,0l-.43,0a1.37,1.37,0,0,1-.29,0c-.13,0-.63-.08-1.49-.16l-2,0c-.28,0-.87,0-1.78.12L7,19.5l.17-.88.8-.2A6.61,6.61,0,0,0,9.19,18,2.62,2.62,0,0,0,9.61,17l.28-1.41.58-2.75.12-.66c.05-.3.11-.58.17-.86s.12-.51.17-.69l.12-.48.12-.43.31-1.6.15-.65.31-1.91V5.14a3.86,3.86,0,0,0-1.48-.29l-.38,0,.2-1.06,3.24.14.75,0c.45,0,1.18,0,2.18-.09.23,0,.46,0,.71,0Z\" transform=\"translate(-7.04 -3.76)\"/></g></svg>',\n strike: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 14.9\"><g><path d=\"M12.94,13a4.27,4.27,0,0,1,1.32.58,1.46,1.46,0,0,1,.55,1.2,1.87,1.87,0,0,1-.88,1.64,4.17,4.17,0,0,1-2.35.59,4.44,4.44,0,0,1-2.74-.71,2.72,2.72,0,0,1-1-2.17H5.57a4.56,4.56,0,0,0,1.55,3.7,7,7,0,0,0,4.47,1.23,6,6,0,0,0,4.07-1.3,4.24,4.24,0,0,0,1.52-3.37,4,4,0,0,0-.26-1.4h-4ZM6.37,10.24A3.27,3.27,0,0,1,6,8.68a4,4,0,0,1,1.48-3.3,5.92,5.92,0,0,1,3.88-1.21,5.58,5.58,0,0,1,3.91,1.24,4.36,4.36,0,0,1,1.45,3.17H14.44a2.12,2.12,0,0,0-.91-1.81,4.45,4.45,0,0,0-2.44-.55,3.69,3.69,0,0,0-2,.51A1.64,1.64,0,0,0,8.3,8.22a1.3,1.3,0,0,0,.48,1.11,7,7,0,0,0,2.1.78l.28.06.28.08H6.37Zm13.09.68a.73.73,0,0,1,.49.21.66.66,0,0,1,.2.48.64.64,0,0,1-.2.48.71.71,0,0,1-.49.19H5.1a.67.67,0,0,1-.49-.19.66.66,0,0,1-.2-.48.64.64,0,0,1,.2-.48.73.73,0,0,1,.49-.21H19.46Z\" transform=\"translate(-4.41 -4.17)\"/></g></svg>',\n subscript: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.75 14.61\"><g><path d=\"M15.38,4.33H12.74L11.19,7c-.28.46-.51.87-.69,1.21L10.07,9h0l-.44-.8c-.22-.4-.45-.81-.71-1.23L7.34,4.33H4.68L8.26,10,4.4,16.08H7.1l1.69-2.83c.38-.63.72-1.22,1-1.78l.25-.46h0l.49.92c.24.45.48.89.74,1.32L13,16.08h2.61L11.84,10l1.77-2.84,1.77-2.85Zm4.77,13.75H17v-.15c0-.4.05-.64.16-.72a4.42,4.42,0,0,1,1.16-.31,3.3,3.3,0,0,0,1.54-.56A1.84,1.84,0,0,0,20.15,15a1.78,1.78,0,0,0-.44-1.41A2.8,2.8,0,0,0,18,13.25a2.71,2.71,0,0,0-1.69.37,1.83,1.83,0,0,0-.44,1.43v.23H17v-.23q0-.63.18-.78a1.62,1.62,0,0,1,.88-.15,1.59,1.59,0,0,1,.88.15q.18.15.18.75t-.18.75a3.58,3.58,0,0,1-1.18.33,3.33,3.33,0,0,0-1.52.51,1.57,1.57,0,0,0-.32,1.18v1.15h4.27v-.86Z\" transform=\"translate(-4.4 -4.33)\"/></g></svg>',\n superscript: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.75 15.42\"><g><path d=\"M12,13.14l3.61-5.81H12.94L11.33,10c-.28.46-.51.88-.69,1.25l-.45.83h0l-.45-.85c-.22-.41-.45-.82-.71-1.24L7.4,7.33H4.68l3.66,5.81L4.4,19.33H7.14l1.74-2.87q.58-1,1-1.83l.25-.48h0l.51.94.75,1.37,1.72,2.87h2.67l-1.92-3.09c-1.12-1.8-1.76-2.83-1.92-3.1Zm4.84-4.41h0l0,.15h3.27v.86H15.77V8.58a1.66,1.66,0,0,1,.33-1.22,3.51,3.51,0,0,1,1.56-.51,3.68,3.68,0,0,0,1.21-.34c.13-.1.19-.36.19-.77S19,5.07,18.87,5A1.63,1.63,0,0,0,18,4.8a1.58,1.58,0,0,0-.91.17c-.13.11-.19.38-.19.8V6H15.78V5.76a1.87,1.87,0,0,1,.45-1.47A2.84,2.84,0,0,1,18,3.91a2.8,2.8,0,0,1,1.72.38,1.84,1.84,0,0,1,.45,1.44,1.91,1.91,0,0,1-.34,1.35,3.24,3.24,0,0,1-1.58.57A3.69,3.69,0,0,0,17,8c-.12.1-.17.35-.17.76Z\" transform=\"translate(-4.4 -3.91)\"/></g></svg>',\n erase: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 13.76\"><g><path d=\"M13.69,17.2h6.46v1.31H8.56L4.41,14.37,14,4.75l6.06,6.06L16.89,14l-3.2,3.19Zm-4.61,0h2.77L14.09,15,9.88,10.75,6.25,14.38l1.41,1.41c.84.82,1.31,1.29,1.42,1.41Z\" transform=\"translate(-4.41 -4.75)\"/></g></svg>',\n indent: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 12.36\"><g><path d=\"M4.68,14.45a.27.27,0,0,1-.19-.08.3.3,0,0,1-.08-.21V9.1a.27.27,0,0,1,.08-.19.28.28,0,0,1,.2-.08.25.25,0,0,1,.19.07l2.54,2.54a.29.29,0,0,1,0,.4L4.88,14.36a.24.24,0,0,1-.2.09Zm15.19,1.12a.27.27,0,0,1,.19.08.25.25,0,0,1,.08.19v1.69a.27.27,0,0,1-.08.19.25.25,0,0,1-.19.08H4.68a.27.27,0,0,1-.19-.08.25.25,0,0,1-.08-.19V15.84a.27.27,0,0,1,.27-.27H19.87Zm0-3.38a.27.27,0,0,1,.19.08.28.28,0,0,1,.08.21v1.68a.32.32,0,0,1-.08.21.25.25,0,0,1-.19.08H10.31a.27.27,0,0,1-.19-.08.3.3,0,0,1-.08-.21V12.48a.32.32,0,0,1,.08-.21.24.24,0,0,1,.19-.08h9.56Zm0-3.37a.27.27,0,0,1,.19.08.25.25,0,0,1,.08.19v1.69a.27.27,0,0,1-.08.19.25.25,0,0,1-.19.08H10.31a.27.27,0,0,1-.27-.27V9.1a.27.27,0,0,1,.27-.27h9.56Zm.2-3.29a.28.28,0,0,1,.08.2V7.41a.32.32,0,0,1-.08.21.25.25,0,0,1-.19.08H4.68a.27.27,0,0,1-.19-.08.3.3,0,0,1-.08-.21V5.73a.32.32,0,0,1,.08-.21.25.25,0,0,1,.19-.08H19.87a.28.28,0,0,1,.2.09Z\" transform=\"translate(-4.41 -5.44)\"/></g></svg>',\n outdent: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 12.36\"><g><path d=\"M19.87,15.57a.27.27,0,0,1,.19.08.25.25,0,0,1,.08.19v1.69a.27.27,0,0,1-.08.19.25.25,0,0,1-.19.08H4.68a.27.27,0,0,1-.19-.08.25.25,0,0,1-.08-.19V15.84a.27.27,0,0,1,.27-.27H19.87ZM7.5,14.45a.25.25,0,0,1-.2-.09L4.76,11.84a.29.29,0,0,1,0-.4L7.3,8.9a.29.29,0,0,1,.4,0,.31.31,0,0,1,.07.2v5.06a.32.32,0,0,1-.08.21.26.26,0,0,1-.19.08ZM19.87,8.82a.27.27,0,0,1,.19.08.25.25,0,0,1,.08.19v1.69a.27.27,0,0,1-.08.19.25.25,0,0,1-.19.08H10.31a.27.27,0,0,1-.27-.27V9.1a.27.27,0,0,1,.27-.27h9.56Zm0,3.37a.27.27,0,0,1,.19.08.28.28,0,0,1,.08.21v1.68a.32.32,0,0,1-.08.21.25.25,0,0,1-.19.08H10.31a.27.27,0,0,1-.19-.08.3.3,0,0,1-.08-.21V12.48a.32.32,0,0,1,.08-.21.24.24,0,0,1,.19-.08h9.56Zm.2-6.66a.28.28,0,0,1,.08.2V7.41a.32.32,0,0,1-.08.21.25.25,0,0,1-.19.08H4.68a.27.27,0,0,1-.19-.08.3.3,0,0,1-.08-.21V5.73a.32.32,0,0,1,.08-.21.25.25,0,0,1,.19-.08H19.87a.28.28,0,0,1,.2.09Z\" transform=\"translate(-4.41 -5.44)\"/></g></svg>',\n expansion: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 15.74\"><g><path d=\"M11.8,13.06l-5.1,5.1H9.51V19.5H4.41V14.4H5.75v2.81L8.3,14.66q2.25-2.23,2.55-2.55Zm8.35-9.3v5.1H18.81V6.05l-5.1,5.1-1-1,5.1-5.1H15.05V3.76Z\" transform=\"translate(-4.41 -3.76)\"/></g></svg>',\n reduction: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 15.74\"><g><path d=\"M14.91,10h2.87v1.38H12.55V6.12h1.38V9l5.24-5.24.48.49.49.48ZM6.77,11.92H12v5.23H10.62V14.26L5.37,19.5l-1-1L9.63,13.3H6.77Z\" transform=\"translate(-4.4 -3.76)\"/></g></svg>',\n code_view: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.73 11.8\"><g><path d=\"M8.09,7.94a.76.76,0,0,1,.53.22.72.72,0,0,1,.21.52.76.76,0,0,1-.22.54L6.18,11.63l2.43,2.44a.69.69,0,0,1,.2.51.66.66,0,0,1-.21.51.75.75,0,0,1-.51.22.63.63,0,0,1-.51-.21h0L4.63,12.15a.7.7,0,0,1-.22-.53.67.67,0,0,1,.25-.55L7.57,8.16a.82.82,0,0,1,.52-.22Zm12.05,3.69a.7.7,0,0,1-.23.52L17,15.1h0a.66.66,0,0,1-.51.21.73.73,0,0,1-.51-.22.75.75,0,0,1-.22-.51.63.63,0,0,1,.21-.51l2.43-2.44L15.92,9.22a.73.73,0,0,1-.22-.53A.74.74,0,0,1,17,8.18h0l2.91,2.91a.67.67,0,0,1,.27.54Zm-5.9-5.9a.73.73,0,0,1,.61.32.71.71,0,0,1,.07.68L11,17a1,1,0,0,1-.22.32.6.6,0,0,1-.35.16.75.75,0,0,1-.69-.26.69.69,0,0,1-.12-.72L13.56,6.23a.75.75,0,0,1,.26-.35.74.74,0,0,1,.42-.15Z\" transform=\"translate(-4.41 -5.73)\"/></g></svg>',\n preview: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.65 15.66\"><g><path d=\"M16.19,14.43l2.49,2.49a.73.73,0,0,1,.21.52.67.67,0,0,1-.22.51.7.7,0,0,1-.52.22.69.69,0,0,1-.51-.21l-2.49-2.48a5.17,5.17,0,0,1-1.34.69,4.64,4.64,0,0,1-1.48.24,4.78,4.78,0,1,1,0-9.56,4.79,4.79,0,0,1,1.84.36,4.9,4.9,0,0,1,1.56,1,4.77,4.77,0,0,1,.46,6.18ZM10,14a3.3,3.3,0,0,0,2.34.93A3.37,3.37,0,0,0,14.7,14a3.3,3.3,0,0,0-1.08-5.41,3.47,3.47,0,0,0-2.56,0A3,3,0,0,0,10,9.28,3.31,3.31,0,0,0,10,14ZM16,4a3.86,3.86,0,0,1,2.77,1.14A3.9,3.9,0,0,1,20,7.85v4a.77.77,0,0,1-.22.53.7.7,0,0,1-.52.21.72.72,0,0,1-.74-.74v-4a2.46,2.46,0,0,0-.72-1.73A2.37,2.37,0,0,0,16,5.45H8.53A2.42,2.42,0,0,0,6.08,7.89v7.52a2.41,2.41,0,0,0,.71,1.73,2.46,2.46,0,0,0,1.74.72h4.08a.73.73,0,0,1,0,1.46H8.53a3.85,3.85,0,0,1-2.78-1.14A3.93,3.93,0,0,1,4.6,15.4V7.87A3.94,3.94,0,0,1,5.76,5.09,3.88,3.88,0,0,1,8.54,4H16Z\" transform=\"translate(-4.45 -3.8)\"/></g></svg>',\n print: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16.05 16.04\"><g><path d=\"M19.76,15.84a1.29,1.29,0,0,0,.39-.92V8.35A2.05,2.05,0,0,0,19.57,7a1.93,1.93,0,0,0-1.38-.57H6.37a1.95,1.95,0,0,0-2,2v6.56a1.23,1.23,0,0,0,.38.92,1.35,1.35,0,0,0,.93.38h2V14.9l-2,0V8.35a.67.67,0,0,1,.18-.47.62.62,0,0,1,.48-.19H18.18a.6.6,0,0,1,.46.19.66.66,0,0,1,.18.47V14.9h-2v1.32h2A1.35,1.35,0,0,0,19.76,15.84ZM17.52,7.69V5.06a1.31,1.31,0,0,0-.38-.92,1.34,1.34,0,0,0-.94-.38H8.34A1.3,1.3,0,0,0,7,5.06V7.69H8.34V5.06h7.87V7.69h1.31ZM8.34,12.93h7.87l0,5.26H8.34V12.93Zm7.87,5.26v0Zm.65,1.31a.6.6,0,0,0,.46-.19.72.72,0,0,0,.2-.47V12.29a.74.74,0,0,0-.2-.47.6.6,0,0,0-.46-.19H7.68a.6.6,0,0,0-.46.19.72.72,0,0,0-.2.47v6.55a.74.74,0,0,0,.2.47.6.6,0,0,0,.46.19h9.18ZM16.67,9.28a.7.7,0,0,0-.94,0,.63.63,0,0,0-.18.46.67.67,0,0,0,.18.47.68.68,0,0,0,.94,0,.66.66,0,0,0,.18-.47A.58.58,0,0,0,16.67,9.28Z\" transform=\"translate(-4.25 -3.61)\"/></g></svg>',\n template: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14.27 15.64\"><g><path d=\"M18.18,19.16a1,1,0,0,0,1-1V5.73a1,1,0,0,0-1-1h-2v1h2V18.19H6.37V5.73h2v-1h-2A.94.94,0,0,0,5.68,5a1,1,0,0,0-.29.7V18.18a.94.94,0,0,0,.29.69,1,1,0,0,0,.69.29H18.18ZM9.82,10.31h4.92a.49.49,0,0,0,.35-.15.47.47,0,0,0,.15-.35.49.49,0,0,0-.15-.35.47.47,0,0,0-.35-.15H9.82a.49.49,0,0,0-.35.15.47.47,0,0,0-.15.35.49.49,0,0,0,.15.35.47.47,0,0,0,.35.15Zm5.9,4.92H8.83a.49.49,0,0,0-.35.15.47.47,0,0,0-.15.35.49.49,0,0,0,.15.35.47.47,0,0,0,.35.15h6.89a.49.49,0,0,0,.35-.15.47.47,0,0,0,.15-.35.51.51,0,0,0-.5-.5ZM7.36,12.77a.49.49,0,0,0,.15.35.47.47,0,0,0,.35.15h8.85a.49.49,0,0,0,.35-.15.47.47,0,0,0,.15-.35.49.49,0,0,0-.15-.35.47.47,0,0,0-.35-.15H7.85a.49.49,0,0,0-.35.15.52.52,0,0,0-.14.35Z\" transform=\"translate(-5.14 -3.77)\"/><path d=\"M14.24,6.71a1,1,0,0,0,1-1,1,1,0,0,0-1-1,1,1,0,0,0-1-1h-2a.94.94,0,0,0-.69.28,1,1,0,0,0-.29.7A.94.94,0,0,0,9.62,5a.91.91,0,0,0-.29.69,1,1,0,0,0,.29.7,1,1,0,0,0,.69.29h3.93Z\" transform=\"translate(-5.14 -3.77)\"/></g></svg>',\n line_height: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.76 13.56\"><g><path d=\"M4.4,4.88V8.26a2,2,0,0,0,.5.39s.1,0,.18-.12a.62.62,0,0,0,.17-.28c.06-.19.13-.44.21-.74s.14-.52.19-.66a.58.58,0,0,1,.21-.3,2.41,2.41,0,0,1,.63-.21,3.83,3.83,0,0,1,.88-.12,9.15,9.15,0,0,1,1.31.06.16.16,0,0,1,.11,0,.26.26,0,0,1,.06.14,4,4,0,0,1,0,.49v2l.05,3.77c0,1.41,0,2.68-.05,3.81a1.79,1.79,0,0,1-.11.49,10.68,10.68,0,0,1-1.4.45,1.12,1.12,0,0,0-.69.43v.31l0,.22.61,0c.85-.08,1.54-.12,2.06-.12a19.76,19.76,0,0,1,2.09.08,15.08,15.08,0,0,0,1.64.08,1.4,1.4,0,0,0,.29,0,1.58,1.58,0,0,0,0-.26l-.05-.43a2.26,2.26,0,0,0-.43-.17l-.77-.22-.15,0a2.55,2.55,0,0,1-.78-.28,2.56,2.56,0,0,1-.11-.75l0-1.29,0-3.15V7.53a10.51,10.51,0,0,1,.06-1.2,3.83,3.83,0,0,1,.6,0l1.88,0a2.18,2.18,0,0,1,.38,0,.45.45,0,0,1,.23.17.9.9,0,0,1,.05.25c0,.16.06.35.1.58a3.33,3.33,0,0,0,.14.55A6.39,6.39,0,0,0,15,9a2.91,2.91,0,0,0,.6-.15,2.77,2.77,0,0,0,0-.46l0-.51,0-2.95-.25,0-.38,0L15,4.94a.71.71,0,0,1-.18.15.45.45,0,0,1-.25.07l-.29,0H8.75l-.15,0H7.45a17,17,0,0,1-1.86,0L5.36,5l-.25-.13ZM19.75,16.14h-.69v-9h.69A.4.4,0,0,0,20.13,7c.06-.11,0-.24-.1-.39L18.92,5.15a.52.52,0,0,0-.86,0L17,6.58c-.12.15-.16.28-.1.39s.18.16.38.16h.69v9h-.69a.4.4,0,0,0-.38.16c-.06.11,0,.24.1.39l1.11,1.43a.52.52,0,0,0,.86,0L20,16.69c.12-.15.16-.28.1-.39a.4.4,0,0,0-.38-.16Z\" transform=\"translate(-4.4 -4.86)\"/></g></svg>',\n paragraph_style: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 11.81 15.74\"><g><path d=\"M18.18,3.76v2h-2V19.5h-2V5.73h-2V19.5h-2V11.63a3.94,3.94,0,0,1,0-7.87h7.87Z\" transform=\"translate(-6.37 -3.76)\"/></g></svg>',\n text_style: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 13.76 15.74\"><g><path d=\"M17.68,6.71a2.22,2.22,0,0,0,1.06-.22.74.74,0,0,0,.42-.7.73.73,0,0,0-.08-.33.67.67,0,0,0-.17-.22,1,1,0,0,0-.31-.15L18.26,5l-.45-.09A15.27,15.27,0,0,0,13.26,5V4.74c0-.66-.63-1-1.92-1-.24,0-.43.15-.59.46a4,4,0,0,0-.36,1.14h0v0a26.45,26.45,0,0,1-3.5.35A2,2,0,0,0,5.77,6a.84.84,0,0,0-.37.79,2.14,2.14,0,0,0,.41,1.29,1.23,1.23,0,0,0,1.05.63,16.62,16.62,0,0,0,3.29-.45l-.34,3.35c-.16,1.61-.29,2.9-.37,3.86s-.12,1.66-.12,2.09l0,.65a5.15,5.15,0,0,0,.05.6,1.28,1.28,0,0,0,.16.54.34.34,0,0,0,.28.18,1.16,1.16,0,0,0,.79-.46,3.66,3.66,0,0,0,.68-1,22.08,22.08,0,0,0,1-4.33q.49-3.1.78-6.15a24.69,24.69,0,0,1,4.62-.84Z\" transform=\"translate(-5.4 -3.76)\"/></g></svg>',\n save: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 15.74\"><g><path d=\"M18.53,19.5l.2-.05A1.78,1.78,0,0,0,20.13,18l0-.09V7.14a2,2,0,0,0-.28-.64A3.18,3.18,0,0,0,19.43,6c-.5-.52-1-1-1.55-1.54A2.59,2.59,0,0,0,17.37,4a1.83,1.83,0,0,0-.61-.25H6l-.21,0a1.78,1.78,0,0,0-1.4,1.49l0,.1V17.87a2.49,2.49,0,0,0,.09.37,1.79,1.79,0,0,0,1.44,1.23l.09,0Zm-6.25-.6H6.92a.61.61,0,0,1-.68-.48.78.78,0,0,1,0-.22V12.3a.62.62,0,0,1,.69-.68H17.64a.62.62,0,0,1,.69.69V18.2a.64.64,0,0,1-.71.69H12.28ZM12,9.81H8.15a.63.63,0,0,1-.72-.71v-4a.64.64,0,0,1,.72-.72h7.66a.64.64,0,0,1,.72.72v4a.65.65,0,0,1-.74.72ZM13.5,5V9.18h1.78V5Z\" transform=\"translate(-4.41 -3.76)\"/></g></svg>',\n blockquote: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 475.082 475.081\"><g><path d=\"M164.45,219.27h-63.954c-7.614,0-14.087-2.664-19.417-7.994c-5.327-5.33-7.994-11.801-7.994-19.417v-9.132c0-20.177,7.139-37.401,21.416-51.678c14.276-14.272,31.503-21.411,51.678-21.411h18.271c4.948,0,9.229-1.809,12.847-5.424c3.616-3.617,5.424-7.898,5.424-12.847V54.819c0-4.948-1.809-9.233-5.424-12.85c-3.617-3.612-7.898-5.424-12.847-5.424h-18.271c-19.797,0-38.684,3.858-56.673,11.563c-17.987,7.71-33.545,18.132-46.68,31.267c-13.134,13.129-23.553,28.688-31.262,46.677C3.855,144.039,0,162.931,0,182.726v200.991c0,15.235,5.327,28.171,15.986,38.834c10.66,10.657,23.606,15.985,38.832,15.985h109.639c15.225,0,28.167-5.328,38.828-15.985c10.657-10.663,15.987-23.599,15.987-38.834V274.088c0-15.232-5.33-28.168-15.994-38.832C192.622,224.6,179.675,219.27,164.45,219.27z\"/><path d=\"M459.103,235.256c-10.656-10.656-23.599-15.986-38.828-15.986h-63.953c-7.61,0-14.089-2.664-19.41-7.994c-5.332-5.33-7.994-11.801-7.994-19.417v-9.132c0-20.177,7.139-37.401,21.409-51.678c14.271-14.272,31.497-21.411,51.682-21.411h18.267c4.949,0,9.233-1.809,12.848-5.424c3.613-3.617,5.428-7.898,5.428-12.847V54.819c0-4.948-1.814-9.233-5.428-12.85c-3.614-3.612-7.898-5.424-12.848-5.424h-18.267c-19.808,0-38.691,3.858-56.685,11.563c-17.984,7.71-33.537,18.132-46.672,31.267c-13.135,13.129-23.559,28.688-31.265,46.677c-7.707,17.987-11.567,36.879-11.567,56.674v200.991c0,15.235,5.332,28.171,15.988,38.834c10.657,10.657,23.6,15.985,38.828,15.985h109.633c15.229,0,28.171-5.328,38.827-15.985c10.664-10.663,15.985-23.599,15.985-38.834V274.088C475.082,258.855,469.76,245.92,459.103,235.256z\"/></g></svg>',\n arrow_down: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.73 8.67\"><g><path d=\"M18.79,7.52a.8.8,0,0,1,.56-.23.82.82,0,0,1,.79.79.8.8,0,0,1-.23.56l-7.07,7.07a.79.79,0,0,1-.57.25.77.77,0,0,1-.57-.25h0L4.64,8.65a.8.8,0,0,1-.23-.57.82.82,0,0,1,.79-.79.8.8,0,0,1,.56.23L12.28,14l3.26-3.26,3.25-3.26Z\" transform=\"translate(-4.41 -7.29)\"/></g></svg>',\n align_justify: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 13.77\"><g><path d=\"M4.41,4.74v2H20.15v-2H4.41Zm0,5.9H20.15v-2H4.41v2Zm0,3.94H20.15v-2H4.41v2Zm0,3.93h7.87v-2H4.41v2Z\" transform=\"translate(-4.41 -4.74)\"/></g></svg>',\n align_left: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 13.77\"><g><path d=\"M4.41,4.74v2H20.15v-2H4.41Zm11.8,3.94H4.41v2H16.22v-2Zm-11.8,5.9H18.18v-2H4.41v2Zm0,3.93h9.84v-2H4.41v2Z\" transform=\"translate(-4.41 -4.74)\"/></g></svg>',\n align_right: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 13.77\"><g><path d=\"M4.41,4.74v2H20.15v-2H4.41Zm3.93,5.9H20.15v-2H8.34v2Zm-2,3.94H20.14v-2H6.37v2Zm3.94,3.93h9.84v-2H10.31v2Z\" transform=\"translate(-4.41 -4.74)\"/></g></svg>',\n align_center: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 13.77\"><g><path d=\"M4.41,4.74v2H20.15v-2H4.41Zm2,3.94v2H18.18v-2H6.37Zm-1,5.9H19.16v-2H5.39v2Zm2,3.93H17.2v-2H7.36v2Z\" transform=\"translate(-4.41 -4.74)\"/></g></svg>',\n font_color: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 14.61\"><g><path d=\"M18.5,15.57,14.28,4.32h-3.4L6.65,15.57h3l.8-2.26h4.23l.8,2.26h3ZM14,11.07H11.14L12.54,7,13.25,9c.41,1.18.64,1.86.7,2ZM4.41,16.69v2.24H20.15V16.69H4.41Z\" transform=\"translate(-4.41 -4.32)\"/></g></svg>',\n highlight_color:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.66 15.74\"><g><path d=\"M12.32,9.31,13.38,13H11.21l.52-1.83q.46-1.61.54-1.83ZM4.44,3.76H20.1V19.5H4.44V3.76ZM14.71,17.32h2.63L13.7,6H10.89L7.26,17.32H9.89l.63-2.24h3.55l.32,1.12c.18.65.29,1,.32,1.12Z\" transform=\"translate(-4.44 -3.76)\"/></g></svg>',\n list_bullets: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 12.37\"><g><path d=\"M7.77,16.12a1.59,1.59,0,0,0-.49-1.18,1.62,1.62,0,0,0-1.19-.49,1.68,1.68,0,1,0,0,3.36,1.67,1.67,0,0,0,1.68-1.69Zm0-4.48A1.67,1.67,0,0,0,6.09,10,1.68,1.68,0,0,0,4.9,12.82a1.62,1.62,0,0,0,1.19.49,1.67,1.67,0,0,0,1.68-1.67Zm12.38,3.64a.27.27,0,0,0-.08-.19.28.28,0,0,0-.2-.09H9.19a.28.28,0,0,0-.2.08.29.29,0,0,0-.08.19V17a.27.27,0,0,0,.28.28H19.87a.27.27,0,0,0,.19-.08.24.24,0,0,0,.08-.2V15.28ZM7.77,7.13a1.63,1.63,0,0,0-.49-1.2,1.61,1.61,0,0,0-1.19-.49,1.61,1.61,0,0,0-1.19.49,1.71,1.71,0,0,0,0,2.4,1.62,1.62,0,0,0,1.19.49,1.61,1.61,0,0,0,1.19-.49,1.63,1.63,0,0,0,.49-1.2Zm12.38,3.66a.28.28,0,0,0-.08-.2.29.29,0,0,0-.19-.08H9.19a.27.27,0,0,0-.28.28v1.69a.27.27,0,0,0,.08.19.24.24,0,0,0,.2.08H19.87a.27.27,0,0,0,.19-.08.25.25,0,0,0,.08-.19V10.79Zm0-4.5a.27.27,0,0,0-.08-.19A.25.25,0,0,0,19.88,6H9.19A.28.28,0,0,0,9,6.1a.26.26,0,0,0-.08.19V8A.27.27,0,0,0,9,8.17a.24.24,0,0,0,.2.08H19.87a.27.27,0,0,0,.19-.08A.25.25,0,0,0,20.14,8V6.29Z\" transform=\"translate(-4.41 -5.44)\"/></g></svg>',\n list_number: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.69 15.74\"><g><path d=\"M7.66,18a1.24,1.24,0,0,0-.26-.78,1.17,1.17,0,0,0-.72-.42l.85-1V15H4.58v1.34h.94v-.46l.85,0h0c-.11.11-.22.23-.32.35s-.23.27-.37.47L5.39,17l.23.51c.61-.05.92.11.92.49a.42.42,0,0,1-.18.37.79.79,0,0,1-.45.12A1.41,1.41,0,0,1,5,18.15l-.51.77A2.06,2.06,0,0,0,6,19.5a1.8,1.8,0,0,0,1.2-.41A1.38,1.38,0,0,0,7.66,18Zm0-5.54H6.75V13H5.63A.72.72,0,0,1,6,12.51a5.45,5.45,0,0,1,.66-.45,2.71,2.71,0,0,0,.67-.57,1.19,1.19,0,0,0,.31-.81,1.29,1.29,0,0,0-.45-1,1.86,1.86,0,0,0-2-.11,1.51,1.51,0,0,0-.62.7l.74.52A.87.87,0,0,1,6,10.28a.51.51,0,0,1,.35.12.42.42,0,0,1,.13.33.55.55,0,0,1-.21.4,3,3,0,0,1-.5.38c-.19.13-.39.27-.58.42a2,2,0,0,0-.5.6,1.63,1.63,0,0,0-.21.81,3.89,3.89,0,0,0,.05.48h3.2V12.44Zm12.45,2.82a.27.27,0,0,0-.08-.19.28.28,0,0,0-.21-.08H9.1a.32.32,0,0,0-.21.08.24.24,0,0,0-.08.2V17a.27.27,0,0,0,.08.19.3.3,0,0,0,.21.08H19.83a.32.32,0,0,0,.21-.08.25.25,0,0,0,.08-.19V15.26ZM7.69,7.32h-1V3.76H5.8L4.6,4.88l.63.68a1.85,1.85,0,0,0,.43-.48h0l0,2.24H4.74V8.2h3V7.32Zm12.43,3.42a.27.27,0,0,0-.08-.19.28.28,0,0,0-.21-.08H9.1a.32.32,0,0,0-.21.08.24.24,0,0,0-.08.2v1.71a.27.27,0,0,0,.08.19.3.3,0,0,0,.21.08H19.83a.32.32,0,0,0,.21-.08.25.25,0,0,0,.08-.19V10.74Zm0-4.52A.27.27,0,0,0,20,6,.28.28,0,0,0,19.83,6H9.1A.32.32,0,0,0,8.89,6a.24.24,0,0,0-.08.19V7.93a.27.27,0,0,0,.08.19.32.32,0,0,0,.21.08H19.83A.32.32,0,0,0,20,8.12a.26.26,0,0,0,.08-.2V6.22Z\" transform=\"translate(-4.43 -3.76)\"/></g></svg>',\n table: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 15.74\"><g><path d=\"M4.41,8.05V3.76H8.7V8.05H4.41Zm5.71,0V3.76h4.3V8.05h-4.3Zm5.74-4.29h4.29V8.05H15.86V3.76Zm-11.45,10V9.48H8.7v4.3H4.41Zm5.71,0V9.48h4.3v4.3h-4.3Zm5.74,0V9.48h4.29v4.3H15.86ZM4.41,19.5V15.21H8.7V19.5H4.41Zm5.71,0V15.21h4.3V19.5h-4.3Zm5.74,0V15.21h4.29V19.5H15.86Z\" transform=\"translate(-4.41 -3.76)\"/></g></svg>',\n horizontal_rule: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 2.24\"><g><path d=\"M20.15,12.75V10.51H4.41v2.24H20.15Z\" transform=\"translate(-4.41 -10.51)\"/></g></svg>',\n show_blocks: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.66 15.67\"><g><path d=\"M19.72,5.58a1.64,1.64,0,0,0-1.64-1.64H6.23a1.62,1.62,0,0,0-1.16.48,1.63,1.63,0,0,0-.48,1.16V9.63a1.6,1.6,0,0,0,.48,1.16,1.62,1.62,0,0,0,1.16.47H18.09a1.67,1.67,0,0,0,1.16-.47,1.62,1.62,0,0,0,.48-1.16V5.58Zm-.94,4.05a.68.68,0,0,1-.7.7H6.23a.66.66,0,0,1-.48-.2.74.74,0,0,1-.21-.5V5.58a.66.66,0,0,1,.2-.48.71.71,0,0,1,.48-.21H18.08a.74.74,0,0,1,.5.21.66.66,0,0,1,.2.48ZM6.48,7.72a.21.21,0,0,0,.17-.07.22.22,0,0,0,.07-.17V7.06a1.27,1.27,0,0,1,.11-.52.37.37,0,0,1,.36-.23H8.77A.25.25,0,0,0,9,6.17a.19.19,0,0,0,0-.23.27.27,0,0,0-.2-.12H7.19a.88.88,0,0,0-.72.39,1.51,1.51,0,0,0-.23.85v.42a.24.24,0,0,0,.24.24Zm-.19.81a.21.21,0,0,0,.17-.07.26.26,0,0,0,.07-.17.24.24,0,0,0-.24-.24.2.2,0,0,0-.16.09.2.2,0,0,0-.07.16.22.22,0,0,0,.07.17.23.23,0,0,0,.16.06Zm8.46,5.1a1.63,1.63,0,0,0-.47-1.16A1.61,1.61,0,0,0,13.12,12H6.23a1.6,1.6,0,0,0-1.16.46,1.62,1.62,0,0,0-.48,1.16v4.05a1.64,1.64,0,0,0,1.64,1.64h6.89a1.6,1.6,0,0,0,1.16-.48,1.62,1.62,0,0,0,.47-1.16Zm-.94,4a.7.7,0,0,1-.2.49.65.65,0,0,1-.5.2H6.23a.66.66,0,0,1-.48-.2.75.75,0,0,1-.21-.49v-4a.74.74,0,0,1,.21-.5.66.66,0,0,1,.48-.2h6.89a.68.68,0,0,1,.7.7v4Zm6.15,0v-4a1.6,1.6,0,0,0-.48-1.16A1.67,1.67,0,0,0,18.32,12H17.1a1.63,1.63,0,0,0-1.16.47,1.61,1.61,0,0,0-.47,1.16v4a1.67,1.67,0,0,0,.47,1.16,1.62,1.62,0,0,0,1.16.48h1.22A1.64,1.64,0,0,0,20,17.68Zm-.94-4v4a.75.75,0,0,1-.21.49.62.62,0,0,1-.48.2H17.11a.69.69,0,0,1-.5-.2.7.7,0,0,1-.2-.49v-4a.68.68,0,0,1,.7-.7h1.22a.66.66,0,0,1,.48.2.72.72,0,0,1,.21.5Z\" transform=\"translate(-4.44 -3.79)\"/></g></svg>',\n cancel: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 15.74\"><g><path d=\"M14.15,11.63l5.61,5.61a1.29,1.29,0,0,1,.38.93,1.27,1.27,0,0,1-.4.93,1.25,1.25,0,0,1-.92.4,1.31,1.31,0,0,1-.94-.4l-5.61-5.61L6.67,19.1a1.31,1.31,0,0,1-.94.4,1.24,1.24,0,0,1-.92-.4,1.27,1.27,0,0,1-.4-.93,1.33,1.33,0,0,1,.38-.93l5.61-5.63L4.79,6a1.26,1.26,0,0,1-.38-.93,1.22,1.22,0,0,1,.4-.92,1.28,1.28,0,0,1,.92-.39,1.38,1.38,0,0,1,.94.38l5.61,5.61,5.61-5.61a1.33,1.33,0,0,1,.94-.38,1.26,1.26,0,0,1,.92.39,1.24,1.24,0,0,1,.4.92,1.29,1.29,0,0,1-.39.93L17,8.81l-2.8,2.82Z\" transform=\"translate(-4.41 -3.76)\"/></g></svg>',\n image: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.75 15.77\"><g><path d=\"M8.77,8.72a.88.88,0,0,1-.61-.27.82.82,0,0,1-.25-.61.89.89,0,0,1,.25-.62A.82.82,0,0,1,8.77,7a.81.81,0,0,1,.61.25.83.83,0,0,1,.27.62.81.81,0,0,1-.25.61.91.91,0,0,1-.63.27Zm9.62-5a1.74,1.74,0,0,1,1.76,1.76V17.76a1.74,1.74,0,0,1-1.76,1.76H6.16A1.74,1.74,0,0,1,4.4,17.76V5.51A1.74,1.74,0,0,1,6.16,3.75H18.39Zm0,1.75H6.16v8L8.53,11.8a.94.94,0,0,1,.54-.17.86.86,0,0,1,.54.2L11.09,13l3.64-4.55a.78.78,0,0,1,.34-.25.85.85,0,0,1,.42-.07.89.89,0,0,1,.39.12.78.78,0,0,1,.28.29l2.24,3.67V5.51Zm0,12.24V15.6L15.3,10.53,11.89,14.8a.89.89,0,0,1-.59.32.82.82,0,0,1-.64-.18L9,13.62,6.16,15.74v2Z\" transform=\"translate(-4.4 -3.75)\"/></g></svg>',\n video: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 14.55\"><g><path d=\"M20.15,10.26V18.9l-3.94-1.57v1.2H4.41V10.66H16.22v1.23l2-.81,2-.82ZM14.64,17h0V12.54h0v-.31H6V17h8.67Zm3.94-.37v-4l-2.37,1v2l1.18.48,1.19.48ZM7.94,9.86A2.77,2.77,0,0,1,5.19,7.11a2.76,2.76,0,0,1,5.51,0A2.78,2.78,0,0,1,7.94,9.86Zm0-3.93a1.21,1.21,0,0,0-.83.35,1.15,1.15,0,0,0-.34.84A1.09,1.09,0,0,0,7.11,8,1.15,1.15,0,0,0,8,8.28,1.13,1.13,0,0,0,9.11,7.12,1.16,1.16,0,0,0,7.94,5.93Zm5.9,3.93a2.34,2.34,0,0,1-1.67-.68,2.3,2.3,0,0,1-.68-1.67,2.35,2.35,0,0,1,4-1.67,2.37,2.37,0,0,1,0,3.34,2.33,2.33,0,0,1-1.68.68Zm0-3.14a.75.75,0,1,0,.55.22.73.73,0,0,0-.55-.22Z\" transform=\"translate(-4.41 -4.35)\"/></g></svg>',\n link: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 15.72\"><g><path d=\"M13.05,13.63a.24.24,0,0,1,.15.22L13.42,16a.19.19,0,0,1-.08.18l-2.12,2.14a4.08,4.08,0,0,1-1.29.85A4,4,0,0,1,4.71,17a3.92,3.92,0,0,1-.3-1.52A4,4,0,0,1,4.71,14a3.91,3.91,0,0,1,.87-1.3L7.7,10.56a.25.25,0,0,1,.2-.06l2.17.22a.21.21,0,0,1,.19.15.24.24,0,0,1,0,.25L7.12,14.23a1.81,1.81,0,0,0,0,2.58,1.78,1.78,0,0,0,1.29.52,1.74,1.74,0,0,0,1.28-.52L12.8,13.7a.24.24,0,0,1,.25-.07ZM19,4.92a4,4,0,0,1,0,5.66L16.86,12.7a.25.25,0,0,1-.17.08l-2.2-.23a.21.21,0,0,1-.19-.15.22.22,0,0,1,0-.25L17.44,9a1.81,1.81,0,0,0,0-2.58,1.78,1.78,0,0,0-1.29-.52,1.74,1.74,0,0,0-1.28.52L11.76,9.57a.21.21,0,0,1-.25,0,.24.24,0,0,1-.16-.21l-.22-2.17a.19.19,0,0,1,.08-.18l2.12-2.14a4.08,4.08,0,0,1,1.29-.85,4.05,4.05,0,0,1,3.06,0,3.85,3.85,0,0,1,1.3.85ZM5.84,9.82a.25.25,0,0,1-.18-.08.19.19,0,0,1-.07-.19l.11-.77a.2.2,0,0,1,.11-.17.24.24,0,0,1,.2,0l2.5.72a.25.25,0,0,1,.15.27.22.22,0,0,1-.23.21l-2.59,0Zm4.12-2-.73-2.5a.27.27,0,0,1,0-.2A.21.21,0,0,1,9.41,5L10.19,5a.25.25,0,0,1,.19,0,.23.23,0,0,1,.08.18l-.05,2.61a.2.2,0,0,1-.19.23h0A.22.22,0,0,1,10,7.85Zm8.76,5.58a.25.25,0,0,1,.18.08.23.23,0,0,1,.06.2l-.11.77a.25.25,0,0,1-.11.17.21.21,0,0,1-.12,0l-.08,0L16,14a.25.25,0,0,1-.15-.27.22.22,0,0,1,.22-.21l1.29,0,1.33,0Zm-4.12,2,.74,2.51a.28.28,0,0,1,0,.2.23.23,0,0,1-.18.11l-.8.11a.23.23,0,0,1-.17-.07.25.25,0,0,1-.08-.18l0-2.61a.22.22,0,0,1,.22-.22.21.21,0,0,1,.26.15Z\" transform=\"translate(-4.41 -3.77)\"/></g></svg>',\n math: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 11.81 15.73\"><g><path d=\"M17.19,5.73a1,1,0,0,0,.71-.29,1,1,0,0,0,.28-.7,1,1,0,0,0-1-1H7.35a1,1,0,0,0-1,1,.77.77,0,0,0,.13.47h0l4.58,6.43L6.68,17.81a1.25,1.25,0,0,0-.29.71.94.94,0,0,0,.28.7.92.92,0,0,0,.69.28H17.2a1,1,0,0,0,.71-.28,1,1,0,0,0,0-1.39.92.92,0,0,0-.71-.29H9.26l3.87-5.43a.86.86,0,0,0,0-.95L9.26,5.73h7.93Z\" transform=\"translate(-6.38 -3.77)\"/></g></svg>',\n unlink: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 15.72\"><g><path d=\"M19,18.32a4,4,0,0,0,0-5.68L15.85,9.5l-1.17,1.55L17.57,14a2,2,0,0,1,.61,1.47,2.08,2.08,0,0,1-2.09,2.09,2,2,0,0,1-1.47-.61l-.38-.37-1.74,1,.8.78a4,4,0,0,0,5.68,0ZM8,9.77a2,2,0,0,1-1.27-1,1.89,1.89,0,0,1-.21-1.57A2.1,2.1,0,0,1,7.45,6,2,2,0,0,1,9,5.76L12.27,7.2l.49-2L9.48,3.9a4,4,0,0,0-3.06.41A3.82,3.82,0,0,0,4.56,6.73a3.8,3.8,0,0,0,.4,3A3.78,3.78,0,0,0,7.39,11.6l5.38,2,.49-2-2.64-.94L8,9.77Z\" transform=\"translate(-4.41 -3.76)\"/></g></svg>',\n table_header: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.75 15.74\"><g><path d=\"M17,19.5v-.78H15.5v.78H17Zm-3,0v-.78H12.5v.78H14Zm-3,0v-.78H9.53v.78H11Zm-3,0v-.78H6.53v.78H8Zm10.55,0a1.73,1.73,0,0,0,.85-.35,1.67,1.67,0,0,0,.56-.76l-.71-.31a1.21,1.21,0,0,1-.35.4,1.34,1.34,0,0,1-.53.23l.08.38c.06.24.09.38.1.41Zm-13.7-.63.55-.55A.77.77,0,0,1,5.25,18a1.31,1.31,0,0,1-.06-.38v-.38H4.41v.38a2,2,0,0,0,.12.68,1.6,1.6,0,0,0,.35.57Zm15.27-2.12V15.26h-.78v1.49h.78Zm-15-1V14.23H4.41v1.49h.78Zm15-2V12.26h-.78v1.49h.78Zm-15-1V11.22H4.41v1.51h.78Zm15-2V9.26h-.78v1.51h.78Zm-15-1V8.17H4.41V9.74h.78Zm15-2V6.28h-.78V7.77h.78Zm-15-1.11V5.33L4.48,5.1a.77.77,0,0,0-.07.27,2.72,2.72,0,0,0,0,.28v1h.79ZM19.21,5l.63-.4A1.62,1.62,0,0,0,19.16,4a1.94,1.94,0,0,0-.91-.22v.78a1.31,1.31,0,0,1,.56.12.88.88,0,0,1,.4.36ZM6,4.54H7.78V3.76H6a.82.82,0,0,0-.28.06l.12.35c.07.21.1.33.11.36Zm10.8,0V3.76H15.28v.78h1.49Zm-3,0V3.76H12.28v.78h1.49Zm-3,0V3.76H9.28v.78h1.51ZM6,10.84h12.6V6.91H6Z\" transform=\"translate(-4.4 -3.76)\"/></g></svg>',\n merge_cell: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.76 15.74\"><g><path d=\"M18.92,13.5h1.23v4.15A1.84,1.84,0,0,1,18.3,19.5H14V18.27H18.3a.6.6,0,0,0,.44-.18.59.59,0,0,0,.18-.44V13.5ZM18.3,3.76a1.84,1.84,0,0,1,1.85,1.85V9.82H18.92V5.6a.6.6,0,0,0-.18-.44A.59.59,0,0,0,18.3,5H14V3.76H18.3Zm1.85,8.51H15.6L17.26,14l-.86.86-3.14-3.17L16.4,8.51l.86.86L15.62,11h4.54v1.24Zm-13.9,6h4.27V19.5H6.25A1.84,1.84,0,0,1,4.4,17.65V13.5H5.63v4.15a.61.61,0,0,0,.62.62Zm0-14.51h4.27V5H6.25a.6.6,0,0,0-.44.18.57.57,0,0,0-.17.43V9.81H4.41V5.6A1.83,1.83,0,0,1,6.25,3.76Zm5,7.9L8.15,14.83,7.3,14,9,12.27H4.41V11H8.94L7.3,9.38,7.73,9l.43-.43Z\" transform=\"translate(-4.4 -3.76)\"/></g></svg>',\n split_cell: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.75 15.74\"><g><path d=\"M10.37,12.25H6.74L8.4,13.94l-.87.86L4.41,11.63,7.53,8.5l.87.86L6.74,11h3.62v1.23Zm9.78-.61L17,14.81,16.13,14l1.66-1.69H14.16V11h3.63L16.13,9.37l.43-.43A5.24,5.24,0,0,1,17,8.51ZM18.9,8.22V5.61a.57.57,0,0,0-.18-.43A.65.65,0,0,0,18.29,5H12.88V18.28h5.41a.7.7,0,0,0,.44-.18.57.57,0,0,0,.18-.43V15h1.23v2.64a1.84,1.84,0,0,1-1.85,1.83h-12A1.84,1.84,0,0,1,4.94,19a1.81,1.81,0,0,1-.54-1.29V15H5.63v2.64a.57.57,0,0,0,.18.43.67.67,0,0,0,.44.18h5.41V5H6.25a.7.7,0,0,0-.44.18.56.56,0,0,0-.17.43V8.22H4.41V5.61A1.8,1.8,0,0,1,5,4.31a1.91,1.91,0,0,1,1.31-.55h12a1.89,1.89,0,0,1,1.31.55,1.8,1.8,0,0,1,.54,1.3V8.23H18.9Z\" transform=\"translate(-4.4 -3.76)\"/></g></svg>',\n caption: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 13.79\"><g><path d=\"M4.41,18.52H20.15v-2H4.41ZM20,4.73H18.07V6h.65v.65H20V4.73ZM17,6V4.73H14.55V6H17ZM13.49,6V4.73H11V6h2.47ZM10,6V4.73H7.5V6H10ZM5.79,6h.65V4.73H4.5V6.67H5.8V6ZM4.5,11.34H5.79V8.48H4.5ZM6.44,13.8H5.79v-.65H4.5v1.94H6.44ZM17,15.09V13.8H14.55v1.29H17Zm-3.52,0V13.8H11v1.29h2.47Zm-3.53,0V13.8H7.5v1.29H10ZM20,13.16H18.72v.65h-.65V15.1H20Zm-1.29-1.82H20V8.48h-1.3v2.86Z\" transform=\"translate(-4.41 -4.73)\"/></g></svg>',\n edit: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 15.73\"><g><path d=\"M7.51,5.68h6l1.52-1.57H6.94a2.4,2.4,0,0,0-1.79.82A2.8,2.8,0,0,0,4.41,6.8V17a2.55,2.55,0,0,0,.75,1.8A2.48,2.48,0,0,0,7,19.5H17.22a2.57,2.57,0,0,0,1.83-.74,2.52,2.52,0,0,0,.77-1.8V8.83l-1.58,1.54v6a1.54,1.54,0,0,1-1.53,1.53H7.51A1.54,1.54,0,0,1,6,16.41V7.21A1.52,1.52,0,0,1,7.51,5.68Zm5.63,7.47h0L10.7,10.74l-1,3.38,1.71-.48,1.7-.49Zm.34-.34h0l5.36-5.32L16.4,5.08,11,10.4l1.23,1.21,1.21,1.2ZM19.93,6.4a.82.82,0,0,0,.22-.48A.54.54,0,0,0,20,5.47L18.45,4A.67.67,0,0,0,18,3.77a.7.7,0,0,0-.48.21l-.74.72,2.44,2.43.37-.37.35-.36Z\" transform=\"translate(-4.41 -3.77)\"/></g></svg>',\n delete: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.73 15.74\"><g><path d=\"M19.16,6.71a.94.94,0,0,0,.69-.28.91.91,0,0,0,.29-.68A1,1,0,0,0,19.85,5a.93.93,0,0,0-.69-.3H14.24A.94.94,0,0,0,14,4.06a.92.92,0,0,0-.7-.3h-2a1,1,0,0,0-.7.3.93.93,0,0,0-.28.68H5.39A.92.92,0,0,0,4.7,5a1,1,0,0,0-.29.71.91.91,0,0,0,.29.68,1,1,0,0,0,.69.28H19.16Zm-12.79,1a1,1,0,0,0-.7.3.94.94,0,0,0-.28.69v8.85A1.88,1.88,0,0,0,6,18.93a1.9,1.9,0,0,0,1.39.57H17.2a1.87,1.87,0,0,0,1.39-.58,1.91,1.91,0,0,0,.58-1.39V8.68A1,1,0,0,0,18.88,8a.89.89,0,0,0-.7-.29,1,1,0,0,0-.69.29.92.92,0,0,0-.29.68v7.87a1,1,0,0,1-1,1H8.34a.94.94,0,0,1-.69-.28,1,1,0,0,1-.29-.71V8.68a1,1,0,0,0-1-1Z\" transform=\"translate(-4.41 -3.76)\"/></g></svg>',\n modify: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.7 15.74\"><g><path d=\"M19.79,15.23a.66.66,0,0,1,.3.38.59.59,0,0,1-.07.48l-.8,1.38a.66.66,0,0,1-.38.3.59.59,0,0,1-.48-.07l-.68-.38a4.55,4.55,0,0,1-1.34.77v.78a.64.64,0,0,1-.18.45.61.61,0,0,1-.45.18h-1.6a.6.6,0,0,1-.44-.18.66.66,0,0,1-.19-.45v-.78a4.36,4.36,0,0,1-1.32-.77l-.69.38a.58.58,0,0,1-.48.07.66.66,0,0,1-.38-.3l-.38-.66h.83a1.77,1.77,0,0,0,1.23-.52,1.72,1.72,0,0,0,.51-1.23v-.18a3,3,0,0,0,.49-.28l.15.09a1.83,1.83,0,0,0,.88.23A1.75,1.75,0,0,0,15.84,14l.88-1.52a1.7,1.7,0,0,0,.17-1.32,1.66,1.66,0,0,0-.3-.61,1.84,1.84,0,0,0-.51-.45l-.15-.09,0-.29,0-.28.15-.09a1,1,0,0,0,.26-.18l0,.06v.78a4.34,4.34,0,0,1,1.34.77l.68-.38a.68.68,0,0,1,.48-.06.64.64,0,0,1,.38.29l.8,1.38a.58.58,0,0,1,.07.48.63.63,0,0,1-.3.38l-.68.4a3.84,3.84,0,0,1,.08.76,4.13,4.13,0,0,1-.08.78l.34.18.32.2ZM10.17,7.86a1.9,1.9,0,0,1,1.35,3.23,1.85,1.85,0,0,1-1.35.55A1.9,1.9,0,0,1,8.83,8.41a1.92,1.92,0,0,1,1.34-.55Zm1.58,7.2a.73.73,0,0,1-.21.49.66.66,0,0,1-.48.2H9.29a.68.68,0,0,1-.69-.69V14.2a4.75,4.75,0,0,1-1.48-.86l-.75.45a.73.73,0,0,1-.7,0,.63.63,0,0,1-.25-.26L4.54,12a.67.67,0,0,1-.08-.53.71.71,0,0,1,.32-.42l.75-.43a4.8,4.8,0,0,1-.08-.85,4.71,4.71,0,0,1,.08-.85l-.74-.44a.71.71,0,0,1-.32-.42.65.65,0,0,1,.07-.54L5.42,6a.66.66,0,0,1,.42-.32l.18,0a.73.73,0,0,1,.35.09l.75.43A4.68,4.68,0,0,1,8.6,5.33V4.45a.68.68,0,0,1,.69-.69h1.77a.64.64,0,0,1,.48.2.73.73,0,0,1,.21.49v.88a4.75,4.75,0,0,1,1.48.85L14,5.75a.67.67,0,0,1,.34-.09l.18,0a.71.71,0,0,1,.42.32l.89,1.54a.67.67,0,0,1,.06.52.73.73,0,0,1-.32.43l-.75.42a4.8,4.8,0,0,1,.08.85,4.71,4.71,0,0,1-.08.85l.75.43a.66.66,0,0,1,.32.42.73.73,0,0,1-.06.54l-.89,1.52a.69.69,0,0,1-.25.26.7.7,0,0,1-.35.09.64.64,0,0,1-.34-.09l-.75-.45a4.87,4.87,0,0,1-1.48.86v.87ZM7.23,9.75a3,3,0,0,0,.86,2.08,2.94,2.94,0,1,0,4.16-4.16,3,3,0,0,0-2.08-.85A2.94,2.94,0,0,0,7.23,9.75Z\" transform=\"translate(-4.44 -3.76)\"/></g></svg>',\n revert: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.76 14.69\"><g><path d=\"M18.26,15V12.3l1.89-2V15a2.58,2.58,0,0,1-.24,1c-.2.58-.75.92-1.65,1H7.56v2L4.41,15.63,7.56,13v2h10.7ZM6.3,8.28V11L4.41,13V8.28a2.58,2.58,0,0,1,.24-1c.2-.58.75-.92,1.65-1H17v-2l3.15,3.34L17,10.3v-2H6.3Z\" transform=\"translate(-4.4 -4.28)\"/></g></svg>',\n auto_size: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 15.74\"><g><path d=\"M6.71,17.19,6.89,16l1.21-.15A6,6,0,0,1,6.81,13.9a5.78,5.78,0,0,1-.45-2.27A6,6,0,0,1,8.1,7.45a5.83,5.83,0,0,1,4.17-1.73l1-1-1-1A7.89,7.89,0,0,0,5,14.64a7.73,7.73,0,0,0,1.71,2.55Zm5.57,2.31h0A7.86,7.86,0,0,0,17.85,6.07L17.67,7.3l-1.21.15a5.9,5.9,0,0,1,1.29,1.92,5.81,5.81,0,0,1,.45,2.26,5.91,5.91,0,0,1-5.9,5.9l-1,1,.49.49.47.5Z\" transform=\"translate(-4.41 -3.76)\"/></g></svg>',\n insert_row_below: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.8 15.8\"><g><path d=\"M15.7,1.3c-0.1-0.1-0.1-0.2-0.2-0.2L15.3,1H0.4L0.3,1.1c0,0-0.1,0.1-0.1,0.1c0,0-0.1,0.1-0.1,0.1L0,1.4v7.7l0.1,0.1c0,0.1,0.1,0.1,0.2,0.2l0.1,0.1h2.3V9.3l0.1-0.5L3,8.5l0.1-0.2c-0.1,0-0.2,0-0.3,0H1.2v-6h13.3v6h-1.6c-0.1,0-0.2,0-0.3,0l0.1,0.2l0.2,0.4C12.9,9,13,9.2,13,9.3v0.1h2.3l0.2-0.1c0.1,0,0.1-0.1,0.2-0.2l0.1-0.1V1.4L15.7,1.3z\"/><path d=\"M10.5,7.5C9.9,7.1,9.3,6.8,8.6,6.7c-0.2,0-0.5-0.1-0.7,0c-0.2,0-0.5,0-0.7,0C6.6,6.7,6.1,6.9,5.6,7.3C5.2,7.6,4.7,8,4.4,8.4C4.3,8.6,4.2,8.8,4.2,8.9C4.1,9.1,4,9.3,3.9,9.4C3.9,9.6,3.8,9.7,3.8,9.9c0,0.2-0.1,0.3-0.1,0.5v-0.1c-0.1,0.8,0.1,1.6,0.5,2.4c0.4,0.7,1,1.3,1.7,1.7c0.3,0.2,0.6,0.3,0.9,0.3c0.3,0.1,0.7,0.1,1,0.1c0.3,0,0.7,0,1-0.1c0.3-0.1,0.6-0.2,0.9-0.3c0.5-0.3,0.9-0.6,1.3-1c0.3-0.4,0.6-0.8,0.8-1.3c0.1-0.4,0.2-0.9,0.2-1.4c0-0.5-0.1-1-0.3-1.4C11.5,8.6,11.1,8,10.5,7.5z M10.1,11.3H8.5v1.6H8H7.9H7.3v0v-0.1v-1.4H5.7v-0.4v-0.2v-0.6h0h1.5V8.5h1.2v1.6h1.6V11.3z\"/></g></svg>',\n insert_row_above: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.8 15.8\"><g><path d=\"M0.1,14.5c0.1,0.1,0.1,0.2,0.2,0.2l0.1,0.1h14.9l0.1-0.1c0,0,0.1-0.1,0.1-0.1c0,0,0.1-0.1,0.1-0.1l0.1-0.1V6.7l-0.1-0.1c0-0.1-0.1-0.1-0.2-0.2l-0.1-0.1h-2.3v0.1l-0.1,0.5l-0.2,0.4l-0.1,0.2c0.1,0,0.2,0,0.3,0h1.6v6H1.3v-6h1.6c0.1,0,0.2,0,0.3,0L3.1,7.3L2.9,6.9C2.8,6.8,2.8,6.6,2.7,6.5V6.3H0.4L0.3,6.4c-0.1,0-0.1,0.1-0.2,0.2L0,6.7v7.7L0.1,14.5z\"/><path d=\"M5.3,8.3c0.6,0.5,1.2,0.8,1.9,0.9c0.2,0,0.5,0.1,0.7,0c0.2,0,0.5,0,0.7,0c0.6-0.1,1.1-0.3,1.6-0.6c0.5-0.3,0.9-0.7,1.2-1.2c0.1-0.2,0.2-0.3,0.3-0.5c0.1-0.2,0.2-0.4,0.2-0.5c0.1-0.1,0.1-0.3,0.1-0.4C12,5.8,12,5.6,12,5.4v0.1c0.1-0.8-0.1-1.6-0.5-2.4c-0.4-0.7-1-1.3-1.7-1.7C9.5,1.3,9.2,1.2,8.9,1.1C8.5,1,8.2,1,7.9,1c-0.3,0-0.7,0-1,0.1C6.6,1.2,6.3,1.3,6,1.4C5.5,1.7,5.1,2,4.7,2.4C4.4,2.8,4.1,3.3,3.9,3.8C3.8,4.2,3.7,4.7,3.7,5.2c0,0.5,0.1,1,0.3,1.4C4.3,7.2,4.7,7.8,5.3,8.3z M5.7,4.5h1.6V2.9h0.5h0.1h0.6v0v0.1v1.4H10v0.4v0.2v0.6h0H8.5v1.6H7.3V5.7H5.7V4.5z\"/></g></svg>',\n insert_column_left: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.8 15.8\"><g><path d=\"M14.5,15.7c0.1-0.1,0.2-0.1,0.2-0.2l0.1-0.1V0.4l-0.1-0.1c0,0-0.1-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1L14.4,0H6.7L6.6,0.1c-0.1,0-0.1,0.1-0.2,0.2L6.3,0.4v2.3h0.1l0.5,0.1L7.3,3l0.2,0.1c0-0.1,0-0.2,0-0.3V1.2h6v13.3h-6v-1.6c0-0.1,0-0.2,0-0.3l-0.2,0.1l-0.4,0.2C6.7,12.9,6.6,13,6.4,13H6.3v2.3l0.1,0.2c0,0.1,0.1,0.1,0.2,0.2l0.1,0.1h7.7L14.5,15.7z\"/><path d=\"M8.3,10.5C8.7,10,9,9.3,9.1,8.6c0-0.2,0.1-0.5,0-0.7c0-0.2,0-0.5,0-0.7C9,6.7,8.8,6.1,8.5,5.7C8.2,5.2,7.8,4.8,7.3,4.5C7.2,4.4,7,4.3,6.9,4.2C6.7,4.1,6.5,4,6.4,4C6.2,3.9,6.1,3.9,5.9,3.8c-0.2,0-0.3-0.1-0.5-0.1h0.1C4.7,3.7,3.8,3.9,3.1,4.3C2.4,4.7,1.8,5.3,1.4,6C1.3,6.3,1.2,6.6,1.1,6.9C1,7.2,1,7.6,1,7.9c0,0.3,0,0.7,0.1,1c0.1,0.3,0.2,0.6,0.3,0.9c0.3,0.5,0.6,0.9,1,1.3c0.4,0.3,0.8,0.6,1.3,0.8C4.2,12,4.7,12.1,5.1,12c0.5,0,1-0.1,1.4-0.3C7.2,11.5,7.8,11.1,8.3,10.5zM4.5,10.1V8.5H2.9V8V7.9V7.3h0H3h1.4V5.7h0.4h0.2h0.6v0v1.5h1.6v1.2H5.7v1.6H4.5z\"/></g></svg>',\n insert_column_right: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.8 15.8\"><g><path d=\"M1.3,0.1C1.2,0.2,1.1,0.2,1.1,0.3L1,0.4v14.9l0.1,0.1c0,0,0.1,0.1,0.1,0.1c0,0,0.1,0.1,0.1,0.1l0.1,0.1h7.7l0.1-0.1c0.1,0,0.1-0.1,0.2-0.2l0.1-0.1v-2.3H9.3l-0.5-0.1l-0.4-0.2l-0.2-0.1c0,0.1,0,0.2,0,0.3v1.6h-6V1.3h6v1.6c0,0.1,0,0.2,0,0.3l0.2-0.1l0.4-0.2C9,2.9,9.2,2.8,9.3,2.8h0.1V0.5L9.4,0.3c0-0.1-0.1-0.1-0.2-0.2L9.1,0H1.4L1.3,0.1z\"/><path d=\"M7.5,5.3C7,5.8,6.7,6.5,6.6,7.2c0,0.2-0.1,0.5,0,0.7c0,0.2,0,0.5,0,0.7c0.1,0.6,0.3,1.1,0.6,1.6c0.3,0.5,0.7,0.9,1.2,1.2c0.2,0.1,0.3,0.2,0.5,0.3c0.2,0.1,0.4,0.2,0.5,0.2c0.1,0.1,0.3,0.1,0.4,0.1c0.2,0,0.3,0.1,0.5,0.1h-0.1c0.8,0.1,1.6-0.1,2.4-0.5c0.7-0.4,1.3-1,1.7-1.7c0.2-0.3,0.3-0.6,0.3-0.9c0.1-0.3,0.1-0.7,0.1-1c0-0.3,0-0.7-0.1-1c-0.1-0.3-0.2-0.6-0.3-0.9c-0.3-0.5-0.6-0.9-1-1.3C13,4.4,12.5,4.2,12,4c-0.4-0.1-0.9-0.2-1.4-0.2c-0.5,0-1,0.1-1.4,0.2C8.5,4.3,7.9,4.7,7.5,5.3z M11.3,5.7v1.6h1.6v0.5v0.1v0.6h0h-0.1h-1.4v1.6h-0.4h-0.2h-0.6v0V8.5H8.5V7.3h1.6V5.7H11.3z\"/></g></svg>',\n delete_row: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.75 13.83\"><g><path d=\"M4.7,18.46l.12.08H19.73l.12-.08a.58.58,0,0,0,.22-.22l.08-.12,0-7.69-.08-.11a.77.77,0,0,0-.18-.18l-.11-.08-2.31,0-.08.28-.1.29a1.58,1.58,0,0,1-.12.29l-.14.34s0,0,.18,0H18.9v6H5.64v-6H7.35c.14,0,.2,0,.18,0l-.14-.34a2.85,2.85,0,0,1-.12-.29l-.1-.29-.07-.27-2.31,0-.11.08a.77.77,0,0,0-.18.18l-.08.11,0,7.69.08.12a.47.47,0,0,0,.09.12l.13.09ZM12.11,13a4,4,0,0,0,1.46-.21,4.51,4.51,0,0,0,1.31-.71A4,4,0,0,0,16.26,10a4.32,4.32,0,0,0-.08-2.54,4.34,4.34,0,0,0-1-1.52,4.15,4.15,0,0,0-1.54-1,4.34,4.34,0,0,0-1.35-.22A4.07,4.07,0,0,0,11,4.93,3.94,3.94,0,0,0,9.24,6.07,3.92,3.92,0,0,0,8.15,8.88a3.91,3.91,0,0,0,.12.95A4.16,4.16,0,0,0,12.11,13Zm2.35-4.14v.58H10.09V8.27h4.37v.58Z\" transform=\"translate(-4.4 -4.71)\"/></g></svg>',\n delete_column: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 13.81 15.74\"><g><path d=\"M5.66,19.42l.12.08,7.69,0,.11-.08a.77.77,0,0,0,.18-.18l.08-.11,0-2.32-.15,0-.45-.15-.42-.18-.17-.07a1,1,0,0,0,0,.27v1.63h-6V5h6V6.62a.9.9,0,0,0,0,.26l.17-.07.42-.17a3.91,3.91,0,0,1,.45-.15l.15,0,0-2.32L13.75,4a.77.77,0,0,0-.18-.18l-.11-.08H5.79l-.13.07a.63.63,0,0,0-.21.22l-.08.12V19.08l.08.12a.47.47,0,0,0,.09.12.35.35,0,0,0,.12.1Zm9-3.67a4.16,4.16,0,0,0,2.36-.51,4.08,4.08,0,0,0,1.67-1.72,4,4,0,0,0,.35-.91,3.79,3.79,0,0,0,.1-1,4.71,4.71,0,0,0-.11-1,5,5,0,0,0-.3-.87,4.25,4.25,0,0,0-1-1.25,4.49,4.49,0,0,0-1.34-.81A4.26,4.26,0,0,0,15,7.48a3.88,3.88,0,0,0-1.41.25A4.32,4.32,0,0,0,11.86,9,4,4,0,0,0,11,10.94a4.4,4.4,0,0,0-.05.68,4.5,4.5,0,0,0,.05.68,3.93,3.93,0,0,0,.61,1.57,4.22,4.22,0,0,0,1.18,1.2,4.59,4.59,0,0,0,.48.27c.2.1.37.17.5.22a2.44,2.44,0,0,0,.45.12,4.61,4.61,0,0,0,.5.07Zm2.54-4.12v.58H12.87V11h4.37v.59Z\" transform=\"translate(-5.37 -3.76)\"/></g></svg>',\n fixed_column_width: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M6,5H18A1,1 0 0,1 19,6A1,1 0 0,1 18,7H6A1,1 0 0,1 5,6A1,1 0 0,1 6,5M21,2V4H3V2H21M15,8H17V22H15V8M7,8H9V22H7V8M11,8H13V22H11V8Z\" /></svg>',\n rotate_left: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.8 15.8\"><g><path d=\"M0.5,10.2c0,0.1,0,0.2,0,0.3v0.2l0,0c0.1,0.3,0.3,0.6,0.4,0.9l0,0C1,11.8,1.3,12,1.5,11.9h0.1h0.2h0.1c0.1-0.1,0.3-0.3,0.4-0.5v-0.2c0-0.1,0-0.2-0.1-0.3l0,0c-0.2-0.2-0.3-0.4-0.3-0.7l0,0C1.8,10,1.7,9.9,1.5,9.8c-0.1,0-0.2,0-0.3,0H0.9C0.7,9.9,0.6,10,0.5,10.2L0.5,10.2z\"/><path d=\"M2.2,11.5L2.2,11.5L2.2,11.5z\"/><path d=\"M5.9,3.6L5.9,3.6L5.9,3.6z\"/><path d=\"M0.1,7.9c0,0.3,0,0.6,0,0.9l0,0l0,0l0,0l0,0c0,0.2,0.1,0.3,0.2,0.4l0,0c0.2,0.1,0.3,0.2,0.5,0.2l0,0l0,0c0.2,0,0.4-0.1,0.5-0.3l0,0c0-0.1,0.1-0.3,0.1-0.4V8.6l0,0c0-0.2,0-0.5,0-0.7l0,0c0-0.2-0.1-0.4-0.2-0.5C1.1,7.3,0.9,7.2,0.7,7.2S0.3,7.3,0.2,7.4C0.1,7.5,0,7.7,0.1,7.9z\"/><path d=\"M1.9,12.7L1.9,12.7c0,0.2,0,0.4,0.2,0.5l0,0l0.2,0.3l0,0c0.2,0.1,0.3,0.2,0.5,0.4l0,0l0,0l0,0l0,0C2.9,14,3,14.1,3.2,14.1s0.4-0.1,0.5-0.2c0.1-0.2,0.2-0.3,0.2-0.5v-0.1c0-0.2-0.1-0.4-0.2-0.5l0,0l-0.4-0.4l-0.2-0.2l0,0C3,12.1,2.8,12,2.6,12l0,0c-0.2,0-0.4,0.1-0.5,0.2l0,0C2,12.3,1.9,12.5,1.9,12.7z\"/><path d=\"M6.6,15c0,0.2,0.1,0.4,0.2,0.5c0.1,0.1,0.2,0.2,0.4,0.3l0,0c0.3,0,0.5,0,0.7,0h0.3l0,0c0.2,0,0.4-0.1,0.5-0.2c0.1-0.2,0.2-0.3,0.2-0.5l0,0l0,0c0-0.2-0.1-0.4-0.2-0.5l0,0c-0.1-0.1-0.3-0.2-0.5-0.2l0,0H7.9c-0.1,0-0.3,0-0.5,0l0,0H7.3c-0.2-0.1-0.3,0-0.5,0.1l0,0C6.7,14.6,6.6,14.8,6.6,15L6.6,15L6.6,15L6.6,15z\"/><path d=\"M4.2,7.4C4,7.5,4,7.7,4,7.9c0,0.2,0,0.4,0.2,0.5l0,0l3.2,3.2l0,0c0.1,0.1,0.3,0.2,0.5,0.2s0.3-0.1,0.5-0.2l0,0l3.2-3.2l0,0c0.1-0.1,0.2-0.3,0.2-0.5c0-0.2-0.1-0.4-0.2-0.5l0,0C11.5,7.3,11,6.7,10,5.8l0,0L8.4,4.2l0,0C8.3,4.1,8.1,4,7.9,4S7.5,4.1,7.4,4.2L4.2,7.4L4.2,7.4z M6.8,9L5.7,7.9l2.2-2.2l2.3,2.2l-2.3,2.2C7.7,9.9,7.3,9.5,6.8,9L6.8,9z\"/><path d=\"M4.1,14.1C4,14.2,4,14.3,4,14.4v0.2l0,0c0.1,0.1,0.2,0.3,0.4,0.4l0,0c0.3,0.1,0.6,0.2,0.9,0.4h0.1h0.1l0,0c0.2,0,0.3-0.1,0.5-0.1l0,0c0.2-0.1,0.3-0.3,0.3-0.4l0,0l0,0l0,0l0,0v-0.2c0-0.1-0.1-0.2-0.1-0.3l0,0C6.1,14.2,6,14.1,5.8,14l0,0c-0.3-0.1-0.5-0.2-0.8-0.2l0,0c-0.1-0.1-0.2-0.1-0.3-0.1H4.5C4.3,13.7,4.2,13.9,4.1,14.1z\"/><path d=\"M9.3,14.4c0,0.1-0.1,0.3,0,0.4V15l0,0c0,0.1,0.1,0.3,0.5,0.4c0.1,0.1,0.3,0.1,0.4,0.1l0,0h0.1l0,0c0.3-0.1,0.6-0.2,0.9-0.3l0,0c0.1-0.1,0.2-0.2,0.3-0.4l0.1-0.3c0-0.1-0.1-0.2-0.1-0.3l0,0c-0.1-0.2-0.2-0.3-0.4-0.4l0,0h-0.3c-0.1,0-0.2,0-0.3,0l0,0c-0.2,0.1-0.5,0.2-0.8,0.3l0,0C9.5,14.1,9.4,14.2,9.3,14.4L9.3,14.4z\"/><path d=\"M11.4,14.7L11.4,14.7L11.4,14.7z\"/><path d=\"M9.5,15.3L9.5,15.3L9.5,15.3z\"/><path d=\"M15.9,7.9c0-1-0.2-2-0.6-3l0,0c-0.4-1-1-1.9-1.7-2.6C12.8,1.6,12,1,11,0.6l0,0C10.1,0.2,9,0,8,0C7.3,0,6.5,0.1,5.8,0.3l0,0C5.2,0.5,4.6,0.8,4,1.1L3.1,0.2l0,0C2.9,0.1,2.8,0,2.6,0H2.4l0,0C2.2,0,2,0.2,1.9,0.4l0,0L0.1,4.9l0,0C0,5,0,5.1,0,5.2c0,0.2,0.1,0.4,0.2,0.5l0,0c0.2,0.1,0.3,0.2,0.5,0.2h0.1H1l0,0l4.7-1.8l0,0C5.9,4,6.1,3.8,6.1,3.6V3.4C6.1,3.2,6,3,5.9,2.9l0,0L5.1,2.1c0.4-0.2,0.8-0.4,1.3-0.5c0.5-0.1,1.1-0.2,1.7-0.2c0.9,0,1.7,0.2,2.5,0.5l0,0c0.8,0.3,1.5,0.8,2.1,1.4c0.6,0.6,1.1,1.3,1.4,2.1l0,0c0.3,0.8,0.5,1.6,0.5,2.5s-0.2,1.7-0.5,2.5l0,0c-0.3,0.8-0.8,1.5-1.4,2.1c-0.2,0.2-0.4,0.3-0.6,0.5l0,0c-0.2,0.1-0.3,0.3-0.3,0.5v0.1c0,0.1,0,0.3,0.1,0.4l0,0c0.1,0.2,0.3,0.3,0.5,0.3l0,0c0.1,0,0.3-0.1,0.4-0.2l0,0l0,0l0,0l0,0c0.2-0.2,0.5-0.4,0.7-0.6l0,0l0,0l0,0l0,0c0.7-0.8,1.3-1.6,1.7-2.6C15.6,10,15.8,9,15.9,7.9z M1.9,4C2,3.8,2.1,3.5,2.3,3.1l0,0L2.7,2l1.2,1.2L1.9,4z\"/><path d=\"M6.8,15.5L6.8,15.5L6.8,15.5z\"/></g></svg>',\n rotate_right: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.8 15.8\"><g><path d=\"M9.9,15.3L9.9,15.3L9.9,15.3z\"/><path d=\"M6.9,15.1L6.9,15.1c0,0.1,0.1,0.3,0.2,0.4l0,0c0.1,0.2,0.3,0.3,0.5,0.3l0,0h0.3c0.2,0,0.4,0,0.7,0l0,0c0.2-0.1,0.3-0.2,0.4-0.3c0.1-0.1,0.2-0.2,0.2-0.4V15c0-0.2-0.1-0.4-0.2-0.4c-0.2-0.1-0.3-0.2-0.5-0.2H8.4l0,0c-0.1,0-0.3,0-0.5,0H7.6l0,0c-0.2,0-0.4,0.1-0.5,0.2C7,14.7,6.9,14.9,6.9,15.1z\"/><path d=\"M6.5,14.4L6.5,14.4L6.5,14.4z\"/><path d=\"M5.8,5.8L5.8,5.8c-1,0.9-1.5,1.5-1.7,1.6l0,0C4,7.5,4,7.7,4,7.9c0,0.2,0,0.4,0.2,0.5l0,0l3.2,3.2l0,0c0.2,0.1,0.3,0.2,0.5,0.2s0.4-0.1,0.5-0.2l0,0l3.2-3.2l0,0c0.1-0.1,0.2-0.3,0.2-0.5c0-0.2-0.1-0.4-0.2-0.5l0,0L8.4,4.2C8.3,4.1,8.1,4,7.9,4C7.7,4,7.5,4.1,7.4,4.2l0,0L5.8,5.8z M5.6,7.9l2.3-2.2l2.2,2.2L9,9l0,0l0,0l0,0l0,0c-0.5,0.6-0.9,0.9-1.1,1.1L5.6,7.9z\"/><path d=\"M9,15.5L9,15.5L9,15.5z\"/><path d=\"M9.6,14.7v0.2l0,0l0,0l0,0l0,0c0.1,0.2,0.1,0.3,0.3,0.3c0.1,0.1,0.3,0.1,0.4,0.1l0,0h0.1h0.1c0.3-0.1,0.6-0.3,0.9-0.4l0,0c0.1-0.1,0.2-0.2,0.3-0.4l0,0v-0.2c0-0.1,0-0.2-0.1-0.3c-0.1-0.2-0.2-0.3-0.4-0.4H11c-0.1,0-0.2,0.1-0.3,0.1l0,0c-0.2,0.1-0.4,0.2-0.7,0.3l0,0l0,0c-0.1,0.1-0.3,0.2-0.4,0.4C9.6,14.5,9.6,14.6,9.6,14.7z\"/><path d=\"M9,14.5L9,14.5L9,14.5z\"/><path d=\"M9.6,14.4L9.6,14.4L9.6,14.4z\"/><path d=\"M11.7,14L11.7,14L11.7,14z\"/><path d=\"M15.6,7.4L15.6,7.4L15.6,7.4z\"/><path d=\"M15,9.4c0.2,0,0.4,0,0.6-0.2l0,0c0.1-0.1,0.2-0.2,0.2-0.4l0,0l0,0l0,0l0,0c0-0.3,0-0.6,0-0.9c0-0.2-0.1-0.4-0.2-0.5c-0.1-0.1-0.3-0.2-0.5-0.2s-0.4,0.1-0.5,0.2c-0.1,0.1-0.2,0.3-0.2,0.5l0,0c0,0.2,0,0.4,0,0.7l0,0v0.1c0,0.1,0,0.3,0.1,0.4l0,0C14.6,9.3,14.8,9.4,15,9.4L15,9.4L15,9.4z\"/><path d=\"M14,12h0.1h0.2h0.1c0.2,0,0.5-0.2,0.6-0.4l0,0c0.2-0.3,0.3-0.6,0.4-0.9l0,0v-0.2c0-0.1-0.1-0.2-0.1-0.3c-0.1-0.2-0.2-0.3-0.4-0.4h-0.3c-0.1,0-0.2,0-0.3,0C14.2,9.9,14,10,14,10.3l0,0c-0.1,0.2-0.2,0.5-0.3,0.7l0,0c-0.1,0.1-0.1,0.2-0.1,0.3v0.2l0,0l0,0C13.6,11.6,13.8,11.8,14,12z\"/><path d=\"M14.6,7.4L14.6,7.4L14.6,7.4z\"/><path d=\"M4.4,14.2c-0.1,0.1-0.1,0.2-0.1,0.3l0.1,0.2c0,0.2,0.2,0.3,0.3,0.4l0,0c0.3,0.1,0.6,0.3,1.1,0.4l0,0h0.1l0,0c0.1,0,0.2-0.1,0.4-0.2c0.1,0,0.2-0.2,0.3-0.3l0,0v-0.2c0-0.1-0.1-0.3-0.2-0.4c-0.1-0.1-0.2-0.2-0.4-0.3l0,0c-0.2-0.1-0.5-0.2-0.7-0.3l0,0c-0.1,0-0.2,0-0.3,0H4.7l0,0C4.6,13.9,4.4,14,4.4,14.2L4.4,14.2z\"/><path d=\"M11.9,13.3c0,0.2,0.1,0.4,0.2,0.6c0.1,0.1,0.3,0.2,0.5,0.2s0.4-0.1,0.5-0.2l0,0l0,0l0,0l0,0c0.1-0.1,0.3-0.3,0.4-0.4l0,0l0.2-0.3l0,0c0.1-0.2,0.2-0.3,0.2-0.5l0,0c0-0.2-0.1-0.4-0.2-0.5l0,0c-0.1-0.1-0.3-0.2-0.5-0.2l0,0c-0.2,0-0.4,0.1-0.5,0.2l0,0l-0.2,0.2l-0.4,0.4l0,0C12,13,11.9,13.1,11.9,13.3L11.9,13.3z\"/><path d=\"M12.1,13.8L12.1,13.8L12.1,13.8z\"/><path d=\"M11.9,13.3L11.9,13.3L11.9,13.3z\"/><path d=\"M15.9,5.2c0-0.1-0.1-0.2-0.1-0.3l0,0L14,0.4l0,0C13.9,0.2,13.7,0,13.5,0l0,0l0,0h-0.2c-0.2,0-0.4,0.1-0.5,0.2l0,0l-0.9,0.9c-0.5-0.3-1.1-0.6-1.8-0.8l0,0C9.4,0.1,8.7,0,7.9,0c-1,0-2,0.2-3,0.6S3,1.6,2.3,2.3C1.6,3.1,1,3.9,0.6,4.9l0,0C0.2,5.8,0,6.8,0,7.9c0,1,0.2,2,0.6,3s0.9,1.8,1.7,2.6l0,0l0,0l0,0l0,0c0.2,0.2,0.5,0.4,0.7,0.6l0,0l0,0l0,0l0,0c0.2,0.1,0.3,0.2,0.5,0.2l0,0c0.2,0,0.4-0.1,0.6-0.3l0,0c0.1-0.1,0.1-0.3,0.1-0.4v-0.1l0,0C4.1,13.3,4,13.1,3.9,13l0,0c-0.2-0.1-0.4-0.3-0.6-0.5c-0.6-0.6-1.1-1.3-1.4-2.1l0,0C1.6,9.6,1.4,8.8,1.4,7.9s0.2-1.7,0.5-2.5l0,0c0.3-0.8,0.8-1.5,1.4-2.1c0.6-0.6,1.3-1.1,2.1-1.4l0,0C6.2,1.6,7,1.4,7.9,1.4c0.6,0,1.1,0.1,1.7,0.2c0.5,0.1,0.9,0.3,1.3,0.5l-0.8,0.8l0,0C10,3.1,9.9,3.2,9.9,3.4v0.2l0,0l0,0c0,0.2,0.2,0.4,0.4,0.5l0,0l4.5,1.8l0,0H15h0.1c0.2,0,0.4-0.1,0.5-0.2l0,0C15.7,5.6,15.8,5.4,15.9,5.2z M11.8,3.2L13,2l0.4,1.1l0,0c0.2,0.4,0.3,0.7,0.4,0.9L11.8,3.2z\"/></g></svg>',\n mirror_horizontal: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14.75 15.74\"><g><path d=\"M13.75,3.76l5.9,15.74h-5.9V3.76ZM4.9,19.5,10.8,3.76V19.5H4.9Z\" transform=\"translate(-4.9 -3.76)\"/></g></svg>',\n mirror_vertical: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.74 14.75\"><g><path d=\"M20.15,13.1,4.41,19V13.1H20.15ZM4.41,4.25l15.74,5.9H4.41V4.25Z\" transform=\"translate(-4.41 -4.25)\"/></g></svg>',\n checked: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.75 12.1\"><g><path d=\"M4.59,12.23l.12.18L9.43,17.5a.58.58,0,0,0,.84,0L20,7.45h0a.58.58,0,0,0,0-.84l-.85-.85a.58.58,0,0,0-.84,0H18.2l-8.12,8.41a.29.29,0,0,1-.42,0l-3.4-3.63a.58.58,0,0,0-.84,0l-.85.85a.6.6,0,0,0-.14.21.51.51,0,0,0,0,.44c.05.06.1.13.16.19Z\" transform=\"translate(-4.38 -5.58)\"/></g></svg>',\n line_break: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M19,6a1,1,0,0,0-1,1v4a1,1,0,0,1-1,1H7.41l1.3-1.29A1,1,0,0,0,7.29,9.29l-3,3a1,1,0,0,0-.21.33,1,1,0,0,0,0,.76,1,1,0,0,0,.21.33l3,3a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42L7.41,14H17a3,3,0,0,0,3-3V7A1,1,0,0,0,19,6Z\"/></svg>',\n audio: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z\" /></svg>',\n image_gallery: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"30 30 150 150\"><g><path d=\"M152.775,120.548V51.651c0-12.271-9.984-22.254-22.254-22.254H43.727c-12.271,0-22.254,9.983-22.254,22.254v68.896c0,12.27,9.983,22.254,22.254,22.254h86.795C142.791,142.802,152.775,132.817,152.775,120.548z M36.394,51.651c0-4.042,3.291-7.333,7.333-7.333h86.795c4.042,0,7.332,3.291,7.332,7.333v23.917l-14.938-17.767c-1.41-1.678-3.487-2.649-5.68-2.658h-0.029c-2.184,0-4.255,0.954-5.674,2.613L76.709,98.519l-9.096-9.398c-1.427-1.474-3.392-2.291-5.448-2.273c-2.052,0.025-4.004,0.893-5.396,2.4L36.394,111.32V51.651z M41.684,127.585l20.697-22.416l9.312,9.622c1.461,1.511,3.489,2.334,5.592,2.27c2.101-0.066,4.075-1.013,5.44-2.612l34.436-40.308l20.693,24.613v21.794c0,4.042-3.29,7.332-7.332,7.332H43.727C43.018,127.88,42.334,127.775,41.684,127.585z M182.616,152.5V75.657c0-4.12-3.34-7.46-7.461-7.46c-4.119,0-7.46,3.34-7.46,7.46V152.5c0,4.112-3.347,7.46-7.461,7.46h-94c-4.119,0-7.46,3.339-7.46,7.459c0,4.123,3.341,7.462,7.46,7.462h94C172.576,174.881,182.616,164.841,182.616,152.5z\"/></g></svg>',\n bookmark: '<svg viewBox=\"0 0 24 24\"><path d=\"M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z\" /></svg>',\n download: '<svg viewBox=\"0 0 24 24\"><path d=\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z\" /></svg>',\n dir_ltr: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M9 4v4c-1.1 0-2-.9-2-2s.9-2 2-2m8-2H9C6.79 2 5 3.79 5 6s1.79 4 4 4v5h2V4h2v11h2V4h2V2zm0 12v3H5v2h12v3l4-4-4-4z\"/></svg>',\n dir_rtl: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M10 4v4c-1.1 0-2-.9-2-2s.9-2 2-2m8-2h-8C7.79 2 6 3.79 6 6s1.79 4 4 4v5h2V4h2v11h2V4h2V2zM8 14l-4 4 4 4v-3h12v-2H8v-3z\"/></svg>',\n // Error\n alert_outline: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z\" /></svg>',\n // More icons\n more_text: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"10 10 180 180\"><g><path d=\"M49.711,142.188h49.027c2.328,0.002,4.394,1.492,5.129,3.699l9.742,29.252c0.363,1.092,1.385,1.828,2.537,1.83l15.883,0.01c0.859,0,1.667-0.412,2.17-1.109s0.641-1.594,0.37-2.41l-16.625-50.045L86.503,28.953c-0.36-1.097-1.383-1.839-2.537-1.842H64.532c-1.153-0.001-2.178,0.736-2.542,1.831L13.847,173.457c-0.271,0.816-0.135,1.713,0.369,2.412c0.503,0.697,1.311,1.109,2.171,1.109h15.872c1.151,0,2.173-0.736,2.537-1.828l9.793-29.287C45.325,143.66,47.39,142.18,49.711,142.188L49.711,142.188z M53.493,119.098l15.607-46.9c0.744-2.196,2.806-3.674,5.125-3.674s4.381,1.478,5.125,3.674l15.607,46.904c0.537,1.621,0.263,3.402-0.736,4.789c-1.018,1.408-2.649,2.24-4.386,2.24H58.615c-1.736,0-3.368-0.832-4.386-2.24C53.23,122.504,52.956,120.721,53.493,119.098L53.493,119.098z M190.465,63.32c0-2.919-1.015-5.396-3.059-7.428c-2.029-2.031-4.496-3.047-7.383-3.047c-2.889,0-5.355,1.016-7.388,3.047c-2.029,2.032-3.056,4.498-3.056,7.386c0,2.889,1.026,5.354,3.056,7.385c2.032,2.032,4.499,3.059,7.388,3.059c2.887,0,5.354-1.026,7.383-3.059C189.45,68.633,190.465,66.178,190.465,63.32L190.465,63.32z M190.465,101.994c0-2.858-1.015-5.313-3.059-7.333c-2.029-2.042-4.496-3.047-7.383-3.047c-2.889,0-5.355,1.005-7.388,3.047c-2.029,2.021-3.056,4.486-3.056,7.376c0,2.887,1.026,5.352,3.056,7.395c2.032,2.021,4.499,3.047,7.388,3.047c2.887,0,5.354-1.025,7.383-3.047C189.45,107.389,190.465,104.914,190.465,101.994L190.465,101.994z M190.465,140.76c0-2.918-1.015-5.395-3.059-7.438c-2.029-2.041-4.496-3.047-7.383-3.047c-2.889,0-5.355,1.006-7.388,3.047c-2.029,2.043-3.056,4.52-3.056,7.438c0,2.922,1.026,5.398,3.056,7.439c2.032,2.021,4.499,3.047,7.388,3.047c2.887,0,5.354-1.025,7.383-3.047C189.45,146.158,190.465,143.682,190.465,140.76L190.465,140.76z\"/></g></svg>',\n more_paragraph: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"10 10 180 180\"><g><path d=\"M128.39,28.499H63.493c-25.558,0-46.354,20.796-46.354,46.354c0,25.559,20.796,46.353,46.354,46.353h9.271v55.625h18.542V47.04h9.271V176.83h18.543V47.04h9.271V28.499z M72.764,102.664h-9.271c-15.337,0-27.813-12.475-27.813-27.812c0-15.336,12.476-27.813,27.813-27.813h9.271V102.664z M190.465,63.32c0-2.919-1.015-5.396-3.059-7.428c-2.029-2.031-4.496-3.047-7.383-3.047c-2.889,0-5.355,1.016-7.388,3.047c-2.029,2.032-3.056,4.498-3.056,7.386c0,2.889,1.026,5.354,3.056,7.385c2.032,2.032,4.499,3.059,7.388,3.059c2.887,0,5.354-1.026,7.383-3.059C189.45,68.633,190.465,66.178,190.465,63.32L190.465,63.32z M190.465,101.994c0-2.858-1.015-5.313-3.059-7.333c-2.029-2.042-4.496-3.047-7.383-3.047c-2.889,0-5.355,1.005-7.388,3.047c-2.029,2.021-3.056,4.486-3.056,7.376c0,2.887,1.026,5.352,3.056,7.395c2.032,2.021,4.499,3.047,7.388,3.047c2.887,0,5.354-1.025,7.383-3.047C189.45,107.389,190.465,104.914,190.465,101.994L190.465,101.994z M190.465,140.76c0-2.918-1.015-5.395-3.059-7.438c-2.029-2.041-4.496-3.047-7.383-3.047c-2.889,0-5.355,1.006-7.388,3.047c-2.029,2.043-3.056,4.52-3.056,7.438c0,2.922,1.026,5.398,3.056,7.439c2.032,2.021,4.499,3.047,7.388,3.047c2.887,0,5.354-1.025,7.383-3.047C189.45,146.158,190.465,143.682,190.465,140.76L190.465,140.76z\"/></g></svg>',\n more_plus: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"35 30 140 140\"><g><path d=\"M137.215,102.045c0,3.498-2.835,6.332-6.333,6.332H24.549c-3.498,0-6.334-2.834-6.334-6.332l0,0c0-3.498,2.836-6.333,6.334-6.333h106.333C134.38,95.711,137.215,98.547,137.215,102.045L137.215,102.045z M77.715,161.545c-3.498,0-6.333-2.836-6.333-6.334V48.878c0-3.498,2.836-6.333,6.333-6.333l0,0c3.498,0,6.334,2.835,6.334,6.333v106.333C84.049,158.709,81.213,161.545,77.715,161.545L77.715,161.545z M190.465,63.32c0-2.919-1.015-5.396-3.059-7.428c-2.029-2.031-4.496-3.047-7.383-3.047c-2.889,0-5.355,1.016-7.388,3.047c-2.029,2.032-3.056,4.498-3.056,7.386c0,2.889,1.026,5.354,3.056,7.385c2.032,2.032,4.499,3.059,7.388,3.059c2.887,0,5.354-1.026,7.383-3.059C189.45,68.632,190.465,66.177,190.465,63.32L190.465,63.32z M190.465,101.993c0-2.858-1.015-5.313-3.059-7.333c-2.029-2.042-4.496-3.047-7.383-3.047c-2.889,0-5.355,1.005-7.388,3.047c-2.029,2.021-3.056,4.486-3.056,7.376c0,2.888,1.026,5.353,3.056,7.396c2.032,2.021,4.499,3.047,7.388,3.047c2.887,0,5.354-1.025,7.383-3.047C189.45,107.389,190.465,104.914,190.465,101.993L190.465,101.993z M190.465,140.76c0-2.918-1.015-5.395-3.059-7.438c-2.029-2.041-4.496-3.047-7.383-3.047c-2.889,0-5.355,1.006-7.388,3.047c-2.029,2.043-3.056,4.52-3.056,7.438c0,2.922,1.026,5.398,3.056,7.439c2.032,2.021,4.499,3.047,7.388,3.047c2.887,0,5.354-1.025,7.383-3.047C189.45,146.158,190.465,143.682,190.465,140.76L190.465,140.76z\"/></g></svg>',\n more_horizontal: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.76 3.58\"><g><path d=\"M4.64,10.73a1.84,1.84,0,0,1,.65-.65,1.76,1.76,0,0,1,1.79,0A1.79,1.79,0,0,1,8,11.63a1.84,1.84,0,0,1-.25.9,1.69,1.69,0,0,1-.65.65,1.8,1.8,0,0,1-2.69-1.55A2.08,2.08,0,0,1,4.64,10.73Zm6.09,0a1.84,1.84,0,0,1,.65-.65,1.78,1.78,0,0,1,2.67,1.55,1.73,1.73,0,0,1-.24.9,1.84,1.84,0,0,1-.65.65,1.76,1.76,0,0,1-1.79,0,1.79,1.79,0,0,1-.64-2.44Zm6.08,0a1.69,1.69,0,0,1,.65-.65,1.76,1.76,0,0,1,1.79,0,1.79,1.79,0,0,1,.9,1.54,1.73,1.73,0,0,1-.24.9,1.84,1.84,0,0,1-.65.65,1.8,1.8,0,0,1-2.69-1.55A2,2,0,0,1,16.81,10.73Z\" transform=\"translate(-4.39 -9.84)\"/></g></svg>',\n more_vertical: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 3.94 15.75\"><g><path d=\"M12.28,7.69a1.92,1.92,0,0,1-1.39-.58,2,2,0,0,1-.58-1.39,1.92,1.92,0,0,1,.58-1.39,2,2,0,0,1,1.39-.58,1.92,1.92,0,0,1,1.39.58,2,2,0,0,1,.58,1.39,1.92,1.92,0,0,1-.58,1.39,2,2,0,0,1-1.39.58Zm0,2a1.92,1.92,0,0,1,1.39.58,2,2,0,0,1,.58,1.39A1.92,1.92,0,0,1,13.67,13a2,2,0,0,1-1.39.58A1.92,1.92,0,0,1,10.89,13a2,2,0,0,1-.58-1.39,2,2,0,0,1,2-2Zm0,5.9a1.92,1.92,0,0,1,1.39.58,2,2,0,0,1,.58,1.39,1.92,1.92,0,0,1-.58,1.39,2,2,0,0,1-1.39.58,1.92,1.92,0,0,1-1.39-.58,2,2,0,0,1-.58-1.39,1.92,1.92,0,0,1,.58-1.39,1.94,1.94,0,0,1,1.39-.58Z\" transform=\"translate(-10.31 -3.75)\"/></g></svg>',\n // Not currently used\n attachment: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 8.38 15.68\"><g><path d=\"M15.23,6h1v9.78a3.88,3.88,0,0,1-1.31,2.45,4,4,0,0,1-6.57-2.45V7A3,3,0,0,1,9.2,4.89a3,3,0,0,1,5,2.09v8.31a1.92,1.92,0,0,1-.58,1.39,2,2,0,0,1-1.39.58,1.92,1.92,0,0,1-1.39-.58,2,2,0,0,1-.58-1.39V8h1v7.32a1,1,0,0,0,.29.69,1,1,0,0,0,.69.28A.9.9,0,0,0,13,16a1,1,0,0,0,.29-.69V7a1.92,1.92,0,0,0-.58-1.39A2,2,0,0,0,11.27,5a1.92,1.92,0,0,0-1.39.58A2,2,0,0,0,9.33,7v8.31a3,3,0,1,0,5.9,0V6Z\" transform=\"translate(-8.08 -3.78)\"/></g></svg>',\n map: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 11.7 15.62\"><g><path d=\"M12.05,12.42a2.93,2.93,0,1,1,2.07-5A2.88,2.88,0,0,1,15,9.49a3,3,0,0,1-.86,2.07,2.89,2.89,0,0,1-2.07.86Zm0-5.36a2.43,2.43,0,0,0-1.72,4.16,2.48,2.48,0,0,0,1.72.72,2.44,2.44,0,0,0,0-4.88Zm0-3.3A5.84,5.84,0,0,1,17.9,9.62a9.94,9.94,0,0,1-1.73,5A33.59,33.59,0,0,1,12.84,19a1.52,1.52,0,0,1-.23.2,1,1,0,0,1-.55.2h0a1,1,0,0,1-.55-.2,1.52,1.52,0,0,1-.23-.2,33.59,33.59,0,0,1-3.33-4.32,9.93,9.93,0,0,1-1.72-5,5.84,5.84,0,0,1,5.85-5.86ZM12,18.34l.08.05.06-.06a35.58,35.58,0,0,0,3.06-3.93,9.35,9.35,0,0,0,1.74-4.77,4.88,4.88,0,0,0-4.88-4.88A4.79,4.79,0,0,0,8.6,6.17,4.84,4.84,0,0,0,7.17,9.62,9.29,9.29,0,0,0,8.91,14.4,36,36,0,0,0,12,18.34Z\" transform=\"translate(-6.2 -3.76)\"/></g></svg>',\n magic_stick: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15.73 15.75\"><g><path d=\"M19.86,19.21a1,1,0,0,0,.28-.68,1,1,0,0,0-.28-.7L13,10.93a1,1,0,0,0-.7-.28,1,1,0,0,0-.68,1.65l6.9,6.9a1,1,0,0,0,.69.29.93.93,0,0,0,.69-.28ZM9.19,8.55a3,3,0,0,0,1.68,0,14.12,14.12,0,0,0,1.41-.32A11.26,11.26,0,0,0,10.8,7.06c-.56-.36-.86-.56-.91-.58S10,5.91,10,5.11s0-1.26-.15-1.37a4.35,4.35,0,0,0-1.19.71c-.53.4-.81.62-.87.68a9,9,0,0,0-2-.6,6.84,6.84,0,0,0-.76-.09s0,.27.08.77a8.6,8.6,0,0,0,.61,2q-.09.09-.69.87a3.59,3.59,0,0,0-.68,1.17c.12.17.57.23,1.36.15S7,9.26,7.15,9.23s.21.36.57.91a10.49,10.49,0,0,0,1.14,1.48c0-.1.14-.57.31-1.4a3,3,0,0,0,0-1.67Z\" transform=\"translate(-4.41 -3.74)\"/></g></svg>',\n empty_file: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12.78 15.75\"><g><path d=\"M14.73,3.76,18.67,7.7v9.84a2,2,0,0,1-2,2H7.84a1.89,1.89,0,0,1-1.38-.58,2,2,0,0,1-.57-1.39V5.73a1.93,1.93,0,0,1,.57-1.38,2,2,0,0,1,1.38-.58h6.62l.26,0v0Zm2.95,4.92h-2a1.93,1.93,0,0,1-1.38-.57,2,2,0,0,1-.58-1.4V6.17c0-.36,0-.84,0-1.43H7.85a1,1,0,0,0-.7.29,1,1,0,0,0-.29.7V17.54a1,1,0,0,0,.29.69,1,1,0,0,0,.69.29h8.85a1,1,0,0,0,.71-.29.92.92,0,0,0,.28-.69Zm0-1L14.73,4.74v2A1,1,0,0,0,15,7.4a1,1,0,0,0,.69.29Z\" transform=\"translate(-5.89 -3.76)\"/></g></svg>'\n};\n","/*\r\n * wysiwyg web editor\r\n *\r\n * suneditor.js\r\n * Copyright 2017 JiHong Lee.\r\n * MIT license.\r\n */\r\n'use strict';\r\n\r\n/**\r\n * @description utility function\r\n */\r\nconst util = {\r\n _d: null,\r\n _w: null,\r\n isIE: null,\r\n isIE_Edge: null,\r\n isOSX_IOS: null,\r\n isChromium: null,\r\n isResizeObserverSupported: null, \r\n _propertiesInit: function () {\r\n if (this._d) return;\r\n this._d = document;\r\n this._w = window;\r\n this.isIE = navigator.userAgent.indexOf('Trident') > -1;\r\n this.isIE_Edge = (navigator.userAgent.indexOf('Trident') > -1) || (navigator.appVersion.indexOf('Edge') > -1);\r\n this.isOSX_IOS = /(Mac|iPhone|iPod|iPad)/.test(navigator.platform);\r\n this.isChromium = !!window.chrome;\r\n this.isResizeObserverSupported = (typeof ResizeObserver === 'function');\r\n },\r\n\r\n _allowedEmptyNodeList: '.se-component, pre, blockquote, hr, li, table, img, iframe, video, audio, canvas',\r\n\r\n /**\r\n * @description HTML Reserved Word Converter.\r\n * @param {String} contents \r\n * @returns {String} HTML string\r\n * @private\r\n */\r\n _HTMLConvertor: function (contents) {\r\n const ec = {'&': '&', '\\u00A0': ' ', '\\'': ''', '\"': '"', '<': '<', '>': '>'};\r\n return contents.replace(/&|\\u00A0|'|\"|<|>/g, function (m) {\r\n return (typeof ec[m] === 'string') ? ec[m] : m;\r\n });\r\n },\r\n\r\n /**\r\n * @description Unicode Character 'ZERO WIDTH SPACE' (\\u200B)\r\n */\r\n zeroWidthSpace: String.fromCharCode(8203),\r\n\r\n /**\r\n * @description Regular expression to find 'zero width space' (/\\u200B/g)\r\n */\r\n zeroWidthRegExp: new RegExp(String.fromCharCode(8203), 'g'),\r\n\r\n /**\r\n * @description Regular expression to find only 'zero width space' (/^\\u200B+$/)\r\n */\r\n onlyZeroWidthRegExp: new RegExp('^' + String.fromCharCode(8203) + '+$'),\r\n\r\n fontValueMap: {\r\n 'xx-small': 1,\r\n 'x-small': 2,\r\n 'small': 3,\r\n 'medium': 4,\r\n 'large': 5,\r\n 'x-large': 6,\r\n 'xx-large': 7\r\n },\r\n\r\n /**\r\n * @description A method that checks If the text is blank or to see if it contains 'ZERO WIDTH SPACE' or empty (util.zeroWidthSpace)\r\n * @param {String|Node} text String value or Node\r\n * @returns {Boolean}\r\n */\r\n onlyZeroWidthSpace: function (text) {\r\n if (text === null || text === undefined) return false;\r\n if (typeof text !== 'string') text = text.textContent;\r\n return text === '' || this.onlyZeroWidthRegExp.test(text);\r\n },\r\n\r\n /**\r\n * @description Gets XMLHttpRequest object\r\n * @returns {XMLHttpRequest|ActiveXObject}\r\n */\r\n getXMLHttpRequest: function () {\r\n /** IE */\r\n if (this._w.ActiveXObject) {\r\n try {\r\n return new ActiveXObject('Msxml2.XMLHTTP');\r\n } catch (e) {\r\n try {\r\n return new ActiveXObject('Microsoft.XMLHTTP');\r\n } catch (e1) {\r\n return null;\r\n }\r\n }\r\n }\r\n /** netscape */\r\n else if (this._w.XMLHttpRequest) {\r\n return new XMLHttpRequest();\r\n }\r\n /** fail */\r\n else {\r\n return null;\r\n }\r\n },\r\n\r\n /**\r\n * @description Object.values\r\n * @param {Object|null} obj Object parameter.\r\n * @returns {Array}\r\n */\r\n getValues: function (obj) {\r\n return !obj ? [] : this._w.Object.keys(obj).map(function (i) {\r\n return obj[i];\r\n });\r\n },\r\n\r\n /**\r\n * @description Convert the CamelCase To the KebabCase.\r\n * @param {String|Array} param [Camel string]\r\n * @returns {String|Array}\r\n */\r\n camelToKebabCase: function (param) {\r\n if (typeof param === 'string') {\r\n return param.replace(/[A-Z]/g, function (letter) { return \"-\" + letter.toLowerCase(); });\r\n } else {\r\n return param.map(function(str) { return util.camelToKebabCase(str); });\r\n }\r\n },\r\n\r\n /**\r\n * @description Convert the KebabCase To the CamelCase.\r\n * @param {String|Array} param [KebabCase string]\r\n * @returns {String|Array}\r\n */\r\n kebabToCamelCase: function (param) {\r\n if (typeof param === 'string') {\r\n return param.replace(/-[a-zA-Z]/g, function (letter) { return letter.replace('-', '').toUpperCase(); });\r\n } else {\r\n return param.map(function(str) { return util.camelToKebabCase(str); });\r\n }\r\n },\r\n\r\n /**\r\n * @description Create Element node\r\n * @param {String} elementName Element name\r\n * @returns {Element}\r\n */\r\n createElement: function (elementName) {\r\n return this._d.createElement(elementName);\r\n },\r\n\r\n /**\r\n * @description Create text node\r\n * @param {String} text text contents\r\n * @returns {Node}\r\n */\r\n createTextNode: function (text) {\r\n return this._d.createTextNode(text || '');\r\n },\r\n\r\n /**\r\n * @description The editor checks tags by string.\r\n * If there is \"<\" or \">\" in the attribute of tag, HTML is broken when checking the tag.\r\n * When using an attribute with \"<\" or \">\", use \"HTMLEncoder\" to save. (ex: math(katex))\r\n * @param {String} contents HTML or Text string\r\n * @returns {String}\r\n */\r\n HTMLEncoder: function (contents) {\r\n const ec = {'<': '$lt;', '>': '$gt;'};\r\n return contents.replace(/<|>/g, function (m) {\r\n return (typeof ec[m] === 'string') ? ec[m] : m;\r\n });\r\n },\r\n\r\n /**\r\n * @description The editor checks tags by string.\r\n * If there is \"<\" or \">\" in the attribute of tag, HTML is broken when checking the tag.\r\n * Decoder of data stored as \"HTMLEncoder\" (ex: math(katex))\r\n * @param {String} contents HTML or Text string\r\n * @returns {String}\r\n */\r\n HTMLDecoder: function (contents) {\r\n const ec = {'$lt;': '<', '$gt;': '>'};\r\n return contents.replace(/\\$lt;|\\$gt;/g, function (m) {\r\n return (typeof ec[m] === 'string') ? ec[m] : m;\r\n });\r\n },\r\n\r\n /**\r\n * @description This method run Object.prototype.hasOwnProperty.call(obj, key)\r\n * @param {Object} obj Object\r\n * @param {String} key obj.key\r\n * @returns {Boolean}\r\n */\r\n hasOwn: function (obj, key) {\r\n return this._hasOwn.call(obj, key);\r\n },\r\n _hasOwn: Object.prototype.hasOwnProperty,\r\n\r\n /**\r\n * @deprecated\r\n * @description Get the the tag path of the arguments value\r\n * If not found, return the first found value\r\n * @param {Array} nameArray File name array\r\n * @param {String} extension js, css\r\n * @returns {String}\r\n */\r\n getIncludePath: function (nameArray, extension) {\r\n let path = '';\r\n const pathList = [];\r\n const tagName = extension === 'js' ? 'script' : 'link';\r\n const src = extension === 'js' ? 'src' : 'href';\r\n \r\n let fileName = '(?:';\r\n for (let i = 0, len = nameArray.length; i < len; i++) {\r\n fileName += nameArray[i] + (i < len - 1 ? '|' : ')');\r\n }\r\n\r\n const regExp = new this._w.RegExp('(^|.*[\\\\/])' + fileName + '(\\\\.[^\\\\/]+)?\\.' + extension + '(?:\\\\?.*|;.*)?$', 'i');\r\n const extRegExp = new this._w.RegExp('.+\\\\.' + extension + '(?:\\\\?.*|;.*)?$', 'i');\r\n \r\n for (let c = this._d.getElementsByTagName(tagName), i = 0; i < c.length; i++) {\r\n if (extRegExp.test(c[i][src])) {\r\n pathList.push(c[i]);\r\n }\r\n }\r\n\r\n for (let i = 0; i < pathList.length; i++) {\r\n let editorTag = pathList[i][src].match(regExp);\r\n if (editorTag) {\r\n path = editorTag[0];\r\n break;\r\n }\r\n }\r\n\r\n if (path === '') path = pathList.length > 0 ? pathList[0][src] : '';\r\n\r\n -1 === path.indexOf(':/') && '//' !== path.slice(0, 2) && (path = 0 === path.indexOf('/') ? location.href.match(/^.*?:\\/\\/[^\\/]*/)[0] + path : location.href.match(/^[^\\?]*\\/(?:)/)[0] + path);\r\n\r\n if (!path) throw '[SUNEDITOR.util.getIncludePath.fail] The SUNEDITOR installation path could not be automatically detected. (name: +' + name + ', extension: ' + extension + ')';\r\n\r\n return path;\r\n },\r\n\r\n /**\r\n * @deprecated\r\n * @description Returns the CSS text that has been applied to the current page.\r\n * @param {Document|null} doc To get the CSS text of an document(core._wd). If null get the current document.\r\n * @returns {String} Styles string\r\n */\r\n getPageStyle: function (doc) {\r\n let cssText = '';\r\n const sheets = (doc || this._d).styleSheets;\r\n \r\n for (let i = 0, len = sheets.length, rules; i < len; i++) {\r\n try {\r\n rules = sheets[i].cssRules;\r\n } catch (e) {\r\n continue;\r\n }\r\n \r\n if (rules) {\r\n for (let c = 0, cLen = rules.length; c < cLen; c++) {\r\n cssText += rules[c].cssText;\r\n }\r\n }\r\n }\r\n\r\n return cssText;\r\n },\r\n\r\n /**\r\n * @description Get the argument iframe's document object\r\n * @param {Element} iframe Iframe element (context.element.wysiwygFrame)\r\n * @returns {Document}\r\n */\r\n getIframeDocument: function (iframe) {\r\n let wDocument = iframe.contentWindow || iframe.contentDocument;\r\n if (wDocument.document) wDocument = wDocument.document;\r\n return wDocument;\r\n },\r\n\r\n /**\r\n * @description Get attributes of argument element to string ('class=\"---\" name=\"---\" ')\r\n * @param {Element} element Element object\r\n * @param {Array|null} exceptAttrs Array of attribute names to exclude from the result\r\n * @returns {String}\r\n */\r\n getAttributesToString: function (element, exceptAttrs) {\r\n if (!element.attributes) return '';\r\n\r\n const attrs = element.attributes;\r\n let attrString = '';\r\n\r\n for (let i = 0, len = attrs.length; i < len; i++) {\r\n if (exceptAttrs && exceptAttrs.indexOf(attrs[i].name) > -1) continue;\r\n attrString += attrs[i].name + '=\"' + attrs[i].value + '\" ';\r\n }\r\n\r\n return attrString;\r\n },\r\n\r\n /**\r\n * @descriptionGets Get the length in bytes of a string.\r\n * referencing code: \"https://github.com/shaan1974/myrdin/blob/master/expressions/string.js#L11\"\r\n * @param {String} text String text\r\n * @returns {Number}\r\n */\r\n getByteLength: function(text) {\r\n if (!text || !text.toString) return 0;\r\n text = text.toString();\r\n\r\n const encoder = this._w.encodeURIComponent;\r\n let cr, cl;\r\n if (this.isIE_Edge) {\r\n cl = this._w.unescape(encoder(text)).length;\r\n cr = 0;\r\n\r\n if (encoder(text).match(/(%0A|%0D)/gi) !== null) {\r\n cr = encoder(text).match(/(%0A|%0D)/gi).length;\r\n }\r\n\r\n return cl + cr;\r\n } else {\r\n cl = (new this._w.TextEncoder('utf-8').encode(text)).length;\r\n cr = 0;\r\n\r\n if (encoder(text).match(/(%0A|%0D)/gi) !== null) {\r\n cr = encoder(text).match(/(%0A|%0D)/gi).length;\r\n }\r\n\r\n return cl + cr;\r\n }\r\n },\r\n\r\n /**\r\n * @description It is judged whether it is the edit region top div element or iframe's body tag.\r\n * @param {Node} element The node to check\r\n * @returns {Boolean}\r\n */\r\n isWysiwygDiv: function (element) {\r\n return element && element.nodeType === 1 && (this.hasClass(element, 'se-wrapper-wysiwyg') || /^BODY$/i.test(element.nodeName));\r\n },\r\n\r\n /**\r\n * @description It is judged whether it is the contenteditable property is false.\r\n * @param {Node} element The node to check\r\n * @returns {Boolean}\r\n */\r\n isNonEditable: function (element) {\r\n return element && element.nodeType === 1 && element.getAttribute('contenteditable') === 'false';\r\n },\r\n\r\n /**\r\n * @description It is judged whether it is a node related to the text style.\r\n * (strong|span|font|b|var|i|em|u|ins|s|strike|del|sub|sup|mark|a|label|code)\r\n * @param {Node} element The node to check\r\n * @returns {Boolean}\r\n */\r\n isTextStyleElement: function (element) {\r\n return element && element.nodeType !== 3 && /^(strong|span|font|b|var|i|em|u|ins|s|strike|del|sub|sup|mark|a|label|code|summary)$/i.test(element.nodeName);\r\n },\r\n\r\n /**\r\n * @description It is judged whether it is the input element (INPUT, TEXTAREA)\r\n * @param {Node} element The node to check\r\n * @returns \r\n */\r\n isInputElement: function (element) {\r\n return element && element.nodeType === 1 && /^(INPUT|TEXTAREA)$/i.test(element.nodeName);\r\n },\r\n\r\n /**\r\n * @description It is judged whether it is the format element (P, DIV, H[1-6], PRE, LI | class=\"__se__format__replace_xxx\")\r\n * Format element also contain \"free format Element\"\r\n * @param {Node} element The node to check\r\n * @returns {Boolean}\r\n */\r\n isFormatElement: function (element) {\r\n return element && element.nodeType === 1 && (/^(P|DIV|H[1-6]|PRE|LI|TH|TD|DETAILS)$/i.test(element.nodeName) || this.hasClass(element, '(\\\\s|^)__se__format__replace_.+(\\\\s|$)|(\\\\s|^)__se__format__free_.+(\\\\s|$)')) && !this.isComponent(element) && !this.isWysiwygDiv(element);\r\n },\r\n\r\n /**\r\n * @description It is judged whether it is the range format element. (BLOCKQUOTE, OL, UL, FIGCAPTION, TABLE, THEAD, TBODY, TR, TH, TD | class=\"__se__format__range_xxx\")\r\n * Range format element is wrap the \"format element\" and \"component\"\r\n * @param {Node} element The node to check\r\n * @returns {Boolean}\r\n */\r\n isRangeFormatElement: function (element) {\r\n return element && element.nodeType === 1 && (/^(BLOCKQUOTE|OL|UL|FIGCAPTION|TABLE|THEAD|TBODY|TR|TH|TD|DETAILS)$/i.test(element.nodeName) || this.hasClass(element, '(\\\\s|^)__se__format__range_.+(\\\\s|$)'));\r\n },\r\n\r\n /**\r\n * @description It is judged whether it is the closure range format element. (TH, TD | class=\"__se__format__range__closure_xxx\")\r\n * Closure range format elements is included in the range format element.\r\n * - Closure range format element is wrap the \"format element\" and \"component\"\r\n * ※ You cannot exit this format with the Enter key or Backspace key.\r\n * ※ Use it only in special cases. ([ex] format of table cells)\r\n * @param {Node} element The node to check\r\n * @returns {Boolean}\r\n */\r\n isClosureRangeFormatElement: function (element) {\r\n return element && element.nodeType === 1 && (/^(TH|TD)$/i.test(element.nodeName) || this.hasClass(element, '(\\\\s|^)__se__format__range__closure_.+(\\\\s|$)'));\r\n },\r\n\r\n /**\r\n * @description It is judged whether it is the free format element. (PRE | class=\"__se__format__free_xxx\")\r\n * Free format elements is included in the format element.\r\n * Free format elements's line break is \"BR\" tag.\r\n * ※ Entering the Enter key in the space on the last line ends \"Free Format\" and appends \"Format\".\r\n * @param {Node} element The node to check\r\n * @returns {Boolean}\r\n */\r\n isFreeFormatElement: function (element) {\r\n return element && element.nodeType === 1 && (/^PRE$/i.test(element.nodeName) || this.hasClass(element, '(\\\\s|^)__se__format__free_.+(\\\\s|$)')) && !this.isComponent(element) && !this.isWysiwygDiv(element);\r\n },\r\n\r\n /**\r\n * @description It is judged whether it is the closure free format element. (class=\"__se__format__free__closure_xxx\")\r\n * Closure free format elements is included in the free format element.\r\n * - Closure free format elements's line break is \"BR\" tag.\r\n * ※ You cannot exit this format with the Enter key or Backspace key.\r\n * ※ Use it only in special cases. ([ex] format of table cells)\r\n * @param {Node} element The node to check\r\n * @returns {Boolean}\r\n */\r\n isClosureFreeFormatElement: function (element) {\r\n return element && element.nodeType === 1 && this.hasClass(element, '(\\\\s|^)__se__format__free__closure_.+(\\\\s|$)');\r\n },\r\n\r\n /**\r\n * @description It is judged whether it is the component[img, iframe, video, audio, table] cover(class=\"se-component\") and table, hr\r\n * @param {Node} element The node to check\r\n * @returns {Boolean}\r\n */\r\n isComponent: function (element) {\r\n return element && (/se-component/.test(element.className) || /^(TABLE|HR)$/.test(element.nodeName));\r\n },\r\n\r\n /**\r\n * @description Checks for \"__se__uneditable\" in the class list.\r\n * Components with class \"__se__uneditable\" cannot be modified.\r\n * @param {Element} element The element to check\r\n * @returns {Boolean}\r\n */\r\n isUneditableComponent: function (element) {\r\n return element && this.hasClass(element, '__se__uneditable');\r\n },\r\n\r\n /**\r\n * @description It is judged whether it is the component [img, iframe] cover(class=\"se-component\")\r\n * @param {Node} element The node to check\r\n * @returns {Boolean}\r\n */\r\n isMediaComponent: function (element) {\r\n return element && /se-component/.test(element.className);\r\n },\r\n\r\n /**\r\n * @description It is judged whether it is the not checking node. (class=\"katex\", \"__se__tag\")\r\n * @param {Node} element The node to check\r\n * @returns {Boolean}\r\n */\r\n isNotCheckingNode: function (element) {\r\n return element && /katex|__se__tag/.test(element.className);\r\n },\r\n\r\n /**\r\n * @description If a parent node that contains an argument node finds a format node (util.isFormatElement), it returns that node.\r\n * @param {Node} element Reference node.\r\n * @param {Function|null} validation Additional validation function.\r\n * @returns {Element|null}\r\n */\r\n getFormatElement: function (element, validation) {\r\n if (!element) return null;\r\n if (!validation) {\r\n validation = function () { return true; };\r\n }\r\n\r\n while (element) {\r\n if (this.isWysiwygDiv(element)) return null;\r\n if (this.isRangeFormatElement(element)) element.firstElementChild;\r\n if (this.isFormatElement(element) && validation(element)) return element;\r\n\r\n element = element.parentNode;\r\n }\r\n \r\n return null;\r\n },\r\n\r\n /**\r\n * @description If a parent node that contains an argument node finds a format node (util.isRangeFormatElement), it returns that node.\r\n * @param {Node} element Reference node.\r\n * @param {Function|null} validation Additional validation function.\r\n * @returns {Element|null}\r\n */\r\n getRangeFormatElement: function (element, validation) {\r\n if (!element) return null;\r\n if (!validation) {\r\n validation = function () { return true; };\r\n }\r\n\r\n while (element) {\r\n if (this.isWysiwygDiv(element)) return null;\r\n if (this.isRangeFormatElement(element) && !/^(THEAD|TBODY|TR)$/i.test(element.nodeName) && validation(element)) return element;\r\n element = element.parentNode;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n /**\r\n * @description If a parent node that contains an argument node finds a free format node (util.isFreeFormatElement), it returns that node.\r\n * @param {Node} element Reference node.\r\n * @param {Function|null} validation Additional validation function.\r\n * @returns {Element|null}\r\n */\r\n getFreeFormatElement: function (element, validation) {\r\n if (!element) return null;\r\n if (!validation) {\r\n validation = function () { return true; };\r\n }\r\n\r\n while (element) {\r\n if (this.isWysiwygDiv(element)) return null;\r\n if (this.isFreeFormatElement(element) && validation(element)) return element;\r\n\r\n element = element.parentNode;\r\n }\r\n \r\n return null;\r\n },\r\n\r\n /**\r\n * @description If a parent node that contains an argument node finds a closure free format node (util.isClosureFreeFormatElement), it returns that node.\r\n * @param {Node} element Reference node.\r\n * @param {Function|null} validation Additional validation function.\r\n * @returns {Element|null}\r\n */\r\n getClosureFreeFormatElement: function (element, validation) {\r\n if (!element) return null;\r\n if (!validation) {\r\n validation = function () { return true; };\r\n }\r\n\r\n while (element) {\r\n if (this.isWysiwygDiv(element)) return null;\r\n if (this.isClosureFreeFormatElement(element) && validation(element)) return element;\r\n\r\n element = element.parentNode;\r\n }\r\n \r\n return null;\r\n },\r\n\r\n /**\r\n * @description Add style and className of copyEl to originEl\r\n * @param {Element} originEl Origin element\r\n * @param {Element} copyEl Element to copy\r\n * @param {Array|null} blacklist Blacklist array(LowerCase)\r\n */\r\n copyTagAttributes: function (originEl, copyEl, blacklist) {\r\n if (copyEl.style.cssText) {\r\n const copyStyles = copyEl.style;\r\n for (let i = 0, len = copyStyles.length; i < len; i++) {\r\n originEl.style[copyStyles[i]] = copyStyles[copyStyles[i]];\r\n }\r\n }\r\n\r\n const attrs = copyEl.attributes;\r\n for (let i = 0, len = attrs.length, name; i < len; i++) {\r\n name = attrs[i].name.toLowerCase();\r\n if ((blacklist && blacklist.indexOf(name) > -1) || !attrs[i].value) originEl.removeAttribute(name);\r\n else if (name !== 'style') originEl.setAttribute(attrs[i].name, attrs[i].value);\r\n }\r\n },\r\n\r\n /**\r\n * @description Copy and apply attributes of format tag that should be maintained. (style, class) Ignore \"__se__format__\" class\r\n * @param {Element} originEl Origin element\r\n * @param {Element} copyEl Element to copy\r\n */\r\n copyFormatAttributes: function (originEl, copyEl) {\r\n copyEl = copyEl.cloneNode(false);\r\n copyEl.className = copyEl.className.replace(/(\\s|^)__se__format__[^\\s]+/g, '');\r\n this.copyTagAttributes(originEl, copyEl);\r\n },\r\n\r\n /**\r\n * @description Get the item from the array that matches the condition.\r\n * @param {Array|HTMLCollection|NodeList} array Array to get item\r\n * @param {Function|null} validation Conditional function\r\n * @param {Boolean} multi If true, returns all items that meet the criteria otherwise, returns an empty array.\r\n * If false, returns only one item that meet the criteria otherwise return null.\r\n * @returns {Array|Node|null}\r\n */\r\n getArrayItem: function (array, validation, multi) {\r\n if (!array || array.length === 0) return null;\r\n\r\n validation = validation || function () { return true; };\r\n const arr = [];\r\n \r\n for (let i = 0, len = array.length, a; i < len; i++) {\r\n a = array[i];\r\n if (validation(a)) {\r\n if (!multi) return a;\r\n else arr.push(a);\r\n }\r\n }\r\n\r\n return !multi ? null : arr;\r\n },\r\n\r\n /**\r\n * @description Check if an array contains an element \r\n * @param {Array|HTMLCollection|NodeList} array element array\r\n * @param {Node} element The element to check for\r\n * @returns {Boolean}\r\n */\r\n arrayIncludes: function(array, element) {\r\n for (let i = 0; i < array.length; i++) {\r\n if (array[i] === element) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * @description Get the index of the argument value in the element array\r\n * @param {Array|HTMLCollection|NodeList} array element array\r\n * @param {Node} element The element to find index\r\n * @returns {Number}\r\n */\r\n getArrayIndex: function (array, element) {\r\n let idx = -1;\r\n for (let i = 0, len = array.length; i < len; i++) {\r\n if (array[i] === element) {\r\n idx = i;\r\n break;\r\n }\r\n }\r\n\r\n return idx;\r\n },\r\n\r\n /**\r\n * @description Get the next index of the argument value in the element array\r\n * @param {Array|HTMLCollection|NodeList} array element array\r\n * @param {Node} item The element to find index\r\n * @returns {Number}\r\n */\r\n nextIdx: function (array, item) {\r\n let idx = this.getArrayIndex(array, item);\r\n if (idx === -1) return -1;\r\n return idx + 1;\r\n },\r\n\r\n /**\r\n * @description Get the previous index of the argument value in the element array\r\n * @param {Array|HTMLCollection|NodeList} array Element array\r\n * @param {Node} item The element to find index\r\n * @returns {Number}\r\n */\r\n prevIdx: function (array, item) {\r\n let idx = this.getArrayIndex(array, item);\r\n if (idx === -1) return -1;\r\n return idx - 1;\r\n },\r\n\r\n /**\r\n * @description Returns the index compared to other sibling nodes.\r\n * @param {Node} node The Node to find index\r\n * @returns {Number}\r\n */\r\n getPositionIndex: function (node) {\r\n let idx = 0;\r\n while ((node = node.previousSibling)) {\r\n idx += 1;\r\n }\r\n return idx;\r\n },\r\n\r\n /**\r\n * @description Returns the position of the \"node\" in the \"parentNode\" in a numerical array.\r\n * ex) <p><span>aa</span><span>bb</span></p> : getNodePath(node: \"bb\", parentNode: \"<P>\") -> [1, 0]\r\n * @param {Node} node The Node to find position path\r\n * @param {Node|null} parentNode Parent node. If null, wysiwyg div area\r\n * @param {Object|null} _newOffsets If you send an object of the form \"{s: 0, e: 0}\", the text nodes that are attached together are merged into one, centered on the \"node\" argument.\r\n * \"_newOffsets.s\" stores the length of the combined characters after \"node\" and \"_newOffsets.e\" stores the length of the combined characters before \"node\".\r\n * Do not use unless absolutely necessary.\r\n * @returns {Array}\r\n */\r\n getNodePath: function (node, parentNode, _newOffsets) {\r\n const path = [];\r\n let finds = true;\r\n\r\n this.getParentElement(node, function (el) {\r\n if (el === parentNode) finds = false;\r\n if (finds && !this.isWysiwygDiv(el)) {\r\n // merge text nodes\r\n if (_newOffsets && el.nodeType === 3) {\r\n let temp = null, tempText = null;\r\n _newOffsets.s = _newOffsets.e = 0;\r\n\r\n let previous = el.previousSibling;\r\n while (previous && previous.nodeType === 3) {\r\n tempText = previous.textContent.replace(this.zeroWidthRegExp, '');\r\n _newOffsets.s += tempText.length;\r\n el.textContent = tempText + el.textContent;\r\n temp = previous;\r\n previous = previous.previousSibling;\r\n this.removeItem(temp);\r\n }\r\n\r\n let next = el.nextSibling;\r\n while (next && next.nodeType === 3) {\r\n tempText = next.textContent.replace(this.zeroWidthRegExp, '');\r\n _newOffsets.e += tempText.length;\r\n el.textContent += tempText;\r\n temp = next;\r\n next = next.nextSibling;\r\n this.removeItem(temp);\r\n }\r\n }\r\n\r\n // index push\r\n path.push(el);\r\n }\r\n return false;\r\n }.bind(this));\r\n \r\n return path.map(this.getPositionIndex).reverse();\r\n },\r\n\r\n /**\r\n * @description Returns the node in the location of the path array obtained from \"util.getNodePath\".\r\n * @param {Array} offsets Position array, array obtained from \"util.getNodePath\"\r\n * @param {Node} parentNode Base parent element\r\n * @returns {Node}\r\n */\r\n getNodeFromPath: function (offsets, parentNode) {\r\n let current = parentNode;\r\n let nodes;\r\n\r\n for (let i = 0, len = offsets.length; i < len; i++) {\r\n nodes = current.childNodes;\r\n if (nodes.length === 0) break;\r\n if (nodes.length <= offsets[i]) {\r\n current = nodes[nodes.length - 1];\r\n } else {\r\n current = nodes[offsets[i]];\r\n }\r\n }\r\n\r\n return current;\r\n },\r\n\r\n /**\r\n * @description Compares the style and class for equal values.\r\n * Returns true if both are text nodes.\r\n * @param {Node} a Node to compare\r\n * @param {Node} b Node to compare\r\n * @returns {Boolean}\r\n */\r\n isSameAttributes: function (a, b) {\r\n if (a.nodeType === 3 && b.nodeType === 3) return true;\r\n if (a.nodeType === 3 || b.nodeType === 3) return false;\r\n\r\n const style_a = a.style;\r\n const style_b = b.style;\r\n let compStyle = 0;\r\n\r\n for (let i = 0, len = style_a.length; i < len; i++) {\r\n if (style_a[style_a[i]] === style_b[style_a[i]]) compStyle++;\r\n }\r\n\r\n const class_a = a.classList;\r\n const class_b = b.classList;\r\n const reg = this._w.RegExp;\r\n let compClass = 0;\r\n\r\n for (let i = 0, len = class_a.length; i < len; i++) {\r\n if (reg('(\\s|^)' + class_a[i] + '(\\s|$)').test(class_b.value)) compClass++;\r\n }\r\n\r\n return (compStyle === style_b.length && compStyle === style_a.length) && (compClass === class_b.length && compClass === class_a.length);\r\n },\r\n\r\n /**\r\n * @description Check the line element(util.isFormatElement) is empty.\r\n * @param {Element} element Format element node\r\n * @returns {Boolean}\r\n */\r\n isEmptyLine: function (element) {\r\n return !element || !element.parentNode || (!element.querySelector('IMG, IFRAME, AUDIO, VIDEO, CANVAS, TABLE') && element.children.length === 0 && this.onlyZeroWidthSpace(element.textContent));\r\n },\r\n\r\n /**\r\n * @description Check the span's attributes are empty.\r\n * @param {Element|null} element Element node\r\n * @returns {Boolean}\r\n */\r\n isSpanWithoutAttr: function (element) {\r\n return !!element && element.nodeType === 1 && /^SPAN$/i.test(element.nodeName) && !element.className && !element.style.cssText;\r\n },\r\n\r\n /**\r\n * @description Check the node is a list (ol, ul)\r\n * @param {Node|String} node The element or element name to check\r\n * @returns {Boolean}\r\n */\r\n isList: function (node) {\r\n return node && /^(OL|UL)$/i.test(typeof node === 'string' ? node : node.nodeName);\r\n },\r\n\r\n /**\r\n * @description Check the node is a list cell (li)\r\n * @param {Node|String} node The element or element name to check\r\n * @returns {Boolean}\r\n */\r\n isListCell: function (node) {\r\n return node && /^LI$/i.test(typeof node === 'string' ? node : node.nodeName);\r\n },\r\n\r\n /**\r\n * @description Check the node is a table (table, thead, tbody, tr, th, td)\r\n * @param {Node|String} node The element or element name to check\r\n * @returns {Boolean}\r\n */\r\n isTable: function (node) {\r\n return node && /^(TABLE|THEAD|TBODY|TR|TH|TD)$/i.test(typeof node === 'string' ? node : node.nodeName);\r\n },\r\n\r\n /**\r\n * @description Check the node is a table cell (td, th)\r\n * @param {Node|String} node The element or element name to check\r\n * @returns {Boolean}\r\n */\r\n isCell: function (node) {\r\n return node && /^(TD|TH)$/i.test(typeof node === 'string' ? node : node.nodeName);\r\n },\r\n\r\n /**\r\n * @description Check the node is a break node (BR)\r\n * @param {Node|String} node The element or element name to check\r\n * @returns {Boolean}\r\n */\r\n isBreak: function (node) {\r\n return node && /^BR$/i.test(typeof node === 'string' ? node : node.nodeName);\r\n },\r\n\r\n\r\n /**\r\n * @description Check the node is a anchor node (A)\r\n * @param {Node|String} node The element or element name to check\r\n * @returns {Boolean}\r\n */\r\n isAnchor: function (node) {\r\n return node && /^A$/i.test(typeof node === 'string' ? node : node.nodeName);\r\n },\r\n\r\n /**\r\n * @description Check the node is a media node (img, iframe, audio, video, canvas)\r\n * @param {Node|String} node The element or element name to check\r\n * @returns {Boolean}\r\n */\r\n isMedia: function (node) {\r\n return node && /^(IMG|IFRAME|AUDIO|VIDEO|CANVAS)$/i.test(typeof node === 'string' ? node : node.nodeName);\r\n },\r\n\r\n /**\r\n * @description Check the node is a figure tag or util.isMedia()\r\n * @param {Node|String} node The element or element name to check\r\n * @returns {Boolean}\r\n */\r\n isFigures: function (node) {\r\n return node && (this.isMedia(node) || /^(FIGURE)$/i.test(typeof node === 'string' ? node : node.nodeName));\r\n },\r\n\r\n /**\r\n * @description Checks for numeric (with decimal point).\r\n * @param {String|Number} text Text string or number\r\n * @returns {Boolean}\r\n */\r\n isNumber: function (text) {\r\n return !!text && /^-?\\d+(\\.\\d+)?$/.test(text + '');\r\n },\r\n\r\n /**\r\n * @description Get a number.\r\n * @param {String|Number} text Text string or number\r\n * @param {Number} maxDec Maximum number of decimal places (-1 : Infinity)\r\n * @returns {Number}\r\n */\r\n getNumber: function (text, maxDec) {\r\n if (!text) return 0;\r\n \r\n let number = (text + '').match(/-?\\d+(\\.\\d+)?/);\r\n if (!number || !number[0]) return 0;\r\n\r\n number = number[0];\r\n return maxDec < 0 ? number * 1 : maxDec === 0 ? this._w.Math.round(number * 1) : (number * 1).toFixed(maxDec) * 1;\r\n },\r\n\r\n /**\r\n * @description Get all \"children\" of the argument value element (Without text nodes)\r\n * @param {Element} element element to get child node\r\n * @param {Function|null} validation Conditional function\r\n * @returns {Array}\r\n */\r\n getListChildren: function (element, validation) {\r\n const children = [];\r\n if (!element || !element.children || element.children.length === 0) return children;\r\n\r\n validation = validation || function () { return true; };\r\n\r\n (function recursionFunc(current) {\r\n if (element !== current && validation(current)) {\r\n children.push(current);\r\n }\r\n\r\n if (!!current.children) {\r\n for (let i = 0, len = current.children.length; i < len; i++) {\r\n recursionFunc(current.children[i]);\r\n }\r\n }\r\n })(element);\r\n\r\n return children;\r\n },\r\n\r\n /**\r\n * @description Get all \"childNodes\" of the argument value element (Include text nodes)\r\n * @param {Node} element element to get child node\r\n * @param {Function|null} validation Conditional function\r\n * @returns {Array}\r\n */\r\n getListChildNodes: function (element, validation) {\r\n const children = [];\r\n if (!element || element.childNodes.length === 0) return children;\r\n\r\n validation = validation || function () { return true; };\r\n\r\n (function recursionFunc(current) {\r\n if (element !== current && validation(current)) {\r\n children.push(current);\r\n }\r\n\r\n for (let i = 0, len = current.childNodes.length; i < len; i++) {\r\n recursionFunc(current.childNodes[i]);\r\n }\r\n })(element);\r\n\r\n return children;\r\n },\r\n\r\n /**\r\n * @description Returns the number of parents nodes.\r\n * \"0\" when the parent node is the WYSIWYG area.\r\n * \"-1\" when the element argument is the WYSIWYG area.\r\n * @param {Node} element The element to check\r\n * @returns {Number}\r\n */\r\n getElementDepth: function (element) {\r\n if (!element || this.isWysiwygDiv(element)) return -1;\r\n\r\n let depth = 0;\r\n element = element.parentNode;\r\n\r\n while (element && !this.isWysiwygDiv(element)) {\r\n depth += 1;\r\n element = element.parentNode;\r\n }\r\n\r\n return depth;\r\n },\r\n\r\n /**\r\n * @description Compares two elements to find a common ancestor, and returns the order of the two elements.\r\n * @param {Node} a Node to compare.\r\n * @param {Node} b Node to compare.\r\n * @returns {Object} { ancesstor, a, b, result: (a > b ? 1 : a < b ? -1 : 0) };\r\n */\r\n compareElements: function (a, b) {\r\n let aNode = a, bNode = b;\r\n while (aNode && bNode && aNode.parentNode !== bNode.parentNode) {\r\n aNode = aNode.parentNode;\r\n bNode = bNode.parentNode;\r\n }\r\n\r\n if (!aNode || !bNode) return { ancestor: null, a: a, b: b, result: 0 };\r\n\r\n const children = aNode.parentNode.childNodes;\r\n const aIndex = this.getArrayIndex(children, aNode);\r\n const bIndex = this.getArrayIndex(children, bNode);\r\n\r\n return {\r\n ancestor: aNode.parentNode,\r\n a: aNode,\r\n b: bNode,\r\n result: aIndex > bIndex ? 1 : aIndex < bIndex ? -1 : 0\r\n };\r\n },\r\n\r\n /**\r\n * @description Get the parent element of the argument value.\r\n * A tag that satisfies the query condition is imported.\r\n * Returns null if not found.\r\n * @param {Node} element Reference element\r\n * @param {String|Function} query Query String (nodeName, .className, #ID, :name) or validation function.\r\n * Not use it like jquery.\r\n * Only one condition can be entered at a time.\r\n * @returns {Element|null}\r\n */\r\n getParentElement: function (element, query) {\r\n let check;\r\n\r\n if (typeof query === 'function') {\r\n check = query;\r\n } else {\r\n let attr;\r\n if (/^\\./.test(query)) {\r\n attr = 'className';\r\n query = query.split('.')[1];\r\n } else if (/^#/.test(query)) {\r\n attr = 'id';\r\n query = '^' + query.split('#')[1] + '$';\r\n } else if (/^:/.test(query)) {\r\n attr = 'name';\r\n query = '^' + query.split(':')[1] + '$';\r\n } else {\r\n attr = 'nodeName';\r\n query = '^' + query + '$';\r\n }\r\n\r\n const regExp = new this._w.RegExp(query, 'i');\r\n check = function (el) {\r\n return regExp.test(el[attr]);\r\n };\r\n }\r\n\r\n while (element && !check(element)) {\r\n if (this.isWysiwygDiv(element)) {\r\n return null;\r\n }\r\n element = element.parentNode;\r\n }\r\n\r\n return element;\r\n },\r\n\r\n /**\r\n * @description Get the child element of the argument value.\r\n * A tag that satisfies the query condition is imported.\r\n * Returns null if not found.\r\n * @param {Node} element Reference element\r\n * @param {String|Function} query Query String (nodeName, .className, #ID, :name) or validation function.\r\n * @param {Boolean} last If true returns the last node among the found child nodes. (default: first node)\r\n * Not use it like jquery.\r\n * Only one condition can be entered at a time.\r\n * @returns {Element|null}\r\n */\r\n getChildElement: function (element, query, last) {\r\n let check;\r\n\r\n if (typeof query === 'function') {\r\n check = query;\r\n } else {\r\n let attr;\r\n if (/^\\./.test(query)) {\r\n attr = 'className';\r\n query = query.split('.')[1];\r\n } else if (/^#/.test(query)) {\r\n attr = 'id';\r\n query = '^' + query.split('#')[1] + '$';\r\n } else if (/^:/.test(query)) {\r\n attr = 'name';\r\n query = '^' + query.split(':')[1] + '$';\r\n } else {\r\n attr = 'nodeName';\r\n query = '^' + (query === 'text' ? '#' + query : query) + '$';\r\n }\r\n\r\n const regExp = new this._w.RegExp(query, 'i');\r\n check = function (el) {\r\n return regExp.test(el[attr]);\r\n };\r\n }\r\n\r\n const childList = this.getListChildNodes(element, function (current) {\r\n return check(current);\r\n });\r\n\r\n return childList[last ? childList.length - 1 : 0];\r\n },\r\n\r\n /**\r\n * @description 1. The first node of all the child nodes of the \"first\" element is returned.\r\n * 2. The last node of all the child nodes of the \"last\" element is returned.\r\n * 3. When there is no \"last\" element, the first and last nodes of all the children of the \"first\" element are returned.\r\n * { sc: \"first\", ec: \"last\" }\r\n * @param {Node} first First element\r\n * @param {Node|null} last Last element\r\n * @returns {Object}\r\n */\r\n getEdgeChildNodes: function (first, last) {\r\n if (!first) return;\r\n if (!last) last = first;\r\n\r\n while (first && first.nodeType === 1 && first.childNodes.length > 0 && !this.isBreak(first)) first = first.firstChild;\r\n while (last && last.nodeType === 1 && last.childNodes.length > 0 && !this.isBreak(last)) last = last.lastChild;\r\n\r\n return {\r\n sc: first,\r\n ec: last || first\r\n };\r\n },\r\n\r\n /**\r\n * @description Returns the position of the left and top of argument. {left:0, top:0}\r\n * @param {Node} element Target node\r\n * @param {Element|null} wysiwygFrame When use iframe option, iframe object should be sent (context.element.wysiwygFrame)\r\n * @returns {Object}\r\n */\r\n getOffset: function (element, wysiwygFrame) {\r\n let offsetLeft = 0;\r\n let offsetTop = 0;\r\n let offsetElement = element.nodeType === 3 ? element.parentElement : element;\r\n const wysiwyg = this.getParentElement(element, this.isWysiwygDiv.bind(this));\r\n\r\n while (offsetElement && !this.hasClass(offsetElement, 'se-container') && offsetElement !== wysiwyg) {\r\n offsetLeft += offsetElement.offsetLeft;\r\n offsetTop += offsetElement.offsetTop;\r\n offsetElement = offsetElement.offsetParent;\r\n }\r\n\r\n const iframe = wysiwygFrame && /iframe/i.test(wysiwygFrame.nodeName);\r\n\r\n return {\r\n left: offsetLeft + (iframe ? wysiwygFrame.parentElement.offsetLeft : 0),\r\n top: (offsetTop - (wysiwyg ? wysiwyg.scrollTop : 0)) + (iframe ? wysiwygFrame.parentElement.offsetTop : 0)\r\n };\r\n },\r\n\r\n /**\r\n * @description It compares the start and end indexes of \"a\" and \"b\" and returns the number of overlapping indexes in the range.\r\n * ex) 1, 5, 4, 6 => \"2\" (4 ~ 5)\r\n * @param {Number} aStart Start index of \"a\"\r\n * @param {Number} aEnd End index of \"a\"\r\n * @param {Number} bStart Start index of \"b\"\r\n * @param {Number} bEnd Start index of \"b\"\r\n * @returns {Number}\r\n */\r\n getOverlapRangeAtIndex: function (aStart, aEnd, bStart, bEnd) {\r\n if (aStart <= bEnd ? aEnd < bStart : aEnd > bStart) return 0;\r\n\r\n const overlap = (aStart > bStart ? aStart : bStart) - (aEnd < bEnd ? aEnd : bEnd);\r\n return (overlap < 0 ? overlap * -1 : overlap) + 1;\r\n },\r\n\r\n /**\r\n * @description Set the text content value of the argument value element\r\n * @param {Node} element Element to replace text content\r\n * @param {String} txt Text to be applied\r\n */\r\n changeTxt: function (element, txt) {\r\n if (!element || !txt) return;\r\n element.textContent = txt;\r\n },\r\n\r\n /**\r\n * @description Replace element\r\n * @param {Element} element Target element\r\n * @param {String|Element} newElement String or element of the new element to apply\r\n */\r\n changeElement: function (element, newElement) {\r\n if (typeof newElement === 'string') {\r\n if (element.outerHTML) {\r\n element.outerHTML = newElement;\r\n } else {\r\n const doc = this.createElement('DIV');\r\n doc.innerHTML = newElement;\r\n newElement = doc.firstChild;\r\n element.parentNode.replaceChild(newElement, element);\r\n }\r\n } else if (newElement.nodeType === 1) {\r\n element.parentNode.replaceChild(newElement, element);\r\n }\r\n },\r\n\r\n /**\r\n * @description Set style, if all styles are deleted, the style properties are deleted.\r\n * @param {Element} element Element to set style\r\n * @param {String} styleName Style attribute name (marginLeft, textAlign...)\r\n * @param {String|Number} value Style value\r\n */\r\n setStyle: function (element, styleName, value) {\r\n element.style[styleName] = value;\r\n\r\n if (!value && !element.style.cssText) {\r\n element.removeAttribute('style');\r\n }\r\n },\r\n\r\n /**\r\n * @description Determine whether any of the matched elements are assigned the given class\r\n * @param {Element} element Elements to search class name\r\n * @param {String} className Class name to search for\r\n * @returns {Boolean}\r\n */\r\n hasClass: function (element, className) {\r\n if (!element) return;\r\n\r\n return (new this._w.RegExp(className)).test(element.className);\r\n },\r\n\r\n /**\r\n * @description Append the className value of the argument value element\r\n * @param {Element} element Elements to add class name\r\n * @param {String} className Class name to be add\r\n */\r\n addClass: function (element, className) {\r\n if (!element) return;\r\n\r\n const check = new this._w.RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\r\n if (check.test(element.className)) return;\r\n\r\n element.className += (element.className.length > 0 ? ' ' : '') + className;\r\n },\r\n\r\n /**\r\n * @description Delete the className value of the argument value element\r\n * @param {Element} element Elements to remove class name\r\n * @param {String} className Class name to be remove\r\n */\r\n removeClass: function (element, className) {\r\n if (!element) return;\r\n\r\n const check = new this._w.RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\r\n element.className = element.className.replace(check, ' ').trim();\r\n\r\n if (!element.className.trim()) element.removeAttribute('class');\r\n },\r\n\r\n /**\r\n * @description Argument value If there is no class name, insert it and delete the class name if it exists\r\n * @param {Element} element Elements to replace class name\r\n * @param {String} className Class name to be change\r\n * @returns {Boolean|undefined}\r\n */\r\n toggleClass: function (element, className) {\r\n if (!element) return;\r\n let result = false;\r\n\r\n const check = new this._w.RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\r\n if (check.test(element.className)) {\r\n element.className = element.className.replace(check, ' ').trim();\r\n } else {\r\n element.className += ' ' + className;\r\n result = true;\r\n }\r\n\r\n if (!element.className.trim()) element.removeAttribute('class');\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * @description Checks if element can't be easily enabled\r\n * @param {Element} element Element to check for\r\n */\r\n isImportantDisabled: function (element) {\r\n return element.hasAttribute('data-important-disabled');\r\n },\r\n\r\n /**\r\n * @description In the predefined code view mode, the buttons except the executable button are changed to the 'disabled' state.\r\n * core.codeViewDisabledButtons (An array of buttons whose class name is not \"se-code-view-enabled\")\r\n * core.resizingDisabledButtons (An array of buttons whose class name is not \"se-resizing-enabled\")\r\n * @param {Boolean} disabled Disabled value\r\n * @param {Array|HTMLCollection|NodeList} buttonList Button array\r\n * @param {Boolean} important If priveleged mode should be used (Necessary to switch importantDisabled buttons)\r\n */\r\n setDisabledButtons: function (disabled, buttonList, important) {\r\n for (let i = 0, len = buttonList.length; i < len; i++) {\r\n let button = buttonList[i];\r\n if (important || !this.isImportantDisabled(button)) button.disabled = disabled;\r\n if (important) {\r\n if (disabled) { \r\n button.setAttribute('data-important-disabled', '');\r\n } else {\r\n button.removeAttribute('data-important-disabled');\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * @description Delete argumenu value element\r\n * @param {Node} item Node to be remove\r\n */\r\n removeItem: function (item) {\r\n if (!item) return;\r\n\r\n if(typeof item.remove === 'function') item.remove();\r\n else if (item.parentNode) item.parentNode.removeChild(item);\r\n },\r\n\r\n /**\r\n * @description Delete all parent nodes that match the condition.\r\n * Returns an {sc: previousSibling, ec: nextSibling}(the deleted node reference) or null.\r\n * @param {Node} item Node to be remove\r\n * @param {Function|null} validation Validation function. default(Deleted if it only have breakLine and blanks)\r\n * @param {Element|null} stopParent Stop when the parent node reaches stopParent\r\n * @returns {Object|null} {sc: previousSibling, ec: nextSibling}\r\n */\r\n removeItemAllParents: function (item, validation, stopParent) {\r\n if (!item) return null;\r\n let cc = null;\r\n if (!validation) {\r\n validation = function (current) {\r\n if (current === stopParent || this.isComponent(current)) return false;\r\n const text = current.textContent.trim();\r\n return text.length === 0 || /^(\\n|\\u200B)+$/.test(text);\r\n }.bind(this);\r\n }\r\n\r\n (function recursionFunc (element) {\r\n if (!util.isWysiwygDiv(element)) {\r\n const parent = element.parentNode;\r\n if (parent && validation(element)) {\r\n cc = {\r\n sc: element.previousElementSibling,\r\n ec: element.nextElementSibling\r\n };\r\n util.removeItem(element);\r\n recursionFunc(parent);\r\n }\r\n }\r\n }(item));\r\n\r\n return cc;\r\n },\r\n\r\n /**\r\n * @description Detach Nested all nested lists under the \"baseNode\".\r\n * Returns a list with nested removed.\r\n * @param {Node} baseNode Element on which to base.\r\n * @param {Boolean} all If true, it also detach all nested lists of a returned list.\r\n * @returns {Element}\r\n */\r\n detachNestedList: function (baseNode, all) {\r\n const rNode = this._deleteNestedList(baseNode);\r\n let rangeElement, cNodes;\r\n\r\n if (rNode) {\r\n rangeElement = rNode.cloneNode(false);\r\n cNodes = rNode.childNodes;\r\n const index = this.getPositionIndex(baseNode);\r\n while (cNodes[index]) {\r\n rangeElement.appendChild(cNodes[index]);\r\n }\r\n } else {\r\n rangeElement = baseNode;\r\n }\r\n \r\n let rChildren;\r\n if (!all) {\r\n const depth = this.getElementDepth(baseNode) + 2;\r\n rChildren = this.getListChildren(baseNode, function (current) { return this.isListCell(current) && !current.previousElementSibling && this.getElementDepth(current) === depth; }.bind(this));\r\n } else {\r\n rChildren = this.getListChildren(rangeElement, function (current) { return this.isListCell(current) && !current.previousElementSibling; }.bind(this));\r\n }\r\n\r\n for (let i = 0, len = rChildren.length; i < len; i++) {\r\n this._deleteNestedList(rChildren[i]);\r\n }\r\n \r\n if (rNode) {\r\n rNode.parentNode.insertBefore(rangeElement, rNode.nextSibling);\r\n if (cNodes && cNodes.length === 0) this.removeItem(rNode);\r\n }\r\n\r\n return rangeElement === baseNode ? rangeElement.parentNode : rangeElement;\r\n },\r\n\r\n /**\r\n * @description Sub function of util.detachNestedList method.\r\n * @private\r\n */\r\n _deleteNestedList: function (baseNode) {\r\n const baseParent = baseNode.parentNode;\r\n let sibling = baseParent;\r\n let parent = sibling.parentNode;\r\n let liSibling, liParent, child, index, c;\r\n \r\n while (this.isListCell(parent)) {\r\n index = this.getPositionIndex(baseNode);\r\n liSibling = parent.nextElementSibling;\r\n liParent = parent.parentNode;\r\n child = sibling;\r\n while(child) {\r\n sibling = sibling.nextSibling;\r\n if (this.isList(child)) {\r\n c = child.childNodes;\r\n while (c[index]) {\r\n liParent.insertBefore(c[index], liSibling);\r\n }\r\n if (c.length === 0) this.removeItem(child);\r\n } else {\r\n liParent.appendChild(child);\r\n }\r\n child = sibling;\r\n }\r\n sibling = liParent;\r\n parent = liParent.parentNode;\r\n }\r\n\r\n if (baseParent.children.length === 0) this.removeItem(baseParent);\r\n\r\n return liParent;\r\n },\r\n\r\n /**\r\n * @description Split all tags based on \"baseNode\"\r\n * Returns the last element of the splited tag.\r\n * @param {Node} baseNode Element or text node on which to base\r\n * @param {Number|Node|null} offset Text offset of \"baseNode\" (Only valid when \"baseNode\" is a text node)\r\n * @param {Number} depth The nesting depth of the element being split. (default: 0)\r\n * @returns {Element}\r\n */\r\n splitElement: function (baseNode, offset, depth) {\r\n if (this.isWysiwygDiv(baseNode)) return baseNode;\r\n\r\n if (offset && !this.isNumber(offset)) {\r\n const children = baseNode.childNodes;\r\n let index = this.getPositionIndex(offset);\r\n const prev = baseNode.cloneNode(false);\r\n const next = baseNode.cloneNode(false);\r\n for (let i = 0, len = children.length; i < len; i++) {\r\n if (i < index) prev.appendChild(children[i]);\r\n else if (i > index) next.appendChild(children[i]);\r\n else continue;\r\n i--;\r\n len--;\r\n index--;\r\n }\r\n\r\n if (prev.childNodes.length > 0) baseNode.parentNode.insertBefore(prev, baseNode);\r\n if (next.childNodes.length > 0) baseNode.parentNode.insertBefore(next, baseNode.nextElementSibling);\r\n\r\n return baseNode;\r\n }\r\n\r\n const bp = baseNode.parentNode;\r\n let index = 0;\r\n let suffixIndex = 1;\r\n let next = true;\r\n let newEl, children, temp;\r\n if (!depth || depth < 0) depth = 0;\r\n\r\n if (baseNode.nodeType === 3) {\r\n index = this.getPositionIndex(baseNode);\r\n if (offset >= 0 && baseNode.length !== offset) {\r\n baseNode.splitText(offset);\r\n const after = this.getNodeFromPath([index + 1], bp);\r\n if (this.onlyZeroWidthSpace(after)) after.data = this.zeroWidthSpace;\r\n }\r\n } else if (baseNode.nodeType === 1) {\r\n if (offset === 0) {\r\n while (baseNode.firstChild) {\r\n baseNode = baseNode.firstChild;\r\n }\r\n if (baseNode.nodeType === 3) {\r\n const after = this.createTextNode(this.zeroWidthSpace);\r\n baseNode.parentNode.insertBefore(after, baseNode);\r\n baseNode = after;\r\n }\r\n }\r\n if (!baseNode.previousSibling) {\r\n if (this.getElementDepth(baseNode) === depth) next = false;\r\n } else {\r\n baseNode = baseNode.previousSibling;\r\n }\r\n }\r\n\r\n if (baseNode.nodeType === 1) suffixIndex = 0;\r\n let depthEl = baseNode;\r\n while (this.getElementDepth(depthEl) > depth) {\r\n index = this.getPositionIndex(depthEl) + suffixIndex;\r\n depthEl = depthEl.parentNode;\r\n\r\n temp = newEl;\r\n newEl = depthEl.cloneNode(false);\r\n children = depthEl.childNodes;\r\n\r\n if (temp) {\r\n if (this.isListCell(newEl) && this.isList(temp) && temp.firstElementChild) {\r\n newEl.innerHTML = temp.firstElementChild.innerHTML;\r\n util.removeItem(temp.firstElementChild);\r\n if (temp.children.length > 0) newEl.appendChild(temp);\r\n } else {\r\n newEl.appendChild(temp);\r\n }\r\n }\r\n\r\n while (children[index]) {\r\n newEl.appendChild(children[index]);\r\n }\r\n }\r\n\r\n if (depthEl.childNodes.length <= 1 && (!depthEl.firstChild || depthEl.firstChild.textContent.length === 0)) depthEl.innerHTML = '<br>';\r\n\r\n const pElement = depthEl.parentNode;\r\n if (next) depthEl = depthEl.nextSibling;\r\n if (!newEl) return depthEl;\r\n\r\n this.mergeSameTags(newEl, null, false);\r\n this.mergeNestedTags(newEl, function (current) { return this.isList(current); }.bind(this));\r\n \r\n if (newEl.childNodes.length > 0) pElement.insertBefore(newEl, depthEl);\r\n else newEl = depthEl;\r\n\r\n if (this.isListCell(newEl) && newEl.children && this.isList(newEl.children[0])) {\r\n newEl.insertBefore(this.createElement('BR'), newEl.children[0]);\r\n }\r\n\r\n if (bp.childNodes.length === 0) this.removeItem(bp);\r\n\r\n return newEl;\r\n },\r\n\r\n /**\r\n * @description Use with \"npdePath (util.getNodePath)\" to merge the same attributes and tags if they are present and modify the nodepath.\r\n * If \"offset\" has been changed, it will return as much \"offset\" as it has been modified.\r\n * An array containing change offsets is returned in the order of the \"nodePathArray\" array.\r\n * @param {Element} element Element\r\n * @param {Array|null} nodePathArray Array of NodePath object ([util.getNodePath(), ..])\r\n * @param {Boolean} onlyText If true, non-text nodes(!util._isIgnoreNodeChange) like 'span', 'strong'.. are ignored.\r\n * @returns {Array} [offset, ..]\r\n */\r\n mergeSameTags: function (element, nodePathArray, onlyText) {\r\n const inst = this;\r\n const nodePathLen = nodePathArray ? nodePathArray.length : 0;\r\n let offsets = null;\r\n \r\n if (nodePathLen) {\r\n offsets = this._w.Array.apply(null, new this._w.Array(nodePathLen)).map(this._w.Number.prototype.valueOf, 0);\r\n }\r\n\r\n (function recursionFunc(current, depth, depthIndex) {\r\n const children = current.childNodes;\r\n \r\n for (let i = 0, len = children.length, child, next; i < len; i++) {\r\n child = children[i];\r\n next = children[i + 1];\r\n if (!child) break;\r\n if((onlyText && inst._isIgnoreNodeChange(child)) || (!onlyText && (inst.isTable(child) || inst.isListCell(child) || (inst.isFormatElement(child) && !inst.isFreeFormatElement(child))))) {\r\n if (inst.isTable(child) || inst.isListCell(child)) {\r\n recursionFunc(child, depth + 1, i);\r\n }\r\n continue;\r\n }\r\n if (len === 1 && current.nodeName === child.nodeName && current.parentNode) {\r\n // update nodePath\r\n if (nodePathLen) {\r\n let path, c, p, cDepth, spliceDepth;\r\n for (let n = 0; n < nodePathLen; n++) {\r\n path = nodePathArray[n];\r\n if (path && path[depth] === i) {\r\n c = child, p = current, cDepth = depth, spliceDepth = true;\r\n while (cDepth >= 0) {\r\n if (inst.getArrayIndex(p.childNodes, c) !== path[cDepth]) {\r\n spliceDepth = false;\r\n break;\r\n }\r\n c = child.parentNode;\r\n p = c.parentNode;\r\n cDepth--;\r\n }\r\n if (spliceDepth) {\r\n path.splice(depth, 1);\r\n path[depth] = i;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // merge tag\r\n inst.copyTagAttributes(child, current);\r\n current.parentNode.insertBefore(child, current);\r\n inst.removeItem(current);\r\n }\r\n if (!next) {\r\n if (child.nodeType === 1) recursionFunc(child, depth + 1, i);\r\n break;\r\n }\r\n\r\n if (child.nodeName === next.nodeName && inst.isSameAttributes(child, next) && child.href === next.href) {\r\n const childs = child.childNodes;\r\n let childLength = 0;\r\n for (let n = 0, nLen = childs.length; n < nLen; n++) {\r\n if (childs[n].textContent.length > 0) childLength++;\r\n }\r\n\r\n const l = child.lastChild;\r\n const r = next.firstChild;\r\n let addOffset = 0;\r\n if (l && r) {\r\n const textOffset = l.nodeType === 3 && r.nodeType === 3;\r\n addOffset = l.textContent.length;\r\n let tempL = l.previousSibling;\r\n while(tempL && tempL.nodeType === 3) {\r\n addOffset += tempL.textContent.length;\r\n tempL = tempL.previousSibling;\r\n }\r\n\r\n if (childLength > 0 && l.nodeType === 3 && r.nodeType === 3 && (l.textContent.length > 0 || r.textContent.length > 0)) childLength--;\r\n\r\n if (nodePathLen) {\r\n let path = null;\r\n for (let n = 0; n < nodePathLen; n++) {\r\n path = nodePathArray[n];\r\n if (path && path[depth] > i) {\r\n if (depth > 0 && path[depth - 1] !== depthIndex) continue;\r\n \r\n path[depth] -= 1;\r\n if (path[depth + 1] >= 0 && path[depth] === i) {\r\n path[depth + 1] += childLength;\r\n if (textOffset) {\r\n if (l && l.nodeType === 3 && r && r.nodeType === 3) {\r\n offsets[n] += addOffset;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (child.nodeType === 3) {\r\n addOffset = child.textContent.length;\r\n child.textContent += next.textContent;\r\n if (nodePathLen) {\r\n let path = null;\r\n for (let n = 0; n < nodePathLen; n++) {\r\n path = nodePathArray[n];\r\n if (path && path[depth] > i) {\r\n if (depth > 0 && path[depth - 1] !== depthIndex) continue;\r\n \r\n path[depth] -= 1;\r\n if (path[depth + 1] >= 0 && path[depth] === i) {\r\n path[depth + 1] += childLength;\r\n offsets[n] += addOffset;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n child.innerHTML += next.innerHTML;\r\n }\r\n \r\n inst.removeItem(next);\r\n i--;\r\n } else if (child.nodeType === 1) {\r\n recursionFunc(child, depth + 1, i);\r\n }\r\n }\r\n })(element, 0, 0);\r\n\r\n return offsets;\r\n },\r\n\r\n /**\r\n * @description Remove nested tags without other child nodes.\r\n * @param {Element} element Element object\r\n * @param {Function|String|null} validation Validation function / String(\"tag1|tag2..\") / If null, all tags are applicable.\r\n */\r\n mergeNestedTags: function (element, validation) {\r\n if (typeof validation === 'string') {\r\n validation = function (current) { return this.test(current.tagName); }.bind(new this._w.RegExp('^(' + (validation ? validation : '.+') + ')$', 'i'));\r\n } else if (typeof validation !== 'function') {\r\n validation = function () { return true; };\r\n }\r\n \r\n (function recursionFunc(current) {\r\n let children = current.children;\r\n if (children.length === 1 && children[0].nodeName === current.nodeName && validation(current)) {\r\n const temp = children[0];\r\n children = temp.children;\r\n while (children[0]) {\r\n current.appendChild(children[0]);\r\n }\r\n current.removeChild(temp);\r\n }\r\n\r\n for (let i = 0, len = current.children.length; i < len; i++) {\r\n recursionFunc(current.children[i]);\r\n }\r\n })(element);\r\n },\r\n\r\n /**\r\n * @description Delete a empty child node of argument element.\r\n * @param {Element} element Element node\r\n * @param {Node|null} notRemoveNode Do not remove node\r\n * @param {boolean} forceDelete When all child nodes are deleted, the parent node is also deleted.\r\n */\r\n removeEmptyNode: function (element, notRemoveNode, forceDelete) {\r\n const inst = this;\r\n\r\n if (notRemoveNode) {\r\n notRemoveNode = inst.getParentElement(notRemoveNode, function (current) {\r\n return element === current.parentElement;\r\n });\r\n }\r\n \r\n (function recursionFunc(current) {\r\n if (inst._notTextNode(current) || current === notRemoveNode || inst.isNonEditable(current)) return 0;\r\n if (current !== element && inst.onlyZeroWidthSpace(current.textContent) && (!current.firstChild || !inst.isBreak(current.firstChild)) && !current.querySelector(inst._allowedEmptyNodeList)) {\r\n if (current.parentNode) {\r\n current.parentNode.removeChild(current);\r\n return -1;\r\n }\r\n } else {\r\n const children = current.children;\r\n for (let i = 0, len = children.length, r = 0; i < len; i++) {\r\n if (!children[i + r] || inst.isComponent(children[i + r])) continue;\r\n r += recursionFunc(children[i + r]);\r\n }\r\n }\r\n\r\n return 0;\r\n })(element);\r\n\r\n if (element.childNodes.length === 0) {\r\n if (forceDelete) {\r\n this.removeItem(element);\r\n } else {\r\n element.innerHTML = '<br>';\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * @description Remove whitespace between tags in HTML string.\r\n * @param {String} html HTML string\r\n * @returns {String}\r\n */\r\n htmlRemoveWhiteSpace: function (html) {\r\n if (!html) return '';\r\n return html.trim().replace(/<\\/?(?!strong|span|font|b|var|i|em|u|ins|s|strike|del|sub|sup|mark|a|label|code|summary)[^>^<]+>\\s+(?=<)/ig, function (m) { return m.replace(/\\n/g, '').replace(/\\s+/, ' '); });\r\n },\r\n\r\n /**\r\n\t * @description HTML code compression\r\n\t * @param {string} html HTML string\r\n\t * @returns {string} HTML string\r\n\t */\r\n\thtmlCompress: function (html) {\r\n\t\treturn html.replace(/\\n/g, '').replace(/(>)(?:\\s+)(<)/g, '$1$2');\r\n\t},\r\n\r\n /**\r\n * @description Sort a element array by depth of element.\r\n * @param {Array} array Array object\r\n * @param {Boolean} des true: descending order / false: ascending order\r\n */\r\n sortByDepth: function (array, des) {\r\n const t = !des ? -1 : 1;\r\n const f = t * -1;\r\n\r\n array.sort(function (a, b) {\r\n if (!this.isListCell(a) || !this.isListCell(b)) return 0;\r\n a = this.getElementDepth(a);\r\n b = this.getElementDepth(b);\r\n return a > b ? t : a < b ? f : 0;\r\n }.bind(this));\r\n },\r\n\r\n _isExcludeSelectionElement: function (element) {\r\n return !/FIGCAPTION/i.test(element.nodeName) && (this.isComponent(element) || /FIGURE/i.test(element.nodeName));\r\n },\r\n\r\n /**\r\n * @description Nodes that need to be added without modification when changing text nodes\r\n * @param {Node} element Element to check\r\n * @returns {Boolean}\r\n * @private\r\n */\r\n _isIgnoreNodeChange: function (element) {\r\n return element && element.nodeType !== 3 && (this.isNonEditable(element) || !this.isTextStyleElement(element));\r\n },\r\n\r\n /**\r\n * @description Nodes that must remain undetached when changing text nodes (A, Label, Code, Span:font-size)\r\n * @param {Node|String} element Element to check\r\n * @returns {Boolean}\r\n * @private\r\n */\r\n _isMaintainedNode: function (element) {\r\n return element && element.nodeType !== 3 && /^(a|label|code|summary)$/i.test(typeof element === 'string' ? element : element.nodeName);\r\n },\r\n\r\n /**\r\n * @description Node with font-size style\r\n * @param {Node} element Element to check\r\n * @returns {Boolean}\r\n * @private\r\n */\r\n _isSizeNode: function (element) {\r\n return element && element.nodeType !== 3 && this.isTextStyleElement(element) && !!element.style.fontSize;\r\n },\r\n\r\n /**\r\n * @description Nodes without text\r\n * @param {Node} element Element to check\r\n * @returns {Boolean}\r\n * @private\r\n */\r\n _notTextNode: function (element) {\r\n return element && element.nodeType !== 3 && (this.isComponent(element) || /^(br|input|select|canvas|img|iframe|audio|video)$/i.test(typeof element === 'string' ? element : element.nodeName));\r\n },\r\n\r\n /**\r\n * @deprecated\r\n * @description Check disallowed tags\r\n * @param {Node} element Element to check\r\n * @returns {Boolean}\r\n * @private\r\n */\r\n _disallowedTags: function (element) {\r\n return /^(meta|script|link|style|[a-z]+\\:[a-z]+)$/i.test(element.nodeName);\r\n },\r\n\r\n /**\r\n * @description Create whitelist RegExp object.\r\n * Return RegExp format: new RegExp(\"<\\\\/?\\\\b(?!\" + list + \")\\\\b[^>^<]*+>\", \"gi\")\r\n * @param {String} list Tags list (\"br|p|div|pre...\")\r\n * @returns {RegExp}\r\n */\r\n createTagsWhitelist: function (list) {\r\n return new RegExp('<\\\\/?\\\\b(?!\\\\b' + (list || '').replace(/\\|/g, '\\\\b|\\\\b') + '\\\\b)[^>]*>', 'gi');\r\n },\r\n\r\n /**\r\n * @description Create blacklist RegExp object.\r\n * Return RegExp format: new RegExp(\"<\\\\/?\\\\b(?:\" + list + \")\\\\b[^>^<]*+>\", \"gi\")\r\n * @param {String} list Tags list (\"br|p|div|pre...\")\r\n * @returns {RegExp}\r\n */\r\n createTagsBlacklist: function (list) {\r\n return new RegExp('<\\\\/?\\\\b(?:\\\\b' + (list || '^').replace(/\\|/g, '\\\\b|\\\\b') + '\\\\b)[^>]*>', 'gi');\r\n },\r\n\r\n /**\r\n * @description Fix tags that do not fit the editor format.\r\n * @param {Element} documentFragment Document fragment \"DOCUMENT_FRAGMENT_NODE\" (nodeType === 11)\r\n * @param {RegExp} htmlCheckWhitelistRegExp Editor tags whitelist (core._htmlCheckWhitelistRegExp)\r\n * @param {RegExp} htmlCheckBlacklistRegExp Editor tags blacklist (core._htmlCheckBlacklistRegExp)\r\n * @param {Function} classNameFilter Class name filter function\r\n * @private\r\n */\r\n _consistencyCheckOfHTML: function (documentFragment, htmlCheckWhitelistRegExp, htmlCheckBlacklistRegExp, classNameFilter) {\r\n /**\r\n * It is can use \".children(util.getListChildren)\" to exclude text nodes, but \"documentFragment.children\" is not supported in IE.\r\n * So check the node type and exclude the text no (current.nodeType !== 1)\r\n */\r\n const removeTags = [], emptyTags = [], wrongList = [], withoutFormatCells = [];\r\n\r\n // wrong position\r\n const wrongTags = this.getListChildNodes(documentFragment, function (current) {\r\n if (current.nodeType !== 1) {\r\n if (this.isList(current.parentElement)) removeTags.push(current);\r\n return false;\r\n }\r\n\r\n // white list\r\n if (htmlCheckBlacklistRegExp.test(current.nodeName) || (!htmlCheckWhitelistRegExp.test(current.nodeName) && current.childNodes.length === 0 && this.isNotCheckingNode(current))) {\r\n removeTags.push(current);\r\n return false;\r\n }\r\n\r\n // empty tags\r\n const nrtag = !this.getParentElement(current, this.isNotCheckingNode);\r\n if ((!this.isTable(current) && !this.isListCell(current) && !this.isAnchor(current)) && (this.isFormatElement(current) || this.isRangeFormatElement(current) || this.isTextStyleElement(current)) && current.childNodes.length === 0 && nrtag) {\r\n emptyTags.push(current);\r\n return false;\r\n }\r\n\r\n // wrong list\r\n if (this.isList(current.parentNode) && !this.isList(current) && !this.isListCell(current)) {\r\n wrongList.push(current);\r\n return false;\r\n }\r\n\r\n // table cells\r\n if (this.isCell(current)) {\r\n const fel = current.firstElementChild;\r\n if (!this.isFormatElement(fel) && !this.isRangeFormatElement(fel) && !this.isComponent(fel)) {\r\n withoutFormatCells.push(current);\r\n return false;\r\n }\r\n }\r\n\r\n // class filter\r\n if (nrtag && current.className) {\r\n const className = new this._w.Array(current.classList).map(classNameFilter).join(' ').trim();\r\n if (className) current.className = className;\r\n else current.removeAttribute('class');\r\n }\r\n\r\n const result = current.parentNode !== documentFragment && nrtag &&\r\n ((this.isListCell(current) && !this.isList(current.parentNode)) ||\r\n ((this.isFormatElement(current) || this.isComponent(current)) && !this.isRangeFormatElement(current.parentNode) && !this.getParentElement(current, this.isComponent)));\r\n\r\n return result;\r\n }.bind(this));\r\n\r\n for (let i = 0, len = removeTags.length; i < len; i++) {\r\n this.removeItem(removeTags[i]);\r\n }\r\n \r\n const checkTags = [];\r\n for (let i = 0, len = wrongTags.length, t, p; i < len; i++) {\r\n t = wrongTags[i];\r\n p = t.parentNode;\r\n if (!p || !p.parentNode) continue;\r\n\r\n if (this.getParentElement(t, this.isListCell)) {\r\n const cellChildren = t.childNodes;\r\n for (let j = cellChildren.length - 1; len >= 0; j--) {\r\n p.insertBefore(t, cellChildren[j]);\r\n }\r\n checkTags.push(t);\r\n } else {\r\n p.parentNode.insertBefore(t, p);\r\n checkTags.push(p);\r\n }\r\n }\r\n\r\n for (let i = 0, len = checkTags.length, t; i < len; i++) {\r\n t = checkTags[i];\r\n if (this.onlyZeroWidthSpace(t.textContent.trim())) {\r\n this.removeItem(t);\r\n }\r\n }\r\n\r\n for (let i = 0, len = emptyTags.length; i < len; i++) {\r\n this.removeItem(emptyTags[i]);\r\n }\r\n\r\n for (let i = 0, len = wrongList.length, t, tp, children, p; i < len; i++) {\r\n t = wrongList[i];\r\n p = t.parentNode;\r\n if (!p) continue;\r\n\r\n tp = this.createElement('LI');\r\n\r\n if (this.isFormatElement(t)) {\r\n children = t.childNodes;\r\n while (children[0]) {\r\n tp.appendChild(children[0]);\r\n }\r\n p.insertBefore(tp, t);\r\n this.removeItem(t);\r\n } else {\r\n t = t.nextSibling;\r\n tp.appendChild(wrongList[i]);\r\n p.insertBefore(tp, t);\r\n }\r\n }\r\n\r\n for (let i = 0, len = withoutFormatCells.length, t, f; i < len; i++) {\r\n t = withoutFormatCells[i];\r\n f = this.createElement('DIV');\r\n f.innerHTML = (t.textContent.trim().length === 0 && t.children.length === 0) ? '<br>' : t.innerHTML;\r\n t.innerHTML = f.outerHTML;\r\n }\r\n },\r\n\r\n _setDefaultOptionStyle: function (options, defaultStyle) {\r\n let optionStyle = '';\r\n if (options.height) optionStyle += 'height:' + options.height + ';';\r\n if (options.minHeight) optionStyle += 'min-height:' + options.minHeight + ';';\r\n if (options.maxHeight) optionStyle += 'max-height:' + options.maxHeight + ';';\r\n if (options.position) optionStyle += 'position:' + options.position + ';';\r\n if (options.width) optionStyle += 'width:' + options.width + ';';\r\n if (options.minWidth) optionStyle += 'min-width:' + options.minWidth + ';';\r\n if (options.maxWidth) optionStyle += 'max-width:' + options.maxWidth + ';';\r\n\r\n let top = '', frame = '', editor = '';\r\n defaultStyle = optionStyle + defaultStyle;\r\n const styleArr = defaultStyle.split(';');\r\n for (let i = 0, len = styleArr.length, s; i < len; i++) {\r\n s = styleArr[i].trim();\r\n if (!s) continue;\r\n if (/^(min-|max-)?width\\s*:/.test(s) || /^(z-index|position)\\s*:/.test(s)) {\r\n top += s + ';';\r\n continue;\r\n }\r\n if (/^(min-|max-)?height\\s*:/.test(s)) {\r\n if (/^height/.test(s) && s.split(':')[1].trim() === 'auto') {\r\n options.height = 'auto';\r\n }\r\n frame += s + ';';\r\n continue;\r\n }\r\n editor += s + ';';\r\n }\r\n\r\n return {\r\n top: top,\r\n frame: frame,\r\n editor: editor\r\n };\r\n },\r\n\r\n _setIframeDocument: function (frame, options) {\r\n frame.setAttribute('scrolling', 'auto');\r\n frame.contentDocument.head.innerHTML = '' +\r\n '<meta charset=\"utf-8\" />' +\r\n '<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\">' +\r\n this._setIframeCssTags(options);\r\n frame.contentDocument.body.className = options._editableClass;\r\n frame.contentDocument.body.setAttribute('contenteditable', true);\r\n },\r\n\r\n _setIframeCssTags: function (options) {\r\n const linkNames = options.iframeCSSFileName;\r\n const wRegExp = this._w.RegExp;\r\n let tagString = '';\r\n\r\n for (let f = 0, len = linkNames.length, path; f < len; f++) {\r\n path = [];\r\n\r\n if (/(^https?:\\/\\/)|(^data:text\\/css,)/.test(linkNames[f])) {\r\n path.push(linkNames[f]);\r\n } else {\r\n const CSSFileName = new wRegExp('(^|.*[\\\\/])' + linkNames[f] + '(\\\\..+)?\\\\.css(?:\\\\?.*|;.*)?$', 'i');\r\n for (let c = document.getElementsByTagName('link'), i = 0, len = c.length, styleTag; i < len; i++) {\r\n styleTag = c[i].href.match(CSSFileName);\r\n if (styleTag) path.push(styleTag[0]);\r\n }\r\n }\r\n\r\n if (!path || path.length === 0) throw '[SUNEDITOR.constructor.iframe.fail] The suneditor CSS files installation path could not be automatically detected. Please set the option property \"iframeCSSFileName\" before creating editor instances.';\r\n\r\n for (let i = 0, len = path.length; i < len; i++) {\r\n tagString += '<link href=\"' + path[i] + '\" rel=\"stylesheet\">';\r\n }\r\n }\r\n\r\n return tagString + (options.height === 'auto' ? '<style>\\n/** Iframe height auto */\\nbody{height: min-content; overflow: hidden;}\\n</style>' : '');\r\n }\r\n};\r\n\r\nexport default util;","/*\r\n * wysiwyg web editor\r\n *\r\n * suneditor.js\r\n * Copyright 2017 JiHong Lee.\r\n * MIT license.\r\n */\r\n'use strict';\r\n\r\nimport _icons from '../assets/defaultIcons';\r\nimport _defaultLang from '../lang/en';\r\nimport util from './util';\r\n\r\nexport default {\r\n /**\r\n * @description document create\r\n * @param {Element} element Textarea\r\n * @param {Object} options Options\r\n * @returns {Object}\r\n */\r\n init: function (element, options) {\r\n if (typeof options !== 'object') options = {};\r\n\r\n const doc = document;\r\n\r\n /** --- init options --- */\r\n this._initOptions(element, options);\r\n \r\n // suneditor div\r\n const top_div = doc.createElement('DIV');\r\n top_div.className = 'sun-editor' + (options.rtl ? ' se-rtl' : '');\r\n if (element.id) top_div.id = 'suneditor_' + element.id;\r\n \r\n // relative div\r\n const relative = doc.createElement('DIV');\r\n relative.className = 'se-container';\r\n \r\n // toolbar\r\n const tool_bar = this._createToolBar(doc, options.buttonList, options.plugins, options);\r\n const toolbarShadow = tool_bar.element.cloneNode(false);\r\n toolbarShadow.className += ' se-toolbar-shadow';\r\n tool_bar.element.style.visibility = 'hidden';\r\n if (tool_bar.pluginCallButtons.math) this._checkKatexMath(options.katex);\r\n const arrow = doc.createElement('DIV');\r\n arrow.className = 'se-arrow';\r\n\r\n // sticky toolbar dummy\r\n const sticky_dummy = doc.createElement('DIV');\r\n sticky_dummy.className = 'se-toolbar-sticky-dummy';\r\n \r\n // inner editor div\r\n const editor_div = doc.createElement('DIV');\r\n editor_div.className = 'se-wrapper';\r\n\r\n /** --- init elements and create bottom bar --- */\r\n const initElements = this._initElements(options, top_div, tool_bar.element, arrow);\r\n\r\n const bottomBar = initElements.bottomBar;\r\n const wysiwyg_div = initElements.wysiwygFrame;\r\n const placeholder_span = initElements.placeholder;\r\n let textarea = initElements.codeView;\r\n\r\n // resizing bar\r\n const resizing_bar = bottomBar.resizingBar;\r\n const navigation = bottomBar.navigation;\r\n const char_wrapper = bottomBar.charWrapper;\r\n const char_counter = bottomBar.charCounter;\r\n \r\n // loading box\r\n const loading_box = doc.createElement('DIV');\r\n loading_box.className = 'se-loading-box sun-editor-common';\r\n loading_box.innerHTML = '<div class=\"se-loading-effect\"></div>';\r\n\r\n // enter line\r\n const line_breaker = doc.createElement('DIV');\r\n line_breaker.className = 'se-line-breaker';\r\n line_breaker.innerHTML = '<button class=\"se-btn\">' + options.icons.line_break + '</button>';\r\n const line_breaker_t = doc.createElement('DIV');\r\n line_breaker_t.className += 'se-line-breaker-component';\r\n const line_breaker_b = line_breaker_t.cloneNode(true);\r\n line_breaker_t.innerHTML = line_breaker_b.innerHTML = options.icons.line_break;\r\n \r\n // resize operation background\r\n const resize_back = doc.createElement('DIV');\r\n resize_back.className = 'se-resizing-back';\r\n\r\n // toolbar container\r\n const toolbarContainer = options.toolbarContainer;\r\n if (toolbarContainer) {\r\n toolbarContainer.appendChild(tool_bar.element);\r\n toolbarContainer.appendChild(toolbarShadow);\r\n }\r\n\r\n // resizingbar\r\n const resizingBarContainer = options.resizingBarContainer;\r\n if (resizing_bar && resizingBarContainer) resizingBarContainer.appendChild(resizing_bar);\r\n \r\n /** append html */\r\n editor_div.appendChild(textarea);\r\n if (placeholder_span) editor_div.appendChild(placeholder_span);\r\n if (!toolbarContainer) {\r\n relative.appendChild(tool_bar.element);\r\n relative.appendChild(toolbarShadow);\r\n }\r\n relative.appendChild(sticky_dummy);\r\n relative.appendChild(editor_div);\r\n relative.appendChild(resize_back);\r\n relative.appendChild(loading_box);\r\n relative.appendChild(line_breaker);\r\n relative.appendChild(line_breaker_t);\r\n relative.appendChild(line_breaker_b);\r\n if (resizing_bar && !resizingBarContainer) relative.appendChild(resizing_bar);\r\n top_div.appendChild(relative);\r\n\r\n textarea = this._checkCodeMirror(options, textarea);\r\n \r\n return {\r\n constructed: {\r\n _top: top_div,\r\n _relative: relative,\r\n _toolBar: tool_bar.element,\r\n _toolbarShadow: toolbarShadow,\r\n _menuTray: tool_bar._menuTray,\r\n _editorArea: editor_div,\r\n _wysiwygArea: wysiwyg_div,\r\n _codeArea: textarea,\r\n _placeholder: placeholder_span,\r\n _resizingBar: resizing_bar,\r\n _navigation: navigation,\r\n _charWrapper: char_wrapper,\r\n _charCounter: char_counter,\r\n _loading: loading_box,\r\n _lineBreaker: line_breaker,\r\n _lineBreaker_t: line_breaker_t,\r\n _lineBreaker_b: line_breaker_b,\r\n _resizeBack: resize_back,\r\n _stickyDummy: sticky_dummy,\r\n _arrow: arrow\r\n },\r\n options: options,\r\n plugins: tool_bar.plugins,\r\n pluginCallButtons: tool_bar.pluginCallButtons,\r\n _responsiveButtons: tool_bar.responsiveButtons\r\n };\r\n },\r\n\r\n /**\r\n * @description Check the CodeMirror option to apply the CodeMirror and return the CodeMirror element.\r\n * @param {Object} options options\r\n * @param {Element} textarea textarea element\r\n * @private\r\n */\r\n _checkCodeMirror: function (options, textarea) {\r\n if (options.codeMirror) {\r\n const cmOptions = [{\r\n mode: 'htmlmixed',\r\n htmlMode: true,\r\n lineNumbers: true,\r\n lineWrapping: true\r\n }, (options.codeMirror.options || {})].reduce(function (init, option) {\r\n for (let key in option) {\r\n if (util.hasOwn(option, key)) init[key] = option[key];\r\n }\r\n return init;\r\n }, {});\r\n\r\n if (options.height === 'auto') {\r\n cmOptions.viewportMargin = Infinity;\r\n cmOptions.height = 'auto';\r\n }\r\n \r\n const cm = options.codeMirror.src.fromTextArea(textarea, cmOptions);\r\n cm.display.wrapper.style.cssText = textarea.style.cssText;\r\n \r\n options.codeMirrorEditor = cm;\r\n textarea = cm.display.wrapper;\r\n textarea.className += ' se-wrapper-code-mirror';\r\n }\r\n\r\n return textarea;\r\n },\r\n\r\n /**\r\n * @description Check for a katex object.\r\n * @param {Object} katex katex object\r\n * @private\r\n */\r\n _checkKatexMath: function (katex) {\r\n if (!katex) throw Error('[SUNEDITOR.create.fail] To use the math button you need to add a \"katex\" object to the options.');\r\n\r\n const katexOptions = [{\r\n throwOnError: false,\r\n }, (katex.options || {})].reduce(function (init, option) {\r\n for (let key in option) {\r\n if (util.hasOwn(option, key)) init[key] = option[key];\r\n }\r\n return init;\r\n }, {});\r\n\r\n katex.options = katexOptions;\r\n },\r\n\r\n /**\r\n * @description Add or reset options\r\n * @param {Object} mergeOptions New options property\r\n * @param {Object} context Context object of core\r\n * @param {Object} originOptions Origin options\r\n * @returns {Object} pluginCallButtons\r\n * @private\r\n */\r\n _setOptions: function (mergeOptions, context, originOptions) {\r\n this._initOptions(context.element.originElement, mergeOptions);\r\n\r\n const el = context.element;\r\n const relative = el.relative;\r\n const editorArea = el.editorArea;\r\n const isNewToolbarContainer = mergeOptions.toolbarContainer && mergeOptions.toolbarContainer !== originOptions.toolbarContainer;\r\n const isNewToolbar = mergeOptions.lang !== originOptions.lang || mergeOptions.buttonList !== originOptions.buttonList || mergeOptions.mode !== originOptions.mode || isNewToolbarContainer;\r\n\r\n const tool_bar = this._createToolBar(document, (isNewToolbar ? mergeOptions.buttonList : originOptions.buttonList), mergeOptions.plugins, mergeOptions);\r\n if (tool_bar.pluginCallButtons.math) this._checkKatexMath(mergeOptions.katex);\r\n const arrow = document.createElement('DIV');\r\n arrow.className = 'se-arrow';\r\n\r\n if (isNewToolbar) {\r\n tool_bar.element.style.visibility = 'hidden';\r\n // toolbar container\r\n if (isNewToolbarContainer) {\r\n mergeOptions.toolbarContainer.appendChild(tool_bar.element);\r\n el.toolbar.parentElement.removeChild(el.toolbar);\r\n } else {\r\n el.toolbar.parentElement.replaceChild(tool_bar.element, el.toolbar);\r\n }\r\n\r\n el.toolbar = tool_bar.element;\r\n el._menuTray = tool_bar._menuTray;\r\n el._arrow = arrow;\r\n }\r\n \r\n const initElements = this._initElements(mergeOptions, el.topArea, (isNewToolbar ? tool_bar.element : el.toolbar), arrow);\r\n\r\n const bottomBar = initElements.bottomBar;\r\n const wysiwygFrame = initElements.wysiwygFrame;\r\n const placeholder_span = initElements.placeholder;\r\n let code = initElements.codeView;\r\n\r\n if (el.resizingBar) util.removeItem(el.resizingBar);\r\n if (bottomBar.resizingBar) {\r\n if (mergeOptions.resizingBarContainer && mergeOptions.resizingBarContainer !== originOptions.resizingBarContainer) {\r\n mergeOptions.resizingBarContainer.appendChild(bottomBar.resizingBar);\r\n } else {\r\n relative.appendChild(bottomBar.resizingBar);\r\n }\r\n }\r\n\r\n editorArea.innerHTML = '';\r\n editorArea.appendChild(code);\r\n if (placeholder_span) editorArea.appendChild(placeholder_span);\r\n\r\n code = this._checkCodeMirror(mergeOptions, code);\r\n \r\n el.resizingBar = bottomBar.resizingBar;\r\n el.navigation = bottomBar.navigation;\r\n el.charWrapper = bottomBar.charWrapper;\r\n el.charCounter = bottomBar.charCounter;\r\n el.wysiwygFrame = wysiwygFrame;\r\n el.code = code;\r\n el.placeholder = placeholder_span;\r\n\r\n if (mergeOptions.rtl) util.addClass(el.topArea, 'se-rtl');\r\n else util.removeClass(el.topArea, 'se-rtl');\r\n\r\n return {\r\n callButtons: tool_bar.pluginCallButtons,\r\n plugins: tool_bar.plugins,\r\n toolbar: tool_bar\r\n };\r\n },\r\n\r\n /**\r\n * @description Initialize property of suneditor elements\r\n * @param {Object} options Options\r\n * @param {Element} topDiv Suneditor top div\r\n * @param {Element} toolBar Tool bar\r\n * @param {Element} toolBarArrow Tool bar arrow (balloon editor)\r\n * @returns {Object} Bottom bar elements (resizingBar, navigation, charWrapper, charCounter)\r\n * @private\r\n */\r\n _initElements: function (options, topDiv, toolBar, toolBarArrow) {\r\n /** top div */\r\n topDiv.style.cssText = options._editorStyles.top;\r\n\r\n /** toolbar */\r\n if (/inline/i.test(options.mode)) {\r\n toolBar.className += ' se-toolbar-inline';\r\n toolBar.style.width = options.toolbarWidth;\r\n } else if (/balloon/i.test(options.mode)) {\r\n toolBar.className += ' se-toolbar-balloon';\r\n toolBar.style.width = options.toolbarWidth;\r\n toolBar.appendChild(toolBarArrow);\r\n }\r\n\r\n /** editor */\r\n // wysiwyg div or iframe\r\n const wysiwygDiv = document.createElement(!options.iframe ? 'DIV' : 'IFRAME');\r\n wysiwygDiv.className = 'se-wrapper-inner se-wrapper-wysiwyg';\r\n \r\n if (!options.iframe) {\r\n wysiwygDiv.setAttribute('contenteditable', true);\r\n wysiwygDiv.setAttribute('scrolling', 'auto');\r\n for (let key in options.iframeAttributes) {\r\n wysiwygDiv.setAttribute(key, options.iframeAttributes[key]);\r\n }\r\n wysiwygDiv.className += ' ' + options._editableClass;\r\n wysiwygDiv.style.cssText = options._editorStyles.frame + options._editorStyles.editor;\r\n wysiwygDiv.className += options.className;\r\n } else {\r\n wysiwygDiv.allowFullscreen = true;\r\n wysiwygDiv.frameBorder = 0;\r\n wysiwygDiv.style.cssText = options._editorStyles.frame;\r\n wysiwygDiv.className += options.className;\r\n }\r\n\r\n // textarea for code view\r\n const textarea = document.createElement('TEXTAREA');\r\n textarea.className = 'se-wrapper-inner se-wrapper-code' + options.className;\r\n textarea.style.cssText = options._editorStyles.frame;\r\n textarea.style.display = 'none';\r\n if (options.height === 'auto') textarea.style.overflow = 'hidden';\r\n\r\n /** resize bar */\r\n let resizingBar = null;\r\n let navigation = null;\r\n let charWrapper = null;\r\n let charCounter = null;\r\n if (options.resizingBar) {\r\n resizingBar = document.createElement('DIV');\r\n resizingBar.className = 'se-resizing-bar sun-editor-common';\r\n\r\n /** navigation */\r\n navigation = document.createElement('DIV');\r\n navigation.className = 'se-navigation sun-editor-common';\r\n resizingBar.appendChild(navigation);\r\n\r\n /** char counter */\r\n if (options.charCounter) {\r\n charWrapper = document.createElement('DIV');\r\n charWrapper.className = 'se-char-counter-wrapper';\r\n\r\n if (options.charCounterLabel) {\r\n const charLabel = document.createElement('SPAN');\r\n charLabel.className = 'se-char-label';\r\n charLabel.textContent = options.charCounterLabel;\r\n charWrapper.appendChild(charLabel);\r\n }\r\n \r\n charCounter = document.createElement('SPAN');\r\n charCounter.className = 'se-char-counter';\r\n charCounter.textContent = '0';\r\n charWrapper.appendChild(charCounter);\r\n \r\n if (options.maxCharCount > 0) {\r\n const char_max = document.createElement('SPAN');\r\n char_max.textContent = ' / ' + options.maxCharCount;\r\n charWrapper.appendChild(char_max);\r\n }\r\n\r\n resizingBar.appendChild(charWrapper);\r\n }\r\n }\r\n \r\n let placeholder = null;\r\n if (options.placeholder) {\r\n placeholder = document.createElement('SPAN');\r\n placeholder.className = 'se-placeholder';\r\n placeholder.innerText = options.placeholder;\r\n }\r\n\r\n return {\r\n bottomBar: {\r\n resizingBar: resizingBar,\r\n navigation: navigation,\r\n charWrapper: charWrapper,\r\n charCounter: charCounter\r\n },\r\n wysiwygFrame: wysiwygDiv,\r\n codeView: textarea,\r\n placeholder: placeholder\r\n };\r\n },\r\n\r\n /**\r\n * @description Initialize options\r\n * @param {Element} element Options object\r\n * @param {Object} options Options object\r\n * @private\r\n */\r\n _initOptions: function (element, options) {\r\n const plugins = {};\r\n if (options.plugins) {\r\n const _plugins = options.plugins;\r\n const pluginsValues = _plugins.length ? _plugins : Object.keys(_plugins).map(function(name) { return _plugins[name]; });\r\n for (let i = 0, len = pluginsValues.length, p; i < len; i++) {\r\n p = pluginsValues[i].default || pluginsValues[i];\r\n plugins[p.name] = p;\r\n }\r\n }\r\n options.plugins = plugins;\r\n /** Values */\r\n options.lang = options.lang || _defaultLang;\r\n options.value = typeof options.value === 'string' ? options.value : null;\r\n options.allowedClassNames = new util._w.RegExp((options.allowedClassNames && typeof options.allowedClassNames === 'string' ? options.allowedClassNames + '|' : '') + '^__se__|se-|katex');\r\n options.historyStackDelayTime = typeof options.historyStackDelayTime === 'number' ? options.historyStackDelayTime : 400;\r\n options.frameAttrbutes = options.frameAttrbutes || {};\r\n // tag style\r\n options.defaultTag = typeof options.defaultTag === 'string' && options.defaultTag.length > 0 ? options.defaultTag : 'p';\r\n const textTags = options.textTags = [{bold: 'STRONG', underline: 'U', italic: 'EM', strike: 'DEL', sub: 'SUB', sup: 'SUP'}, (options.textTags || {})].reduce(function (_default, _new) {\r\n for (let key in _new) {\r\n _default[key] = _new[key];\r\n }\r\n return _default;\r\n }, {});\r\n options._textTagsMap = {\r\n 'strong': textTags.bold.toLowerCase(),\r\n 'b': textTags.bold.toLowerCase(),\r\n 'u': textTags.underline.toLowerCase(),\r\n 'ins': textTags.underline.toLowerCase(),\r\n 'em': textTags.italic.toLowerCase(),\r\n 'i': textTags.italic.toLowerCase(),\r\n 'del': textTags.strike.toLowerCase(),\r\n 'strike': textTags.strike.toLowerCase(),\r\n 's': textTags.strike.toLowerCase(),\r\n 'sub': textTags.sub.toLowerCase(),\r\n 'sup': textTags.sup.toLowerCase()\r\n };\r\n options._defaultCommand = {\r\n bold: options.textTags.bold,\r\n underline: options.textTags.underline,\r\n italic: options.textTags.italic,\r\n strike: options.textTags.strike,\r\n subscript: options.textTags.sub,\r\n superscript: options.textTags.sup\r\n };\r\n /** Whitelist, Blacklist */\r\n options.__allowedScriptTag = options.__allowedScriptTag === true;\r\n const whitelist = 'br|p|div|pre|blockquote|h1|h2|h3|h4|h5|h6|ol|ul|li|hr|figure|figcaption|img|iframe|audio|video|source|table|thead|tbody|tr|th|td|a|b|strong|var|i|em|u|ins|s|span|strike|del|sub|sup|code|svg|path|details|summary';\r\n // tags\r\n options.tagsBlacklist = options.tagsBlacklist || '';\r\n options._defaultTagsWhitelist = (typeof options._defaultTagsWhitelist === 'string' ? options._defaultTagsWhitelist : whitelist) + (options.__allowedScriptTag ? '|script' : '');\r\n options._editorTagsWhitelist = options.addTagsWhitelist === '*' ? '*' : this._setWhitelist(options._defaultTagsWhitelist + (typeof options.addTagsWhitelist === 'string' && options.addTagsWhitelist.length > 0 ? '|' + options.addTagsWhitelist : ''), options.tagsBlacklist);\r\n // paste tags\r\n options.pasteTagsBlacklist = options.tagsBlacklist + (options.tagsBlacklist && options.pasteTagsBlacklist ? ('|' + options.pasteTagsBlacklist) : (options.pasteTagsBlacklist || ''));\r\n options.pasteTagsWhitelist = options.pasteTagsWhitelist === '*' ? '*' : this._setWhitelist(typeof options.pasteTagsWhitelist === 'string' ? options.pasteTagsWhitelist : options._editorTagsWhitelist, options.pasteTagsBlacklist);\r\n // tag attributes\r\n options.attributesWhitelist = (!options.attributesWhitelist || typeof options.attributesWhitelist !== 'object') ? null : options.attributesWhitelist;\r\n options.attributesBlacklist = (!options.attributesBlacklist || typeof options.attributesBlacklist !== 'object') ? null : options.attributesBlacklist;\r\n /** Layout */\r\n options.mode = options.mode || 'classic'; // classic, inline, balloon, balloon-always\r\n options.rtl = !!options.rtl;\r\n options.lineAttrReset = ['id'].concat((options.lineAttrReset && typeof options.lineAttrReset === 'string' ? options.lineAttrReset.toLowerCase().split('|') : []));\r\n options._editableClass = 'sun-editor-editable' + (options.rtl ? ' se-rtl' : '');\r\n options._printClass = typeof options._printClass === 'string' ? options._printClass : null;\r\n options.toolbarWidth = options.toolbarWidth ? (util.isNumber(options.toolbarWidth) ? options.toolbarWidth + 'px' : options.toolbarWidth) : 'auto';\r\n options.toolbarContainer = typeof options.toolbarContainer === 'string' ? document.querySelector(options.toolbarContainer) : options.toolbarContainer;\r\n options.stickyToolbar = (/balloon/i.test(options.mode) || !!options.toolbarContainer) ? -1 : options.stickyToolbar === undefined ? 0 : (/^\\d+/.test(options.stickyToolbar) ? util.getNumber(options.stickyToolbar, 0) : -1);\r\n options.hideToolbar = !!options.hideToolbar;\r\n options.fullScreenOffset = options.fullScreenOffset === undefined ? 0 : (/^\\d+/.test(options.fullScreenOffset) ? util.getNumber(options.fullScreenOffset, 0) : 0);\r\n options.fullPage = !!options.fullPage;\r\n options.iframe = options.fullPage || !!options.iframe;\r\n options.iframeAttributes = options.iframeAttributes || {};\r\n options.iframeCSSFileName = options.iframe ? typeof options.iframeCSSFileName === 'string' ? [options.iframeCSSFileName] : (options.iframeCSSFileName || ['suneditor']) : null;\r\n options.previewTemplate = typeof options.previewTemplate === 'string' ? options.previewTemplate : null;\r\n options.printTemplate = typeof options.printTemplate === 'string' ? options.printTemplate : null;\r\n /** CodeMirror object */\r\n options.codeMirror = options.codeMirror ? options.codeMirror.src ? options.codeMirror : {src: options.codeMirror} : null;\r\n /** katex object (Math plugin) */\r\n options.katex = options.katex ? options.katex.src ? options.katex : {src: options.katex} : null;\r\n options.mathFontSize = !!options.mathFontSize ? options.mathFontSize : [\r\n {text: '1', value: '1em'},\r\n {text: '1.5', value: '1.5em'},\r\n {text: '2', value: '2em'},\r\n {text: '2.5', value: '2.5em'}\r\n ];\r\n /** Display */\r\n options.position = typeof options.position === 'string' ? options.position : null;\r\n options.display = options.display || (element.style.display === 'none' || !element.style.display ? 'block' : element.style.display);\r\n options.popupDisplay = options.popupDisplay || 'full';\r\n /** Bottom resizing bar */\r\n options.resizingBar = options.resizingBar === undefined ? (/inline|balloon/i.test(options.mode) ? false : true) : options.resizingBar;\r\n options.showPathLabel = !options.resizingBar ? false : typeof options.showPathLabel === 'boolean' ? options.showPathLabel : true;\r\n options.resizeEnable = options.resizeEnable === undefined ? true : !!options.resizeEnable;\r\n options.resizingBarContainer = typeof options.resizingBarContainer === 'string' ? document.querySelector(options.resizingBarContainer) : options.resizingBarContainer;\r\n /** Character count */\r\n options.charCounter = options.maxCharCount > 0 ? true : typeof options.charCounter === 'boolean' ? options.charCounter : false;\r\n options.charCounterType = typeof options.charCounterType === 'string' ? options.charCounterType : 'char';\r\n options.charCounterLabel = typeof options.charCounterLabel === 'string' ? options.charCounterLabel.trim() : null;\r\n options.maxCharCount = util.isNumber(options.maxCharCount) && options.maxCharCount > -1 ? options.maxCharCount * 1 : null;\r\n /** Width size */\r\n options.width = options.width ? (util.isNumber(options.width) ? options.width + 'px' : options.width) : (element.clientWidth ? element.clientWidth + 'px' : '100%');\r\n options.minWidth = (util.isNumber(options.minWidth) ? options.minWidth + 'px' : options.minWidth) || '';\r\n options.maxWidth = (util.isNumber(options.maxWidth) ? options.maxWidth + 'px' : options.maxWidth) || '';\r\n /** Height size */\r\n options.height = options.height ? (util.isNumber(options.height) ? options.height + 'px' : options.height) : (element.clientHeight ? element.clientHeight + 'px' : 'auto');\r\n options.minHeight = (util.isNumber(options.minHeight) ? options.minHeight + 'px' : options.minHeight) || '';\r\n options.maxHeight = (util.isNumber(options.maxHeight) ? options.maxHeight + 'px' : options.maxHeight) || '';\r\n /** Editing area */\r\n options.className = (typeof options.className === 'string' && options.className.length > 0) ? ' ' + options.className : '';\r\n options.defaultStyle = typeof options.defaultStyle === 'string' ? options.defaultStyle : '';\r\n /** Defining menu items */\r\n options.font = !options.font ? ['Arial', 'Comic Sans MS', 'Courier New', 'Impact', 'Georgia', 'tahoma', 'Trebuchet MS', 'Verdana'] : options.font;\r\n options.fontSize = !options.fontSize ? null : options.fontSize;\r\n options.formats = !options.formats ? null : options.formats;\r\n options.colorList = !options.colorList ? null : options.colorList;\r\n options.lineHeights = !options.lineHeights ? null : options.lineHeights;\r\n options.paragraphStyles = !options.paragraphStyles ? null : options.paragraphStyles;\r\n options.textStyles = !options.textStyles ? null : options.textStyles;\r\n options.fontSizeUnit = typeof options.fontSizeUnit === 'string' ? (options.fontSizeUnit.trim().toLowerCase() || 'px') : 'px';\r\n options.alignItems = typeof options.alignItems === 'object' ? options.alignItems : (options.rtl ? ['right', 'center', 'left', 'justify'] : ['left', 'center', 'right', 'justify']);\r\n /** Image */\r\n options.imageResizing = options.imageResizing === undefined ? true : options.imageResizing;\r\n options.imageHeightShow = options.imageHeightShow === undefined ? true : !!options.imageHeightShow;\r\n options.imageAlignShow = options.imageAlignShow === undefined ? true : !!options.imageAlignShow;\r\n options.imageWidth = !options.imageWidth ? 'auto' : util.isNumber(options.imageWidth) ? options.imageWidth + 'px' : options.imageWidth;\r\n options.imageHeight = !options.imageHeight ? 'auto' : util.isNumber(options.imageHeight) ? options.imageHeight + 'px' : options.imageHeight;\r\n options.imageSizeOnlyPercentage = !!options.imageSizeOnlyPercentage;\r\n options._imageSizeUnit = options.imageSizeOnlyPercentage ? '%' : 'px';\r\n options.imageRotation = options.imageRotation !== undefined ? options.imageRotation : !(options.imageSizeOnlyPercentage || !options.imageHeightShow);\r\n options.imageFileInput = options.imageFileInput === undefined ? true : options.imageFileInput;\r\n options.imageUrlInput = (options.imageUrlInput === undefined || !options.imageFileInput) ? true : options.imageUrlInput;\r\n options.imageUploadHeader = options.imageUploadHeader || null;\r\n options.imageUploadUrl = typeof options.imageUploadUrl === 'string' ? options.imageUploadUrl : null;\r\n options.imageUploadSizeLimit = /\\d+/.test(options.imageUploadSizeLimit) ? util.getNumber(options.imageUploadSizeLimit, 0) : null;\r\n options.imageMultipleFile = !!options.imageMultipleFile;\r\n options.imageAccept = (typeof options.imageAccept !== 'string' || options.imageAccept.trim() === \"*\") ? 'image/*' : options.imageAccept.trim() || 'image/*';\r\n /** Image - image gallery */\r\n options.imageGalleryUrl = typeof options.imageGalleryUrl === 'string' ? options.imageGalleryUrl : null;\r\n options.imageGalleryHeader = options.imageGalleryHeader || null;\r\n /** Video */\r\n options.videoResizing = options.videoResizing === undefined ? true : options.videoResizing;\r\n options.videoHeightShow = options.videoHeightShow === undefined ? true : !!options.videoHeightShow;\r\n options.videoAlignShow = options.videoAlignShow === undefined ? true : !!options.videoAlignShow;\r\n options.videoRatioShow = options.videoRatioShow === undefined ? true : !!options.videoRatioShow;\r\n options.videoWidth = !options.videoWidth || !util.getNumber(options.videoWidth, 0) ? '' : util.isNumber(options.videoWidth) ? options.videoWidth + 'px' : options.videoWidth;\r\n options.videoHeight = !options.videoHeight || !util.getNumber(options.videoHeight, 0) ? '' : util.isNumber(options.videoHeight) ? options.videoHeight + 'px' : options.videoHeight;\r\n options.videoSizeOnlyPercentage = !!options.videoSizeOnlyPercentage;\r\n options._videoSizeUnit = options.videoSizeOnlyPercentage ? '%' : 'px';\r\n options.videoRotation = options.videoRotation !== undefined ? options.videoRotation : !(options.videoSizeOnlyPercentage || !options.videoHeightShow);\r\n options.videoRatio = (util.getNumber(options.videoRatio, 4) || 0.5625);\r\n options.videoRatioList = !options.videoRatioList ? null : options.videoRatioList;\r\n options.youtubeQuery = (options.youtubeQuery || '').replace('?', '');\r\n options.videoFileInput = !!options.videoFileInput;\r\n options.videoUrlInput = (options.videoUrlInput === undefined || !options.videoFileInput) ? true : options.videoUrlInput;\r\n options.videoUploadHeader = options.videoUploadHeader || null;\r\n options.videoUploadUrl = typeof options.videoUploadUrl === 'string' ? options.videoUploadUrl : null;\r\n options.videoUploadSizeLimit = /\\d+/.test(options.videoUploadSizeLimit) ? util.getNumber(options.videoUploadSizeLimit, 0) : null;\r\n options.videoMultipleFile = !!options.videoMultipleFile;\r\n options.videoTagAttrs = options.videoTagAttrs || null;\r\n options.videoIframeAttrs = options.videoIframeAttrs || null;\r\n options.videoAccept = (typeof options.videoAccept !== 'string' || options.videoAccept.trim() === \"*\") ? 'video/*' : options.videoAccept.trim() || 'video/*';\r\n /** Audio */\r\n options.audioWidth = !options.audioWidth ? '' : util.isNumber(options.audioWidth) ? options.audioWidth + 'px' : options.audioWidth;\r\n options.audioHeight = !options.audioHeight ? '' : util.isNumber(options.audioHeight) ? options.audioHeight + 'px' : options.audioHeight;\r\n options.audioFileInput = !!options.audioFileInput;\r\n options.audioUrlInput = (options.audioUrlInput === undefined || !options.audioFileInput) ? true : options.audioUrlInput;\r\n options.audioUploadHeader = options.audioUploadHeader || null;\r\n options.audioUploadUrl = typeof options.audioUploadUrl === 'string' ? options.audioUploadUrl : null;\r\n options.audioUploadSizeLimit = /\\d+/.test(options.audioUploadSizeLimit) ? util.getNumber(options.audioUploadSizeLimit, 0) : null;\r\n options.audioMultipleFile = !!options.audioMultipleFile;\r\n options.audioTagAttrs = options.audioTagAttrs || null;\r\n options.audioAccept = (typeof options.audioAccept !== 'string' || options.audioAccept.trim() === \"*\") ? 'audio/*' : options.audioAccept.trim() || 'audio/*';\r\n /** Table */\r\n options.tableCellControllerPosition = typeof options.tableCellControllerPosition === 'string' ? options.tableCellControllerPosition.toLowerCase() : 'cell';\r\n /** Link */\r\n options.linkTargetNewWindow = !!options.linkTargetNewWindow;\r\n options.linkProtocol = typeof options.linkProtocol === 'string' ? options.linkProtocol : null;\r\n options.linkRel = Array.isArray(options.linkRel) ? options.linkRel : [];\r\n options.linkRelDefault = options.linkRelDefault || {};\r\n /** HR */\r\n // options.hrItems = options.hrItems;\r\n /** Key actions */\r\n options.tabDisable = !!options.tabDisable;\r\n options.shortcutsDisable = Array.isArray(options.shortcutsDisable) ? options.shortcutsDisable : [];\r\n options.shortcutsHint = options.shortcutsHint === undefined ? true : !!options.shortcutsHint;\r\n /** Defining save button */\r\n options.callBackSave = !options.callBackSave ? null : options.callBackSave;\r\n /** Templates Array */\r\n options.templates = !options.templates ? null : options.templates;\r\n /** ETC */\r\n options.placeholder = typeof options.placeholder === 'string' ? options.placeholder : null;\r\n options.mediaAutoSelect = options.mediaAutoSelect === undefined ? true : !!options.mediaAutoSelect;\r\n /** Buttons */\r\n options.buttonList = !!options.buttonList ? options.buttonList : [\r\n ['undo', 'redo'],\r\n ['bold', 'underline', 'italic', 'strike', 'subscript', 'superscript'],\r\n ['removeFormat'],\r\n ['outdent', 'indent'],\r\n ['fullScreen', 'showBlocks', 'codeView'],\r\n ['preview', 'print']\r\n ];\r\n\r\n /** RTL - buttons */\r\n if (options.rtl) {\r\n options.buttonList = options.buttonList.reverse();\r\n }\r\n\r\n /** --- Define icons --- */\r\n // custom icons\r\n options.icons = (!options.icons || typeof options.icons !== 'object') ? _icons : [_icons, options.icons].reduce(function (_default, _new) {\r\n for (let key in _new) {\r\n if (util.hasOwn(_new, key)) _default[key] = _new[key];\r\n }\r\n return _default;\r\n }, {});\r\n // rtl icons\r\n options.icons = !options.rtl ? options.icons : [options.icons, options.icons.rtl].reduce(function (_default, _new) {\r\n for (let key in _new) {\r\n if (util.hasOwn(_new, key)) _default[key] = _new[key];\r\n }\r\n return _default;\r\n }, {});\r\n\r\n /** Private options */\r\n options.__listCommonStyle = options.__listCommonStyle || ['fontSize', 'color', 'fontFamily', 'fontWeight', 'fontStyle'];\r\n\r\n /** _init options */\r\n options._editorStyles = util._setDefaultOptionStyle(options, options.defaultStyle);\r\n },\r\n\r\n _setWhitelist: function (whitelist, blacklist) {\r\n if (typeof blacklist !== 'string') return whitelist;\r\n blacklist = blacklist.split('|');\r\n whitelist = whitelist.split('|');\r\n for (let i = 0, len = blacklist.length, index; i < len; i++) {\r\n index = whitelist.indexOf(blacklist[i]);\r\n if (index > -1) whitelist.splice(index, 1);\r\n }\r\n return whitelist.join('|');\r\n },\r\n\r\n /**\r\n * @description Suneditor's Default button list\r\n * @param {Object} options options\r\n * @private\r\n */\r\n _defaultButtons: function (options) {\r\n const icons = options.icons;\r\n const lang = options.lang;\r\n const cmd = util.isOSX_IOS ? '⌘' : 'CTRL';\r\n const addShift = util.isOSX_IOS ? '⇧' : '+SHIFT';\r\n const shortcutsDisable = !options.shortcutsHint ? ['bold', 'strike', 'underline', 'italic', 'undo', 'indent', 'save'] : options.shortcutsDisable;\r\n const indentKey = options.rtl ? ['[',']'] : [']','['];\r\n const indentIcon = options.rtl ? [icons.outdent, icons.indent] : [icons.indent, icons.outdent];\r\n\r\n return {\r\n /** default command */\r\n bold: ['', lang.toolbar.bold + '<span class=\"se-shortcut\">' + (shortcutsDisable.indexOf('bold') > -1 ? '' : cmd + '+<span class=\"se-shortcut-key\">B</span>') + '</span>', 'bold', '', icons.bold],\r\n underline: ['', lang.toolbar.underline + '<span class=\"se-shortcut\">' + (shortcutsDisable.indexOf('underline') > -1 ? '' : cmd + '+<span class=\"se-shortcut-key\">U</span>') + '</span>', 'underline', '', icons.underline],\r\n italic: ['', lang.toolbar.italic + '<span class=\"se-shortcut\">' + (shortcutsDisable.indexOf('italic') > -1 ? '' : cmd + '+<span class=\"se-shortcut-key\">I</span>') + '</span>', 'italic', '', icons.italic],\r\n strike: ['', lang.toolbar.strike + '<span class=\"se-shortcut\">' + (shortcutsDisable.indexOf('strike') > -1 ? '' : cmd + addShift + '+<span class=\"se-shortcut-key\">S</span>') + '</span>', 'strike', '', icons.strike],\r\n subscript: ['', lang.toolbar.subscript, 'SUB', '', icons.subscript],\r\n superscript: ['', lang.toolbar.superscript, 'SUP', '', icons.superscript],\r\n removeFormat: ['', lang.toolbar.removeFormat, 'removeFormat', '', icons.erase],\r\n indent: ['', lang.toolbar.indent + '<span class=\"se-shortcut\">' + (shortcutsDisable.indexOf('indent') > -1 ? '' : cmd + '+<span class=\"se-shortcut-key\">' + indentKey[0] + '</span>') + '</span>', 'indent', '', indentIcon[0]],\r\n outdent: ['', lang.toolbar.outdent + '<span class=\"se-shortcut\">' + (shortcutsDisable.indexOf('indent') > -1 ? '' : cmd + '+<span class=\"se-shortcut-key\">' + indentKey[1] + '</span>') + '</span>', 'outdent', '', indentIcon[1]],\r\n fullScreen: ['se-code-view-enabled se-resizing-enabled', lang.toolbar.fullScreen, 'fullScreen', '', icons.expansion],\r\n showBlocks: ['', lang.toolbar.showBlocks, 'showBlocks', '', icons.show_blocks],\r\n codeView: ['se-code-view-enabled se-resizing-enabled', lang.toolbar.codeView, 'codeView', '', icons.code_view],\r\n undo: ['', lang.toolbar.undo + '<span class=\"se-shortcut\">' + (shortcutsDisable.indexOf('undo') > -1 ? '' : cmd + '+<span class=\"se-shortcut-key\">Z</span>') + '</span>', 'undo', '', icons.undo],\r\n redo: ['', lang.toolbar.redo + '<span class=\"se-shortcut\">' + (shortcutsDisable.indexOf('undo') > -1 ? '' : cmd + '+<span class=\"se-shortcut-key\">Y</span> / ' + cmd + addShift + '+<span class=\"se-shortcut-key\">Z</span>') + '</span>', 'redo', '', icons.redo],\r\n preview: ['se-resizing-enabled', lang.toolbar.preview, 'preview', '', icons.preview],\r\n print: ['se-resizing-enabled', lang.toolbar.print, 'print', '', icons.print],\r\n dir: ['', lang.toolbar[options.rtl ? 'dir_ltr' : 'dir_rtl'], 'dir', '', icons[options.rtl ? 'dir_ltr' : 'dir_rtl']],\r\n dir_ltr: ['', lang.toolbar.dir_ltr, 'dir_ltr', '', icons.dir_ltr],\r\n dir_rtl: ['', lang.toolbar.dir_rtl, 'dir_rtl', '', icons.dir_rtl],\r\n save: ['se-resizing-enabled', lang.toolbar.save + '<span class=\"se-shortcut\">' + (shortcutsDisable.indexOf('save') > -1 ? '' : cmd + '+<span class=\"se-shortcut-key\">S</span>') + '</span>', 'save', '', icons.save],\r\n /** plugins - command */\r\n blockquote: ['', lang.toolbar.tag_blockquote, 'blockquote', 'command', icons.blockquote],\r\n /** plugins - submenu */\r\n font: ['se-btn-select se-btn-tool-font', lang.toolbar.font, 'font', 'submenu', '<span class=\"txt\">' + lang.toolbar.font + '</span>' + icons.arrow_down],\r\n formatBlock: ['se-btn-select se-btn-tool-format', lang.toolbar.formats, 'formatBlock', 'submenu', '<span class=\"txt\">' + lang.toolbar.formats + '</span>' + icons.arrow_down],\r\n fontSize: ['se-btn-select se-btn-tool-size', lang.toolbar.fontSize, 'fontSize', 'submenu', '<span class=\"txt\">' + lang.toolbar.fontSize + '</span>' + icons.arrow_down],\r\n fontColor: ['', lang.toolbar.fontColor, 'fontColor', 'submenu', icons.font_color],\r\n hiliteColor: ['', lang.toolbar.hiliteColor, 'hiliteColor', 'submenu', icons.highlight_color],\r\n align: ['se-btn-align', lang.toolbar.align, 'align', 'submenu', (options.rtl ? icons.align_right : icons.align_left)],\r\n list: ['', lang.toolbar.list, 'list', 'submenu', icons.list_number],\r\n horizontalRule: ['btn_line', lang.toolbar.horizontalRule, 'horizontalRule', 'submenu', icons.horizontal_rule],\r\n table: ['', lang.toolbar.table, 'table', 'submenu', icons.table],\r\n lineHeight: ['', lang.toolbar.lineHeight, 'lineHeight', 'submenu', icons.line_height],\r\n template: ['', lang.toolbar.template, 'template', 'submenu', icons.template],\r\n paragraphStyle: ['', lang.toolbar.paragraphStyle, 'paragraphStyle', 'submenu', icons.paragraph_style],\r\n textStyle: ['', lang.toolbar.textStyle, 'textStyle', 'submenu', icons.text_style],\r\n /** plugins - dialog */\r\n link: ['', lang.toolbar.link, 'link', 'dialog', icons.link],\r\n image: ['', lang.toolbar.image, 'image', 'dialog', icons.image],\r\n video: ['', lang.toolbar.video, 'video', 'dialog', icons.video],\r\n audio: ['', lang.toolbar.audio, 'audio', 'dialog', icons.audio],\r\n math: ['', lang.toolbar.math, 'math', 'dialog', icons.math],\r\n /** plugins - fileBrowser */\r\n imageGallery: ['', lang.toolbar.imageGallery, 'imageGallery', 'fileBrowser', icons.image_gallery]\r\n };\r\n },\r\n\r\n /**\r\n * @description Create a group div containing each module\r\n * @returns {Object}\r\n * @private\r\n */\r\n _createModuleGroup: function () {\r\n const oDiv = util.createElement('DIV');\r\n oDiv.className = 'se-btn-module se-btn-module-border';\r\n\r\n const oUl = util.createElement('UL');\r\n oUl.className = 'se-menu-list';\r\n oDiv.appendChild(oUl);\r\n\r\n return {\r\n 'div': oDiv,\r\n 'ul': oUl\r\n };\r\n },\r\n\r\n /**\r\n * @description Create a button element\r\n * @param {string} buttonClass className in button\r\n * @param {string} title Title in button\r\n * @param {string} dataCommand The data-command property of the button\r\n * @param {string} dataDisplay The data-display property of the button ('dialog', 'submenu', 'command')\r\n * @param {string} innerHTML Html in button\r\n * @param {string} _disabled Button disabled\r\n * @param {Object} _icons Icons\r\n * @returns {Object}\r\n * @private\r\n */\r\n _createButton: function (buttonClass, title, dataCommand, dataDisplay, innerHTML, _disabled, _icons) {\r\n const oLi = util.createElement('LI');\r\n const oButton = util.createElement('BUTTON');\r\n const label = (title || dataCommand);\r\n\r\n oButton.setAttribute('type', 'button');\r\n oButton.setAttribute('class', 'se-btn' + (buttonClass ? ' ' + buttonClass : '') + ' se-tooltip');\r\n oButton.setAttribute('data-command', dataCommand);\r\n oButton.setAttribute('data-display', dataDisplay);\r\n oButton.setAttribute('aria-label', label.replace(/<span .+<\\/span>/, ''));\r\n oButton.setAttribute('tabindex', '-1');\r\n \r\n if (!innerHTML) innerHTML = '<span class=\"se-icon-text\">!</span>';\r\n if (/^default\\./i.test(innerHTML)) {\r\n innerHTML = _icons[innerHTML.replace(/^default\\./i, '')];\r\n }\r\n if (/^text\\./i.test(innerHTML)) {\r\n innerHTML = innerHTML.replace(/^text\\./i, '');\r\n oButton.className += ' se-btn-more-text';\r\n }\r\n\r\n innerHTML += '<span class=\"se-tooltip-inner\"><span class=\"se-tooltip-text\">' + label + '</span></span>';\r\n\r\n if (_disabled) oButton.setAttribute('disabled', true);\r\n \r\n oButton.innerHTML = innerHTML;\r\n oLi.appendChild(oButton);\r\n\r\n return {\r\n 'li': oLi,\r\n 'button': oButton\r\n };\r\n },\r\n\r\n /**\r\n * @description Create editor HTML\r\n * @param {Array} doc document object\r\n * @param {Array} buttonList option.buttonList\r\n * @param {Object|null} plugins Plugins\r\n * @param {Array} options options\r\n * @returns {Object} { element: (Element) Toolbar element, plugins: (Array|null) Plugins Array, pluginCallButtons: (Object), responsiveButtons: (Array) }\r\n * @private\r\n */\r\n _createToolBar: function (doc, buttonList, plugins, options) {\r\n const separator_vertical = doc.createElement('DIV');\r\n separator_vertical.className = 'se-toolbar-separator-vertical';\r\n\r\n const tool_bar = doc.createElement('DIV');\r\n tool_bar.className = 'se-toolbar sun-editor-common';\r\n\r\n const _buttonTray = doc.createElement('DIV');\r\n _buttonTray.className = 'se-btn-tray';\r\n tool_bar.appendChild(_buttonTray);\r\n\r\n /** create button list */\r\n buttonList = JSON.parse(JSON.stringify(buttonList));\r\n const icons = options.icons;\r\n const defaultButtonList = this._defaultButtons(options);\r\n const pluginCallButtons = {};\r\n const responsiveButtons = [];\r\n\r\n let module = null;\r\n let button = null;\r\n let moduleElement = null;\r\n let buttonElement = null;\r\n let pluginName = '';\r\n let vertical = false;\r\n const moreLayer = util.createElement('DIV');\r\n moreLayer.className = 'se-toolbar-more-layer';\r\n\r\n buttonGroupLoop:\r\n for (let i = 0, more, moreContainer, moreCommand, buttonGroup, align; i < buttonList.length; i++) {\r\n more = false;\r\n align = '';\r\n buttonGroup = buttonList[i];\r\n moduleElement = this._createModuleGroup();\r\n\r\n // button object\r\n if (typeof buttonGroup === 'object') {\r\n // buttons loop\r\n for (let j = 0, moreButton; j < buttonGroup.length; j++) {\r\n button = buttonGroup[j];\r\n moreButton = false;\r\n\r\n if (/^\\%\\d+/.test(button) && j === 0) {\r\n buttonGroup[0] = button.replace(/[^\\d]/g, '');\r\n responsiveButtons.push(buttonGroup);\r\n buttonList.splice(i--, 1);\r\n continue buttonGroupLoop;\r\n }\r\n \r\n if (typeof button === 'object') {\r\n if (typeof button.add === 'function') {\r\n pluginName = button.name;\r\n module = defaultButtonList[pluginName];\r\n plugins[pluginName] = button;\r\n } else {\r\n pluginName = button.name;\r\n module = [button.buttonClass, button.title, button.name, button.dataDisplay, button.innerHTML, button._disabled];\r\n }\r\n } else {\r\n // align\r\n if (/^\\-/.test(button)) {\r\n align = button.substr(1);\r\n moduleElement.div.className += ' module-float-' + align;\r\n continue;\r\n }\r\n\r\n // rtl fix\r\n if (/^\\#/.test(button)) {\r\n const option = button.substr(1);\r\n if (option === 'fix') moduleElement.ul.className += ' se-menu-dir-fix';\r\n continue;\r\n }\r\n \r\n // more button\r\n if (/^\\:/.test(button)) {\r\n moreButton = true;\r\n const matched = button.match(/^\\:([^\\-]+)\\-([^\\-]+)\\-([^\\-]+)/);\r\n moreCommand = '__se__' + matched[1].trim();\r\n const title = matched[2].trim();\r\n const innerHTML = matched[3].trim();\r\n module = ['se-btn-more', title, moreCommand, 'MORE', innerHTML];\r\n }\r\n // buttons\r\n else {\r\n module = defaultButtonList[button];\r\n }\r\n\r\n pluginName = button;\r\n if (!module) {\r\n const custom = plugins[pluginName];\r\n if (!custom) throw Error('[SUNEDITOR.create.toolbar.fail] The button name of a plugin that does not exist. [' + pluginName + ']');\r\n module = [custom.buttonClass, custom.title, custom.name, custom.display, custom.innerHTML, custom._disabled];\r\n }\r\n }\r\n\r\n buttonElement = this._createButton(module[0], module[1], module[2], module[3], module[4], module[5], icons);\r\n (more ? moreContainer : moduleElement.ul).appendChild(buttonElement.li);\r\n\r\n if (plugins[pluginName]) {\r\n pluginCallButtons[pluginName] = buttonElement.button;\r\n }\r\n\r\n // more button\r\n if (moreButton) {\r\n more = true;\r\n moreContainer = util.createElement('DIV');\r\n moreContainer.className = 'se-more-layer ' + moreCommand;\r\n moreContainer.innerHTML = '<div class=\"se-more-form\"><ul class=\"se-menu-list\"' + (align ? ' style=\"float: ' + align + ';\"' : '') + '></ul></div>';\r\n moreLayer.appendChild(moreContainer);\r\n moreContainer = moreContainer.firstElementChild.firstElementChild;\r\n }\r\n }\r\n\r\n if (vertical) {\r\n const sv = separator_vertical.cloneNode(false);\r\n _buttonTray.appendChild(sv);\r\n }\r\n \r\n _buttonTray.appendChild(moduleElement.div);\r\n vertical = true;\r\n }\r\n /** line break */\r\n else if (/^\\/$/.test(buttonGroup)) {\r\n const enterDiv = doc.createElement('DIV');\r\n enterDiv.className = 'se-btn-module-enter';\r\n _buttonTray.appendChild(enterDiv);\r\n vertical = false;\r\n }\r\n }\r\n\r\n switch (_buttonTray.children.length) {\r\n case 0:\r\n _buttonTray.style.display = 'none';\r\n break;\r\n case 1:\r\n util.removeClass(_buttonTray.firstElementChild, 'se-btn-module-border');\r\n break;\r\n default:\r\n if (options.rtl) {\r\n const sv = separator_vertical.cloneNode(false);\r\n sv.style.float = _buttonTray.lastElementChild.style.float;\r\n _buttonTray.appendChild(sv);\r\n }\r\n }\r\n\r\n if (responsiveButtons.length > 0) responsiveButtons.unshift(buttonList);\r\n if (moreLayer.children.length > 0) _buttonTray.appendChild(moreLayer);\r\n\r\n // menu tray\r\n const _menuTray = doc.createElement('DIV');\r\n _menuTray.className = 'se-menu-tray';\r\n tool_bar.appendChild(_menuTray);\r\n\r\n // cover\r\n const tool_cover = doc.createElement('DIV');\r\n tool_cover.className = 'se-toolbar-cover';\r\n tool_bar.appendChild(tool_cover);\r\n\r\n if (options.hideToolbar) tool_bar.style.display = 'none';\r\n\r\n return {\r\n 'element': tool_bar,\r\n 'plugins': plugins,\r\n 'pluginCallButtons': pluginCallButtons,\r\n 'responsiveButtons': responsiveButtons,\r\n '_menuTray': _menuTray,\r\n '_buttonTray': _buttonTray\r\n };\r\n }\r\n};","/*\r\n * wysiwyg web editor\r\n *\r\n * suneditor.js\r\n * Copyright 2017 JiHong Lee.\r\n * MIT license.\r\n */\r\n'use strict';\r\n\r\n/**\r\n * @description Elements and variables you should have\r\n * @param {Element} element textarea element\r\n * @param {object} cons Toolbar element you created\r\n * @param {JSON|Object} options Inserted options\r\n * @returns {Object} {Elements, variables of the editor, option}\r\n * @private\r\n */\r\nconst _Context = function (element, cons, options) {\r\n return {\r\n element: {\r\n originElement: element,\r\n topArea: cons._top,\r\n relative: cons._relative,\r\n toolbar: cons._toolBar,\r\n _toolbarShadow: cons._toolbarShadow,\r\n _buttonTray: cons._toolBar.querySelector('.se-btn-tray'),\r\n _menuTray: cons._menuTray,\r\n resizingBar: cons._resizingBar,\r\n navigation: cons._navigation,\r\n charWrapper: cons._charWrapper,\r\n charCounter: cons._charCounter,\r\n editorArea: cons._editorArea,\r\n wysiwygFrame: cons._wysiwygArea,\r\n wysiwyg: cons._wysiwygArea, // if (options.iframe) cons._wysiwygArea.contentDocument.body\r\n code: cons._codeArea,\r\n placeholder: cons._placeholder,\r\n loading: cons._loading,\r\n lineBreaker: cons._lineBreaker,\r\n lineBreaker_t: cons._lineBreaker_t,\r\n lineBreaker_b: cons._lineBreaker_b,\r\n resizeBackground: cons._resizeBack,\r\n _stickyDummy: cons._stickyDummy,\r\n _arrow: cons._arrow\r\n },\r\n tool: {\r\n cover: cons._toolBar.querySelector('.se-toolbar-cover'),\r\n bold: cons._toolBar.querySelector('[data-command=\"bold\"]'),\r\n underline: cons._toolBar.querySelector('[data-command=\"underline\"]'),\r\n italic: cons._toolBar.querySelector('[data-command=\"italic\"]'),\r\n strike: cons._toolBar.querySelector('[data-command=\"strike\"]'),\r\n sub: cons._toolBar.querySelector('[data-command=\"SUB\"]'),\r\n sup: cons._toolBar.querySelector('[data-command=\"SUP\"]'),\r\n undo: cons._toolBar.querySelector('[data-command=\"undo\"]'),\r\n redo: cons._toolBar.querySelector('[data-command=\"redo\"]'),\r\n save: cons._toolBar.querySelector('[data-command=\"save\"]'),\r\n outdent: cons._toolBar.querySelector('[data-command=\"outdent\"]'),\r\n indent: cons._toolBar.querySelector('[data-command=\"indent\"]'),\r\n fullScreen: cons._toolBar.querySelector('[data-command=\"fullScreen\"]'),\r\n showBlocks: cons._toolBar.querySelector('[data-command=\"showBlocks\"]'),\r\n codeView: cons._toolBar.querySelector('[data-command=\"codeView\"]'),\r\n dir: cons._toolBar.querySelector('[data-command=\"dir\"]'),\r\n dir_ltr: cons._toolBar.querySelector('[data-command=\"dir_ltr\"]'),\r\n dir_rtl: cons._toolBar.querySelector('[data-command=\"dir_rtl\"]')\r\n },\r\n options: options,\r\n option: options\r\n };\r\n};\r\n\r\nexport default _Context;","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default {\n name: 'notice',\n /**\n * @description Constructor\n * @param {Object} core Core object \n */\n add: function (core) {\n const context = core.context;\n context.notice = {};\n\n /** dialog */\n let notice_div = core.util.createElement('DIV');\n let notice_span = core.util.createElement('SPAN');\n let notice_button = core.util.createElement('BUTTON');\n\n notice_div.className = 'se-notice';\n notice_button.className = 'close';\n notice_button.setAttribute('aria-label', 'Close');\n notice_button.setAttribute('title', core.lang.dialogBox.close);\n notice_button.innerHTML = core.icons.cancel;\n \n notice_div.appendChild(notice_span);\n notice_div.appendChild(notice_button);\n\n context.notice.modal = notice_div;\n context.notice.message = notice_span;\n\n /** add event listeners */\n notice_button.addEventListener('click', this.onClick_cancel.bind(core));\n \n /** append html */\n context.element.editorArea.appendChild(notice_div);\n \n /** empty memory */\n notice_div = null;\n },\n\n /**\n * @description Event when clicking the cancel button\n * @param {MouseEvent} e Event object\n */\n onClick_cancel: function (e) {\n e.preventDefault();\n e.stopPropagation();\n this.plugins.notice.close.call(this);\n },\n\n /**\n * @description Open the notice panel\n * @param {String} text Notice message\n */\n open: function (text) {\n this.context.notice.message.textContent = text;\n this.context.notice.modal.style.display = 'block';\n },\n\n /**\n * @description Open the notice panel\n */\n close: function () {\n this.context.notice.modal.style.display = 'none';\n }\n};\n","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2017 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nimport core from './lib/core';\nimport util from './lib/util';\nimport _Constructor from './lib/constructor';\nimport _Context from './lib/context';\n\nexport default {\n /**\n * @description Returns the create function with preset options.\n * If the options overlap, the options of the 'create' function take precedence.\n * @param {Json} options Initialization options\n * @returns {Object}\n */\n init: function (init_options) {\n return {\n create: function (idOrElement, options) {\n return this.create(idOrElement, options, init_options);\n }.bind(this)\n };\n },\n\n /**\n * @description Create the suneditor\n * @param {String|Element} idOrElement textarea Id or textarea element\n * @param {JSON|Object} options user options\n * @returns {Object}\n */\n create: function (idOrElement, options, _init_options) {\n util._propertiesInit();\n\n if (typeof options !== 'object') options = {};\n if (_init_options) {\n options = [_init_options, options].reduce(function (init, option) {\n for (let key in option) {\n if (!util.hasOwn(option, key)) continue;\n if (key === 'plugins' && option[key] && init[key]) {\n let i = init[key], o = option[key];\n i = i.length ? i : Object.keys(i).map(function(name) { return i[name]; });\n o = o.length ? o : Object.keys(o).map(function(name) { return o[name]; });\n init[key] = (o.filter(function(val) { return i.indexOf(val) === -1; })).concat(i);\n } else {\n init[key] = option[key];\n }\n }\n return init;\n }, {});\n }\n \n const element = typeof idOrElement === 'string' ? document.getElementById(idOrElement) : idOrElement;\n\n if (!element) {\n if (typeof idOrElement === 'string') {\n throw Error('[SUNEDITOR.create.fail] The element for that id was not found (ID:\"' + idOrElement + '\")');\n }\n\n throw Error('[SUNEDITOR.create.fail] suneditor requires textarea\\'s element or id value');\n }\n\n const cons = _Constructor.init(element, options);\n\n if (cons.constructed._top.id && document.getElementById(cons.constructed._top.id)) {\n throw Error('[SUNEDITOR.create.fail] The ID of the suneditor you are trying to create already exists (ID:\"' + cons.constructed._top.id + '\")');\n }\n\n return core(_Context(element, cons.constructed, cons.options), cons.pluginCallButtons, cons.plugins, cons.options.lang, options, cons._responsiveButtons);\n }\n};\n","/*\r\n * wysiwyg web editor\r\n *\r\n * suneditor.js\r\n * Copyright 2017 JiHong Lee.\r\n * MIT license.\r\n */\r\n'use strict';\r\n\r\nimport _Constructor from './constructor';\r\nimport _Context from './context';\r\nimport _history from './history';\r\nimport _util from './util';\r\nimport _notice from '../plugins/modules/_notice';\r\n\r\n/**\r\n * @description SunEditor constuctor function.\r\n * create core object and event registration.\r\n * core, event, functions\r\n * @param {Object} context\r\n * @param {Object} pluginCallButtons\r\n * @param {Object} plugins \r\n * @param {Object} lang\r\n * @param {Object} options\r\n * @param {Object} _responsiveButtons\r\n * @returns {Object} functions Object\r\n */\r\nexport default function (context, pluginCallButtons, plugins, lang, options, _responsiveButtons) {\r\n const _d = context.element.originElement.ownerDocument || document;\r\n const _w = _d.defaultView || window;\r\n const util = _util;\r\n const icons = options.icons;\r\n\r\n /**\r\n * @description editor core object\r\n * should always bind this object when registering an event in the plug-in.\r\n */\r\n const core = {\r\n _d: _d,\r\n _w: _w,\r\n _parser: new _w.DOMParser(),\r\n _prevRtl: options.rtl,\r\n _editorHeight: 0,\r\n _editorHeightPadding: 0,\r\n _listCamel: options.__listCommonStyle,\r\n _listKebab: util.camelToKebabCase(options.__listCommonStyle),\r\n\r\n /**\r\n * @description Document object of the iframe if created as an iframe || _d\r\n * @private\r\n */\r\n _wd: null,\r\n\r\n /**\r\n * @description Window object of the iframe if created as an iframe || _w\r\n * @private\r\n */\r\n _ww: null,\r\n \r\n /**\r\n * @description Closest ShadowRoot to editor if found\r\n * @private\r\n */\r\n _shadowRoot: null,\r\n\r\n /**\r\n * @description Block controller mousedown events in \"shadowRoot\" environment\r\n * @private\r\n */\r\n _shadowRootControllerEventTarget: null,\r\n\r\n /**\r\n * @description Util object\r\n */\r\n util: util,\r\n\r\n /**\r\n * @description Functions object\r\n */\r\n functions: null,\r\n\r\n /**\r\n * @description Editor options\r\n */\r\n options: null,\r\n\r\n /**\r\n * @description Computed style of the wysiwyg area (window.getComputedStyle(context.element.wysiwyg))\r\n */\r\n wwComputedStyle: null,\r\n\r\n /**\r\n * @description Notice object\r\n */\r\n notice: _notice,\r\n\r\n /**\r\n * @description Default icons object\r\n */\r\n icons: icons,\r\n\r\n /**\r\n * @description History object for undo, redo\r\n */\r\n history: null,\r\n \r\n /**\r\n * @description Elements and user options parameters of the suneditor\r\n */\r\n context: context,\r\n\r\n /**\r\n * @description Plugin buttons\r\n */\r\n pluginCallButtons: pluginCallButtons,\r\n\r\n /**\r\n * @description Loaded plugins\r\n */\r\n plugins: plugins || {},\r\n\r\n /**\r\n * @description Whether the plugin is initialized\r\n */\r\n initPlugins: {},\r\n\r\n /**\r\n * @description Object for managing submenu elements\r\n * @private\r\n */\r\n _targetPlugins: {},\r\n\r\n /**\r\n * @description Save rendered submenus and containers\r\n * @private\r\n */\r\n _menuTray: {},\r\n\r\n /**\r\n * @description loaded language\r\n */\r\n lang: lang,\r\n\r\n /**\r\n * @description The selection node (core.getSelectionNode()) to which the effect was last applied\r\n */\r\n effectNode: null,\r\n\r\n /**\r\n * @description submenu element\r\n */\r\n submenu: null,\r\n\r\n /**\r\n * @description container element\r\n */\r\n container: null,\r\n\r\n /**\r\n * @description current subment name\r\n * @private\r\n */\r\n _submenuName: '',\r\n\r\n /**\r\n * @description binded submenuOff method\r\n * @private\r\n */\r\n _bindedSubmenuOff: null,\r\n\r\n /**\r\n * @description binded containerOff method\r\n * @private\r\n */\r\n _bindedContainerOff: null,\r\n\r\n /**\r\n * @description active button element in submenu\r\n */\r\n submenuActiveButton: null,\r\n\r\n /**\r\n * @description active button element in container\r\n */\r\n containerActiveButton: null,\r\n\r\n /**\r\n * @description The elements array to be processed unvisible when the controllersOff function is executed (resizing, link modified button, table controller)\r\n */\r\n controllerArray: [],\r\n\r\n /**\r\n * @description The name of the plugin that called the currently active controller\r\n */\r\n currentControllerName: '',\r\n\r\n /**\r\n * @description The target element of current controller\r\n */\r\n currentControllerTarget: null,\r\n\r\n /**\r\n * @description The file component object of current selected file tag (getFileComponent)\r\n */\r\n currentFileComponentInfo: null,\r\n\r\n /**\r\n * @description An array of buttons whose class name is not \"se-code-view-enabled\"\r\n */\r\n codeViewDisabledButtons: [],\r\n\r\n /**\r\n * @description An array of buttons whose class name is not \"se-resizing-enabled\"\r\n */\r\n resizingDisabledButtons: [],\r\n\r\n /**\r\n * @description active more layer element in submenu\r\n * @private\r\n */\r\n _moreLayerActiveButton: null,\r\n\r\n /**\r\n * @description Tag whitelist RegExp object used in \"_consistencyCheckOfHTML\" method\r\n * ^(options._editorTagsWhitelist)$\r\n * @private\r\n */\r\n _htmlCheckWhitelistRegExp: null,\r\n\r\n /**\r\n * @description Tag blacklist RegExp object used in \"_consistencyCheckOfHTML\" method\r\n * @private\r\n */\r\n _htmlCheckBlacklistRegExp: null,\r\n\r\n /**\r\n * @description RegExp when using check disallowd tags. (b, i, ins, strike, s)\r\n * @private\r\n */\r\n _disallowedTextTagsRegExp: null,\r\n\r\n /**\r\n * @description Editor tags whitelist (RegExp object)\r\n * util.createTagsWhitelist(options._editorTagsWhitelist)\r\n */\r\n editorTagsWhitelistRegExp: null,\r\n\r\n /**\r\n * @description Editor tags blacklist (RegExp object)\r\n * util.createTagsBlacklist(options.tagsBlacklist)\r\n */\r\n editorTagsBlacklistRegExp: null,\r\n\r\n /**\r\n * @description Tag whitelist when pasting (RegExp object)\r\n * util.createTagsWhitelist(options.pasteTagsWhitelist)\r\n */\r\n pasteTagsWhitelistRegExp: null,\r\n\r\n /**\r\n * @description Tag blacklist when pasting (RegExp object)\r\n * util.createTagsBlacklist(options.pasteTagsBlacklist)\r\n */\r\n pasteTagsBlacklistRegExp: null,\r\n\r\n /**\r\n * @description Boolean value of whether the editor has focus\r\n */\r\n hasFocus: false,\r\n\r\n /**\r\n * @description Boolean value of whether the editor is disabled\r\n */\r\n isDisabled: false,\r\n\r\n /**\r\n * @description Boolean value of whether the editor is readOnly\r\n */\r\n isReadOnly: false,\r\n\r\n /**\r\n * @description Attributes whitelist used by the cleanHTML method\r\n * @private\r\n */\r\n _attributesWhitelistRegExp: null,\r\n _attributesWhitelistRegExp_all_data: null,\r\n\r\n /**\r\n * @description Attributes blacklist used by the cleanHTML method\r\n * @private\r\n */\r\n _attributesBlacklistRegExp: null,\r\n\r\n /**\r\n * @description Attributes of tags whitelist used by the cleanHTML method\r\n * @private\r\n */\r\n _attributesTagsWhitelist: null,\r\n\r\n /**\r\n * @description Attributes of tags blacklist used by the cleanHTML method\r\n * @private\r\n */\r\n _attributesTagsBlacklist: null,\r\n\r\n /**\r\n * @description binded controllersOff method\r\n * @private\r\n */\r\n _bindControllersOff: null,\r\n\r\n /**\r\n * @description Is inline mode?\r\n * @private\r\n */\r\n _isInline: null,\r\n\r\n /**\r\n * @description Is balloon|balloon-always mode?\r\n * @private\r\n */\r\n _isBalloon: null,\r\n\r\n /**\r\n * @description Is balloon-always mode?\r\n * @private\r\n */\r\n _isBalloonAlways: null,\r\n\r\n /**\r\n * @description Required value when using inline mode to sticky toolbar\r\n * @private\r\n */\r\n _inlineToolbarAttr: {top: '', width: '', isShow: false},\r\n\r\n /**\r\n * @description Variable that controls the \"blur\" event in the editor of inline or balloon mode when the focus is moved to submenu\r\n * @private\r\n */\r\n _notHideToolbar: false,\r\n\r\n /**\r\n * @description Variable value that sticky toolbar mode\r\n * @private\r\n */\r\n _sticky: false,\r\n\r\n /**\r\n * @description Variables for controlling focus and blur events\r\n * @private\r\n */\r\n _antiBlur: false,\r\n\r\n /**\r\n * @description Component line breaker element\r\n * @private\r\n */\r\n _lineBreaker: null,\r\n _lineBreakerButton: null,\r\n\r\n /**\r\n * @description If true, (initialize, reset) all indexes of image, video information\r\n * @private\r\n */\r\n _componentsInfoInit: true,\r\n _componentsInfoReset: false,\r\n\r\n /**\r\n * @description Plugins array with \"active\" method.\r\n * \"activePlugins\" runs the \"add\" method when creating the editor.\r\n */\r\n activePlugins: null,\r\n\r\n /**\r\n * @description Information of tags that should maintain HTML structure, style, class name, etc. (In use by \"math\" plugin)\r\n * When inserting \"html\" such as paste, it is executed on the \"html\" to be inserted. (core.cleanHTML)\r\n * Basic Editor Actions:\r\n * 1. All classes not starting with \"__se__\" or \"se-\" in the editor are removed.\r\n * 2. The style of all tags except the \"span\" tag is removed from the editor.\r\n * \"managedTagsInfo\" structure ex:\r\n * managedTagsInfo: {\r\n * query: '.__se__xxx, se-xxx'\r\n * map: {\r\n * '__se__xxx': method.bind(core),\r\n * 'se-xxx': method.bind(core),\r\n * }\r\n * }\r\n * @example\r\n * Define in the following return format in the \"managedTagInfo\" function of the plugin.\r\n * managedTagInfo() => {\r\n * return {\r\n * className: 'string', // Class name to identify the tag. (\"__se__xxx\", \"se-xxx\")\r\n * // Change the html of the \"element\". (\"element\" is the element found with \"className\".)\r\n * // \"method\" is executed by binding \"core\".\r\n * method: function (element) {\r\n * // this === core\r\n * element.innerHTML = // (rendered html);\r\n * }\r\n * }\r\n * }\r\n */\r\n managedTagsInfo: null,\r\n\r\n /**\r\n * @description cashing: options.charCounterType === 'byte-html'\r\n * @private\r\n */\r\n _charTypeHTML: false,\r\n\r\n /**\r\n * @description Array of \"checkFileInfo\" functions with the core bound\r\n * (Plugins with \"checkFileInfo\" and \"resetFileInfo\" methods)\r\n * \"fileInfoPlugins\" runs the \"add\" method when creating the editor.\r\n * \"checkFileInfo\" method is always call just before the \"change\" event.\r\n * @private\r\n */\r\n _fileInfoPluginsCheck: null,\r\n\r\n /**\r\n * @description Array of \"resetFileInfo\" functions with the core bound\r\n * (Plugins with \"checkFileInfo\" and \"resetFileInfo\" methods)\r\n * \"checkFileInfo\" method is always call just before the \"functions.setOptions\" method.\r\n * @private\r\n */\r\n _fileInfoPluginsReset: null,\r\n\r\n /**\r\n * @description Variables for file component management\r\n * @private\r\n */\r\n _fileManager: {\r\n tags: null,\r\n regExp: null,\r\n queryString: null,\r\n pluginRegExp: null,\r\n pluginMap: null\r\n },\r\n\r\n /**\r\n * @description Elements that need to change text or className for each selection change\r\n * After creating the editor, \"activePlugins\" are added.\r\n * @property {Element} STRONG bold button\r\n * @property {Element} U underline button\r\n * @property {Element} EM italic button\r\n * @property {Element} DEL strike button\r\n * @property {Element} SUB subscript button\r\n * @property {Element} SUP superscript button\r\n * @property {Element} OUTDENT outdent button\r\n * @property {Element} INDENT indent button\r\n */\r\n commandMap: {},\r\n\r\n /**\r\n * @description CSS properties related to style tags \r\n * @private\r\n */\r\n _commandMapStyles: {\r\n STRONG: ['font-weight'],\r\n U: ['text-decoration'],\r\n EM: ['font-style'],\r\n DEL: ['text-decoration']\r\n },\r\n\r\n /**\r\n * @description Style button related to edit area\r\n * @property {Element} fullScreen fullScreen button element\r\n * @property {Element} showBlocks showBlocks button element\r\n * @property {Element} codeView codeView button element\r\n * @private\r\n */\r\n _styleCommandMap: null,\r\n\r\n /**\r\n * @private\r\n */\r\n _cleanStyleRegExp: {\r\n span: new _w.RegExp('\\\\s*[^-a-zA-Z](font-family|font-size|color|background-color)\\\\s*:[^;]+(?!;)*', 'ig'),\r\n format: new _w.RegExp('\\\\s*[^-a-zA-Z](text-align|margin-left|margin-right)\\\\s*:[^;]+(?!;)*', 'ig'),\r\n fontSizeUnit: new _w.RegExp('\\\\d+' + options.fontSizeUnit + '$', 'i'),\r\n },\r\n\r\n /**\r\n * @description Variables used internally in editor operation\r\n * @property {Boolean} isCodeView State of code view\r\n * @property {Boolean} isFullScreen State of full screen\r\n * @property {Number} innerHeight_fullScreen InnerHeight in editor when in full screen\r\n * @property {Number} resizeClientY Remember the vertical size of the editor before resizing the editor (Used when calculating during resize operation)\r\n * @property {Number} tabSize Indent size of tab (4)\r\n * @property {Number} codeIndent Indent size of Code view mode (2)\r\n * @property {Number} minResizingSize Minimum size of editing area when resized {Number} (.se-wrapper-inner {min-height: 65px;} || 65)\r\n * @property {Array} currentNodes An array of the current cursor's node structure\r\n * @private\r\n */\r\n _variable: {\r\n isChanged: false,\r\n isCodeView: false,\r\n isFullScreen: false,\r\n innerHeight_fullScreen: 0,\r\n resizeClientY: 0,\r\n tabSize: 4,\r\n codeIndent: 2,\r\n minResizingSize: util.getNumber((context.element.wysiwygFrame.style.minHeight || '65'), 0),\r\n currentNodes: [],\r\n currentNodesMap: [],\r\n _range: null,\r\n _selectionNode: null,\r\n _originCssText: context.element.topArea.style.cssText,\r\n _bodyOverflow: '',\r\n _editorAreaOriginCssText: '',\r\n _wysiwygOriginCssText: '',\r\n _codeOriginCssText: '',\r\n _fullScreenAttrs: {sticky: false, balloon: false, inline: false},\r\n _lineBreakComp: null,\r\n _lineBreakDir: ''\r\n },\r\n\r\n /**\r\n * @description Temp variable for set line attrs\r\n * @private\r\n */\r\n _formatAttrsTemp: null,\r\n\r\n /**\r\n * @description Save the current buttons states to \"allCommandButtons\" object\r\n * @private\r\n */\r\n _saveButtonStates: function () {\r\n if (!this.allCommandButtons) this.allCommandButtons = {};\r\n\r\n const currentButtons = this.context.element._buttonTray.querySelectorAll('.se-menu-list button[data-display]');\r\n for (let i = 0, element, command; i < currentButtons.length; i++) {\r\n element = currentButtons[i];\r\n command = element.getAttribute('data-command');\r\n\r\n this.allCommandButtons[command] = element;\r\n }\r\n },\r\n\r\n /**\r\n * @description Recover the current buttons states from \"allCommandButtons\" object\r\n * @private\r\n */\r\n _recoverButtonStates: function () {\r\n if (this.allCommandButtons) {\r\n const currentButtons = this.context.element._buttonTray.querySelectorAll('.se-menu-list button[data-display]'); \r\n for (let i = 0, button, command, oldButton; i < currentButtons.length; i++) {\r\n button = currentButtons[i]; \r\n command = button.getAttribute('data-command');\r\n\r\n oldButton = this.allCommandButtons[command];\r\n if (oldButton) {\r\n button.parentElement.replaceChild(oldButton, button);\r\n if (this.context.tool[command]) this.context.tool[command] = oldButton;\r\n }\r\n } \r\n }\r\n },\r\n\r\n /**\r\n * @description If the plugin is not added, add the plugin and call the 'add' function.\r\n * If the plugin is added call callBack function.\r\n * @param {String} pluginName The name of the plugin to call\r\n * @param {function} callBackFunction Function to be executed immediately after module call\r\n * @param {Element|null} _target Plugin target button (This is not necessary if you have a button list when creating the editor)\r\n */\r\n callPlugin: function (pluginName, callBackFunction, _target) {\r\n _target = _target || pluginCallButtons[pluginName];\r\n\r\n if (!this.plugins[pluginName]) {\r\n throw Error('[SUNEDITOR.core.callPlugin.fail] The called plugin does not exist or is in an invalid format. (pluginName:\"' + pluginName + '\")');\r\n } else if (!this.initPlugins[pluginName]) {\r\n this.plugins[pluginName].add(this, _target);\r\n this.initPlugins[pluginName] = true;\r\n } else if (typeof this._targetPlugins[pluginName] === 'object' && !!_target) {\r\n this.initMenuTarget(pluginName, _target, this._targetPlugins[pluginName]);\r\n }\r\n\r\n if (this.plugins[pluginName].active && !this.commandMap[pluginName] && !!_target) {\r\n this.commandMap[pluginName] = _target;\r\n this.activePlugins.push(pluginName);\r\n }\r\n \r\n if (typeof callBackFunction === 'function') callBackFunction();\r\n },\r\n\r\n /**\r\n * @description If the module is not added, add the module and call the 'add' function\r\n * @param {Array} moduleArray module object's Array [dialog, resizing]\r\n */\r\n addModule: function (moduleArray) {\r\n for (let i = 0, len = moduleArray.length, moduleName; i < len; i++) {\r\n moduleName = moduleArray[i].name;\r\n if (!this.plugins[moduleName]) {\r\n this.plugins[moduleName] = moduleArray[i];\r\n }\r\n if (!this.initPlugins[moduleName]) {\r\n this.initPlugins[moduleName] = true;\r\n if (typeof this.plugins[moduleName].add === 'function') this.plugins[moduleName].add(this);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * @description Gets the current editor-relative scroll offset.\r\n * @returns {Object} {top, left}\r\n */\r\n getGlobalScrollOffset: function () {\r\n let t = 0, l = 0;\r\n let el = context.element.topArea;\r\n while (el) {\r\n t += el.scrollTop;\r\n l += el.scrollLeft;\r\n el = el.parentElement;\r\n }\r\n \r\n el = this._shadowRoot ? this._shadowRoot.host : null;\r\n while (el) {\r\n t += el.scrollTop;\r\n l += el.scrollLeft;\r\n el = el.parentElement;\r\n }\r\n\r\n return {\r\n top: t,\r\n left: l\r\n };\r\n },\r\n\r\n /**\r\n * @description Method for managing submenu element.\r\n * You must add the \"submenu\" element using the this method at custom plugin.\r\n * @param {String} pluginName Plugin name\r\n * @param {Element|null} target Target button\r\n * @param {Element} menu Submenu element\r\n */\r\n initMenuTarget: function (pluginName, target, menu) {\r\n if (!target) {\r\n this._targetPlugins[pluginName] = menu;\r\n } else {\r\n context.element._menuTray.appendChild(menu);\r\n this._targetPlugins[pluginName] = true;\r\n this._menuTray[target.getAttribute('data-command')] = menu;\r\n }\r\n },\r\n\r\n /**\r\n * @description Enable submenu\r\n * @param {Element} element Submenu's button element to call\r\n */\r\n submenuOn: function (element) {\r\n if (this._bindedSubmenuOff) this._bindedSubmenuOff();\r\n if (this._bindControllersOff) this.controllersOff();\r\n\r\n const submenuName = this._submenuName = element.getAttribute('data-command');\r\n const menu = this.submenu = this._menuTray[submenuName];\r\n this.submenuActiveButton = element;\r\n this._setMenuPosition(element, menu);\r\n \r\n this._bindedSubmenuOff = this.submenuOff.bind(this);\r\n this.addDocEvent('mousedown', this._bindedSubmenuOff, false);\r\n\r\n if (this.plugins[submenuName].on) this.plugins[submenuName].on.call(this);\r\n this._antiBlur = true;\r\n },\r\n\r\n /**\r\n * @description Disable submenu\r\n */\r\n submenuOff: function () {\r\n this.removeDocEvent('mousedown', this._bindedSubmenuOff);\r\n this._bindedSubmenuOff = null;\r\n\r\n if (this.submenu) {\r\n this._submenuName = '';\r\n this.submenu.style.display = 'none';\r\n this.submenu = null;\r\n util.removeClass(this.submenuActiveButton, 'on');\r\n this.submenuActiveButton = null;\r\n this._notHideToolbar = false;\r\n }\r\n\r\n this._antiBlur = false;\r\n },\r\n\r\n /**\r\n * @description Disable more layer\r\n */\r\n moreLayerOff: function() {\r\n if (this._moreLayerActiveButton) {\r\n const layer = context.element.toolbar.querySelector('.' + this._moreLayerActiveButton.getAttribute('data-command'));\r\n layer.style.display = 'none';\r\n util.removeClass(this._moreLayerActiveButton, 'on');\r\n this._moreLayerActiveButton = null;\r\n }\r\n },\r\n\r\n /**\r\n * @description Enable container\r\n * @param {Element} element Container's button element to call\r\n */\r\n containerOn: function (element) {\r\n if (this._bindedContainerOff) this._bindedContainerOff();\r\n\r\n const containerName = this._containerName = element.getAttribute('data-command');\r\n const menu = this.container = this._menuTray[containerName];\r\n this.containerActiveButton = element;\r\n this._setMenuPosition(element, menu);\r\n \r\n this._bindedContainerOff = this.containerOff.bind(this);\r\n this.addDocEvent('mousedown', this._bindedContainerOff, false);\r\n\r\n if (this.plugins[containerName].on) this.plugins[containerName].on.call(this);\r\n this._antiBlur = true;\r\n },\r\n\r\n /**\r\n * @description Disable container\r\n */\r\n containerOff: function () {\r\n this.removeDocEvent('mousedown', this._bindedContainerOff);\r\n this._bindedContainerOff = null;\r\n\r\n if (this.container) {\r\n this._containerName = '';\r\n this.container.style.display = 'none';\r\n this.container = null;\r\n util.removeClass(this.containerActiveButton, 'on');\r\n this.containerActiveButton = null;\r\n this._notHideToolbar = false;\r\n }\r\n\r\n this._antiBlur = false;\r\n },\r\n\r\n /**\r\n * @description Set the menu position. (submenu, container)\r\n * @param {*} element Button element\r\n * @param {*} menu Menu element\r\n * @private\r\n */\r\n _setMenuPosition: function (element, menu) {\r\n menu.style.visibility = 'hidden';\r\n menu.style.display = 'block';\r\n menu.style.height = '';\r\n util.addClass(element, 'on');\r\n\r\n const toolbar = this.context.element.toolbar;\r\n const toolbarW = toolbar.offsetWidth;\r\n const toolbarOffset = event._getEditorOffsets(context.element.toolbar);\r\n const menuW = menu.offsetWidth;\r\n const l = element.parentElement.offsetLeft + 3;\r\n\r\n // rtl\r\n if (options.rtl) {\r\n const elementW = element.offsetWidth;\r\n const rtlW = menuW > elementW ? menuW - elementW : 0;\r\n const rtlL = rtlW > 0 ? 0 : elementW - menuW;\r\n menu.style.left = (l - rtlW + rtlL) + 'px';\r\n if (toolbarOffset.left > event._getEditorOffsets(menu).left) {\r\n menu.style.left = '0px';\r\n }\r\n } else {\r\n const overLeft = toolbarW <= menuW ? 0 : toolbarW - (l + menuW);\r\n if (overLeft < 0) menu.style.left = (l + overLeft) + 'px';\r\n else menu.style.left = l + 'px';\r\n }\r\n\r\n // get element top\r\n let t = 0;\r\n let offsetEl = element;\r\n while (offsetEl && offsetEl !== toolbar) {\r\n t += offsetEl.offsetTop;\r\n offsetEl = offsetEl.offsetParent;\r\n }\r\n\r\n const bt = t;\r\n if (this._isBalloon) {\r\n t += toolbar.offsetTop + element.offsetHeight;\r\n } else {\r\n t -= element.offsetHeight;\r\n }\r\n\r\n // set menu position\r\n const toolbarTop = toolbarOffset.top;\r\n const menuHeight = menu.offsetHeight;\r\n const scrollTop = this.getGlobalScrollOffset().top;\r\n\r\n const menuHeight_bottom = _w.innerHeight - (toolbarTop - scrollTop + bt + element.parentElement.offsetHeight);\r\n if (menuHeight_bottom < menuHeight) {\r\n let menuTop = -1 * (menuHeight - bt + 3);\r\n const insTop = toolbarTop - scrollTop + menuTop;\r\n const menuHeight_top = menuHeight + (insTop < 0 ? insTop : 0);\r\n \r\n if (menuHeight_top > menuHeight_bottom) {\r\n menu.style.height = menuHeight_top + 'px';\r\n menuTop = -1 * (menuHeight_top - bt + 3);\r\n } else {\r\n menu.style.height = menuHeight_bottom + 'px';\r\n menuTop = bt + element.parentElement.offsetHeight;\r\n }\r\n\r\n menu.style.top = menuTop + 'px';\r\n } else {\r\n menu.style.top = (bt + element.parentElement.offsetHeight) + 'px';\r\n }\r\n\r\n menu.style.visibility = '';\r\n },\r\n\r\n /**\r\n * @description Show controller at editor area (controller elements, function, \"controller target element(@Required)\", \"controller name(@Required)\", etc..)\r\n * @param {*} arguments controller elements, functions..\r\n */\r\n controllersOn: function () {\r\n if (this._bindControllersOff) this._bindControllersOff();\r\n this.controllerArray = [];\r\n\r\n for (let i = 0, arg; i < arguments.length; i++) {\r\n arg = arguments[i];\r\n if (!arg) continue;\r\n \r\n if (typeof arg === 'string') {\r\n this.currentControllerName = arg;\r\n continue;\r\n }\r\n if (typeof arg === 'function') {\r\n this.controllerArray.push(arg);\r\n continue;\r\n }\r\n if (!util.hasClass(arg, 'se-controller')) {\r\n this.currentControllerTarget = arg;\r\n this.currentFileComponentInfo = this.getFileComponent(arg);\r\n continue;\r\n }\r\n if (arg.style) {\r\n arg.style.display = 'block';\r\n if (this._shadowRoot && this._shadowRootControllerEventTarget.indexOf(arg) === -1) {\r\n arg.addEventListener('mousedown', function (e) { e.preventDefault(); e.stopPropagation(); });\r\n this._shadowRootControllerEventTarget.push(arg);\r\n }\r\n }\r\n this.controllerArray.push(arg);\r\n }\r\n\r\n this._bindControllersOff = this.controllersOff.bind(this);\r\n this.addDocEvent('mousedown', this._bindControllersOff, false);\r\n this.addDocEvent('keydown', this._bindControllersOff, false);\r\n this._antiBlur = true;\r\n\r\n if (typeof functions.showController === 'function') functions.showController(this.currentControllerName, this.controllerArray, this);\r\n },\r\n\r\n /**\r\n * @description Hide controller at editor area (link button, image resize button..)\r\n * @param {KeyboardEvent|MouseEvent|null} e Event object when called from mousedown and keydown events registered in \"core.controllersOn\"\r\n */\r\n controllersOff: function (e) {\r\n this._lineBreaker.style.display = 'none';\r\n const len = this.controllerArray.length;\r\n\r\n if (e && e.target && len > 0) {\r\n for (let i = 0; i < len; i++) {\r\n if (typeof this.controllerArray[i].contains === 'function' && this.controllerArray[i].contains(e.target)) return;\r\n }\r\n }\r\n \r\n if (this._fileManager.pluginRegExp.test(this.currentControllerName) && e && e.type === 'keydown' && e.keyCode !== 27) return;\r\n context.element.lineBreaker_t.style.display = context.element.lineBreaker_b.style.display = 'none';\r\n this._variable._lineBreakComp = null;\r\n\r\n this.currentControllerName = '';\r\n this.currentControllerTarget = null;\r\n this.currentFileComponentInfo = null;\r\n this.effectNode = null;\r\n if (!this._bindControllersOff) return;\r\n\r\n this.removeDocEvent('mousedown', this._bindControllersOff);\r\n this.removeDocEvent('keydown', this._bindControllersOff);\r\n this._bindControllersOff = null;\r\n\r\n if (len > 0) {\r\n for (let i = 0; i < len; i++) {\r\n if (typeof this.controllerArray[i] === 'function') this.controllerArray[i]();\r\n else this.controllerArray[i].style.display = 'none';\r\n }\r\n\r\n this.controllerArray = [];\r\n }\r\n\r\n this._antiBlur = false;\r\n },\r\n\r\n /**\r\n * @description Specify the position of the controller.\r\n * @param {Element} controller Controller element.\r\n * @param {Element} referEl Element that is the basis of the controller's position.\r\n * @param {String} position Type of position (\"top\" | \"bottom\")\r\n * When using the \"top\" position, there should not be an arrow on the controller.\r\n * When using the \"bottom\" position there should be an arrow on the controller.\r\n * @param {Object} addOffset These are the left and top values that need to be added specially. \r\n * This argument is required. - {left: 0, top: 0}\r\n * Please enter the value based on ltr mode.\r\n * Calculated automatically in rtl mode.\r\n */\r\n setControllerPosition: function (controller, referEl, position, addOffset) {\r\n if (options.rtl) addOffset.left *= -1;\r\n\r\n const offset = util.getOffset(referEl, context.element.wysiwygFrame);\r\n controller.style.visibility = 'hidden';\r\n controller.style.display = 'block';\r\n\r\n // Height value of the arrow element is 11px\r\n const topMargin = position === 'top' ? -(controller.offsetHeight + 2) : (referEl.offsetHeight + 12);\r\n controller.style.top = (offset.top + topMargin + addOffset.top) + 'px';\r\n\r\n const l = offset.left - context.element.wysiwygFrame.scrollLeft + addOffset.left;\r\n const controllerW = controller.offsetWidth;\r\n const referElW = referEl.offsetWidth;\r\n \r\n const allow = util.hasClass(controller.firstElementChild, 'se-arrow') ? controller.firstElementChild : null;\r\n\r\n // rtl (Width value of the arrow element is 22px)\r\n if (options.rtl) {\r\n const rtlW = (controllerW > referElW) ? controllerW - referElW : 0;\r\n const rtlL = rtlW > 0 ? 0 : referElW - controllerW;\r\n controller.style.left = (l - rtlW + rtlL) + 'px';\r\n \r\n if (rtlW > 0) {\r\n if (allow) allow.style.left = ((controllerW - 14 < 10 + rtlW) ? (controllerW - 14) : (10 + rtlW)) + 'px';\r\n }\r\n \r\n const overSize = context.element.wysiwygFrame.offsetLeft - controller.offsetLeft;\r\n if (overSize > 0) {\r\n controller.style.left = '0px';\r\n if (allow) allow.style.left = overSize + 'px';\r\n }\r\n } else {\r\n controller.style.left = l + 'px';\r\n\r\n const overSize = context.element.wysiwygFrame.offsetWidth - (controller.offsetLeft + controllerW);\r\n if (overSize < 0) {\r\n controller.style.left = (controller.offsetLeft + overSize) + 'px';\r\n if (allow) allow.style.left = (20 - overSize) + 'px';\r\n } else {\r\n if (allow) allow.style.left = '20px';\r\n }\r\n }\r\n\r\n controller.style.visibility = '';\r\n },\r\n\r\n /**\r\n * @description javascript execCommand\r\n * @param {String} command javascript execCommand function property\r\n * @param {Boolean|undefined} showDefaultUI javascript execCommand function property\r\n * @param {String|undefined} value javascript execCommand function property\r\n */\r\n execCommand: function (command, showDefaultUI, value) {\r\n this._wd.execCommand(command, showDefaultUI, (command === 'formatBlock' ? '<' + value + '>' : value));\r\n // history stack\r\n this.history.push(true);\r\n },\r\n\r\n /**\r\n * @description Focus to wysiwyg area using \"native focus function\"\r\n */\r\n nativeFocus: function () {\r\n this.__focus();\r\n this._editorRange();\r\n },\r\n\r\n /**\r\n * @description Focus method\r\n * @private\r\n */\r\n __focus: function () {\r\n const caption = util.getParentElement(this.getSelectionNode(), 'figcaption');\r\n if (caption) {\r\n caption.focus();\r\n } else {\r\n context.element.wysiwyg.focus();\r\n }\r\n },\r\n\r\n /**\r\n * @description Focus to wysiwyg area\r\n */\r\n focus: function () {\r\n if (context.element.wysiwygFrame.style.display === 'none') return;\r\n\r\n if (options.iframe) {\r\n this.nativeFocus();\r\n } else {\r\n try {\r\n const range = this.getRange();\r\n if (range.startContainer === range.endContainer && util.isWysiwygDiv(range.startContainer)) {\r\n const currentNode = range.commonAncestorContainer.children[range.startOffset];\r\n if (!util.isFormatElement(currentNode) && !util.isComponent(currentNode)) {\r\n const format = util.createElement(options.defaultTag);\r\n const br = util.createElement('BR');\r\n format.appendChild(br);\r\n context.element.wysiwyg.insertBefore(format, currentNode);\r\n this.setRange(br, 0, br, 0);\r\n return;\r\n }\r\n }\r\n this.setRange(range.startContainer, range.startOffset, range.endContainer, range.endOffset);\r\n } catch (e) {\r\n this.nativeFocus();\r\n }\r\n }\r\n\r\n event._applyTagEffects();\r\n if (this._isBalloon) event._toggleToolbarBalloon();\r\n },\r\n\r\n /**\r\n * @description If \"focusEl\" is a component, then that component is selected; if it is a format element, the last text is selected\r\n * If \"focusEdge\" is null, then selected last element\r\n * @param {Element|null} focusEl Focus element\r\n */\r\n focusEdge: function (focusEl) {\r\n if (!focusEl) focusEl = context.element.wysiwyg.lastElementChild;\r\n\r\n const fileComponentInfo = this.getFileComponent(focusEl);\r\n if (fileComponentInfo) {\r\n this.selectComponent(fileComponentInfo.target, fileComponentInfo.pluginName);\r\n } else if (focusEl) {\r\n focusEl = util.getChildElement(focusEl, function (current) { return current.childNodes.length === 0 || current.nodeType === 3; }, true);\r\n if (!focusEl) this.nativeFocus();\r\n else this.setRange(focusEl, focusEl.textContent.length, focusEl, focusEl.textContent.length);\r\n } else {\r\n this.focus();\r\n }\r\n },\r\n\r\n /**\r\n * @description Focusout to wysiwyg area (.blur())\r\n */\r\n blur: function () {\r\n if (options.iframe) {\r\n context.element.wysiwygFrame.blur();\r\n } else {\r\n context.element.wysiwyg.blur();\r\n }\r\n },\r\n\r\n /**\r\n * @description Set current editor's range object and return.\r\n * @param {Node} startCon The startContainer property of the selection object.\r\n * @param {Number} startOff The startOffset property of the selection object.\r\n * @param {Node} endCon The endContainer property of the selection object.\r\n * @param {Number} endOff The endOffset property of the selection object.\r\n * @returns {Object} Range object.\r\n */\r\n setRange: function (startCon, startOff, endCon, endOff) {\r\n if (!startCon || !endCon) return;\r\n if (startOff > startCon.textContent.length) startOff = startCon.textContent.length;\r\n if (endOff > endCon.textContent.length) endOff = endCon.textContent.length;\r\n if (util.isFormatElement(startCon)) {\r\n startCon = startCon.childNodes[startOff] || startCon.childNodes[startOff - 1] || startCon;\r\n startOff = startOff > 0 ? startCon.nodeType === 1 ? 1 : startCon.textContent ? startCon.textContent.length : 0 : 0;\r\n }\r\n if (util.isFormatElement(endCon)) {\r\n endCon = endCon.childNodes[endOff] || endCon.childNodes[endOff - 1] || endCon;\r\n endOff = endOff > 0 ? endCon.nodeType === 1 ? 1 : endCon.textContent ? endCon.textContent.length : 0 : 0;\r\n }\r\n \r\n const range = this._wd.createRange();\r\n\r\n try {\r\n range.setStart(startCon, startOff);\r\n range.setEnd(endCon, endOff);\r\n } catch (error) {\r\n console.warn('[SUNEDITOR.core.focus.error] ' + error);\r\n this.nativeFocus();\r\n return;\r\n }\r\n\r\n const selection = this.getSelection();\r\n\r\n if (selection.removeAllRanges) {\r\n selection.removeAllRanges();\r\n }\r\n\r\n selection.addRange(range);\r\n this._rangeInfo(range, this.getSelection());\r\n if (options.iframe) this.__focus();\r\n\r\n return range;\r\n },\r\n\r\n /**\r\n * @description Remove range object and button effect\r\n */\r\n removeRange: function () {\r\n this._variable._range = null;\r\n this._variable._selectionNode = null;\r\n if (this.hasFocus) this.getSelection().removeAllRanges();\r\n this._setKeyEffect([]);\r\n },\r\n\r\n /**\r\n * @description Get current editor's range object\r\n * @returns {Object}\r\n */\r\n getRange: function () {\r\n const range = this._variable._range || this._createDefaultRange();\r\n const selection = this.getSelection();\r\n if (range.collapsed === selection.isCollapsed || !context.element.wysiwyg.contains(selection.focusNode)) return range;\r\n \r\n if (selection.rangeCount > 0) {\r\n this._variable._range = selection.getRangeAt(0);\r\n return this._variable._range;\r\n } else {\r\n const sc = selection.anchorNode, ec = selection.focusNode, so = selection.anchorOffset, eo = selection.focusOffset;\r\n const compareValue = util.compareElements(sc, ec);\r\n const rightDir = compareValue.ancestor && (compareValue.result === 0 ? so <= eo : compareValue.result > 1 ? true : false);\r\n return this.setRange(\r\n rightDir ? sc : ec,\r\n rightDir ? so : eo,\r\n rightDir ? ec : sc,\r\n rightDir ? eo : so\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * @description If the \"range\" object is a non-editable area, add a line at the top of the editor and update the \"range\" object.\r\n * Returns a new \"range\" or argument \"range\".\r\n * @param {Object} range core.getRange()\r\n * @param {Element|null} container If there is \"container\" argument, it creates a line in front of the container.\r\n * @returns {Object} range\r\n */\r\n getRange_addLine: function (range, container) {\r\n if (this._selectionVoid(range)) {\r\n const wysiwyg = context.element.wysiwyg;\r\n const op = util.createElement(options.defaultTag);\r\n op.innerHTML = '<br>';\r\n wysiwyg.insertBefore(op, container && container !== wysiwyg ? container.nextElementSibling : wysiwyg.firstElementChild);\r\n this.setRange(op.firstElementChild, 0, op.firstElementChild, 1);\r\n range = this._variable._range;\r\n }\r\n return range;\r\n },\r\n\r\n /**\r\n * @description Get window selection obejct\r\n * @returns {Object}\r\n */\r\n getSelection: function () {\r\n const selection = this._shadowRoot && this._shadowRoot.getSelection ? this._shadowRoot.getSelection() : this._ww.getSelection();\r\n if (!this._variable._range && !context.element.wysiwyg.contains(selection.focusNode)) {\r\n selection.removeAllRanges();\r\n selection.addRange(this._createDefaultRange());\r\n }\r\n return selection;\r\n },\r\n\r\n /**\r\n * @description Get current select node\r\n * @returns {Node}\r\n */\r\n getSelectionNode: function () {\r\n if (!context.element.wysiwyg.contains(this._variable._selectionNode)) this._editorRange();\r\n if (!this._variable._selectionNode) {\r\n const selectionNode = util.getChildElement(context.element.wysiwyg.firstChild, function (current) { return current.childNodes.length === 0 || current.nodeType === 3; }, false);\r\n if (!selectionNode) {\r\n this._editorRange();\r\n } else {\r\n this._variable._selectionNode = selectionNode;\r\n return selectionNode;\r\n }\r\n }\r\n return this._variable._selectionNode;\r\n },\r\n\r\n /**\r\n * @description Saving the range object and the currently selected node of editor\r\n * @private\r\n */\r\n _editorRange: function () {\r\n const activeEl = this._wd.activeElement;\r\n if (util.isInputElement(activeEl)) {\r\n this._variable._selectionNode = activeEl;\r\n return activeEl;\r\n }\r\n\r\n const selection = this.getSelection();\r\n if (!selection) return null;\r\n let range = null;\r\n\r\n if (selection.rangeCount > 0) {\r\n range = selection.getRangeAt(0);\r\n } else {\r\n range = this._createDefaultRange();\r\n }\r\n\r\n this._rangeInfo(range, selection);\r\n },\r\n\r\n /**\r\n * @description Set \"range\" and \"selection\" info.\r\n * @param {Object} range range object.\r\n * @param {Object} selection selection object.\r\n */\r\n _rangeInfo: function (range, selection) {\r\n let selectionNode = null;\r\n this._variable._range = range;\r\n\r\n if (range.collapsed) {\r\n if (util.isWysiwygDiv(range.commonAncestorContainer)) selectionNode = range.commonAncestorContainer.children[range.startOffset] || range.commonAncestorContainer;\r\n else selectionNode = range.commonAncestorContainer;\r\n } else {\r\n selectionNode = selection.extentNode || selection.anchorNode;\r\n }\r\n\r\n this._variable._selectionNode = selectionNode;\r\n },\r\n\r\n /**\r\n * @description Return the range object of editor's first child node\r\n * @returns {Object}\r\n * @private\r\n */\r\n _createDefaultRange: function () {\r\n const wysiwyg = context.element.wysiwyg;\r\n const range = this._wd.createRange();\r\n\r\n let firstFormat = wysiwyg.firstElementChild;\r\n let focusEl = null;\r\n if (!firstFormat) {\r\n firstFormat = util.createElement(options.defaultTag);\r\n focusEl = util.createElement('BR');\r\n firstFormat.appendChild(focusEl);\r\n wysiwyg.appendChild(firstFormat);\r\n } else {\r\n focusEl = firstFormat.firstChild;\r\n if (!focusEl) {\r\n focusEl = util.createElement('BR');\r\n firstFormat.appendChild(focusEl);\r\n }\r\n }\r\n\r\n range.setStart(focusEl, 0);\r\n range.setEnd(focusEl, 0);\r\n \r\n return range;\r\n },\r\n\r\n /**\r\n * @description Returns true if there is no valid \"selection\".\r\n * @param {Object} range core.getRange()\r\n * @returns {Object} range\r\n * @private\r\n */\r\n _selectionVoid: function (range) {\r\n const comm = range.commonAncestorContainer;\r\n return (util.isWysiwygDiv(range.startContainer) && util.isWysiwygDiv(range.endContainer)) || /FIGURE/i.test(comm.nodeName) || this._fileManager.regExp.test(comm.nodeName) || util.isMediaComponent(comm);\r\n },\r\n\r\n /**\r\n * @description Reset range object to text node selected status.\r\n * @returns {Boolean} Returns false if there is no valid selection.\r\n * @private\r\n */\r\n _resetRangeToTextNode: function () {\r\n const range = this.getRange();\r\n if (this._selectionVoid(range)) return false;\r\n \r\n let startCon = range.startContainer;\r\n let startOff = range.startOffset;\r\n let endCon = range.endContainer;\r\n let endOff = range.endOffset;\r\n let tempCon, tempOffset, tempChild;\r\n\r\n if (util.isFormatElement(startCon)) {\r\n if (!startCon.childNodes[startOff]) {\r\n startCon = startCon.lastChild || startCon;\r\n startOff = startCon.textContent.length;\r\n } else {\r\n startCon = startCon.childNodes[startOff] || startCon;\r\n startOff = 0;\r\n }\r\n while (startCon && startCon.nodeType === 1 && startCon.firstChild) {\r\n startCon = startCon.firstChild || startCon;\r\n startOff = 0;\r\n }\r\n }\r\n if (util.isFormatElement(endCon)) {\r\n endCon = endCon.childNodes[endOff] || endCon.lastChild || endCon;\r\n while (endCon && endCon.nodeType === 1 && endCon.lastChild) {\r\n endCon = endCon.lastChild;\r\n }\r\n endOff = endCon.textContent.length;\r\n }\r\n\r\n // startContainer\r\n tempCon = util.isWysiwygDiv(startCon) ? context.element.wysiwyg.firstChild : startCon;\r\n tempOffset = startOff;\r\n\r\n if (util.isBreak(tempCon) || (tempCon.nodeType === 1 && tempCon.childNodes.length > 0)) {\r\n const onlyBreak = util.isBreak(tempCon);\r\n if (!onlyBreak) {\r\n while (tempCon && !util.isBreak(tempCon) && tempCon.nodeType === 1) {\r\n tempCon = tempCon.childNodes[tempOffset] || tempCon.nextElementSibling || tempCon.nextSibling;\r\n tempOffset = 0;\r\n }\r\n \r\n let format = util.getFormatElement(tempCon, null);\r\n if (format === util.getRangeFormatElement(format, null)) {\r\n format = util.createElement(util.getParentElement(tempCon, util.isCell) ? 'DIV' : options.defaultTag);\r\n tempCon.parentNode.insertBefore(format, tempCon);\r\n format.appendChild(tempCon);\r\n }\r\n }\r\n\r\n if (util.isBreak(tempCon)) {\r\n const emptyText = util.createTextNode(util.zeroWidthSpace);\r\n tempCon.parentNode.insertBefore(emptyText, tempCon);\r\n tempCon = emptyText;\r\n if (onlyBreak) {\r\n if (startCon === endCon) {\r\n endCon = tempCon;\r\n endOff = 1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // set startContainer\r\n startCon = tempCon;\r\n startOff = tempOffset;\r\n\r\n // endContainer\r\n tempCon = util.isWysiwygDiv(endCon) ? context.element.wysiwyg.lastChild : endCon;\r\n tempOffset = endOff;\r\n\r\n if (util.isBreak(tempCon) || (tempCon.nodeType === 1 && tempCon.childNodes.length > 0)) {\r\n const onlyBreak = util.isBreak(tempCon);\r\n if (!onlyBreak) {\r\n while (tempCon && !util.isBreak(tempCon) && tempCon.nodeType === 1) {\r\n tempChild = tempCon.childNodes;\r\n if (tempChild.length === 0) break;\r\n tempCon = tempChild[tempOffset > 0 ? tempOffset - 1 : tempOffset] || !/FIGURE/i.test(tempChild[0].nodeName) ? tempChild[0] : (tempCon.previousElementSibling || tempCon.previousSibling || startCon);\r\n tempOffset = tempOffset > 0 ? tempCon.textContent.length : tempOffset;\r\n }\r\n \r\n let format = util.getFormatElement(tempCon, null);\r\n if (format === util.getRangeFormatElement(format, null)) {\r\n format = util.createElement(util.isCell(format) ? 'DIV' : options.defaultTag);\r\n tempCon.parentNode.insertBefore(format, tempCon);\r\n format.appendChild(tempCon);\r\n }\r\n }\r\n\r\n if (util.isBreak(tempCon)) {\r\n const emptyText = util.createTextNode(util.zeroWidthSpace);\r\n tempCon.parentNode.insertBefore(emptyText, tempCon);\r\n tempCon = emptyText;\r\n tempOffset = 1;\r\n if (onlyBreak && !tempCon.previousSibling) {\r\n util.removeItem(endCon);\r\n }\r\n }\r\n }\r\n\r\n // set endContainer\r\n endCon = tempCon;\r\n endOff = tempOffset;\r\n\r\n // set Range\r\n this.setRange(startCon, startOff, endCon, endOff);\r\n return true;\r\n },\r\n\r\n /**\r\n * @description Returns a \"formatElement\"(util.isFormatElement) array from the currently selected range.\r\n * @param {Function|null} validation The validation function. (Replaces the default validation function-util.isFormatElement(current))\r\n * @returns {Array}\r\n */\r\n getSelectedElements: function (validation) {\r\n if (!this._resetRangeToTextNode()) return [];\r\n let range = this.getRange();\r\n\r\n if (util.isWysiwygDiv(range.startContainer)) {\r\n const children = context.element.wysiwyg.children;\r\n if (children.length === 0) return [];\r\n this.setRange(children[0], 0, children[children.length - 1], children[children.length - 1].textContent.trim().length);\r\n range = this.getRange();\r\n }\r\n\r\n const startCon = range.startContainer;\r\n const endCon = range.endContainer;\r\n const commonCon = range.commonAncestorContainer;\r\n\r\n // get line nodes\r\n const lineNodes = util.getListChildren(commonCon, function (current) {\r\n return validation ? validation(current) : util.isFormatElement(current);\r\n });\r\n\r\n if (!util.isWysiwygDiv(commonCon) && !util.isRangeFormatElement(commonCon)) lineNodes.unshift(util.getFormatElement(commonCon, null));\r\n if (startCon === endCon || lineNodes.length === 1) return lineNodes;\r\n\r\n let startLine = util.getFormatElement(startCon, null);\r\n let endLine = util.getFormatElement(endCon, null);\r\n let startIdx = null;\r\n let endIdx = null;\r\n \r\n const onlyTable = function (current) {\r\n return util.isTable(current) ? /^TABLE$/i.test(current.nodeName) : true;\r\n };\r\n\r\n let startRangeEl = util.getRangeFormatElement(startLine, onlyTable);\r\n let endRangeEl = util.getRangeFormatElement(endLine, onlyTable);\r\n if (util.isTable(startRangeEl) && util.isListCell(startRangeEl.parentNode)) startRangeEl = startRangeEl.parentNode;\r\n if (util.isTable(endRangeEl) && util.isListCell(endRangeEl.parentNode)) endRangeEl = endRangeEl.parentNode;\r\n \r\n const sameRange = startRangeEl === endRangeEl;\r\n for (let i = 0, len = lineNodes.length, line; i < len; i++) {\r\n line = lineNodes[i];\r\n\r\n if (startLine === line || (!sameRange && line === startRangeEl)) {\r\n startIdx = i;\r\n continue;\r\n }\r\n\r\n if (endLine === line || (!sameRange && line === endRangeEl)) {\r\n endIdx = i;\r\n break;\r\n }\r\n }\r\n\r\n if (startIdx === null) startIdx = 0;\r\n if (endIdx === null) endIdx = lineNodes.length - 1;\r\n\r\n return lineNodes.slice(startIdx, endIdx + 1);\r\n },\r\n\r\n /**\r\n * @description Get format elements and components from the selected area. (P, DIV, H[1-6], OL, UL, TABLE..)\r\n * If some of the component are included in the selection, get the entire that component.\r\n * @param {Boolean} removeDuplicate If true, if there is a parent and child tag among the selected elements, the child tag is excluded.\r\n * @returns {Array}\r\n */\r\n getSelectedElementsAndComponents: function (removeDuplicate) {\r\n const commonCon = this.getRange().commonAncestorContainer;\r\n const myComponent = util.getParentElement(commonCon, util.isComponent);\r\n const selectedLines = util.isTable(commonCon) ? \r\n this.getSelectedElements(null) :\r\n this.getSelectedElements(function (current) {\r\n const component = this.getParentElement(current, this.isComponent);\r\n return (this.isFormatElement(current) && (!component || component === myComponent)) || (this.isComponent(current) && !this.getFormatElement(current));\r\n }.bind(util));\r\n \r\n if (removeDuplicate) {\r\n for (let i = 0, len = selectedLines.length; i < len; i++) {\r\n for (let j = i - 1; j >= 0; j--) {\r\n if (selectedLines[j].contains(selectedLines[i])) {\r\n selectedLines.splice(i, 1);\r\n i--; len--;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return selectedLines;\r\n },\r\n\r\n /**\r\n * @description Determine if this offset is the edge offset of container\r\n * @param {Node} container The node of the selection object. (range.startContainer..)\r\n * @param {Number} offset The offset of the selection object. (core.getRange().startOffset...)\r\n * @param {String|undefined} dir Select check point - Both edge, Front edge or End edge. (\"front\": Front edge, \"end\": End edge, undefined: Both edge)\r\n * @returns {Boolean}\r\n */\r\n isEdgePoint: function (container, offset, dir) {\r\n return (dir !== 'end' && offset === 0) || ((!dir || dir !== 'front') && !container.nodeValue && offset === 1) || ((!dir || dir === 'end') && !!container.nodeValue && offset === container.nodeValue.length);\r\n },\r\n\r\n /**\r\n * @description Check if the container and offset values are the edges of the format tag\r\n * @param {Node} container The node of the selection object. (range.startContainer..)\r\n * @param {Number} offset The offset of the selection object. (core.getRange().startOffset...)\r\n * @param {String} dir Select check point - \"front\": Front edge, \"end\": End edge, undefined: Both edge.\r\n * @returns {Array|null}\r\n * @private\r\n */\r\n _isEdgeFormat: function (node, offset, dir) {\r\n if (!this.isEdgePoint(node, offset, dir)) return false;\r\n\r\n const result = [];\r\n dir = dir === 'front' ? 'previousSibling' : 'nextSibling';\r\n while (node && !util.isFormatElement(node) && !util.isWysiwygDiv(node)) {\r\n if (!node[dir] || (util.isBreak(node[dir]) && !node[dir][dir])) {\r\n if (node.nodeType === 1) result.push(node.cloneNode(false));\r\n node = node.parentNode;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * @description Show loading box\r\n */\r\n showLoading: function () {\r\n context.element.loading.style.display = 'block';\r\n },\r\n\r\n /**\r\n * @description Close loading box\r\n */\r\n closeLoading: function () {\r\n context.element.loading.style.display = 'none';\r\n },\r\n\r\n /**\r\n * @description Append format element to sibling node of argument element.\r\n * If the \"formatNodeName\" argument value is present, the tag of that argument value is inserted,\r\n * If not, the currently selected format tag is inserted.\r\n * @param {Element} element Insert as siblings of that element\r\n * @param {String|Element|null} formatNode Node name or node obejct to be inserted\r\n * @returns {Element}\r\n */\r\n appendFormatTag: function (element, formatNode) {\r\n if (!element || !element.parentNode) return null;\r\n\r\n const currentFormatEl = util.getFormatElement(this.getSelectionNode(), null);\r\n let oFormat = null;\r\n if (!util.isFormatElement(element) && util.isFreeFormatElement(currentFormatEl || element.parentNode)) {\r\n oFormat = util.createElement('BR');\r\n } else {\r\n const oFormatName = formatNode ? (typeof formatNode === 'string' ? formatNode : formatNode.nodeName) : (util.isFormatElement(currentFormatEl) && !util.isRangeFormatElement(currentFormatEl) && !util.isFreeFormatElement(currentFormatEl)) ? currentFormatEl.nodeName : options.defaultTag;\r\n oFormat = util.createElement(oFormatName);\r\n oFormat.innerHTML = '<br>';\r\n if ((formatNode && typeof formatNode !== 'string') || (!formatNode && util.isFormatElement(currentFormatEl))) {\r\n util.copyTagAttributes(oFormat, formatNode || currentFormatEl, ['id']);\r\n }\r\n }\r\n\r\n if (util.isCell(element)) element.insertBefore(oFormat, element.nextElementSibling);\r\n else element.parentNode.insertBefore(oFormat, element.nextElementSibling);\r\n\r\n return oFormat;\r\n },\r\n\r\n /**\r\n * @description The method to insert a element and return. (used elements : table, hr, image, video)\r\n * If \"element\" is \"HR\", insert and return the new line.\r\n * @param {Element} element Element to be inserted\r\n * @param {Boolean} notHistoryPush When true, it does not update the history stack and the selection object and return EdgeNodes (util.getEdgeChildNodes)\r\n * @param {Boolean} checkCharCount If true, if \"options.maxCharCount\" is exceeded when \"element\" is added, null is returned without addition.\r\n * @param {Boolean} notSelect If true, Do not automatically select the inserted component.\r\n * @returns {Element}\r\n */\r\n insertComponent: function (element, notHistoryPush, checkCharCount, notSelect) {\r\n if (this.isReadOnly || (checkCharCount && !this.checkCharCount(element, null))) {\r\n return null;\r\n }\r\n\r\n const r = this.removeNode();\r\n this.getRange_addLine(this.getRange(), r.container);\r\n let oNode = null;\r\n let selectionNode = this.getSelectionNode();\r\n let formatEl = util.getFormatElement(selectionNode, null);\r\n\r\n if (util.isListCell(formatEl)) {\r\n this.insertNode(element, selectionNode === formatEl ? null : r.container.nextSibling, false);\r\n if (!element.nextSibling) element.parentNode.appendChild(util.createElement('BR'));\r\n } else {\r\n if (this.getRange().collapsed && (r.container.nodeType === 3 || util.isBreak(r.container))) {\r\n const depthFormat = util.getParentElement(r.container, function (current) { return this.isRangeFormatElement(current); }.bind(util));\r\n oNode = util.splitElement(r.container, r.offset, !depthFormat ? 0 : util.getElementDepth(depthFormat) + 1);\r\n if (oNode) formatEl = oNode.previousSibling;\r\n }\r\n this.insertNode(element, util.isRangeFormatElement(formatEl) ? null : formatEl, false);\r\n if (formatEl && util.onlyZeroWidthSpace(formatEl)) util.removeItem(formatEl);\r\n }\r\n\r\n if (!notSelect) {\r\n this.setRange(element, 0, element, 0);\r\n \r\n const fileComponentInfo = this.getFileComponent(element);\r\n if (fileComponentInfo) {\r\n this.selectComponent(fileComponentInfo.target, fileComponentInfo.pluginName);\r\n } else if (oNode) {\r\n oNode = util.getEdgeChildNodes(oNode, null).sc || oNode;\r\n this.setRange(oNode, 0, oNode, 0);\r\n }\r\n }\r\n\r\n // history stack\r\n if (!notHistoryPush) this.history.push(1);\r\n\r\n return oNode || element;\r\n },\r\n\r\n /**\r\n * @description Gets the file component and that plugin name\r\n * return: {target, component, pluginName} | null\r\n * @param {Element} element Target element (figure tag, component div, file tag)\r\n * @returns {Object|null}\r\n */\r\n getFileComponent: function (element) {\r\n if (!this._fileManager.queryString || !element) return null;\r\n\r\n let target, pluginName;\r\n if (/^FIGURE$/i.test(element.nodeName) || /se-component/.test(element.className)) {\r\n target = element.querySelector(this._fileManager.queryString);\r\n }\r\n if (!target && element.nodeName && this._fileManager.regExp.test(element.nodeName)) {\r\n target = element;\r\n }\r\n\r\n if (target) {\r\n pluginName = this._fileManager.pluginMap[target.nodeName.toLowerCase()];\r\n if (pluginName) {\r\n return {\r\n target: target,\r\n component: util.getParentElement(target, util.isComponent),\r\n pluginName: pluginName\r\n };\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n /**\r\n * @description The component(image, video) is selected and the resizing module is called.\r\n * @param {Element} element Element tag (img, iframe, video)\r\n * @param {String} pluginName Plugin name (image, video)\r\n */\r\n selectComponent: function (element, pluginName) {\r\n if (util.isUneditableComponent(util.getParentElement(element, util.isComponent)) || util.isUneditableComponent(element)) return false;\r\n if (!this.hasFocus) this.focus();\r\n const plugin = this.plugins[pluginName];\r\n if (!plugin) return;\r\n _w.setTimeout(function () {\r\n if (typeof plugin.select === 'function') this.callPlugin(pluginName, plugin.select.bind(this, element), null);\r\n this._setComponentLineBreaker(element);\r\n }.bind(this));\r\n },\r\n\r\n /**\r\n * @description Set line breaker of component\r\n * @param {Element} element Element tag (img, iframe, video)\r\n * @private\r\n */\r\n _setComponentLineBreaker: function (element) {\r\n // line breaker\r\n this._lineBreaker.style.display = 'none';\r\n const container = util.getParentElement(element, util.isComponent);\r\n const t_style = context.element.lineBreaker_t.style;\r\n const b_style = context.element.lineBreaker_b.style;\r\n const target = this.context.resizing.resizeContainer.style.display === 'block' ? this.context.resizing.resizeContainer : element;\r\n\r\n const isList = util.isListCell(container.parentNode);\r\n let componentTop, wScroll, w;\r\n // top\r\n if (isList ? !container.previousSibling : !util.isFormatElement(container.previousElementSibling)) {\r\n this._variable._lineBreakComp = container;\r\n wScroll = context.element.wysiwyg.scrollTop;\r\n componentTop = util.getOffset(element, context.element.wysiwygFrame).top + wScroll;\r\n w = (target.offsetWidth / 2) / 2;\r\n\r\n t_style.top = (componentTop - wScroll - 12) + 'px';\r\n t_style.left = (util.getOffset(target).left + w) + 'px';\r\n t_style.display = 'block';\r\n } else {\r\n t_style.display = 'none';\r\n }\r\n // bottom\r\n if (isList ? !container.nextSibling : !util.isFormatElement(container.nextElementSibling)) {\r\n if (!componentTop) {\r\n this._variable._lineBreakComp = container;\r\n wScroll = context.element.wysiwyg.scrollTop;\r\n componentTop = util.getOffset(element, context.element.wysiwygFrame).top + wScroll;\r\n w = (target.offsetWidth / 2) / 2;\r\n }\r\n\r\n b_style.top = (componentTop + target.offsetHeight - wScroll - 12) + 'px';\r\n b_style.left = (util.getOffset(target).left + target.offsetWidth - w - 24) + 'px';\r\n b_style.display = 'block';\r\n } else {\r\n b_style.display = 'none';\r\n }\r\n },\r\n\r\n _checkDuplicateNode: function (oNode, parentNode) {\r\n (function recursionFunc(current) {\r\n core._dupleCheck(current, parentNode);\r\n const childNodes = current.childNodes;\r\n for (let i = 0, len = childNodes.length; i < len; i++) {\r\n recursionFunc(childNodes[i]);\r\n }\r\n })(oNode);\r\n },\r\n\r\n _dupleCheck: function (oNode, parentNode) {\r\n if (!util.isTextStyleElement(oNode)) return;\r\n \r\n const oStyles = (oNode.style.cssText.match(/[^;]+;/g) || []).map(function(v){ return v.trim(); });\r\n const nodeName = oNode.nodeName;\r\n if (/^span$/i.test(nodeName) && oStyles.length === 0) return oNode;\r\n\r\n let duple = false;\r\n (function recursionFunc(ancestor) {\r\n if (util.isWysiwygDiv(ancestor) || !util.isTextStyleElement(ancestor)) return;\r\n if (ancestor.nodeName === nodeName) {\r\n duple = true;\r\n const styles = ancestor.style.cssText.match(/[^;]+;/g) || [];\r\n for (let i = 0, len = styles.length, j; i < len; i++) {\r\n if ((j = oStyles.indexOf(styles[i].trim())) > -1) {\r\n oStyles.splice(j, 1);\r\n }\r\n }\r\n for (let i = 0, len = ancestor.classList.length; i < len; i++) {\r\n oNode.classList.remove(ancestor.classList[i]);\r\n }\r\n }\r\n\r\n recursionFunc(ancestor.parentElement);\r\n })(parentNode);\r\n\r\n if (duple) {\r\n if (!(oNode.style.cssText = oStyles.join(' '))) {\r\n oNode.setAttribute('style', '');\r\n oNode.removeAttribute('style');\r\n }\r\n if (!oNode.attributes.length) {\r\n oNode.setAttribute('data-se-duple', 'true');\r\n }\r\n }\r\n\r\n return oNode;\r\n },\r\n\r\n /**\r\n * @description Delete selected node and insert argument value node and return.\r\n * If the \"afterNode\" exists, it is inserted after the \"afterNode\"\r\n * Inserting a text node merges with both text nodes on both sides and returns a new \"{ container, startOffset, endOffset }\".\r\n * @param {Node} oNode Element to be inserted\r\n * @param {Node|null} afterNode If the node exists, it is inserted after the node\r\n * @param {Boolean} checkCharCount If true, if \"options.maxCharCount\" is exceeded when \"element\" is added, null is returned without addition.\r\n * @returns {Object|Node|null}\r\n */\r\n insertNode: function (oNode, afterNode, checkCharCount) {\r\n if (this.isReadOnly || (checkCharCount && !this.checkCharCount(oNode, null))) {\r\n return null;\r\n }\r\n\r\n let range = this.getRange();\r\n let line = util.isListCell(range.commonAncestorContainer) ? range.commonAncestorContainer : util.getFormatElement(this.getSelectionNode(), null);\r\n let insertListCell = util.isListCell(line) && (util.isListCell(oNode) || util.isList(oNode));\r\n \r\n let parentNode, originAfter, tempAfterNode, tempParentNode = null;\r\n const freeFormat = util.isFreeFormatElement(line);\r\n const isFormats = (!freeFormat && (util.isFormatElement(oNode) || util.isRangeFormatElement(oNode))) || util.isComponent(oNode);\r\n\r\n if (insertListCell) {\r\n tempAfterNode = afterNode || util.isList(oNode) ? line.lastChild : line.nextElementSibling;\r\n tempParentNode = util.isList(oNode) ? line : (tempAfterNode || line).parentNode;\r\n }\r\n\r\n if (!afterNode && (isFormats || util.isComponent(oNode) || util.isMedia(oNode))) {\r\n const isEdge = this.isEdgePoint(range.endContainer, range.endOffset, 'end');\r\n const r = this.removeNode();\r\n const container = r.container;\r\n const prevContainer = (container === r.prevContainer && range.collapsed) ? null : r.prevContainer;\r\n\r\n if (insertListCell && prevContainer) {\r\n tempParentNode = prevContainer.nodeType === 3 ? prevContainer.parentNode : prevContainer;\r\n if (tempParentNode.contains(container)) {\r\n let sameParent = true;\r\n tempAfterNode = container;\r\n while (tempAfterNode.parentNode && tempAfterNode.parentNode !== tempParentNode) {\r\n tempAfterNode = tempAfterNode.parentNode;\r\n sameParent = false;\r\n }\r\n if (sameParent && container === prevContainer) tempAfterNode = tempAfterNode.nextSibling;\r\n } else {\r\n tempAfterNode = null;\r\n }\r\n } else if (insertListCell && util.isListCell(container) && !line.parentElement) {\r\n line = util.createElement('LI');\r\n tempParentNode.appendChild(line);\r\n container.appendChild(tempParentNode);\r\n tempAfterNode = null;\r\n } else if (container.nodeType === 3 || util.isBreak(container) || insertListCell) {\r\n const depthFormat = util.getParentElement(container, function (current) { return this.isRangeFormatElement(current) || this.isListCell(current); }.bind(util));\r\n afterNode = util.splitElement(container, r.offset, !depthFormat ? 0 : util.getElementDepth(depthFormat) + 1);\r\n if (!afterNode) {\r\n tempAfterNode = afterNode = line;\r\n } else if (insertListCell) {\r\n if (line.contains(container)) {\r\n const subList = util.isList(line.lastElementChild);\r\n let newCell = null;\r\n if (!isEdge) {\r\n newCell = line.cloneNode(false);\r\n newCell.appendChild(afterNode.textContent.trim() ? afterNode : util.createTextNode(util.zeroWidthSpace));\r\n }\r\n if (subList) {\r\n if (!newCell) {\r\n newCell = line.cloneNode(false);\r\n newCell.appendChild(util.createTextNode(util.zeroWidthSpace));\r\n }\r\n newCell.appendChild(line.lastElementChild);\r\n }\r\n if (newCell) {\r\n line.parentNode.insertBefore(newCell, line.nextElementSibling);\r\n tempAfterNode = afterNode = newCell;\r\n }\r\n }\r\n } else {\r\n afterNode = afterNode.previousSibling;\r\n }\r\n }\r\n }\r\n\r\n range = (!afterNode && !isFormats) ? this.getRange_addLine(this.getRange(), null) : this.getRange();\r\n const commonCon = range.commonAncestorContainer;\r\n const startOff = range.startOffset;\r\n const endOff = range.endOffset;\r\n const formatRange = range.startContainer === commonCon && util.isFormatElement(commonCon);\r\n const startCon = formatRange ? (commonCon.childNodes[startOff] || commonCon.childNodes[0] || range.startContainer) : range.startContainer;\r\n const endCon = formatRange ? (commonCon.childNodes[endOff] || commonCon.childNodes[commonCon.childNodes.length - 1] || range.endContainer) : range.endContainer;\r\n\r\n if (!insertListCell) {\r\n if (!afterNode) {\r\n parentNode = startCon;\r\n if (startCon.nodeType === 3) {\r\n parentNode = startCon.parentNode;\r\n }\r\n \r\n /** No Select range node */\r\n if (range.collapsed) {\r\n if (commonCon.nodeType === 3) {\r\n if (commonCon.textContent.length > endOff) afterNode = commonCon.splitText(endOff);\r\n else afterNode = commonCon.nextSibling;\r\n } else {\r\n if (!util.isBreak(parentNode)) {\r\n let c = parentNode.childNodes[startOff];\r\n const focusNode = (c && c.nodeType === 3 && util.onlyZeroWidthSpace(c) && util.isBreak(c.nextSibling)) ? c.nextSibling : c;\r\n if (focusNode) {\r\n if (!focusNode.nextSibling && util.isBreak(focusNode)) {\r\n parentNode.removeChild(focusNode);\r\n afterNode = null;\r\n } else {\r\n afterNode = (util.isBreak(focusNode) && !util.isBreak(oNode)) ? focusNode : focusNode.nextSibling;\r\n }\r\n } else {\r\n afterNode = null;\r\n }\r\n } else {\r\n afterNode = parentNode;\r\n parentNode = parentNode.parentNode;\r\n }\r\n }\r\n } else { /** Select range nodes */\r\n const isSameContainer = startCon === endCon;\r\n if (isSameContainer) {\r\n if (this.isEdgePoint(endCon, endOff)) afterNode = endCon.nextSibling;\r\n else afterNode = endCon.splitText(endOff);\r\n \r\n let removeNode = startCon;\r\n if (!this.isEdgePoint(startCon, startOff)) removeNode = startCon.splitText(startOff);\r\n \r\n parentNode.removeChild(removeNode);\r\n if (parentNode.childNodes.length === 0 && isFormats) {\r\n parentNode.innerHTML = '<br>';\r\n }\r\n }\r\n else {\r\n const removedTag = this.removeNode();\r\n const container = removedTag.container;\r\n const prevContainer = removedTag.prevContainer;\r\n\r\n if (container && container.childNodes.length === 0 && isFormats) {\r\n if (util.isFormatElement(container)) {\r\n container.innerHTML = '<br>';\r\n } else if (util.isRangeFormatElement(container)) {\r\n container.innerHTML = '<' + options.defaultTag + '><br></' + options.defaultTag + '>';\r\n }\r\n }\r\n \r\n if (util.isListCell(container) && oNode.nodeType === 3) {\r\n parentNode = container;\r\n afterNode = null;\r\n } else if (!isFormats && prevContainer) {\r\n parentNode = prevContainer.nodeType === 3 ? prevContainer.parentNode : prevContainer;\r\n if (parentNode.contains(container)) {\r\n let sameParent = true;\r\n afterNode = container;\r\n while (afterNode.parentNode && afterNode.parentNode !== parentNode) {\r\n afterNode = afterNode.parentNode;\r\n sameParent = false;\r\n }\r\n if (sameParent && container === prevContainer) afterNode = afterNode.nextSibling;\r\n } else {\r\n afterNode = null;\r\n }\r\n } else if (util.isWysiwygDiv(container) && !util.isFormatElement(oNode)) {\r\n parentNode = container.appendChild(util.createElement(options.defaultTag));\r\n afterNode = null;\r\n } else {\r\n afterNode = isFormats ? endCon : container === prevContainer ? container.nextSibling : container;\r\n parentNode = (!afterNode || !afterNode.parentNode) ? commonCon : afterNode.parentNode;\r\n }\r\n \r\n while (afterNode && !util.isFormatElement(afterNode) && afterNode.parentNode !== commonCon) {\r\n afterNode = afterNode.parentNode;\r\n }\r\n }\r\n }\r\n } else { // has afterNode\r\n parentNode = afterNode.parentNode;\r\n afterNode = afterNode.nextSibling;\r\n originAfter = true;\r\n }\r\n }\r\n\r\n try {\r\n // set node\r\n if (!insertListCell) {\r\n if (util.isWysiwygDiv(afterNode) || parentNode === context.element.wysiwyg.parentNode) {\r\n parentNode = context.element.wysiwyg;\r\n afterNode = null;\r\n }\r\n \r\n if (util.isFormatElement(oNode) || util.isRangeFormatElement(oNode) || (!util.isListCell(parentNode) && util.isComponent(oNode))) {\r\n const oldParent = parentNode;\r\n if (util.isList(afterNode)) {\r\n parentNode = afterNode;\r\n afterNode = null;\r\n } else if (util.isListCell(afterNode)) {\r\n parentNode = afterNode.previousElementSibling || afterNode;\r\n } else if (!originAfter && !afterNode) {\r\n const r = this.removeNode();\r\n const container = r.container.nodeType === 3 ? (util.isListCell(util.getFormatElement(r.container, null)) ? r.container : (util.getFormatElement(r.container, null) || r.container.parentNode)) : r.container;\r\n const rangeCon = util.isWysiwygDiv(container) || util.isRangeFormatElement(container);\r\n parentNode = rangeCon ? container : container.parentNode;\r\n afterNode = rangeCon ? null : container.nextSibling;\r\n }\r\n \r\n if (oldParent.childNodes.length === 0 && parentNode !== oldParent) util.removeItem(oldParent);\r\n }\r\n \r\n if (isFormats && !freeFormat && !util.isRangeFormatElement(parentNode) && !util.isListCell(parentNode) && !util.isWysiwygDiv(parentNode)) {\r\n afterNode = parentNode.nextElementSibling;\r\n parentNode = parentNode.parentNode;\r\n }\r\n \r\n if (util.isWysiwygDiv(parentNode) && (oNode.nodeType === 3 || util.isBreak(oNode))) {\r\n const fNode = util.createElement(options.defaultTag);\r\n fNode.appendChild(oNode);\r\n oNode = fNode;\r\n }\r\n }\r\n\r\n // insert--\r\n if (insertListCell) {\r\n if (!tempParentNode.parentNode) {\r\n parentNode = context.element.wysiwyg;\r\n afterNode = null;\r\n } else {\r\n parentNode = tempParentNode;\r\n afterNode = tempAfterNode;\r\n }\r\n } else {\r\n afterNode = parentNode === afterNode ? parentNode.lastChild : afterNode;\r\n }\r\n\r\n if (util.isListCell(oNode) && !util.isList(parentNode)) {\r\n if (util.isListCell(parentNode)) {\r\n afterNode = parentNode.nextElementSibling;\r\n parentNode = parentNode.parentNode;\r\n } else {\r\n const ul = util.createElement('ol');\r\n parentNode.insertBefore(ul, afterNode);\r\n parentNode = ul;\r\n afterNode = null;\r\n }\r\n insertListCell = true;\r\n }\r\n\r\n this._checkDuplicateNode(oNode, parentNode);\r\n parentNode.insertBefore(oNode, afterNode);\r\n\r\n if (insertListCell) {\r\n if (util.onlyZeroWidthSpace(line.textContent.trim())) {\r\n util.removeItem(line);\r\n oNode = oNode.lastChild;\r\n } else {\r\n const chList = util.getArrayItem(line.children, util.isList);\r\n if (chList) {\r\n if (oNode !== chList) {\r\n oNode.appendChild(chList);\r\n oNode = chList.previousSibling;\r\n } else {\r\n parentNode.appendChild(oNode);\r\n oNode = parentNode;\r\n }\r\n\r\n if (util.onlyZeroWidthSpace(line.textContent.trim())) {\r\n util.removeItem(line);\r\n }\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n parentNode.appendChild(oNode);\r\n console.warn('[SUNEDITOR.insertNode.warn] ' + error);\r\n } finally {\r\n const dupleNodes = parentNode.querySelectorAll('[data-se-duple]');\r\n if (dupleNodes.length > 0) {\r\n for (let i = 0, len = dupleNodes.length, d, c, ch, parent; i < len; i++) {\r\n d = dupleNodes[i];\r\n ch = d.childNodes;\r\n parent = d.parentNode;\r\n\r\n while (ch[0]) {\r\n c = ch[0];\r\n parent.insertBefore(c, d);\r\n }\r\n\r\n if (d === oNode) oNode = c;\r\n util.removeItem(d);\r\n }\r\n }\r\n\r\n if ((util.isFormatElement(oNode) || util.isComponent(oNode)) && startCon === endCon) {\r\n const cItem = util.getFormatElement(commonCon, null);\r\n if (cItem && cItem.nodeType === 1 && util.isEmptyLine(cItem)) {\r\n util.removeItem(cItem);\r\n }\r\n }\r\n\r\n if (freeFormat && (util.isFormatElement(oNode) || util.isRangeFormatElement(oNode))) {\r\n oNode = this._setIntoFreeFormat(oNode);\r\n }\r\n\r\n if (!util.isComponent(oNode)) {\r\n let offset = 1;\r\n if (oNode.nodeType === 3) {\r\n const previous = oNode.previousSibling;\r\n const next = oNode.nextSibling;\r\n const previousText = (!previous || previous.nodeType === 1 || util.onlyZeroWidthSpace(previous)) ? '' : previous.textContent;\r\n const nextText = (!next || next.nodeType === 1 || util.onlyZeroWidthSpace(next)) ? '' : next.textContent;\r\n \r\n if (previous && previousText.length > 0) {\r\n oNode.textContent = previousText + oNode.textContent;\r\n util.removeItem(previous);\r\n }\r\n \r\n if (next && next.length > 0) {\r\n oNode.textContent += nextText;\r\n util.removeItem(next);\r\n }\r\n\r\n const newRange = {\r\n container: oNode,\r\n startOffset: previousText.length,\r\n endOffset: oNode.textContent.length - nextText.length\r\n };\r\n\r\n this.setRange(oNode, newRange.startOffset, oNode, newRange.endOffset);\r\n \r\n return newRange;\r\n } else if (!util.isBreak(oNode) && !util.isListCell(oNode) && util.isFormatElement(parentNode)) {\r\n let zeroWidth = null;\r\n if (!oNode.previousSibling || util.isBreak(oNode.previousSibling)) {\r\n zeroWidth = util.createTextNode(util.zeroWidthSpace);\r\n oNode.parentNode.insertBefore(zeroWidth, oNode);\r\n }\r\n \r\n if (!oNode.nextSibling || util.isBreak(oNode.nextSibling)) {\r\n zeroWidth = util.createTextNode(util.zeroWidthSpace);\r\n oNode.parentNode.insertBefore(zeroWidth, oNode.nextSibling);\r\n }\r\n \r\n if (util._isIgnoreNodeChange(oNode)) {\r\n oNode = oNode.nextSibling;\r\n offset = 0;\r\n }\r\n }\r\n \r\n this.setRange(oNode, offset, oNode, offset);\r\n }\r\n\r\n // history stack\r\n this.history.push(true);\r\n\r\n return oNode;\r\n }\r\n },\r\n\r\n _setIntoFreeFormat: function (oNode) {\r\n const parentNode = oNode.parentNode;\r\n let oNodeChildren, lastONode;\r\n \r\n while (util.isFormatElement(oNode) || util.isRangeFormatElement(oNode)) {\r\n oNodeChildren = oNode.childNodes;\r\n lastONode = null;\r\n \r\n while (oNodeChildren[0]) {\r\n lastONode = oNodeChildren[0];\r\n if (util.isFormatElement(lastONode) || util.isRangeFormatElement(lastONode)) {\r\n this._setIntoFreeFormat(lastONode);\r\n if (!oNode.parentNode) break;\r\n oNodeChildren = oNode.childNodes;\r\n continue;\r\n }\r\n \r\n parentNode.insertBefore(lastONode, oNode);\r\n }\r\n \r\n if (oNode.childNodes.length === 0) util.removeItem(oNode);\r\n oNode = util.createElement('BR');\r\n parentNode.insertBefore(oNode, lastONode.nextSibling);\r\n }\r\n\r\n return oNode;\r\n },\r\n\r\n /**\r\n * @description Delete the currently selected nodes and reset selection range\r\n * Returns {container: \"the last element after deletion\", offset: \"offset\", prevContainer: \"previousElementSibling Of the deleted area\"}\r\n * @returns {Object}\r\n */\r\n removeNode: function () {\r\n this._resetRangeToTextNode();\r\n\r\n const range = this.getRange();\r\n const isStartEdge = range.startOffset === 0;\r\n const isEndEdge = core.isEdgePoint(range.endContainer, range.endOffset, 'end');\r\n let prevContainer = null;\r\n let startPrevEl = null;\r\n let endNextEl = null;\r\n if (isStartEdge) {\r\n startPrevEl = util.getFormatElement(range.startContainer);\r\n prevContainer = startPrevEl.previousElementSibling;\r\n startPrevEl = startPrevEl ? prevContainer : startPrevEl;\r\n }\r\n if (isEndEdge) {\r\n endNextEl = util.getFormatElement(range.endContainer);\r\n endNextEl = endNextEl ? endNextEl.nextElementSibling : endNextEl;\r\n }\r\n\r\n let container, offset = 0;\r\n let startCon = range.startContainer;\r\n let endCon = range.endContainer;\r\n let startOff = range.startOffset;\r\n let endOff = range.endOffset;\r\n const commonCon = (range.commonAncestorContainer.nodeType === 3 && range.commonAncestorContainer.parentNode === startCon.parentNode) ? startCon.parentNode : range.commonAncestorContainer;\r\n if (commonCon === startCon && commonCon === endCon) {\r\n startCon = commonCon.children[startOff];\r\n endCon = commonCon.children[endOff];\r\n startOff = endOff = 0;\r\n }\r\n\r\n if (!startCon || !endCon) return {\r\n container: commonCon,\r\n offset: 0\r\n };\r\n\r\n if (startCon === endCon && range.collapsed) {\r\n if (startCon.textContent && util.onlyZeroWidthSpace(startCon.textContent.substr(startOff))) {\r\n return {\r\n container: startCon,\r\n offset: startOff,\r\n prevContainer: startCon && startCon.parentNode ? startCon : null\r\n };\r\n }\r\n }\r\n\r\n let beforeNode = null;\r\n let afterNode = null;\r\n\r\n const childNodes = util.getListChildNodes(commonCon, null);\r\n let startIndex = util.getArrayIndex(childNodes, startCon);\r\n let endIndex = util.getArrayIndex(childNodes, endCon);\r\n\r\n if (childNodes.length > 0 && startIndex > -1 && endIndex > -1) {\r\n for (let i = startIndex + 1, startNode = startCon; i >= 0; i--) {\r\n if (childNodes[i] === startNode.parentNode && childNodes[i].firstChild === startNode && startOff === 0) {\r\n startIndex = i;\r\n startNode = startNode.parentNode;\r\n }\r\n }\r\n \r\n for (let i = endIndex - 1, endNode = endCon; i > startIndex; i--) {\r\n if (childNodes[i] === endNode.parentNode && childNodes[i].nodeType === 1) {\r\n childNodes.splice(i, 1);\r\n endNode = endNode.parentNode;\r\n --endIndex;\r\n }\r\n }\r\n } else {\r\n if (childNodes.length === 0) {\r\n if (util.isFormatElement(commonCon) || util.isRangeFormatElement(commonCon) || util.isWysiwygDiv(commonCon) || util.isBreak(commonCon) || util.isMedia(commonCon)) {\r\n return {\r\n container: commonCon,\r\n offset: 0\r\n };\r\n } else if (commonCon.nodeType === 3) {\r\n return {\r\n container: commonCon,\r\n offset: endOff\r\n };\r\n }\r\n childNodes.push(commonCon);\r\n startCon = endCon = commonCon;\r\n } else {\r\n startCon = endCon = childNodes[0];\r\n if (util.isBreak(startCon) || util.onlyZeroWidthSpace(startCon)) {\r\n return {\r\n container: util.isMedia(commonCon) ? commonCon : startCon,\r\n offset: 0\r\n };\r\n }\r\n }\r\n\r\n startIndex = endIndex = 0;\r\n }\r\n\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n const item = childNodes[i];\r\n\r\n if (item.length === 0 || (item.nodeType === 3 && item.data === undefined)) {\r\n this._nodeRemoveListItem(item);\r\n continue;\r\n }\r\n\r\n if (item === startCon) {\r\n if (startCon.nodeType === 1) {\r\n if (util.isComponent(startCon)) continue;\r\n else beforeNode = util.createTextNode(startCon.textContent);\r\n } else {\r\n if (item === endCon) {\r\n beforeNode = util.createTextNode(startCon.substringData(0, startOff) + endCon.substringData(endOff, (endCon.length - endOff)));\r\n offset = startOff;\r\n } else {\r\n beforeNode = util.createTextNode(startCon.substringData(0, startOff));\r\n }\r\n }\r\n\r\n if (beforeNode.length > 0) {\r\n startCon.data = beforeNode.data;\r\n } else {\r\n this._nodeRemoveListItem(startCon);\r\n }\r\n\r\n if (item === endCon) break;\r\n continue;\r\n }\r\n\r\n if (item === endCon) {\r\n if (endCon.nodeType === 1) {\r\n if (util.isComponent(endCon)) continue;\r\n else afterNode = util.createTextNode(endCon.textContent);\r\n } else {\r\n afterNode = util.createTextNode(endCon.substringData(endOff, (endCon.length - endOff)));\r\n }\r\n\r\n if (afterNode.length > 0) {\r\n endCon.data = afterNode.data;\r\n } else {\r\n this._nodeRemoveListItem(endCon);\r\n }\r\n\r\n continue;\r\n }\r\n\r\n this._nodeRemoveListItem(item);\r\n }\r\n\r\n const endUl = util.getParentElement(endCon, 'ul');\r\n const startLi = util.getParentElement(startCon, 'li');\r\n if (endUl && startLi && startLi.contains(endUl)) {\r\n container = endUl.previousSibling;\r\n offset = container.textContent.length;\r\n } else {\r\n container = endCon && endCon.parentNode ? endCon : startCon && startCon.parentNode ? startCon : (range.endContainer || range.startContainer);\r\n offset = (!isStartEdge && !isEndEdge) ? offset : isEndEdge ? container.textContent.length : 0;\r\n }\r\n \r\n if (!util.isWysiwygDiv(container) && container.childNodes.length === 0) {\r\n const rc = util.removeItemAllParents(container, null, null);\r\n if (rc) container = rc.sc || rc.ec || context.element.wysiwyg;\r\n }\r\n\r\n if (!util.getFormatElement(container) && !(startCon && startCon.parentNode)) {\r\n if (endNextEl) {\r\n container = endNextEl;\r\n offset = 0;\r\n } else if (startPrevEl) {\r\n container = startPrevEl;\r\n offset = 1;\r\n }\r\n }\r\n\r\n // set range\r\n this.setRange(container, offset, container, offset);\r\n // history stack\r\n this.history.push(true);\r\n\r\n return {\r\n container: container,\r\n offset: offset,\r\n prevContainer: prevContainer\r\n };\r\n },\r\n\r\n _nodeRemoveListItem: function (item) {\r\n const format = util.getFormatElement(item, null);\r\n util.removeItem(item);\r\n\r\n if(!util.isListCell(format)) return;\r\n \r\n util.removeItemAllParents(format, null, null);\r\n\r\n if (format && util.isList(format.firstChild)) {\r\n format.insertBefore(util.createTextNode(util.zeroWidthSpace), format.firstChild);\r\n }\r\n },\r\n\r\n /**\r\n * @description Appended all selected format Element to the argument element and insert\r\n * @param {Element} rangeElement Element of wrap the arguments (BLOCKQUOTE...)\r\n */\r\n applyRangeFormatElement: function (rangeElement) {\r\n this.getRange_addLine(this.getRange(), null);\r\n const rangeLines = this.getSelectedElementsAndComponents(false);\r\n if (!rangeLines || rangeLines.length === 0) return;\r\n\r\n linesLoop:\r\n for (let i = 0, len = rangeLines.length, line, nested, fEl, lEl, f, l; i < len; i++) {\r\n line = rangeLines[i];\r\n if (!util.isListCell(line)) continue;\r\n\r\n nested = line.lastElementChild;\r\n if (nested && util.isListCell(line.nextElementSibling) && rangeLines.indexOf(line.nextElementSibling) > -1) {\r\n lEl = nested.lastElementChild;\r\n if (rangeLines.indexOf(lEl) > -1) {\r\n let list = null;\r\n while ((list = lEl.lastElementChild)) {\r\n if (util.isList(list)) {\r\n if (rangeLines.indexOf(list.lastElementChild) > -1) {\r\n lEl = list.lastElementChild;\r\n } else {\r\n continue linesLoop;\r\n }\r\n }\r\n }\r\n\r\n fEl = nested.firstElementChild;\r\n f = rangeLines.indexOf(fEl);\r\n l = rangeLines.indexOf(lEl);\r\n rangeLines.splice(f, (l - f) + 1);\r\n len = rangeLines.length;\r\n continue;\r\n }\r\n }\r\n }\r\n\r\n let last = rangeLines[rangeLines.length - 1];\r\n let standTag, beforeTag, pElement;\r\n\r\n if (util.isRangeFormatElement(last) || util.isFormatElement(last)) {\r\n standTag = last;\r\n } else {\r\n standTag = util.getRangeFormatElement(last, null) || util.getFormatElement(last, null);\r\n }\r\n\r\n if (util.isCell(standTag)) {\r\n beforeTag = null;\r\n pElement = standTag;\r\n } else {\r\n beforeTag = standTag.nextSibling;\r\n pElement = standTag.parentNode;\r\n }\r\n \r\n let parentDepth = util.getElementDepth(standTag);\r\n let listParent = null;\r\n const lineArr = [];\r\n const removeItems = function (parent, origin, before) {\r\n let cc = null;\r\n if (parent !== origin && !util.isTable(origin)) {\r\n if (origin && util.getElementDepth(parent) === util.getElementDepth(origin)) return before;\r\n cc = util.removeItemAllParents(origin, null, parent);\r\n }\r\n\r\n return cc ? cc.ec : before;\r\n };\r\n \r\n for (let i = 0, len = rangeLines.length, line, originParent, depth, before, nextLine, nextList, nested; i < len; i++) {\r\n line = rangeLines[i];\r\n originParent = line.parentNode;\r\n if (!originParent || rangeElement.contains(originParent)) continue;\r\n\r\n depth = util.getElementDepth(line);\r\n\r\n if (util.isList(originParent)) {\r\n if (listParent === null) {\r\n if (nextList) {\r\n listParent = nextList;\r\n nested = true;\r\n nextList = null;\r\n } else {\r\n listParent = originParent.cloneNode(false);\r\n }\r\n }\r\n\r\n lineArr.push(line);\r\n nextLine = rangeLines[i + 1];\r\n\r\n if (i === len - 1 || (nextLine && nextLine.parentNode !== originParent)) {\r\n // nested list\r\n if (nextLine && line.contains(nextLine.parentNode)) {\r\n nextList = nextLine.parentNode.cloneNode(false);\r\n }\r\n\r\n let list = originParent.parentNode, p;\r\n while (util.isList(list)) {\r\n p = util.createElement(list.nodeName);\r\n p.appendChild(listParent);\r\n listParent = p;\r\n list = list.parentNode;\r\n }\r\n\r\n const edge = this.detachRangeFormatElement(originParent, lineArr, null, true, true);\r\n\r\n if (parentDepth >= depth) {\r\n parentDepth = depth;\r\n pElement = edge.cc;\r\n beforeTag = removeItems(pElement, originParent, edge.ec);\r\n if (beforeTag) pElement = beforeTag.parentNode;\r\n } else if (pElement === edge.cc) {\r\n beforeTag = edge.ec;\r\n }\r\n\r\n if (pElement !== edge.cc) {\r\n before = removeItems(pElement, edge.cc, before);\r\n if (before !== undefined) beforeTag = before;\r\n else beforeTag = edge.cc;\r\n }\r\n\r\n for (let c = 0, cLen = edge.removeArray.length; c < cLen; c++) {\r\n listParent.appendChild(edge.removeArray[c]);\r\n }\r\n\r\n if (!nested) rangeElement.appendChild(listParent);\r\n if (nextList) edge.removeArray[edge.removeArray.length - 1].appendChild(nextList);\r\n listParent = null;\r\n nested = false;\r\n }\r\n } else {\r\n if (parentDepth >= depth) {\r\n parentDepth = depth;\r\n pElement = originParent;\r\n beforeTag = line.nextSibling;\r\n }\r\n \r\n rangeElement.appendChild(line);\r\n\r\n if (pElement !== originParent) {\r\n before = removeItems(pElement, originParent);\r\n if (before !== undefined) beforeTag = before;\r\n }\r\n }\r\n }\r\n\r\n this.effectNode = null;\r\n util.mergeSameTags(rangeElement, null, false);\r\n util.mergeNestedTags(rangeElement, function (current) { return this.isList(current); }.bind(util));\r\n\r\n // Nested list\r\n if (beforeTag && util.getElementDepth(beforeTag) > 0 && (util.isList(beforeTag.parentNode) || util.isList(beforeTag.parentNode.parentNode))) {\r\n const depthFormat = util.getParentElement(beforeTag, function (current) { return this.isRangeFormatElement(current) && !this.isList(current); }.bind(util));\r\n const splitRange = util.splitElement(beforeTag, null, !depthFormat ? 0 : util.getElementDepth(depthFormat) + 1);\r\n splitRange.parentNode.insertBefore(rangeElement, splitRange);\r\n } else { // basic\r\n pElement.insertBefore(rangeElement, beforeTag);\r\n removeItems(rangeElement, beforeTag);\r\n }\r\n\r\n const edge = util.getEdgeChildNodes(rangeElement.firstElementChild, rangeElement.lastElementChild);\r\n if (rangeLines.length > 1) {\r\n this.setRange(edge.sc, 0, edge.ec, edge.ec.textContent.length);\r\n } else {\r\n this.setRange(edge.ec, edge.ec.textContent.length, edge.ec, edge.ec.textContent.length);\r\n }\r\n\r\n // history stack\r\n this.history.push(false);\r\n },\r\n\r\n /**\r\n * @description The elements of the \"selectedFormats\" array are detached from the \"rangeElement\" element. (\"LI\" tags are converted to \"P\" tags)\r\n * When \"selectedFormats\" is null, all elements are detached and return {cc: parentNode, sc: nextSibling, ec: previousSibling, removeArray: [Array of removed elements]}.\r\n * @param {Element} rangeElement Range format element (PRE, BLOCKQUOTE, OL, UL...)\r\n * @param {Array|null} selectedFormats Array of format elements (P, DIV, LI...) to remove.\r\n * If null, Applies to all elements and return {cc: parentNode, sc: nextSibling, ec: previousSibling}\r\n * @param {Element|null} newRangeElement The node(rangeElement) to replace the currently wrapped node.\r\n * @param {Boolean} remove If true, deleted without detached.\r\n * @param {Boolean} notHistoryPush When true, it does not update the history stack and the selection object and return EdgeNodes (util.getEdgeChildNodes)\r\n * @returns {Object}\r\n */\r\n detachRangeFormatElement: function (rangeElement, selectedFormats, newRangeElement, remove, notHistoryPush) {\r\n const range = this.getRange();\r\n let so = range.startOffset;\r\n let eo = range.endOffset;\r\n\r\n let children = util.getListChildNodes(rangeElement, function (current) { return current.parentNode === rangeElement; });\r\n let parent = rangeElement.parentNode;\r\n let firstNode = null;\r\n let lastNode = null;\r\n let rangeEl = rangeElement.cloneNode(false);\r\n \r\n const removeArray = [];\r\n const newList = util.isList(newRangeElement);\r\n let insertedNew = false;\r\n let reset = false;\r\n let moveComplete = false;\r\n\r\n function appendNode (parent, insNode, sibling, originNode) {\r\n if (util.onlyZeroWidthSpace(insNode)) {\r\n insNode.innerHTML = util.zeroWidthSpace;\r\n so = eo = 1;\r\n }\r\n\r\n if (insNode.nodeType === 3) {\r\n parent.insertBefore(insNode, sibling);\r\n return insNode;\r\n }\r\n \r\n const insChildren = (moveComplete ? insNode : originNode).childNodes;\r\n let format = insNode.cloneNode(false);\r\n let first = null;\r\n let c = null;\r\n\r\n while (insChildren[0]) {\r\n c = insChildren[0];\r\n if (util._notTextNode(c) && !util.isBreak(c) && !util.isListCell(format)) {\r\n if (format.childNodes.length > 0) {\r\n if (!first) first = format;\r\n parent.insertBefore(format, sibling);\r\n format = insNode.cloneNode(false);\r\n }\r\n parent.insertBefore(c, sibling);\r\n if (!first) first = c;\r\n } else {\r\n format.appendChild(c);\r\n }\r\n }\r\n\r\n if (format.childNodes.length > 0) {\r\n if (util.isListCell(parent) && util.isListCell(format) && util.isList(sibling)) {\r\n if (newList) {\r\n first = sibling;\r\n while(sibling) {\r\n format.appendChild(sibling);\r\n sibling = sibling.nextSibling;\r\n }\r\n parent.parentNode.insertBefore(format, parent.nextElementSibling);\r\n } else {\r\n const originNext = originNode.nextElementSibling;\r\n const detachRange = util.detachNestedList(originNode, false);\r\n if ((rangeElement !== detachRange) || (originNext !== originNode.nextElementSibling)) {\r\n const fChildren = format.childNodes;\r\n while (fChildren[0]) {\r\n originNode.appendChild(fChildren[0]);\r\n }\r\n\r\n rangeElement = detachRange;\r\n reset = true;\r\n }\r\n }\r\n } else {\r\n parent.insertBefore(format, sibling);\r\n }\r\n\r\n if (!first) first = format;\r\n }\r\n\r\n return first;\r\n }\r\n\r\n // detach loop\r\n for (let i = 0, len = children.length, insNode, lineIndex, next; i < len; i++) {\r\n insNode = children[i];\r\n if (insNode.nodeType === 3 && util.isList(rangeEl)) continue;\r\n \r\n moveComplete = false;\r\n if (remove && i === 0) {\r\n if (!selectedFormats || selectedFormats.length === len || selectedFormats[0] === insNode) {\r\n firstNode = rangeElement.previousSibling;\r\n } else {\r\n firstNode = rangeEl;\r\n }\r\n }\r\n\r\n if (selectedFormats) lineIndex = selectedFormats.indexOf(insNode);\r\n if (selectedFormats && lineIndex === -1) {\r\n if (!rangeEl) rangeEl = rangeElement.cloneNode(false);\r\n rangeEl.appendChild(insNode);\r\n } else {\r\n if (selectedFormats) next = selectedFormats[lineIndex + 1];\r\n if (rangeEl && rangeEl.children.length > 0) {\r\n parent.insertBefore(rangeEl, rangeElement);\r\n rangeEl = null;\r\n }\r\n\r\n if (!newList && util.isListCell(insNode)) {\r\n if (next && util.getElementDepth(insNode) !== util.getElementDepth(next) && (util.isListCell(parent) || util.getArrayItem(insNode.children, util.isList, false))) {\r\n const insNext = insNode.nextElementSibling;\r\n const detachRange = util.detachNestedList(insNode, false);\r\n if ((rangeElement !== detachRange) || insNext !== insNode.nextElementSibling) {\r\n rangeElement = detachRange;\r\n reset = true;\r\n }\r\n } else {\r\n const inner = insNode;\r\n insNode = util.createElement(remove ? inner.nodeName : (util.isList(rangeElement.parentNode) || util.isListCell(rangeElement.parentNode)) ? 'LI' : util.isCell(rangeElement.parentNode) ? 'DIV' : options.defaultTag);\r\n const isCell = util.isListCell(insNode);\r\n const innerChildren = inner.childNodes;\r\n while (innerChildren[0]) {\r\n if (util.isList(innerChildren[0]) && !isCell) break;\r\n insNode.appendChild(innerChildren[0]);\r\n }\r\n util.copyFormatAttributes(insNode, inner);\r\n moveComplete = true;\r\n }\r\n } else {\r\n insNode = insNode.cloneNode(false);\r\n }\r\n\r\n if (!reset) {\r\n if (!remove) {\r\n if (newRangeElement) {\r\n if (!insertedNew) {\r\n parent.insertBefore(newRangeElement, rangeElement);\r\n insertedNew = true;\r\n }\r\n insNode = appendNode(newRangeElement, insNode, null, children[i]);\r\n } else {\r\n insNode = appendNode(parent, insNode, rangeElement, children[i]);\r\n }\r\n \r\n if (!reset) {\r\n if (selectedFormats) {\r\n lastNode = insNode;\r\n if (!firstNode) {\r\n firstNode = insNode;\r\n }\r\n } else if (!firstNode) {\r\n firstNode = lastNode = insNode;\r\n }\r\n }\r\n } else {\r\n removeArray.push(insNode);\r\n util.removeItem(children[i]);\r\n }\r\n\r\n if (reset) {\r\n reset = moveComplete = false;\r\n children = util.getListChildNodes(rangeElement, function (current) { return current.parentNode === rangeElement; });\r\n rangeEl = rangeElement.cloneNode(false);\r\n parent = rangeElement.parentNode;\r\n i = -1;\r\n len = children.length;\r\n continue;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const rangeParent = rangeElement.parentNode;\r\n let rangeRight = rangeElement.nextSibling;\r\n if (rangeEl && rangeEl.children.length > 0) {\r\n rangeParent.insertBefore(rangeEl, rangeRight);\r\n }\r\n \r\n if (newRangeElement) firstNode = newRangeElement.previousSibling;\r\n else if (!firstNode) firstNode = rangeElement.previousSibling;\r\n rangeRight = rangeElement.nextSibling !== rangeEl ? rangeElement.nextSibling : rangeEl ? rangeEl.nextSibling : null;\r\n\r\n if (rangeElement.children.length === 0 || rangeElement.textContent.length === 0) {\r\n util.removeItem(rangeElement);\r\n } else {\r\n util.removeEmptyNode(rangeElement, null, false);\r\n }\r\n\r\n let edge = null;\r\n if (remove) {\r\n edge = {\r\n cc: rangeParent,\r\n sc: firstNode,\r\n so: so,\r\n ec: rangeRight,\r\n eo: eo,\r\n removeArray: removeArray\r\n };\r\n } else {\r\n if (!firstNode) firstNode = lastNode;\r\n if (!lastNode) lastNode = firstNode;\r\n const childEdge = util.getEdgeChildNodes(firstNode, (lastNode.parentNode ? firstNode : lastNode));\r\n edge = {\r\n cc: (childEdge.sc || childEdge.ec).parentNode,\r\n sc: childEdge.sc,\r\n so: so,\r\n ec: childEdge.ec,\r\n eo: eo,\r\n removeArray: null\r\n };\r\n }\r\n\r\n this.effectNode = null;\r\n if (notHistoryPush) return edge;\r\n \r\n if (!remove && edge) {\r\n if (!selectedFormats) {\r\n this.setRange(edge.sc, 0, edge.sc, 0);\r\n } else {\r\n this.setRange(edge.sc, so, edge.ec, eo);\r\n }\r\n }\r\n\r\n // history stack\r\n this.history.push(false);\r\n },\r\n\r\n /**\r\n * @description \"selectedFormats\" array are detached from the list element.\r\n * The return value is applied when the first and last lines of \"selectedFormats\" are \"LI\" respectively.\r\n * @param {Array} selectedFormats Array of format elements (LI, P...) to remove.\r\n * @param {Boolean} remove If true, deleted without detached.\r\n * @returns {Object} {sc: <LI>, ec: <LI>}.\r\n */\r\n detachList: function (selectedFormats, remove) {\r\n let rangeArr = {};\r\n let listFirst = false;\r\n let listLast = false;\r\n let first = null;\r\n let last = null;\r\n const passComponent = function (current) { return !this.isComponent(current); }.bind(util);\r\n\r\n for (let i = 0, len = selectedFormats.length, r, o, lastIndex, isList; i < len; i++) {\r\n lastIndex = i === len - 1;\r\n o = util.getRangeFormatElement(selectedFormats[i], passComponent);\r\n isList = util.isList(o);\r\n if (!r && isList) {\r\n r = o;\r\n rangeArr = {r: r, f: [util.getParentElement(selectedFormats[i], 'LI')]};\r\n if (i === 0) listFirst = true;\r\n } else if (r && isList) {\r\n if (r !== o) {\r\n const edge = this.detachRangeFormatElement(rangeArr.f[0].parentNode, rangeArr.f, null, remove, true);\r\n o = selectedFormats[i].parentNode;\r\n if (listFirst) {\r\n first = edge.sc;\r\n listFirst = false;\r\n }\r\n if (lastIndex) last = edge.ec;\r\n\r\n if (isList) {\r\n r = o;\r\n rangeArr = {r: r, f: [util.getParentElement(selectedFormats[i], 'LI')]};\r\n if (lastIndex) listLast = true;\r\n } else {\r\n r = null;\r\n }\r\n } else {\r\n rangeArr.f.push(util.getParentElement(selectedFormats[i], 'LI'));\r\n if (lastIndex) listLast = true;\r\n }\r\n }\r\n\r\n if (lastIndex && util.isList(r)) {\r\n const edge = this.detachRangeFormatElement(rangeArr.f[0].parentNode, rangeArr.f, null, remove, true);\r\n if (listLast || len === 1) last = edge.ec;\r\n if (listFirst) first = edge.sc || last;\r\n }\r\n }\r\n\r\n return {\r\n sc: first,\r\n ec: last\r\n };\r\n },\r\n\r\n /**\r\n * @description Add, update, and delete nodes from selected text.\r\n * 1. If there is a node in the \"appendNode\" argument, a node with the same tags and attributes as \"appendNode\" is added to the selection text.\r\n * 2. If it is in the same tag, only the tag's attributes are changed without adding a tag.\r\n * 3. If the \"appendNode\" argument is null, the node of the selection is update or remove without adding a new node.\r\n * 4. The same style as the style attribute of the \"styleArray\" argument is deleted.\r\n * (Styles should be put with attribute names from css. [\"background-color\"])\r\n * 5. The same class name as the class attribute of the \"styleArray\" argument is deleted.\r\n * (The class name is preceded by \".\" [\".className\"])\r\n * 6. Use a list of styles and classes of \"appendNode\" in \"styleArray\" to avoid duplicate property values.\r\n * 7. If a node with all styles and classes removed has the same tag name as \"appendNode\" or \"removeNodeArray\", or \"appendNode\" is null, that node is deleted.\r\n * 8. Regardless of the style and class of the node, the tag with the same name as the \"removeNodeArray\" argument value is deleted.\r\n * 9. If the \"strictRemove\" argument is true, only nodes with all styles and classes removed from the nodes of \"removeNodeArray\" are removed.\r\n *10. It won't work if the parent node has the same class and same value style.\r\n * However, if there is a value in \"removeNodeArray\", it works and the text node is separated even if there is no node to replace.\r\n * @param {Element|null} appendNode The element to be added to the selection. If it is null, only delete the node.\r\n * @param {Array|null} styleArray The style or className attribute name Array to check (['font-size'], ['.className'], ['font-family', 'color', '.className']...])\r\n * @param {Array|null} removeNodeArray An array of node names to remove types from, remove all formats when \"appendNode\" is null and there is an empty array or null value. (['span'], ['strong', 'em'] ...])\r\n * @param {Boolean|null} strictRemove If true, only nodes with all styles and classes removed from the nodes of \"removeNodeArray\" are removed.\r\n */\r\n nodeChange: function (appendNode, styleArray, removeNodeArray, strictRemove) {\r\n this._resetRangeToTextNode();\r\n let range = this.getRange_addLine(this.getRange(), null);\r\n styleArray = styleArray && styleArray.length > 0 ? styleArray : false;\r\n removeNodeArray = removeNodeArray && removeNodeArray.length > 0 ? removeNodeArray : false;\r\n \r\n const isRemoveNode = !appendNode;\r\n const isRemoveFormat = isRemoveNode && !removeNodeArray && !styleArray;\r\n let startCon = range.startContainer;\r\n let startOff = range.startOffset;\r\n let endCon = range.endContainer;\r\n let endOff = range.endOffset;\r\n\r\n if ((isRemoveFormat && range.collapsed && util.isFormatElement(startCon.parentNode)) || (startCon === endCon && startCon.nodeType === 1 && util.isNonEditable(startCon))) {\r\n const format = startCon.parentNode;\r\n if (!util.isListCell(format) || !util.getValues(format.style).some(function(k) { return this._listKebab.indexOf(k) > -1; }.bind(this))) return;\r\n }\r\n\r\n if (range.collapsed && !isRemoveFormat) {\r\n if (startCon.nodeType === 1 && !util.isBreak(startCon) && !util.isComponent(startCon)) {\r\n let afterNode = null;\r\n const focusNode = startCon.childNodes[startOff];\r\n\r\n if (focusNode) {\r\n if (!focusNode.nextSibling) {\r\n afterNode = null;\r\n } else {\r\n afterNode = util.isBreak(focusNode) ? focusNode : focusNode.nextSibling;\r\n }\r\n }\r\n\r\n const zeroWidth = util.createTextNode(util.zeroWidthSpace);\r\n startCon.insertBefore(zeroWidth, afterNode);\r\n this.setRange(zeroWidth, 1, zeroWidth, 1);\r\n\r\n range = this.getRange();\r\n startCon = range.startContainer;\r\n startOff = range.startOffset;\r\n endCon = range.endContainer;\r\n endOff = range.endOffset;\r\n }\r\n }\r\n\r\n if (util.isFormatElement(startCon)) {\r\n startCon = startCon.childNodes[startOff] || startCon.firstChild;\r\n startOff = 0;\r\n }\r\n if (util.isFormatElement(endCon)) {\r\n endCon = endCon.childNodes[endOff] || endCon.lastChild;\r\n endOff = endCon.textContent.length;\r\n }\r\n\r\n if (isRemoveNode) {\r\n appendNode = util.createElement('DIV');\r\n }\r\n\r\n const wRegExp = _w.RegExp;\r\n const newNodeName = appendNode.nodeName;\r\n\r\n /* checked same style property */\r\n if (!isRemoveFormat && startCon === endCon && !removeNodeArray && appendNode) {\r\n let sNode = startCon;\r\n let checkCnt = 0;\r\n const checkAttrs = [];\r\n \r\n const checkStyles = appendNode.style;\r\n for (let i = 0, len = checkStyles.length; i < len; i++) {\r\n checkAttrs.push(checkStyles[i]);\r\n }\r\n\r\n const ckeckClasses = appendNode.classList;\r\n for (let i = 0, len = ckeckClasses.length; i < len; i++) {\r\n checkAttrs.push('.' + ckeckClasses[i]);\r\n }\r\n\r\n if (checkAttrs.length > 0) {\r\n while(!util.isFormatElement(sNode) && !util.isWysiwygDiv(sNode)) {\r\n for (let i = 0; i < checkAttrs.length; i++) {\r\n if (sNode.nodeType === 1) {\r\n const s = checkAttrs[i];\r\n const classReg = /^\\./.test(s) ? new wRegExp('\\\\s*' + s.replace(/^\\./, '') + '(\\\\s+|$)', 'ig') : false;\r\n \r\n const styleCheck = isRemoveNode ? !!sNode.style[s] : (!!sNode.style[s] && !!appendNode.style[s] && sNode.style[s] === appendNode.style[s]);\r\n const classCheck = classReg === false ? false : isRemoveNode ? !!sNode.className.match(classReg) : !!sNode.className.match(classReg) && !!appendNode.className.match(classReg);\r\n if (styleCheck || classCheck) {\r\n checkCnt++;\r\n }\r\n }\r\n }\r\n sNode = sNode.parentNode;\r\n }\r\n \r\n if (checkCnt >= checkAttrs.length) return;\r\n }\r\n }\r\n\r\n let start = {}, end = {};\r\n let newNode, styleRegExp = '', classRegExp = '', removeNodeRegExp = '';\r\n\r\n if (styleArray) {\r\n for (let i = 0, len = styleArray.length, s; i < len; i++) {\r\n s = styleArray[i];\r\n if (/^\\./.test(s)) {\r\n classRegExp += (classRegExp ? '|' : '\\\\s*(?:') + s.replace(/^\\./, '');\r\n } else {\r\n styleRegExp += (styleRegExp ? '|' : '(?:;|^|\\\\s)(?:') + s;\r\n }\r\n }\r\n\r\n if (styleRegExp) {\r\n styleRegExp += ')\\\\s*:[^;]*\\\\s*(?:;|$)';\r\n styleRegExp = new wRegExp(styleRegExp, 'ig');\r\n }\r\n\r\n if (classRegExp) {\r\n classRegExp += ')(?=\\\\s+|$)';\r\n classRegExp = new wRegExp(classRegExp, 'ig');\r\n }\r\n }\r\n\r\n if (removeNodeArray) {\r\n removeNodeRegExp = '^(?:' + removeNodeArray[0];\r\n for (let i = 1; i < removeNodeArray.length; i++) {\r\n removeNodeRegExp += '|' + removeNodeArray[i];\r\n }\r\n removeNodeRegExp += ')$';\r\n removeNodeRegExp = new wRegExp(removeNodeRegExp, 'i');\r\n }\r\n\r\n /** validation check function*/\r\n const wBoolean = _w.Boolean;\r\n const _removeCheck = {v: false};\r\n const validation = function (checkNode) {\r\n const vNode = checkNode.cloneNode(false);\r\n\r\n // all path\r\n if (vNode.nodeType === 3 || util.isBreak(vNode)) return vNode;\r\n // all remove\r\n if (isRemoveFormat) return null;\r\n\r\n // remove node check\r\n const tagRemove = (!removeNodeRegExp && isRemoveNode) || (removeNodeRegExp && removeNodeRegExp.test(vNode.nodeName));\r\n\r\n // tag remove\r\n if (tagRemove && !strictRemove) {\r\n _removeCheck.v = true;\r\n return null;\r\n }\r\n\r\n // style regexp\r\n const originStyle = vNode.style.cssText;\r\n let style = '';\r\n if (styleRegExp && originStyle.length > 0) {\r\n style = originStyle.replace(styleRegExp, '').trim();\r\n if (style !== originStyle) _removeCheck.v = true;\r\n }\r\n\r\n // class check\r\n const originClasses = vNode.className;\r\n let classes = '';\r\n if (classRegExp && originClasses.length > 0) {\r\n classes = originClasses.replace(classRegExp, '').trim();\r\n if (classes !== originClasses) _removeCheck.v = true;\r\n }\r\n\r\n // remove only\r\n if (isRemoveNode) {\r\n if ((classRegExp || !originClasses) && (styleRegExp || !originStyle) && !style && !classes && tagRemove) {\r\n _removeCheck.v = true;\r\n return null;\r\n }\r\n }\r\n\r\n // change\r\n if (style || classes || vNode.nodeName !== newNodeName || (wBoolean(styleRegExp) !== wBoolean(originStyle)) || (wBoolean(classRegExp) !== wBoolean(originClasses))) {\r\n if (styleRegExp && originStyle.length > 0) vNode.style.cssText = style;\r\n if (!vNode.style.cssText) {\r\n vNode.removeAttribute('style');\r\n }\r\n\r\n if (classRegExp && originClasses.length > 0) vNode.className = classes.trim();\r\n if (!vNode.className.trim()) {\r\n vNode.removeAttribute('class');\r\n }\r\n\r\n if (!vNode.style.cssText && !vNode.className && (vNode.nodeName === newNodeName || tagRemove)) {\r\n _removeCheck.v = true;\r\n return null;\r\n }\r\n\r\n return vNode;\r\n }\r\n\r\n _removeCheck.v = true;\r\n return null;\r\n };\r\n\r\n // get line nodes\r\n const lineNodes = this.getSelectedElements(null);\r\n range = this.getRange();\r\n startCon = range.startContainer;\r\n startOff = range.startOffset;\r\n endCon = range.endContainer;\r\n endOff = range.endOffset;\r\n\r\n if (!util.getFormatElement(startCon, null)) {\r\n startCon = util.getChildElement(lineNodes[0], function (current) { return current.nodeType === 3; }, false);\r\n startOff = 0;\r\n }\r\n\r\n if (!util.getFormatElement(endCon, null)) {\r\n endCon = util.getChildElement(lineNodes[lineNodes.length - 1], function (current) { return current.nodeType === 3; }, false);\r\n endOff = endCon.textContent.length;\r\n }\r\n\r\n \r\n const oneLine = util.getFormatElement(startCon, null) === util.getFormatElement(endCon, null);\r\n const endLength = lineNodes.length - (oneLine ? 0 : 1);\r\n\r\n // node Changes\r\n newNode = appendNode.cloneNode(false);\r\n\r\n const isRemoveAnchor = isRemoveFormat || (isRemoveNode && (function (arr) {\r\n for (let n = 0, len = arr.length; n < len; n++) {\r\n if (util._isMaintainedNode(arr[n]) || util._isSizeNode(arr[n])) return true;\r\n }\r\n return false;\r\n })(removeNodeArray));\r\n\r\n const isSizeNode = isRemoveNode || util._isSizeNode(newNode);\r\n const _getMaintainedNode = this._util_getMaintainedNode.bind(util, isRemoveAnchor, isSizeNode);\r\n const _isMaintainedNode = this._util_isMaintainedNode.bind(util, isRemoveAnchor, isSizeNode);\r\n\r\n // one line\r\n if (oneLine) {\r\n if (this._resetCommonListCell(lineNodes[0], styleArray)) range = this.setRange(startCon, startOff, endCon, endOff);\r\n\r\n const newRange = this._nodeChange_oneLine(lineNodes[0], newNode, validation, startCon, startOff, endCon, endOff, isRemoveFormat, isRemoveNode, range.collapsed, _removeCheck, _getMaintainedNode, _isMaintainedNode);\r\n start.container = newRange.startContainer;\r\n start.offset = newRange.startOffset;\r\n end.container = newRange.endContainer;\r\n end.offset = newRange.endOffset;\r\n \r\n if (start.container === end.container && util.onlyZeroWidthSpace(start.container)) {\r\n start.offset = end.offset = 1;\r\n }\r\n this._setCommonListStyle(newRange.ancestor, null);\r\n } else { // multi line \r\n let appliedCommonList = false;\r\n if (endLength > 0 && this._resetCommonListCell(lineNodes[endLength], styleArray)) appliedCommonList = true;\r\n if (this._resetCommonListCell(lineNodes[0], styleArray)) appliedCommonList = true;\r\n if (appliedCommonList) this.setRange(startCon, startOff, endCon, endOff);\r\n\r\n // end\r\n if (endLength > 0) {\r\n newNode = appendNode.cloneNode(false);\r\n end = this._nodeChange_endLine(lineNodes[endLength], newNode, validation, endCon, endOff, isRemoveFormat, isRemoveNode, _removeCheck, _getMaintainedNode, _isMaintainedNode);\r\n }\r\n\r\n // mid\r\n for (let i = endLength - 1, newRange; i > 0; i--) {\r\n this._resetCommonListCell(lineNodes[i], styleArray);\r\n newNode = appendNode.cloneNode(false);\r\n newRange = this._nodeChange_middleLine(lineNodes[i], newNode, validation, isRemoveFormat, isRemoveNode, _removeCheck, end.container);\r\n if (newRange.endContainer && newRange.ancestor.contains(newRange.endContainer)) {\r\n end.ancestor = null;\r\n end.container = newRange.endContainer;\r\n }\r\n this._setCommonListStyle(newRange.ancestor, null);\r\n }\r\n\r\n // start\r\n newNode = appendNode.cloneNode(false);\r\n start = this._nodeChange_startLine(lineNodes[0], newNode, validation, startCon, startOff, isRemoveFormat, isRemoveNode, _removeCheck, _getMaintainedNode, _isMaintainedNode, end.container);\r\n\r\n if (start.endContainer) {\r\n end.ancestor = null;\r\n end.container = start.endContainer;\r\n }\r\n\r\n if (endLength <= 0) {\r\n end = start;\r\n } else if (!end.container) {\r\n end.ancestor = null;\r\n end.container = start.container;\r\n end.offset = start.container.textContent.length;\r\n }\r\n\r\n this._setCommonListStyle(start.ancestor, null);\r\n this._setCommonListStyle(end.ancestor || util.getFormatElement(end.container), null);\r\n }\r\n\r\n // set range\r\n this.controllersOff();\r\n this.setRange(start.container, start.offset, end.container, end.offset);\r\n\r\n // history stack\r\n this.history.push(false);\r\n },\r\n\r\n /**\r\n * @description Reset common style of list cell\r\n * @param {Element} el List cell element. <li>\r\n * @param {Array|null} styleArray Style array\r\n * @private\r\n */\r\n _resetCommonListCell: function (el, styleArray) {\r\n if (!util.isListCell(el)) return;\r\n if (!styleArray) styleArray = this._listKebab;\r\n\r\n const children = util.getArrayItem((el).childNodes, function (current) { return !util.isBreak(current); }, true);\r\n const elStyles = el.style;\r\n \r\n const ec = [], ek = [], elKeys = util.getValues(elStyles);\r\n for (let i = 0, len = this._listKebab.length; i < len; i++) {\r\n if (elKeys.indexOf(this._listKebab[i]) > -1 && styleArray.indexOf(this._listKebab[i]) > -1) {\r\n ec.push(this._listCamel[i]);\r\n ek.push(this._listKebab[i]);\r\n }\r\n }\r\n\r\n if (!ec.length) return;\r\n\r\n // reset cell style---\r\n const refer = util.createElement('SPAN');\r\n for (let i = 0, len = ec.length; i < len; i++) {\r\n refer.style[ec[i]] = elStyles[ek[i]];\r\n elStyles.removeProperty(ek[i]);\r\n }\r\n\r\n let sel = refer.cloneNode(false);\r\n let r = null, appliedEl = false;\r\n for (let i = 0, len = children.length, c, s; i < len; i++) {\r\n c = children[i];\r\n if (options._textTagsMap[c.nodeName.toLowerCase()]) continue;\r\n\r\n s = util.getValues(c.style);\r\n if (s.length === 0 || (ec.some(function (k) {return s.indexOf(k) === -1;}) && s.some(function(k) {ec.indexOf(k) > -1;}))) {\r\n r = c.nextSibling;\r\n sel.appendChild(c);\r\n } else if (sel.childNodes.length > 0) {\r\n el.insertBefore(sel, r);\r\n sel = refer.cloneNode(false);\r\n r = null;\r\n appliedEl = true;\r\n }\r\n }\r\n \r\n if (sel.childNodes.length > 0) {\r\n el.insertBefore(sel, r);\r\n appliedEl = true;\r\n }\r\n if (!elStyles.length) {\r\n el.removeAttribute('style');\r\n }\r\n\r\n return appliedEl;\r\n },\r\n\r\n /**\r\n * @description If certain styles are applied to all child nodes of the list cell, the style of the list cell is also changed. (bold, color, size)\r\n * @param {Element} el List cell element. <li>\r\n * @param {Element|null} child Variable for recursive call. (\"null\" on the first call)\r\n * @private\r\n */\r\n _setCommonListStyle: function (el, child) {\r\n if (!util.isListCell(el)) return;\r\n \r\n const children = util.getArrayItem((child || el).childNodes, function (current) { return !util.isBreak(current); }, true);\r\n child = children[0];\r\n \r\n if (!child || children.length > 1 || child.nodeType !== 1) return;\r\n \r\n // set cell style---\r\n const childStyle = child.style;\r\n const elStyle = el.style;\r\n const nodeName = child.nodeName.toLowerCase();\r\n let appliedEl = false;\r\n\r\n // bold, italic\r\n if (options._textTagsMap[nodeName] === options._defaultCommand.bold.toLowerCase()) elStyle.fontWeight = 'bold';\r\n if (options._textTagsMap[nodeName] === options._defaultCommand.italic.toLowerCase()) elStyle.fontStyle = 'italic';\r\n\r\n // styles\r\n const cKeys = util.getValues(childStyle);\r\n if (cKeys.length > 0) {\r\n for (let i = 0, len = this._listCamel.length; i < len; i++) {\r\n if (cKeys.indexOf(this._listKebab[i]) > -1) {\r\n elStyle[this._listCamel[i]] = childStyle[this._listCamel[i]];\r\n childStyle.removeProperty(this._listKebab[i]);\r\n appliedEl = true;\r\n }\r\n }\r\n }\r\n\r\n this._setCommonListStyle(el, child);\r\n if (!appliedEl) return;\r\n\r\n // common style\r\n if (!childStyle.length) {\r\n const ch = child.childNodes;\r\n const p = child.parentNode;\r\n const n = child.nextSibling;\r\n while (ch.length > 0) {\r\n p.insertBefore(ch[0], n);\r\n }\r\n util.removeItem(child);\r\n }\r\n },\r\n\r\n /**\r\n * @description Strip remove node\r\n * @param {Node} removeNode The remove node\r\n * @private\r\n */\r\n _stripRemoveNode: function (removeNode) {\r\n const element = removeNode.parentNode;\r\n if (!removeNode || removeNode.nodeType === 3 || !element) return;\r\n \r\n const children = removeNode.childNodes;\r\n while (children[0]) {\r\n element.insertBefore(children[0], removeNode);\r\n }\r\n\r\n element.removeChild(removeNode);\r\n },\r\n\r\n /**\r\n * @description Return the parent maintained tag. (bind and use a util object)\r\n * @param {Element} element Element\r\n * @returns {Element}\r\n * @private\r\n */\r\n _util_getMaintainedNode: function (_isRemove, _isSizeNode, element) {\r\n if (!element || _isRemove) return null;\r\n return this.getParentElement(element, this._isMaintainedNode.bind(this)) || (!_isSizeNode ? this.getParentElement(element, this._isSizeNode.bind(this)) : null);\r\n },\r\n\r\n /**\r\n * @description Check if element is a tag that should be persisted. (bind and use a util object)\r\n * @param {Element} element Element\r\n * @returns {Element}\r\n * @private\r\n */\r\n _util_isMaintainedNode: function (_isRemove, _isSizeNode, element) {\r\n if (!element || _isRemove || element.nodeType !== 1) return false;\r\n const anchor = this._isMaintainedNode(element);\r\n return this.getParentElement(element, this._isMaintainedNode.bind(this)) ? anchor : (anchor || (!_isSizeNode ? this._isSizeNode(element) : false));\r\n },\r\n\r\n /**\r\n * @description wraps text nodes of line selected text.\r\n * @param {Element} element The node of the line that contains the selected text node.\r\n * @param {Element} newInnerNode The dom that will wrap the selected text area\r\n * @param {Function} validation Check if the node should be stripped.\r\n * @param {Node} startCon The startContainer property of the selection object.\r\n * @param {Number} startOff The startOffset property of the selection object.\r\n * @param {Node} endCon The endContainer property of the selection object.\r\n * @param {Number} endOff The endOffset property of the selection object.\r\n * @param {Boolean} isRemoveFormat Is the remove all formats command?\r\n * @param {Boolean} isRemoveNode \"newInnerNode\" is remove node?\r\n * @param {Boolean} collapsed range.collapsed\r\n * @returns {{ancestor: *, startContainer: *, startOffset: *, endContainer: *, endOffset: *}}\r\n * @private\r\n */\r\n _nodeChange_oneLine: function (element, newInnerNode, validation, startCon, startOff, endCon, endOff, isRemoveFormat, isRemoveNode, collapsed, _removeCheck, _getMaintainedNode, _isMaintainedNode) {\r\n // not add tag\r\n let parentCon = startCon.parentNode;\r\n while (!parentCon.nextSibling && !parentCon.previousSibling && !util.isFormatElement(parentCon.parentNode) && !util.isWysiwygDiv(parentCon.parentNode)) {\r\n if (parentCon.nodeName === newInnerNode.nodeName) break;\r\n parentCon = parentCon.parentNode;\r\n }\r\n\r\n if (!isRemoveNode && parentCon === endCon.parentNode && parentCon.nodeName === newInnerNode.nodeName) {\r\n if (util.onlyZeroWidthSpace(startCon.textContent.slice(0, startOff)) && util.onlyZeroWidthSpace(endCon.textContent.slice(endOff))) {\r\n const children = parentCon.childNodes;\r\n let sameTag = true;\r\n \r\n for (let i = 0, len = children.length, c, s, e, z; i < len; i++) {\r\n c = children[i];\r\n z = !util.onlyZeroWidthSpace(c);\r\n if (c === startCon) {\r\n s = true;\r\n continue;\r\n }\r\n if (c === endCon) {\r\n e = true;\r\n continue;\r\n }\r\n if ((!s && z) || (s && e && z)) {\r\n sameTag = false;\r\n break;\r\n }\r\n }\r\n \r\n if (sameTag) {\r\n util.copyTagAttributes(parentCon, newInnerNode);\r\n \r\n return {\r\n ancestor: element,\r\n startContainer: startCon,\r\n startOffset: startOff,\r\n endContainer: endCon,\r\n endOffset: endOff\r\n };\r\n }\r\n }\r\n }\r\n\r\n // add tag\r\n _removeCheck.v = false;\r\n const el = element;\r\n const nNodeArray = [newInnerNode];\r\n const pNode = element.cloneNode(false);\r\n const isSameNode = startCon === endCon;\r\n let startContainer = startCon;\r\n let startOffset = startOff;\r\n let endContainer = endCon;\r\n let endOffset = endOff;\r\n let startPass = false;\r\n let endPass = false;\r\n let pCurrent, newNode, appendNode, cssText, anchorNode;\r\n\r\n const wRegExp = _w.RegExp;\r\n function checkCss (vNode) {\r\n const regExp = new wRegExp('(?:;|^|\\\\s)(?:' + cssText + 'null)\\\\s*:[^;]*\\\\s*(?:;|$)', 'ig');\r\n let style = '';\r\n\r\n if (regExp && vNode.style.cssText.length > 0) {\r\n style = regExp.test(vNode.style.cssText);\r\n }\r\n \r\n return !style;\r\n }\r\n\r\n (function recursionFunc(current, ancestor) {\r\n const childNodes = current.childNodes;\r\n\r\n for (let i = 0, len = childNodes.length, vNode; i < len; i++) {\r\n let child = childNodes[i];\r\n if (!child) continue;\r\n let coverNode = ancestor;\r\n let cloneNode;\r\n\r\n // startContainer\r\n if (!startPass && child === startContainer) {\r\n let line = pNode;\r\n anchorNode = _getMaintainedNode(child);\r\n const prevNode = util.createTextNode(startContainer.nodeType === 1 ? '' : startContainer.substringData(0, startOffset));\r\n const textNode = util.createTextNode(startContainer.nodeType === 1 ? '' : startContainer.substringData(startOffset, \r\n isSameNode ? \r\n (endOffset >= startOffset ? endOffset - startOffset : startContainer.data.length - startOffset) : \r\n startContainer.data.length - startOffset)\r\n );\r\n\r\n if (anchorNode) {\r\n const a = _getMaintainedNode(ancestor);\r\n if (a && a.parentNode !== line) {\r\n let m = a;\r\n let p = null;\r\n while (m.parentNode !== line) {\r\n ancestor = p = m.parentNode.cloneNode(false);\r\n while(m.childNodes[0]) {\r\n p.appendChild(m.childNodes[0]);\r\n }\r\n m.appendChild(p);\r\n m = m.parentNode;\r\n }\r\n m.parentNode.appendChild(a);\r\n }\r\n anchorNode = anchorNode.cloneNode(false);\r\n }\r\n \r\n if (!util.onlyZeroWidthSpace(prevNode)) {\r\n ancestor.appendChild(prevNode);\r\n }\r\n\r\n const prevAnchorNode = _getMaintainedNode(ancestor);\r\n if (!!prevAnchorNode) anchorNode = prevAnchorNode;\r\n if (anchorNode) line = anchorNode;\r\n\r\n newNode = child;\r\n pCurrent = [];\r\n cssText = '';\r\n while (newNode !== line && newNode !== el && newNode !== null) {\r\n vNode = _isMaintainedNode(newNode) ? null : validation(newNode);\r\n if (vNode && newNode.nodeType === 1 && checkCss(newNode)) {\r\n pCurrent.push(vNode);\r\n cssText += newNode.style.cssText.substr(0, newNode.style.cssText.indexOf(':')) + '|';\r\n }\r\n newNode = newNode.parentNode;\r\n }\r\n\r\n const childNode = pCurrent.pop() || textNode;\r\n appendNode = newNode = childNode;\r\n while (pCurrent.length > 0) {\r\n newNode = pCurrent.pop();\r\n appendNode.appendChild(newNode);\r\n appendNode = newNode;\r\n }\r\n\r\n newInnerNode.appendChild(childNode);\r\n line.appendChild(newInnerNode);\r\n\r\n if (anchorNode && !_getMaintainedNode(endContainer)) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n pNode.appendChild(newInnerNode);\r\n nNodeArray.push(newInnerNode);\r\n }\r\n\r\n startContainer = textNode;\r\n startOffset = 0;\r\n startPass = true;\r\n\r\n if (newNode !== textNode) newNode.appendChild(startContainer);\r\n if (!isSameNode) continue;\r\n }\r\n\r\n // endContainer\r\n if (!endPass && child === endContainer) {\r\n anchorNode = _getMaintainedNode(child);\r\n const afterNode = util.createTextNode(endContainer.nodeType === 1 ? '' : endContainer.substringData(endOffset, (endContainer.length - endOffset)));\r\n const textNode = util.createTextNode(isSameNode || endContainer.nodeType === 1 ? '' : endContainer.substringData(0, endOffset));\r\n\r\n if (anchorNode) {\r\n anchorNode = anchorNode.cloneNode(false);\r\n } else if (_isMaintainedNode(newInnerNode.parentNode) && !anchorNode) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n pNode.appendChild(newInnerNode);\r\n nNodeArray.push(newInnerNode);\r\n }\r\n\r\n if (!util.onlyZeroWidthSpace(afterNode)) {\r\n newNode = child;\r\n cssText = '';\r\n pCurrent = [];\r\n const anchors = [];\r\n while (newNode !== pNode && newNode !== el && newNode !== null) {\r\n if (newNode.nodeType === 1 && checkCss(newNode)) {\r\n if (_isMaintainedNode(newNode)) anchors.push(newNode.cloneNode(false));\r\n else pCurrent.push(newNode.cloneNode(false));\r\n cssText += newNode.style.cssText.substr(0, newNode.style.cssText.indexOf(':')) + '|';\r\n }\r\n newNode = newNode.parentNode;\r\n }\r\n pCurrent = pCurrent.concat(anchors);\r\n\r\n cloneNode = appendNode = newNode = pCurrent.pop() || afterNode;\r\n while (pCurrent.length > 0) {\r\n newNode = pCurrent.pop();\r\n appendNode.appendChild(newNode);\r\n appendNode = newNode;\r\n }\r\n\r\n pNode.appendChild(cloneNode);\r\n newNode.textContent = afterNode.data;\r\n }\r\n\r\n if (anchorNode && cloneNode) {\r\n const afterAnchorNode = _getMaintainedNode(cloneNode);\r\n if (afterAnchorNode) {\r\n anchorNode = afterAnchorNode;\r\n }\r\n }\r\n\r\n newNode = child;\r\n pCurrent = [];\r\n cssText = '';\r\n while (newNode !== pNode && newNode !== el && newNode !== null) {\r\n vNode = _isMaintainedNode(newNode) ? null : validation(newNode);\r\n if (vNode && newNode.nodeType === 1 && checkCss(newNode)) {\r\n pCurrent.push(vNode);\r\n cssText += newNode.style.cssText.substr(0, newNode.style.cssText.indexOf(':')) + '|';\r\n }\r\n newNode = newNode.parentNode;\r\n }\r\n\r\n const childNode = pCurrent.pop() || textNode;\r\n appendNode = newNode = childNode;\r\n while (pCurrent.length > 0) {\r\n newNode = pCurrent.pop();\r\n appendNode.appendChild(newNode);\r\n appendNode = newNode;\r\n }\r\n\r\n if (anchorNode) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n newInnerNode.appendChild(childNode);\r\n anchorNode.insertBefore(newInnerNode, anchorNode.firstChild);\r\n pNode.appendChild(anchorNode);\r\n nNodeArray.push(newInnerNode);\r\n anchorNode = null;\r\n } else {\r\n newInnerNode.appendChild(childNode);\r\n }\r\n\r\n endContainer = textNode;\r\n endOffset = textNode.data.length;\r\n endPass = true;\r\n\r\n if (!isRemoveFormat && collapsed) {\r\n newInnerNode = textNode;\r\n textNode.textContent = util.zeroWidthSpace;\r\n }\r\n\r\n if (newNode !== textNode) newNode.appendChild(endContainer);\r\n continue;\r\n }\r\n\r\n // other\r\n if (startPass) {\r\n if (child.nodeType === 1 && !util.isBreak(child)) {\r\n if (util._isIgnoreNodeChange(child)) {\r\n pNode.appendChild(child.cloneNode(true));\r\n if (!collapsed) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n pNode.appendChild(newInnerNode);\r\n nNodeArray.push(newInnerNode);\r\n }\r\n } else {\r\n recursionFunc(child, child);\r\n }\r\n continue;\r\n }\r\n\r\n newNode = child;\r\n pCurrent = [];\r\n cssText = '';\r\n const anchors = [];\r\n while (newNode.parentNode !== null && newNode !== el && newNode !== newInnerNode) {\r\n vNode = endPass ? newNode.cloneNode(false) : validation(newNode);\r\n if (newNode.nodeType === 1 && !util.isBreak(child) && vNode && checkCss(newNode)) {\r\n if (_isMaintainedNode(newNode)) {\r\n if (!anchorNode) anchors.push(vNode);\r\n } else {\r\n pCurrent.push(vNode);\r\n }\r\n cssText += newNode.style.cssText.substr(0, newNode.style.cssText.indexOf(':')) + '|';\r\n }\r\n newNode = newNode.parentNode;\r\n }\r\n pCurrent = pCurrent.concat(anchors);\r\n\r\n const childNode = pCurrent.pop() || child;\r\n appendNode = newNode = childNode;\r\n while (pCurrent.length > 0) {\r\n newNode = pCurrent.pop();\r\n appendNode.appendChild(newNode);\r\n appendNode = newNode;\r\n }\r\n \r\n if (_isMaintainedNode(newInnerNode.parentNode) && !_isMaintainedNode(childNode) && !util.onlyZeroWidthSpace(newInnerNode)) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n pNode.appendChild(newInnerNode);\r\n nNodeArray.push(newInnerNode);\r\n }\r\n \r\n if (!endPass && !anchorNode && _isMaintainedNode(childNode)) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n const aChildren = childNode.childNodes;\r\n for (let a = 0, aLen = aChildren.length; a < aLen; a++) {\r\n newInnerNode.appendChild(aChildren[a]);\r\n }\r\n childNode.appendChild(newInnerNode);\r\n pNode.appendChild(childNode);\r\n nNodeArray.push(newInnerNode);\r\n if (newInnerNode.children.length > 0) ancestor = newNode;\r\n else ancestor = newInnerNode;\r\n } else if (childNode === child) {\r\n if (!endPass) ancestor = newInnerNode;\r\n else ancestor = pNode;\r\n } else if (endPass) {\r\n pNode.appendChild(childNode);\r\n ancestor = newNode;\r\n } else {\r\n newInnerNode.appendChild(childNode);\r\n ancestor = newNode;\r\n }\r\n\r\n if (anchorNode && child.nodeType === 3) {\r\n if (_getMaintainedNode(child)) {\r\n const ancestorAnchorNode = util.getParentElement(ancestor, function (current) {return this._isMaintainedNode(current.parentNode) || current.parentNode === pNode;}.bind(util));\r\n anchorNode.appendChild(ancestorAnchorNode);\r\n newInnerNode = ancestorAnchorNode.cloneNode(false);\r\n nNodeArray.push(newInnerNode);\r\n pNode.appendChild(newInnerNode);\r\n } else {\r\n anchorNode = null;\r\n }\r\n }\r\n }\r\n\r\n cloneNode = child.cloneNode(false);\r\n ancestor.appendChild(cloneNode);\r\n if (child.nodeType === 1 && !util.isBreak(child)) coverNode = cloneNode;\r\n\r\n recursionFunc(child, coverNode);\r\n }\r\n })(element, pNode);\r\n\r\n // not remove tag\r\n if (isRemoveNode && !isRemoveFormat && !_removeCheck.v) {\r\n return {\r\n ancestor: element,\r\n startContainer: startCon,\r\n startOffset: startOff,\r\n endContainer: endCon,\r\n endOffset: endOff\r\n };\r\n }\r\n\r\n isRemoveFormat = isRemoveFormat && isRemoveNode;\r\n\r\n if (isRemoveFormat) {\r\n for (let i = 0; i < nNodeArray.length; i++) {\r\n let removeNode = nNodeArray[i];\r\n let textNode, textNode_s, textNode_e;\r\n \r\n if (collapsed) {\r\n textNode = util.createTextNode(util.zeroWidthSpace);\r\n pNode.replaceChild(textNode, removeNode);\r\n } else {\r\n const rChildren = removeNode.childNodes;\r\n textNode_s = rChildren[0];\r\n while (rChildren[0]) {\r\n textNode_e = rChildren[0];\r\n pNode.insertBefore(textNode_e, removeNode);\r\n }\r\n util.removeItem(removeNode);\r\n }\r\n\r\n if (i === 0) {\r\n if (collapsed) {\r\n startContainer = endContainer = textNode;\r\n } else {\r\n startContainer = textNode_s;\r\n endContainer = textNode_e;\r\n }\r\n }\r\n }\r\n } else {\r\n if (isRemoveNode) {\r\n for (let i = 0; i < nNodeArray.length; i++) {\r\n this._stripRemoveNode(nNodeArray[i]);\r\n }\r\n }\r\n \r\n if (collapsed) {\r\n startContainer = endContainer = newInnerNode;\r\n }\r\n }\r\n\r\n util.removeEmptyNode(pNode, newInnerNode, false);\r\n\r\n if (collapsed) {\r\n startOffset = startContainer.textContent.length;\r\n endOffset = endContainer.textContent.length;\r\n }\r\n\r\n // endContainer reset\r\n const endConReset = isRemoveFormat || endContainer.textContent.length === 0;\r\n\r\n if (!util.isBreak(endContainer) && endContainer.textContent.length === 0) {\r\n util.removeItem(endContainer);\r\n endContainer = startContainer;\r\n }\r\n endOffset = endConReset ? endContainer.textContent.length : endOffset;\r\n\r\n // node change\r\n const newStartOffset = {s: 0, e: 0};\r\n const startPath = util.getNodePath(startContainer, pNode, newStartOffset);\r\n\r\n const mergeEndCon = !endContainer.parentNode;\r\n if (mergeEndCon) endContainer = startContainer;\r\n const newEndOffset = {s: 0, e: 0};\r\n const endPath = util.getNodePath(endContainer , pNode, (!mergeEndCon && !endConReset) ? newEndOffset : null);\r\n\r\n startOffset += newStartOffset.s;\r\n endOffset = (collapsed ? startOffset : mergeEndCon ? startContainer.textContent.length : endConReset ? endOffset + newStartOffset.s : endOffset + newEndOffset.s);\r\n\r\n // tag merge\r\n const newOffsets = util.mergeSameTags(pNode, [startPath, endPath], true);\r\n\r\n element.parentNode.replaceChild(pNode, element);\r\n\r\n startContainer = util.getNodeFromPath(startPath, pNode);\r\n endContainer = util.getNodeFromPath(endPath, pNode);\r\n\r\n return {\r\n ancestor: pNode,\r\n startContainer: startContainer,\r\n startOffset: startOffset + newOffsets[0],\r\n endContainer: endContainer,\r\n endOffset: endOffset + newOffsets[1]\r\n };\r\n },\r\n\r\n /**\r\n * @description wraps first line selected text.\r\n * @param {Element} element The node of the line that contains the selected text node.\r\n * @param {Element} newInnerNode The dom that will wrap the selected text area\r\n * @param {Function} validation Check if the node should be stripped.\r\n * @param {Node} startCon The startContainer property of the selection object.\r\n * @param {Number} startOff The startOffset property of the selection object.\r\n * @param {Boolean} isRemoveFormat Is the remove all formats command?\r\n * @param {Boolean} isRemoveNode \"newInnerNode\" is remove node?\r\n * @returns {null|Node} If end container is renewed, returned renewed node\r\n * @returns {Object} { ancestor, container, offset, endContainer }\r\n * @private\r\n */\r\n _nodeChange_startLine: function (element, newInnerNode, validation, startCon, startOff, isRemoveFormat, isRemoveNode, _removeCheck, _getMaintainedNode, _isMaintainedNode, _endContainer) {\r\n // not add tag\r\n let parentCon = startCon.parentNode;\r\n while (!parentCon.nextSibling && !parentCon.previousSibling && !util.isFormatElement(parentCon.parentNode) && !util.isWysiwygDiv(parentCon.parentNode)) {\r\n if (parentCon.nodeName === newInnerNode.nodeName) break;\r\n parentCon = parentCon.parentNode;\r\n }\r\n\r\n if (!isRemoveNode && parentCon.nodeName === newInnerNode.nodeName && !util.isFormatElement(parentCon) && !parentCon.nextSibling && util.onlyZeroWidthSpace(startCon.textContent.slice(0, startOff))) {\r\n let sameTag = true;\r\n let s = startCon.previousSibling;\r\n while (s) {\r\n if (!util.onlyZeroWidthSpace(s)) {\r\n sameTag = false;\r\n break;\r\n }\r\n s = s.previousSibling;\r\n }\r\n\r\n if (sameTag) {\r\n util.copyTagAttributes(parentCon, newInnerNode);\r\n \r\n return {\r\n ancestor: element,\r\n container: startCon,\r\n offset: startOff\r\n };\r\n }\r\n }\r\n\r\n // add tag\r\n _removeCheck.v = false;\r\n const el = element;\r\n const nNodeArray = [newInnerNode];\r\n const pNode = element.cloneNode(false);\r\n\r\n let container = startCon;\r\n let offset = startOff;\r\n let passNode = false;\r\n let pCurrent, newNode, appendNode, anchorNode;\r\n\r\n (function recursionFunc(current, ancestor) {\r\n const childNodes = current.childNodes;\r\n\r\n for (let i = 0, len = childNodes.length, vNode, cloneChild; i < len; i++) {\r\n const child = childNodes[i];\r\n if (!child) continue;\r\n let coverNode = ancestor;\r\n\r\n if (passNode && !util.isBreak(child)) {\r\n if (child.nodeType === 1) {\r\n if (util._isIgnoreNodeChange(child)) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n cloneChild = child.cloneNode(true);\r\n pNode.appendChild(cloneChild);\r\n pNode.appendChild(newInnerNode);\r\n nNodeArray.push(newInnerNode);\r\n\r\n // end container\r\n if (_endContainer && child.contains(_endContainer)) {\r\n const endPath = util.getNodePath(_endContainer, child);\r\n _endContainer = util.getNodeFromPath(endPath, cloneChild);\r\n }\r\n } else {\r\n recursionFunc(child, child);\r\n }\r\n continue;\r\n }\r\n\r\n newNode = child;\r\n pCurrent = [];\r\n const anchors = [];\r\n while (newNode.parentNode !== null && newNode !== el && newNode !== newInnerNode) {\r\n vNode = validation(newNode);\r\n if (newNode.nodeType === 1 && vNode) {\r\n if (_isMaintainedNode(newNode)) {\r\n if (!anchorNode) anchors.push(vNode);\r\n } else {\r\n pCurrent.push(vNode);\r\n }\r\n }\r\n newNode = newNode.parentNode;\r\n }\r\n pCurrent = pCurrent.concat(anchors);\r\n\r\n const isTopNode = pCurrent.length > 0;\r\n const childNode = pCurrent.pop() || child;\r\n appendNode = newNode = childNode;\r\n while (pCurrent.length > 0) {\r\n newNode = pCurrent.pop();\r\n appendNode.appendChild(newNode);\r\n appendNode = newNode;\r\n }\r\n\r\n if (_isMaintainedNode(newInnerNode.parentNode) && !_isMaintainedNode(childNode)) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n pNode.appendChild(newInnerNode);\r\n nNodeArray.push(newInnerNode);\r\n }\r\n \r\n if (!anchorNode && _isMaintainedNode(childNode)) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n const aChildren = childNode.childNodes;\r\n for (let a = 0, aLen = aChildren.length; a < aLen; a++) {\r\n newInnerNode.appendChild(aChildren[a]);\r\n }\r\n childNode.appendChild(newInnerNode);\r\n pNode.appendChild(childNode);\r\n ancestor = !_isMaintainedNode(newNode) ? newNode : newInnerNode;\r\n nNodeArray.push(newInnerNode);\r\n } else if (isTopNode) {\r\n newInnerNode.appendChild(childNode);\r\n ancestor = newNode;\r\n } else {\r\n ancestor = newInnerNode;\r\n }\r\n\r\n if (anchorNode && child.nodeType === 3) {\r\n if (_getMaintainedNode(child)) {\r\n const ancestorAnchorNode = util.getParentElement(ancestor, function (current) {return this._isMaintainedNode(current.parentNode) || current.parentNode === pNode;}.bind(util));\r\n anchorNode.appendChild(ancestorAnchorNode);\r\n newInnerNode = ancestorAnchorNode.cloneNode(false);\r\n nNodeArray.push(newInnerNode);\r\n pNode.appendChild(newInnerNode);\r\n } else {\r\n anchorNode = null;\r\n }\r\n }\r\n }\r\n\r\n // startContainer\r\n if (!passNode && child === container) {\r\n let line = pNode;\r\n anchorNode = _getMaintainedNode(child);\r\n const prevNode = util.createTextNode(container.nodeType === 1 ? '' : container.substringData(0, offset));\r\n const textNode = util.createTextNode(container.nodeType === 1 ? '' : container.substringData(offset, (container.length - offset)));\r\n\r\n if (anchorNode) {\r\n const a = _getMaintainedNode(ancestor);\r\n if (a && a.parentNode !== line) {\r\n let m = a;\r\n let p = null;\r\n while (m.parentNode !== line) {\r\n ancestor = p = m.parentNode.cloneNode(false);\r\n while(m.childNodes[0]) {\r\n p.appendChild(m.childNodes[0]);\r\n }\r\n m.appendChild(p);\r\n m = m.parentNode;\r\n }\r\n m.parentNode.appendChild(a);\r\n }\r\n anchorNode = anchorNode.cloneNode(false);\r\n }\r\n\r\n if (!util.onlyZeroWidthSpace(prevNode)) {\r\n ancestor.appendChild(prevNode);\r\n }\r\n\r\n const prevAnchorNode = _getMaintainedNode(ancestor);\r\n if (!!prevAnchorNode) anchorNode = prevAnchorNode;\r\n if (anchorNode) line = anchorNode;\r\n\r\n newNode = ancestor;\r\n pCurrent = [];\r\n while (newNode !== line && newNode !== null) {\r\n vNode = validation(newNode);\r\n if (newNode.nodeType === 1 && vNode) {\r\n pCurrent.push(vNode);\r\n }\r\n newNode = newNode.parentNode;\r\n }\r\n\r\n const childNode = pCurrent.pop() || ancestor;\r\n appendNode = newNode = childNode;\r\n while (pCurrent.length > 0) {\r\n newNode = pCurrent.pop();\r\n appendNode.appendChild(newNode);\r\n appendNode = newNode;\r\n }\r\n\r\n if (childNode !== ancestor) {\r\n newInnerNode.appendChild(childNode);\r\n ancestor = newNode;\r\n } else {\r\n ancestor = newInnerNode;\r\n }\r\n\r\n if (util.isBreak(child)) newInnerNode.appendChild(child.cloneNode(false));\r\n line.appendChild(newInnerNode);\r\n\r\n container = textNode;\r\n offset = 0;\r\n passNode = true;\r\n\r\n ancestor.appendChild(container);\r\n continue;\r\n }\r\n\r\n vNode = !passNode ? child.cloneNode(false) : validation(child);\r\n if (vNode) {\r\n ancestor.appendChild(vNode);\r\n if (child.nodeType === 1 && !util.isBreak(child)) coverNode = vNode;\r\n }\r\n\r\n recursionFunc(child, coverNode);\r\n }\r\n })(element, pNode);\r\n\r\n // not remove tag\r\n if (isRemoveNode && !isRemoveFormat && !_removeCheck.v) {\r\n return {\r\n ancestor: element,\r\n container: startCon,\r\n offset: startOff,\r\n endContainer: _endContainer\r\n };\r\n }\r\n\r\n isRemoveFormat = isRemoveFormat && isRemoveNode;\r\n\r\n if (isRemoveFormat) {\r\n for (let i = 0; i < nNodeArray.length; i++) {\r\n let removeNode = nNodeArray[i];\r\n\r\n const rChildren = removeNode.childNodes;\r\n const textNode = rChildren[0];\r\n while (rChildren[0]) {\r\n pNode.insertBefore(rChildren[0], removeNode);\r\n }\r\n util.removeItem(removeNode);\r\n\r\n if (i === 0) container = textNode;\r\n }\r\n } else if (isRemoveNode) {\r\n newInnerNode = newInnerNode.firstChild;\r\n for (let i = 0; i < nNodeArray.length; i++) {\r\n this._stripRemoveNode(nNodeArray[i]);\r\n }\r\n }\r\n\r\n if (!isRemoveFormat && pNode.childNodes.length === 0) {\r\n if (element.childNodes) {\r\n container = element.childNodes[0];\r\n } else {\r\n container = util.createTextNode(util.zeroWidthSpace);\r\n element.appendChild(container);\r\n }\r\n } else {\r\n util.removeEmptyNode(pNode, newInnerNode, false);\r\n\r\n if (util.onlyZeroWidthSpace(pNode.textContent)) {\r\n container = pNode.firstChild;\r\n offset = 0;\r\n }\r\n\r\n // node change\r\n const offsets = {s: 0, e: 0};\r\n const path = util.getNodePath(container, pNode, offsets);\r\n offset += offsets.s;\r\n\r\n // tag merge\r\n const newOffsets = util.mergeSameTags(pNode, [path], true);\r\n\r\n element.parentNode.replaceChild(pNode, element);\r\n\r\n container = util.getNodeFromPath(path, pNode);\r\n offset += newOffsets[0];\r\n }\r\n\r\n return {\r\n ancestor: pNode,\r\n container: container,\r\n offset: offset,\r\n endContainer: _endContainer\r\n };\r\n },\r\n\r\n /**\r\n * @description wraps mid lines selected text.\r\n * @param {Element} element The node of the line that contains the selected text node.\r\n * @param {Element} newInnerNode The dom that will wrap the selected text area\r\n * @param {Function} validation Check if the node should be stripped.\r\n * @param {Boolean} isRemoveFormat Is the remove all formats command?\r\n * @param {Boolean} isRemoveNode \"newInnerNode\" is remove node?\r\n * @param {Node} _endContainer Offset node of last line already modified (end.container)\r\n * @returns {Object} { ancestor, endContainer: \"If end container is renewed, returned renewed node\" }\r\n * @private\r\n */\r\n _nodeChange_middleLine: function (element, newInnerNode, validation, isRemoveFormat, isRemoveNode, _removeCheck, _endContainer) {\r\n // not add tag\r\n if (!isRemoveNode) {\r\n // end container path\r\n let endPath = null;\r\n if (_endContainer && element.contains(_endContainer)) endPath = util.getNodePath(_endContainer, element);\r\n\r\n const tempNode = element.cloneNode(true);\r\n const newNodeName = newInnerNode.nodeName;\r\n const newCssText = newInnerNode.style.cssText;\r\n const newClass = newInnerNode.className;\r\n\r\n let children = tempNode.childNodes;\r\n let i = 0, len = children.length;\r\n for (let child; i < len; i++) {\r\n child = children[i];\r\n if (child.nodeType === 3) break;\r\n if (child.nodeName === newNodeName) {\r\n child.style.cssText += newCssText;\r\n util.addClass(child, newClass);\r\n } else if (!util.isBreak(child) && util._isIgnoreNodeChange(child)) {\r\n continue;\r\n } else if (len === 1) {\r\n children = child.childNodes;\r\n len = children.length;\r\n i = -1;\r\n continue;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n if (len > 0 && i === len) {\r\n element.innerHTML = tempNode.innerHTML;\r\n return {\r\n ancestor: element,\r\n endContainer: endPath ? util.getNodeFromPath(endPath, element) : null\r\n };\r\n }\r\n }\r\n\r\n // add tag\r\n _removeCheck.v = false;\r\n const pNode = element.cloneNode(false);\r\n const nNodeArray = [newInnerNode];\r\n let noneChange = true;\r\n\r\n (function recursionFunc(current, ancestor) {\r\n const childNodes = current.childNodes;\r\n\r\n for (let i = 0, len = childNodes.length, vNode, cloneChild; i < len; i++) {\r\n let child = childNodes[i];\r\n if (!child) continue;\r\n let coverNode = ancestor;\r\n\r\n if (!util.isBreak(child) && util._isIgnoreNodeChange(child)) {\r\n if (newInnerNode.childNodes.length > 0) {\r\n pNode.appendChild(newInnerNode);\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n }\r\n \r\n cloneChild = child.cloneNode(true);\r\n pNode.appendChild(cloneChild);\r\n pNode.appendChild(newInnerNode);\r\n nNodeArray.push(newInnerNode);\r\n ancestor = newInnerNode;\r\n\r\n // end container\r\n if (_endContainer && child.contains(_endContainer)) {\r\n const endPath = util.getNodePath(_endContainer, child);\r\n _endContainer = util.getNodeFromPath(endPath, cloneChild);\r\n }\r\n\r\n continue;\r\n } else {\r\n vNode = validation(child);\r\n if (vNode) {\r\n noneChange = false;\r\n ancestor.appendChild(vNode);\r\n if (child.nodeType === 1) coverNode = vNode;\r\n }\r\n }\r\n\r\n if (!util.isBreak(child)) recursionFunc(child, coverNode);\r\n }\r\n })(element, newInnerNode);\r\n\r\n // not remove tag\r\n if (noneChange || (isRemoveNode && !isRemoveFormat && !_removeCheck.v)) return { ancestor: element, endContainer: _endContainer };\r\n\r\n pNode.appendChild(newInnerNode);\r\n\r\n if (isRemoveFormat && isRemoveNode) {\r\n for (let i = 0; i < nNodeArray.length; i++) {\r\n let removeNode = nNodeArray[i];\r\n \r\n const rChildren = removeNode.childNodes;\r\n while (rChildren[0]) {\r\n pNode.insertBefore(rChildren[0], removeNode);\r\n }\r\n util.removeItem(removeNode);\r\n }\r\n } else if (isRemoveNode) {\r\n newInnerNode = newInnerNode.firstChild;\r\n for (let i = 0; i < nNodeArray.length; i++) {\r\n this._stripRemoveNode(nNodeArray[i]);\r\n }\r\n }\r\n\r\n util.removeEmptyNode(pNode, newInnerNode, false);\r\n util.mergeSameTags(pNode, null, true);\r\n\r\n // node change\r\n element.parentNode.replaceChild(pNode, element);\r\n return { ancestor: pNode, endContainer: _endContainer };\r\n },\r\n\r\n /**\r\n * @description wraps last line selected text.\r\n * @param {Element} element The node of the line that contains the selected text node.\r\n * @param {Element} newInnerNode The dom that will wrap the selected text area\r\n * @param {Function} validation Check if the node should be stripped.\r\n * @param {Node} endCon The endContainer property of the selection object.\r\n * @param {Number} endOff The endOffset property of the selection object.\r\n * @param {Boolean} isRemoveFormat Is the remove all formats command?\r\n * @param {Boolean} isRemoveNode \"newInnerNode\" is remove node?\r\n * @returns {Object} { ancestor, container, offset }\r\n * @private\r\n */\r\n _nodeChange_endLine: function (element, newInnerNode, validation, endCon, endOff, isRemoveFormat, isRemoveNode, _removeCheck, _getMaintainedNode, _isMaintainedNode) {\r\n // not add tag\r\n let parentCon = endCon.parentNode;\r\n while (!parentCon.nextSibling && !parentCon.previousSibling && !util.isFormatElement(parentCon.parentNode) && !util.isWysiwygDiv(parentCon.parentNode)) {\r\n if (parentCon.nodeName === newInnerNode.nodeName) break;\r\n parentCon = parentCon.parentNode;\r\n }\r\n \r\n if (!isRemoveNode && parentCon.nodeName === newInnerNode.nodeName && !util.isFormatElement(parentCon) && !parentCon.previousSibling && util.onlyZeroWidthSpace(endCon.textContent.slice(endOff))) {\r\n let sameTag = true;\r\n let e = endCon.nextSibling;\r\n while (e) {\r\n if (!util.onlyZeroWidthSpace(e)) {\r\n sameTag = false;\r\n break;\r\n }\r\n e = e.nextSibling;\r\n }\r\n\r\n if (sameTag) {\r\n util.copyTagAttributes(parentCon, newInnerNode);\r\n \r\n return {\r\n ancestor: element,\r\n container: endCon,\r\n offset: endOff\r\n };\r\n }\r\n }\r\n\r\n // add tag\r\n _removeCheck.v = false;\r\n const el = element;\r\n const nNodeArray = [newInnerNode];\r\n const pNode = element.cloneNode(false);\r\n\r\n let container = endCon;\r\n let offset = endOff;\r\n let passNode = false;\r\n let pCurrent, newNode, appendNode, anchorNode;\r\n\r\n (function recursionFunc(current, ancestor) {\r\n const childNodes = current.childNodes;\r\n\r\n for (let i = childNodes.length - 1, vNode; 0 <= i; i--) {\r\n const child = childNodes[i];\r\n if (!child) continue;\r\n let coverNode = ancestor;\r\n\r\n if (passNode && !util.isBreak(child)) {\r\n if (child.nodeType === 1) {\r\n if (util._isIgnoreNodeChange(child)) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n const cloneChild = child.cloneNode(true);\r\n pNode.insertBefore(cloneChild, ancestor);\r\n pNode.insertBefore(newInnerNode, cloneChild);\r\n nNodeArray.push(newInnerNode);\r\n } else {\r\n recursionFunc(child, child);\r\n }\r\n continue;\r\n }\r\n\r\n newNode = child;\r\n pCurrent = [];\r\n const anchors = [];\r\n while (newNode.parentNode !== null && newNode !== el && newNode !== newInnerNode) {\r\n vNode = validation(newNode);\r\n if (vNode && newNode.nodeType === 1) {\r\n if (_isMaintainedNode(newNode)) {\r\n if (!anchorNode) anchors.push(vNode);\r\n } else {\r\n pCurrent.push(vNode);\r\n }\r\n }\r\n newNode = newNode.parentNode;\r\n }\r\n pCurrent = pCurrent.concat(anchors);\r\n\r\n const isTopNode = pCurrent.length > 0;\r\n const childNode = pCurrent.pop() || child;\r\n appendNode = newNode = childNode;\r\n while (pCurrent.length > 0) {\r\n newNode = pCurrent.pop();\r\n appendNode.appendChild(newNode);\r\n appendNode = newNode;\r\n }\r\n\r\n if (_isMaintainedNode(newInnerNode.parentNode) && !_isMaintainedNode(childNode)) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n pNode.insertBefore(newInnerNode, pNode.firstChild);\r\n nNodeArray.push(newInnerNode);\r\n }\r\n\r\n if (!anchorNode && _isMaintainedNode(childNode)) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n const aChildren = childNode.childNodes;\r\n for (let a = 0, aLen = aChildren.length; a < aLen; a++) {\r\n newInnerNode.appendChild(aChildren[a]);\r\n }\r\n childNode.appendChild(newInnerNode);\r\n pNode.insertBefore(childNode, pNode.firstChild);\r\n nNodeArray.push(newInnerNode);\r\n if (newInnerNode.children.length > 0) ancestor = newNode;\r\n else ancestor = newInnerNode;\r\n } else if (isTopNode) {\r\n newInnerNode.insertBefore(childNode, newInnerNode.firstChild);\r\n ancestor = newNode;\r\n } else {\r\n ancestor = newInnerNode;\r\n }\r\n\r\n if (anchorNode && child.nodeType === 3) {\r\n if (_getMaintainedNode(child)) {\r\n const ancestorAnchorNode = util.getParentElement(ancestor, function (current) {return this._isMaintainedNode(current.parentNode) || current.parentNode === pNode;}.bind(util));\r\n anchorNode.appendChild(ancestorAnchorNode);\r\n newInnerNode = ancestorAnchorNode.cloneNode(false);\r\n nNodeArray.push(newInnerNode);\r\n pNode.insertBefore(newInnerNode, pNode.firstChild);\r\n } else {\r\n anchorNode = null;\r\n }\r\n }\r\n }\r\n\r\n // endContainer\r\n if (!passNode && child === container) {\r\n anchorNode = _getMaintainedNode(child);\r\n const afterNode = util.createTextNode(container.nodeType === 1 ? '' : container.substringData(offset, (container.length - offset)));\r\n const textNode = util.createTextNode(container.nodeType === 1 ? '' : container.substringData(0, offset));\r\n\r\n if (anchorNode) {\r\n anchorNode = anchorNode.cloneNode(false);\r\n const a = _getMaintainedNode(ancestor);\r\n if (a && a.parentNode !== pNode) {\r\n let m = a;\r\n let p = null;\r\n while (m.parentNode !== pNode) {\r\n ancestor = p = m.parentNode.cloneNode(false);\r\n while(m.childNodes[0]) {\r\n p.appendChild(m.childNodes[0]);\r\n }\r\n m.appendChild(p);\r\n m = m.parentNode;\r\n }\r\n m.parentNode.insertBefore(a, m.parentNode.firstChild);\r\n }\r\n anchorNode = anchorNode.cloneNode(false);\r\n } else if (_isMaintainedNode(newInnerNode.parentNode) && !anchorNode) {\r\n newInnerNode = newInnerNode.cloneNode(false);\r\n pNode.appendChild(newInnerNode);\r\n nNodeArray.push(newInnerNode);\r\n }\r\n\r\n if (!util.onlyZeroWidthSpace(afterNode)) {\r\n ancestor.insertBefore(afterNode, ancestor.firstChild);\r\n }\r\n\r\n newNode = ancestor;\r\n pCurrent = [];\r\n while (newNode !== pNode && newNode !== null) {\r\n vNode = _isMaintainedNode(newNode) ? null : validation(newNode);\r\n if (vNode && newNode.nodeType === 1) {\r\n pCurrent.push(vNode);\r\n }\r\n newNode = newNode.parentNode;\r\n }\r\n\r\n const childNode = pCurrent.pop() || ancestor;\r\n appendNode = newNode = childNode;\r\n while (pCurrent.length > 0) {\r\n newNode = pCurrent.pop();\r\n appendNode.appendChild(newNode);\r\n appendNode = newNode;\r\n }\r\n\r\n if (childNode !== ancestor) {\r\n newInnerNode.insertBefore(childNode, newInnerNode.firstChild);\r\n ancestor = newNode;\r\n } else {\r\n ancestor = newInnerNode;\r\n }\r\n\r\n if (util.isBreak(child)) newInnerNode.appendChild(child.cloneNode(false));\r\n \r\n if (anchorNode) {\r\n anchorNode.insertBefore(newInnerNode, anchorNode.firstChild);\r\n pNode.insertBefore(anchorNode, pNode.firstChild);\r\n anchorNode = null;\r\n } else {\r\n pNode.insertBefore(newInnerNode, pNode.firstChild);\r\n }\r\n\r\n container = textNode;\r\n offset = textNode.data.length;\r\n passNode = true;\r\n\r\n ancestor.insertBefore(container, ancestor.firstChild);\r\n continue;\r\n }\r\n\r\n vNode = !passNode ? child.cloneNode(false) : validation(child);\r\n if (vNode) {\r\n ancestor.insertBefore(vNode, ancestor.firstChild);\r\n if (child.nodeType === 1 && !util.isBreak(child)) coverNode = vNode;\r\n }\r\n\r\n recursionFunc(child, coverNode);\r\n }\r\n })(element, pNode);\r\n\r\n // not remove tag\r\n if (isRemoveNode && !isRemoveFormat && !_removeCheck.v) {\r\n return {\r\n ancestor: element,\r\n container: endCon,\r\n offset: endOff\r\n };\r\n }\r\n\r\n isRemoveFormat = isRemoveFormat && isRemoveNode;\r\n\r\n if (isRemoveFormat) {\r\n for (let i = 0; i < nNodeArray.length; i++) {\r\n let removeNode = nNodeArray[i];\r\n \r\n const rChildren = removeNode.childNodes;\r\n let textNode = null;\r\n while (rChildren[0]) {\r\n textNode = rChildren[0];\r\n pNode.insertBefore(textNode, removeNode);\r\n }\r\n util.removeItem(removeNode);\r\n\r\n if (i === nNodeArray.length - 1) {\r\n container = textNode;\r\n offset = textNode.textContent.length;\r\n }\r\n }\r\n } else if (isRemoveNode) {\r\n newInnerNode = newInnerNode.firstChild;\r\n for (let i = 0; i < nNodeArray.length; i++) {\r\n this._stripRemoveNode(nNodeArray[i]);\r\n }\r\n }\r\n\r\n if (!isRemoveFormat && pNode.childNodes.length === 0) {\r\n if (element.childNodes) {\r\n container = element.childNodes[0];\r\n } else {\r\n container = util.createTextNode(util.zeroWidthSpace);\r\n element.appendChild(container);\r\n }\r\n } else {\r\n if (!isRemoveNode && newInnerNode.textContent.length === 0) {\r\n util.removeEmptyNode(pNode, null, false);\r\n return {\r\n ancestor: null,\r\n container: null,\r\n offset: 0\r\n };\r\n }\r\n\r\n util.removeEmptyNode(pNode, newInnerNode, false);\r\n\r\n if (util.onlyZeroWidthSpace(pNode.textContent)) {\r\n container = pNode.firstChild;\r\n offset = container.textContent.length;\r\n } else if (util.onlyZeroWidthSpace(container)) {\r\n container = newInnerNode;\r\n offset = 1;\r\n }\r\n \r\n // node change\r\n const offsets = {s: 0, e: 0};\r\n const path = util.getNodePath(container, pNode, offsets);\r\n offset += offsets.s;\r\n\r\n // tag merge\r\n const newOffsets = util.mergeSameTags(pNode, [path], true);\r\n\r\n element.parentNode.replaceChild(pNode, element);\r\n\r\n container = util.getNodeFromPath(path, pNode);\r\n offset += newOffsets[0];\r\n }\r\n\r\n return {\r\n ancestor: pNode,\r\n container: container,\r\n offset: container.nodeType === 1 && offset === 1 ? container.childNodes.length : offset\r\n };\r\n },\r\n\r\n /**\r\n * @description Run plugin calls and basic commands.\r\n * @param {String} command Command string\r\n * @param {String} display Display type string ('command', 'submenu', 'dialog', 'container')\r\n * @param {Element} target The element of command button\r\n */\r\n actionCall: function (command, display, target) {\r\n // call plugins\r\n if (display) {\r\n if (/more/i.test(display)) {\r\n if (target !== this._moreLayerActiveButton) {\r\n const layer = context.element.toolbar.querySelector('.' + command);\r\n if (layer) {\r\n if (this._moreLayerActiveButton) this.moreLayerOff();\r\n\r\n this._moreLayerActiveButton = target;\r\n layer.style.display = 'block';\r\n\r\n event._showToolbarBalloon();\r\n event._showToolbarInline();\r\n }\r\n util.addClass(target, 'on');\r\n } else {\r\n const layer = context.element.toolbar.querySelector('.' + this._moreLayerActiveButton.getAttribute('data-command'));\r\n if (layer) {\r\n this.moreLayerOff();\r\n\r\n event._showToolbarBalloon();\r\n event._showToolbarInline();\r\n } \r\n }\r\n return;\r\n }\r\n \r\n if (/container/.test(display) && (this._menuTray[command] === null || target !== this.containerActiveButton)) {\r\n this.callPlugin(command, this.containerOn.bind(this, target), target);\r\n return;\r\n } \r\n \r\n if (this.isReadOnly && util.arrayIncludes(this.resizingDisabledButtons, target)) return;\r\n if (/submenu/.test(display) && (this._menuTray[command] === null || target !== this.submenuActiveButton)) {\r\n this.callPlugin(command, this.submenuOn.bind(this, target), target);\r\n return;\r\n } else if (/dialog/.test(display)) {\r\n this.callPlugin(command, this.plugins[command].open.bind(this), target);\r\n return;\r\n } else if (/command/.test(display)) {\r\n this.callPlugin(command, this.plugins[command].action.bind(this), target);\r\n } else if (/fileBrowser/.test(display)) {\r\n this.callPlugin(command, this.plugins[command].open.bind(this, null), target);\r\n }\r\n } // default command\r\n else if (command) {\r\n this.commandHandler(target, command);\r\n }\r\n\r\n if (/submenu/.test(display)) {\r\n this.submenuOff();\r\n } else if (!/command/.test(display)) {\r\n this.submenuOff();\r\n this.containerOff();\r\n }\r\n },\r\n\r\n /**\r\n * @description Execute command of command button(All Buttons except submenu and dialog)\r\n * (selectAll, codeView, fullScreen, indent, outdent, undo, redo, removeFormat, print, preview, showBlocks, save, bold, underline, italic, strike, subscript, superscript, copy, cut, paste)\r\n * @param {Element|null} target The element of command button\r\n * @param {String} command Property of command button (data-value)\r\n */\r\n commandHandler: function (target, command) {\r\n if (core.isReadOnly && !/copy|cut|selectAll|codeView|fullScreen|print|preview|showBlocks/.test(command)) return;\r\n switch (command) {\r\n case 'copy':\r\n case 'cut':\r\n this.execCommand(command);\r\n break;\r\n case 'paste':\r\n break;\r\n case 'selectAll':\r\n this.containerOff();\r\n const wysiwyg = context.element.wysiwyg;\r\n let first = util.getChildElement(wysiwyg.firstChild, function (current) { return current.childNodes.length === 0 || current.nodeType === 3; }, false) || wysiwyg.firstChild;\r\n let last = util.getChildElement(wysiwyg.lastChild, function (current) { return current.childNodes.length === 0 || current.nodeType === 3; }, true) || wysiwyg.lastChild;\r\n if (!first || !last) return;\r\n if (util.isMedia(first)) {\r\n const info = this.getFileComponent(first);\r\n const br = util.createElement('BR');\r\n const format = util.createElement(options.defaultTag);\r\n format.appendChild(br);\r\n first = info ? info.component : first;\r\n first.parentNode.insertBefore(format, first);\r\n first = br;\r\n }\r\n if (util.isMedia(last)) {\r\n const br = util.createElement('BR');\r\n const format = util.createElement(options.defaultTag);\r\n format.appendChild(br);\r\n wysiwyg.appendChild(format);\r\n last = br;\r\n }\r\n event._showToolbarBalloon(this.setRange(first, 0, last, last.textContent.length));\r\n break;\r\n case 'codeView':\r\n this.toggleCodeView();\r\n break;\r\n case 'fullScreen':\r\n this.toggleFullScreen(target);\r\n break;\r\n case 'indent':\r\n case 'outdent':\r\n this.indent(command);\r\n break;\r\n case 'undo':\r\n this.history.undo();\r\n break;\r\n case 'redo':\r\n this.history.redo();\r\n break;\r\n case 'removeFormat':\r\n this.removeFormat();\r\n this.focus();\r\n break;\r\n case 'print':\r\n this.print();\r\n break;\r\n case 'preview':\r\n this.preview();\r\n break;\r\n case 'showBlocks':\r\n this.toggleDisplayBlocks();\r\n break;\r\n case 'dir':\r\n this.setDir(options.rtl ? 'ltr' : 'rtl');\r\n break;\r\n case 'dir_ltr':\r\n this.setDir('ltr');\r\n break;\r\n case 'dir_rtl':\r\n this.setDir('rtl');\r\n break;\r\n case 'save':\r\n if (typeof options.callBackSave === 'function') {\r\n options.callBackSave(this.getContents(false), this._variable.isChanged);\r\n } else if (this._variable.isChanged && typeof functions.save === 'function') {\r\n functions.save();\r\n } else {\r\n throw Error('[SUNEDITOR.core.commandHandler.fail] Please register call back function in creation option. (callBackSave : Function)');\r\n }\r\n\r\n this._variable.isChanged = false;\r\n if (context.tool.save) context.tool.save.setAttribute('disabled', true);\r\n break;\r\n default : // 'STRONG', 'U', 'EM', 'DEL', 'SUB', 'SUP'..\r\n command = options._defaultCommand[command.toLowerCase()] || command;\r\n if (!this.commandMap[command]) this.commandMap[command] = target;\r\n\r\n const nodesMap = this._variable.currentNodesMap;\r\n const cmd = nodesMap.indexOf(command) > -1 ? null : util.createElement(command);\r\n let removeNode = command;\r\n\r\n if (/^SUB$/i.test(command) && nodesMap.indexOf('SUP') > -1) {\r\n removeNode = 'SUP';\r\n } else if (/^SUP$/i.test(command) && nodesMap.indexOf('SUB') > -1) {\r\n removeNode = 'SUB';\r\n }\r\n\r\n this.nodeChange(cmd, this._commandMapStyles[command] || null, [removeNode], false);\r\n this.focus();\r\n }\r\n },\r\n\r\n /**\r\n * @description Remove format of the currently selected range\r\n */\r\n removeFormat: function () {\r\n this.nodeChange(null, null, null, null);\r\n },\r\n\r\n /**\r\n * @description This method implements indentation to selected range.\r\n * Setted \"margin-left\" to \"25px\" in the top \"P\" tag of the parameter node.\r\n * @param {String} command Separator (\"indent\" or \"outdent\")\r\n */\r\n indent: function (command) {\r\n const range = this.getRange();\r\n const rangeLines = this.getSelectedElements(null);\r\n const cells = [];\r\n const shift = 'indent' !== command;\r\n const marginDir = options.rtl ? 'marginRight' : 'marginLeft';\r\n let sc = range.startContainer;\r\n let ec = range.endContainer;\r\n let so = range.startOffset;\r\n let eo = range.endOffset;\r\n\r\n for (let i = 0, len = rangeLines.length, f, margin; i < len; i++) {\r\n f = rangeLines[i];\r\n if (!util.isListCell(f) || !this.plugins.list) {\r\n margin = /\\d+/.test(f.style[marginDir]) ? util.getNumber(f.style[marginDir], 0) : 0;\r\n if (shift) {\r\n margin -= 25;\r\n } else {\r\n margin += 25;\r\n }\r\n util.setStyle(f, marginDir, (margin <= 0 ? '' : margin + 'px'));\r\n } else {\r\n if (shift || f.previousElementSibling) {\r\n cells.push(f);\r\n }\r\n }\r\n }\r\n\r\n // list cells\r\n if (cells.length > 0) {\r\n this.plugins.list.editInsideList.call(this, shift, cells);\r\n }\r\n\r\n this.effectNode = null;\r\n this.setRange(sc, so, ec, eo);\r\n\r\n // history stack\r\n this.history.push(false);\r\n },\r\n\r\n /**\r\n * @description Add or remove the class name of \"body\" so that the code block is visible\r\n */\r\n toggleDisplayBlocks: function () {\r\n const wysiwyg = context.element.wysiwyg;\r\n util.toggleClass(wysiwyg, 'se-show-block');\r\n if (util.hasClass(wysiwyg, 'se-show-block')) {\r\n util.addClass(this._styleCommandMap.showBlocks, 'active');\r\n } else {\r\n util.removeClass(this._styleCommandMap.showBlocks, 'active');\r\n }\r\n this._resourcesStateChange();\r\n },\r\n\r\n /**\r\n * @description Changes to code view or wysiwyg view\r\n */\r\n toggleCodeView: function () {\r\n const isCodeView = this._variable.isCodeView;\r\n this.controllersOff();\r\n util.setDisabledButtons(!isCodeView, this.codeViewDisabledButtons);\r\n\r\n if (isCodeView) {\r\n if (!util.isNonEditable(context.element.wysiwygFrame)) this._setCodeDataToEditor();\r\n context.element.wysiwygFrame.scrollTop = 0;\r\n context.element.code.style.display = 'none';\r\n context.element.wysiwygFrame.style.display = 'block';\r\n\r\n this._variable._codeOriginCssText = this._variable._codeOriginCssText.replace(/(\\s?display(\\s+)?:(\\s+)?)[a-zA-Z]+(?=;)/, 'display: none');\r\n this._variable._wysiwygOriginCssText = this._variable._wysiwygOriginCssText.replace(/(\\s?display(\\s+)?:(\\s+)?)[a-zA-Z]+(?=;)/, 'display: block');\r\n\r\n if (options.height === 'auto' && !options.codeMirrorEditor) context.element.code.style.height = '0px';\r\n \r\n this._variable.isCodeView = false;\r\n \r\n if (!this._variable.isFullScreen) {\r\n this._notHideToolbar = false;\r\n if (/balloon|balloon-always/i.test(options.mode)) {\r\n context.element._arrow.style.display = '';\r\n this._isInline = false;\r\n this._isBalloon = true;\r\n event._hideToolbar(); \r\n }\r\n }\r\n\r\n this.nativeFocus();\r\n util.removeClass(this._styleCommandMap.codeView, 'active');\r\n\r\n // history stack\r\n if (!util.isNonEditable(context.element.wysiwygFrame)) {\r\n this.history.push(false);\r\n this.history._resetCachingButton();\r\n }\r\n } else {\r\n this._setEditorDataToCodeView();\r\n this._variable._codeOriginCssText = this._variable._codeOriginCssText.replace(/(\\s?display(\\s+)?:(\\s+)?)[a-zA-Z]+(?=;)/, 'display: block');\r\n this._variable._wysiwygOriginCssText = this._variable._wysiwygOriginCssText.replace(/(\\s?display(\\s+)?:(\\s+)?)[a-zA-Z]+(?=;)/, 'display: none');\r\n\r\n if (this._variable.isFullScreen) context.element.code.style.height = '100%';\r\n else if (options.height === 'auto' && !options.codeMirrorEditor) context.element.code.style.height = context.element.code.scrollHeight > 0 ? (context.element.code.scrollHeight + 'px') : 'auto';\r\n \r\n if (options.codeMirrorEditor) options.codeMirrorEditor.refresh();\r\n \r\n this._variable.isCodeView = true;\r\n\r\n if (!this._variable.isFullScreen) {\r\n this._notHideToolbar = true;\r\n if (this._isBalloon) {\r\n context.element._arrow.style.display = 'none';\r\n context.element.toolbar.style.left = '';\r\n this._isInline = true;\r\n this._isBalloon = false;\r\n event._showToolbarInline();\r\n }\r\n }\r\n \r\n this._variable._range = null;\r\n context.element.code.focus();\r\n util.addClass(this._styleCommandMap.codeView, 'active');\r\n }\r\n\r\n this._checkPlaceholder();\r\n if (this.isReadOnly) util.setDisabledButtons(true, this.resizingDisabledButtons);\r\n\r\n // user event\r\n if (typeof functions.toggleCodeView === 'function') functions.toggleCodeView(this._variable.isCodeView, this);\r\n },\r\n\r\n /**\r\n * @description Convert the data of the code view and put it in the WYSIWYG area.\r\n * @private\r\n */\r\n _setCodeDataToEditor: function () {\r\n const code_html = this._getCodeView();\r\n\r\n if (options.fullPage) {\r\n const parseDocument = this._parser.parseFromString(code_html, 'text/html');\r\n\r\n if (!this.options.__allowedScriptTag) {\r\n const headChildren = parseDocument.head.children;\r\n for (let i = 0, len = headChildren.length; i < len; i++) {\r\n if (/^script$/i.test(headChildren[i].tagName)) {\r\n parseDocument.head.removeChild(headChildren[i]);\r\n i--, len--;\r\n }\r\n }\r\n }\r\n\r\n let headers = parseDocument.head.innerHTML;\r\n if (!parseDocument.head.querySelector('link[rel=\"stylesheet\"]') || (this.options.height === 'auto' && !parseDocument.head.querySelector('style'))) {\r\n headers += util._setIframeCssTags(this.options);\r\n }\r\n\r\n this._wd.head.innerHTML = headers;\r\n this._wd.body.innerHTML = this.convertContentsForEditor(parseDocument.body.innerHTML);\r\n\r\n const attrs = parseDocument.body.attributes;\r\n for (let i = 0, len = attrs.length; i < len; i++) {\r\n if (attrs[i].name === 'contenteditable') continue;\r\n this._wd.body.setAttribute(attrs[i].name, attrs[i].value);\r\n }\r\n if (!util.hasClass(this._wd.body, 'sun-editor-editable')) {\r\n const editableClasses = options._editableClass.split(' ');\r\n for (let i = 0; i < editableClasses.length; i++) {\r\n util.addClass(this._wd.body, options._editableClass[i]);\r\n }\r\n }\r\n } else {\r\n context.element.wysiwyg.innerHTML = code_html.length > 0 ? this.convertContentsForEditor(code_html) : '<' + options.defaultTag + '><br></' + options.defaultTag + '>';\r\n }\r\n },\r\n\r\n /**\r\n * @description Convert the data of the WYSIWYG area and put it in the code view area.\r\n * @private\r\n */\r\n _setEditorDataToCodeView: function () {\r\n const codeContents = this.convertHTMLForCodeView(context.element.wysiwyg, false);\r\n let codeValue = '';\r\n\r\n if (options.fullPage) {\r\n const attrs = util.getAttributesToString(this._wd.body, null);\r\n codeValue = '<!DOCTYPE html>\\n<html>\\n' + this._wd.head.outerHTML.replace(/>(?!\\n)/g, '>\\n') + '<body ' + attrs + '>\\n' + codeContents + '</body>\\n</html>';\r\n } else {\r\n codeValue = codeContents;\r\n }\r\n\r\n context.element.code.style.display = 'block';\r\n context.element.wysiwygFrame.style.display = 'none';\r\n\r\n this._setCodeView(codeValue);\r\n },\r\n\r\n /**\r\n * @description Changes to full screen or default screen\r\n * @param {Element|null} element full screen button\r\n */\r\n toggleFullScreen: function (element) {\r\n const topArea = context.element.topArea;\r\n const toolbar = context.element.toolbar;\r\n const editorArea = context.element.editorArea;\r\n const wysiwygFrame = context.element.wysiwygFrame;\r\n const code = context.element.code;\r\n const _var = this._variable;\r\n this.controllersOff();\r\n \r\n const wasToolbarHidden = (toolbar.style.display === 'none' || (this._isInline && !this._inlineToolbarAttr.isShow));\r\n\r\n if (!_var.isFullScreen) {\r\n _var.isFullScreen = true;\r\n \r\n _var._fullScreenAttrs.inline = this._isInline;\r\n _var._fullScreenAttrs.balloon = this._isBalloon;\r\n\r\n if (this._isInline || this._isBalloon) {\r\n this._isInline = false;\r\n this._isBalloon = false;\r\n }\r\n \r\n if (!!options.toolbarContainer) context.element.relative.insertBefore(toolbar, editorArea);\r\n\r\n topArea.style.position = 'fixed';\r\n topArea.style.top = '0';\r\n topArea.style.left = '0';\r\n topArea.style.width = '100%';\r\n topArea.style.maxWidth = '100%';\r\n topArea.style.height = '100%';\r\n topArea.style.zIndex = '2147483647';\r\n\r\n if (context.element._stickyDummy.style.display !== ('none' && '')) {\r\n _var._fullScreenAttrs.sticky = true;\r\n context.element._stickyDummy.style.display = 'none';\r\n util.removeClass(toolbar, 'se-toolbar-sticky');\r\n }\r\n\r\n _var._bodyOverflow = _d.body.style.overflow;\r\n _d.body.style.overflow = 'hidden';\r\n\r\n _var._editorAreaOriginCssText = editorArea.style.cssText;\r\n _var._wysiwygOriginCssText = wysiwygFrame.style.cssText;\r\n _var._codeOriginCssText = code.style.cssText;\r\n\r\n editorArea.style.cssText = toolbar.style.cssText = '';\r\n wysiwygFrame.style.cssText = (wysiwygFrame.style.cssText.match(/\\s?display(\\s+)?:(\\s+)?[a-zA-Z]+;/) || [''])[0] + options._editorStyles.editor;\r\n code.style.cssText = (code.style.cssText.match(/\\s?display(\\s+)?:(\\s+)?[a-zA-Z]+;/) || [''])[0];\r\n toolbar.style.width = wysiwygFrame.style.height = code.style.height = '100%';\r\n toolbar.style.position = 'relative';\r\n toolbar.style.display = 'block';\r\n\r\n _var.innerHeight_fullScreen = (_w.innerHeight - toolbar.offsetHeight);\r\n editorArea.style.height = (_var.innerHeight_fullScreen - options.fullScreenOffset) + 'px';\r\n\r\n if (element) util.changeElement(element.firstElementChild, icons.reduction);\r\n\r\n if (options.iframe && options.height === 'auto') {\r\n editorArea.style.overflow = 'auto';\r\n this._iframeAutoHeight();\r\n }\r\n\r\n context.element.topArea.style.marginTop = options.fullScreenOffset + 'px';\r\n util.addClass(this._styleCommandMap.fullScreen, 'active');\r\n } else {\r\n _var.isFullScreen = false;\r\n\r\n wysiwygFrame.style.cssText = _var._wysiwygOriginCssText;\r\n code.style.cssText = _var._codeOriginCssText;\r\n toolbar.style.cssText = '';\r\n editorArea.style.cssText = _var._editorAreaOriginCssText;\r\n topArea.style.cssText = _var._originCssText;\r\n _d.body.style.overflow = _var._bodyOverflow;\r\n\r\n if (options.height === 'auto' && !options.codeMirrorEditor) event._codeViewAutoHeight();\r\n\r\n if (!!options.toolbarContainer) options.toolbarContainer.appendChild(toolbar);\r\n\r\n if (options.stickyToolbar > -1) {\r\n util.removeClass(toolbar, 'se-toolbar-sticky');\r\n }\r\n\r\n if (_var._fullScreenAttrs.sticky && !options.toolbarContainer) {\r\n _var._fullScreenAttrs.sticky = false;\r\n context.element._stickyDummy.style.display = 'block';\r\n util.addClass(toolbar, \"se-toolbar-sticky\");\r\n }\r\n\r\n this._isInline = _var._fullScreenAttrs.inline;\r\n this._isBalloon = _var._fullScreenAttrs.balloon;\r\n if (this._isInline) event._showToolbarInline();\r\n if (!!options.toolbarContainer) util.removeClass(toolbar, 'se-toolbar-balloon');\r\n\r\n event.onScroll_window();\r\n if (element) util.changeElement(element.firstElementChild, icons.expansion);\r\n\r\n context.element.topArea.style.marginTop = '';\r\n util.removeClass(this._styleCommandMap.fullScreen, 'active');\r\n }\r\n\r\n if (wasToolbarHidden) functions.toolbar.hide();\r\n\r\n // user event\r\n if (typeof functions.toggleFullScreen === 'function') functions.toggleFullScreen(this._variable.isFullScreen, this);\r\n },\r\n\r\n /**\r\n * @description Prints the current contents of the editor.\r\n */\r\n print: function () {\r\n const iframe = util.createElement('IFRAME');\r\n iframe.style.display = 'none';\r\n _d.body.appendChild(iframe);\r\n\r\n const contentsHTML = options.printTemplate ? options.printTemplate.replace(/\\{\\{\\s*contents\\s*\\}\\}/i, this.getContents(true)) : this.getContents(true);\r\n const printDocument = util.getIframeDocument(iframe);\r\n const wDoc = this._wd;\r\n\r\n if (options.iframe) {\r\n const arrts = options._printClass !== null ? 'class=\"' + options._printClass + '\"' : options.fullPage ? util.getAttributesToString(wDoc.body, ['contenteditable']) : 'class=\"' + options._editableClass + '\"';\r\n\r\n printDocument.write('' +\r\n '<!DOCTYPE html><html>' +\r\n '<head>' +\r\n wDoc.head.innerHTML +\r\n '</head>' +\r\n '<body ' + arrts + '>' + contentsHTML + '</body>' +\r\n '</html>'\r\n );\r\n } else {\r\n const links = _d.head.getElementsByTagName('link');\r\n const styles = _d.head.getElementsByTagName('style');\r\n let linkHTML = '';\r\n for (let i = 0, len = links.length; i < len; i++) {\r\n linkHTML += links[i].outerHTML;\r\n }\r\n for (let i = 0, len = styles.length; i < len; i++) {\r\n linkHTML += styles[i].outerHTML;\r\n }\r\n\r\n printDocument.write('' +\r\n '<!DOCTYPE html><html>' +\r\n '<head>' +\r\n linkHTML +\r\n '</head>' +\r\n '<body class=\"' + (options._printClass !== null ? options._printClass : options._editableClass) + '\">' + contentsHTML + '</body>' +\r\n '</html>'\r\n );\r\n }\r\n\r\n this.showLoading();\r\n _w.setTimeout(function () {\r\n try {\r\n iframe.focus();\r\n // IE or Edge, Chromium\r\n if (util.isIE_Edge || util.isChromium || !!_d.documentMode || !!_w.StyleMedia) {\r\n try {\r\n iframe.contentWindow.document.execCommand('print', false, null);\r\n } catch (e) {\r\n iframe.contentWindow.print();\r\n }\r\n } else {\r\n // Other browsers\r\n iframe.contentWindow.print();\r\n }\r\n } catch (error) {\r\n throw Error('[SUNEDITOR.core.print.fail] error: ' + error);\r\n } finally {\r\n core.closeLoading();\r\n util.removeItem(iframe);\r\n }\r\n }, 1000);\r\n },\r\n\r\n /**\r\n * @description Open the preview window.\r\n */\r\n preview: function () {\r\n core.submenuOff();\r\n core.containerOff();\r\n core.controllersOff();\r\n \r\n const contentsHTML = options.previewTemplate ? options.previewTemplate.replace(/\\{\\{\\s*contents\\s*\\}\\}/i, this.getContents(true)) : this.getContents(true);\r\n const windowObject = _w.open('', '_blank');\r\n windowObject.mimeType = 'text/html';\r\n const wDoc = this._wd;\r\n\r\n if (options.iframe) {\r\n const arrts = options._printClass !== null ? 'class=\"' + options._printClass + '\"' : options.fullPage ? util.getAttributesToString(wDoc.body, ['contenteditable']) : 'class=\"' + options._editableClass + '\"';\r\n\r\n windowObject.document.write('' +\r\n '<!DOCTYPE html><html>' +\r\n '<head>' +\r\n wDoc.head.innerHTML +\r\n '<style>body {overflow:auto !important; margin: 10px auto !important; height:auto !important; outline:1px dashed #ccc;}</style>' +\r\n '</head>' +\r\n '<body ' + arrts + '>' + contentsHTML + '</body>' +\r\n '</html>'\r\n );\r\n } else {\r\n const links = _d.head.getElementsByTagName('link');\r\n const styles = _d.head.getElementsByTagName('style');\r\n let linkHTML = '';\r\n for (let i = 0, len = links.length; i < len; i++) {\r\n linkHTML += links[i].outerHTML;\r\n }\r\n for (let i = 0, len = styles.length; i < len; i++) {\r\n linkHTML += styles[i].outerHTML;\r\n }\r\n \r\n windowObject.document.write('' +\r\n '<!DOCTYPE html><html>' +\r\n '<head>' +\r\n '<meta charset=\"utf-8\" />' +\r\n '<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\">' +\r\n '<title>' + lang.toolbar.preview + '</title>' +\r\n linkHTML +\r\n '</head>' +\r\n '<body class=\"' + (options._printClass !== null ? options._printClass : options._editableClass) + '\" style=\"margin:10px auto !important; height:auto !important; outline:1px dashed #ccc;\">' + contentsHTML + '</body>' +\r\n '</html>'\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * @description Set direction to \"rtl\" or \"ltr\".\r\n * @param {String} dir \"rtl\" or \"ltr\"\r\n */\r\n setDir: function (dir) {\r\n const rtl = dir === 'rtl';\r\n const changeDir = this._prevRtl !== rtl;\r\n this._prevRtl = options.rtl = rtl;\r\n\r\n if (changeDir) {\r\n // align buttons\r\n if (this.plugins.align) {\r\n this.plugins.align.exchangeDir.call(this);\r\n }\r\n // indent buttons\r\n if (context.tool.indent) util.changeElement(context.tool.indent.firstElementChild, icons.indent);\r\n if (context.tool.outdent) util.changeElement(context.tool.outdent.firstElementChild, icons.outdent);\r\n }\r\n\r\n const el = context.element;\r\n if (rtl) {\r\n util.addClass(el.topArea, 'se-rtl');\r\n util.addClass(el.wysiwygFrame, 'se-rtl');\r\n } else {\r\n util.removeClass(el.topArea, 'se-rtl');\r\n util.removeClass(el.wysiwygFrame, 'se-rtl');\r\n }\r\n\r\n const lineNodes = util.getListChildren(el.wysiwyg, function (current) {\r\n return util.isFormatElement(current) && (current.style.marginRight || current.style.marginLeft || current.style.textAlign);\r\n });\r\n\r\n for (let i = 0, len = lineNodes.length, n, l, r; i < len; i++) {\r\n n = lineNodes[i];\r\n // indent margin\r\n r = n.style.marginRight;\r\n l = n.style.marginLeft;\r\n if (r || l) {\r\n n.style.marginRight = l;\r\n n.style.marginLeft = r;\r\n }\r\n // text align\r\n r = n.style.textAlign;\r\n if (r === 'left') n.style.textAlign = 'right';\r\n else if (r === 'right') n.style.textAlign = 'left';\r\n }\r\n\r\n const tool = context.tool;\r\n if (tool.dir) {\r\n util.changeTxt(tool.dir.querySelector('.se-tooltip-text'), lang.toolbar[options.rtl ? 'dir_ltr' : 'dir_rtl']);\r\n util.changeElement(tool.dir.firstElementChild, icons[options.rtl ? 'dir_ltr' : 'dir_rtl']);\r\n }\r\n\r\n if (tool.dir_ltr) {\r\n if (rtl) util.removeClass(tool.dir_ltr, 'active');\r\n else util.addClass(tool.dir_ltr, 'active');\r\n }\r\n\r\n if (tool.dir_rtl) {\r\n if (rtl) util.addClass(tool.dir_rtl, 'active');\r\n else util.removeClass(tool.dir_rtl, 'active');\r\n }\r\n },\r\n\r\n /**\r\n * @description Sets the HTML string\r\n * @param {String|undefined} html HTML string\r\n */\r\n setContents: function (html) {\r\n this.removeRange();\r\n \r\n const convertValue = (html === null || html === undefined) ? '' : this.convertContentsForEditor(html, null, null);\r\n if (!this._variable.isCodeView) {\r\n context.element.wysiwyg.innerHTML = convertValue;\r\n this._resetComponents();\r\n // history stack\r\n this.history.push(false);\r\n } else {\r\n const value = this.convertHTMLForCodeView(convertValue, false);\r\n this._setCodeView(value);\r\n }\r\n },\r\n\r\n /**\r\n * @description Sets the contents of the iframe's head tag and body tag when using the \"iframe\" or \"fullPage\" option.\r\n * @param {Object} ctx { head: HTML string, body: HTML string}\r\n */\r\n setIframeContents: function (ctx) {\r\n if (!options.iframe) return false;\r\n if (ctx.head) this._wd.head.innerHTML = this.options.__allowedScriptTag ? ctx.head : ctx.head.replace(this.__scriptTagRegExp, '');\r\n if (ctx.body) this._wd.body.innerHTML = this.convertContentsForEditor(ctx.body);\r\n this._resetComponents();\r\n },\r\n\r\n /**\r\n * @description Gets the current contents\r\n * @param {Boolean} onlyContents Return only the contents of the body without headers when the \"fullPage\" option is true\r\n * @returns {Object}\r\n */\r\n getContents: function (onlyContents) {\r\n const contents = this.cleanHTML(context.element.wysiwyg.innerHTML, null, null);\r\n const renderHTML = util.createElement('DIV');\r\n renderHTML.innerHTML = contents;\r\n\r\n const editableEls = util.getListChildren(renderHTML, function (current) {\r\n return current.hasAttribute('contenteditable');\r\n });\r\n\r\n for (let i = 0, len = editableEls.length; i < len; i++) {\r\n editableEls[i].removeAttribute('contenteditable');\r\n }\r\n\r\n if (options.fullPage && !onlyContents) {\r\n const attrs = util.getAttributesToString(this._wd.body, ['contenteditable']);\r\n return '<!DOCTYPE html><html>' + this._wd.head.outerHTML + '<body ' + attrs + '>' + renderHTML.innerHTML + '</body></html>';\r\n } else {\r\n return renderHTML.innerHTML;\r\n }\r\n },\r\n\r\n /**\r\n * @description Gets the current contents with containing parent div(div.sun-editor-editable).\r\n * <div class=\"sun-editor-editable\">{contents}</div>\r\n * @param {Boolean} onlyContents Return only the contents of the body without headers when the \"fullPage\" option is true\r\n * @returns {String}\r\n */\r\n getFullContents: function (onlyContents) {\r\n return '<div class=\"sun-editor-editable' + (options.rtl ? ' se-rtl' : '') + '\">' + this.getContents(onlyContents) + '</div>';\r\n },\r\n\r\n /**\r\n * @description Returns HTML string according to tag type and configuration.\r\n * Use only \"cleanHTML\"\r\n * @param {Node} node Node\r\n * @param {Boolean} requireFormat If true, text nodes that do not have a format node is wrapped with the format tag.\r\n * @private\r\n */\r\n _makeLine: function (node, requireFormat) {\r\n const defaultTag = options.defaultTag;\r\n // element\r\n if (node.nodeType === 1) {\r\n if (this.__disallowedTagNameRegExp.test(node.nodeName)) return '';\r\n if (/__se__tag/.test(node.className)) return node.outerHTML;\r\n\r\n const ch = util.getListChildNodes(node, function(current) { return util.isSpanWithoutAttr(current) && !util.getParentElement(current, util.isNotCheckingNode); }) || [];\r\n for (let i = ch.length - 1; i >= 0; i--) {\r\n ch[i].outerHTML = ch[i].innerHTML;\r\n }\r\n\r\n if (!requireFormat || (util.isFormatElement(node) || util.isRangeFormatElement(node) || util.isComponent(node) || util.isMedia(node) || (util.isAnchor(node) && util.isMedia(node.firstElementChild)))) {\r\n return util.isSpanWithoutAttr(node) ? node.innerHTML : node.outerHTML;\r\n } else {\r\n return '<' + defaultTag + '>' + (util.isSpanWithoutAttr(node) ? node.innerHTML : node.outerHTML) + '</' + defaultTag + '>';\r\n }\r\n }\r\n // text\r\n if (node.nodeType === 3) {\r\n if (!requireFormat) return util._HTMLConvertor(node.textContent);\r\n const textArray = node.textContent.split(/\\n/g);\r\n let html = '';\r\n for (let i = 0, tLen = textArray.length, text; i < tLen; i++) {\r\n text = textArray[i].trim();\r\n if (text.length > 0) html += '<' + defaultTag + '>' + util._HTMLConvertor(text) + '</' + defaultTag + '>';\r\n }\r\n return html;\r\n }\r\n // comments\r\n if (node.nodeType === 8 && this._allowHTMLComments) {\r\n return '<!--' + node.textContent.trim() + '-->';\r\n }\r\n\r\n return '';\r\n },\r\n\r\n /**\r\n * @description Removes attribute values such as style and converts tags that do not conform to the \"html5\" standard.\r\n * @param {String} text \r\n * @returns {String} HTML string\r\n * @private\r\n */\r\n _tagConvertor: function (text) {\r\n if (!this._disallowedTextTagsRegExp) return text;\r\n\r\n const ec = options._textTagsMap;\r\n return text.replace(this._disallowedTextTagsRegExp, function (m, t, n, p) {\r\n return t + (typeof ec[n] === 'string' ? ec[n] : n) + (p ? ' ' + p : '');\r\n });\r\n },\r\n\r\n /**\r\n * @description Delete disallowed tags\r\n * @param {String} html HTML string\r\n * @returns {String}\r\n * @private\r\n */\r\n _deleteDisallowedTags: function (html) {\r\n\t\t\thtml = html\r\n\t\t\t\t.replace(this.__disallowedTagsRegExp, '')\r\n\t\t\t\t.replace(/<[a-z0-9]+\\:[a-z0-9]+[^>^\\/]*>[^>]*<\\/[a-z0-9]+\\:[a-z0-9]+>/gi, '');\r\n\r\n if (!/\\bfont\\b/i.test(this.options._editorTagsWhitelist)) {\r\n html = html.replace(/(<\\/?)font(\\s?)/gi, '$1span$2');\r\n }\r\n\r\n\t\t\treturn html.replace(this.editorTagsWhitelistRegExp, '').replace(this.editorTagsBlacklistRegExp, '');\r\n\t\t},\r\n\r\n _convertFontSize: function (to, size) {\r\n const math = this._w.Math;\r\n const value = size.match(/(\\d+(?:\\.\\d+)?)(.+)/);\r\n const sizeNum = value ? value[1] * 1 : util.fontValueMap[size];\r\n const from = value ? value[2] : 'rem';\r\n let pxSize = sizeNum;\r\n \r\n if (/em/.test(from)) {\r\n pxSize = math.round(sizeNum / 0.0625);\r\n } else if (from === 'pt') {\r\n pxSize = math.round(sizeNum * 1.333);\r\n } else if (from === '%') {\r\n pxSize = sizeNum / 100;\r\n }\r\n\r\n switch (to) {\r\n case 'em':\r\n case 'rem':\r\n case '%':\r\n return (pxSize * 0.0625).toFixed(2) + to;\r\n case 'pt':\r\n return math.floor(pxSize / 1.333) + to;\r\n default: // px\r\n return pxSize + to;\r\n }\r\n },\r\n\r\n _cleanStyle: function (m, v, name) {\r\n let sv = (m.match(/style\\s*=\\s*(?:\"|')[^\"']*(?:\"|')/) || [])[0];\r\n if (/span/i.test(name) && !sv && (m.match(/<span\\s(.+)/) || [])[1]) {\r\n const size = (m.match(/\\ssize=\"([^\"]+)\"/i) || [])[1];\r\n const face = (m.match(/\\sface=\"([^\"]+)\"/i) || [])[1];\r\n const color = (m.match(/\\scolor=\"([^\"]+)\"/i) || [])[1];\r\n if (size || face || color) {\r\n sv = 'style=\"' + (size ? 'font-size:' + (this.util.getNumber(size/3.333, 1)) + 'rem;' : '') + (face ? 'font-family:' + face + ';' : '') + (color ? 'color:' + color + ';' : '') + '\"';\r\n }\r\n }\r\n\r\n if (sv) {\r\n if (!v) v = [];\r\n const style = sv.replace(/"/g, '').match(this._cleanStyleRegExp[name]);\r\n if (style) {\r\n const allowedStyle = [];\r\n for (let i = 0, len = style.length, r; i < len; i++) {\r\n r = style[i].match(/([a-zA-Z0-9-]+)(:)([^\"]+)/);\r\n if (r && !/inherit|initial|revert|unset/i.test(r[3])) {\r\n const k = util.kebabToCamelCase(r[1].trim());\r\n const v = this.wwComputedStyle[k].replace(/\"/g, '');\r\n const c = r[3].trim();\r\n switch (k) {\r\n case 'fontFamily':\r\n if (!options.plugins.font || options.font.indexOf(c) === -1) continue;\r\n break;\r\n case 'fontSize':\r\n if (!options.plugins.fontSize) continue;\r\n if (!this._cleanStyleRegExp.fontSizeUnit.test(r[0])) {\r\n r[0] = r[0].replace((r[0].match(/:\\s*([^;]+)/) || [])[1], this._convertFontSize.bind(this, options.fontSizeUnit));\r\n }\r\n break;\r\n case 'color':\r\n if (!options.plugins.fontColor || /rgba\\(([0-9]+\\s*,\\s*){3}0\\)|windowtext/i.test(c)) continue;\r\n break;\r\n case 'backgroundColor':\r\n if (!options.plugins.hiliteColor || /rgba\\(([0-9]+\\s*,\\s*){3}0\\)|windowtext/i.test(c)) continue;\r\n break;\r\n }\r\n \r\n if (v !== c) {\r\n allowedStyle.push(r[0]);\r\n }\r\n }\r\n }\r\n if (allowedStyle.length > 0) v.push('style=\"' + allowedStyle.join(';') + '\"');\r\n }\r\n }\r\n\r\n return v;\r\n },\r\n\r\n /**\r\n * @description Tag and tag attribute check RegExp function. (used by \"cleanHTML\" and \"convertContentsForEditor\")\r\n * @param {Boolean} lowLevelCheck Row level check\r\n * @param {String} m RegExp value\r\n * @param {String} t RegExp value\r\n * @returns {String}\r\n * @private\r\n */\r\n _cleanTags: function (lowLevelCheck, m, t) {\r\n if (/^<[a-z0-9]+\\:[a-z0-9]+/i.test(m)) return m;\r\n \r\n let v = null;\r\n const tagName = t.match(/(?!<)[a-zA-Z0-9\\-]+/)[0].toLowerCase();\r\n \r\n // blacklist\r\n const bAttr = this._attributesTagsBlacklist[tagName];\r\n m = m.replace(/\\s(?:on[a-z]+)\\s*=\\s*(\")[^\"]*\\1/ig, '');\r\n if (bAttr) m = m.replace(bAttr, '');\r\n else m = m.replace(this._attributesBlacklistRegExp, '');\r\n \r\n // whitelist\r\n const wAttr = this._attributesTagsWhitelist[tagName];\r\n if (wAttr) v = m.match(wAttr);\r\n else v = m.match(lowLevelCheck ? this._attributesWhitelistRegExp : this._attributesWhitelistRegExp_all_data);\r\n \r\n // attribute\r\n if (lowLevelCheck || tagName === 'span') {\r\n if (tagName === 'a') {\r\n const sv = m.match(/(?:(?:id|name)\\s*=\\s*(?:\"|')[^\"']*(?:\"|'))/g);\r\n if (sv) {\r\n if (!v) v = [];\r\n v.push(sv[0]);\r\n }\r\n } else if (!v || !/style=/i.test(v.toString())) {\r\n if (tagName === 'span') {\r\n v = this._cleanStyle(m, v, 'span');\r\n } else if (/^(P|DIV|H[1-6]|PRE)$/i.test(tagName)) {\r\n v = this._cleanStyle(m, v, 'format');\r\n }\r\n }\r\n } else {\r\n const sv = m.match(/style\\s*=\\s*(?:\"|')[^\"']*(?:\"|')/);\r\n if (sv && !v) v = [sv[0]];\r\n else if (sv && !v.some(function (v) { return /^style/.test(v.trim()); })) v.push(sv[0]);\r\n }\r\n\r\n // figure\r\n if (util.isFigures(tagName)) {\r\n const sv = m.match(/style\\s*=\\s*(?:\"|')[^\"']*(?:\"|')/);\r\n if (!v) v = [];\r\n if (sv) v.push(sv[0]);\r\n }\r\n\r\n if (v) {\r\n for (let i = 0, len = v.length, a; i < len; i++) {\r\n // if (lowLevelCheck && /^class=\"(?!(__se__|se-|katex))/.test(v[i].trim())) continue;\r\n a = (/^(?:href|src)\\s*=\\s*('|\"|\\s)*javascript\\s*\\:/i.test(v[i].trim()) ? '' : v[i]);\r\n t += (/^\\s/.test(a) ? '' : ' ') + a;\r\n }\r\n }\r\n\r\n return t;\r\n },\r\n\r\n /**\r\n * @description Determines if formatting is required and returns a domTree\r\n * @param {Element} dom documentFragment\r\n * @returns {Element}\r\n * @private\r\n */\r\n _editFormat: function (dom) {\r\n let value = '', f;\r\n const tempTree = dom.childNodes;\r\n \r\n for (let i = 0, len = tempTree.length, n; i < len; i++) {\r\n n = tempTree[i];\r\n if (n.nodeType === 8) {\r\n value += '<!-- ' + n.textContent + ' -->';\r\n } else if (!util.isFormatElement(n) && !util.isRangeFormatElement(n) && !util.isComponent(n) && !/meta/i.test(n.nodeName)) {\r\n if (!f) f = util.createElement(options.defaultTag);\r\n f.appendChild(n);\r\n i--; len--;\r\n } else {\r\n if (f) {\r\n value += f.outerHTML;\r\n f = null;\r\n }\r\n value += n.outerHTML;\r\n }\r\n }\r\n\r\n if (f) value += f.outerHTML;\r\n\r\n return _d.createRange().createContextualFragment(value);\r\n },\r\n\r\n _convertListCell: function (domTree) {\r\n let html = '';\r\n\r\n for (let i = 0, len = domTree.length, node; i < len; i++) {\r\n node = domTree[i];\r\n if (node.nodeType === 1) {\r\n if (util.isList(node)) {\r\n html += node.innerHTML;\r\n } else if (util.isListCell(node)) {\r\n html += node.outerHTML;\r\n } else if (util.isFormatElement(node)) {\r\n html += '<li>' +(node.innerHTML.trim() || '<br>') + '</li>';\r\n } else if (util.isRangeFormatElement(node) && !util.isTable(node)) {\r\n html += this._convertListCell(node);\r\n } else {\r\n html += '<li>' + node.outerHTML + '</li>';\r\n }\r\n } else {\r\n html += '<li>' + (node.textContent || '<br>') + '</li>';\r\n }\r\n }\r\n\r\n return html;\r\n },\r\n\r\n _isFormatData: function (domTree) {\r\n let requireFormat = false;\r\n\r\n for (let i = 0, len = domTree.length, t; i < len; i++) {\r\n t = domTree[i];\r\n if (t.nodeType === 1 && !util.isTextStyleElement(t) && !util.isBreak(t) && !this.__disallowedTagNameRegExp.test(t.nodeName)) {\r\n requireFormat = true;\r\n break;\r\n }\r\n }\r\n\r\n return requireFormat;\r\n },\r\n\r\n /**\r\n * @description Gets the clean HTML code for editor\r\n * @param {String} html HTML string\r\n * @param {String|RegExp|null} whitelist Regular expression of allowed tags.\r\n * RegExp object is create by util.createTagsWhitelist method. (core.pasteTagsWhitelistRegExp)\r\n * @param {String|RegExp|null} blacklist Regular expression of disallowed tags.\r\n * RegExp object is create by util.createTagsBlacklist method. (core.pasteTagsBlacklistRegExp)\r\n * @returns {String}\r\n */\r\n cleanHTML: function (html, whitelist, blacklist) {\r\n html = this._deleteDisallowedTags(this._parser.parseFromString(util.htmlCompress(html), 'text/html').body.innerHTML).replace(/(<[a-zA-Z0-9\\-]+)[^>]*(?=>)/g, this._cleanTags.bind(this, true)).replace(/<br\\/?>$/i, '');\r\n const dom = _d.createRange().createContextualFragment(html);\r\n try {\r\n util._consistencyCheckOfHTML(dom, this._htmlCheckWhitelistRegExp, this._htmlCheckBlacklistRegExp, this._classNameFilter);\r\n } catch (error) {\r\n console.warn('[SUNEDITOR.cleanHTML.consistencyCheck.fail] ' + error);\r\n }\r\n \r\n if (this.managedTagsInfo && this.managedTagsInfo.query) {\r\n const textCompList = dom.querySelectorAll(this.managedTagsInfo.query);\r\n for (let i = 0, len = textCompList.length, initMethod, classList; i < len; i++) {\r\n classList = [].slice.call(textCompList[i].classList);\r\n for (let c = 0, cLen = classList.length; c < cLen; c++) {\r\n initMethod = this.managedTagsInfo.map[classList[c]];\r\n if (initMethod) {\r\n initMethod(textCompList[i]);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n let domTree = dom.childNodes;\r\n let cleanHTML = '';\r\n const requireFormat = this._isFormatData(domTree);\r\n\r\n if(requireFormat) {\r\n domTree = this._editFormat(dom).childNodes;\r\n }\r\n\r\n for (let i = 0, len = domTree.length, t; i < len; i++) {\r\n t = domTree[i];\r\n if (this.__allowedScriptRegExp.test(t.nodeName)) {\r\n cleanHTML += t.outerHTML;\r\n continue;\r\n }\r\n cleanHTML += this._makeLine(t, requireFormat);\r\n }\r\n\r\n cleanHTML = util.htmlRemoveWhiteSpace(cleanHTML);\r\n if (!cleanHTML) {\r\n cleanHTML = html;\r\n } else {\r\n if (whitelist) cleanHTML = cleanHTML.replace(typeof whitelist === 'string' ? util.createTagsWhitelist(whitelist) : whitelist, '');\r\n if (blacklist) cleanHTML = cleanHTML.replace(typeof blacklist === 'string' ? util.createTagsBlacklist(blacklist) : blacklist, '');\r\n }\r\n\r\n return this._tagConvertor(cleanHTML);\r\n },\r\n\r\n /**\r\n * @description Converts contents into a format that can be placed in an editor\r\n * @param {String} contents contents\r\n * @returns {String}\r\n */\r\n convertContentsForEditor: function (contents) {\r\n contents = this._deleteDisallowedTags(this._parser.parseFromString(util.htmlCompress(contents), 'text/html').body.innerHTML).replace(/(<[a-zA-Z0-9\\-]+)[^>]*(?=>)/g, this._cleanTags.bind(this, true));\r\n const dom = _d.createRange().createContextualFragment(contents);\r\n\r\n try {\r\n util._consistencyCheckOfHTML(dom, this._htmlCheckWhitelistRegExp, this._htmlCheckBlacklistRegExp, this._classNameFilter);\r\n } catch (error) {\r\n console.warn('[SUNEDITOR.convertContentsForEditor.consistencyCheck.fail] ' + error);\r\n }\r\n\r\n if (this.managedTagsInfo && this.managedTagsInfo.query) {\r\n const textCompList = dom.querySelectorAll(this.managedTagsInfo.query);\r\n for (let i = 0, len = textCompList.length, initMethod, classList; i < len; i++) {\r\n classList = [].slice.call(textCompList[i].classList);\r\n for (let c = 0, cLen = classList.length; c < cLen; c++) {\r\n initMethod = this.managedTagsInfo.map[classList[c]];\r\n if (initMethod) {\r\n initMethod(textCompList[i]);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n \r\n const domTree = dom.childNodes;\r\n let cleanHTML = '', p = null;\r\n for (let i = 0, t; i < domTree.length; i++) {\r\n t = domTree[i];\r\n\r\n if (this.__allowedScriptRegExp.test(t.nodeName)) {\r\n cleanHTML += t.outerHTML;\r\n continue;\r\n }\r\n\r\n if (!util.isFormatElement(t) && !util.isRangeFormatElement(t) && !util.isComponent(t) && !util.isMedia(t) && t.nodeType !== 8 && !/__se__tag/.test(t.className)) {\r\n if (!p) p = util.createElement(options.defaultTag);\r\n p.appendChild(t);\r\n i--;\r\n if (domTree[i + 1] && !util.isFormatElement(domTree[i + 1])) {\r\n continue;\r\n } else {\r\n t = p;\r\n p = null;\r\n }\r\n }\r\n\r\n if (p) {\r\n cleanHTML += this._makeLine(p, true);\r\n p = null;\r\n }\r\n cleanHTML += this._makeLine(t, true);\r\n }\r\n if (p) cleanHTML += this._makeLine(p, true);\r\n\r\n if (cleanHTML.length === 0) return '<' + options.defaultTag + '><br></' + options.defaultTag + '>';\r\n\r\n cleanHTML = util.htmlRemoveWhiteSpace(cleanHTML);\r\n return this._tagConvertor(cleanHTML);\r\n },\r\n\r\n /**\r\n * @description Converts wysiwyg area element into a format that can be placed in an editor of code view mode\r\n * @param {Element|String} html WYSIWYG element (context.element.wysiwyg) or HTML string.\r\n * @param {Boolean} comp If true, does not line break and indentation of tags.\r\n * @returns {String}\r\n */\r\n convertHTMLForCodeView: function (html, comp) {\r\n let returnHTML = '';\r\n const wRegExp = _w.RegExp;\r\n const brReg = new wRegExp('^(BLOCKQUOTE|PRE|TABLE|THEAD|TBODY|TR|TH|TD|OL|UL|IMG|IFRAME|VIDEO|AUDIO|FIGURE|FIGCAPTION|HR|BR|CANVAS|SELECT)$', 'i');\r\n const wDoc = typeof html === 'string' ? _d.createRange().createContextualFragment(html) : html;\r\n const isFormat = function (current) { return this.isFormatElement(current) || this.isComponent(current); }.bind(util);\r\n const brChar = comp ? '' : '\\n';\r\n\r\n let indentSize = comp ? 0 : this._variable.codeIndent * 1;\r\n indentSize = indentSize > 0 ? new _w.Array(indentSize + 1).join(' ') : '';\r\n\r\n (function recursionFunc (element, indent) {\r\n const children = element.childNodes;\r\n const elementRegTest = brReg.test(element.nodeName);\r\n const elementIndent = (elementRegTest ? indent : '');\r\n\r\n for (let i = 0, len = children.length, node, br, lineBR, nodeRegTest, tag, tagIndent; i < len; i++) {\r\n node = children[i];\r\n nodeRegTest = brReg.test(node.nodeName);\r\n br = nodeRegTest ? brChar : '';\r\n lineBR = isFormat(node) && !elementRegTest && !/^(TH|TD)$/i.test(element.nodeName) ? brChar : '';\r\n\r\n if (node.nodeType === 8) {\r\n returnHTML += '\\n<!-- ' + node.textContent.trim() + ' -->' + br;\r\n continue;\r\n }\r\n if (node.nodeType === 3) {\r\n if (!util.isList(node.parentElement)) returnHTML += util._HTMLConvertor(/^\\n+$/.test(node.data) ? '' : node.data);\r\n continue;\r\n }\r\n if (node.childNodes.length === 0) {\r\n returnHTML += (/^HR$/i.test(node.nodeName) ? brChar : '') + (/^PRE$/i.test(node.parentElement.nodeName) && /^BR$/i.test(node.nodeName) ? '' : elementIndent) + node.outerHTML + br;\r\n continue;\r\n }\r\n\r\n if (!node.outerHTML) { // IE\r\n returnHTML += new _w.XMLSerializer().serializeToString(node);\r\n } else {\r\n tag = node.nodeName.toLowerCase();\r\n tagIndent = elementIndent || nodeRegTest ? indent : '';\r\n returnHTML += (lineBR || (elementRegTest ? '' : br)) + tagIndent + node.outerHTML.match(wRegExp('<' + tag + '[^>]*>', 'i'))[0] + br;\r\n recursionFunc(node, indent + indentSize, '');\r\n returnHTML += (/\\n$/.test(returnHTML) ? tagIndent : '') + '</' + tag + '>' + (lineBR || br || elementRegTest ? brChar : '' || /^(TH|TD)$/i.test(node.nodeName) ? brChar : '');\r\n }\r\n }\r\n }(wDoc, ''));\r\n\r\n return returnHTML.trim() + brChar;\r\n },\r\n\r\n /**\r\n * @description Add an event to document.\r\n * When created as an Iframe, the same event is added to the document in the Iframe.\r\n * @param {String} type Event type\r\n * @param {Function} listener Event listener\r\n * @param {Boolean} useCapture Use event capture\r\n */\r\n addDocEvent: function (type, listener, useCapture) {\r\n _d.addEventListener(type, listener, useCapture);\r\n if (options.iframe) {\r\n this._wd.addEventListener(type, listener);\r\n }\r\n },\r\n\r\n /**\r\n * @description Remove events from document.\r\n * When created as an Iframe, the event of the document inside the Iframe is also removed.\r\n * @param {String} type Event type\r\n * @param {Function} listener Event listener\r\n */\r\n removeDocEvent: function (type, listener) {\r\n _d.removeEventListener(type, listener);\r\n if (options.iframe) {\r\n this._wd.removeEventListener(type, listener);\r\n }\r\n },\r\n\r\n /**\r\n * @description The current number of characters is counted and displayed.\r\n * @param {String} inputText Text added.\r\n * @returns {Boolean}\r\n * @private\r\n */\r\n _charCount: function (inputText) {\r\n const maxCharCount = options.maxCharCount;\r\n const countType = options.charCounterType;\r\n let nextCharCount = 0;\r\n if (!!inputText) nextCharCount = this.getCharLength(inputText, countType);\r\n\r\n this._setCharCount();\r\n\r\n if (maxCharCount > 0) {\r\n let over = false;\r\n const count = functions.getCharCount(countType);\r\n \r\n if (count > maxCharCount) {\r\n over = true;\r\n if (nextCharCount > 0) {\r\n this._editorRange();\r\n const range = this.getRange();\r\n const endOff = range.endOffset - 1;\r\n const text = this.getSelectionNode().textContent;\r\n const slicePosition = range.endOffset - (count - maxCharCount);\r\n \r\n this.getSelectionNode().textContent = text.slice(0, slicePosition < 0 ? 0 : slicePosition) + text.slice(range.endOffset, text.length);\r\n this.setRange(range.endContainer, endOff, range.endContainer, endOff);\r\n }\r\n } else if ((count + nextCharCount) > maxCharCount) {\r\n over = true;\r\n }\r\n\r\n if (over) {\r\n this._callCounterBlink();\r\n if (nextCharCount > 0) return false;\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n /**\r\n * @description When \"element\" is added, if it is greater than \"options.maxCharCount\", false is returned.\r\n * @param {Node|String} element Element node or String.\r\n * @param {String|null} charCounterType charCounterType. If it is null, the options.charCounterType\r\n * @returns {Boolean}\r\n */\r\n checkCharCount: function (element, charCounterType) {\r\n if (options.maxCharCount) {\r\n const countType = charCounterType || options.charCounterType;\r\n const length = this.getCharLength((typeof element === 'string' ? element : (this._charTypeHTML && element.nodeType === 1) ? element.outerHTML : element.textContent), countType);\r\n if (length > 0 && length + functions.getCharCount(countType) > options.maxCharCount) {\r\n this._callCounterBlink();\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n\r\n /**\r\n * @description Get the length of the content.\r\n * Depending on the option, the length of the character is taken. (charCounterType)\r\n * @param {String} content Content to count\r\n * @param {String} charCounterType options.charCounterType\r\n * @returns {Number}\r\n */\r\n getCharLength: function (content, charCounterType) {\r\n return /byte/.test(charCounterType) ? util.getByteLength(content) : content.length;\r\n },\r\n\r\n /**\r\n * @description Reset buttons of the responsive toolbar.\r\n */\r\n resetResponsiveToolbar: function () {\r\n core.controllersOff();\r\n\r\n const responsiveSize = event._responsiveButtonSize;\r\n if (responsiveSize) {\r\n let w = 0;\r\n if ((core._isBalloon || core._isInline) && options.toolbarWidth === 'auto') {\r\n w = context.element.topArea.offsetWidth;\r\n } else {\r\n w = context.element.toolbar.offsetWidth;\r\n }\r\n\r\n let responsiveWidth = 'default';\r\n for (let i = 1, len = responsiveSize.length; i < len; i++) {\r\n if (w < responsiveSize[i]) {\r\n responsiveWidth = responsiveSize[i] + '';\r\n break;\r\n }\r\n }\r\n\r\n if (event._responsiveCurrentSize !== responsiveWidth) {\r\n event._responsiveCurrentSize = responsiveWidth;\r\n functions.setToolbarButtons(event._responsiveButtons[responsiveWidth]);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * @description Set the char count to charCounter element textContent.\r\n * @private\r\n */\r\n _setCharCount: function () {\r\n if (context.element.charCounter) {\r\n _w.setTimeout(function () { context.element.charCounter.textContent = functions.getCharCount(options.charCounterType); });\r\n }\r\n },\r\n\r\n /**\r\n * @description The character counter blinks.\r\n * @private\r\n */\r\n _callCounterBlink: function () {\r\n const charWrapper = context.element.charWrapper;\r\n if (charWrapper && !util.hasClass(charWrapper, 'se-blink')) {\r\n util.addClass(charWrapper, 'se-blink');\r\n _w.setTimeout(function () {\r\n util.removeClass(charWrapper, 'se-blink');\r\n }, 600);\r\n }\r\n },\r\n\r\n /**\r\n * @description Check the components such as image and video and modify them according to the format.\r\n * @private\r\n */\r\n _checkComponents: function () {\r\n for (let i = 0, len = this._fileInfoPluginsCheck.length; i < len; i++) {\r\n this._fileInfoPluginsCheck[i]();\r\n }\r\n },\r\n\r\n /**\r\n * @description Initialize the information of the components.\r\n * @private\r\n */\r\n _resetComponents: function () {\r\n for (let i = 0, len = this._fileInfoPluginsReset.length; i < len; i++) {\r\n this._fileInfoPluginsReset[i]();\r\n }\r\n },\r\n\r\n /**\r\n * @description Set method in the code view area\r\n * @param {String} value HTML string\r\n * @private\r\n */\r\n _setCodeView: function (value) {\r\n if (options.codeMirrorEditor) {\r\n options.codeMirrorEditor.getDoc().setValue(value);\r\n } else {\r\n context.element.code.value = value;\r\n }\r\n },\r\n\r\n /**\r\n * @description Get method in the code view area\r\n * @private\r\n */\r\n _getCodeView: function () {\r\n return options.codeMirrorEditor ? options.codeMirrorEditor.getDoc().getValue() : context.element.code.value;\r\n },\r\n\r\n /**\r\n * @description remove class, display text.\r\n * @param {Array|null} ignoredList Igonred button list\r\n */\r\n _setKeyEffect: function (ignoredList) {\r\n const commandMap = this.commandMap;\r\n const activePlugins = this.activePlugins;\r\n\r\n for (let key in commandMap) {\r\n if (ignoredList.indexOf(key) > -1 || !util.hasOwn(commandMap, key)) continue;\r\n if (activePlugins.indexOf(key) > -1) {\r\n plugins[key].active.call(this, null);\r\n } else if (commandMap.OUTDENT && /^OUTDENT$/i.test(key)) {\r\n if (!util.isImportantDisabled(commandMap.OUTDENT)) commandMap.OUTDENT.setAttribute('disabled', true);\r\n } else if (commandMap.INDENT && /^INDENT$/i.test(key)) {\r\n if (!util.isImportantDisabled(commandMap.INDENT)) commandMap.INDENT.removeAttribute('disabled');\r\n } else {\r\n util.removeClass(commandMap[key], 'active');\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * @description Initializ core variable\r\n * @param {Boolean} reload Is relooad?\r\n * @param {String} _initHTML initial html string\r\n * @private\r\n */\r\n _init: function (reload, _initHTML) {\r\n const wRegExp = _w.RegExp;\r\n this._ww = options.iframe ? context.element.wysiwygFrame.contentWindow : _w;\r\n this._wd = _d;\r\n this._charTypeHTML = options.charCounterType === 'byte-html';\r\n this.wwComputedStyle = _w.getComputedStyle(context.element.wysiwyg);\r\n this._editorHeight = context.element.wysiwygFrame.offsetHeight;\r\n this._editorHeightPadding = util.getNumber(this.wwComputedStyle.getPropertyValue('padding-top')) + util.getNumber(this.wwComputedStyle.getPropertyValue('padding-bottom'));\r\n this._classNameFilter = function (v) {\r\n return this.test(v) ? v : '';\r\n }.bind(options.allowedClassNames);\r\n\r\n const sPrefix = (options.__allowedScriptTag ? '' : 'script|');\r\n this.__scriptTagRegExp = new wRegExp('<(script)[^>]*>([\\\\s\\\\S]*?)<\\\\/\\\\1>|<script[^>]*\\\\/?>', 'gi');\r\n this.__disallowedTagsRegExp = new wRegExp('<(' + sPrefix + 'style)[^>]*>([\\\\s\\\\S]*?)<\\\\/\\\\1>|<(' + sPrefix + 'style)[^>]*\\\\/?>', 'gi');\r\n this.__disallowedTagNameRegExp = new wRegExp('^(' + sPrefix + 'meta|link|style|[a-z]+\\:[a-z]+)$', 'i');\r\n this.__allowedScriptRegExp = new wRegExp('^' + (options.__allowedScriptTag ? 'script' : '') + '$', 'i');\r\n\r\n if (!options.iframe && typeof _w.ShadowRoot === 'function') {\r\n let child = context.element.wysiwygFrame;\r\n while (child) {\r\n if (child.shadowRoot) {\r\n this._shadowRoot = child.shadowRoot;\r\n break;\r\n } else if (child instanceof _w.ShadowRoot) {\r\n this._shadowRoot = child;\r\n break;\r\n }\r\n child = child.parentNode;\r\n }\r\n if (this._shadowRoot) this._shadowRootControllerEventTarget = [];\r\n }\r\n\r\n // set disallow text nodes\r\n const disallowTextTags = _w.Object.keys(options._textTagsMap);\r\n const allowTextTags = !options.addTagsWhitelist ? [] : options.addTagsWhitelist.split('|').filter(function (v) { return /b|i|ins|s|strike/i.test(v); });\r\n for (let i = 0; i < allowTextTags.length; i++) {\r\n disallowTextTags.splice(disallowTextTags.indexOf(allowTextTags[i].toLowerCase()), 1);\r\n }\r\n this._disallowedTextTagsRegExp = disallowTextTags.length === 0 ? null : new wRegExp('(<\\\\/?)(' + disallowTextTags.join('|') + ')\\\\b\\\\s*([^>^<]+)?\\\\s*(?=>)', 'gi');\r\n\r\n // set whitelist\r\n const getRegList = function (str, str2) { return !str ? '^' : (str === '*' ? '[a-z-]+' : (!str2 ? str : (str + '|' + str2))); };\r\n // tags\r\n const defaultAttr = 'contenteditable|colspan|rowspan|target|href|download|rel|src|alt|class|type|controls|origin-size';\r\n const dataAttr = 'data-format|data-size|data-file-size|data-file-name|data-origin|data-align|data-image-link|data-rotate|data-proportion|data-percentage|data-exp|data-font-size';\r\n this._allowHTMLComments = options._editorTagsWhitelist.indexOf('//') > -1 || options._editorTagsWhitelist === '*';\r\n // html check\r\n this._htmlCheckWhitelistRegExp = new wRegExp('^(' + getRegList(options._editorTagsWhitelist.replace('|//', ''), '') + ')$', 'i');\r\n this._htmlCheckBlacklistRegExp = new wRegExp('^(' + (options.tagsBlacklist || '^') + ')$', 'i');\r\n // tags\r\n this.editorTagsWhitelistRegExp = util.createTagsWhitelist(getRegList(options._editorTagsWhitelist.replace('|//', '|<!--|-->'), ''));\r\n this.editorTagsBlacklistRegExp = util.createTagsBlacklist(options.tagsBlacklist.replace('|//', '|<!--|-->'));\r\n // paste tags\r\n this.pasteTagsWhitelistRegExp = util.createTagsWhitelist(getRegList(options.pasteTagsWhitelist, ''));\r\n this.pasteTagsBlacklistRegExp = util.createTagsBlacklist(options.pasteTagsBlacklist);\r\n // attributes\r\n const regEndStr = '\\\\s*=\\\\s*(\\\")[^\\\"]*\\\\1';\r\n const _wAttr = options.attributesWhitelist;\r\n let tagsAttr = {};\r\n let allAttr = '';\r\n if (!!_wAttr) {\r\n for (let k in _wAttr) {\r\n if (!util.hasOwn(_wAttr, k) || /^on[a-z]+$/i.test(_wAttr[k])) continue;\r\n if (k === 'all') {\r\n allAttr = getRegList(_wAttr[k], defaultAttr);\r\n } else {\r\n tagsAttr[k] = new wRegExp('\\\\s(?:' + getRegList(_wAttr[k], '') + ')' + regEndStr, 'ig');\r\n }\r\n }\r\n }\r\n \r\n this._attributesWhitelistRegExp = new wRegExp('\\\\s(?:' + (allAttr || defaultAttr + '|' + dataAttr) + ')' + regEndStr, 'ig');\r\n this._attributesWhitelistRegExp_all_data = new wRegExp('\\\\s(?:' + ((allAttr || defaultAttr) + '|data-[a-z0-9\\\\-]+') + ')' + regEndStr, 'ig');\r\n this._attributesTagsWhitelist = tagsAttr;\r\n\r\n // blacklist\r\n const _bAttr = options.attributesBlacklist;\r\n tagsAttr = {};\r\n allAttr = '';\r\n if (!!_bAttr) {\r\n for (let k in _bAttr) {\r\n if (!util.hasOwn(_bAttr, k)) continue;\r\n if (k === 'all') {\r\n allAttr = getRegList(_bAttr[k], '');\r\n } else {\r\n tagsAttr[k] = new wRegExp('\\\\s(?:' + getRegList(_bAttr[k], '') + ')' + regEndStr, 'ig');\r\n }\r\n }\r\n }\r\n\r\n this._attributesBlacklistRegExp = new wRegExp('\\\\s(?:' + (allAttr || '^') + ')' + regEndStr, 'ig');\r\n this._attributesTagsBlacklist = tagsAttr;\r\n\r\n // set modes\r\n this._isInline = /inline/i.test(options.mode);\r\n this._isBalloon = /balloon|balloon-always/i.test(options.mode);\r\n this._isBalloonAlways = /balloon-always/i.test(options.mode);\r\n\r\n // caching buttons\r\n this._cachingButtons();\r\n\r\n // file components\r\n this._fileInfoPluginsCheck = [];\r\n this._fileInfoPluginsReset = [];\r\n\r\n // text components\r\n this.managedTagsInfo = { query: '', map: {} };\r\n const managedClass = [];\r\n\r\n // Command and file plugins registration\r\n this.activePlugins = [];\r\n this._fileManager.tags = [];\r\n this._fileManager.pluginMap = {};\r\n\r\n let filePluginRegExp = [];\r\n let plugin, button;\r\n for (let key in plugins) {\r\n if (!util.hasOwn(plugins, key)) continue;\r\n plugin = plugins[key];\r\n button = pluginCallButtons[key];\r\n if ((plugin.active || plugin.action) && button) {\r\n this.callPlugin(key, null, button);\r\n }\r\n if (typeof plugin.checkFileInfo === 'function' && typeof plugin.resetFileInfo === 'function') {\r\n this.callPlugin(key, null, button);\r\n this._fileInfoPluginsCheck.push(plugin.checkFileInfo.bind(this));\r\n this._fileInfoPluginsReset.push(plugin.resetFileInfo.bind(this));\r\n }\r\n if (_w.Array.isArray(plugin.fileTags)) {\r\n const fileTags = plugin.fileTags;\r\n this.callPlugin(key, null, button);\r\n this._fileManager.tags = this._fileManager.tags.concat(fileTags);\r\n filePluginRegExp.push(key);\r\n for (let tag = 0, tLen = fileTags.length; tag < tLen; tag++) {\r\n this._fileManager.pluginMap[fileTags[tag].toLowerCase()] = key;\r\n }\r\n }\r\n if (plugin.managedTags) {\r\n const info = plugin.managedTags();\r\n managedClass.push('.' + info.className);\r\n this.managedTagsInfo.map[info.className] = info.method.bind(this);\r\n }\r\n }\r\n\r\n this.managedTagsInfo.query = managedClass.toString();\r\n this._fileManager.queryString = this._fileManager.tags.join(',');\r\n this._fileManager.regExp = new wRegExp('^(' + (this._fileManager.tags.join('|') || '^') + ')$', 'i');\r\n this._fileManager.pluginRegExp = new wRegExp('^(' + (filePluginRegExp.length === 0 ? '^' : filePluginRegExp.join('|')) + ')$', 'i');\r\n \r\n // cache editor's element\r\n this._variable._originCssText = context.element.topArea.style.cssText;\r\n this._placeholder = context.element.placeholder;\r\n this._lineBreaker = context.element.lineBreaker;\r\n this._lineBreakerButton = this._lineBreaker.querySelector('button');\r\n\r\n // Excute history function\r\n this.history = _history(this, this._onChange_historyStack.bind(this));\r\n\r\n // register notice module\r\n this.addModule([_notice]);\r\n\r\n // Init, validate\r\n if (options.iframe) {\r\n this._wd = context.element.wysiwygFrame.contentDocument;\r\n context.element.wysiwyg = this._wd.body;\r\n if (options._editorStyles.editor) context.element.wysiwyg.style.cssText = options._editorStyles.editor;\r\n if (options.height === 'auto') this._iframeAuto = this._wd.body;\r\n }\r\n \r\n this._initWysiwygArea(reload, _initHTML);\r\n },\r\n\r\n /**\r\n * @description Caching basic buttons to use\r\n * @private\r\n */\r\n _cachingButtons: function () {\r\n this.codeViewDisabledButtons = context.element._buttonTray.querySelectorAll('.se-menu-list button[data-display]:not([class~=\"se-code-view-enabled\"]):not([data-display=\"MORE\"])');\r\n this.resizingDisabledButtons = context.element._buttonTray.querySelectorAll('.se-menu-list button[data-display]:not([class~=\"se-resizing-enabled\"]):not([data-display=\"MORE\"])');\r\n\r\n const tool = context.tool;\r\n const commandMap = this.commandMap;\r\n commandMap.INDENT = tool.indent;\r\n commandMap.OUTDENT = tool.outdent;\r\n commandMap[options.textTags.bold.toUpperCase()] = tool.bold;\r\n commandMap[options.textTags.underline.toUpperCase()] = tool.underline;\r\n commandMap[options.textTags.italic.toUpperCase()] = tool.italic;\r\n commandMap[options.textTags.strike.toUpperCase()] = tool.strike;\r\n commandMap[options.textTags.sub.toUpperCase()] = tool.subscript;\r\n commandMap[options.textTags.sup.toUpperCase()] = tool.superscript;\r\n \r\n this._styleCommandMap = {\r\n fullScreen: tool.fullScreen,\r\n showBlocks: tool.showBlocks,\r\n codeView: tool.codeView\r\n };\r\n\r\n this._saveButtonStates();\r\n },\r\n\r\n /**\r\n * @description Initializ wysiwyg area (Only called from core._init)\r\n * @param {Boolean} reload Is relooad?\r\n * @param {String} _initHTML initial html string\r\n * @private\r\n */\r\n _initWysiwygArea: function (reload, _initHTML) {\r\n context.element.wysiwyg.innerHTML = reload ? _initHTML : this.convertContentsForEditor((typeof _initHTML === 'string' ? _initHTML : /^TEXTAREA$/i.test(context.element.originElement.nodeName) ? context.element.originElement.value : context.element.originElement.innerHTML) || '');\r\n },\r\n\r\n /**\r\n * @description Called when there are changes to tags in the wysiwyg region.\r\n * @private\r\n */\r\n _resourcesStateChange: function () {\r\n this._iframeAutoHeight();\r\n this._checkPlaceholder();\r\n },\r\n\r\n /**\r\n * @description Called when after execute \"history.push\"\r\n * @private\r\n */\r\n _onChange_historyStack: function () {\r\n if (this.hasFocus) event._applyTagEffects();\r\n this._variable.isChanged = true;\r\n if (context.tool.save) context.tool.save.removeAttribute('disabled');\r\n // user event\r\n if (functions.onChange) functions.onChange(this.getContents(true), this);\r\n if (context.element.toolbar.style.display === 'block') event._showToolbarBalloon();\r\n },\r\n\r\n /**\r\n * @description Modify the height value of the iframe when the height of the iframe is automatic.\r\n * @private\r\n */\r\n _iframeAutoHeight: function () {\r\n if (this._iframeAuto) {\r\n _w.setTimeout(function () { \r\n const h = core._iframeAuto.offsetHeight;\r\n context.element.wysiwygFrame.style.height = h + 'px';\r\n if (!util.isResizeObserverSupported) core.__callResizeFunction(h, null);\r\n });\r\n } else if (!util.isResizeObserverSupported) {\r\n core.__callResizeFunction(context.element.wysiwygFrame.offsetHeight, null);\r\n }\r\n },\r\n\r\n __callResizeFunction: function (h, resizeObserverEntry) {\r\n h = h === -1 ? (resizeObserverEntry.borderBoxSize && resizeObserverEntry.borderBoxSize[0] ? resizeObserverEntry.borderBoxSize[0].blockSize : (resizeObserverEntry.contentRect.height + this._editorHeightPadding)) : h;\r\n if (this._editorHeight !== h) {\r\n if (typeof functions.onResizeEditor === 'function') functions.onResizeEditor(h, this._editorHeight, core, resizeObserverEntry);\r\n this._editorHeight = h;\r\n }\r\n },\r\n\r\n /**\r\n * @description Set display property when there is placeholder.\r\n * @private\r\n */\r\n _checkPlaceholder: function () {\r\n if (this._placeholder) {\r\n if (this._variable.isCodeView) {\r\n this._placeholder.style.display = 'none';\r\n return;\r\n }\r\n\r\n const wysiwyg = context.element.wysiwyg;\r\n if (!util.onlyZeroWidthSpace(wysiwyg.textContent) || wysiwyg.querySelector(util._allowedEmptyNodeList) || (wysiwyg.innerText.match(/\\n/g) || '').length > 1) {\r\n this._placeholder.style.display = 'none';\r\n } else {\r\n this._placeholder.style.display = 'block';\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * @description If there is no default format, add a format and move \"selection\".\r\n * @param {String|null} formatName Format tag name (default: 'P')\r\n * @returns {undefined|null}\r\n * @private\r\n */\r\n _setDefaultFormat: function (formatName) {\r\n if (this._fileManager.pluginRegExp.test(this.currentControllerName)) return;\r\n\r\n const range = this.getRange();\r\n const commonCon = range.commonAncestorContainer;\r\n const startCon = range.startContainer;\r\n const rangeEl = util.getRangeFormatElement(commonCon, null);\r\n let focusNode, offset, format;\r\n\r\n const fileComponent = util.getParentElement(commonCon, util.isComponent);\r\n if (fileComponent && !util.isTable(fileComponent)) {\r\n return;\r\n } else if (commonCon.nodeType === 1 && commonCon.getAttribute('data-se-embed') === 'true') {\r\n let el = commonCon.nextElementSibling;\r\n if (!util.isFormatElement(el)) el = this.appendFormatTag(commonCon, options.defaultTag);\r\n this.setRange(el.firstChild, 0, el.firstChild, 0);\r\n return;\r\n }\r\n\r\n if ((util.isRangeFormatElement(startCon) || util.isWysiwygDiv(startCon)) && (util.isComponent(startCon.children[range.startOffset]) || util.isComponent(startCon.children[range.startOffset - 1]))) return;\r\n if (util.getParentElement(commonCon, util.isNotCheckingNode)) return null;\r\n\r\n if (rangeEl) {\r\n format = util.createElement(formatName || options.defaultTag);\r\n format.innerHTML = rangeEl.innerHTML;\r\n if (format.childNodes.length === 0) format.innerHTML = util.zeroWidthSpace;\r\n\r\n rangeEl.innerHTML = format.outerHTML;\r\n format = rangeEl.firstChild;\r\n focusNode = util.getEdgeChildNodes(format, null).sc;\r\n\r\n if (!focusNode) {\r\n focusNode = util.createTextNode(util.zeroWidthSpace);\r\n format.insertBefore(focusNode, format.firstChild);\r\n }\r\n \r\n offset = focusNode.textContent.length;\r\n this.setRange(focusNode, offset, focusNode, offset);\r\n return;\r\n }\r\n\r\n if(util.isRangeFormatElement(commonCon) && (commonCon.childNodes.length <= 1)) {\r\n let br = null;\r\n if (commonCon.childNodes.length === 1 && util.isBreak(commonCon.firstChild)) {\r\n br = commonCon.firstChild;\r\n } else {\r\n br = util.createTextNode(util.zeroWidthSpace);\r\n commonCon.appendChild(br);\r\n }\r\n\r\n this.setRange(br, 1, br, 1);\r\n return;\r\n }\r\n\r\n this.execCommand('formatBlock', false, (formatName || options.defaultTag));\r\n focusNode = util.getEdgeChildNodes(commonCon, commonCon);\r\n focusNode = focusNode ? focusNode.ec : commonCon;\r\n\r\n format = util.getFormatElement(focusNode, null);\r\n if (!format) {\r\n this.removeRange();\r\n this._editorRange();\r\n return;\r\n }\r\n \r\n if (util.isBreak(format.nextSibling)) util.removeItem(format.nextSibling);\r\n if (util.isBreak(format.previousSibling)) util.removeItem(format.previousSibling);\r\n if (util.isBreak(focusNode)) {\r\n const zeroWidth = util.createTextNode(util.zeroWidthSpace);\r\n focusNode.parentNode.insertBefore(zeroWidth, focusNode);\r\n focusNode = zeroWidth;\r\n }\r\n\r\n this.effectNode = null;\r\n this.nativeFocus();\r\n },\r\n\r\n /**\r\n * @description Initialization after \"setOptions\"\r\n * @param {Object} el context.element\r\n * @param {String} _initHTML Initial html string\r\n * @private\r\n */\r\n _setOptionsInit: function (el, _initHTML) {\r\n this.context = context = _Context(el.originElement, this._getConstructed(el), options);\r\n this._componentsInfoReset = true;\r\n this._editorInit(true, _initHTML);\r\n },\r\n\r\n /**\r\n * @description Initializ editor\r\n * @param {Boolean} reload Is relooad?\r\n * @param {String} _initHTML initial html string\r\n * @private\r\n */\r\n _editorInit: function (reload, _initHTML) {\r\n // initialize core and add event listeners\r\n this._init(reload, _initHTML);\r\n event._addEvent();\r\n this._setCharCount();\r\n event._offStickyToolbar();\r\n event.onResize_window();\r\n\r\n // toolbar visibility\r\n context.element.toolbar.style.visibility = '';\r\n // wisywig attributes\r\n const attr = options.frameAttrbutes;\r\n for (let k in attr) {\r\n context.element.wysiwyg.setAttribute(k, attr[k]);\r\n }\r\n\r\n this._checkComponents();\r\n this._componentsInfoInit = false;\r\n this._componentsInfoReset = false;\r\n\r\n this.history.reset(true);\r\n \r\n _w.setTimeout(function () {\r\n if (typeof core._resourcesStateChange !== 'function') return;\r\n\r\n // observer\r\n if (event._resizeObserver) event._resizeObserver.observe(context.element.wysiwygFrame);\r\n if (event._toolbarObserver) event._toolbarObserver.observe(context.element._toolbarShadow);\r\n // resource state\r\n core._resourcesStateChange();\r\n // user event\r\n if (typeof functions.onload === 'function') functions.onload(core, reload);\r\n });\r\n },\r\n\r\n /**\r\n * @description Create and return an object to cache the new context.\r\n * @param {Element} contextEl context.element\r\n * @returns {Object}\r\n * @private\r\n */\r\n _getConstructed: function (contextEl) {\r\n return {\r\n _top: contextEl.topArea,\r\n _relative: contextEl.relative,\r\n _toolBar: contextEl.toolbar,\r\n _toolbarShadow: contextEl._toolbarShadow,\r\n _menuTray: contextEl._menuTray,\r\n _editorArea: contextEl.editorArea,\r\n _wysiwygArea: contextEl.wysiwygFrame,\r\n _codeArea: contextEl.code,\r\n _placeholder: contextEl.placeholder,\r\n _resizingBar: contextEl.resizingBar,\r\n _navigation: contextEl.navigation,\r\n _charCounter: contextEl.charCounter,\r\n _charWrapper: contextEl.charWrapper,\r\n _loading: contextEl.loading,\r\n _lineBreaker: contextEl.lineBreaker,\r\n _lineBreaker_t: contextEl.lineBreaker_t,\r\n _lineBreaker_b: contextEl.lineBreaker_b,\r\n _resizeBack: contextEl.resizeBackground,\r\n _stickyDummy: contextEl._stickyDummy,\r\n _arrow: contextEl._arrow\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * @description event function\r\n */\r\n const event = {\r\n _IEisComposing: false, // In IE, there is no \"e.isComposing\" in the key-up event.\r\n _lineBreakerBind: null,\r\n _responsiveCurrentSize: 'default',\r\n _responsiveButtonSize: null,\r\n _responsiveButtons: null,\r\n _cursorMoveKeyCode: new _w.RegExp('^(8|3[2-9]|40|46)$'),\r\n _directionKeyCode: new _w.RegExp('^(8|13|3[2-9]|40|46)$'),\r\n _nonTextKeyCode: new _w.RegExp('^(8|13|1[6-9]|20|27|3[3-9]|40|45|46|11[2-9]|12[0-3]|144|145)$'),\r\n _historyIgnoreKeyCode: new _w.RegExp('^(1[6-9]|20|27|3[3-9]|40|45|11[2-9]|12[0-3]|144|145)$'),\r\n _onButtonsCheck: new _w.RegExp('^(' + _w.Object.keys(options._textTagsMap).join('|') + ')$', 'i'),\r\n _frontZeroWidthReg: new _w.RegExp(util.zeroWidthSpace + '+', ''),\r\n _keyCodeShortcut: {\r\n 65: 'A',\r\n 66: 'B',\r\n 83: 'S',\r\n 85: 'U',\r\n 73: 'I',\r\n 89: 'Y',\r\n 90: 'Z',\r\n 219: '[',\r\n 221: ']'\r\n },\r\n\r\n _shortcutCommand: function (keyCode, shift) {\r\n let command = null;\r\n const keyStr = event._keyCodeShortcut[keyCode];\r\n\r\n switch (keyStr) {\r\n case 'A':\r\n command = 'selectAll';\r\n break;\r\n case 'B':\r\n if (options.shortcutsDisable.indexOf('bold') === -1) {\r\n command = 'bold';\r\n }\r\n break;\r\n case 'S':\r\n if (shift && options.shortcutsDisable.indexOf('strike') === -1) {\r\n command = 'strike';\r\n } else if (!shift && options.shortcutsDisable.indexOf('save') === -1) {\r\n command = 'save';\r\n }\r\n break;\r\n case 'U':\r\n if (options.shortcutsDisable.indexOf('underline') === -1) {\r\n command = 'underline';\r\n }\r\n break;\r\n case 'I':\r\n if (options.shortcutsDisable.indexOf('italic') === -1) {\r\n command = 'italic';\r\n }\r\n break;\r\n case 'Z':\r\n if (options.shortcutsDisable.indexOf('undo') === -1) {\r\n if (shift) {\r\n command = 'redo';\r\n } else {\r\n command = 'undo';\r\n }\r\n }\r\n break;\r\n case 'Y':\r\n if (options.shortcutsDisable.indexOf('undo') === -1) {\r\n command = 'redo';\r\n }\r\n break;\r\n case '[':\r\n if (options.shortcutsDisable.indexOf('indent') === -1) {\r\n command = options.rtl ? 'indent' : 'outdent';\r\n }\r\n break;\r\n case ']':\r\n if (options.shortcutsDisable.indexOf('indent') === -1) {\r\n command = options.rtl ? 'outdent' : 'indent';\r\n }\r\n break;\r\n }\r\n\r\n if (!command) return !!keyStr;\r\n\r\n core.commandHandler(core.commandMap[command], command);\r\n return true;\r\n },\r\n\r\n _applyTagEffects: function () {\r\n let selectionNode = core.getSelectionNode();\r\n if (selectionNode === core.effectNode) return;\r\n core.effectNode = selectionNode;\r\n\r\n const marginDir = options.rtl ? 'marginRight' : 'marginLeft';\r\n const commandMap = core.commandMap;\r\n const classOnCheck = event._onButtonsCheck;\r\n const commandMapNodes = [];\r\n const currentNodes = [];\r\n\r\n const activePlugins = core.activePlugins;\r\n const cLen = activePlugins.length;\r\n let nodeName = '';\r\n\r\n while (selectionNode.firstChild) {\r\n selectionNode = selectionNode.firstChild;\r\n }\r\n\r\n for (let element = selectionNode; !util.isWysiwygDiv(element); element = element.parentNode) {\r\n if (!element) break;\r\n if (element.nodeType !== 1 || util.isBreak(element)) continue;\r\n nodeName = element.nodeName.toUpperCase();\r\n currentNodes.push(nodeName);\r\n\r\n /* Active plugins */\r\n if (!core.isReadOnly) {\r\n for (let c = 0, name; c < cLen; c++) {\r\n name = activePlugins[c];\r\n if (commandMapNodes.indexOf(name) === -1 && plugins[name].active.call(core, element)) {\r\n commandMapNodes.push(name);\r\n }\r\n }\r\n }\r\n\r\n if (util.isFormatElement(element)) {\r\n /* Outdent */\r\n if (commandMapNodes.indexOf('OUTDENT') === -1 && commandMap.OUTDENT && !util.isImportantDisabled(commandMap.OUTDENT)) {\r\n if (util.isListCell(element) || (element.style[marginDir] && util.getNumber(element.style[marginDir], 0) > 0)) {\r\n commandMapNodes.push('OUTDENT');\r\n commandMap.OUTDENT.removeAttribute('disabled');\r\n }\r\n }\r\n\r\n /* Indent */\r\n if (commandMapNodes.indexOf('INDENT') === -1 && commandMap.INDENT && !util.isImportantDisabled(commandMap.INDENT)) {\r\n commandMapNodes.push('INDENT');\r\n if (util.isListCell(element) && !element.previousElementSibling) {\r\n commandMap.INDENT.setAttribute('disabled', true);\r\n } else {\r\n commandMap.INDENT.removeAttribute('disabled');\r\n }\r\n }\r\n\r\n continue;\r\n }\r\n\r\n /** default active buttons [strong, ins, em, del, sub, sup] */\r\n if (classOnCheck && classOnCheck.test(nodeName)) {\r\n commandMapNodes.push(nodeName);\r\n util.addClass(commandMap[nodeName], 'active');\r\n }\r\n }\r\n\r\n core._setKeyEffect(commandMapNodes);\r\n\r\n /** save current nodes */\r\n core._variable.currentNodes = currentNodes.reverse();\r\n core._variable.currentNodesMap = commandMapNodes;\r\n\r\n /** Displays the current node structure to resizingBar */\r\n if (options.showPathLabel) context.element.navigation.textContent = core._variable.currentNodes.join(' > ');\r\n },\r\n\r\n _buttonsEventHandler: function (e) {\r\n let target = e.target;\r\n if (core._bindControllersOff) e.stopPropagation();\r\n\r\n if (/^(input|textarea|select|option)$/i.test(target.nodeName)) {\r\n core._antiBlur = false;\r\n } else {\r\n e.preventDefault();\r\n }\r\n\r\n if (util.getParentElement(target, '.se-submenu')) {\r\n e.stopPropagation();\r\n core._notHideToolbar = true;\r\n } else {\r\n let command = target.getAttribute('data-command');\r\n let className = target.className;\r\n \r\n while (!command && !/se-menu-list/.test(className) && !/sun-editor-common/.test(className)) {\r\n target = target.parentNode;\r\n command = target.getAttribute('data-command');\r\n className = target.className;\r\n }\r\n \r\n if (command === core._submenuName || command === core._containerName) {\r\n e.stopPropagation();\r\n }\r\n }\r\n },\r\n\r\n onClick_toolbar: function (e) {\r\n let target = e.target;\r\n let display = target.getAttribute('data-display');\r\n let command = target.getAttribute('data-command');\r\n let className = target.className;\r\n core.controllersOff();\r\n\r\n while (target.parentNode && !command && !/se-menu-list/.test(className) && !/se-toolbar/.test(className)) {\r\n target = target.parentNode;\r\n command = target.getAttribute('data-command');\r\n display = target.getAttribute('data-display');\r\n className = target.className;\r\n }\r\n\r\n if (!command && !display) return;\r\n if (target.disabled) return;\r\n\r\n core.actionCall(command, display, target);\r\n },\r\n\r\n onMouseDown_wysiwyg: function (e) {\r\n if (core.isReadOnly || util.isNonEditable(context.element.wysiwyg)) return;\r\n if (util._isExcludeSelectionElement(e.target)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n _w.setTimeout(core._editorRange.bind(core));\r\n\r\n // user event\r\n if (typeof functions.onMouseDown === 'function' && functions.onMouseDown(e, core) === false) return;\r\n \r\n const tableCell = util.getParentElement(e.target, util.isCell);\r\n if (tableCell) {\r\n const tablePlugin = core.plugins.table;\r\n if (tablePlugin && tableCell !== tablePlugin._fixedCell && !tablePlugin._shift) {\r\n core.callPlugin('table', function () {\r\n tablePlugin.onTableCellMultiSelect.call(core, tableCell, false);\r\n }, null);\r\n }\r\n }\r\n\r\n if (core._isBalloon) {\r\n event._hideToolbar();\r\n }\r\n },\r\n\r\n onClick_wysiwyg: function (e) {\r\n const targetElement = e.target;\r\n\r\n if (core.isReadOnly) {\r\n e.preventDefault();\r\n if (util.isAnchor(targetElement)){\r\n _w.open(targetElement.href, targetElement.target);\r\n }\r\n return false;\r\n }\r\n\r\n if (util.isNonEditable(context.element.wysiwyg)) return;\r\n\r\n // user event\r\n if (typeof functions.onClick === 'function' && functions.onClick(e, core) === false) return;\r\n\r\n const fileComponentInfo = core.getFileComponent(targetElement);\r\n if (fileComponentInfo) {\r\n e.preventDefault();\r\n core.selectComponent(fileComponentInfo.target, fileComponentInfo.pluginName);\r\n return;\r\n }\r\n\r\n const figcaption = util.getParentElement(targetElement, 'FIGCAPTION');\r\n if (figcaption && util.isNonEditable(figcaption)) {\r\n e.preventDefault();\r\n figcaption.focus();\r\n\r\n if (core._isInline && !core._inlineToolbarAttr.isShow) {\r\n event._showToolbarInline();\r\n\r\n const hideToolbar = function () {\r\n event._hideToolbar();\r\n figcaption.removeEventListener('blur', hideToolbar);\r\n };\r\n\r\n figcaption.addEventListener('blur', hideToolbar);\r\n }\r\n }\r\n\r\n core._editorRange();\r\n\r\n if (e.detail === 3) {\r\n let range = core.getRange();\r\n if (util.isFormatElement(range.endContainer) && range.endOffset === 0) {\r\n range = core.setRange(range.startContainer, range.startOffset, range.startContainer, range.startContainer.length);\r\n core._rangeInfo(range, core.getSelection());\r\n }\r\n }\r\n\r\n const selectionNode = core.getSelectionNode();\r\n const formatEl = util.getFormatElement(selectionNode, null);\r\n const rangeEl = util.getRangeFormatElement(selectionNode, null);\r\n if (!formatEl && !util.isNonEditable(targetElement) && !util.isList(rangeEl)) {\r\n const range = core.getRange();\r\n if (util.getFormatElement(range.startContainer) === util.getFormatElement(range.endContainer)) {\r\n if (util.isList(rangeEl)) {\r\n e.preventDefault();\r\n const oLi = util.createElement('LI');\r\n const prevLi = selectionNode.nextElementSibling;\r\n oLi.appendChild(selectionNode);\r\n rangeEl.insertBefore(oLi, prevLi);\r\n core.focus();\r\n } else if (!util.isWysiwygDiv(selectionNode) && !util.isComponent(selectionNode) && (!util.isTable(selectionNode) || util.isCell(selectionNode)) && core._setDefaultFormat(util.isRangeFormatElement(rangeEl) ? 'DIV' : options.defaultTag) !== null) {\r\n e.preventDefault();\r\n core.focus();\r\n } else {\r\n event._applyTagEffects();\r\n }\r\n }\r\n } else {\r\n event._applyTagEffects();\r\n }\r\n\r\n if (core._isBalloon) _w.setTimeout(event._toggleToolbarBalloon);\r\n },\r\n\r\n _balloonDelay: null,\r\n _showToolbarBalloonDelay: function () {\r\n if (event._balloonDelay) {\r\n _w.clearTimeout(event._balloonDelay);\r\n }\r\n\r\n event._balloonDelay = _w.setTimeout(function () {\r\n _w.clearTimeout(this._balloonDelay);\r\n this._balloonDelay = null;\r\n this._showToolbarBalloon();\r\n }.bind(event), 350);\r\n },\r\n\r\n _toggleToolbarBalloon: function () {\r\n core._editorRange();\r\n const range = core.getRange();\r\n if (core._bindControllersOff || (!core._isBalloonAlways && range.collapsed)) event._hideToolbar();\r\n else event._showToolbarBalloon(range);\r\n },\r\n\r\n _showToolbarBalloon: function (rangeObj) {\r\n if (!core._isBalloon) return;\r\n\r\n const range = rangeObj || core.getRange();\r\n const toolbar = context.element.toolbar;\r\n const topArea = context.element.topArea;\r\n const selection = core.getSelection();\r\n\r\n let isDirTop;\r\n if (core._isBalloonAlways && range.collapsed) {\r\n isDirTop = true;\r\n } else if (selection.focusNode === selection.anchorNode) {\r\n isDirTop = selection.focusOffset < selection.anchorOffset;\r\n } else {\r\n const childNodes = util.getListChildNodes(range.commonAncestorContainer, null);\r\n isDirTop = util.getArrayIndex(childNodes, selection.focusNode) < util.getArrayIndex(childNodes, selection.anchorNode);\r\n }\r\n\r\n let rects = range.getClientRects();\r\n rects = rects[isDirTop ? 0 : rects.length - 1];\r\n\r\n const globalScroll = core.getGlobalScrollOffset();\r\n let scrollLeft = globalScroll.left;\r\n let scrollTop = globalScroll.top;\r\n\r\n const editorWidth = topArea.offsetWidth;\r\n const offsets = event._getEditorOffsets(null);\r\n const stickyTop = offsets.top;\r\n const editorLeft = offsets.left;\r\n \r\n toolbar.style.top = '-10000px';\r\n toolbar.style.visibility = 'hidden';\r\n toolbar.style.display = 'block';\r\n\r\n if (!rects) {\r\n const node = core.getSelectionNode();\r\n if (util.isFormatElement(node)) {\r\n const zeroWidth = util.createTextNode(util.zeroWidthSpace);\r\n core.insertNode(zeroWidth, null, false);\r\n core.setRange(zeroWidth, 1, zeroWidth, 1);\r\n core._editorRange();\r\n rects = core.getRange().getClientRects();\r\n rects = rects[isDirTop ? 0 : rects.length - 1];\r\n }\r\n\r\n if (!rects) {\r\n const nodeOffset = util.getOffset(node, context.element.wysiwygFrame);\r\n rects = {\r\n left: nodeOffset.left,\r\n top: nodeOffset.top,\r\n right: nodeOffset.left,\r\n bottom: nodeOffset.top + node.offsetHeight,\r\n noText: true\r\n };\r\n scrollLeft = 0;\r\n scrollTop = 0;\r\n }\r\n\r\n isDirTop = true;\r\n }\r\n\r\n const arrowMargin = _w.Math.round(context.element._arrow.offsetWidth / 2);\r\n const toolbarWidth = toolbar.offsetWidth;\r\n const toolbarHeight = toolbar.offsetHeight;\r\n const iframeRects = /iframe/i.test(context.element.wysiwygFrame.nodeName) ? context.element.wysiwygFrame.getClientRects()[0] : null;\r\n if (iframeRects) {\r\n rects = {\r\n left: rects.left + iframeRects.left,\r\n top: rects.top + iframeRects.top,\r\n right: rects.right + iframeRects.right - iframeRects.width,\r\n bottom: rects.bottom + iframeRects.bottom - iframeRects.height\r\n };\r\n }\r\n \r\n event._setToolbarOffset(isDirTop, rects, toolbar, editorLeft, editorWidth, scrollLeft, scrollTop, stickyTop, arrowMargin);\r\n if (toolbarWidth !== toolbar.offsetWidth || toolbarHeight !== toolbar.offsetHeight) {\r\n event._setToolbarOffset(isDirTop, rects, toolbar, editorLeft, editorWidth, scrollLeft, scrollTop, stickyTop, arrowMargin);\r\n }\r\n\r\n if (options.toolbarContainer) {\r\n const editorParent = topArea.parentElement;\r\n\r\n let container = options.toolbarContainer;\r\n let left = container.offsetLeft;\r\n let top = container.offsetTop;\r\n\r\n while(!container.parentElement.contains(editorParent) || !/^(BODY|HTML)$/i.test(container.parentElement.nodeName)) {\r\n container = container.offsetParent;\r\n left += container.offsetLeft;\r\n top += container.offsetTop;\r\n }\r\n\r\n toolbar.style.left = (toolbar.offsetLeft - left + topArea.offsetLeft) + 'px';\r\n toolbar.style.top = (toolbar.offsetTop - top + topArea.offsetTop) + 'px';\r\n }\r\n\r\n toolbar.style.visibility = '';\r\n },\r\n\r\n _setToolbarOffset: function (isDirTop, rects, toolbar, editorLeft, editorWidth, scrollLeft, scrollTop, stickyTop, arrowMargin) {\r\n const padding = 1;\r\n const toolbarWidth = toolbar.offsetWidth;\r\n const toolbarHeight = rects.noText && !isDirTop ? 0 : toolbar.offsetHeight;\r\n\r\n const absoluteLeft = (isDirTop ? rects.left : rects.right) - editorLeft - (toolbarWidth / 2) + scrollLeft;\r\n const overRight = absoluteLeft + toolbarWidth - editorWidth;\r\n \r\n let t = (isDirTop ? rects.top - toolbarHeight - arrowMargin : rects.bottom + arrowMargin) - (rects.noText ? 0 : stickyTop) + scrollTop;\r\n let l = absoluteLeft < 0 ? padding : overRight < 0 ? absoluteLeft : absoluteLeft - overRight - padding - 1;\r\n\r\n let resetTop = false;\r\n const space = t + (isDirTop ? (event._getEditorOffsets(null).top) : (toolbar.offsetHeight - context.element.wysiwyg.offsetHeight));\r\n if (!isDirTop && space > 0 && event._getPageBottomSpace() < space) {\r\n isDirTop = true;\r\n resetTop = true;\r\n } else if (isDirTop && _d.documentElement.offsetTop > space) {\r\n isDirTop = false;\r\n resetTop = true;\r\n }\r\n\r\n if (resetTop) t = (isDirTop ? rects.top - toolbarHeight - arrowMargin : rects.bottom + arrowMargin) - (rects.noText ? 0 : stickyTop) + scrollTop;\r\n\r\n toolbar.style.left = _w.Math.floor(l) + 'px';\r\n toolbar.style.top = _w.Math.floor(t) + 'px';\r\n\r\n if (isDirTop) {\r\n util.removeClass(context.element._arrow, 'se-arrow-up');\r\n util.addClass(context.element._arrow, 'se-arrow-down');\r\n context.element._arrow.style.top = toolbarHeight + 'px';\r\n } else {\r\n util.removeClass(context.element._arrow, 'se-arrow-down');\r\n util.addClass(context.element._arrow, 'se-arrow-up');\r\n context.element._arrow.style.top = -arrowMargin + 'px';\r\n }\r\n\r\n const arrow_left = _w.Math.floor((toolbarWidth / 2) + (absoluteLeft - l));\r\n context.element._arrow.style.left = (arrow_left + arrowMargin > toolbar.offsetWidth ? toolbar.offsetWidth - arrowMargin : arrow_left < arrowMargin ? arrowMargin : arrow_left) + 'px';\r\n },\r\n\r\n _showToolbarInline: function () {\r\n if (!core._isInline) return;\r\n\r\n const toolbar = context.element.toolbar;\r\n if (options.toolbarContainer) toolbar.style.position = 'relative';\r\n else toolbar.style.position = 'absolute';\r\n \r\n toolbar.style.visibility = 'hidden';\r\n toolbar.style.display = 'block';\r\n core._inlineToolbarAttr.width = toolbar.style.width = options.toolbarWidth;\r\n core._inlineToolbarAttr.top = toolbar.style.top = (options.toolbarContainer ? 0 : (-1 - toolbar.offsetHeight)) + 'px';\r\n \r\n if (typeof functions.showInline === 'function') functions.showInline(toolbar, context, core);\r\n\r\n event.onScroll_window();\r\n core._inlineToolbarAttr.isShow = true;\r\n toolbar.style.visibility = '';\r\n },\r\n\r\n _hideToolbar: function () {\r\n if (!core._notHideToolbar && !core._variable.isFullScreen) {\r\n context.element.toolbar.style.display = 'none';\r\n core._inlineToolbarAttr.isShow = false;\r\n }\r\n },\r\n\r\n onInput_wysiwyg: function (e) {\r\n if (core.isReadOnly || core.isDisabled) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n core.history.go(core.history.getCurrentIndex());\r\n return false;\r\n }\r\n\r\n core._editorRange();\r\n\r\n const data = (e.data === null ? '' : e.data === undefined ? ' ' : e.data) || ''; \r\n if (!core._charCount(data)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n\r\n // user event\r\n if (typeof functions.onInput === 'function' && functions.onInput(e, core) === false) return;\r\n\r\n // history stack\r\n core.history.push(true);\r\n },\r\n\r\n _isUneditableNode: function (range, isFront) {\r\n const container = isFront ? range.startContainer : range.endContainer;\r\n const offset = isFront ? range.startOffset : range.endOffset;\r\n const siblingKey = isFront ? 'previousSibling' : 'nextSibling';\r\n const isElement = container.nodeType === 1;\r\n let siblingNode;\r\n\r\n if (isElement) {\r\n siblingNode = event._isUneditableNode_getSibling(container.childNodes[offset], siblingKey, container);\r\n return siblingNode && siblingNode.nodeType === 1 && siblingNode.getAttribute('contenteditable') === 'false';\r\n } else {\r\n siblingNode = event._isUneditableNode_getSibling(container, siblingKey, container);\r\n return core.isEdgePoint(container, offset, isFront ? 'front' : 'end') && (siblingNode && siblingNode.nodeType === 1 && siblingNode.getAttribute('contenteditable') === 'false');\r\n }\r\n },\r\n\r\n _isUneditableNode_getSibling: function (selectNode, siblingKey, container) {\r\n if (!selectNode) return null;\r\n let siblingNode = selectNode[siblingKey];\r\n\r\n if (!siblingNode) {\r\n siblingNode = util.getFormatElement(container);\r\n siblingNode = siblingNode ? siblingNode[siblingKey] : null;\r\n if (siblingNode && !util.isComponent(siblingNode)) siblingNode = siblingKey === 'previousSibling' ? siblingNode.firstChild : siblingNode.lastChild;\r\n else return null;\r\n }\r\n\r\n return siblingNode;\r\n },\r\n\r\n _onShortcutKey: false,\r\n onKeyDown_wysiwyg: function (e) {\r\n let selectionNode = core.getSelectionNode();\r\n if (util.isInputElement(selectionNode)) return;\r\n\r\n const keyCode = e.keyCode;\r\n const shift = e.shiftKey;\r\n const ctrl = e.ctrlKey || e.metaKey || keyCode === 91 || keyCode === 92 || keyCode === 224;\r\n const alt = e.altKey;\r\n event._IEisComposing = keyCode === 229;\r\n\r\n if (!ctrl && core.isReadOnly && !event._cursorMoveKeyCode.test(keyCode)) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n core.submenuOff();\r\n\r\n if (core._isBalloon) {\r\n event._hideToolbar();\r\n }\r\n\r\n // user event\r\n if (typeof functions.onKeyDown === 'function' && functions.onKeyDown(e, core) === false) return;\r\n\r\n /** Shortcuts */\r\n if (ctrl && event._shortcutCommand(keyCode, shift)) {\r\n event._onShortcutKey = true;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n } else if (event._onShortcutKey) {\r\n event._onShortcutKey = false;\r\n }\r\n\r\n /** default key action */\r\n const range = core.getRange();\r\n const selectRange = !range.collapsed || range.startContainer !== range.endContainer;\r\n const fileComponentName = core._fileManager.pluginRegExp.test(core.currentControllerName) ? core.currentControllerName : '';\r\n let formatEl = util.getFormatElement(selectionNode, null) || selectionNode;\r\n let rangeEl = util.getRangeFormatElement(formatEl, null);\r\n\r\n switch (keyCode) {\r\n case 8: /** backspace key */\r\n if (!selectRange) {\r\n if (fileComponentName) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n core.plugins[fileComponentName].destroy.call(core);\r\n break;\r\n }\r\n }\r\n\r\n if (selectRange && event._hardDelete()) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n break;\r\n }\r\n\r\n if (!util.isFormatElement(formatEl) && !context.element.wysiwyg.firstElementChild && !util.isComponent(selectionNode) && core._setDefaultFormat(options.defaultTag) !== null) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n\r\n if (!selectRange && !formatEl.previousElementSibling && (range.startOffset === 0 && !selectionNode.previousSibling && !util.isListCell(formatEl) && \r\n (util.isFormatElement(formatEl) && (!util.isFreeFormatElement(formatEl) || util.isClosureFreeFormatElement(formatEl))))) {\r\n // closure range\r\n if (util.isClosureRangeFormatElement(formatEl.parentNode)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n // maintain default format\r\n if (util.isWysiwygDiv(formatEl.parentNode) && formatEl.childNodes.length <= 1 && (!formatEl.firstChild || util.onlyZeroWidthSpace(formatEl.textContent))) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (formatEl.nodeName.toUpperCase() === options.defaultTag.toUpperCase()) {\r\n formatEl.innerHTML = '<br>';\r\n const attrs = formatEl.attributes;\r\n while (attrs[0]) {\r\n formatEl.removeAttribute(attrs[0].name);\r\n }\r\n } else {\r\n const defaultFormat = util.createElement(options.defaultTag);\r\n defaultFormat.innerHTML = '<br>';\r\n formatEl.parentElement.replaceChild(defaultFormat, formatEl);\r\n }\r\n\r\n core.nativeFocus();\r\n return false;\r\n }\r\n }\r\n\r\n // clean remove tag\r\n const startCon = range.startContainer;\r\n if (formatEl && !formatEl.previousElementSibling && range.startOffset === 0 && startCon.nodeType === 3 && !util.isFormatElement(startCon.parentNode)) {\r\n let prev = startCon.parentNode.previousSibling;\r\n const next = startCon.parentNode.nextSibling;\r\n if (!prev) {\r\n if (!next) {\r\n prev = util.createElement('BR');\r\n formatEl.appendChild(prev);\r\n } else {\r\n prev = next;\r\n }\r\n }\r\n\r\n let con = startCon;\r\n while(formatEl.contains(con) && !con.previousSibling) {\r\n con = con.parentNode;\r\n }\r\n\r\n if (!formatEl.contains(con)) {\r\n startCon.textContent = '';\r\n util.removeItemAllParents(startCon, null, formatEl);\r\n break;\r\n }\r\n }\r\n\r\n // tag[contenteditable=\"false\"]\r\n if (event._isUneditableNode(range, true)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n break;\r\n }\r\n\r\n // format attributes\r\n if (!selectRange && core._isEdgeFormat(range.startContainer, range.startOffset, 'start')) {\r\n if (util.isFormatElement(formatEl.previousElementSibling)) {\r\n core._formatAttrsTemp = formatEl.previousElementSibling.attributes;\r\n }\r\n }\r\n\r\n // nested list\r\n const commonCon = range.commonAncestorContainer;\r\n formatEl = util.getFormatElement(range.startContainer, null);\r\n rangeEl = util.getRangeFormatElement(formatEl, null);\r\n if (rangeEl && formatEl && !util.isCell(rangeEl) && !/^FIGCAPTION$/i.test(rangeEl.nodeName)) {\r\n if (util.isListCell(formatEl) && util.isList(rangeEl) && (util.isListCell(rangeEl.parentNode) || formatEl.previousElementSibling) && (selectionNode === formatEl || (selectionNode.nodeType === 3 && (!selectionNode.previousSibling || util.isList(selectionNode.previousSibling)))) &&\r\n (util.getFormatElement(range.startContainer, null) !== util.getFormatElement(range.endContainer, null) ? rangeEl.contains(range.startContainer) : (range.startOffset === 0 && range.collapsed))) {\r\n if (range.startContainer !== range.endContainer) {\r\n e.preventDefault();\r\n\r\n core.removeNode();\r\n if (range.startContainer.nodeType === 3) {\r\n core.setRange(range.startContainer, range.startContainer.textContent.length, range.startContainer, range.startContainer.textContent.length);\r\n }\r\n // history stack\r\n core.history.push(true);\r\n } else {\r\n let prev = formatEl.previousElementSibling || rangeEl.parentNode;\r\n if (util.isListCell(prev)) {\r\n e.preventDefault();\r\n\r\n let prevLast = prev;\r\n if (!prev.contains(formatEl) && util.isListCell(prevLast) && util.isList(prevLast.lastElementChild)) {\r\n prevLast = prevLast.lastElementChild.lastElementChild;\r\n while (util.isListCell(prevLast) && util.isList(prevLast.lastElementChild)) {\r\n prevLast = prevLast.lastElementChild && prevLast.lastElementChild.lastElementChild;\r\n }\r\n prev = prevLast;\r\n }\r\n\r\n let con = prev === rangeEl.parentNode ? rangeEl.previousSibling : prev.lastChild;\r\n if (!con) {\r\n con = util.createTextNode(util.zeroWidthSpace);\r\n rangeEl.parentNode.insertBefore(con, rangeEl.parentNode.firstChild);\r\n }\r\n const offset = con.nodeType === 3 ? con.textContent.length : 1;\r\n const children = formatEl.childNodes;\r\n let after = con;\r\n let child = children[0];\r\n while ((child = children[0])) {\r\n prev.insertBefore(child, after.nextSibling);\r\n after = child;\r\n }\r\n\r\n util.removeItem(formatEl);\r\n if (rangeEl.children.length === 0) util.removeItem(rangeEl);\r\n\r\n core.setRange(con, offset, con, offset);\r\n // history stack\r\n core.history.push(true);\r\n }\r\n }\r\n \r\n break;\r\n }\r\n\r\n // detach range\r\n if (!selectRange && range.startOffset === 0) {\r\n let detach = true;\r\n let comm = commonCon;\r\n while (comm && comm !== rangeEl && !util.isWysiwygDiv(comm)) {\r\n if (comm.previousSibling) {\r\n if (comm.previousSibling.nodeType === 1 || !util.onlyZeroWidthSpace(comm.previousSibling.textContent.trim())) {\r\n detach = false;\r\n break;\r\n }\r\n }\r\n comm = comm.parentNode;\r\n }\r\n \r\n if (detach && rangeEl.parentNode) {\r\n e.preventDefault();\r\n core.detachRangeFormatElement(rangeEl, (util.isListCell(formatEl) ? [formatEl] : null), null, false, false);\r\n // history stack\r\n core.history.push(true);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // component\r\n if (!selectRange && formatEl && (range.startOffset === 0 || (selectionNode === formatEl ? !!formatEl.childNodes[range.startOffset] : false))) {\r\n const sel = selectionNode === formatEl ? formatEl.childNodes[range.startOffset] : selectionNode;\r\n const prev = formatEl.previousSibling;\r\n // select file component\r\n const ignoreZWS = (commonCon.nodeType === 3 || util.isBreak(commonCon)) && !commonCon.previousSibling && range.startOffset === 0;\r\n if (sel && !sel.previousSibling && ( (commonCon && util.isComponent(commonCon.previousSibling)) || (ignoreZWS && util.isComponent(prev)))) {\r\n const fileComponentInfo = core.getFileComponent(prev);\r\n if (fileComponentInfo) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (formatEl.textContent.length === 0) util.removeItem(formatEl);\r\n if (core.selectComponent(fileComponentInfo.target, fileComponentInfo.pluginName) === false) core.blur();\r\n } else if (util.isComponent(prev)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n util.removeItem(prev);\r\n }\r\n break;\r\n }\r\n // delete nonEditable\r\n if (sel && util.isNonEditable(sel.previousSibling)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n util.removeItem(sel.previousSibling);\r\n break;\r\n }\r\n }\r\n\r\n break;\r\n case 46: /** delete key */\r\n if (fileComponentName) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n core.plugins[fileComponentName].destroy.call(core);\r\n break;\r\n }\r\n\r\n if (selectRange && event._hardDelete()) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n break;\r\n }\r\n\r\n // tag[contenteditable=\"false\"]\r\n if (event._isUneditableNode(range, false)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n break;\r\n }\r\n\r\n // component\r\n if ((util.isFormatElement(selectionNode) || selectionNode.nextSibling === null || (util.onlyZeroWidthSpace(selectionNode.nextSibling) && selectionNode.nextSibling.nextSibling === null)) && range.startOffset === selectionNode.textContent.length) {\r\n const nextEl = formatEl.nextElementSibling;\r\n if (!nextEl) break;\r\n if (util.isComponent(nextEl)) {\r\n e.preventDefault();\r\n\r\n if (util.onlyZeroWidthSpace(formatEl)) {\r\n util.removeItem(formatEl);\r\n // table component\r\n if (util.isTable(nextEl)) {\r\n let cell = util.getChildElement(nextEl, util.isCell, false);\r\n cell = cell.firstElementChild || cell;\r\n core.setRange(cell, 0, cell, 0);\r\n break;\r\n }\r\n }\r\n\r\n // select file component\r\n const fileComponentInfo = core.getFileComponent(nextEl);\r\n if (fileComponentInfo) {\r\n e.stopPropagation();\r\n if (core.selectComponent(fileComponentInfo.target, fileComponentInfo.pluginName) === false) core.blur();\r\n } else if (util.isComponent(nextEl)) {\r\n e.stopPropagation();\r\n util.removeItem(nextEl);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (!selectRange && (core.isEdgePoint(range.endContainer, range.endOffset) || (selectionNode === formatEl ? !!formatEl.childNodes[range.startOffset] : false))) {\r\n const sel = selectionNode === formatEl ? formatEl.childNodes[range.startOffset] || selectionNode : selectionNode;\r\n // delete nonEditable\r\n if (sel && util.isNonEditable(sel.nextSibling)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n util.removeItem(sel.nextSibling);\r\n break;\r\n } else if (util.isComponent(sel)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n util.removeItem(sel);\r\n break;\r\n }\r\n }\r\n\r\n // format attributes\r\n if (!selectRange && core._isEdgeFormat(range.endContainer, range.endOffset, 'end')) {\r\n if (util.isFormatElement(formatEl.nextElementSibling)) {\r\n core._formatAttrsTemp = formatEl.attributes;\r\n }\r\n }\r\n\r\n // nested list\r\n formatEl = util.getFormatElement(range.startContainer, null);\r\n rangeEl = util.getRangeFormatElement(formatEl, null);\r\n if (util.isListCell(formatEl) && util.isList(rangeEl) && (selectionNode === formatEl || (selectionNode.nodeType === 3 && (!selectionNode.nextSibling || util.isList(selectionNode.nextSibling)) &&\r\n (util.getFormatElement(range.startContainer, null) !== util.getFormatElement(range.endContainer, null) ? rangeEl.contains(range.endContainer) : (range.endOffset === selectionNode.textContent.length && range.collapsed))))) {\r\n if (range.startContainer !== range.endContainer) core.removeNode();\r\n \r\n let next = util.getArrayItem(formatEl.children, util.isList, false);\r\n next = next || formatEl.nextElementSibling || rangeEl.parentNode.nextElementSibling;\r\n if (next && (util.isList(next) || util.getArrayItem(next.children, util.isList, false))) {\r\n e.preventDefault();\r\n\r\n let con, children;\r\n if (util.isList(next)) {\r\n const child = next.firstElementChild;\r\n children = child.childNodes;\r\n con = children[0];\r\n while (children[0]) {\r\n formatEl.insertBefore(children[0], next);\r\n }\r\n util.removeItem(child);\r\n } else {\r\n con = next.firstChild;\r\n children = next.childNodes;\r\n while (children[0]) {\r\n formatEl.appendChild(children[0]);\r\n }\r\n util.removeItem(next);\r\n }\r\n core.setRange(con, 0, con, 0);\r\n // history stack\r\n core.history.push(true);\r\n }\r\n break;\r\n }\r\n\r\n break;\r\n case 9: /** tab key */\r\n if (fileComponentName || options.tabDisable) break;\r\n e.preventDefault();\r\n if (ctrl || alt || util.isWysiwygDiv(selectionNode)) break;\r\n\r\n const isEdge = (!range.collapsed || core.isEdgePoint(range.startContainer, range.startOffset)); \r\n const selectedFormats = core.getSelectedElements(null);\r\n selectionNode = core.getSelectionNode();\r\n const cells = [];\r\n let lines = [];\r\n let fc = util.isListCell(selectedFormats[0]), lc = util.isListCell(selectedFormats[selectedFormats.length - 1]);\r\n let r = {sc: range.startContainer, so: range.startOffset, ec: range.endContainer, eo: range.endOffset};\r\n for (let i = 0, len = selectedFormats.length, f; i < len; i++) {\r\n f = selectedFormats[i];\r\n if (util.isListCell(f)) {\r\n if (!f.previousElementSibling && !shift) {\r\n continue;\r\n } else {\r\n cells.push(f);\r\n }\r\n } else {\r\n lines.push(f);\r\n }\r\n }\r\n \r\n // Nested list\r\n if (cells.length > 0 && isEdge && core.plugins.list) {\r\n r = core.plugins.list.editInsideList.call(core, shift, cells);\r\n } else {\r\n // table\r\n const tableCell = util.getParentElement(selectionNode, util.isCell);\r\n if (tableCell && isEdge) {\r\n const table = util.getParentElement(tableCell, 'table');\r\n const cells = util.getListChildren(table, util.isCell);\r\n let idx = shift ? util.prevIdx(cells, tableCell) : util.nextIdx(cells, tableCell);\r\n\r\n if (idx === cells.length && !shift) idx = 0;\r\n if (idx === -1 && shift) idx = cells.length - 1;\r\n\r\n let moveCell = cells[idx];\r\n if (!moveCell) break;\r\n moveCell = moveCell.firstElementChild || moveCell;\r\n core.setRange(moveCell, 0, moveCell, 0);\r\n break;\r\n }\r\n\r\n lines = lines.concat(cells);\r\n fc = lc = null;\r\n }\r\n\r\n // Lines tab(4)\r\n if (lines.length > 0) {\r\n if (!shift) {\r\n const tabText = util.createTextNode(new _w.Array(core._variable.tabSize + 1).join('\\u00A0'));\r\n if (lines.length === 1) {\r\n const textRange = core.insertNode(tabText, null, true);\r\n if (!textRange) return false;\r\n if (!fc) {\r\n r.sc = tabText;\r\n r.so = textRange.endOffset;\r\n }\r\n if (!lc) {\r\n r.ec = tabText;\r\n r.eo = textRange.endOffset;\r\n }\r\n } else {\r\n const len = lines.length - 1;\r\n for (let i = 0, child; i <= len; i++) {\r\n child = lines[i].firstChild;\r\n if (!child) continue;\r\n \r\n if (util.isBreak(child)) {\r\n lines[i].insertBefore(tabText.cloneNode(false), child);\r\n } else {\r\n child.textContent = tabText.textContent + child.textContent;\r\n }\r\n }\r\n \r\n const firstChild = util.getChildElement(lines[0], 'text', false);\r\n const endChild = util.getChildElement(lines[len], 'text', true);\r\n if (!fc && firstChild) {\r\n r.sc = firstChild;\r\n r.so = 0;\r\n }\r\n if (!lc && endChild) {\r\n r.ec = endChild;\r\n r.eo = endChild.textContent.length;\r\n }\r\n }\r\n } else {\r\n const len = lines.length - 1;\r\n for (let i = 0, line; i <= len; i++) {\r\n line = lines[i].childNodes;\r\n for (let c = 0, cLen = line.length, child; c < cLen; c++) {\r\n child = line[c];\r\n if (!child) break;\r\n if (util.onlyZeroWidthSpace(child)) continue;\r\n \r\n if (/^\\s{1,4}$/.test(child.textContent)) {\r\n util.removeItem(child);\r\n } else if (/^\\s{1,4}/.test(child.textContent)) {\r\n child.textContent = child.textContent.replace(/^\\s{1,4}/, '');\r\n }\r\n \r\n break;\r\n }\r\n }\r\n \r\n const firstChild = util.getChildElement(lines[0], 'text', false);\r\n const endChild = util.getChildElement(lines[len], 'text', true);\r\n if (!fc && firstChild) {\r\n r.sc = firstChild;\r\n r.so = 0;\r\n }\r\n if (!lc && endChild) {\r\n r.ec = endChild;\r\n r.eo = endChild.textContent.length;\r\n }\r\n }\r\n }\r\n\r\n core.setRange(r.sc, r.so, r.ec, r.eo);\r\n // history stack\r\n core.history.push(false);\r\n \r\n break;\r\n case 13: /** enter key */\r\n const freeFormatEl = util.getFreeFormatElement(selectionNode, null);\r\n\r\n if (core._charTypeHTML) {\r\n let enterHTML = '';\r\n if ((!shift && freeFormatEl) || shift) {\r\n enterHTML = '<br>';\r\n } else {\r\n enterHTML = '<' + formatEl.nodeName + '><br></' + formatEl.nodeName + '>';\r\n }\r\n\r\n if (!core.checkCharCount(enterHTML, 'byte-html')) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n if (!shift) {\r\n const formatEndEdge = core._isEdgeFormat(range.endContainer, range.endOffset, 'end');\r\n const formatStartEdge = core._isEdgeFormat(range.startContainer, range.startOffset, 'start');\r\n\r\n // add default format line\r\n if (formatEndEdge && (/^H[1-6]$/i.test(formatEl.nodeName) || /^HR$/i.test(formatEl.nodeName))) {\r\n e.preventDefault();\r\n let temp = null;\r\n const newFormat = core.appendFormatTag(formatEl, options.defaultTag);\r\n\r\n if (formatEndEdge && formatEndEdge.length > 0) {\r\n temp = formatEndEdge.pop();\r\n const innerNode = temp;\r\n while(formatEndEdge.length > 0) {\r\n temp = temp.appendChild(formatEndEdge.pop());\r\n }\r\n newFormat.appendChild(innerNode);\r\n }\r\n\r\n temp = !temp ? newFormat.firstChild : temp.appendChild(newFormat.firstChild);\r\n core.setRange(temp, 0, temp, 0);\r\n break;\r\n } else if (rangeEl && formatEl && !util.isCell(rangeEl) && !/^FIGCAPTION$/i.test(rangeEl.nodeName)) {\r\n const range = core.getRange();\r\n if(core.isEdgePoint(range.endContainer, range.endOffset) && util.isList(selectionNode.nextSibling)) {\r\n e.preventDefault();\r\n const newEl = util.createElement('LI');\r\n const br = util.createElement('BR');\r\n newEl.appendChild(br);\r\n \r\n formatEl.parentNode.insertBefore(newEl, formatEl.nextElementSibling);\r\n newEl.appendChild(selectionNode.nextSibling);\r\n \r\n core.setRange(br, 1, br, 1);\r\n break;\r\n }\r\n \r\n if ((range.commonAncestorContainer.nodeType === 3 ? !range.commonAncestorContainer.nextElementSibling : true) && util.onlyZeroWidthSpace(formatEl.innerText.trim()) && !util.isListCell(formatEl.nextElementSibling)) {\r\n e.preventDefault();\r\n let newEl = null;\r\n \r\n if (util.isListCell(rangeEl.parentNode)) {\r\n rangeEl = formatEl.parentNode.parentNode.parentNode;\r\n newEl = util.splitElement(formatEl, null, util.getElementDepth(formatEl) - 2);\r\n if (!newEl) {\r\n const newListCell = util.createElement('LI');\r\n newListCell.innerHTML = '<br>';\r\n util.copyTagAttributes(newListCell, formatEl, options.lineAttrReset);\r\n rangeEl.insertBefore(newListCell, newEl);\r\n newEl = newListCell;\r\n }\r\n } else {\r\n const newFormat = util.isCell(rangeEl.parentNode) ? 'DIV' : util.isList(rangeEl.parentNode) ? 'LI' : (util.isFormatElement(rangeEl.nextElementSibling) && !util.isRangeFormatElement(rangeEl.nextElementSibling)) ? rangeEl.nextElementSibling.nodeName : (util.isFormatElement(rangeEl.previousElementSibling) && !util.isRangeFormatElement(rangeEl.previousElementSibling)) ? rangeEl.previousElementSibling.nodeName : options.defaultTag;\r\n newEl = util.createElement(newFormat);\r\n util.copyTagAttributes(newEl, formatEl, options.lineAttrReset);\r\n const edge = core.detachRangeFormatElement(rangeEl, [formatEl], null, true, true);\r\n edge.cc.insertBefore(newEl, edge.ec);\r\n }\r\n \r\n newEl.innerHTML = '<br>';\r\n util.removeItemAllParents(formatEl, null, null);\r\n core.setRange(newEl, 1, newEl, 1);\r\n break;\r\n }\r\n }\r\n\r\n if (freeFormatEl) {\r\n e.preventDefault();\r\n const selectionFormat = selectionNode === freeFormatEl;\r\n const wSelection = core.getSelection();\r\n const children = selectionNode.childNodes, offset = wSelection.focusOffset, prev = selectionNode.previousElementSibling, next = selectionNode.nextSibling;\r\n \r\n if (!util.isClosureFreeFormatElement(freeFormatEl) && !!children && ((selectionFormat && range.collapsed && children.length - 1 <= offset + 1 && util.isBreak(children[offset]) && (!children[offset + 1] || ((!children[offset + 2] || util.onlyZeroWidthSpace(children[offset + 2].textContent)) && children[offset + 1].nodeType === 3 && util.onlyZeroWidthSpace(children[offset + 1].textContent))) && offset > 0 && util.isBreak(children[offset - 1])) ||\r\n (!selectionFormat && util.onlyZeroWidthSpace(selectionNode.textContent) && util.isBreak(prev) && (util.isBreak(prev.previousSibling) || !util.onlyZeroWidthSpace(prev.previousSibling.textContent)) && (!next || (!util.isBreak(next) && util.onlyZeroWidthSpace(next.textContent)))))) {\r\n if (selectionFormat) util.removeItem(children[offset - 1]);\r\n else util.removeItem(selectionNode);\r\n const newEl = core.appendFormatTag(freeFormatEl, (util.isFormatElement(freeFormatEl.nextElementSibling) && !util.isRangeFormatElement(freeFormatEl.nextElementSibling)) ? freeFormatEl.nextElementSibling : null);\r\n util.copyFormatAttributes(newEl, freeFormatEl);\r\n core.setRange(newEl, 1, newEl, 1);\r\n break;\r\n }\r\n \r\n if (selectionFormat) {\r\n functions.insertHTML(((range.collapsed && util.isBreak(range.startContainer.childNodes[range.startOffset - 1])) ? '<br>' : '<br><br>'), true, false);\r\n \r\n let focusNode = wSelection.focusNode;\r\n const wOffset = wSelection.focusOffset;\r\n if (freeFormatEl === focusNode) {\r\n focusNode = focusNode.childNodes[wOffset - offset > 1 ? wOffset - 1 : wOffset];\r\n }\r\n \r\n core.setRange(focusNode, 1, focusNode, 1);\r\n } else {\r\n const focusNext = wSelection.focusNode.nextSibling;\r\n const br = util.createElement('BR');\r\n core.insertNode(br, null, false);\r\n \r\n const brPrev = br.previousSibling, brNext = br.nextSibling;\r\n if (!util.isBreak(focusNext) && !util.isBreak(brPrev) && (!brNext || util.onlyZeroWidthSpace(brNext))) {\r\n br.parentNode.insertBefore(br.cloneNode(false), br);\r\n core.setRange(br, 1, br, 1);\r\n } else {\r\n core.setRange(brNext, 0, brNext, 0);\r\n }\r\n }\r\n \r\n event._onShortcutKey = true;\r\n break;\r\n }\r\n \r\n // set format attrs - edge\r\n if (range.collapsed && (formatStartEdge || formatEndEdge)) {\r\n e.preventDefault();\r\n const focusBR = util.createElement('BR');\r\n const newFormat = util.createElement(formatEl.nodeName);\r\n util.copyTagAttributes(newFormat, formatEl, options.lineAttrReset);\r\n\r\n let child = focusBR;\r\n do {\r\n if (!util.isBreak(selectionNode) && selectionNode.nodeType === 1) {\r\n const f = selectionNode.cloneNode(false);\r\n f.appendChild(child);\r\n child = f;\r\n }\r\n selectionNode = selectionNode.parentNode;\r\n } while(formatEl !== selectionNode && formatEl.contains(selectionNode));\r\n\r\n newFormat.appendChild(child);\r\n formatEl.parentNode.insertBefore(newFormat, formatStartEdge && !formatEndEdge ? formatEl : formatEl.nextElementSibling);\r\n if (formatEndEdge) {\r\n core.setRange(focusBR, 1, focusBR, 1);\r\n }\r\n \r\n break;\r\n }\r\n \r\n if (formatEl) {\r\n e.stopPropagation();\r\n\r\n let newEl;\r\n let offset = 0;\r\n if (!range.collapsed) {\r\n const isMultiLine = util.getFormatElement(range.startContainer, null) !== util.getFormatElement(range.endContainer, null);\r\n const newFormat = formatEl.cloneNode(false);\r\n newFormat.innerHTML = '<br>';\r\n const r = core.removeNode();\r\n newEl = util.getFormatElement(r.container, null);\r\n if (!newEl) {\r\n if (util.isWysiwygDiv(r.container)) {\r\n e.preventDefault();\r\n context.element.wysiwyg.appendChild(newFormat);\r\n newEl = newFormat;\r\n util.copyTagAttributes(newEl, formatEl, options.lineAttrReset);\r\n core.setRange(newEl, offset, newEl, offset);\r\n }\r\n break;\r\n }\r\n \r\n const innerRange = util.getRangeFormatElement(r.container);\r\n newEl = newEl.contains(innerRange) ? util.getChildElement(innerRange, util.getFormatElement.bind(util)) : newEl;\r\n if (isMultiLine) {\r\n if (formatEndEdge && !formatStartEdge) {\r\n newEl.parentNode.insertBefore(newFormat, (!r.prevContainer || r.container === r.prevContainer) ? newEl.nextElementSibling : newEl);\r\n newEl = newFormat;\r\n offset = 0;\r\n } else {\r\n offset = r.offset;\r\n if (formatStartEdge) {\r\n const tempEl = newEl.parentNode.insertBefore(newFormat, newEl);\r\n if (formatEndEdge) {\r\n newEl = tempEl;\r\n offset = 0;\r\n }\r\n }\r\n }\r\n } else {\r\n if (formatEndEdge && formatStartEdge) {\r\n newEl.parentNode.insertBefore(newFormat, (r.prevContainer && r.container === r.prevContainer) ? newEl.nextElementSibling : newEl);\r\n newEl = newFormat;\r\n offset = 0;\r\n } else {\r\n newEl = util.splitElement(r.container, r.offset, util.getElementDepth(formatEl));\r\n }\r\n }\r\n } else {\r\n if (util.onlyZeroWidthSpace(formatEl)) {\r\n newEl = core.appendFormatTag(formatEl, formatEl.cloneNode(false));\r\n } else {\r\n newEl = util.splitElement(range.endContainer, range.endOffset, util.getElementDepth(formatEl));\r\n }\r\n }\r\n\r\n e.preventDefault();\r\n util.copyTagAttributes(newEl, formatEl, options.lineAttrReset);\r\n core.setRange(newEl, offset, newEl, offset);\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (selectRange) break;\r\n \r\n if (rangeEl && util.getParentElement(rangeEl, 'FIGCAPTION') && util.getParentElement(rangeEl, util.isList)) {\r\n e.preventDefault();\r\n formatEl = core.appendFormatTag(formatEl, null);\r\n core.setRange(formatEl, 0, formatEl, 0);\r\n }\r\n\r\n if (fileComponentName) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const compContext = context[fileComponentName];\r\n const container = compContext._container;\r\n const sibling = container.previousElementSibling || container.nextElementSibling;\r\n\r\n let newEl = null;\r\n if (util.isListCell(container.parentNode)) {\r\n newEl = util.createElement('BR');\r\n } else {\r\n newEl = util.createElement((util.isFormatElement(sibling) && !util.isRangeFormatElement(sibling)) ? sibling.nodeName : options.defaultTag);\r\n newEl.innerHTML = '<br>';\r\n }\r\n\r\n container.parentNode.insertBefore(newEl, container);\r\n \r\n core.callPlugin(fileComponentName, function () {\r\n if (core.selectComponent(compContext._element, fileComponentName) === false) core.blur();\r\n }, null);\r\n }\r\n \r\n break;\r\n case 27:\r\n if (fileComponentName) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n core.controllersOff();\r\n return false;\r\n }\r\n break;\r\n }\r\n\r\n if (shift && keyCode === 16) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const tablePlugin = core.plugins.table;\r\n if (tablePlugin && !tablePlugin._shift && !tablePlugin._ref) {\r\n const cell = util.getParentElement(formatEl, util.isCell);\r\n if (cell) {\r\n tablePlugin.onTableCellMultiSelect.call(core, cell, true);\r\n return;\r\n }\r\n }\r\n } else if (shift && (util.isOSX_IOS ? alt : ctrl) && keyCode === 32) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const nbsp = core.insertNode(util.createTextNode('\\u00a0'));\r\n if (nbsp && nbsp.container) {\r\n core.setRange(nbsp.container, nbsp.endOffset, nbsp.container, nbsp.endOffset);\r\n return;\r\n }\r\n }\r\n\r\n if (util.isIE && !ctrl && !alt && !selectRange && !event._nonTextKeyCode.test(keyCode) && util.isBreak(range.commonAncestorContainer)) {\r\n const zeroWidth = util.createTextNode(util.zeroWidthSpace);\r\n core.insertNode(zeroWidth, null, false);\r\n core.setRange(zeroWidth, 1, zeroWidth, 1);\r\n }\r\n\r\n if (event._directionKeyCode.test(keyCode)) {\r\n core._editorRange();\r\n event._applyTagEffects();\r\n }\r\n },\r\n\r\n onKeyUp_wysiwyg: function (e) {\r\n if (event._onShortcutKey) return;\r\n\r\n core._editorRange();\r\n const keyCode = e.keyCode;\r\n const ctrl = e.ctrlKey || e.metaKey || keyCode === 91 || keyCode === 92 || keyCode === 224;\r\n const alt = e.altKey;\r\n\r\n if (core.isReadOnly) {\r\n if (!ctrl && event._cursorMoveKeyCode.test(keyCode)) event._applyTagEffects();\r\n return;\r\n }\r\n\r\n const range = core.getRange();\r\n let selectionNode = core.getSelectionNode();\r\n\r\n if (core._isBalloon && ((core._isBalloonAlways && keyCode !== 27) || !range.collapsed)) {\r\n if (core._isBalloonAlways) {\r\n if (keyCode !== 27) event._showToolbarBalloonDelay();\r\n } else {\r\n event._showToolbarBalloon();\r\n return;\r\n }\r\n }\r\n\r\n /** when format tag deleted */\r\n if (keyCode === 8 && util.isWysiwygDiv(selectionNode) && selectionNode.textContent === '' && selectionNode.children.length === 0) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n selectionNode.innerHTML = '';\r\n\r\n const oFormatTag = util.createElement(util.isFormatElement(core._variable.currentNodes[0]) ? core._variable.currentNodes[0] : options.defaultTag);\r\n oFormatTag.innerHTML = '<br>';\r\n\r\n selectionNode.appendChild(oFormatTag);\r\n core.setRange(oFormatTag, 0, oFormatTag, 0);\r\n event._applyTagEffects();\r\n\r\n core.history.push(false);\r\n return;\r\n }\r\n\r\n const formatEl = util.getFormatElement(selectionNode, null);\r\n const rangeEl = util.getRangeFormatElement(selectionNode, null);\r\n const attrs = core._formatAttrsTemp;\r\n\r\n if (attrs) {\r\n for (let i = 0, len = attrs.length; i < len; i++) {\r\n if (keyCode === 13 && /^id$/i.test(attrs[i].name)) {\r\n formatEl.removeAttribute('id');\r\n continue;\r\n }\r\n formatEl.setAttribute(attrs[i].name, attrs[i].value);\r\n }\r\n core._formatAttrsTemp = null;\r\n }\r\n\r\n if (!formatEl && range.collapsed && !util.isComponent(selectionNode) && !util.isList(selectionNode) && core._setDefaultFormat(util.isRangeFormatElement(rangeEl) ? 'DIV' : options.defaultTag) !== null) {\r\n selectionNode = core.getSelectionNode();\r\n }\r\n\r\n const textKey = !ctrl && !alt && !event._nonTextKeyCode.test(keyCode);\r\n if (textKey && selectionNode.nodeType === 3 && util.zeroWidthRegExp.test(selectionNode.textContent) && !(e.isComposing !== undefined ? e.isComposing : event._IEisComposing)) {\r\n let so = range.startOffset, eo = range.endOffset;\r\n const frontZeroWidthCnt = (selectionNode.textContent.substring(0, eo).match(event._frontZeroWidthReg) || '').length;\r\n so = range.startOffset - frontZeroWidthCnt;\r\n eo = range.endOffset - frontZeroWidthCnt;\r\n selectionNode.textContent = selectionNode.textContent.replace(util.zeroWidthRegExp, '');\r\n core.setRange(selectionNode, so < 0 ? 0 : so, selectionNode, eo < 0 ? 0 : eo);\r\n }\r\n\r\n core._charCount('');\r\n\r\n // user event\r\n if (typeof functions.onKeyUp === 'function' && functions.onKeyUp(e, core) === false) return;\r\n\r\n // history stack\r\n if (!ctrl && !alt && !event._historyIgnoreKeyCode.test(keyCode)) {\r\n core.history.push(true);\r\n }\r\n },\r\n\r\n onScroll_wysiwyg: function (e) {\r\n core.controllersOff();\r\n if (core._isBalloon) event._hideToolbar();\r\n\r\n // user event\r\n if (typeof functions.onScroll === 'function') functions.onScroll(e, core);\r\n },\r\n\r\n onFocus_wysiwyg: function (e) {\r\n if (core._antiBlur) return;\r\n core.hasFocus = true;\r\n _w.setTimeout(event._applyTagEffects);\r\n \r\n if (core._isInline) event._showToolbarInline();\r\n\r\n // user event\r\n if (typeof functions.onFocus === 'function') functions.onFocus(e, core);\r\n },\r\n\r\n onBlur_wysiwyg: function (e) {\r\n if (core._antiBlur || core._variable.isCodeView) return;\r\n core.hasFocus = false;\r\n core.effectNode = null;\r\n core.controllersOff();\r\n if (core._isInline || core._isBalloon) event._hideToolbar();\r\n\r\n core._setKeyEffect([]);\r\n\r\n core._variable.currentNodes = [];\r\n core._variable.currentNodesMap = [];\r\n if (options.showPathLabel) context.element.navigation.textContent = '';\r\n // user event\r\n if (typeof functions.onBlur === 'function') functions.onBlur(e, core,this);\r\n },\r\n\r\n onMouseDown_resizingBar: function (e) {\r\n e.stopPropagation();\r\n\r\n core.submenuOff();\r\n core.controllersOff();\r\n\r\n core._variable.resizeClientY = e.clientY;\r\n context.element.resizeBackground.style.display = 'block';\r\n\r\n function closureFunc() {\r\n context.element.resizeBackground.style.display = 'none';\r\n _d.removeEventListener('mousemove', event._resize_editor);\r\n _d.removeEventListener('mouseup', closureFunc);\r\n }\r\n\r\n _d.addEventListener('mousemove', event._resize_editor);\r\n _d.addEventListener('mouseup', closureFunc);\r\n },\r\n\r\n _resize_editor: function (e) {\r\n const resizeInterval = context.element.editorArea.offsetHeight + (e.clientY - core._variable.resizeClientY);\r\n const h = (resizeInterval < core._variable.minResizingSize ? core._variable.minResizingSize : resizeInterval);\r\n context.element.wysiwygFrame.style.height = context.element.code.style.height = h + 'px';\r\n core._variable.resizeClientY = e.clientY;\r\n if (!util.isResizeObserverSupported) core.__callResizeFunction(h, null);\r\n },\r\n\r\n onResize_window: function () {\r\n if (!util.isResizeObserverSupported) core.resetResponsiveToolbar();\r\n\r\n const toolbar = context.element.toolbar;\r\n const isToolbarHidden = (toolbar.style.display === 'none' || (core._isInline && !core._inlineToolbarAttr.isShow));\r\n if (toolbar.offsetWidth === 0 && !isToolbarHidden) return;\r\n\r\n if (context.fileBrowser && context.fileBrowser.area.style.display === 'block') {\r\n context.fileBrowser.body.style.maxHeight = (_w.innerHeight - context.fileBrowser.header.offsetHeight - 50) + 'px';\r\n }\r\n\r\n if (core.submenuActiveButton && core.submenu) {\r\n core._setMenuPosition(core.submenuActiveButton, core.submenu);\r\n }\r\n\r\n if (core._variable.isFullScreen) {\r\n core._variable.innerHeight_fullScreen += (_w.innerHeight - toolbar.offsetHeight) - core._variable.innerHeight_fullScreen;\r\n context.element.editorArea.style.height = core._variable.innerHeight_fullScreen + 'px';\r\n return;\r\n }\r\n\r\n if (core._variable.isCodeView && core._isInline) {\r\n event._showToolbarInline();\r\n return;\r\n }\r\n \r\n core._iframeAutoHeight();\r\n\r\n if (core._sticky) {\r\n toolbar.style.width = (context.element.topArea.offsetWidth - 2) + 'px';\r\n event.onScroll_window();\r\n }\r\n },\r\n\r\n onScroll_window: function () {\r\n if (core._variable.isFullScreen || context.element.toolbar.offsetWidth === 0 || options.stickyToolbar < 0) return;\r\n\r\n const element = context.element;\r\n const editorHeight = element.editorArea.offsetHeight;\r\n const y = (this.scrollY || _d.documentElement.scrollTop) + options.stickyToolbar;\r\n const editorTop = event._getEditorOffsets(options.toolbarContainer).top - (core._isInline ? element.toolbar.offsetHeight : 0);\r\n const inlineOffset = core._isInline && (y - editorTop) > 0 ? y - editorTop - context.element.toolbar.offsetHeight : 0;\r\n \r\n if (y < editorTop) {\r\n event._offStickyToolbar();\r\n }\r\n else if (y + core._variable.minResizingSize >= editorHeight + editorTop) {\r\n if (!core._sticky) event._onStickyToolbar(inlineOffset);\r\n element.toolbar.style.top = (inlineOffset + editorHeight + editorTop + options.stickyToolbar - y - core._variable.minResizingSize) + 'px';\r\n }\r\n else if (y >= editorTop) {\r\n event._onStickyToolbar(inlineOffset);\r\n }\r\n },\r\n\r\n _getEditorOffsets: function (container) {\r\n let offsetEl = container || context.element.topArea;\r\n let t = 0, l = 0, s = 0;\r\n\r\n while (offsetEl) {\r\n t += offsetEl.offsetTop;\r\n l += offsetEl.offsetLeft;\r\n s += offsetEl.scrollTop;\r\n offsetEl = offsetEl.offsetParent;\r\n }\r\n\r\n return {\r\n top: t,\r\n left: l,\r\n scroll: s\r\n };\r\n },\r\n\r\n _getPageBottomSpace: function () {\r\n return _d.documentElement.scrollHeight - (event._getEditorOffsets(null).top + context.element.topArea.offsetHeight);\r\n },\r\n\r\n _onStickyToolbar: function (inlineOffset) {\r\n const element = context.element;\r\n\r\n if (!core._isInline && !options.toolbarContainer) {\r\n element._stickyDummy.style.height = element.toolbar.offsetHeight + 'px';\r\n element._stickyDummy.style.display = 'block';\r\n }\r\n\r\n element.toolbar.style.top = (options.stickyToolbar + inlineOffset) + 'px';\r\n element.toolbar.style.width = core._isInline ? core._inlineToolbarAttr.width : element.toolbar.offsetWidth + 'px';\r\n util.addClass(element.toolbar, 'se-toolbar-sticky');\r\n core._sticky = true;\r\n },\r\n\r\n _offStickyToolbar: function () {\r\n const element = context.element;\r\n\r\n element._stickyDummy.style.display = 'none';\r\n element.toolbar.style.top = core._isInline ? core._inlineToolbarAttr.top : '';\r\n element.toolbar.style.width = core._isInline ? core._inlineToolbarAttr.width : '';\r\n element.editorArea.style.marginTop = '';\r\n\r\n util.removeClass(element.toolbar, 'se-toolbar-sticky');\r\n core._sticky = false;\r\n },\r\n\r\n _codeViewAutoHeight: function () {\r\n if (core._variable.isFullScreen) return;\r\n context.element.code.style.height = context.element.code.scrollHeight + 'px';\r\n },\r\n\r\n // FireFox - table delete, Chrome - image, video, audio\r\n _hardDelete: function () {\r\n const range = core.getRange();\r\n const sc = range.startContainer;\r\n const ec = range.endContainer;\r\n \r\n // table\r\n const sCell = util.getRangeFormatElement(sc);\r\n const eCell = util.getRangeFormatElement(ec);\r\n const sIsCell = util.isCell(sCell);\r\n const eIsCell = util.isCell(eCell);\r\n const ancestor = range.commonAncestorContainer;\r\n if (((sIsCell && !sCell.previousElementSibling && !sCell.parentElement.previousElementSibling) || (eIsCell && !eCell.nextElementSibling && !eCell.parentElement.nextElementSibling)) && sCell !== eCell) {\r\n if (!sIsCell) {\r\n util.removeItem(util.getParentElement(eCell, function(current) {return ancestor === current.parentNode;}));\r\n } else if (!eIsCell) {\r\n util.removeItem(util.getParentElement(sCell, function(current) {return ancestor === current.parentNode;}));\r\n } else {\r\n util.removeItem(util.getParentElement(sCell, function(current) {return ancestor === current.parentNode;}));\r\n core.nativeFocus();\r\n return true;\r\n }\r\n }\r\n\r\n // component\r\n const sComp = sc.nodeType === 1 ? util.getParentElement(sc, '.se-component') : null;\r\n const eComp = ec.nodeType === 1 ? util.getParentElement(ec, '.se-component') : null;\r\n if (sComp) util.removeItem(sComp);\r\n if (eComp) util.removeItem(eComp);\r\n\r\n return false;\r\n },\r\n\r\n onPaste_wysiwyg: function (e) {\r\n const clipboardData = util.isIE ? _w.clipboardData : e.clipboardData;\r\n if (!clipboardData) return true;\r\n return event._dataTransferAction('paste', e, clipboardData);\r\n },\r\n\r\n _setClipboardComponent: function (e, info, clipboardData) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n clipboardData.setData('text/html', info.component.outerHTML);\r\n },\r\n\r\n onCopy_wysiwyg: function (e) {\r\n const clipboardData = util.isIE ? _w.clipboardData : e.clipboardData;\r\n \r\n // user event\r\n if (typeof functions.onCopy === 'function' && functions.onCopy(e, clipboardData, core) === false) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n\r\n const info = core.currentFileComponentInfo;\r\n if (info && !util.isIE) {\r\n event._setClipboardComponent(e, info, clipboardData);\r\n util.addClass(info.component, 'se-component-copy');\r\n // copy effect\r\n _w.setTimeout(function () {\r\n util.removeClass(info.component, 'se-component-copy');\r\n }, 150);\r\n }\r\n },\r\n\r\n onSave_wysiwyg: function (content) {\r\n // user event\r\n if (typeof functions.onSave === 'function') {\r\n functions.onSave(content, core);\r\n return;\r\n }\r\n },\r\n\r\n onCut_wysiwyg: function (e) {\r\n const clipboardData = util.isIE ? _w.clipboardData : e.clipboardData;\r\n\r\n // user event\r\n if (typeof functions.onCut === 'function' && functions.onCut(e, clipboardData, core) === false) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n\r\n const info = core.currentFileComponentInfo;\r\n if (info && !util.isIE) {\r\n event._setClipboardComponent(e, info, clipboardData);\r\n util.removeItem(info.component);\r\n core.controllersOff();\r\n }\r\n\r\n _w.setTimeout(function () {\r\n // history stack\r\n core.history.push(false);\r\n });\r\n },\r\n\r\n onDrop_wysiwyg: function (e) {\r\n if (core.isReadOnly || util.isIE) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n\r\n const dataTransfer = e.dataTransfer;\r\n if (!dataTransfer) return true;\r\n\r\n core.removeNode();\r\n event._setDropLocationSelection(e);\r\n return event._dataTransferAction('drop', e, dataTransfer);\r\n },\r\n\r\n _setDropLocationSelection: function (e) {\r\n if (e.rangeParent) {\r\n core.setRange(e.rangeParent, e.rangeOffset, e.rangeParent, e.rangeOffset);\r\n } else if (core._wd.caretRangeFromPoint) {\r\n const r = core._wd.caretRangeFromPoint(e.clientX, e.clientY);\r\n core.setRange(r.startContainer, r.startOffset, r.endContainer, r.endOffset);\r\n } else {\r\n const r = core.getRange();\r\n core.setRange(r.startContainer, r.startOffset, r.endContainer, r.endOffset);\r\n }\r\n },\r\n\r\n _dataTransferAction: function (type, e, data) {\r\n let plainText, cleanData;\r\n if (util.isIE) {\r\n plainText = data.getData('Text');\r\n \r\n const range = core.getRange();\r\n const tempDiv = util.createElement('DIV');\r\n const tempRange = {\r\n sc: range.startContainer,\r\n so: range.startOffset,\r\n ec: range.endContainer,\r\n eo: range.endOffset\r\n };\r\n\r\n tempDiv.setAttribute('contenteditable', true);\r\n tempDiv.style.cssText = 'position:absolute; top:0; left:0; width:1px; height:1px; overflow:hidden;';\r\n \r\n context.element.relative.appendChild(tempDiv);\r\n tempDiv.focus();\r\n\r\n _w.setTimeout(function () {\r\n cleanData = tempDiv.innerHTML;\r\n util.removeItem(tempDiv);\r\n core.setRange(tempRange.sc, tempRange.so, tempRange.ec, tempRange.eo);\r\n event._setClipboardData(type, e, plainText, cleanData, data);\r\n });\r\n\r\n return true;\r\n } else {\r\n plainText = data.getData('text/plain');\r\n cleanData = data.getData('text/html');\r\n if (event._setClipboardData(type, e, plainText, cleanData, data) === false) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n },\r\n\r\n _setClipboardData: function (type, e, plainText, cleanData, data) {\r\n // MS word, OneNode, Excel\r\n const MSData = /class=[\"']*Mso(Normal|List)/i.test(cleanData) || /content=[\"']*Word.Document/i.test(cleanData) || /content=[\"']*OneNote.File/i.test(cleanData) || /content=[\"']*Excel.Sheet/i.test(cleanData);\r\n const onlyText = !cleanData;\r\n\r\n if (!onlyText) {\r\n cleanData = cleanData.replace(/^<html>\\r?\\n?<body>\\r?\\n?\\x3C!--StartFragment--\\>|\\x3C!--EndFragment-->\\r?\\n?<\\/body\\>\\r?\\n?<\\/html>$/g, '');\r\n if (MSData) {\r\n cleanData = cleanData.replace(/\\n/g, ' ');\r\n plainText = plainText.replace(/\\n/g, ' ');\r\n }\r\n cleanData = core.cleanHTML(cleanData, core.pasteTagsWhitelistRegExp, core.pasteTagsBlacklistRegExp);\r\n } else {\r\n cleanData = util._HTMLConvertor(plainText).replace(/\\n/g, '<br>');\r\n }\r\n\r\n const maxCharCount = core._charCount(core._charTypeHTML ? cleanData : plainText);\r\n // user event - paste\r\n if (type === 'paste' && typeof functions.onPaste === 'function') {\r\n const value = functions.onPaste(e, cleanData, maxCharCount, core);\r\n if (value === false) {\r\n return false;\r\n } else if (typeof value === 'string') {\r\n if (!value) return false;\r\n cleanData = value;\r\n }\r\n }\r\n // user event - drop\r\n if (type === 'drop' && typeof functions.onDrop === 'function') {\r\n const value = functions.onDrop(e, cleanData, maxCharCount, core);\r\n if (value === false) {\r\n return false;\r\n } else if (typeof value === 'string') {\r\n if (!value) return false;\r\n cleanData = value;\r\n }\r\n }\r\n\r\n // files\r\n const files = data.files;\r\n if (files.length > 0 && !MSData) {\r\n if (/^image/.test(files[0].type) && core.plugins.image) {\r\n functions.insertImage(files);\r\n }\r\n return false;\r\n }\r\n\r\n if (!maxCharCount) {\r\n return false;\r\n }\r\n\r\n if (cleanData) {\r\n functions.insertHTML(cleanData, true, false);\r\n return false;\r\n }\r\n },\r\n\r\n onMouseMove_wysiwyg: function (e) {\r\n if (core.isDisabled || core.isReadOnly) return false;\r\n const component = util.getParentElement(e.target, util.isComponent);\r\n const lineBreakerStyle = core._lineBreaker.style;\r\n \r\n if (component && !core.currentControllerName) {\r\n const ctxEl = context.element;\r\n let scrollTop = 0;\r\n let el = ctxEl.wysiwyg;\r\n do {\r\n scrollTop += el.scrollTop;\r\n el = el.parentElement;\r\n } while (el && !/^(BODY|HTML)$/i.test(el.nodeName));\r\n\r\n const wScroll = ctxEl.wysiwyg.scrollTop;\r\n const offsets = event._getEditorOffsets(null);\r\n const componentTop = util.getOffset(component, ctxEl.wysiwygFrame).top + wScroll;\r\n const y = e.pageY + scrollTop + (options.iframe && !options.toolbarContainer ? ctxEl.toolbar.offsetHeight : 0);\r\n const c = componentTop + (options.iframe ? scrollTop : offsets.top);\r\n\r\n const isList = util.isListCell(component.parentNode);\r\n let dir = '', top = '';\r\n if ((isList ? !component.previousSibling : !util.isFormatElement(component.previousElementSibling)) && y < (c + 20)) {\r\n top = componentTop;\r\n dir = 't';\r\n } else if ((isList ? !component.nextSibling : !util.isFormatElement(component.nextElementSibling)) && y > (c + component.offsetHeight - 20)) {\r\n top = componentTop + component.offsetHeight;\r\n dir = 'b';\r\n } else {\r\n lineBreakerStyle.display = 'none';\r\n return;\r\n }\r\n\r\n core._variable._lineBreakComp = component;\r\n core._variable._lineBreakDir = dir;\r\n lineBreakerStyle.top = (top - wScroll) + 'px';\r\n core._lineBreakerButton.style.left = (util.getOffset(component).left + (component.offsetWidth / 2) - 15) + 'px';\r\n lineBreakerStyle.display = 'block';\r\n } // off line breaker\r\n else if (lineBreakerStyle.display !== 'none') {\r\n lineBreakerStyle.display = 'none';\r\n }\r\n },\r\n\r\n _onMouseDown_lineBreak: function (e) {\r\n e.preventDefault();\r\n },\r\n\r\n _onLineBreak: function (e) {\r\n e.preventDefault();\r\n \r\n const component = core._variable._lineBreakComp;\r\n const dir = !this ? core._variable._lineBreakDir : this;\r\n const isList = util.isListCell(component.parentNode);\r\n\r\n const format = util.createElement(isList ? 'BR' : util.isCell(component.parentNode) ? 'DIV' : options.defaultTag);\r\n if (!isList) format.innerHTML = '<br>';\r\n\r\n if (core._charTypeHTML && !core.checkCharCount(format.outerHTML, 'byte-html')) return;\r\n\r\n component.parentNode.insertBefore(format, dir === 't' ? component : component.nextSibling);\r\n core._lineBreaker.style.display = 'none';\r\n core._variable._lineBreakComp = null;\r\n\r\n const focusEl = isList ? format : format.firstChild;\r\n core.setRange(focusEl, 1, focusEl, 1);\r\n // history stack\r\n core.history.push(false);\r\n },\r\n\r\n _resizeObserver: null,\r\n _toolbarObserver: null,\r\n _addEvent: function () {\r\n const eventWysiwyg = options.iframe ? core._ww : context.element.wysiwyg;\r\n if (util.isResizeObserverSupported) {\r\n this._resizeObserver = new _w.ResizeObserver(function(entries) {\r\n core.__callResizeFunction(-1, entries[0]);\r\n });\r\n }\r\n\r\n /** toolbar event */\r\n context.element.toolbar.addEventListener('mousedown', event._buttonsEventHandler, false);\r\n context.element._menuTray.addEventListener('mousedown', event._buttonsEventHandler, false);\r\n context.element.toolbar.addEventListener('click', event.onClick_toolbar, false);\r\n /** editor area */\r\n eventWysiwyg.addEventListener('mousedown', event.onMouseDown_wysiwyg, false);\r\n eventWysiwyg.addEventListener('click', event.onClick_wysiwyg, false);\r\n eventWysiwyg.addEventListener(util.isIE ? 'textinput' : 'input', event.onInput_wysiwyg, false);\r\n eventWysiwyg.addEventListener('keydown', event.onKeyDown_wysiwyg, false);\r\n eventWysiwyg.addEventListener('keyup', event.onKeyUp_wysiwyg, false);\r\n eventWysiwyg.addEventListener('paste', event.onPaste_wysiwyg, false);\r\n eventWysiwyg.addEventListener('copy', event.onCopy_wysiwyg, false);\r\n eventWysiwyg.addEventListener('cut', event.onCut_wysiwyg, false);\r\n eventWysiwyg.addEventListener('drop', event.onDrop_wysiwyg, false);\r\n eventWysiwyg.addEventListener('scroll', event.onScroll_wysiwyg, false);\r\n eventWysiwyg.addEventListener('focus', event.onFocus_wysiwyg, false);\r\n eventWysiwyg.addEventListener('blur', event.onBlur_wysiwyg, false);\r\n\r\n /** line breaker */\r\n event._lineBreakerBind = { a: event._onLineBreak.bind(''), t: event._onLineBreak.bind('t'), b: event._onLineBreak.bind('b') };\r\n eventWysiwyg.addEventListener('mousemove', event.onMouseMove_wysiwyg, false);\r\n core._lineBreakerButton.addEventListener('mousedown', event._onMouseDown_lineBreak, false);\r\n core._lineBreakerButton.addEventListener('click', event._lineBreakerBind.a, false);\r\n context.element.lineBreaker_t.addEventListener('mousedown', event._lineBreakerBind.t, false);\r\n context.element.lineBreaker_b.addEventListener('mousedown', event._lineBreakerBind.b, false);\r\n\r\n /** Events are registered mobile. */\r\n eventWysiwyg.addEventListener('touchstart', event.onMouseDown_wysiwyg, {passive: true, useCapture: false});\r\n eventWysiwyg.addEventListener('touchend', event.onClick_wysiwyg, {passive: true, useCapture: false});\r\n \r\n /** code view area auto line */\r\n if (options.height === 'auto' && !options.codeMirrorEditor) {\r\n context.element.code.addEventListener('keydown', event._codeViewAutoHeight, false);\r\n context.element.code.addEventListener('keyup', event._codeViewAutoHeight, false);\r\n context.element.code.addEventListener('paste', event._codeViewAutoHeight, false);\r\n }\r\n\r\n /** resizingBar */\r\n if (context.element.resizingBar) {\r\n if (/\\d+/.test(options.height) && options.resizeEnable) {\r\n context.element.resizingBar.addEventListener('mousedown', event.onMouseDown_resizingBar, false);\r\n } else {\r\n util.addClass(context.element.resizingBar, 'se-resizing-none');\r\n }\r\n }\r\n \r\n /** set response toolbar */\r\n event._setResponsiveToolbar();\r\n\r\n /** responsive toolbar observer */\r\n if (util.isResizeObserverSupported) this._toolbarObserver = new _w.ResizeObserver(core.resetResponsiveToolbar);\r\n \r\n /** window event */\r\n _w.addEventListener('resize', event.onResize_window, false);\r\n if (options.stickyToolbar > -1) {\r\n _w.addEventListener('scroll', event.onScroll_window, false);\r\n }\r\n },\r\n\r\n _removeEvent: function () {\r\n const eventWysiwyg = options.iframe ? core._ww : context.element.wysiwyg;\r\n\r\n context.element.toolbar.removeEventListener('mousedown', event._buttonsEventHandler);\r\n context.element._menuTray.removeEventListener('mousedown', event._buttonsEventHandler);\r\n context.element.toolbar.removeEventListener('click', event.onClick_toolbar);\r\n\r\n eventWysiwyg.removeEventListener('mousedown', event.onMouseDown_wysiwyg);\r\n eventWysiwyg.removeEventListener('click', event.onClick_wysiwyg);\r\n eventWysiwyg.removeEventListener(util.isIE ? 'textinput' : 'input', event.onInput_wysiwyg);\r\n eventWysiwyg.removeEventListener('keydown', event.onKeyDown_wysiwyg);\r\n eventWysiwyg.removeEventListener('keyup', event.onKeyUp_wysiwyg);\r\n eventWysiwyg.removeEventListener('paste', event.onPaste_wysiwyg);\r\n eventWysiwyg.removeEventListener('copy', event.onCopy_wysiwyg);\r\n eventWysiwyg.removeEventListener('cut', event.onCut_wysiwyg);\r\n eventWysiwyg.removeEventListener('drop', event.onDrop_wysiwyg);\r\n eventWysiwyg.removeEventListener('scroll', event.onScroll_wysiwyg);\r\n\r\n eventWysiwyg.removeEventListener('mousemove', event.onMouseMove_wysiwyg);\r\n core._lineBreakerButton.removeEventListener('mousedown', event._onMouseDown_lineBreak);\r\n core._lineBreakerButton.removeEventListener('click', event._lineBreakerBind.a);\r\n context.element.lineBreaker_t.removeEventListener('mousedown', event._lineBreakerBind.t);\r\n context.element.lineBreaker_b.removeEventListener('mousedown', event._lineBreakerBind.b);\r\n event._lineBreakerBind = null;\r\n \r\n eventWysiwyg.removeEventListener('touchstart', event.onMouseDown_wysiwyg, {passive: true, useCapture: false});\r\n eventWysiwyg.removeEventListener('touchend', event.onClick_wysiwyg, {passive: true, useCapture: false});\r\n eventWysiwyg.removeEventListener('focus', event.onFocus_wysiwyg);\r\n eventWysiwyg.removeEventListener('blur', event.onBlur_wysiwyg);\r\n\r\n context.element.code.removeEventListener('keydown', event._codeViewAutoHeight);\r\n context.element.code.removeEventListener('keyup', event._codeViewAutoHeight);\r\n context.element.code.removeEventListener('paste', event._codeViewAutoHeight);\r\n \r\n if (context.element.resizingBar) {\r\n context.element.resizingBar.removeEventListener('mousedown', event.onMouseDown_resizingBar);\r\n }\r\n \r\n if (event._resizeObserver) {\r\n event._resizeObserver.unobserve(context.element.wysiwygFrame);\r\n event._resizeObserver = null;\r\n }\r\n\r\n if (event._toolbarObserver) {\r\n event._toolbarObserver.unobserve(context.element._toolbarShadow);\r\n event._toolbarObserver = null;\r\n }\r\n\r\n _w.removeEventListener('resize', event.onResize_window);\r\n _w.removeEventListener('scroll', event.onScroll_window);\r\n },\r\n\r\n _setResponsiveToolbar: function () {\r\n if (_responsiveButtons.length === 0) {\r\n _responsiveButtons = null;\r\n return;\r\n }\r\n\r\n event._responsiveCurrentSize = 'default';\r\n const sizeArray = event._responsiveButtonSize = [];\r\n const buttonsObj = event._responsiveButtons = {default: _responsiveButtons[0]};\r\n for (let i = 1, len = _responsiveButtons.length, size, buttonGroup; i < len; i++) {\r\n buttonGroup = _responsiveButtons[i];\r\n size = buttonGroup[0] * 1;\r\n sizeArray.push(size);\r\n buttonsObj[size] = buttonGroup[1];\r\n }\r\n\r\n sizeArray.sort(function (a, b) { return a - b; }).unshift('default');\r\n }\r\n };\r\n\r\n /** functions */\r\n const functions = {\r\n /**\r\n * @description Core, Util object\r\n */\r\n core: core,\r\n util: util,\r\n\r\n /**\r\n * @description Event functions\r\n * @param {Object} e Event Object\r\n * @param {Object} core Core object\r\n */\r\n onload: null,\r\n onScroll: null,\r\n onMouseDown: null,\r\n onClick: null,\r\n onInput: null,\r\n onKeyDown: null,\r\n onKeyUp: null,\r\n onCopy: null,\r\n onCut: null,\r\n onFocus: null,\r\n \r\n /**\r\n * @description Event functions\r\n * @param {Object} e Event Object\r\n * @param {Object} core Core object\r\n * @param {String} contents Current contents\r\n */\r\n onBlur: null,\r\n\r\n /**\r\n * @description Event functions\r\n * @param {String} contents Current contents\r\n * @param {Object} core Core object\r\n */\r\n onChange: null,\r\n\r\n /**\r\n * @description Event functions\r\n * @param {String} contents Current contents\r\n * @param {Object} core Core object\r\n */\r\n onSave: null,\r\n\r\n /**\r\n * @description Event functions (drop, paste)\r\n * When false is returned, the default behavior is stopped.\r\n * If the string is returned, the cleanData value is modified to the return value.\r\n * @param {Object} e Event object.\r\n * @param {String} cleanData HTML string modified for editor format.\r\n * @param {Boolean} maxChartCount option (true if max character is exceeded)\r\n * @param {Object} core Core object\r\n * @returns {Boolean|String}\r\n */\r\n onDrop: null,\r\n onPaste: null,\r\n\r\n /**\r\n * @description Called just before the inline toolbar is positioned and displayed on the screen.\r\n * @param {Element} toolbar Toolbar Element\r\n * @param {Object} context The editor's context object (editor.getContext())\r\n * @param {Object} core Core object\r\n */\r\n showInline: null,\r\n\r\n /**\r\n * @description Called just after the controller is positioned and displayed on the screen.\r\n * controller - editing elements displayed on the screen [image resizing, table editor, link editor..]]\r\n * @param {String} name The name of the plugin that called the controller\r\n * @param {Array} controllers Array of Controller elements\r\n * @param {Object} core Core object\r\n */\r\n showController: null,\r\n\r\n /**\r\n * @description An event when toggling between code view and wysiwyg view.\r\n * @param {Boolean} isCodeView Whether the current code view mode\r\n * @param {Object} core Core object\r\n */\r\n toggleCodeView: null,\r\n\r\n /**\r\n * @description An event when toggling full screen.\r\n * @param {Boolean} isFullScreen Whether the current full screen mode\r\n * @param {Object} core Core object\r\n */\r\n toggleFullScreen: null,\r\n\r\n /**\r\n * @description It replaces the default callback function of the image upload\r\n * @param {Object} response Response object\r\n * @param {Object} info Input information\r\n * - linkValue: Link url value\r\n * - linkNewWindow: Open in new window Check Value\r\n * - inputWidth: Value of width input\r\n * - inputHeight: Value of height input\r\n * - align: Align Check Value\r\n * - isUpdate: Update image if true, create image if false\r\n * - element: If isUpdate is true, the currently selected image.\r\n * @param {Object} core Core object\r\n */\r\n imageUploadHandler: null,\r\n\r\n /**\r\n * @description It replaces the default callback function of the video upload\r\n * @param xmlHttp xmlHttpRequest object\r\n * @param info Input information\r\n * - inputWidth: Value of width input\r\n * - inputHeight: Value of height input\r\n * - align: Align Check Value\r\n * - isUpdate: Update video if true, create video if false\r\n * - element: If isUpdate is true, the currently selected video.\r\n * @param core Core object\r\n */\r\n videoUploadHandler: null,\r\n\r\n /**\r\n * @description It replaces the default callback function of the audio upload\r\n * @param xmlHttp xmlHttpRequest object\r\n * @param info Input information\r\n * - isUpdate: Update audio if true, create audio if false\r\n * - element: If isUpdate is true, the currently selected audio.\r\n * @param core Core object\r\n */\r\n audioUploadHandler: null,\r\n\r\n /**\r\n * @description Called before the image is uploaded\r\n * If true is returned, the internal upload process runs normally.\r\n * If false is returned, no image upload is performed.\r\n * If new fileList are returned, replaced the previous fileList\r\n * If undefined is returned, it waits until \"uploadHandler\" is executed.\r\n * @param {Array} files Files array\r\n * @param {Object} info info: {\r\n * - linkValue: Link url value\r\n * - linkNewWindow: Open in new window Check Value\r\n * - inputWidth: Value of width input\r\n * - inputHeight: Value of height input\r\n * - align: Align Check Value\r\n * - isUpdate: Update image if true, create image if false\r\n * - element: If isUpdate is true, the currently selected image.\r\n * }\r\n * @param {Object} core Core object\r\n * @param {Function} uploadHandler If undefined is returned, it waits until \"uploadHandler\" is executed.\r\n * \"uploadHandler\" is an upload function with \"core\" and \"info\" bound.\r\n * [upload files] : uploadHandler(files or [new File(...),])\r\n * [error] : uploadHandler(\"Error message\")\r\n * [Just finish] : uploadHandler()\r\n * [directly register] : uploadHandler(response) // Same format as \"imageUploadUrl\" response\r\n * ex) {\r\n * // \"errorMessage\": \"insert error message\",\r\n * \"result\": [ { \"url\": \"...\", \"name\": \"...\", \"size\": \"999\" }, ]\r\n * }\r\n * @returns {Boolean|Array|undefined}\r\n */\r\n onImageUploadBefore: null,\r\n /**\r\n * @description Called before the video is uploaded\r\n * If true is returned, the internal upload process runs normally.\r\n * If false is returned, no video(iframe, video) upload is performed.\r\n * If new fileList are returned, replaced the previous fileList\r\n * If undefined is returned, it waits until \"uploadHandler\" is executed.\r\n * @param {Array} files Files array\r\n * @param {Object} info info: {\r\n * - inputWidth: Value of width input\r\n * - inputHeight: Value of height input\r\n * - align: Align Check Value\r\n * - isUpdate: Update video if true, create video if false\r\n * - element: If isUpdate is true, the currently selected video.\r\n * }\r\n * @param {Object} core Core object\r\n * @param {Function} uploadHandler If undefined is returned, it waits until \"uploadHandler\" is executed.\r\n * \"uploadHandler\" is an upload function with \"core\" and \"info\" bound.\r\n * [upload files] : uploadHandler(files or [new File(...),])\r\n * [error] : uploadHandler(\"Error message\")\r\n * [Just finish] : uploadHandler()\r\n * [directly register] : uploadHandler(response) // Same format as \"videoUploadUrl\" response\r\n * ex) {\r\n * // \"errorMessage\": \"insert error message\",\r\n * \"result\": [ { \"url\": \"...\", \"name\": \"...\", \"size\": \"999\" }, ]\r\n * }\r\n * @returns {Boolean|Array|undefined}\r\n */\r\n onVideoUploadBefore: null,\r\n /**\r\n * @description Called before the audio is uploaded\r\n * If true is returned, the internal upload process runs normally.\r\n * If false is returned, no audio upload is performed.\r\n * If new fileList are returned, replaced the previous fileList\r\n * If undefined is returned, it waits until \"uploadHandler\" is executed.\r\n * @param {Array} files Files array\r\n * @param {Object} info info: {\r\n * - isUpdate: Update audio if true, create audio if false\r\n * - element: If isUpdate is true, the currently selected audio.\r\n * }\r\n * @param {Object} core Core object\r\n * @param {Function} uploadHandler If undefined is returned, it waits until \"uploadHandler\" is executed.\r\n * \"uploadHandler\" is an upload function with \"core\" and \"info\" bound.\r\n * [upload files] : uploadHandler(files or [new File(...),])\r\n * [error] : uploadHandler(\"Error message\")\r\n * [Just finish] : uploadHandler()\r\n * [directly register] : uploadHandler(response) // Same format as \"audioUploadUrl\" response\r\n * ex) {\r\n * // \"errorMessage\": \"insert error message\",\r\n * \"result\": [ { \"url\": \"...\", \"name\": \"...\", \"size\": \"999\" }, ]\r\n * }\r\n * @returns {Boolean|Array|undefined}\r\n */\r\n onAudioUploadBefore: null,\r\n\r\n /**\r\n * @description Called when the image is uploaded, updated, deleted\r\n * @param {Element} targetElement Target element\r\n * @param {Number} index Uploaded index\r\n * @param {String} state Upload status ('create', 'update', 'delete')\r\n * @param {Object} info Image info object\r\n * - index: data index\r\n * - name: file name\r\n * - size: file size\r\n * - select: select function\r\n * - delete: delete function\r\n * - element: target element\r\n * - src: src attribute of tag\r\n * @param {Number} remainingFilesCount Count of remaining files to upload (0 when added as a url)\r\n * @param {Object} core Core object\r\n */\r\n onImageUpload: null,\r\n /**\r\n * @description Called when the video(iframe, video) is is uploaded, updated, deleted\r\n * -- arguments is same \"onImageUpload\" --\r\n */\r\n onVideoUpload: null,\r\n /**\r\n * @description Called when the audio is is uploaded, updated, deleted\r\n * -- arguments is same \"onImageUpload\" --\r\n */\r\n onAudioUpload: null,\r\n\r\n /**\r\n * @description Called when the image is upload failed\r\n * @param {String} errorMessage Error message\r\n * @param {Object} result Response Object\r\n * @param {Object} core Core object\r\n * @returns {Boolean}\r\n */\r\n onImageUploadError: null,\r\n /**\r\n * @description Called when the video(iframe, video) upload failed\r\n * -- arguments is same \"onImageUploadError\" --\r\n */\r\n onVideoUploadError: null,\r\n /**\r\n * @description Called when the audio upload failed\r\n * -- arguments is same \"onImageUploadError\" --\r\n */\r\n onAudioUploadError: null,\r\n\r\n /**\r\n * @description Called when the editor is resized using the bottom bar\r\n */\r\n onResizeEditor: null,\r\n\r\n /**\r\n * @description Called after the \"setToolbarButtons\" invocation.\r\n * Can be used to tweak buttons properties (useful for custom buttons)\r\n * @param {Array} buttonList Button list \r\n * @param {Object} core Core object\r\n */\r\n onSetToolbarButtons: null,\r\n\r\n /**\r\n * @description Reset the buttons on the toolbar. (Editor is not reloaded)\r\n * You cannot set a new plugin for the button.\r\n * @param {Array} buttonList Button list \r\n */\r\n setToolbarButtons: function (buttonList) {\r\n core.submenuOff();\r\n core.containerOff();\r\n core.moreLayerOff();\r\n \r\n const newToolbar = _Constructor._createToolBar(_d, buttonList, core.plugins, options);\r\n _responsiveButtons = newToolbar.responsiveButtons;\r\n event._setResponsiveToolbar();\r\n\r\n context.element.toolbar.replaceChild(newToolbar._buttonTray, context.element._buttonTray);\r\n const newContext = _Context(context.element.originElement, core._getConstructed(context.element), options);\r\n\r\n context.element = newContext.element;\r\n context.tool = newContext.tool;\r\n if (options.iframe) context.element.wysiwyg = core._wd.body;\r\n\r\n core._recoverButtonStates();\r\n core._cachingButtons();\r\n core.history._resetCachingButton();\r\n\r\n core.effectNode = null;\r\n if (core.hasFocus) event._applyTagEffects();\r\n if (core.isReadOnly) util.setDisabledButtons(true, core.resizingDisabledButtons);\r\n if (typeof functions.onSetToolbarButtons === 'function') functions.onSetToolbarButtons(newToolbar._buttonTray.querySelectorAll('button'), core);\r\n },\r\n\r\n /**\r\n * @description Add or reset option property (Editor is reloaded)\r\n * @param {Object} _options Options\r\n */\r\n setOptions: function (_options) {\r\n event._removeEvent();\r\n core._resetComponents();\r\n \r\n util.removeClass(core._styleCommandMap.showBlocks, 'active');\r\n util.removeClass(core._styleCommandMap.codeView, 'active');\r\n core._variable.isCodeView = false;\r\n core._iframeAuto = null;\r\n\r\n core.plugins = _options.plugins || core.plugins;\r\n const mergeOptions = [options, _options].reduce(function (init, option) {\r\n for (let key in option) {\r\n if (!util.hasOwn(option, key)) continue;\r\n if (key === 'plugins' && option[key] && init[key]) {\r\n let i = init[key], o = option[key];\r\n i = i.length ? i : _w.Object.keys(i).map(function(name) { return i[name]; });\r\n o = o.length ? o : _w.Object.keys(o).map(function(name) { return o[name]; });\r\n init[key] = (o.filter(function(val) { return i.indexOf(val) === -1; })).concat(i);\r\n } else {\r\n init[key] = option[key];\r\n }\r\n }\r\n return init;\r\n }, {});\r\n\r\n const el = context.element;\r\n const _initHTML = el.wysiwyg.innerHTML;\r\n\r\n // set option\r\n const cons = _Constructor._setOptions(mergeOptions, context, options);\r\n\r\n if (cons.callButtons) {\r\n pluginCallButtons = cons.callButtons;\r\n core.initPlugins = {};\r\n }\r\n\r\n if (cons.plugins) {\r\n core.plugins = plugins = cons.plugins;\r\n }\r\n\r\n // reset context\r\n if (el._menuTray.children.length === 0) this._menuTray = {};\r\n _responsiveButtons = cons.toolbar.responsiveButtons;\r\n core.options = options = mergeOptions;\r\n core.lang = lang = options.lang;\r\n\r\n if (options.iframe) {\r\n el.wysiwygFrame.addEventListener('load', function () {\r\n util._setIframeDocument(this, options);\r\n core._setOptionsInit(el, _initHTML);\r\n });\r\n }\r\n\r\n el.editorArea.appendChild(el.wysiwygFrame);\r\n\r\n if (!options.iframe) {\r\n core._setOptionsInit(el, _initHTML);\r\n }\r\n },\r\n\r\n /**\r\n * @description Set \"options.defaultStyle\" style.\r\n * Define the style of the edit area\r\n * It can also be defined with the \"setOptions\" method, but the \"setDefaultStyle\" method does not render the editor again.\r\n * @param {String} style Style string\r\n */\r\n setDefaultStyle: function (style) {\r\n const newStyles = options._editorStyles = util._setDefaultOptionStyle(options, style);\r\n const el = context.element;\r\n\r\n // top area\r\n el.topArea.style.cssText = newStyles.top;\r\n // code view\r\n el.code.style.cssText = options._editorStyles.frame;\r\n el.code.style.display = 'none';\r\n if (options.height === 'auto') {\r\n el.code.style.overflow = 'hidden';\r\n } else {\r\n el.code.style.overflow = '';\r\n }\r\n // wysiwyg frame\r\n if (!options.iframe) {\r\n el.wysiwygFrame.style.cssText = newStyles.frame + newStyles.editor;\r\n } else {\r\n el.wysiwygFrame.style.cssText = newStyles.frame;\r\n el.wysiwyg.style.cssText = newStyles.editor;\r\n }\r\n },\r\n\r\n /**\r\n * @description Open a notice area\r\n * @param {String} message Notice message\r\n */\r\n noticeOpen: function (message) {\r\n core.notice.open.call(core, message);\r\n },\r\n\r\n /**\r\n * @description Close a notice area\r\n */\r\n noticeClose: function () {\r\n core.notice.close.call(core);\r\n },\r\n\r\n /**\r\n * @description Copying the contents of the editor to the original textarea and execute onSave callback\r\n * * not working during enabled codeView mode\r\n */\r\n save: function () {\r\n const contents = core.getContents(false);\r\n context.element.originElement.value = contents;\r\n event.onSave_wysiwyg(contents, core);\r\n },\r\n\r\n /**\r\n * @description Gets the suneditor's context object. Contains settings, plugins, and cached element objects\r\n * @returns {Object}\r\n */\r\n getContext: function () {\r\n return context;\r\n },\r\n\r\n /**\r\n * @description Gets the contents of the suneditor\r\n * * not working during enabled codeView mode\r\n * @param {Boolean} onlyContents - Return only the contents of the body without headers when the \"fullPage\" option is true\r\n * @returns {String}\r\n */\r\n getContents: function (onlyContents) {\r\n return core.getContents(onlyContents);\r\n },\r\n\r\n /**\r\n * @description Gets only the text of the suneditor contents\r\n * * not working during enabled codeView mode\r\n * @returns {String}\r\n */\r\n getText: function () {\r\n return context.element.wysiwyg.textContent;\r\n },\r\n\r\n /**\r\n * @description Get the editor's number of characters or binary data size.\r\n * You can use the \"charCounterType\" option format.\r\n * @param {String|null} charCounterType options - charCounterType ('char', 'byte', 'byte-html')\r\n * If argument is no value, the currently set \"charCounterType\" option is used.\r\n * @returns {Number}\r\n */\r\n getCharCount: function (charCounterType) {\r\n charCounterType = typeof charCounterType === 'string' ? charCounterType : options.charCounterType;\r\n return core.getCharLength((core._charTypeHTML ? context.element.wysiwyg.innerHTML : context.element.wysiwyg.textContent), charCounterType);\r\n },\r\n\r\n /**\r\n * @description Gets uploaded images informations\r\n * - index: data index\r\n * - name: file name\r\n * - size: file size\r\n * - select: select function\r\n * - delete: delete function\r\n * - element: target element\r\n * - src: src attribute of tag\r\n * @returns {Array}\r\n */\r\n getImagesInfo: function () {\r\n return context.image ? context.image._infoList : [];\r\n },\r\n \r\n /**\r\n * @description Gets uploaded files(plugin using fileManager) information list.\r\n * image: [img], video: [video, iframe], audio: [audio]\r\n * When the argument value is 'image', it is the same function as \"getImagesInfo\".\r\n * - index: data index\r\n * - name: file name\r\n * - size: file size\r\n * - select: select function\r\n * - delete: delete function\r\n * - element: target element\r\n * - src: src attribute of tag\r\n * @param {String} pluginName Plugin name (image, video, audio)\r\n * @returns {Array}\r\n */\r\n getFilesInfo: function (pluginName) {\r\n return context[pluginName] ? context[pluginName]._infoList : [];\r\n },\r\n\r\n /**\r\n * @description Upload images using image plugin\r\n * @param {FileList} files FileList\r\n */\r\n insertImage: function (files) {\r\n if (!core.plugins.image || !files) return;\r\n\r\n if (!core.initPlugins.image) core.callPlugin('image', core.plugins.image.submitAction.bind(core, files), null);\r\n else core.plugins.image.submitAction.call(core, files);\r\n core.focus();\r\n },\r\n\r\n /**\r\n * @description Inserts an HTML element or HTML string or plain string at the current cursor position\r\n * @param {Element|String} html HTML Element or HTML string or plain string\r\n * @param {Boolean} notCleaningData If true, inserts the HTML string without refining it with core.cleanHTML.\r\n * @param {Boolean} checkCharCount If true, if \"options.maxCharCount\" is exceeded when \"element\" is added, null is returned without addition.\r\n * @param {Boolean} rangeSelection If true, range select the inserted node.\r\n */\r\n insertHTML: function (html, notCleaningData, checkCharCount, rangeSelection) {\r\n if (!context.element.wysiwygFrame.contains(core.getSelection().focusNode)) core.focus();\r\n\r\n if (typeof html === 'string') {\r\n if (!notCleaningData) html = core.cleanHTML(html, null, null);\r\n try {\r\n if (util.isListCell(util.getFormatElement(core.getSelectionNode(), null))) {\r\n const dom = _d.createRange().createContextualFragment(html);\r\n const domTree = dom.childNodes;\r\n if (core._isFormatData(domTree)) html = core._convertListCell(domTree);\r\n }\r\n\r\n const dom = _d.createRange().createContextualFragment(html);\r\n const domTree = dom.childNodes;\r\n\r\n if (checkCharCount) {\r\n const type = core._charTypeHTML ? 'outerHTML' : 'textContent';\r\n let checkHTML = '';\r\n for (let i = 0, len = domTree.length; i < len; i++) {\r\n checkHTML += domTree[i][type];\r\n }\r\n if (!core.checkCharCount(checkHTML, null)) return;\r\n }\r\n\r\n let c, a, t, prev, firstCon;\r\n while ((c = domTree[0])) {\r\n if (prev && prev.nodeType === 3 && a && a.nodeType === 1 && util.isBreak(c)) {\r\n prev = c;\r\n util.removeItem(c);\r\n continue;\r\n }\r\n t = core.insertNode(c, a, false);\r\n a = t.container || t;\r\n if (!firstCon) firstCon = t;\r\n prev = c;\r\n }\r\n\r\n if (prev.nodeType === 3 && a.nodeType === 1) a = prev;\r\n const offset = a.nodeType === 3 ? (t.endOffset || a.textContent.length): a.childNodes.length;\r\n if (rangeSelection) core.setRange(firstCon.container || firstCon, firstCon.startOffset || 0, a, offset);\r\n else core.setRange(a, offset, a, offset);\r\n } catch (error) {\r\n if (core.isDisabled || core.isReadOnly) return;\r\n console.warn('[SUNEDITOR.insertHTML.fail] ' + error);\r\n core.execCommand('insertHTML', false, html);\r\n }\r\n } else {\r\n if (util.isComponent(html)) {\r\n core.insertComponent(html, false, checkCharCount, false);\r\n } else {\r\n let afterNode = null;\r\n if (util.isFormatElement(html) || util.isMedia(html)) {\r\n afterNode = util.getFormatElement(core.getSelectionNode(), null);\t\r\n }\r\n core.insertNode(html, afterNode, checkCharCount);\r\n }\r\n }\r\n \r\n core.effectNode = null;\r\n core.focus();\r\n\r\n // history stack\r\n core.history.push(false);\r\n },\r\n\r\n /**\r\n * @description Change the contents of the suneditor\r\n * @param {String|undefined} contents Contents to Input\r\n */\r\n setContents: function (contents) {\r\n core.setContents(contents);\r\n },\r\n\r\n /**\r\n * @description Add contents to the suneditor\r\n * @param {String} contents Contents to Input\r\n */\r\n appendContents: function (contents) {\r\n const convertValue = core.convertContentsForEditor(contents);\r\n \r\n if (!core._variable.isCodeView) {\r\n const temp = util.createElement('DIV');\r\n temp.innerHTML = convertValue;\r\n\r\n const wysiwyg = context.element.wysiwyg;\r\n const children = temp.children;\r\n for (let i = 0, len = children.length; i < len; i++) {\r\n if (children[i]) {\r\n wysiwyg.appendChild(children[i]); \r\n }\r\n }\r\n } else {\r\n core._setCodeView(core._getCodeView() + '\\n' + core.convertHTMLForCodeView(convertValue, false));\r\n }\r\n\r\n // history stack\r\n core.history.push(false);\r\n },\r\n\r\n /**\r\n * @description Switch to or off \"ReadOnly\" mode.\r\n * @param {Boolean} value \"readOnly\" boolean value.\r\n */\r\n readOnly: function (value) {\r\n core.isReadOnly = value;\r\n \r\n util.setDisabledButtons(!!value, core.resizingDisabledButtons);\r\n\r\n if (value) {\r\n /** off menus */\r\n core.controllersOff();\r\n if (core.submenuActiveButton && core.submenuActiveButton.disabled) core.submenuOff();\r\n if (core._moreLayerActiveButton && core._moreLayerActiveButton.disabled) core.moreLayerOff();\r\n if (core.containerActiveButton && core.containerActiveButton.disabled) core.containerOff();\r\n if (core.modalForm) core.plugins.dialog.close.call(core);\r\n\r\n context.element.code.setAttribute(\"readOnly\", \"true\");\r\n util.addClass(context.element.wysiwygFrame, 'se-read-only');\r\n } else {\r\n context.element.code.removeAttribute(\"readOnly\");\r\n util.removeClass(context.element.wysiwygFrame, 'se-read-only');\r\n }\r\n\r\n if (options.codeMirrorEditor) options.codeMirrorEditor.setOption('readOnly', !!value);\r\n },\r\n\r\n /**\r\n * @description Disable the suneditor\r\n */\r\n disable: function () {\r\n this.toolbar.disable();\r\n this.wysiwyg.disable();\r\n },\r\n\r\n /**\r\n * @description Provided for backward compatibility and will be removed in 3.0.0 version\r\n */\r\n disabled: function () {\r\n this.disable();\r\n },\r\n\r\n /**\r\n * @description Enable the suneditor\r\n */\r\n enable: function () {\r\n this.toolbar.enable();\r\n this.wysiwyg.enable();\r\n },\r\n\r\n /**\r\n * @description Provided for backward compatibility and will be removed in 3.0.0 version\r\n */\r\n enabled: function () {\r\n this.enable();\r\n },\r\n\r\n /**\r\n * @description Show the suneditor\r\n */\r\n show: function () {\r\n const topAreaStyle = context.element.topArea.style;\r\n if (topAreaStyle.display === 'none') topAreaStyle.display = options.display;\r\n },\r\n\r\n /**\r\n * @description Hide the suneditor\r\n */\r\n hide: function () {\r\n context.element.topArea.style.display = 'none';\r\n },\r\n\r\n /**\r\n * @description Destroy the suneditor\r\n */\r\n destroy: function () {\r\n /** off menus */\r\n core.submenuOff();\r\n core.containerOff();\r\n core.controllersOff();\r\n if (core.notice) core.notice.close.call(core);\r\n if (core.modalForm) core.plugins.dialog.close.call(core);\r\n\r\n /** remove history */\r\n core.history._destroy();\r\n\r\n /** remove event listeners */\r\n event._removeEvent();\r\n \r\n /** remove element */\r\n util.removeItem(context.element.toolbar);\r\n util.removeItem(context.element.topArea);\r\n\r\n /** remove object reference */\r\n for (let k in core.functions) { if (util.hasOwn(core, k)) delete core.functions[k]; }\r\n for (let k in core) { if (util.hasOwn(core, k)) delete core[k]; }\r\n for (let k in event) { if (util.hasOwn(event, k)) delete event[k]; }\r\n for (let k in context) { if (util.hasOwn(context, k)) delete context[k]; }\r\n for (let k in pluginCallButtons) { if (util.hasOwn(pluginCallButtons, k)) delete pluginCallButtons[k]; }\r\n \r\n /** remove user object */\r\n for (let k in this) { if (util.hasOwn(this, k)) delete this[k]; }\r\n },\r\n\r\n /**\r\n * @description Toolbar methods\r\n */\r\n toolbar: {\r\n /**\r\n * @description Disable the toolbar\r\n */\r\n disable: function () {\r\n /** off menus */\r\n core.submenuOff();\r\n core.moreLayerOff();\r\n core.containerOff();\r\n\r\n context.tool.cover.style.display = 'block';\r\n },\r\n\r\n /**\r\n * @description Provided for backward compatibility and will be removed in 3.0.0 version\r\n */\r\n disabled: function () {\r\n this.disable();\r\n },\r\n\r\n /**\r\n * @description Enable the toolbar\r\n */\r\n enable: function () {\r\n context.tool.cover.style.display = 'none';\r\n },\r\n\r\n /**\r\n * @description Provided for backward compatibility and will be removed in 3.0.0 version\r\n */\r\n enabled: function () {\r\n this.enable();\r\n },\r\n\r\n /**\r\n * @description Show the toolbar\r\n */\r\n show: function () {\r\n if (core._isInline) {\r\n event._showToolbarInline();\r\n } else {\r\n context.element.toolbar.style.display = '';\r\n context.element._stickyDummy.style.display = '';\r\n }\r\n\r\n event.onResize_window();\r\n },\r\n\r\n /**\r\n * @description Hide the toolbar\r\n */\r\n hide: function () {\r\n if (core._isInline) {\r\n event._hideToolbar();\r\n } else {\r\n context.element.toolbar.style.display = 'none';\r\n context.element._stickyDummy.style.display = 'none';\r\n }\r\n\r\n event.onResize_window();\r\n },\r\n },\r\n\r\n /**\r\n * @description Wysiwyg methods\r\n */\r\n wysiwyg: {\r\n /**\r\n * @description Disable the wysiwyg area\r\n */\r\n disable: function () {\r\n /** off menus */\r\n core.controllersOff();\r\n if (core.modalForm) core.plugins.dialog.close.call(core);\r\n\r\n context.element.wysiwyg.setAttribute('contenteditable', false);\r\n core.isDisabled = true;\r\n\r\n if (options.codeMirrorEditor) {\r\n options.codeMirrorEditor.setOption('readOnly', true);\r\n } else {\r\n context.element.code.setAttribute('disabled', 'disabled');\r\n }\r\n },\r\n\r\n /**\r\n * @description Enable the wysiwyg area\r\n */\r\n enable: function () {\r\n context.element.wysiwyg.setAttribute('contenteditable', true);\r\n core.isDisabled = false;\r\n\r\n if (options.codeMirrorEditor) {\r\n options.codeMirrorEditor.setOption('readOnly', false);\r\n } else {\r\n context.element.code.removeAttribute('disabled');\r\n }\r\n },\r\n }\r\n };\r\n\r\n /************ Core init ************/\r\n // functions\r\n core.functions = functions;\r\n core.options = options;\r\n\r\n // Create to sibling node\r\n let contextEl = context.element;\r\n let originEl = contextEl.originElement;\r\n let topEl = contextEl.topArea;\r\n originEl.style.display = 'none';\r\n topEl.style.display = 'block';\r\n\r\n // init\r\n if (options.iframe) {\r\n contextEl.wysiwygFrame.addEventListener('load', function () {\r\n util._setIframeDocument(this, options);\r\n core._editorInit(false, options.value);\r\n options.value = null;\r\n });\r\n }\r\n\r\n // insert editor element\r\n if (typeof originEl.nextElementSibling === 'object') {\r\n originEl.parentNode.insertBefore(topEl, originEl.nextElementSibling);\r\n } else {\r\n originEl.parentNode.appendChild(topEl);\r\n }\r\n\r\n contextEl.editorArea.appendChild(contextEl.wysiwygFrame);\r\n contextEl = originEl = topEl = null;\r\n\r\n // init\r\n if (!options.iframe) {\r\n core._editorInit(false, options.value);\r\n options.value = null;\r\n }\r\n\r\n return functions;\r\n}","/*\n * wysiwyg web editor\n *\n * suneditor.js\n * Copyright 2019 JiHong Lee.\n * MIT license.\n */\n'use strict';\n\nexport default function (core, change) {\n const _w = core._w;\n const util = core.util;\n const delayTime = core.options.historyStackDelayTime;\n let editor = core.context.element;\n let undo = core.context.tool.undo;\n let redo = core.context.tool.redo;\n\n let pushDelay = null;\n let stackIndex = 0;\n let stack = [];\n\n function setContentsFromStack () {\n const item = stack[stackIndex];\n editor.wysiwyg.innerHTML = item.contents;\n\n core.setRange(util.getNodeFromPath(item.s.path, editor.wysiwyg), item.s.offset, util.getNodeFromPath(item.e.path, editor.wysiwyg), item.e.offset);\n core.focus();\n\n if (stack.length <= 1) {\n if (undo) undo.setAttribute('disabled', true);\n if (redo) redo.setAttribute('disabled', true);\n } else {\n if (stackIndex === 0) {\n if (undo) undo.setAttribute('disabled', true);\n if (redo) redo.removeAttribute('disabled');\n } else if (stackIndex === stack.length - 1) {\n if (undo) undo.removeAttribute('disabled');\n if (redo) redo.setAttribute('disabled', true);\n } else {\n if (undo) undo.removeAttribute('disabled');\n if (redo) redo.removeAttribute('disabled');\n }\n }\n\n core.controllersOff();\n core._checkComponents();\n core._setCharCount();\n core._resourcesStateChange();\n \n // onChange\n change();\n }\n\n function pushStack () {\n core._checkComponents();\n const current = editor.wysiwyg.innerHTML;\n if (!current || (!!stack[stackIndex] && current === stack[stackIndex].contents)) return;\n\n stackIndex++;\n const range = core._variable._range;\n\n if (stack.length > stackIndex) {\n stack = stack.slice(0, stackIndex);\n if (redo) redo.setAttribute('disabled', true);\n }\n\n if (!range) {\n stack[stackIndex] = {\n contents: current,\n s: { path: [0, 0], offset: [0, 0] },\n e: { path: 0, offset: 0 }\n };\n } else {\n stack[stackIndex] = {\n contents: current,\n s: {\n path: util.getNodePath(range.startContainer, null, null),\n offset: range.startOffset\n },\n e: {\n path: util.getNodePath(range.endContainer, null, null),\n offset: range.endOffset\n }\n };\n }\n\n if (stackIndex === 1 && undo) undo.removeAttribute('disabled');\n\n core._setCharCount();\n // onChange\n change();\n }\n\n return {\n /**\n * @description History stack\n */\n stack: stack,\n\n /**\n * @description Saving the current status to the history object stack\n * If \"delay\" is true, it will be saved after (options.historyStackDelayTime || 400) miliseconds\n * If the function is called again with the \"delay\" argument true before it is saved, the delay time is renewal\n * You can specify the delay time by sending a number.\n * @param {Boolean|Number} delay If true, Add stack without delay time.\n */\n push: function (delay) {\n _w.setTimeout(core._resourcesStateChange.bind(core));\n const time = typeof delay === 'number' ? (delay > 0 ? delay : 0) : (!delay ? 0 : delayTime);\n \n if (!time || pushDelay) {\n _w.clearTimeout(pushDelay);\n if (!time) {\n pushStack();\n return;\n }\n }\n\n pushDelay = _w.setTimeout(function () {\n _w.clearTimeout(pushDelay);\n pushDelay = null;\n pushStack();\n }, time);\n },\n\n /**\n * @description Undo function\n */\n undo: function () {\n if (stackIndex > 0) {\n stackIndex--;\n setContentsFromStack();\n }\n },\n\n /**\n * @description Redo function\n */\n redo: function () {\n if (stack.length - 1 > stackIndex) {\n stackIndex++;\n setContentsFromStack();\n }\n },\n\n /**\n * @description Go to the history stack for that index.\n * If \"index\" is -1, go to the last stack\n */\n go: function (index) {\n stackIndex = index < 0 ? (stack.length - 1) : index;\n setContentsFromStack();\n },\n\n /**\n * @description Get the current history stack index.\n * @returns {Number} Current Stack index\n */\n getCurrentIndex: function () {\n return stackIndex;\n },\n \n /**\n * @description Reset the history object\n */\n reset: function (ignoreChangeEvent) {\n if (undo) undo.setAttribute('disabled', true);\n if (redo) redo.setAttribute('disabled', true);\n core._variable.isChanged = false;\n if (core.context.tool.save) core.context.tool.save.setAttribute('disabled', true);\n \n stack.splice(0);\n stackIndex = 0;\n\n // pushStack\n stack[stackIndex] = {\n contents: core.getContents(true),\n s: {\n path: [0, 0],\n offset: 0\n },\n e: {\n path: [0, 0],\n offset: 0\n }\n };\n\n if (!ignoreChangeEvent) change();\n },\n\n /**\n * @description Reset the disabled state of the buttons to fit the current stack.\n * @private\n */\n _resetCachingButton: function () {\n editor = core.context.element;\n undo = core.context.tool.undo;\n redo = core.context.tool.redo;\n\n if (stackIndex === 0) {\n if (undo) undo.setAttribute('disabled', true);\n if (redo && stackIndex === stack.length - 1) redo.setAttribute('disabled', true);\n core._variable.isChanged = false;\n if (core.context.tool.save) core.context.tool.save.setAttribute('disabled', true);\n } else if (stackIndex === stack.length - 1) {\n if (redo) redo.setAttribute('disabled', true);\n }\n },\n\n /**\n * @description Remove all stacks and remove the timeout function.\n * @private\n */\n _destroy: function () {\n if (pushDelay) _w.clearTimeout(pushDelay);\n stack = null;\n }\n };\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { __assign, __rest } from \"tslib\";\nimport { wrap } from 'optimism';\nimport { getFragmentQueryDocument, } from \"../../utilities/index.js\";\nvar ApolloCache = (function () {\n function ApolloCache() {\n this.getFragmentDoc = wrap(getFragmentQueryDocument);\n }\n ApolloCache.prototype.batch = function (options) {\n var _this = this;\n var optimisticId = typeof options.optimistic === \"string\" ? options.optimistic :\n options.optimistic === false ? null : void 0;\n var updateResult;\n this.performTransaction(function () { return updateResult = options.update(_this); }, optimisticId);\n return updateResult;\n };\n ApolloCache.prototype.recordOptimisticTransaction = function (transaction, optimisticId) {\n this.performTransaction(transaction, optimisticId);\n };\n ApolloCache.prototype.transformDocument = function (document) {\n return document;\n };\n ApolloCache.prototype.transformForLink = function (document) {\n return document;\n };\n ApolloCache.prototype.identify = function (object) {\n return;\n };\n ApolloCache.prototype.gc = function () {\n return [];\n };\n ApolloCache.prototype.modify = function (options) {\n return false;\n };\n ApolloCache.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { rootId: options.id || 'ROOT_QUERY', optimistic: optimistic }));\n };\n ApolloCache.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { query: this.getFragmentDoc(options.fragment, options.fragmentName), rootId: options.id, optimistic: optimistic }));\n };\n ApolloCache.prototype.writeQuery = function (_a) {\n var id = _a.id, data = _a.data, options = __rest(_a, [\"id\", \"data\"]);\n return this.write(Object.assign(options, {\n dataId: id || 'ROOT_QUERY',\n result: data,\n }));\n };\n ApolloCache.prototype.writeFragment = function (_a) {\n var id = _a.id, data = _a.data, fragment = _a.fragment, fragmentName = _a.fragmentName, options = __rest(_a, [\"id\", \"data\", \"fragment\", \"fragmentName\"]);\n return this.write(Object.assign(options, {\n query: this.getFragmentDoc(fragment, fragmentName),\n dataId: id,\n result: data,\n }));\n };\n ApolloCache.prototype.updateQuery = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readQuery(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeQuery(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n ApolloCache.prototype.updateFragment = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readFragment(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeFragment(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n return ApolloCache;\n}());\nexport { ApolloCache };\n//# sourceMappingURL=cache.js.map","import { __extends } from \"tslib\";\nvar MissingFieldError = (function (_super) {\n __extends(MissingFieldError, _super);\n function MissingFieldError(message, path, query, variables) {\n var _a;\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.path = path;\n _this.query = query;\n _this.variables = variables;\n if (Array.isArray(_this.path)) {\n _this.missing = _this.message;\n for (var i = _this.path.length - 1; i >= 0; --i) {\n _this.missing = (_a = {}, _a[_this.path[i]] = _this.missing, _a);\n }\n }\n else {\n _this.missing = _this.path;\n }\n _this.__proto__ = MissingFieldError.prototype;\n return _this;\n }\n return MissingFieldError;\n}(Error));\nexport { MissingFieldError };\n//# sourceMappingURL=common.js.map","import { isReference, isField, DeepMerger, resultKeyNameFromField, shouldInclude, isNonNullObject, compact, createFragmentMap, getFragmentDefinitions, isArray, } from \"../../utilities/index.js\";\nexport var hasOwn = Object.prototype.hasOwnProperty;\nexport function isNullish(value) {\n return value === null || value === void 0;\n}\nexport { isArray };\nexport function defaultDataIdFromObject(_a, context) {\n var __typename = _a.__typename, id = _a.id, _id = _a._id;\n if (typeof __typename === \"string\") {\n if (context) {\n context.keyObject =\n !isNullish(id) ? { id: id } :\n !isNullish(_id) ? { _id: _id } :\n void 0;\n }\n if (isNullish(id) && !isNullish(_id)) {\n id = _id;\n }\n if (!isNullish(id)) {\n return \"\".concat(__typename, \":\").concat((typeof id === \"number\" ||\n typeof id === \"string\") ? id : JSON.stringify(id));\n }\n }\n}\nvar defaultConfig = {\n dataIdFromObject: defaultDataIdFromObject,\n addTypename: true,\n resultCaching: true,\n canonizeResults: false,\n};\nexport function normalizeConfig(config) {\n return compact(defaultConfig, config);\n}\nexport function shouldCanonizeResults(config) {\n var value = config.canonizeResults;\n return value === void 0 ? defaultConfig.canonizeResults : value;\n}\nexport function getTypenameFromStoreObject(store, objectOrReference) {\n return isReference(objectOrReference)\n ? store.get(objectOrReference.__ref, \"__typename\")\n : objectOrReference && objectOrReference.__typename;\n}\nexport var TypeOrFieldNameRegExp = /^[_a-z][_0-9a-z]*/i;\nexport function fieldNameFromStoreName(storeFieldName) {\n var match = storeFieldName.match(TypeOrFieldNameRegExp);\n return match ? match[0] : storeFieldName;\n}\nexport function selectionSetMatchesResult(selectionSet, result, variables) {\n if (isNonNullObject(result)) {\n return isArray(result)\n ? result.every(function (item) { return selectionSetMatchesResult(selectionSet, item, variables); })\n : selectionSet.selections.every(function (field) {\n if (isField(field) && shouldInclude(field, variables)) {\n var key = resultKeyNameFromField(field);\n return hasOwn.call(result, key) &&\n (!field.selectionSet ||\n selectionSetMatchesResult(field.selectionSet, result[key], variables));\n }\n return true;\n });\n }\n return false;\n}\nexport function storeValueIsStoreObject(value) {\n return isNonNullObject(value) &&\n !isReference(value) &&\n !isArray(value);\n}\nexport function makeProcessedFieldsMerger() {\n return new DeepMerger;\n}\nexport function extractFragmentContext(document, fragments) {\n var fragmentMap = createFragmentMap(getFragmentDefinitions(document));\n return {\n fragmentMap: fragmentMap,\n lookupFragment: function (name) {\n var def = fragmentMap[name];\n if (!def && fragments) {\n def = fragments.lookup(name);\n }\n return def || null;\n },\n };\n}\n//# sourceMappingURL=helpers.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { dep } from 'optimism';\nimport { equal } from '@wry/equality';\nimport { Trie } from '@wry/trie';\nimport { isReference, makeReference, DeepMerger, maybeDeepFreeze, canUseWeakMap, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName } from \"./helpers.js\";\nvar DELETE = Object.create(null);\nvar delModifier = function () { return DELETE; };\nvar INVALIDATE = Object.create(null);\nvar EntityStore = (function () {\n function EntityStore(policies, group) {\n var _this = this;\n this.policies = policies;\n this.group = group;\n this.data = Object.create(null);\n this.rootIds = Object.create(null);\n this.refs = Object.create(null);\n this.getFieldValue = function (objectOrReference, storeFieldName) { return maybeDeepFreeze(isReference(objectOrReference)\n ? _this.get(objectOrReference.__ref, storeFieldName)\n : objectOrReference && objectOrReference[storeFieldName]); };\n this.canRead = function (objOrRef) {\n return isReference(objOrRef)\n ? _this.has(objOrRef.__ref)\n : typeof objOrRef === \"object\";\n };\n this.toReference = function (objOrIdOrRef, mergeIntoStore) {\n if (typeof objOrIdOrRef === \"string\") {\n return makeReference(objOrIdOrRef);\n }\n if (isReference(objOrIdOrRef)) {\n return objOrIdOrRef;\n }\n var id = _this.policies.identify(objOrIdOrRef)[0];\n if (id) {\n var ref = makeReference(id);\n if (mergeIntoStore) {\n _this.merge(id, objOrIdOrRef);\n }\n return ref;\n }\n };\n }\n EntityStore.prototype.toObject = function () {\n return __assign({}, this.data);\n };\n EntityStore.prototype.has = function (dataId) {\n return this.lookup(dataId, true) !== void 0;\n };\n EntityStore.prototype.get = function (dataId, fieldName) {\n this.group.depend(dataId, fieldName);\n if (hasOwn.call(this.data, dataId)) {\n var storeObject = this.data[dataId];\n if (storeObject && hasOwn.call(storeObject, fieldName)) {\n return storeObject[fieldName];\n }\n }\n if (fieldName === \"__typename\" &&\n hasOwn.call(this.policies.rootTypenamesById, dataId)) {\n return this.policies.rootTypenamesById[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.get(dataId, fieldName);\n }\n };\n EntityStore.prototype.lookup = function (dataId, dependOnExistence) {\n if (dependOnExistence)\n this.group.depend(dataId, \"__exists\");\n if (hasOwn.call(this.data, dataId)) {\n return this.data[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.lookup(dataId, dependOnExistence);\n }\n if (this.policies.rootTypenamesById[dataId]) {\n return Object.create(null);\n }\n };\n EntityStore.prototype.merge = function (older, newer) {\n var _this = this;\n var dataId;\n if (isReference(older))\n older = older.__ref;\n if (isReference(newer))\n newer = newer.__ref;\n var existing = typeof older === \"string\"\n ? this.lookup(dataId = older)\n : older;\n var incoming = typeof newer === \"string\"\n ? this.lookup(dataId = newer)\n : newer;\n if (!incoming)\n return;\n __DEV__ ? invariant(typeof dataId === \"string\", \"store.merge expects a string ID\") : invariant(typeof dataId === \"string\", 1);\n var merged = new DeepMerger(storeObjectReconciler).merge(existing, incoming);\n this.data[dataId] = merged;\n if (merged !== existing) {\n delete this.refs[dataId];\n if (this.group.caching) {\n var fieldsToDirty_1 = Object.create(null);\n if (!existing)\n fieldsToDirty_1.__exists = 1;\n Object.keys(incoming).forEach(function (storeFieldName) {\n if (!existing || existing[storeFieldName] !== merged[storeFieldName]) {\n fieldsToDirty_1[storeFieldName] = 1;\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName &&\n !_this.policies.hasKeyArgs(merged.__typename, fieldName)) {\n fieldsToDirty_1[fieldName] = 1;\n }\n if (merged[storeFieldName] === void 0 && !(_this instanceof Layer)) {\n delete merged[storeFieldName];\n }\n }\n });\n if (fieldsToDirty_1.__typename &&\n !(existing && existing.__typename) &&\n this.policies.rootTypenamesById[dataId] === merged.__typename) {\n delete fieldsToDirty_1.__typename;\n }\n Object.keys(fieldsToDirty_1).forEach(function (fieldName) { return _this.group.dirty(dataId, fieldName); });\n }\n }\n };\n EntityStore.prototype.modify = function (dataId, fields) {\n var _this = this;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var changedFields_1 = Object.create(null);\n var needToMerge_1 = false;\n var allDeleted_1 = true;\n var sharedDetails_1 = {\n DELETE: DELETE,\n INVALIDATE: INVALIDATE,\n isReference: isReference,\n toReference: this.toReference,\n canRead: this.canRead,\n readField: function (fieldNameOrOptions, from) { return _this.policies.readField(typeof fieldNameOrOptions === \"string\" ? {\n fieldName: fieldNameOrOptions,\n from: from || makeReference(dataId),\n } : fieldNameOrOptions, { store: _this }); },\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var fieldValue = storeObject[storeFieldName];\n if (fieldValue === void 0)\n return;\n var modify = typeof fields === \"function\"\n ? fields\n : fields[storeFieldName] || fields[fieldName];\n if (modify) {\n var newValue = modify === delModifier ? DELETE :\n modify(maybeDeepFreeze(fieldValue), __assign(__assign({}, sharedDetails_1), { fieldName: fieldName, storeFieldName: storeFieldName, storage: _this.getStorage(dataId, storeFieldName) }));\n if (newValue === INVALIDATE) {\n _this.group.dirty(dataId, storeFieldName);\n }\n else {\n if (newValue === DELETE)\n newValue = void 0;\n if (newValue !== fieldValue) {\n changedFields_1[storeFieldName] = newValue;\n needToMerge_1 = true;\n fieldValue = newValue;\n }\n }\n }\n if (fieldValue !== void 0) {\n allDeleted_1 = false;\n }\n });\n if (needToMerge_1) {\n this.merge(dataId, changedFields_1);\n if (allDeleted_1) {\n if (this instanceof Layer) {\n this.data[dataId] = void 0;\n }\n else {\n delete this.data[dataId];\n }\n this.group.dirty(dataId, \"__exists\");\n }\n return true;\n }\n }\n return false;\n };\n EntityStore.prototype.delete = function (dataId, fieldName, args) {\n var _a;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var typename = this.getFieldValue(storeObject, \"__typename\");\n var storeFieldName = fieldName && args\n ? this.policies.getStoreFieldName({ typename: typename, fieldName: fieldName, args: args })\n : fieldName;\n return this.modify(dataId, storeFieldName ? (_a = {},\n _a[storeFieldName] = delModifier,\n _a) : delModifier);\n }\n return false;\n };\n EntityStore.prototype.evict = function (options, limit) {\n var evicted = false;\n if (options.id) {\n if (hasOwn.call(this.data, options.id)) {\n evicted = this.delete(options.id, options.fieldName, options.args);\n }\n if (this instanceof Layer && this !== limit) {\n evicted = this.parent.evict(options, limit) || evicted;\n }\n if (options.fieldName || evicted) {\n this.group.dirty(options.id, options.fieldName || \"__exists\");\n }\n }\n return evicted;\n };\n EntityStore.prototype.clear = function () {\n this.replace(null);\n };\n EntityStore.prototype.extract = function () {\n var _this = this;\n var obj = this.toObject();\n var extraRootIds = [];\n this.getRootIdSet().forEach(function (id) {\n if (!hasOwn.call(_this.policies.rootTypenamesById, id)) {\n extraRootIds.push(id);\n }\n });\n if (extraRootIds.length) {\n obj.__META = { extraRootIds: extraRootIds.sort() };\n }\n return obj;\n };\n EntityStore.prototype.replace = function (newData) {\n var _this = this;\n Object.keys(this.data).forEach(function (dataId) {\n if (!(newData && hasOwn.call(newData, dataId))) {\n _this.delete(dataId);\n }\n });\n if (newData) {\n var __META = newData.__META, rest_1 = __rest(newData, [\"__META\"]);\n Object.keys(rest_1).forEach(function (dataId) {\n _this.merge(dataId, rest_1[dataId]);\n });\n if (__META) {\n __META.extraRootIds.forEach(this.retain, this);\n }\n }\n };\n EntityStore.prototype.retain = function (rootId) {\n return this.rootIds[rootId] = (this.rootIds[rootId] || 0) + 1;\n };\n EntityStore.prototype.release = function (rootId) {\n if (this.rootIds[rootId] > 0) {\n var count = --this.rootIds[rootId];\n if (!count)\n delete this.rootIds[rootId];\n return count;\n }\n return 0;\n };\n EntityStore.prototype.getRootIdSet = function (ids) {\n if (ids === void 0) { ids = new Set(); }\n Object.keys(this.rootIds).forEach(ids.add, ids);\n if (this instanceof Layer) {\n this.parent.getRootIdSet(ids);\n }\n else {\n Object.keys(this.policies.rootTypenamesById).forEach(ids.add, ids);\n }\n return ids;\n };\n EntityStore.prototype.gc = function () {\n var _this = this;\n var ids = this.getRootIdSet();\n var snapshot = this.toObject();\n ids.forEach(function (id) {\n if (hasOwn.call(snapshot, id)) {\n Object.keys(_this.findChildRefIds(id)).forEach(ids.add, ids);\n delete snapshot[id];\n }\n });\n var idsToRemove = Object.keys(snapshot);\n if (idsToRemove.length) {\n var root_1 = this;\n while (root_1 instanceof Layer)\n root_1 = root_1.parent;\n idsToRemove.forEach(function (id) { return root_1.delete(id); });\n }\n return idsToRemove;\n };\n EntityStore.prototype.findChildRefIds = function (dataId) {\n if (!hasOwn.call(this.refs, dataId)) {\n var found_1 = this.refs[dataId] = Object.create(null);\n var root = this.data[dataId];\n if (!root)\n return found_1;\n var workSet_1 = new Set([root]);\n workSet_1.forEach(function (obj) {\n if (isReference(obj)) {\n found_1[obj.__ref] = true;\n }\n if (isNonNullObject(obj)) {\n Object.keys(obj).forEach(function (key) {\n var child = obj[key];\n if (isNonNullObject(child)) {\n workSet_1.add(child);\n }\n });\n }\n });\n }\n return this.refs[dataId];\n };\n EntityStore.prototype.makeCacheKey = function () {\n return this.group.keyMaker.lookupArray(arguments);\n };\n return EntityStore;\n}());\nexport { EntityStore };\nvar CacheGroup = (function () {\n function CacheGroup(caching, parent) {\n if (parent === void 0) { parent = null; }\n this.caching = caching;\n this.parent = parent;\n this.d = null;\n this.resetCaching();\n }\n CacheGroup.prototype.resetCaching = function () {\n this.d = this.caching ? dep() : null;\n this.keyMaker = new Trie(canUseWeakMap);\n };\n CacheGroup.prototype.depend = function (dataId, storeFieldName) {\n if (this.d) {\n this.d(makeDepKey(dataId, storeFieldName));\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName) {\n this.d(makeDepKey(dataId, fieldName));\n }\n if (this.parent) {\n this.parent.depend(dataId, storeFieldName);\n }\n }\n };\n CacheGroup.prototype.dirty = function (dataId, storeFieldName) {\n if (this.d) {\n this.d.dirty(makeDepKey(dataId, storeFieldName), storeFieldName === \"__exists\" ? \"forget\" : \"setDirty\");\n }\n };\n return CacheGroup;\n}());\nfunction makeDepKey(dataId, storeFieldName) {\n return storeFieldName + '#' + dataId;\n}\nexport function maybeDependOnExistenceOfEntity(store, entityId) {\n if (supportsResultCaching(store)) {\n store.group.depend(entityId, \"__exists\");\n }\n}\n(function (EntityStore) {\n var Root = (function (_super) {\n __extends(Root, _super);\n function Root(_a) {\n var policies = _a.policies, _b = _a.resultCaching, resultCaching = _b === void 0 ? true : _b, seed = _a.seed;\n var _this = _super.call(this, policies, new CacheGroup(resultCaching)) || this;\n _this.stump = new Stump(_this);\n _this.storageTrie = new Trie(canUseWeakMap);\n if (seed)\n _this.replace(seed);\n return _this;\n }\n Root.prototype.addLayer = function (layerId, replay) {\n return this.stump.addLayer(layerId, replay);\n };\n Root.prototype.removeLayer = function () {\n return this;\n };\n Root.prototype.getStorage = function () {\n return this.storageTrie.lookupArray(arguments);\n };\n return Root;\n }(EntityStore));\n EntityStore.Root = Root;\n})(EntityStore || (EntityStore = {}));\nvar Layer = (function (_super) {\n __extends(Layer, _super);\n function Layer(id, parent, replay, group) {\n var _this = _super.call(this, parent.policies, group) || this;\n _this.id = id;\n _this.parent = parent;\n _this.replay = replay;\n _this.group = group;\n replay(_this);\n return _this;\n }\n Layer.prototype.addLayer = function (layerId, replay) {\n return new Layer(layerId, this, replay, this.group);\n };\n Layer.prototype.removeLayer = function (layerId) {\n var _this = this;\n var parent = this.parent.removeLayer(layerId);\n if (layerId === this.id) {\n if (this.group.caching) {\n Object.keys(this.data).forEach(function (dataId) {\n var ownStoreObject = _this.data[dataId];\n var parentStoreObject = parent[\"lookup\"](dataId);\n if (!parentStoreObject) {\n _this.delete(dataId);\n }\n else if (!ownStoreObject) {\n _this.group.dirty(dataId, \"__exists\");\n Object.keys(parentStoreObject).forEach(function (storeFieldName) {\n _this.group.dirty(dataId, storeFieldName);\n });\n }\n else if (ownStoreObject !== parentStoreObject) {\n Object.keys(ownStoreObject).forEach(function (storeFieldName) {\n if (!equal(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {\n _this.group.dirty(dataId, storeFieldName);\n }\n });\n }\n });\n }\n return parent;\n }\n if (parent === this.parent)\n return this;\n return parent.addLayer(this.id, this.replay);\n };\n Layer.prototype.toObject = function () {\n return __assign(__assign({}, this.parent.toObject()), this.data);\n };\n Layer.prototype.findChildRefIds = function (dataId) {\n var fromParent = this.parent.findChildRefIds(dataId);\n return hasOwn.call(this.data, dataId) ? __assign(__assign({}, fromParent), _super.prototype.findChildRefIds.call(this, dataId)) : fromParent;\n };\n Layer.prototype.getStorage = function () {\n var p = this.parent;\n while (p.parent)\n p = p.parent;\n return p.getStorage.apply(p, arguments);\n };\n return Layer;\n}(EntityStore));\nvar Stump = (function (_super) {\n __extends(Stump, _super);\n function Stump(root) {\n return _super.call(this, \"EntityStore.Stump\", root, function () { }, new CacheGroup(root.group.caching, root.group)) || this;\n }\n Stump.prototype.removeLayer = function () {\n return this;\n };\n Stump.prototype.merge = function () {\n return this.parent.merge.apply(this.parent, arguments);\n };\n return Stump;\n}(Layer));\nfunction storeObjectReconciler(existingObject, incomingObject, property) {\n var existingValue = existingObject[property];\n var incomingValue = incomingObject[property];\n return equal(existingValue, incomingValue) ? existingValue : incomingValue;\n}\nexport function supportsResultCaching(store) {\n return !!(store instanceof EntityStore && store.group.caching);\n}\n//# sourceMappingURL=entityStore.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { Kind, } from 'graphql';\nimport { wrap } from 'optimism';\nimport { isField, resultKeyNameFromField, isReference, makeReference, shouldInclude, addTypenameToDocument, getDefaultValues, getMainDefinition, getQueryDefinition, getFragmentFromSelection, maybeDeepFreeze, mergeDeepArray, DeepMerger, isNonNullObject, canUseWeakMap, compact, } from \"../../utilities/index.js\";\nimport { maybeDependOnExistenceOfEntity, supportsResultCaching } from \"./entityStore.js\";\nimport { isArray, extractFragmentContext, getTypenameFromStoreObject, shouldCanonizeResults } from \"./helpers.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { canonicalStringify, ObjectCanon } from \"./object-canon.js\";\n;\nfunction execSelectionSetKeyArgs(options) {\n return [\n options.selectionSet,\n options.objectOrReference,\n options.context,\n options.context.canonizeResults,\n ];\n}\nvar StoreReader = (function () {\n function StoreReader(config) {\n var _this = this;\n this.knownResults = new (canUseWeakMap ? WeakMap : Map)();\n this.config = compact(config, {\n addTypename: config.addTypename !== false,\n canonizeResults: shouldCanonizeResults(config),\n });\n this.canon = config.canon || new ObjectCanon;\n this.executeSelectionSet = wrap(function (options) {\n var _a;\n var canonizeResults = options.context.canonizeResults;\n var peekArgs = execSelectionSetKeyArgs(options);\n peekArgs[3] = !canonizeResults;\n var other = (_a = _this.executeSelectionSet).peek.apply(_a, peekArgs);\n if (other) {\n if (canonizeResults) {\n return __assign(__assign({}, other), { result: _this.canon.admit(other.result) });\n }\n return other;\n }\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSelectionSetImpl(options);\n }, {\n max: this.config.resultCacheMaxSize,\n keyArgs: execSelectionSetKeyArgs,\n makeCacheKey: function (selectionSet, parent, context, canonizeResults) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(selectionSet, isReference(parent) ? parent.__ref : parent, context.varString, canonizeResults);\n }\n }\n });\n this.executeSubSelectedArray = wrap(function (options) {\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSubSelectedArrayImpl(options);\n }, {\n max: this.config.resultCacheMaxSize,\n makeCacheKey: function (_a) {\n var field = _a.field, array = _a.array, context = _a.context;\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(field, array, context.varString);\n }\n }\n });\n }\n StoreReader.prototype.resetCanon = function () {\n this.canon = new ObjectCanon;\n };\n StoreReader.prototype.diffQueryAgainstStore = function (_a) {\n var store = _a.store, query = _a.query, _b = _a.rootId, rootId = _b === void 0 ? 'ROOT_QUERY' : _b, variables = _a.variables, _c = _a.returnPartialData, returnPartialData = _c === void 0 ? true : _c, _d = _a.canonizeResults, canonizeResults = _d === void 0 ? this.config.canonizeResults : _d;\n var policies = this.config.cache.policies;\n variables = __assign(__assign({}, getDefaultValues(getQueryDefinition(query))), variables);\n var rootRef = makeReference(rootId);\n var execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: rootRef,\n enclosingRef: rootRef,\n context: __assign({ store: store, query: query, policies: policies, variables: variables, varString: canonicalStringify(variables), canonizeResults: canonizeResults }, extractFragmentContext(query, this.config.fragments)),\n });\n var missing;\n if (execResult.missing) {\n missing = [new MissingFieldError(firstMissing(execResult.missing), execResult.missing, query, variables)];\n if (!returnPartialData) {\n throw missing[0];\n }\n }\n return {\n result: execResult.result,\n complete: !missing,\n missing: missing,\n };\n };\n StoreReader.prototype.isFresh = function (result, parent, selectionSet, context) {\n if (supportsResultCaching(context.store) &&\n this.knownResults.get(result) === selectionSet) {\n var latest = this.executeSelectionSet.peek(selectionSet, parent, context, this.canon.isKnown(result));\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n };\n StoreReader.prototype.execSelectionSetImpl = function (_a) {\n var _this = this;\n var selectionSet = _a.selectionSet, objectOrReference = _a.objectOrReference, enclosingRef = _a.enclosingRef, context = _a.context;\n if (isReference(objectOrReference) &&\n !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n !context.store.has(objectOrReference.__ref)) {\n return {\n result: this.canon.empty,\n missing: \"Dangling reference to missing \".concat(objectOrReference.__ref, \" object\"),\n };\n }\n var variables = context.variables, policies = context.policies, store = context.store;\n var typename = store.getFieldValue(objectOrReference, \"__typename\");\n var objectsToMerge = [];\n var missing;\n var missingMerger = new DeepMerger();\n if (this.config.addTypename &&\n typeof typename === \"string\" &&\n !policies.rootIdsByTypename[typename]) {\n objectsToMerge.push({ __typename: typename });\n }\n function handleMissing(result, resultName) {\n var _a;\n if (result.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[resultName] = result.missing, _a));\n }\n return result.result;\n }\n var workSet = new Set(selectionSet.selections);\n workSet.forEach(function (selection) {\n var _a, _b;\n if (!shouldInclude(selection, variables))\n return;\n if (isField(selection)) {\n var fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference,\n }, context);\n var resultName = resultKeyNameFromField(selection);\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n missing = missingMerger.merge(missing, (_a = {},\n _a[resultName] = \"Can't find field '\".concat(selection.name.value, \"' on \").concat(isReference(objectOrReference)\n ? objectOrReference.__ref + \" object\"\n : \"object \" + JSON.stringify(objectOrReference, null, 2)),\n _a));\n }\n }\n else if (isArray(fieldValue)) {\n fieldValue = handleMissing(_this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n enclosingRef: enclosingRef,\n context: context,\n }), resultName);\n }\n else if (!selection.selectionSet) {\n if (context.canonizeResults) {\n fieldValue = _this.canon.pass(fieldValue);\n }\n }\n else if (fieldValue != null) {\n fieldValue = handleMissing(_this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue,\n enclosingRef: isReference(fieldValue) ? fieldValue : enclosingRef,\n context: context,\n }), resultName);\n }\n if (fieldValue !== void 0) {\n objectsToMerge.push((_b = {}, _b[resultName] = fieldValue, _b));\n }\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw __DEV__ ? new InvariantError(\"No fragment named \".concat(selection.name.value)) : new InvariantError(5);\n }\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n var result = mergeDeepArray(objectsToMerge);\n var finalResult = { result: result, missing: missing };\n var frozen = context.canonizeResults\n ? this.canon.admit(finalResult)\n : maybeDeepFreeze(finalResult);\n if (frozen.result) {\n this.knownResults.set(frozen.result, selectionSet);\n }\n return frozen;\n };\n StoreReader.prototype.execSubSelectedArrayImpl = function (_a) {\n var _this = this;\n var field = _a.field, array = _a.array, enclosingRef = _a.enclosingRef, context = _a.context;\n var missing;\n var missingMerger = new DeepMerger();\n function handleMissing(childResult, i) {\n var _a;\n if (childResult.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));\n }\n return childResult.result;\n }\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n array = array.map(function (item, i) {\n if (item === null) {\n return null;\n }\n if (isArray(item)) {\n return handleMissing(_this.executeSubSelectedArray({\n field: field,\n array: item,\n enclosingRef: enclosingRef,\n context: context,\n }), i);\n }\n if (field.selectionSet) {\n return handleMissing(_this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n enclosingRef: isReference(item) ? item : enclosingRef,\n context: context,\n }), i);\n }\n if (__DEV__) {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n return item;\n });\n return {\n result: context.canonizeResults ? this.canon.admit(array) : array,\n missing: missing,\n };\n };\n return StoreReader;\n}());\nexport { StoreReader };\nfunction firstMissing(tree) {\n try {\n JSON.stringify(tree, function (_, value) {\n if (typeof value === \"string\")\n throw value;\n return value;\n });\n }\n catch (result) {\n return result;\n }\n}\nfunction assertSelectionSetForIdValue(store, field, fieldValue) {\n if (!field.selectionSet) {\n var workSet_1 = new Set([fieldValue]);\n workSet_1.forEach(function (value) {\n if (isNonNullObject(value)) {\n __DEV__ ? invariant(!isReference(value), \"Missing selection set for object of type \".concat(getTypenameFromStoreObject(store, value), \" returned for query field \").concat(field.name.value)) : invariant(!isReference(value), 6);\n Object.values(value).forEach(workSet_1.add, workSet_1);\n }\n });\n }\n}\n//# sourceMappingURL=readFromStore.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport { argumentsObjectFromField, DeepMerger, isNonEmptyArray, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, isArray } from \"./helpers.js\";\nvar specifierInfoCache = Object.create(null);\nfunction lookupSpecifierInfo(spec) {\n var cacheKey = JSON.stringify(spec);\n return specifierInfoCache[cacheKey] ||\n (specifierInfoCache[cacheKey] = Object.create(null));\n}\nexport function keyFieldsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return info.keyFieldsFn || (info.keyFieldsFn = function (object, context) {\n var extract = function (from, key) { return context.readField(key, from); };\n var keyObject = context.keyObject = collectSpecifierPaths(specifier, function (schemaKeyPath) {\n var extracted = extractKeyPath(context.storeObject, schemaKeyPath, extract);\n if (extracted === void 0 &&\n object !== context.storeObject &&\n hasOwn.call(object, schemaKeyPath[0])) {\n extracted = extractKeyPath(object, schemaKeyPath, extractKey);\n }\n __DEV__ ? invariant(extracted !== void 0, \"Missing field '\".concat(schemaKeyPath.join('.'), \"' while extracting keyFields from \").concat(JSON.stringify(object))) : invariant(extracted !== void 0, 2);\n return extracted;\n });\n return \"\".concat(context.typename, \":\").concat(JSON.stringify(keyObject));\n });\n}\nexport function keyArgsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return info.keyArgsFn || (info.keyArgsFn = function (args, _a) {\n var field = _a.field, variables = _a.variables, fieldName = _a.fieldName;\n var collected = collectSpecifierPaths(specifier, function (keyPath) {\n var firstKey = keyPath[0];\n var firstChar = firstKey.charAt(0);\n if (firstChar === \"@\") {\n if (field && isNonEmptyArray(field.directives)) {\n var directiveName_1 = firstKey.slice(1);\n var d = field.directives.find(function (d) { return d.name.value === directiveName_1; });\n var directiveArgs = d && argumentsObjectFromField(d, variables);\n return directiveArgs && extractKeyPath(directiveArgs, keyPath.slice(1));\n }\n return;\n }\n if (firstChar === \"$\") {\n var variableName = firstKey.slice(1);\n if (variables && hasOwn.call(variables, variableName)) {\n var varKeyPath = keyPath.slice(0);\n varKeyPath[0] = variableName;\n return extractKeyPath(variables, varKeyPath);\n }\n return;\n }\n if (args) {\n return extractKeyPath(args, keyPath);\n }\n });\n var suffix = JSON.stringify(collected);\n if (args || suffix !== \"{}\") {\n fieldName += \":\" + suffix;\n }\n return fieldName;\n });\n}\nexport function collectSpecifierPaths(specifier, extractor) {\n var merger = new DeepMerger;\n return getSpecifierPaths(specifier).reduce(function (collected, path) {\n var _a;\n var toMerge = extractor(path);\n if (toMerge !== void 0) {\n for (var i = path.length - 1; i >= 0; --i) {\n toMerge = (_a = {}, _a[path[i]] = toMerge, _a);\n }\n collected = merger.merge(collected, toMerge);\n }\n return collected;\n }, Object.create(null));\n}\nexport function getSpecifierPaths(spec) {\n var info = lookupSpecifierInfo(spec);\n if (!info.paths) {\n var paths_1 = info.paths = [];\n var currentPath_1 = [];\n spec.forEach(function (s, i) {\n if (isArray(s)) {\n getSpecifierPaths(s).forEach(function (p) { return paths_1.push(currentPath_1.concat(p)); });\n currentPath_1.length = 0;\n }\n else {\n currentPath_1.push(s);\n if (!isArray(spec[i + 1])) {\n paths_1.push(currentPath_1.slice(0));\n currentPath_1.length = 0;\n }\n }\n });\n }\n return info.paths;\n}\nfunction extractKey(object, key) {\n return object[key];\n}\nexport function extractKeyPath(object, path, extract) {\n extract = extract || extractKey;\n return normalize(path.reduce(function reducer(obj, key) {\n return isArray(obj)\n ? obj.map(function (child) { return reducer(child, key); })\n : obj && extract(obj, key);\n }, object));\n}\nfunction normalize(value) {\n if (isNonNullObject(value)) {\n if (isArray(value)) {\n return value.map(normalize);\n }\n return collectSpecifierPaths(Object.keys(value).sort(), function (path) { return extractKeyPath(value, path); });\n }\n return value;\n}\n//# sourceMappingURL=key-extractor.js.map","import { __assign, __rest } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, isNonNullObject, stringifyForDisplay, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName, storeValueIsStoreObject, selectionSetMatchesResult, TypeOrFieldNameRegExp, defaultDataIdFromObject, isArray, } from \"./helpers.js\";\nimport { cacheSlot } from \"./reactiveVars.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nimport { keyArgsFnFromSpecifier, keyFieldsFnFromSpecifier } from \"./key-extractor.js\";\ngetStoreKeyName.setStringify(canonicalStringify);\nfunction argsFromFieldSpecifier(spec) {\n return spec.args !== void 0 ? spec.args :\n spec.field ? argumentsObjectFromField(spec.field, spec.variables) : null;\n}\nvar nullKeyFieldsFn = function () { return void 0; };\nvar simpleKeyArgsFn = function (_args, context) { return context.fieldName; };\nvar mergeTrueFn = function (existing, incoming, _a) {\n var mergeObjects = _a.mergeObjects;\n return mergeObjects(existing, incoming);\n};\nvar mergeFalseFn = function (_, incoming) { return incoming; };\nvar Policies = (function () {\n function Policies(config) {\n this.config = config;\n this.typePolicies = Object.create(null);\n this.toBeAdded = Object.create(null);\n this.supertypeMap = new Map();\n this.fuzzySubtypes = new Map();\n this.rootIdsByTypename = Object.create(null);\n this.rootTypenamesById = Object.create(null);\n this.usingPossibleTypes = false;\n this.config = __assign({ dataIdFromObject: defaultDataIdFromObject }, config);\n this.cache = this.config.cache;\n this.setRootTypename(\"Query\");\n this.setRootTypename(\"Mutation\");\n this.setRootTypename(\"Subscription\");\n if (config.possibleTypes) {\n this.addPossibleTypes(config.possibleTypes);\n }\n if (config.typePolicies) {\n this.addTypePolicies(config.typePolicies);\n }\n }\n Policies.prototype.identify = function (object, partialContext) {\n var _a;\n var policies = this;\n var typename = partialContext && (partialContext.typename ||\n ((_a = partialContext.storeObject) === null || _a === void 0 ? void 0 : _a.__typename)) || object.__typename;\n if (typename === this.rootTypenamesById.ROOT_QUERY) {\n return [\"ROOT_QUERY\"];\n }\n var storeObject = partialContext && partialContext.storeObject || object;\n var context = __assign(__assign({}, partialContext), { typename: typename, storeObject: storeObject, readField: partialContext && partialContext.readField || function () {\n var options = normalizeReadFieldOptions(arguments, storeObject);\n return policies.readField(options, {\n store: policies.cache[\"data\"],\n variables: options.variables,\n });\n } });\n var id;\n var policy = typename && this.getTypePolicy(typename);\n var keyFn = policy && policy.keyFn || this.config.dataIdFromObject;\n while (keyFn) {\n var specifierOrId = keyFn(__assign(__assign({}, object), storeObject), context);\n if (isArray(specifierOrId)) {\n keyFn = keyFieldsFnFromSpecifier(specifierOrId);\n }\n else {\n id = specifierOrId;\n break;\n }\n }\n id = id ? String(id) : void 0;\n return context.keyObject ? [id, context.keyObject] : [id];\n };\n Policies.prototype.addTypePolicies = function (typePolicies) {\n var _this = this;\n Object.keys(typePolicies).forEach(function (typename) {\n var _a = typePolicies[typename], queryType = _a.queryType, mutationType = _a.mutationType, subscriptionType = _a.subscriptionType, incoming = __rest(_a, [\"queryType\", \"mutationType\", \"subscriptionType\"]);\n if (queryType)\n _this.setRootTypename(\"Query\", typename);\n if (mutationType)\n _this.setRootTypename(\"Mutation\", typename);\n if (subscriptionType)\n _this.setRootTypename(\"Subscription\", typename);\n if (hasOwn.call(_this.toBeAdded, typename)) {\n _this.toBeAdded[typename].push(incoming);\n }\n else {\n _this.toBeAdded[typename] = [incoming];\n }\n });\n };\n Policies.prototype.updateTypePolicy = function (typename, incoming) {\n var _this = this;\n var existing = this.getTypePolicy(typename);\n var keyFields = incoming.keyFields, fields = incoming.fields;\n function setMerge(existing, merge) {\n existing.merge =\n typeof merge === \"function\" ? merge :\n merge === true ? mergeTrueFn :\n merge === false ? mergeFalseFn :\n existing.merge;\n }\n setMerge(existing, incoming.merge);\n existing.keyFn =\n keyFields === false ? nullKeyFieldsFn :\n isArray(keyFields) ? keyFieldsFnFromSpecifier(keyFields) :\n typeof keyFields === \"function\" ? keyFields :\n existing.keyFn;\n if (fields) {\n Object.keys(fields).forEach(function (fieldName) {\n var existing = _this.getFieldPolicy(typename, fieldName, true);\n var incoming = fields[fieldName];\n if (typeof incoming === \"function\") {\n existing.read = incoming;\n }\n else {\n var keyArgs = incoming.keyArgs, read = incoming.read, merge = incoming.merge;\n existing.keyFn =\n keyArgs === false ? simpleKeyArgsFn :\n isArray(keyArgs) ? keyArgsFnFromSpecifier(keyArgs) :\n typeof keyArgs === \"function\" ? keyArgs :\n existing.keyFn;\n if (typeof read === \"function\") {\n existing.read = read;\n }\n setMerge(existing, merge);\n }\n if (existing.read && existing.merge) {\n existing.keyFn = existing.keyFn || simpleKeyArgsFn;\n }\n });\n }\n };\n Policies.prototype.setRootTypename = function (which, typename) {\n if (typename === void 0) { typename = which; }\n var rootId = \"ROOT_\" + which.toUpperCase();\n var old = this.rootTypenamesById[rootId];\n if (typename !== old) {\n __DEV__ ? invariant(!old || old === which, \"Cannot change root \".concat(which, \" __typename more than once\")) : invariant(!old || old === which, 3);\n if (old)\n delete this.rootIdsByTypename[old];\n this.rootIdsByTypename[typename] = rootId;\n this.rootTypenamesById[rootId] = typename;\n }\n };\n Policies.prototype.addPossibleTypes = function (possibleTypes) {\n var _this = this;\n this.usingPossibleTypes = true;\n Object.keys(possibleTypes).forEach(function (supertype) {\n _this.getSupertypeSet(supertype, true);\n possibleTypes[supertype].forEach(function (subtype) {\n _this.getSupertypeSet(subtype, true).add(supertype);\n var match = subtype.match(TypeOrFieldNameRegExp);\n if (!match || match[0] !== subtype) {\n _this.fuzzySubtypes.set(subtype, new RegExp(subtype));\n }\n });\n });\n };\n Policies.prototype.getTypePolicy = function (typename) {\n var _this = this;\n if (!hasOwn.call(this.typePolicies, typename)) {\n var policy_1 = this.typePolicies[typename] = Object.create(null);\n policy_1.fields = Object.create(null);\n var supertypes = this.supertypeMap.get(typename);\n if (supertypes && supertypes.size) {\n supertypes.forEach(function (supertype) {\n var _a = _this.getTypePolicy(supertype), fields = _a.fields, rest = __rest(_a, [\"fields\"]);\n Object.assign(policy_1, rest);\n Object.assign(policy_1.fields, fields);\n });\n }\n }\n var inbox = this.toBeAdded[typename];\n if (inbox && inbox.length) {\n inbox.splice(0).forEach(function (policy) {\n _this.updateTypePolicy(typename, policy);\n });\n }\n return this.typePolicies[typename];\n };\n Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {\n if (typename) {\n var fieldPolicies = this.getTypePolicy(typename).fields;\n return fieldPolicies[fieldName] || (createIfMissing && (fieldPolicies[fieldName] = Object.create(null)));\n }\n };\n Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {\n var supertypeSet = this.supertypeMap.get(subtype);\n if (!supertypeSet && createIfMissing) {\n this.supertypeMap.set(subtype, supertypeSet = new Set());\n }\n return supertypeSet;\n };\n Policies.prototype.fragmentMatches = function (fragment, typename, result, variables) {\n var _this = this;\n if (!fragment.typeCondition)\n return true;\n if (!typename)\n return false;\n var supertype = fragment.typeCondition.name.value;\n if (typename === supertype)\n return true;\n if (this.usingPossibleTypes &&\n this.supertypeMap.has(supertype)) {\n var typenameSupertypeSet = this.getSupertypeSet(typename, true);\n var workQueue_1 = [typenameSupertypeSet];\n var maybeEnqueue_1 = function (subtype) {\n var supertypeSet = _this.getSupertypeSet(subtype, false);\n if (supertypeSet &&\n supertypeSet.size &&\n workQueue_1.indexOf(supertypeSet) < 0) {\n workQueue_1.push(supertypeSet);\n }\n };\n var needToCheckFuzzySubtypes = !!(result && this.fuzzySubtypes.size);\n var checkingFuzzySubtypes = false;\n for (var i = 0; i < workQueue_1.length; ++i) {\n var supertypeSet = workQueue_1[i];\n if (supertypeSet.has(supertype)) {\n if (!typenameSupertypeSet.has(supertype)) {\n if (checkingFuzzySubtypes) {\n __DEV__ && invariant.warn(\"Inferring subtype \".concat(typename, \" of supertype \").concat(supertype));\n }\n typenameSupertypeSet.add(supertype);\n }\n return true;\n }\n supertypeSet.forEach(maybeEnqueue_1);\n if (needToCheckFuzzySubtypes &&\n i === workQueue_1.length - 1 &&\n selectionSetMatchesResult(fragment.selectionSet, result, variables)) {\n needToCheckFuzzySubtypes = false;\n checkingFuzzySubtypes = true;\n this.fuzzySubtypes.forEach(function (regExp, fuzzyString) {\n var match = typename.match(regExp);\n if (match && match[0] === typename) {\n maybeEnqueue_1(fuzzyString);\n }\n });\n }\n }\n }\n return false;\n };\n Policies.prototype.hasKeyArgs = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return !!(policy && policy.keyFn);\n };\n Policies.prototype.getStoreFieldName = function (fieldSpec) {\n var typename = fieldSpec.typename, fieldName = fieldSpec.fieldName;\n var policy = this.getFieldPolicy(typename, fieldName, false);\n var storeFieldName;\n var keyFn = policy && policy.keyFn;\n if (keyFn && typename) {\n var context = {\n typename: typename,\n fieldName: fieldName,\n field: fieldSpec.field || null,\n variables: fieldSpec.variables,\n };\n var args = argsFromFieldSpecifier(fieldSpec);\n while (keyFn) {\n var specifierOrString = keyFn(args, context);\n if (isArray(specifierOrString)) {\n keyFn = keyArgsFnFromSpecifier(specifierOrString);\n }\n else {\n storeFieldName = specifierOrString || fieldName;\n break;\n }\n }\n }\n if (storeFieldName === void 0) {\n storeFieldName = fieldSpec.field\n ? storeKeyNameFromField(fieldSpec.field, fieldSpec.variables)\n : getStoreKeyName(fieldName, argsFromFieldSpecifier(fieldSpec));\n }\n if (storeFieldName === false) {\n return fieldName;\n }\n return fieldName === fieldNameFromStoreName(storeFieldName)\n ? storeFieldName\n : fieldName + \":\" + storeFieldName;\n };\n Policies.prototype.readField = function (options, context) {\n var objectOrReference = options.from;\n if (!objectOrReference)\n return;\n var nameOrField = options.field || options.fieldName;\n if (!nameOrField)\n return;\n if (options.typename === void 0) {\n var typename = context.store.getFieldValue(objectOrReference, \"__typename\");\n if (typename)\n options.typename = typename;\n }\n var storeFieldName = this.getStoreFieldName(options);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var existing = context.store.getFieldValue(objectOrReference, storeFieldName);\n var policy = this.getFieldPolicy(options.typename, fieldName, false);\n var read = policy && policy.read;\n if (read) {\n var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage(isReference(objectOrReference)\n ? objectOrReference.__ref\n : objectOrReference, storeFieldName));\n return cacheSlot.withValue(this.cache, read, [existing, readOptions]);\n }\n return existing;\n };\n Policies.prototype.getReadFunction = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return policy && policy.read;\n };\n Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {\n var policy = this.getFieldPolicy(parentTypename, fieldName, false);\n var merge = policy && policy.merge;\n if (!merge && childTypename) {\n policy = this.getTypePolicy(childTypename);\n merge = policy && policy.merge;\n }\n return merge;\n };\n Policies.prototype.runMergeFunction = function (existing, incoming, _a, context, storage) {\n var field = _a.field, typename = _a.typename, merge = _a.merge;\n if (merge === mergeTrueFn) {\n return makeMergeObjectsFunction(context.store)(existing, incoming);\n }\n if (merge === mergeFalseFn) {\n return incoming;\n }\n if (context.overwrite) {\n existing = void 0;\n }\n return merge(existing, incoming, makeFieldFunctionOptions(this, void 0, { typename: typename, fieldName: field.name.value, field: field, variables: context.variables }, context, storage || Object.create(null)));\n };\n return Policies;\n}());\nexport { Policies };\nfunction makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, context, storage) {\n var storeFieldName = policies.getStoreFieldName(fieldSpec);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var variables = fieldSpec.variables || context.variables;\n var _a = context.store, toReference = _a.toReference, canRead = _a.canRead;\n return {\n args: argsFromFieldSpecifier(fieldSpec),\n field: fieldSpec.field || null,\n fieldName: fieldName,\n storeFieldName: storeFieldName,\n variables: variables,\n isReference: isReference,\n toReference: toReference,\n storage: storage,\n cache: policies.cache,\n canRead: canRead,\n readField: function () {\n return policies.readField(normalizeReadFieldOptions(arguments, objectOrReference, variables), context);\n },\n mergeObjects: makeMergeObjectsFunction(context.store),\n };\n}\nexport function normalizeReadFieldOptions(readFieldArgs, objectOrReference, variables) {\n var fieldNameOrOptions = readFieldArgs[0], from = readFieldArgs[1], argc = readFieldArgs.length;\n var options;\n if (typeof fieldNameOrOptions === \"string\") {\n options = {\n fieldName: fieldNameOrOptions,\n from: argc > 1 ? from : objectOrReference,\n };\n }\n else {\n options = __assign({}, fieldNameOrOptions);\n if (!hasOwn.call(options, \"from\")) {\n options.from = objectOrReference;\n }\n }\n if (__DEV__ && options.from === void 0) {\n __DEV__ && invariant.warn(\"Undefined 'from' passed to readField with arguments \".concat(stringifyForDisplay(Array.from(readFieldArgs))));\n }\n if (void 0 === options.variables) {\n options.variables = variables;\n }\n return options;\n}\nfunction makeMergeObjectsFunction(store) {\n return function mergeObjects(existing, incoming) {\n if (isArray(existing) || isArray(incoming)) {\n throw __DEV__ ? new InvariantError(\"Cannot automatically merge arrays\") : new InvariantError(4);\n }\n if (isNonNullObject(existing) &&\n isNonNullObject(incoming)) {\n var eType = store.getFieldValue(existing, \"__typename\");\n var iType = store.getFieldValue(incoming, \"__typename\");\n var typesDiffer = eType && iType && eType !== iType;\n if (typesDiffer) {\n return incoming;\n }\n if (isReference(existing) &&\n storeValueIsStoreObject(incoming)) {\n store.merge(existing.__ref, incoming);\n return existing;\n }\n if (storeValueIsStoreObject(existing) &&\n isReference(incoming)) {\n store.merge(existing, incoming.__ref);\n return incoming;\n }\n if (storeValueIsStoreObject(existing) &&\n storeValueIsStoreObject(incoming)) {\n return __assign(__assign({}, existing), incoming);\n }\n }\n return incoming;\n };\n}\n//# sourceMappingURL=policies.js.map","import { makeUniqueId } from \"./makeUniqueId.js\";\nexport function stringifyForDisplay(value) {\n var undefId = makeUniqueId(\"stringifyForDisplay\");\n return JSON.stringify(value, function (key, value) {\n return value === void 0 ? undefId : value;\n }).split(JSON.stringify(undefId)).join(\"<undefined>\");\n}\n//# sourceMappingURL=stringifyForDisplay.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { Trie } from '@wry/trie';\nimport { Kind, } from 'graphql';\nimport { getFragmentFromSelection, getDefaultValues, getOperationDefinition, getTypenameFromResult, makeReference, isField, resultKeyNameFromField, isReference, shouldInclude, cloneDeep, addTypenameToDocument, isNonEmptyArray, argumentsObjectFromField, } from \"../../utilities/index.js\";\nimport { isArray, makeProcessedFieldsMerger, fieldNameFromStoreName, storeValueIsStoreObject, extractFragmentContext } from \"./helpers.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nimport { normalizeReadFieldOptions } from \"./policies.js\";\n;\nfunction getContextFlavor(context, clientOnly, deferred) {\n var key = \"\".concat(clientOnly).concat(deferred);\n var flavored = context.flavors.get(key);\n if (!flavored) {\n context.flavors.set(key, flavored = (context.clientOnly === clientOnly &&\n context.deferred === deferred) ? context : __assign(__assign({}, context), { clientOnly: clientOnly, deferred: deferred }));\n }\n return flavored;\n}\nvar StoreWriter = (function () {\n function StoreWriter(cache, reader, fragments) {\n this.cache = cache;\n this.reader = reader;\n this.fragments = fragments;\n }\n StoreWriter.prototype.writeToStore = function (store, _a) {\n var _this = this;\n var query = _a.query, result = _a.result, dataId = _a.dataId, variables = _a.variables, overwrite = _a.overwrite;\n var operationDefinition = getOperationDefinition(query);\n var merger = makeProcessedFieldsMerger();\n variables = __assign(__assign({}, getDefaultValues(operationDefinition)), variables);\n var context = __assign(__assign({ store: store, written: Object.create(null), merge: function (existing, incoming) {\n return merger.merge(existing, incoming);\n }, variables: variables, varString: canonicalStringify(variables) }, extractFragmentContext(query, this.fragments)), { overwrite: !!overwrite, incomingById: new Map, clientOnly: false, deferred: false, flavors: new Map });\n var ref = this.processSelectionSet({\n result: result || Object.create(null),\n dataId: dataId,\n selectionSet: operationDefinition.selectionSet,\n mergeTree: { map: new Map },\n context: context,\n });\n if (!isReference(ref)) {\n throw __DEV__ ? new InvariantError(\"Could not identify object \".concat(JSON.stringify(result))) : new InvariantError(7);\n }\n context.incomingById.forEach(function (_a, dataId) {\n var storeObject = _a.storeObject, mergeTree = _a.mergeTree, fieldNodeSet = _a.fieldNodeSet;\n var entityRef = makeReference(dataId);\n if (mergeTree && mergeTree.map.size) {\n var applied = _this.applyMerges(mergeTree, entityRef, storeObject, context);\n if (isReference(applied)) {\n return;\n }\n storeObject = applied;\n }\n if (__DEV__ && !context.overwrite) {\n var fieldsWithSelectionSets_1 = Object.create(null);\n fieldNodeSet.forEach(function (field) {\n if (field.selectionSet) {\n fieldsWithSelectionSets_1[field.name.value] = true;\n }\n });\n var hasSelectionSet_1 = function (storeFieldName) {\n return fieldsWithSelectionSets_1[fieldNameFromStoreName(storeFieldName)] === true;\n };\n var hasMergeFunction_1 = function (storeFieldName) {\n var childTree = mergeTree && mergeTree.map.get(storeFieldName);\n return Boolean(childTree && childTree.info && childTree.info.merge);\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n if (hasSelectionSet_1(storeFieldName) &&\n !hasMergeFunction_1(storeFieldName)) {\n warnAboutDataLoss(entityRef, storeObject, storeFieldName, context.store);\n }\n });\n }\n store.merge(dataId, storeObject);\n });\n store.retain(ref.__ref);\n return ref;\n };\n StoreWriter.prototype.processSelectionSet = function (_a) {\n var _this = this;\n var dataId = _a.dataId, result = _a.result, selectionSet = _a.selectionSet, context = _a.context, mergeTree = _a.mergeTree;\n var policies = this.cache.policies;\n var incoming = Object.create(null);\n var typename = (dataId && policies.rootTypenamesById[dataId]) ||\n getTypenameFromResult(result, selectionSet, context.fragmentMap) ||\n (dataId && context.store.get(dataId, \"__typename\"));\n if (\"string\" === typeof typename) {\n incoming.__typename = typename;\n }\n var readField = function () {\n var options = normalizeReadFieldOptions(arguments, incoming, context.variables);\n if (isReference(options.from)) {\n var info = context.incomingById.get(options.from.__ref);\n if (info) {\n var result_1 = policies.readField(__assign(__assign({}, options), { from: info.storeObject }), context);\n if (result_1 !== void 0) {\n return result_1;\n }\n }\n }\n return policies.readField(options, context);\n };\n var fieldNodeSet = new Set();\n this.flattenFields(selectionSet, result, context, typename).forEach(function (context, field) {\n var _a;\n var resultFieldKey = resultKeyNameFromField(field);\n var value = result[resultFieldKey];\n fieldNodeSet.add(field);\n if (value !== void 0) {\n var storeFieldName = policies.getStoreFieldName({\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n });\n var childTree = getChildMergeTree(mergeTree, storeFieldName);\n var incomingValue = _this.processFieldValue(value, field, field.selectionSet\n ? getContextFlavor(context, false, false)\n : context, childTree);\n var childTypename = void 0;\n if (field.selectionSet &&\n (isReference(incomingValue) ||\n storeValueIsStoreObject(incomingValue))) {\n childTypename = readField(\"__typename\", incomingValue);\n }\n var merge = policies.getMergeFunction(typename, field.name.value, childTypename);\n if (merge) {\n childTree.info = {\n field: field,\n typename: typename,\n merge: merge,\n };\n }\n else {\n maybeRecycleChildMergeTree(mergeTree, storeFieldName);\n }\n incoming = context.merge(incoming, (_a = {},\n _a[storeFieldName] = incomingValue,\n _a));\n }\n else if (__DEV__ &&\n !context.clientOnly &&\n !context.deferred &&\n !addTypenameToDocument.added(field) &&\n !policies.getReadFunction(typename, field.name.value)) {\n __DEV__ && invariant.error(\"Missing field '\".concat(resultKeyNameFromField(field), \"' while writing result \").concat(JSON.stringify(result, null, 2)).substring(0, 1000));\n }\n });\n try {\n var _b = policies.identify(result, {\n typename: typename,\n selectionSet: selectionSet,\n fragmentMap: context.fragmentMap,\n storeObject: incoming,\n readField: readField,\n }), id = _b[0], keyObject = _b[1];\n dataId = dataId || id;\n if (keyObject) {\n incoming = context.merge(incoming, keyObject);\n }\n }\n catch (e) {\n if (!dataId)\n throw e;\n }\n if (\"string\" === typeof dataId) {\n var dataRef = makeReference(dataId);\n var sets = context.written[dataId] || (context.written[dataId] = []);\n if (sets.indexOf(selectionSet) >= 0)\n return dataRef;\n sets.push(selectionSet);\n if (this.reader && this.reader.isFresh(result, dataRef, selectionSet, context)) {\n return dataRef;\n }\n var previous_1 = context.incomingById.get(dataId);\n if (previous_1) {\n previous_1.storeObject = context.merge(previous_1.storeObject, incoming);\n previous_1.mergeTree = mergeMergeTrees(previous_1.mergeTree, mergeTree);\n fieldNodeSet.forEach(function (field) { return previous_1.fieldNodeSet.add(field); });\n }\n else {\n context.incomingById.set(dataId, {\n storeObject: incoming,\n mergeTree: mergeTreeIsEmpty(mergeTree) ? void 0 : mergeTree,\n fieldNodeSet: fieldNodeSet,\n });\n }\n return dataRef;\n }\n return incoming;\n };\n StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {\n var _this = this;\n if (!field.selectionSet || value === null) {\n return __DEV__ ? cloneDeep(value) : value;\n }\n if (isArray(value)) {\n return value.map(function (item, i) {\n var value = _this.processFieldValue(item, field, context, getChildMergeTree(mergeTree, i));\n maybeRecycleChildMergeTree(mergeTree, i);\n return value;\n });\n }\n return this.processSelectionSet({\n result: value,\n selectionSet: field.selectionSet,\n context: context,\n mergeTree: mergeTree,\n });\n };\n StoreWriter.prototype.flattenFields = function (selectionSet, result, context, typename) {\n if (typename === void 0) { typename = getTypenameFromResult(result, selectionSet, context.fragmentMap); }\n var fieldMap = new Map();\n var policies = this.cache.policies;\n var limitingTrie = new Trie(false);\n (function flatten(selectionSet, inheritedContext) {\n var visitedNode = limitingTrie.lookup(selectionSet, inheritedContext.clientOnly, inheritedContext.deferred);\n if (visitedNode.visited)\n return;\n visitedNode.visited = true;\n selectionSet.selections.forEach(function (selection) {\n if (!shouldInclude(selection, context.variables))\n return;\n var clientOnly = inheritedContext.clientOnly, deferred = inheritedContext.deferred;\n if (!(clientOnly && deferred) &&\n isNonEmptyArray(selection.directives)) {\n selection.directives.forEach(function (dir) {\n var name = dir.name.value;\n if (name === \"client\")\n clientOnly = true;\n if (name === \"defer\") {\n var args = argumentsObjectFromField(dir, context.variables);\n if (!args || args.if !== false) {\n deferred = true;\n }\n }\n });\n }\n if (isField(selection)) {\n var existing = fieldMap.get(selection);\n if (existing) {\n clientOnly = clientOnly && existing.clientOnly;\n deferred = deferred && existing.deferred;\n }\n fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw __DEV__ ? new InvariantError(\"No fragment named \".concat(selection.name.value)) : new InvariantError(8);\n }\n if (fragment &&\n policies.fragmentMatches(fragment, typename, result, context.variables)) {\n flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));\n }\n }\n });\n })(selectionSet, context);\n return fieldMap;\n };\n StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {\n var _a;\n var _this = this;\n if (mergeTree.map.size && !isReference(incoming)) {\n var e_1 = (!isArray(incoming) &&\n (isReference(existing) || storeValueIsStoreObject(existing))) ? existing : void 0;\n var i_1 = incoming;\n if (e_1 && !getStorageArgs) {\n getStorageArgs = [isReference(e_1) ? e_1.__ref : e_1];\n }\n var changedFields_1;\n var getValue_1 = function (from, name) {\n return isArray(from)\n ? (typeof name === \"number\" ? from[name] : void 0)\n : context.store.getFieldValue(from, String(name));\n };\n mergeTree.map.forEach(function (childTree, storeFieldName) {\n var eVal = getValue_1(e_1, storeFieldName);\n var iVal = getValue_1(i_1, storeFieldName);\n if (void 0 === iVal)\n return;\n if (getStorageArgs) {\n getStorageArgs.push(storeFieldName);\n }\n var aVal = _this.applyMerges(childTree, eVal, iVal, context, getStorageArgs);\n if (aVal !== iVal) {\n changedFields_1 = changedFields_1 || new Map;\n changedFields_1.set(storeFieldName, aVal);\n }\n if (getStorageArgs) {\n invariant(getStorageArgs.pop() === storeFieldName);\n }\n });\n if (changedFields_1) {\n incoming = (isArray(i_1) ? i_1.slice(0) : __assign({}, i_1));\n changedFields_1.forEach(function (value, name) {\n incoming[name] = value;\n });\n }\n }\n if (mergeTree.info) {\n return this.cache.policies.runMergeFunction(existing, incoming, mergeTree.info, context, getStorageArgs && (_a = context.store).getStorage.apply(_a, getStorageArgs));\n }\n return incoming;\n };\n return StoreWriter;\n}());\nexport { StoreWriter };\nvar emptyMergeTreePool = [];\nfunction getChildMergeTree(_a, name) {\n var map = _a.map;\n if (!map.has(name)) {\n map.set(name, emptyMergeTreePool.pop() || { map: new Map });\n }\n return map.get(name);\n}\nfunction mergeMergeTrees(left, right) {\n if (left === right || !right || mergeTreeIsEmpty(right))\n return left;\n if (!left || mergeTreeIsEmpty(left))\n return right;\n var info = left.info && right.info ? __assign(__assign({}, left.info), right.info) : left.info || right.info;\n var needToMergeMaps = left.map.size && right.map.size;\n var map = needToMergeMaps ? new Map :\n left.map.size ? left.map : right.map;\n var merged = { info: info, map: map };\n if (needToMergeMaps) {\n var remainingRightKeys_1 = new Set(right.map.keys());\n left.map.forEach(function (leftTree, key) {\n merged.map.set(key, mergeMergeTrees(leftTree, right.map.get(key)));\n remainingRightKeys_1.delete(key);\n });\n remainingRightKeys_1.forEach(function (key) {\n merged.map.set(key, mergeMergeTrees(right.map.get(key), left.map.get(key)));\n });\n }\n return merged;\n}\nfunction mergeTreeIsEmpty(tree) {\n return !tree || !(tree.info || tree.map.size);\n}\nfunction maybeRecycleChildMergeTree(_a, name) {\n var map = _a.map;\n var childTree = map.get(name);\n if (childTree && mergeTreeIsEmpty(childTree)) {\n emptyMergeTreePool.push(childTree);\n map.delete(name);\n }\n}\nvar warnings = new Set();\nfunction warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {\n var getChild = function (objOrRef) {\n var child = store.getFieldValue(objOrRef, storeFieldName);\n return typeof child === \"object\" && child;\n };\n var existing = getChild(existingRef);\n if (!existing)\n return;\n var incoming = getChild(incomingObj);\n if (!incoming)\n return;\n if (isReference(existing))\n return;\n if (equal(existing, incoming))\n return;\n if (Object.keys(existing).every(function (key) { return store.getFieldValue(incoming, key) !== void 0; })) {\n return;\n }\n var parentType = store.getFieldValue(existingRef, \"__typename\") ||\n store.getFieldValue(incomingObj, \"__typename\");\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var typeDotName = \"\".concat(parentType, \".\").concat(fieldName);\n if (warnings.has(typeDotName))\n return;\n warnings.add(typeDotName);\n var childTypenames = [];\n if (!isArray(existing) &&\n !isArray(incoming)) {\n [existing, incoming].forEach(function (child) {\n var typename = store.getFieldValue(child, \"__typename\");\n if (typeof typename === \"string\" &&\n !childTypenames.includes(typename)) {\n childTypenames.push(typename);\n }\n });\n }\n __DEV__ && invariant.warn(\"Cache data may be lost when replacing the \".concat(fieldName, \" field of a \").concat(parentType, \" object.\\n\\nTo address this problem (which is not a bug in Apollo Client), \").concat(childTypenames.length\n ? \"either ensure all objects of type \" +\n childTypenames.join(\" and \") + \" have an ID or a custom merge function, or \"\n : \"\", \"define a custom merge function for the \").concat(typeDotName, \" field, so InMemoryCache can safely merge these objects:\\n\\n existing: \").concat(JSON.stringify(existing).slice(0, 1000), \"\\n incoming: \").concat(JSON.stringify(incoming).slice(0, 1000), \"\\n\\nFor more information about these options, please refer to the documentation:\\n\\n * Ensuring entity objects have IDs: https://go.apollo.dev/c/generating-unique-identifiers\\n * Defining custom merge functions: https://go.apollo.dev/c/merging-non-normalized-objects\\n\"));\n}\n//# sourceMappingURL=writeToStore.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport \"./fixPolyfills.js\";\nimport { wrap } from 'optimism';\nimport { equal } from '@wry/equality';\nimport { ApolloCache } from \"../core/cache.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { addTypenameToDocument, isReference, } from \"../../utilities/index.js\";\nimport { StoreReader } from \"./readFromStore.js\";\nimport { StoreWriter } from \"./writeToStore.js\";\nimport { EntityStore, supportsResultCaching } from \"./entityStore.js\";\nimport { makeVar, forgetCache, recallCache } from \"./reactiveVars.js\";\nimport { Policies } from \"./policies.js\";\nimport { hasOwn, normalizeConfig, shouldCanonizeResults } from \"./helpers.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nvar InMemoryCache = (function (_super) {\n __extends(InMemoryCache, _super);\n function InMemoryCache(config) {\n if (config === void 0) { config = {}; }\n var _this = _super.call(this) || this;\n _this.watches = new Set();\n _this.typenameDocumentCache = new Map();\n _this.makeVar = makeVar;\n _this.txCount = 0;\n _this.config = normalizeConfig(config);\n _this.addTypename = !!_this.config.addTypename;\n _this.policies = new Policies({\n cache: _this,\n dataIdFromObject: _this.config.dataIdFromObject,\n possibleTypes: _this.config.possibleTypes,\n typePolicies: _this.config.typePolicies,\n });\n _this.init();\n return _this;\n }\n InMemoryCache.prototype.init = function () {\n var rootStore = this.data = new EntityStore.Root({\n policies: this.policies,\n resultCaching: this.config.resultCaching,\n });\n this.optimisticData = rootStore.stump;\n this.resetResultCache();\n };\n InMemoryCache.prototype.resetResultCache = function (resetResultIdentities) {\n var _this = this;\n var previousReader = this.storeReader;\n var fragments = this.config.fragments;\n this.storeWriter = new StoreWriter(this, this.storeReader = new StoreReader({\n cache: this,\n addTypename: this.addTypename,\n resultCacheMaxSize: this.config.resultCacheMaxSize,\n canonizeResults: shouldCanonizeResults(this.config),\n canon: resetResultIdentities\n ? void 0\n : previousReader && previousReader.canon,\n fragments: fragments,\n }), fragments);\n this.maybeBroadcastWatch = wrap(function (c, options) {\n return _this.broadcastWatch(c, options);\n }, {\n max: this.config.resultCacheMaxSize,\n makeCacheKey: function (c) {\n var store = c.optimistic ? _this.optimisticData : _this.data;\n if (supportsResultCaching(store)) {\n var optimistic = c.optimistic, id = c.id, variables = c.variables;\n return store.makeCacheKey(c.query, c.callback, canonicalStringify({ optimistic: optimistic, id: id, variables: variables }));\n }\n }\n });\n new Set([\n this.data.group,\n this.optimisticData.group,\n ]).forEach(function (group) { return group.resetCaching(); });\n };\n InMemoryCache.prototype.restore = function (data) {\n this.init();\n if (data)\n this.data.replace(data);\n return this;\n };\n InMemoryCache.prototype.extract = function (optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return (optimistic ? this.optimisticData : this.data).extract();\n };\n InMemoryCache.prototype.read = function (options) {\n var _a = options.returnPartialData, returnPartialData = _a === void 0 ? false : _a;\n try {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, config: this.config, returnPartialData: returnPartialData })).result || null;\n }\n catch (e) {\n if (e instanceof MissingFieldError) {\n return null;\n }\n throw e;\n }\n };\n InMemoryCache.prototype.write = function (options) {\n try {\n ++this.txCount;\n return this.storeWriter.writeToStore(this.data, options);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.modify = function (options) {\n if (hasOwn.call(options, \"id\") && !options.id) {\n return false;\n }\n var store = options.optimistic\n ? this.optimisticData\n : this.data;\n try {\n ++this.txCount;\n return store.modify(options.id || \"ROOT_QUERY\", options.fields);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.diff = function (options) {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, rootId: options.id || \"ROOT_QUERY\", config: this.config }));\n };\n InMemoryCache.prototype.watch = function (watch) {\n var _this = this;\n if (!this.watches.size) {\n recallCache(this);\n }\n this.watches.add(watch);\n if (watch.immediate) {\n this.maybeBroadcastWatch(watch);\n }\n return function () {\n if (_this.watches.delete(watch) && !_this.watches.size) {\n forgetCache(_this);\n }\n _this.maybeBroadcastWatch.forget(watch);\n };\n };\n InMemoryCache.prototype.gc = function (options) {\n canonicalStringify.reset();\n var ids = this.optimisticData.gc();\n if (options && !this.txCount) {\n if (options.resetResultCache) {\n this.resetResultCache(options.resetResultIdentities);\n }\n else if (options.resetResultIdentities) {\n this.storeReader.resetCanon();\n }\n }\n return ids;\n };\n InMemoryCache.prototype.retain = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).retain(rootId);\n };\n InMemoryCache.prototype.release = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).release(rootId);\n };\n InMemoryCache.prototype.identify = function (object) {\n if (isReference(object))\n return object.__ref;\n try {\n return this.policies.identify(object)[0];\n }\n catch (e) {\n __DEV__ && invariant.warn(e);\n }\n };\n InMemoryCache.prototype.evict = function (options) {\n if (!options.id) {\n if (hasOwn.call(options, \"id\")) {\n return false;\n }\n options = __assign(__assign({}, options), { id: \"ROOT_QUERY\" });\n }\n try {\n ++this.txCount;\n return this.optimisticData.evict(options, this.data);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.reset = function (options) {\n var _this = this;\n this.init();\n canonicalStringify.reset();\n if (options && options.discardWatches) {\n this.watches.forEach(function (watch) { return _this.maybeBroadcastWatch.forget(watch); });\n this.watches.clear();\n forgetCache(this);\n }\n else {\n this.broadcastWatches();\n }\n return Promise.resolve();\n };\n InMemoryCache.prototype.removeOptimistic = function (idToRemove) {\n var newOptimisticData = this.optimisticData.removeLayer(idToRemove);\n if (newOptimisticData !== this.optimisticData) {\n this.optimisticData = newOptimisticData;\n this.broadcastWatches();\n }\n };\n InMemoryCache.prototype.batch = function (options) {\n var _this = this;\n var update = options.update, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, removeOptimistic = options.removeOptimistic, onWatchUpdated = options.onWatchUpdated;\n var updateResult;\n var perform = function (layer) {\n var _a = _this, data = _a.data, optimisticData = _a.optimisticData;\n ++_this.txCount;\n if (layer) {\n _this.data = _this.optimisticData = layer;\n }\n try {\n return updateResult = update(_this);\n }\n finally {\n --_this.txCount;\n _this.data = data;\n _this.optimisticData = optimisticData;\n }\n };\n var alreadyDirty = new Set();\n if (onWatchUpdated && !this.txCount) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch) {\n alreadyDirty.add(watch);\n return false;\n } }));\n }\n if (typeof optimistic === 'string') {\n this.optimisticData = this.optimisticData.addLayer(optimistic, perform);\n }\n else if (optimistic === false) {\n perform(this.data);\n }\n else {\n perform();\n }\n if (typeof removeOptimistic === \"string\") {\n this.optimisticData = this.optimisticData.removeLayer(removeOptimistic);\n }\n if (onWatchUpdated && alreadyDirty.size) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch, diff) {\n var result = onWatchUpdated.call(this, watch, diff);\n if (result !== false) {\n alreadyDirty.delete(watch);\n }\n return result;\n } }));\n if (alreadyDirty.size) {\n alreadyDirty.forEach(function (watch) { return _this.maybeBroadcastWatch.dirty(watch); });\n }\n }\n else {\n this.broadcastWatches(options);\n }\n return updateResult;\n };\n InMemoryCache.prototype.performTransaction = function (update, optimisticId) {\n return this.batch({\n update: update,\n optimistic: optimisticId || (optimisticId !== null),\n });\n };\n InMemoryCache.prototype.transformDocument = function (document) {\n if (this.addTypename) {\n var result = this.typenameDocumentCache.get(document);\n if (!result) {\n result = addTypenameToDocument(document);\n this.typenameDocumentCache.set(document, result);\n this.typenameDocumentCache.set(result, result);\n }\n return result;\n }\n return document;\n };\n InMemoryCache.prototype.transformForLink = function (document) {\n var fragments = this.config.fragments;\n return fragments\n ? fragments.transform(document)\n : document;\n };\n InMemoryCache.prototype.broadcastWatches = function (options) {\n var _this = this;\n if (!this.txCount) {\n this.watches.forEach(function (c) { return _this.maybeBroadcastWatch(c, options); });\n }\n };\n InMemoryCache.prototype.broadcastWatch = function (c, options) {\n var lastDiff = c.lastDiff;\n var diff = this.diff(c);\n if (options) {\n if (c.optimistic &&\n typeof options.optimistic === \"string\") {\n diff.fromOptimisticTransaction = true;\n }\n if (options.onWatchUpdated &&\n options.onWatchUpdated.call(this, c, diff, lastDiff) === false) {\n return;\n }\n }\n if (!lastDiff || !equal(lastDiff.result, diff.result)) {\n c.callback(c.lastDiff = diff, lastDiff);\n }\n };\n return InMemoryCache;\n}(ApolloCache));\nexport { InMemoryCache };\n//# sourceMappingURL=inMemoryCache.js.map","import { __assign } from \"tslib\";\nimport \"../../utilities/globals/index.js\";\nimport { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet, isNonNullObject as isObjectOrArray, } from \"../../utilities/index.js\";\nimport { isArray } from \"./helpers.js\";\nfunction shallowCopy(value) {\n if (isObjectOrArray(value)) {\n return isArray(value)\n ? value.slice(0)\n : __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n return value;\n}\nvar ObjectCanon = (function () {\n function ObjectCanon() {\n this.known = new (canUseWeakSet ? WeakSet : Set)();\n this.pool = new Trie(canUseWeakMap);\n this.passes = new WeakMap();\n this.keysByJSON = new Map();\n this.empty = this.admit({});\n }\n ObjectCanon.prototype.isKnown = function (value) {\n return isObjectOrArray(value) && this.known.has(value);\n };\n ObjectCanon.prototype.pass = function (value) {\n if (isObjectOrArray(value)) {\n var copy = shallowCopy(value);\n this.passes.set(copy, value);\n return copy;\n }\n return value;\n };\n ObjectCanon.prototype.admit = function (value) {\n var _this = this;\n if (isObjectOrArray(value)) {\n var original = this.passes.get(value);\n if (original)\n return original;\n var proto = Object.getPrototypeOf(value);\n switch (proto) {\n case Array.prototype: {\n if (this.known.has(value))\n return value;\n var array = value.map(this.admit, this);\n var node = this.pool.lookupArray(array);\n if (!node.array) {\n this.known.add(node.array = array);\n if (__DEV__) {\n Object.freeze(array);\n }\n }\n return node.array;\n }\n case null:\n case Object.prototype: {\n if (this.known.has(value))\n return value;\n var proto_1 = Object.getPrototypeOf(value);\n var array_1 = [proto_1];\n var keys = this.sortedKeys(value);\n array_1.push(keys.json);\n var firstValueIndex_1 = array_1.length;\n keys.sorted.forEach(function (key) {\n array_1.push(_this.admit(value[key]));\n });\n var node = this.pool.lookupArray(array_1);\n if (!node.object) {\n var obj_1 = node.object = Object.create(proto_1);\n this.known.add(obj_1);\n keys.sorted.forEach(function (key, i) {\n obj_1[key] = array_1[firstValueIndex_1 + i];\n });\n if (__DEV__) {\n Object.freeze(obj_1);\n }\n }\n return node.object;\n }\n }\n }\n return value;\n };\n ObjectCanon.prototype.sortedKeys = function (obj) {\n var keys = Object.keys(obj);\n var node = this.pool.lookupArray(keys);\n if (!node.keys) {\n keys.sort();\n var json = JSON.stringify(keys);\n if (!(node.keys = this.keysByJSON.get(json))) {\n this.keysByJSON.set(json, node.keys = { sorted: keys, json: json });\n }\n }\n return node.keys;\n };\n return ObjectCanon;\n}());\nexport { ObjectCanon };\nexport var canonicalStringify = Object.assign(function (value) {\n if (isObjectOrArray(value)) {\n if (stringifyCanon === void 0) {\n resetCanonicalStringify();\n }\n var canonical = stringifyCanon.admit(value);\n var json = stringifyCache.get(canonical);\n if (json === void 0) {\n stringifyCache.set(canonical, json = JSON.stringify(canonical));\n }\n return json;\n }\n return JSON.stringify(value);\n}, {\n reset: resetCanonicalStringify,\n});\nvar stringifyCanon;\nvar stringifyCache;\nfunction resetCanonicalStringify() {\n stringifyCanon = new ObjectCanon;\n stringifyCache = new (canUseWeakMap ? WeakMap : Map)();\n}\n//# sourceMappingURL=object-canon.js.map","import { dep } from \"optimism\";\nimport { Slot } from \"@wry/context\";\nexport var cacheSlot = new Slot();\nvar cacheInfoMap = new WeakMap();\nfunction getCacheInfo(cache) {\n var info = cacheInfoMap.get(cache);\n if (!info) {\n cacheInfoMap.set(cache, info = {\n vars: new Set,\n dep: dep(),\n });\n }\n return info;\n}\nexport function forgetCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.forgetCache(cache); });\n}\nexport function recallCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.attachCache(cache); });\n}\nexport function makeVar(value) {\n var caches = new Set();\n var listeners = new Set();\n var rv = function (newValue) {\n if (arguments.length > 0) {\n if (value !== newValue) {\n value = newValue;\n caches.forEach(function (cache) {\n getCacheInfo(cache).dep.dirty(rv);\n broadcast(cache);\n });\n var oldListeners = Array.from(listeners);\n listeners.clear();\n oldListeners.forEach(function (listener) { return listener(value); });\n }\n }\n else {\n var cache = cacheSlot.getValue();\n if (cache) {\n attach(cache);\n getCacheInfo(cache).dep(rv);\n }\n }\n return value;\n };\n rv.onNextChange = function (listener) {\n listeners.add(listener);\n return function () {\n listeners.delete(listener);\n };\n };\n var attach = rv.attachCache = function (cache) {\n caches.add(cache);\n getCacheInfo(cache).vars.add(rv);\n return rv;\n };\n rv.forgetCache = function (cache) { return caches.delete(cache); };\n return rv;\n}\nfunction broadcast(cache) {\n if (cache.broadcastWatches) {\n cache.broadcastWatches();\n }\n}\n//# sourceMappingURL=reactiveVars.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var execute = ApolloLink.execute;\n//# sourceMappingURL=execute.js.map","import { Observable } from \"./Observable.js\";\nexport function asyncMap(observable, mapFn, catchFn) {\n return new Observable(function (observer) {\n var next = observer.next, error = observer.error, complete = observer.complete;\n var activeCallbackCount = 0;\n var completed = false;\n var promiseQueue = {\n then: function (callback) {\n return new Promise(function (resolve) { return resolve(callback()); });\n },\n };\n function makeCallback(examiner, delegate) {\n if (examiner) {\n return function (arg) {\n ++activeCallbackCount;\n var both = function () { return examiner(arg); };\n promiseQueue = promiseQueue.then(both, both).then(function (result) {\n --activeCallbackCount;\n next && next.call(observer, result);\n if (completed) {\n handler.complete();\n }\n }, function (error) {\n --activeCallbackCount;\n throw error;\n }).catch(function (caught) {\n error && error.call(observer, caught);\n });\n };\n }\n else {\n return function (arg) { return delegate && delegate.call(observer, arg); };\n }\n }\n var handler = {\n next: makeCallback(mapFn, next),\n error: makeCallback(catchFn, error),\n complete: function () {\n completed = true;\n if (!activeCallbackCount) {\n complete && complete.call(observer);\n }\n },\n };\n var sub = observable.subscribe(handler);\n return function () { return sub.unsubscribe(); };\n });\n}\n//# sourceMappingURL=asyncMap.js.map","import { isNonEmptyArray } from \"./arrays.js\";\nimport { isExecutionPatchIncrementalResult } from \"./incrementalResult.js\";\nexport function graphQLResultHasError(result) {\n var errors = getGraphQLErrorsFromResult(result);\n return isNonEmptyArray(errors);\n}\nexport function getGraphQLErrorsFromResult(result) {\n var graphQLErrors = isNonEmptyArray(result.errors)\n ? result.errors.slice(0)\n : [];\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (incrementalResult) {\n if (incrementalResult.errors) {\n graphQLErrors.push.apply(graphQLErrors, incrementalResult.errors);\n }\n });\n }\n return graphQLErrors;\n}\n//# sourceMappingURL=errorHandling.js.map","export function iterateObserversSafely(observers, method, argument) {\n var observersWithMethod = [];\n observers.forEach(function (obs) { return obs[method] && observersWithMethod.push(obs); });\n observersWithMethod.forEach(function (obs) { return obs[method](argument); });\n}\n//# sourceMappingURL=iteration.js.map","import { Observable } from \"./Observable.js\";\nimport { canUseSymbol } from \"../common/canUse.js\";\nexport function fixObservableSubclass(subclass) {\n function set(key) {\n Object.defineProperty(subclass, key, { value: Observable });\n }\n if (canUseSymbol && Symbol.species) {\n set(Symbol.species);\n }\n set(\"@@species\");\n return subclass;\n}\n//# sourceMappingURL=subclassing.js.map","import { __extends } from \"tslib\";\nimport { Observable } from \"./Observable.js\";\nimport { iterateObserversSafely } from \"./iteration.js\";\nimport { fixObservableSubclass } from \"./subclassing.js\";\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\nvar Concast = (function (_super) {\n __extends(Concast, _super);\n function Concast(sources) {\n var _this = _super.call(this, function (observer) {\n _this.addObserver(observer);\n return function () { return _this.removeObserver(observer); };\n }) || this;\n _this.observers = new Set();\n _this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n _this.handlers = {\n next: function (result) {\n if (_this.sub !== null) {\n _this.latest = [\"next\", result];\n _this.notify(\"next\", result);\n iterateObserversSafely(_this.observers, \"next\", result);\n }\n },\n error: function (error) {\n var sub = _this.sub;\n if (sub !== null) {\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n _this.latest = [\"error\", error];\n _this.reject(error);\n _this.notify(\"error\", error);\n iterateObserversSafely(_this.observers, \"error\", error);\n }\n },\n complete: function () {\n var _a = _this, sub = _a.sub, _b = _a.sources, sources = _b === void 0 ? [] : _b;\n if (sub !== null) {\n var value = sources.shift();\n if (!value) {\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n if (_this.latest &&\n _this.latest[0] === \"next\") {\n _this.resolve(_this.latest[1]);\n }\n else {\n _this.resolve();\n }\n _this.notify(\"complete\");\n iterateObserversSafely(_this.observers, \"complete\");\n }\n else if (isPromiseLike(value)) {\n value.then(function (obs) { return _this.sub = obs.subscribe(_this.handlers); });\n }\n else {\n _this.sub = value.subscribe(_this.handlers);\n }\n }\n },\n };\n _this.nextResultListeners = new Set();\n _this.cancel = function (reason) {\n _this.reject(reason);\n _this.sources = [];\n _this.handlers.complete();\n };\n _this.promise.catch(function (_) { });\n if (typeof sources === \"function\") {\n sources = [new Observable(sources)];\n }\n if (isPromiseLike(sources)) {\n sources.then(function (iterable) { return _this.start(iterable); }, _this.handlers.error);\n }\n else {\n _this.start(sources);\n }\n return _this;\n }\n Concast.prototype.start = function (sources) {\n if (this.sub !== void 0)\n return;\n this.sources = Array.from(sources);\n this.handlers.complete();\n };\n Concast.prototype.deliverLastMessage = function (observer) {\n if (this.latest) {\n var nextOrError = this.latest[0];\n var method = observer[nextOrError];\n if (method) {\n method.call(observer, this.latest[1]);\n }\n if (this.sub === null &&\n nextOrError === \"next\" &&\n observer.complete) {\n observer.complete();\n }\n }\n };\n Concast.prototype.addObserver = function (observer) {\n if (!this.observers.has(observer)) {\n this.deliverLastMessage(observer);\n this.observers.add(observer);\n }\n };\n Concast.prototype.removeObserver = function (observer) {\n if (this.observers.delete(observer) &&\n this.observers.size < 1) {\n this.handlers.complete();\n }\n };\n Concast.prototype.notify = function (method, arg) {\n var nextResultListeners = this.nextResultListeners;\n if (nextResultListeners.size) {\n this.nextResultListeners = new Set;\n nextResultListeners.forEach(function (listener) { return listener(method, arg); });\n }\n };\n Concast.prototype.beforeNext = function (callback) {\n var called = false;\n this.nextResultListeners.add(function (method, arg) {\n if (!called) {\n called = true;\n callback(method, arg);\n }\n });\n };\n return Concast;\n}(Observable));\nexport { Concast };\nfixObservableSubclass(Concast);\n//# sourceMappingURL=Concast.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { cloneDeep, compact, getOperationDefinition, Observable, iterateObserversSafely, isNonEmptyArray, fixObservableSubclass, getQueryDefinition, } from \"../utilities/index.js\";\nvar assign = Object.assign, hasOwnProperty = Object.hasOwnProperty;\nvar ObservableQuery = (function (_super) {\n __extends(ObservableQuery, _super);\n function ObservableQuery(_a) {\n var queryManager = _a.queryManager, queryInfo = _a.queryInfo, options = _a.options;\n var _this = _super.call(this, function (observer) {\n try {\n var subObserver = observer._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n }\n catch (_a) { }\n var first = !_this.observers.size;\n _this.observers.add(observer);\n var last = _this.last;\n if (last && last.error) {\n observer.error && observer.error(last.error);\n }\n else if (last && last.result) {\n observer.next && observer.next(last.result);\n }\n if (first) {\n _this.reobserve().catch(function () { });\n }\n return function () {\n if (_this.observers.delete(observer) && !_this.observers.size) {\n _this.tearDownQuery();\n }\n };\n }) || this;\n _this.observers = new Set();\n _this.subscriptions = new Set();\n _this.queryInfo = queryInfo;\n _this.queryManager = queryManager;\n _this.isTornDown = false;\n var _b = queryManager.defaultOptions.watchQuery, _c = _b === void 0 ? {} : _b, _d = _c.fetchPolicy, defaultFetchPolicy = _d === void 0 ? \"cache-first\" : _d;\n var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e, _f = options.initialFetchPolicy, initialFetchPolicy = _f === void 0 ? (fetchPolicy === \"standby\" ? defaultFetchPolicy : fetchPolicy) : _f;\n _this.options = __assign(__assign({}, options), { initialFetchPolicy: initialFetchPolicy, fetchPolicy: fetchPolicy });\n _this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n var opDef = getOperationDefinition(_this.query);\n _this.queryName = opDef && opDef.name && opDef.name.value;\n return _this;\n }\n Object.defineProperty(ObservableQuery.prototype, \"query\", {\n get: function () {\n return this.queryManager.transform(this.options.query).document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ObservableQuery.prototype, \"variables\", {\n get: function () {\n return this.options.variables;\n },\n enumerable: false,\n configurable: true\n });\n ObservableQuery.prototype.result = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var observer = {\n next: function (result) {\n resolve(result);\n _this.observers.delete(observer);\n if (!_this.observers.size) {\n _this.queryManager.removeQuery(_this.queryId);\n }\n setTimeout(function () {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n var subscription = _this.subscribe(observer);\n });\n };\n ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {\n if (saveAsLastResult === void 0) { saveAsLastResult = true; }\n var lastResult = this.getLastResult(true);\n var networkStatus = this.queryInfo.networkStatus ||\n (lastResult && lastResult.networkStatus) ||\n NetworkStatus.ready;\n var result = __assign(__assign({}, lastResult), { loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus });\n var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a;\n if (fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache' ||\n fetchPolicy === 'standby' ||\n this.queryManager.transform(this.options.query).hasForcedResolvers) {\n }\n else {\n var diff = this.queryInfo.getDiff();\n if (diff.complete || this.options.returnPartialData) {\n result.data = diff.result;\n }\n if (equal(result.data, {})) {\n result.data = void 0;\n }\n if (diff.complete) {\n delete result.partial;\n if (diff.complete &&\n result.networkStatus === NetworkStatus.loading &&\n (fetchPolicy === 'cache-first' ||\n fetchPolicy === 'cache-only')) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n }\n else {\n result.partial = true;\n }\n if (__DEV__ &&\n !diff.complete &&\n !this.options.partialRefetch &&\n !result.loading &&\n !result.data &&\n !result.error) {\n logMissingFieldErrors(diff.missing);\n }\n }\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n return result;\n };\n ObservableQuery.prototype.isDifferentFromLastResult = function (newResult, variables) {\n return (!this.last ||\n !equal(this.last.result, newResult) ||\n (variables && !equal(this.last.variables, variables)));\n };\n ObservableQuery.prototype.getLast = function (key, variablesMustMatch) {\n var last = this.last;\n if (last &&\n last[key] &&\n (!variablesMustMatch || equal(last.variables, this.variables))) {\n return last[key];\n }\n };\n ObservableQuery.prototype.getLastResult = function (variablesMustMatch) {\n return this.getLast(\"result\", variablesMustMatch);\n };\n ObservableQuery.prototype.getLastError = function (variablesMustMatch) {\n return this.getLast(\"error\", variablesMustMatch);\n };\n ObservableQuery.prototype.resetLastResults = function () {\n delete this.last;\n this.isTornDown = false;\n };\n ObservableQuery.prototype.resetQueryStoreErrors = function () {\n this.queryManager.resetErrors(this.queryId);\n };\n ObservableQuery.prototype.refetch = function (variables) {\n var _a;\n var reobserveOptions = {\n pollInterval: 0,\n };\n var fetchPolicy = this.options.fetchPolicy;\n if (fetchPolicy === 'cache-and-network') {\n reobserveOptions.fetchPolicy = fetchPolicy;\n }\n else if (fetchPolicy === 'no-cache') {\n reobserveOptions.fetchPolicy = 'no-cache';\n }\n else {\n reobserveOptions.fetchPolicy = 'network-only';\n }\n if (__DEV__ && variables && hasOwnProperty.call(variables, \"variables\")) {\n var queryDef = getQueryDefinition(this.query);\n var vars = queryDef.variableDefinitions;\n if (!vars || !vars.some(function (v) { return v.variable.name.value === \"variables\"; })) {\n __DEV__ && invariant.warn(\"Called refetch(\".concat(JSON.stringify(variables), \") for query \").concat(((_a = queryDef.name) === null || _a === void 0 ? void 0 : _a.value) || JSON.stringify(queryDef), \", which does not declare a $variables variable.\\nDid you mean to call refetch(variables) instead of refetch({ variables })?\"));\n }\n }\n if (variables && !equal(this.options.variables, variables)) {\n reobserveOptions.variables = this.options.variables = __assign(__assign({}, this.options.variables), variables);\n }\n this.queryInfo.resetLastWrite();\n return this.reobserve(reobserveOptions, NetworkStatus.refetch);\n };\n ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {\n var _this = this;\n var combinedOptions = __assign(__assign({}, (fetchMoreOptions.query ? fetchMoreOptions : __assign(__assign(__assign(__assign({}, this.options), { query: this.query }), fetchMoreOptions), { variables: __assign(__assign({}, this.options.variables), fetchMoreOptions.variables) }))), { fetchPolicy: \"no-cache\" });\n var qid = this.queryManager.generateQueryId();\n var queryInfo = this.queryInfo;\n var originalNetworkStatus = queryInfo.networkStatus;\n queryInfo.networkStatus = NetworkStatus.fetchMore;\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.observe();\n }\n var updatedQuerySet = new Set();\n return this.queryManager.fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore).then(function (fetchMoreResult) {\n _this.queryManager.removeQuery(qid);\n if (queryInfo.networkStatus === NetworkStatus.fetchMore) {\n queryInfo.networkStatus = originalNetworkStatus;\n }\n _this.queryManager.cache.batch({\n update: function (cache) {\n var updateQuery = fetchMoreOptions.updateQuery;\n if (updateQuery) {\n cache.updateQuery({\n query: _this.query,\n variables: _this.variables,\n returnPartialData: true,\n optimistic: false,\n }, function (previous) { return updateQuery(previous, {\n fetchMoreResult: fetchMoreResult.data,\n variables: combinedOptions.variables,\n }); });\n }\n else {\n cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data: fetchMoreResult.data,\n });\n }\n },\n onWatchUpdated: function (watch) {\n updatedQuerySet.add(watch.query);\n },\n });\n return fetchMoreResult;\n }).finally(function () {\n if (!updatedQuerySet.has(_this.query)) {\n reobserveCacheFirst(_this);\n }\n });\n };\n ObservableQuery.prototype.subscribeToMore = function (options) {\n var _this = this;\n var subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context,\n })\n .subscribe({\n next: function (subscriptionData) {\n var updateQuery = options.updateQuery;\n if (updateQuery) {\n _this.updateQuery(function (previous, _a) {\n var variables = _a.variables;\n return updateQuery(previous, {\n subscriptionData: subscriptionData,\n variables: variables,\n });\n });\n }\n },\n error: function (err) {\n if (options.onError) {\n options.onError(err);\n return;\n }\n __DEV__ && invariant.error('Unhandled GraphQL subscription error', err);\n },\n });\n this.subscriptions.add(subscription);\n return function () {\n if (_this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n };\n ObservableQuery.prototype.setOptions = function (newOptions) {\n return this.reobserve(newOptions);\n };\n ObservableQuery.prototype.setVariables = function (variables) {\n if (equal(this.variables, variables)) {\n return this.observers.size\n ? this.result()\n : Promise.resolve();\n }\n this.options.variables = variables;\n if (!this.observers.size) {\n return Promise.resolve();\n }\n return this.reobserve({\n fetchPolicy: this.options.initialFetchPolicy,\n variables: variables,\n }, NetworkStatus.setVariables);\n };\n ObservableQuery.prototype.updateQuery = function (mapFn) {\n var queryManager = this.queryManager;\n var result = queryManager.cache.diff({\n query: this.options.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n var newResult = mapFn(result, {\n variables: this.variables,\n });\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables,\n });\n queryManager.broadcastQueries();\n }\n };\n ObservableQuery.prototype.startPolling = function (pollInterval) {\n this.options.pollInterval = pollInterval;\n this.updatePolling();\n };\n ObservableQuery.prototype.stopPolling = function () {\n this.options.pollInterval = 0;\n this.updatePolling();\n };\n ObservableQuery.prototype.applyNextFetchPolicy = function (reason, options) {\n if (options.nextFetchPolicy) {\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a, _b = options.initialFetchPolicy, initialFetchPolicy = _b === void 0 ? fetchPolicy : _b;\n if (fetchPolicy === \"standby\") {\n }\n else if (typeof options.nextFetchPolicy === \"function\") {\n options.fetchPolicy = options.nextFetchPolicy(fetchPolicy, {\n reason: reason,\n options: options,\n observable: this,\n initialFetchPolicy: initialFetchPolicy,\n });\n }\n else if (reason === \"variables-changed\") {\n options.fetchPolicy = initialFetchPolicy;\n }\n else {\n options.fetchPolicy = options.nextFetchPolicy;\n }\n }\n return options.fetchPolicy;\n };\n ObservableQuery.prototype.fetch = function (options, newNetworkStatus) {\n this.queryManager.setObservableQuery(this);\n return this.queryManager['fetchConcastWithInfo'](this.queryId, options, newNetworkStatus);\n };\n ObservableQuery.prototype.updatePolling = function () {\n var _this = this;\n if (this.queryManager.ssrMode) {\n return;\n }\n var _a = this, pollingInfo = _a.pollingInfo, pollInterval = _a.options.pollInterval;\n if (!pollInterval) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n if (pollingInfo &&\n pollingInfo.interval === pollInterval) {\n return;\n }\n __DEV__ ? invariant(pollInterval, 'Attempted to start a polling query without a polling interval.') : invariant(pollInterval, 13);\n var info = pollingInfo || (this.pollingInfo = {});\n info.interval = pollInterval;\n var maybeFetch = function () {\n if (_this.pollingInfo) {\n if (!isNetworkRequestInFlight(_this.queryInfo.networkStatus)) {\n _this.reobserve({\n fetchPolicy: _this.options.initialFetchPolicy === 'no-cache' ? 'no-cache' : 'network-only',\n }, NetworkStatus.poll).then(poll, poll);\n }\n else {\n poll();\n }\n }\n ;\n };\n var poll = function () {\n var info = _this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n poll();\n };\n ObservableQuery.prototype.updateLastResult = function (newResult, variables) {\n if (variables === void 0) { variables = this.variables; }\n this.last = __assign(__assign({}, this.last), { result: this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult), variables: variables });\n if (!isNonEmptyArray(newResult.errors)) {\n delete this.last.error;\n }\n return this.last;\n };\n ObservableQuery.prototype.reobserveAsConcast = function (newOptions, newNetworkStatus) {\n var _this = this;\n this.isTornDown = false;\n var useDisposableConcast = newNetworkStatus === NetworkStatus.refetch ||\n newNetworkStatus === NetworkStatus.fetchMore ||\n newNetworkStatus === NetworkStatus.poll;\n var oldVariables = this.options.variables;\n var oldFetchPolicy = this.options.fetchPolicy;\n var mergedOptions = compact(this.options, newOptions || {});\n var options = useDisposableConcast\n ? mergedOptions\n : assign(this.options, mergedOptions);\n if (!useDisposableConcast) {\n this.updatePolling();\n if (newOptions &&\n newOptions.variables &&\n !equal(newOptions.variables, oldVariables) &&\n options.fetchPolicy !== \"standby\" &&\n options.fetchPolicy === oldFetchPolicy) {\n this.applyNextFetchPolicy(\"variables-changed\", options);\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n var variables = options.variables && __assign({}, options.variables);\n var _a = this.fetch(options, newNetworkStatus), concast = _a.concast, fromLink = _a.fromLink;\n var observer = {\n next: function (result) {\n _this.reportResult(result, variables);\n },\n error: function (error) {\n _this.reportError(error, variables);\n },\n };\n if (!useDisposableConcast && fromLink) {\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n }\n this.concast = concast;\n this.observer = observer;\n }\n concast.addObserver(observer);\n return concast;\n };\n ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {\n return this.reobserveAsConcast(newOptions, newNetworkStatus).promise;\n };\n ObservableQuery.prototype.observe = function () {\n this.reportResult(this.getCurrentResult(false), this.variables);\n };\n ObservableQuery.prototype.reportResult = function (result, variables) {\n var lastError = this.getLastError();\n if (lastError || this.isDifferentFromLastResult(result, variables)) {\n if (lastError || !result.partial || this.options.returnPartialData) {\n this.updateLastResult(result, variables);\n }\n iterateObserversSafely(this.observers, 'next', result);\n }\n };\n ObservableQuery.prototype.reportError = function (error, variables) {\n var errorResult = __assign(__assign({}, this.getLastResult()), { error: error, errors: error.graphQLErrors, networkStatus: NetworkStatus.error, loading: false });\n this.updateLastResult(errorResult, variables);\n iterateObserversSafely(this.observers, 'error', this.last.error = error);\n };\n ObservableQuery.prototype.hasObservers = function () {\n return this.observers.size > 0;\n };\n ObservableQuery.prototype.tearDownQuery = function () {\n if (this.isTornDown)\n return;\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n delete this.observer;\n }\n this.stopPolling();\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n };\n return ObservableQuery;\n}(Observable));\nexport { ObservableQuery };\nfixObservableSubclass(ObservableQuery);\nexport function reobserveCacheFirst(obsQuery) {\n var _a = obsQuery.options, fetchPolicy = _a.fetchPolicy, nextFetchPolicy = _a.nextFetchPolicy;\n if (fetchPolicy === \"cache-and-network\" ||\n fetchPolicy === \"network-only\") {\n return obsQuery.reobserve({\n fetchPolicy: \"cache-first\",\n nextFetchPolicy: function () {\n this.nextFetchPolicy = nextFetchPolicy;\n if (typeof nextFetchPolicy === \"function\") {\n return nextFetchPolicy.apply(this, arguments);\n }\n return fetchPolicy;\n },\n });\n }\n return obsQuery.reobserve();\n}\nfunction defaultSubscriptionObserverErrorCallback(error) {\n __DEV__ && invariant.error('Unhandled error', error.message, error.stack);\n}\nexport function logMissingFieldErrors(missing) {\n if (__DEV__ && missing) {\n __DEV__ && invariant.debug(\"Missing cache result fields: \".concat(JSON.stringify(missing)), missing);\n }\n}\n//# sourceMappingURL=ObservableQuery.js.map","import { Kind } from './kinds.mjs';\nexport function isDefinitionNode(node) {\n return (\n isExecutableDefinitionNode(node) ||\n isTypeSystemDefinitionNode(node) ||\n isTypeSystemExtensionNode(node)\n );\n}\nexport function isExecutableDefinitionNode(node) {\n return (\n node.kind === Kind.OPERATION_DEFINITION ||\n node.kind === Kind.FRAGMENT_DEFINITION\n );\n}\nexport function isSelectionNode(node) {\n return (\n node.kind === Kind.FIELD ||\n node.kind === Kind.FRAGMENT_SPREAD ||\n node.kind === Kind.INLINE_FRAGMENT\n );\n}\nexport function isValueNode(node) {\n return (\n node.kind === Kind.VARIABLE ||\n node.kind === Kind.INT ||\n node.kind === Kind.FLOAT ||\n node.kind === Kind.STRING ||\n node.kind === Kind.BOOLEAN ||\n node.kind === Kind.NULL ||\n node.kind === Kind.ENUM ||\n node.kind === Kind.LIST ||\n node.kind === Kind.OBJECT\n );\n}\nexport function isConstValueNode(node) {\n return (\n isValueNode(node) &&\n (node.kind === Kind.LIST\n ? node.values.some(isConstValueNode)\n : node.kind === Kind.OBJECT\n ? node.fields.some((field) => isConstValueNode(field.value))\n : node.kind !== Kind.VARIABLE)\n );\n}\nexport function isTypeNode(node) {\n return (\n node.kind === Kind.NAMED_TYPE ||\n node.kind === Kind.LIST_TYPE ||\n node.kind === Kind.NON_NULL_TYPE\n );\n}\nexport function isTypeSystemDefinitionNode(node) {\n return (\n node.kind === Kind.SCHEMA_DEFINITION ||\n isTypeDefinitionNode(node) ||\n node.kind === Kind.DIRECTIVE_DEFINITION\n );\n}\nexport function isTypeDefinitionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.ENUM_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION\n );\n}\nexport function isTypeSystemExtensionNode(node) {\n return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nexport function isTypeExtensionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_EXTENSION ||\n node.kind === Kind.OBJECT_TYPE_EXTENSION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION ||\n node.kind === Kind.UNION_TYPE_EXTENSION ||\n node.kind === Kind.ENUM_TYPE_EXTENSION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n );\n}\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { visit, BREAK, isSelectionNode, } from 'graphql';\nimport { argumentsObjectFromField, buildQueryFromSelectionSet, createFragmentMap, getFragmentDefinitions, getMainDefinition, hasDirectives, isField, isInlineFragment, mergeDeep, mergeDeepArray, removeClientSetsFromDocument, resultKeyNameFromField, shouldInclude, } from \"../utilities/index.js\";\nimport { cacheSlot } from \"../cache/index.js\";\nvar LocalState = (function () {\n function LocalState(_a) {\n var cache = _a.cache, client = _a.client, resolvers = _a.resolvers, fragmentMatcher = _a.fragmentMatcher;\n this.selectionsToResolveCache = new WeakMap();\n this.cache = cache;\n if (client) {\n this.client = client;\n }\n if (resolvers) {\n this.addResolvers(resolvers);\n }\n if (fragmentMatcher) {\n this.setFragmentMatcher(fragmentMatcher);\n }\n }\n LocalState.prototype.addResolvers = function (resolvers) {\n var _this = this;\n this.resolvers = this.resolvers || {};\n if (Array.isArray(resolvers)) {\n resolvers.forEach(function (resolverGroup) {\n _this.resolvers = mergeDeep(_this.resolvers, resolverGroup);\n });\n }\n else {\n this.resolvers = mergeDeep(this.resolvers, resolvers);\n }\n };\n LocalState.prototype.setResolvers = function (resolvers) {\n this.resolvers = {};\n this.addResolvers(resolvers);\n };\n LocalState.prototype.getResolvers = function () {\n return this.resolvers || {};\n };\n LocalState.prototype.runResolvers = function (_a) {\n var document = _a.document, remoteResult = _a.remoteResult, context = _a.context, variables = _a.variables, _b = _a.onlyRunForcedResolvers, onlyRunForcedResolvers = _b === void 0 ? false : _b;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n if (document) {\n return [2, this.resolveDocument(document, remoteResult.data, context, variables, this.fragmentMatcher, onlyRunForcedResolvers).then(function (localResult) { return (__assign(__assign({}, remoteResult), { data: localResult.result })); })];\n }\n return [2, remoteResult];\n });\n });\n };\n LocalState.prototype.setFragmentMatcher = function (fragmentMatcher) {\n this.fragmentMatcher = fragmentMatcher;\n };\n LocalState.prototype.getFragmentMatcher = function () {\n return this.fragmentMatcher;\n };\n LocalState.prototype.clientQuery = function (document) {\n if (hasDirectives(['client'], document)) {\n if (this.resolvers) {\n return document;\n }\n }\n return null;\n };\n LocalState.prototype.serverQuery = function (document) {\n return removeClientSetsFromDocument(document);\n };\n LocalState.prototype.prepareContext = function (context) {\n var cache = this.cache;\n return __assign(__assign({}, context), { cache: cache, getCacheKey: function (obj) {\n return cache.identify(obj);\n } });\n };\n LocalState.prototype.addExportedVariables = function (document, variables, context) {\n if (variables === void 0) { variables = {}; }\n if (context === void 0) { context = {}; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (document) {\n return [2, this.resolveDocument(document, this.buildRootValueFromCache(document, variables) || {}, this.prepareContext(context), variables).then(function (data) { return (__assign(__assign({}, variables), data.exportedVariables)); })];\n }\n return [2, __assign({}, variables)];\n });\n });\n };\n LocalState.prototype.shouldForceResolvers = function (document) {\n var forceResolvers = false;\n visit(document, {\n Directive: {\n enter: function (node) {\n if (node.name.value === 'client' && node.arguments) {\n forceResolvers = node.arguments.some(function (arg) {\n return arg.name.value === 'always' &&\n arg.value.kind === 'BooleanValue' &&\n arg.value.value === true;\n });\n if (forceResolvers) {\n return BREAK;\n }\n }\n },\n },\n });\n return forceResolvers;\n };\n LocalState.prototype.buildRootValueFromCache = function (document, variables) {\n return this.cache.diff({\n query: buildQueryFromSelectionSet(document),\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n };\n LocalState.prototype.resolveDocument = function (document, rootValue, context, variables, fragmentMatcher, onlyRunForcedResolvers) {\n if (context === void 0) { context = {}; }\n if (variables === void 0) { variables = {}; }\n if (fragmentMatcher === void 0) { fragmentMatcher = function () { return true; }; }\n if (onlyRunForcedResolvers === void 0) { onlyRunForcedResolvers = false; }\n return __awaiter(this, void 0, void 0, function () {\n var mainDefinition, fragments, fragmentMap, selectionsToResolve, definitionOperation, defaultOperationType, _a, cache, client, execContext, isClientFieldDescendant;\n return __generator(this, function (_b) {\n mainDefinition = getMainDefinition(document);\n fragments = getFragmentDefinitions(document);\n fragmentMap = createFragmentMap(fragments);\n selectionsToResolve = this.collectSelectionsToResolve(mainDefinition, fragmentMap);\n definitionOperation = mainDefinition.operation;\n defaultOperationType = definitionOperation\n ? definitionOperation.charAt(0).toUpperCase() +\n definitionOperation.slice(1)\n : 'Query';\n _a = this, cache = _a.cache, client = _a.client;\n execContext = {\n fragmentMap: fragmentMap,\n context: __assign(__assign({}, context), { cache: cache, client: client }),\n variables: variables,\n fragmentMatcher: fragmentMatcher,\n defaultOperationType: defaultOperationType,\n exportedVariables: {},\n selectionsToResolve: selectionsToResolve,\n onlyRunForcedResolvers: onlyRunForcedResolvers,\n };\n isClientFieldDescendant = false;\n return [2, this.resolveSelectionSet(mainDefinition.selectionSet, isClientFieldDescendant, rootValue, execContext).then(function (result) { return ({\n result: result,\n exportedVariables: execContext.exportedVariables,\n }); })];\n });\n });\n };\n LocalState.prototype.resolveSelectionSet = function (selectionSet, isClientFieldDescendant, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var fragmentMap, context, variables, resultsToMerge, execute;\n var _this = this;\n return __generator(this, function (_a) {\n fragmentMap = execContext.fragmentMap, context = execContext.context, variables = execContext.variables;\n resultsToMerge = [rootValue];\n execute = function (selection) { return __awaiter(_this, void 0, void 0, function () {\n var fragment, typeCondition;\n return __generator(this, function (_a) {\n if (!isClientFieldDescendant && !execContext.selectionsToResolve.has(selection)) {\n return [2];\n }\n if (!shouldInclude(selection, variables)) {\n return [2];\n }\n if (isField(selection)) {\n return [2, this.resolveField(selection, isClientFieldDescendant, rootValue, execContext).then(function (fieldResult) {\n var _a;\n if (typeof fieldResult !== 'undefined') {\n resultsToMerge.push((_a = {},\n _a[resultKeyNameFromField(selection)] = fieldResult,\n _a));\n }\n })];\n }\n if (isInlineFragment(selection)) {\n fragment = selection;\n }\n else {\n fragment = fragmentMap[selection.name.value];\n __DEV__ ? invariant(fragment, \"No fragment named \".concat(selection.name.value)) : invariant(fragment, 11);\n }\n if (fragment && fragment.typeCondition) {\n typeCondition = fragment.typeCondition.name.value;\n if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n return [2, this.resolveSelectionSet(fragment.selectionSet, isClientFieldDescendant, rootValue, execContext).then(function (fragmentResult) {\n resultsToMerge.push(fragmentResult);\n })];\n }\n }\n return [2];\n });\n }); };\n return [2, Promise.all(selectionSet.selections.map(execute)).then(function () {\n return mergeDeepArray(resultsToMerge);\n })];\n });\n });\n };\n LocalState.prototype.resolveField = function (field, isClientFieldDescendant, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var variables, fieldName, aliasedFieldName, aliasUsed, defaultResult, resultPromise, resolverType, resolverMap, resolve;\n var _this = this;\n return __generator(this, function (_a) {\n if (!rootValue) {\n return [2, null];\n }\n variables = execContext.variables;\n fieldName = field.name.value;\n aliasedFieldName = resultKeyNameFromField(field);\n aliasUsed = fieldName !== aliasedFieldName;\n defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n resultPromise = Promise.resolve(defaultResult);\n if (!execContext.onlyRunForcedResolvers ||\n this.shouldForceResolvers(field)) {\n resolverType = rootValue.__typename || execContext.defaultOperationType;\n resolverMap = this.resolvers && this.resolvers[resolverType];\n if (resolverMap) {\n resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n if (resolve) {\n resultPromise = Promise.resolve(cacheSlot.withValue(this.cache, resolve, [\n rootValue,\n argumentsObjectFromField(field, variables),\n execContext.context,\n { field: field, fragmentMap: execContext.fragmentMap },\n ]));\n }\n }\n }\n return [2, resultPromise.then(function (result) {\n var _a, _b;\n if (result === void 0) { result = defaultResult; }\n if (field.directives) {\n field.directives.forEach(function (directive) {\n if (directive.name.value === 'export' && directive.arguments) {\n directive.arguments.forEach(function (arg) {\n if (arg.name.value === 'as' && arg.value.kind === 'StringValue') {\n execContext.exportedVariables[arg.value.value] = result;\n }\n });\n }\n });\n }\n if (!field.selectionSet) {\n return result;\n }\n if (result == null) {\n return result;\n }\n var isClientField = (_b = (_a = field.directives) === null || _a === void 0 ? void 0 : _a.some(function (d) { return d.name.value === 'client'; })) !== null && _b !== void 0 ? _b : false;\n if (Array.isArray(result)) {\n return _this.resolveSubSelectedArray(field, isClientFieldDescendant || isClientField, result, execContext);\n }\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant || isClientField, result, execContext);\n }\n })];\n });\n });\n };\n LocalState.prototype.resolveSubSelectedArray = function (field, isClientFieldDescendant, result, execContext) {\n var _this = this;\n return Promise.all(result.map(function (item) {\n if (item === null) {\n return null;\n }\n if (Array.isArray(item)) {\n return _this.resolveSubSelectedArray(field, isClientFieldDescendant, item, execContext);\n }\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant, item, execContext);\n }\n }));\n };\n LocalState.prototype.collectSelectionsToResolve = function (mainDefinition, fragmentMap) {\n var isSingleASTNode = function (node) { return !Array.isArray(node); };\n var selectionsToResolveCache = this.selectionsToResolveCache;\n function collectByDefinition(definitionNode) {\n if (!selectionsToResolveCache.has(definitionNode)) {\n var matches_1 = new Set();\n selectionsToResolveCache.set(definitionNode, matches_1);\n visit(definitionNode, {\n Directive: function (node, _, __, ___, ancestors) {\n if (node.name.value === 'client') {\n ancestors.forEach(function (node) {\n if (isSingleASTNode(node) && isSelectionNode(node)) {\n matches_1.add(node);\n }\n });\n }\n },\n FragmentSpread: function (spread, _, __, ___, ancestors) {\n var fragment = fragmentMap[spread.name.value];\n __DEV__ ? invariant(fragment, \"No fragment named \".concat(spread.name.value)) : invariant(fragment, 12);\n var fragmentSelections = collectByDefinition(fragment);\n if (fragmentSelections.size > 0) {\n ancestors.forEach(function (node) {\n if (isSingleASTNode(node) && isSelectionNode(node)) {\n matches_1.add(node);\n }\n });\n matches_1.add(spread);\n fragmentSelections.forEach(function (selection) {\n matches_1.add(selection);\n });\n }\n }\n });\n }\n return selectionsToResolveCache.get(definitionNode);\n }\n return collectByDefinition(mainDefinition);\n };\n return LocalState;\n}());\nexport { LocalState };\n//# sourceMappingURL=LocalState.js.map","import { __assign } from \"tslib\";\nimport { equal } from \"@wry/equality\";\nimport { DeepMerger } from \"../utilities/index.js\";\nimport { mergeIncrementalData } from \"../utilities/common/incrementalResult.js\";\nimport { reobserveCacheFirst } from \"./ObservableQuery.js\";\nimport { isNonEmptyArray, graphQLResultHasError, canUseWeakMap, } from \"../utilities/index.js\";\nimport { NetworkStatus, isNetworkRequestInFlight, } from \"./networkStatus.js\";\n;\nvar destructiveMethodCounts = new (canUseWeakMap ? WeakMap : Map)();\nfunction wrapDestructiveCacheMethod(cache, methodName) {\n var original = cache[methodName];\n if (typeof original === \"function\") {\n cache[methodName] = function () {\n destructiveMethodCounts.set(cache, (destructiveMethodCounts.get(cache) + 1) % 1e15);\n return original.apply(this, arguments);\n };\n }\n}\nfunction cancelNotifyTimeout(info) {\n if (info[\"notifyTimeout\"]) {\n clearTimeout(info[\"notifyTimeout\"]);\n info[\"notifyTimeout\"] = void 0;\n }\n}\nvar QueryInfo = (function () {\n function QueryInfo(queryManager, queryId) {\n if (queryId === void 0) { queryId = queryManager.generateQueryId(); }\n this.queryId = queryId;\n this.listeners = new Set();\n this.document = null;\n this.lastRequestId = 1;\n this.subscriptions = new Set();\n this.stopped = false;\n this.dirty = false;\n this.observableQuery = null;\n var cache = this.cache = queryManager.cache;\n if (!destructiveMethodCounts.has(cache)) {\n destructiveMethodCounts.set(cache, 0);\n wrapDestructiveCacheMethod(cache, \"evict\");\n wrapDestructiveCacheMethod(cache, \"modify\");\n wrapDestructiveCacheMethod(cache, \"reset\");\n }\n }\n QueryInfo.prototype.init = function (query) {\n var networkStatus = query.networkStatus || NetworkStatus.loading;\n if (this.variables &&\n this.networkStatus !== NetworkStatus.loading &&\n !equal(this.variables, query.variables)) {\n networkStatus = NetworkStatus.setVariables;\n }\n if (!equal(query.variables, this.variables)) {\n this.lastDiff = void 0;\n }\n Object.assign(this, {\n document: query.document,\n variables: query.variables,\n networkError: null,\n graphQLErrors: this.graphQLErrors || [],\n networkStatus: networkStatus,\n });\n if (query.observableQuery) {\n this.setObservableQuery(query.observableQuery);\n }\n if (query.lastRequestId) {\n this.lastRequestId = query.lastRequestId;\n }\n return this;\n };\n QueryInfo.prototype.reset = function () {\n cancelNotifyTimeout(this);\n this.dirty = false;\n };\n QueryInfo.prototype.getDiff = function (variables) {\n if (variables === void 0) { variables = this.variables; }\n var options = this.getDiffOptions(variables);\n if (this.lastDiff && equal(options, this.lastDiff.options)) {\n return this.lastDiff.diff;\n }\n this.updateWatch(this.variables = variables);\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return { complete: false };\n }\n var diff = this.cache.diff(options);\n this.updateLastDiff(diff, options);\n return diff;\n };\n QueryInfo.prototype.updateLastDiff = function (diff, options) {\n this.lastDiff = diff ? {\n diff: diff,\n options: options || this.getDiffOptions(),\n } : void 0;\n };\n QueryInfo.prototype.getDiffOptions = function (variables) {\n var _a;\n if (variables === void 0) { variables = this.variables; }\n return {\n query: this.document,\n variables: variables,\n returnPartialData: true,\n optimistic: true,\n canonizeResults: (_a = this.observableQuery) === null || _a === void 0 ? void 0 : _a.options.canonizeResults,\n };\n };\n QueryInfo.prototype.setDiff = function (diff) {\n var _this = this;\n var oldDiff = this.lastDiff && this.lastDiff.diff;\n this.updateLastDiff(diff);\n if (!this.dirty &&\n !equal(oldDiff && oldDiff.result, diff && diff.result)) {\n this.dirty = true;\n if (!this.notifyTimeout) {\n this.notifyTimeout = setTimeout(function () { return _this.notify(); }, 0);\n }\n }\n };\n QueryInfo.prototype.setObservableQuery = function (oq) {\n var _this = this;\n if (oq === this.observableQuery)\n return;\n if (this.oqListener) {\n this.listeners.delete(this.oqListener);\n }\n this.observableQuery = oq;\n if (oq) {\n oq[\"queryInfo\"] = this;\n this.listeners.add(this.oqListener = function () {\n var diff = _this.getDiff();\n if (diff.fromOptimisticTransaction) {\n oq[\"observe\"]();\n }\n else {\n reobserveCacheFirst(oq);\n }\n });\n }\n else {\n delete this.oqListener;\n }\n };\n QueryInfo.prototype.notify = function () {\n var _this = this;\n cancelNotifyTimeout(this);\n if (this.shouldNotify()) {\n this.listeners.forEach(function (listener) { return listener(_this); });\n }\n this.dirty = false;\n };\n QueryInfo.prototype.shouldNotify = function () {\n if (!this.dirty || !this.listeners.size) {\n return false;\n }\n if (isNetworkRequestInFlight(this.networkStatus) &&\n this.observableQuery) {\n var fetchPolicy = this.observableQuery.options.fetchPolicy;\n if (fetchPolicy !== \"cache-only\" &&\n fetchPolicy !== \"cache-and-network\") {\n return false;\n }\n }\n return true;\n };\n QueryInfo.prototype.stop = function () {\n if (!this.stopped) {\n this.stopped = true;\n this.reset();\n this.cancel();\n this.cancel = QueryInfo.prototype.cancel;\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n var oq = this.observableQuery;\n if (oq)\n oq.stopPolling();\n }\n };\n QueryInfo.prototype.cancel = function () { };\n QueryInfo.prototype.updateWatch = function (variables) {\n var _this = this;\n if (variables === void 0) { variables = this.variables; }\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return;\n }\n var watchOptions = __assign(__assign({}, this.getDiffOptions(variables)), { watcher: this, callback: function (diff) { return _this.setDiff(diff); } });\n if (!this.lastWatch ||\n !equal(watchOptions, this.lastWatch)) {\n this.cancel();\n this.cancel = this.cache.watch(this.lastWatch = watchOptions);\n }\n };\n QueryInfo.prototype.resetLastWrite = function () {\n this.lastWrite = void 0;\n };\n QueryInfo.prototype.shouldWrite = function (result, variables) {\n var lastWrite = this.lastWrite;\n return !(lastWrite &&\n lastWrite.dmCount === destructiveMethodCounts.get(this.cache) &&\n equal(variables, lastWrite.variables) &&\n equal(result.data, lastWrite.result.data));\n };\n QueryInfo.prototype.markResult = function (result, document, options, cacheWriteBehavior) {\n var _this = this;\n var merger = new DeepMerger();\n var graphQLErrors = isNonEmptyArray(result.errors)\n ? result.errors.slice(0)\n : [];\n this.reset();\n if ('incremental' in result && isNonEmptyArray(result.incremental)) {\n var mergedData = mergeIncrementalData(this.getDiff().result, result);\n result.data = mergedData;\n }\n else if ('hasNext' in result && result.hasNext) {\n var diff = this.getDiff();\n result.data = merger.merge(diff.result, result.data);\n }\n this.graphQLErrors = graphQLErrors;\n if (options.fetchPolicy === 'no-cache') {\n this.updateLastDiff({ result: result.data, complete: true }, this.getDiffOptions(options.variables));\n }\n else if (cacheWriteBehavior !== 0) {\n if (shouldWriteResult(result, options.errorPolicy)) {\n this.cache.performTransaction(function (cache) {\n if (_this.shouldWrite(result, options.variables)) {\n cache.writeQuery({\n query: document,\n data: result.data,\n variables: options.variables,\n overwrite: cacheWriteBehavior === 1,\n });\n _this.lastWrite = {\n result: result,\n variables: options.variables,\n dmCount: destructiveMethodCounts.get(_this.cache),\n };\n }\n else {\n if (_this.lastDiff &&\n _this.lastDiff.diff.complete) {\n result.data = _this.lastDiff.diff.result;\n return;\n }\n }\n var diffOptions = _this.getDiffOptions(options.variables);\n var diff = cache.diff(diffOptions);\n if (!_this.stopped) {\n _this.updateWatch(options.variables);\n }\n _this.updateLastDiff(diff, diffOptions);\n if (diff.complete) {\n result.data = diff.result;\n }\n });\n }\n else {\n this.lastWrite = void 0;\n }\n }\n };\n QueryInfo.prototype.markReady = function () {\n this.networkError = null;\n return this.networkStatus = NetworkStatus.ready;\n };\n QueryInfo.prototype.markError = function (error) {\n this.networkStatus = NetworkStatus.error;\n this.lastWrite = void 0;\n this.reset();\n if (error.graphQLErrors) {\n this.graphQLErrors = error.graphQLErrors;\n }\n if (error.networkError) {\n this.networkError = error.networkError;\n }\n return error;\n };\n return QueryInfo;\n}());\nexport { QueryInfo };\nexport function shouldWriteResult(result, errorPolicy) {\n if (errorPolicy === void 0) { errorPolicy = \"none\"; }\n var ignoreErrors = errorPolicy === \"ignore\" ||\n errorPolicy === \"all\";\n var writeWithErrors = !graphQLResultHasError(result);\n if (!writeWithErrors && ignoreErrors && result.data) {\n writeWithErrors = true;\n }\n return writeWithErrors;\n}\n//# sourceMappingURL=QueryInfo.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant, InvariantError } from \"../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { execute } from \"../link/core/index.js\";\nimport { isExecutionPatchIncrementalResult, isExecutionPatchResult, } from \"../utilities/common/incrementalResult.js\";\nimport { canonicalStringify } from \"../cache/index.js\";\nimport { getDefaultValues, getOperationDefinition, getOperationName, hasClientExports, graphQLResultHasError, getGraphQLErrorsFromResult, removeConnectionDirectiveFromDocument, canUseWeakMap, Observable, asyncMap, isNonEmptyArray, Concast, makeUniqueId, isDocumentNode, isNonNullObject, } from \"../utilities/index.js\";\nimport { mergeIncrementalData } from \"../utilities/common/incrementalResult.js\";\nimport { ApolloError, isApolloError, graphQLResultHasProtocolErrors } from \"../errors/index.js\";\nimport { ObservableQuery, logMissingFieldErrors } from \"./ObservableQuery.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { LocalState } from \"./LocalState.js\";\nimport { QueryInfo, shouldWriteResult, } from \"./QueryInfo.js\";\nimport { PROTOCOL_ERRORS_SYMBOL } from \"../errors/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar QueryManager = (function () {\n function QueryManager(_a) {\n var cache = _a.cache, link = _a.link, defaultOptions = _a.defaultOptions, _b = _a.queryDeduplication, queryDeduplication = _b === void 0 ? false : _b, onBroadcast = _a.onBroadcast, _c = _a.ssrMode, ssrMode = _c === void 0 ? false : _c, _d = _a.clientAwareness, clientAwareness = _d === void 0 ? {} : _d, localState = _a.localState, assumeImmutableResults = _a.assumeImmutableResults;\n this.clientAwareness = {};\n this.queries = new Map();\n this.fetchCancelFns = new Map();\n this.transformCache = new (canUseWeakMap ? WeakMap : Map)();\n this.queryIdCounter = 1;\n this.requestIdCounter = 1;\n this.mutationIdCounter = 1;\n this.inFlightLinkObservables = new Map();\n this.cache = cache;\n this.link = link;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.queryDeduplication = queryDeduplication;\n this.clientAwareness = clientAwareness;\n this.localState = localState || new LocalState({ cache: cache });\n this.ssrMode = ssrMode;\n this.assumeImmutableResults = !!assumeImmutableResults;\n if ((this.onBroadcast = onBroadcast)) {\n this.mutationStore = Object.create(null);\n }\n }\n QueryManager.prototype.stop = function () {\n var _this = this;\n this.queries.forEach(function (_info, queryId) {\n _this.stopQueryNoBroadcast(queryId);\n });\n this.cancelPendingFetches(__DEV__ ? new InvariantError('QueryManager stopped while query was in flight') : new InvariantError(14));\n };\n QueryManager.prototype.cancelPendingFetches = function (error) {\n this.fetchCancelFns.forEach(function (cancel) { return cancel(error); });\n this.fetchCancelFns.clear();\n };\n QueryManager.prototype.mutate = function (_a) {\n var _b, _c;\n var mutation = _a.mutation, variables = _a.variables, optimisticResponse = _a.optimisticResponse, updateQueries = _a.updateQueries, _d = _a.refetchQueries, refetchQueries = _d === void 0 ? [] : _d, _e = _a.awaitRefetchQueries, awaitRefetchQueries = _e === void 0 ? false : _e, updateWithProxyFn = _a.update, onQueryUpdated = _a.onQueryUpdated, _f = _a.fetchPolicy, fetchPolicy = _f === void 0 ? ((_b = this.defaultOptions.mutate) === null || _b === void 0 ? void 0 : _b.fetchPolicy) || \"network-only\" : _f, _g = _a.errorPolicy, errorPolicy = _g === void 0 ? ((_c = this.defaultOptions.mutate) === null || _c === void 0 ? void 0 : _c.errorPolicy) || \"none\" : _g, keepRootFields = _a.keepRootFields, context = _a.context;\n return __awaiter(this, void 0, void 0, function () {\n var mutationId, _h, document, hasClientExports, mutationStoreValue, self;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n __DEV__ ? invariant(mutation, 'mutation option is required. You must specify your GraphQL document in the mutation option.') : invariant(mutation, 15);\n __DEV__ ? invariant(fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache', \"Mutations support only 'network-only' or 'no-cache' fetchPolicy strings. The default `network-only` behavior automatically writes mutation results to the cache. Passing `no-cache` skips the cache write.\") : invariant(fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache', 16);\n mutationId = this.generateMutationId();\n _h = this.transform(mutation), document = _h.document, hasClientExports = _h.hasClientExports;\n mutation = this.cache.transformForLink(document);\n variables = this.getVariables(mutation, variables);\n if (!hasClientExports) return [3, 2];\n return [4, this.localState.addExportedVariables(mutation, variables, context)];\n case 1:\n variables = (_j.sent());\n _j.label = 2;\n case 2:\n mutationStoreValue = this.mutationStore &&\n (this.mutationStore[mutationId] = {\n mutation: mutation,\n variables: variables,\n loading: true,\n error: null,\n });\n if (optimisticResponse) {\n this.markMutationOptimistic(optimisticResponse, {\n mutationId: mutationId,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n updateQueries: updateQueries,\n update: updateWithProxyFn,\n keepRootFields: keepRootFields,\n });\n }\n this.broadcastQueries();\n self = this;\n return [2, new Promise(function (resolve, reject) {\n return asyncMap(self.getObservableFromLink(mutation, __assign(__assign({}, context), { optimisticResponse: optimisticResponse }), variables, false), function (result) {\n if (graphQLResultHasError(result) && errorPolicy === 'none') {\n throw new ApolloError({\n graphQLErrors: getGraphQLErrorsFromResult(result),\n });\n }\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = null;\n }\n var storeResult = __assign({}, result);\n if (typeof refetchQueries === \"function\") {\n refetchQueries = refetchQueries(storeResult);\n }\n if (errorPolicy === 'ignore' &&\n graphQLResultHasError(storeResult)) {\n delete storeResult.errors;\n }\n return self.markMutationResult({\n mutationId: mutationId,\n result: storeResult,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n update: updateWithProxyFn,\n updateQueries: updateQueries,\n awaitRefetchQueries: awaitRefetchQueries,\n refetchQueries: refetchQueries,\n removeOptimistic: optimisticResponse ? mutationId : void 0,\n onQueryUpdated: onQueryUpdated,\n keepRootFields: keepRootFields,\n });\n }).subscribe({\n next: function (storeResult) {\n self.broadcastQueries();\n if (!('hasNext' in storeResult) || storeResult.hasNext === false) {\n resolve(storeResult);\n }\n },\n error: function (err) {\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = err;\n }\n if (optimisticResponse) {\n self.cache.removeOptimistic(mutationId);\n }\n self.broadcastQueries();\n reject(err instanceof ApolloError ? err : new ApolloError({\n networkError: err,\n }));\n },\n });\n })];\n }\n });\n });\n };\n QueryManager.prototype.markMutationResult = function (mutation, cache) {\n var _this = this;\n if (cache === void 0) { cache = this.cache; }\n var result = mutation.result;\n var cacheWrites = [];\n var skipCache = mutation.fetchPolicy === \"no-cache\";\n if (!skipCache && shouldWriteResult(result, mutation.errorPolicy)) {\n if (!isExecutionPatchIncrementalResult(result)) {\n cacheWrites.push({\n result: result.data,\n dataId: 'ROOT_MUTATION',\n query: mutation.document,\n variables: mutation.variables,\n });\n }\n if (isExecutionPatchIncrementalResult(result) && isNonEmptyArray(result.incremental)) {\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n query: this.transform(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true,\n });\n var mergedData = void 0;\n if (diff.result) {\n mergedData = mergeIncrementalData(diff.result, result);\n }\n if (typeof mergedData !== 'undefined') {\n result.data = mergedData;\n cacheWrites.push({\n result: mergedData,\n dataId: 'ROOT_MUTATION',\n query: mutation.document,\n variables: mutation.variables,\n });\n }\n }\n var updateQueries_1 = mutation.updateQueries;\n if (updateQueries_1) {\n this.queries.forEach(function (_a, queryId) {\n var observableQuery = _a.observableQuery;\n var queryName = observableQuery && observableQuery.queryName;\n if (!queryName || !hasOwnProperty.call(updateQueries_1, queryName)) {\n return;\n }\n var updater = updateQueries_1[queryName];\n var _b = _this.queries.get(queryId), document = _b.document, variables = _b.variables;\n var _c = cache.diff({\n query: document,\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }), currentQueryResult = _c.result, complete = _c.complete;\n if (complete && currentQueryResult) {\n var nextQueryResult = updater(currentQueryResult, {\n mutationResult: result,\n queryName: document && getOperationName(document) || void 0,\n queryVariables: variables,\n });\n if (nextQueryResult) {\n cacheWrites.push({\n result: nextQueryResult,\n dataId: 'ROOT_QUERY',\n query: document,\n variables: variables,\n });\n }\n }\n });\n }\n }\n if (cacheWrites.length > 0 ||\n mutation.refetchQueries ||\n mutation.update ||\n mutation.onQueryUpdated ||\n mutation.removeOptimistic) {\n var results_1 = [];\n this.refetchQueries({\n updateCache: function (cache) {\n if (!skipCache) {\n cacheWrites.forEach(function (write) { return cache.write(write); });\n }\n var update = mutation.update;\n var isFinalResult = !isExecutionPatchResult(result) ||\n (isExecutionPatchIncrementalResult(result) && !result.hasNext);\n if (update) {\n if (!skipCache) {\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n query: _this.transform(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true,\n });\n if (diff.complete) {\n result = __assign(__assign({}, result), { data: diff.result });\n if ('incremental' in result) {\n delete result.incremental;\n }\n if ('hasNext' in result) {\n delete result.hasNext;\n }\n }\n }\n if (isFinalResult) {\n update(cache, result, {\n context: mutation.context,\n variables: mutation.variables,\n });\n }\n }\n if (!skipCache && !mutation.keepRootFields && isFinalResult) {\n cache.modify({\n id: 'ROOT_MUTATION',\n fields: function (value, _a) {\n var fieldName = _a.fieldName, DELETE = _a.DELETE;\n return fieldName === \"__typename\" ? value : DELETE;\n },\n });\n }\n },\n include: mutation.refetchQueries,\n optimistic: false,\n removeOptimistic: mutation.removeOptimistic,\n onQueryUpdated: mutation.onQueryUpdated || null,\n }).forEach(function (result) { return results_1.push(result); });\n if (mutation.awaitRefetchQueries || mutation.onQueryUpdated) {\n return Promise.all(results_1).then(function () { return result; });\n }\n }\n return Promise.resolve(result);\n };\n QueryManager.prototype.markMutationOptimistic = function (optimisticResponse, mutation) {\n var _this = this;\n var data = typeof optimisticResponse === \"function\"\n ? optimisticResponse(mutation.variables)\n : optimisticResponse;\n return this.cache.recordOptimisticTransaction(function (cache) {\n try {\n _this.markMutationResult(__assign(__assign({}, mutation), { result: { data: data } }), cache);\n }\n catch (error) {\n __DEV__ && invariant.error(error);\n }\n }, mutation.mutationId);\n };\n QueryManager.prototype.fetchQuery = function (queryId, options, networkStatus) {\n return this.fetchQueryObservable(queryId, options, networkStatus).promise;\n };\n QueryManager.prototype.getQueryStore = function () {\n var store = Object.create(null);\n this.queries.forEach(function (info, queryId) {\n store[queryId] = {\n variables: info.variables,\n networkStatus: info.networkStatus,\n networkError: info.networkError,\n graphQLErrors: info.graphQLErrors,\n };\n });\n return store;\n };\n QueryManager.prototype.resetErrors = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo) {\n queryInfo.networkError = undefined;\n queryInfo.graphQLErrors = [];\n }\n };\n QueryManager.prototype.transform = function (document) {\n var transformCache = this.transformCache;\n if (!transformCache.has(document)) {\n var transformed = this.cache.transformDocument(document);\n var noConnection = removeConnectionDirectiveFromDocument(transformed);\n var clientQuery = this.localState.clientQuery(transformed);\n var serverQuery = noConnection && this.localState.serverQuery(noConnection);\n var cacheEntry_1 = {\n document: transformed,\n hasClientExports: hasClientExports(transformed),\n hasForcedResolvers: this.localState.shouldForceResolvers(transformed),\n clientQuery: clientQuery,\n serverQuery: serverQuery,\n defaultVars: getDefaultValues(getOperationDefinition(transformed)),\n asQuery: __assign(__assign({}, transformed), { definitions: transformed.definitions.map(function (def) {\n if (def.kind === \"OperationDefinition\" &&\n def.operation !== \"query\") {\n return __assign(__assign({}, def), { operation: \"query\" });\n }\n return def;\n }) })\n };\n var add = function (doc) {\n if (doc && !transformCache.has(doc)) {\n transformCache.set(doc, cacheEntry_1);\n }\n };\n add(document);\n add(transformed);\n add(clientQuery);\n add(serverQuery);\n }\n return transformCache.get(document);\n };\n QueryManager.prototype.getVariables = function (document, variables) {\n return __assign(__assign({}, this.transform(document).defaultVars), variables);\n };\n QueryManager.prototype.watchQuery = function (options) {\n options = __assign(__assign({}, options), { variables: this.getVariables(options.query, options.variables) });\n if (typeof options.notifyOnNetworkStatusChange === 'undefined') {\n options.notifyOnNetworkStatusChange = false;\n }\n var queryInfo = new QueryInfo(this);\n var observable = new ObservableQuery({\n queryManager: this,\n queryInfo: queryInfo,\n options: options,\n });\n this.queries.set(observable.queryId, queryInfo);\n queryInfo.init({\n document: observable.query,\n observableQuery: observable,\n variables: observable.variables,\n });\n return observable;\n };\n QueryManager.prototype.query = function (options, queryId) {\n var _this = this;\n if (queryId === void 0) { queryId = this.generateQueryId(); }\n __DEV__ ? invariant(options.query, 'query option is required. You must specify your GraphQL document ' +\n 'in the query option.') : invariant(options.query, 17);\n __DEV__ ? invariant(options.query.kind === 'Document', 'You must wrap the query string in a \"gql\" tag.') : invariant(options.query.kind === 'Document', 18);\n __DEV__ ? invariant(!options.returnPartialData, 'returnPartialData option only supported on watchQuery.') : invariant(!options.returnPartialData, 19);\n __DEV__ ? invariant(!options.pollInterval, 'pollInterval option only supported on watchQuery.') : invariant(!options.pollInterval, 20);\n return this.fetchQuery(queryId, options).finally(function () { return _this.stopQuery(queryId); });\n };\n QueryManager.prototype.generateQueryId = function () {\n return String(this.queryIdCounter++);\n };\n QueryManager.prototype.generateRequestId = function () {\n return this.requestIdCounter++;\n };\n QueryManager.prototype.generateMutationId = function () {\n return String(this.mutationIdCounter++);\n };\n QueryManager.prototype.stopQueryInStore = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryInStoreNoBroadcast = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo)\n queryInfo.stop();\n };\n QueryManager.prototype.clearStore = function (options) {\n if (options === void 0) { options = {\n discardWatches: true,\n }; }\n this.cancelPendingFetches(__DEV__ ? new InvariantError('Store reset while query was in flight (not completed in link chain)') : new InvariantError(21));\n this.queries.forEach(function (queryInfo) {\n if (queryInfo.observableQuery) {\n queryInfo.networkStatus = NetworkStatus.loading;\n }\n else {\n queryInfo.stop();\n }\n });\n if (this.mutationStore) {\n this.mutationStore = Object.create(null);\n }\n return this.cache.reset(options);\n };\n QueryManager.prototype.getObservableQueries = function (include) {\n var _this = this;\n if (include === void 0) { include = \"active\"; }\n var queries = new Map();\n var queryNamesAndDocs = new Map();\n var legacyQueryOptions = new Set();\n if (Array.isArray(include)) {\n include.forEach(function (desc) {\n if (typeof desc === \"string\") {\n queryNamesAndDocs.set(desc, false);\n }\n else if (isDocumentNode(desc)) {\n queryNamesAndDocs.set(_this.transform(desc).document, false);\n }\n else if (isNonNullObject(desc) && desc.query) {\n legacyQueryOptions.add(desc);\n }\n });\n }\n this.queries.forEach(function (_a, queryId) {\n var oq = _a.observableQuery, document = _a.document;\n if (oq) {\n if (include === \"all\") {\n queries.set(queryId, oq);\n return;\n }\n var queryName = oq.queryName, fetchPolicy = oq.options.fetchPolicy;\n if (fetchPolicy === \"standby\" ||\n (include === \"active\" && !oq.hasObservers())) {\n return;\n }\n if (include === \"active\" ||\n (queryName && queryNamesAndDocs.has(queryName)) ||\n (document && queryNamesAndDocs.has(document))) {\n queries.set(queryId, oq);\n if (queryName)\n queryNamesAndDocs.set(queryName, true);\n if (document)\n queryNamesAndDocs.set(document, true);\n }\n }\n });\n if (legacyQueryOptions.size) {\n legacyQueryOptions.forEach(function (options) {\n var queryId = makeUniqueId(\"legacyOneTimeQuery\");\n var queryInfo = _this.getQuery(queryId).init({\n document: options.query,\n variables: options.variables,\n });\n var oq = new ObservableQuery({\n queryManager: _this,\n queryInfo: queryInfo,\n options: __assign(__assign({}, options), { fetchPolicy: \"network-only\" }),\n });\n invariant(oq.queryId === queryId);\n queryInfo.setObservableQuery(oq);\n queries.set(queryId, oq);\n });\n }\n if (__DEV__ && queryNamesAndDocs.size) {\n queryNamesAndDocs.forEach(function (included, nameOrDoc) {\n if (!included) {\n __DEV__ && invariant.warn(\"Unknown query \".concat(typeof nameOrDoc === \"string\" ? \"named \" : \"\").concat(JSON.stringify(nameOrDoc, null, 2), \" requested in refetchQueries options.include array\"));\n }\n });\n }\n return queries;\n };\n QueryManager.prototype.reFetchObservableQueries = function (includeStandby) {\n var _this = this;\n if (includeStandby === void 0) { includeStandby = false; }\n var observableQueryPromises = [];\n this.getObservableQueries(includeStandby ? \"all\" : \"active\").forEach(function (observableQuery, queryId) {\n var fetchPolicy = observableQuery.options.fetchPolicy;\n observableQuery.resetLastResults();\n if (includeStandby ||\n (fetchPolicy !== \"standby\" &&\n fetchPolicy !== \"cache-only\")) {\n observableQueryPromises.push(observableQuery.refetch());\n }\n _this.getQuery(queryId).setDiff(null);\n });\n this.broadcastQueries();\n return Promise.all(observableQueryPromises);\n };\n QueryManager.prototype.setObservableQuery = function (observableQuery) {\n this.getQuery(observableQuery.queryId).setObservableQuery(observableQuery);\n };\n QueryManager.prototype.startGraphQLSubscription = function (_a) {\n var _this = this;\n var query = _a.query, fetchPolicy = _a.fetchPolicy, errorPolicy = _a.errorPolicy, variables = _a.variables, _b = _a.context, context = _b === void 0 ? {} : _b;\n query = this.transform(query).document;\n variables = this.getVariables(query, variables);\n var makeObservable = function (variables) {\n return _this.getObservableFromLink(query, context, variables).map(function (result) {\n if (fetchPolicy !== 'no-cache') {\n if (shouldWriteResult(result, errorPolicy)) {\n _this.cache.write({\n query: query,\n result: result.data,\n dataId: 'ROOT_SUBSCRIPTION',\n variables: variables,\n });\n }\n _this.broadcastQueries();\n }\n var hasErrors = graphQLResultHasError(result);\n var hasProtocolErrors = graphQLResultHasProtocolErrors(result);\n if (hasErrors || hasProtocolErrors) {\n var errors = {};\n if (hasErrors) {\n errors.graphQLErrors = result.errors;\n }\n if (hasProtocolErrors) {\n errors.protocolErrors = result.extensions[PROTOCOL_ERRORS_SYMBOL];\n }\n throw new ApolloError(errors);\n }\n return result;\n });\n };\n if (this.transform(query).hasClientExports) {\n var observablePromise_1 = this.localState.addExportedVariables(query, variables, context).then(makeObservable);\n return new Observable(function (observer) {\n var sub = null;\n observablePromise_1.then(function (observable) { return sub = observable.subscribe(observer); }, observer.error);\n return function () { return sub && sub.unsubscribe(); };\n });\n }\n return makeObservable(variables);\n };\n QueryManager.prototype.stopQuery = function (queryId) {\n this.stopQueryNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryNoBroadcast = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.removeQuery(queryId);\n };\n QueryManager.prototype.removeQuery = function (queryId) {\n this.fetchCancelFns.delete(queryId);\n if (this.queries.has(queryId)) {\n this.getQuery(queryId).stop();\n this.queries.delete(queryId);\n }\n };\n QueryManager.prototype.broadcastQueries = function () {\n if (this.onBroadcast)\n this.onBroadcast();\n this.queries.forEach(function (info) { return info.notify(); });\n };\n QueryManager.prototype.getLocalState = function () {\n return this.localState;\n };\n QueryManager.prototype.getObservableFromLink = function (query, context, variables, deduplication) {\n var _this = this;\n var _a;\n if (deduplication === void 0) { deduplication = (_a = context === null || context === void 0 ? void 0 : context.queryDeduplication) !== null && _a !== void 0 ? _a : this.queryDeduplication; }\n var observable;\n var serverQuery = this.transform(query).serverQuery;\n if (serverQuery) {\n var _b = this, inFlightLinkObservables_1 = _b.inFlightLinkObservables, link = _b.link;\n var operation = {\n query: serverQuery,\n variables: variables,\n operationName: getOperationName(serverQuery) || void 0,\n context: this.prepareContext(__assign(__assign({}, context), { forceFetch: !deduplication })),\n };\n context = operation.context;\n if (deduplication) {\n var byVariables_1 = inFlightLinkObservables_1.get(serverQuery) || new Map();\n inFlightLinkObservables_1.set(serverQuery, byVariables_1);\n var varJson_1 = canonicalStringify(variables);\n observable = byVariables_1.get(varJson_1);\n if (!observable) {\n var concast = new Concast([\n execute(link, operation)\n ]);\n byVariables_1.set(varJson_1, observable = concast);\n concast.beforeNext(function () {\n if (byVariables_1.delete(varJson_1) &&\n byVariables_1.size < 1) {\n inFlightLinkObservables_1.delete(serverQuery);\n }\n });\n }\n }\n else {\n observable = new Concast([\n execute(link, operation)\n ]);\n }\n }\n else {\n observable = new Concast([\n Observable.of({ data: {} })\n ]);\n context = this.prepareContext(context);\n }\n var clientQuery = this.transform(query).clientQuery;\n if (clientQuery) {\n observable = asyncMap(observable, function (result) {\n return _this.localState.runResolvers({\n document: clientQuery,\n remoteResult: result,\n context: context,\n variables: variables,\n });\n });\n }\n return observable;\n };\n QueryManager.prototype.getResultsFromLink = function (queryInfo, cacheWriteBehavior, options) {\n var requestId = queryInfo.lastRequestId = this.generateRequestId();\n var linkDocument = this.cache.transformForLink(this.transform(queryInfo.document).document);\n return asyncMap(this.getObservableFromLink(linkDocument, options.context, options.variables), function (result) {\n var graphQLErrors = getGraphQLErrorsFromResult(result);\n var hasErrors = graphQLErrors.length > 0;\n if (requestId >= queryInfo.lastRequestId) {\n if (hasErrors && options.errorPolicy === \"none\") {\n throw queryInfo.markError(new ApolloError({\n graphQLErrors: graphQLErrors,\n }));\n }\n queryInfo.markResult(result, linkDocument, options, cacheWriteBehavior);\n queryInfo.markReady();\n }\n var aqr = {\n data: result.data,\n loading: false,\n networkStatus: NetworkStatus.ready,\n };\n if (hasErrors && options.errorPolicy !== \"ignore\") {\n aqr.errors = graphQLErrors;\n aqr.networkStatus = NetworkStatus.error;\n }\n return aqr;\n }, function (networkError) {\n var error = isApolloError(networkError)\n ? networkError\n : new ApolloError({ networkError: networkError });\n if (requestId >= queryInfo.lastRequestId) {\n queryInfo.markError(error);\n }\n throw error;\n });\n };\n QueryManager.prototype.fetchQueryObservable = function (queryId, options, networkStatus) {\n return this.fetchConcastWithInfo(queryId, options, networkStatus).concast;\n };\n QueryManager.prototype.fetchConcastWithInfo = function (queryId, options, networkStatus) {\n var _this = this;\n if (networkStatus === void 0) { networkStatus = NetworkStatus.loading; }\n var query = this.transform(options.query).document;\n var variables = this.getVariables(query, options.variables);\n var queryInfo = this.getQuery(queryId);\n var defaults = this.defaultOptions.watchQuery;\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? defaults && defaults.fetchPolicy || \"cache-first\" : _a, _b = options.errorPolicy, errorPolicy = _b === void 0 ? defaults && defaults.errorPolicy || \"none\" : _b, _c = options.returnPartialData, returnPartialData = _c === void 0 ? false : _c, _d = options.notifyOnNetworkStatusChange, notifyOnNetworkStatusChange = _d === void 0 ? false : _d, _e = options.context, context = _e === void 0 ? {} : _e;\n var normalized = Object.assign({}, options, {\n query: query,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n returnPartialData: returnPartialData,\n notifyOnNetworkStatusChange: notifyOnNetworkStatusChange,\n context: context,\n });\n var fromVariables = function (variables) {\n normalized.variables = variables;\n var sourcesWithInfo = _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);\n if (normalized.fetchPolicy !== \"standby\" &&\n sourcesWithInfo.sources.length > 0 &&\n queryInfo.observableQuery) {\n queryInfo.observableQuery[\"applyNextFetchPolicy\"](\"after-fetch\", options);\n }\n return sourcesWithInfo;\n };\n var cleanupCancelFn = function () { return _this.fetchCancelFns.delete(queryId); };\n this.fetchCancelFns.set(queryId, function (reason) {\n cleanupCancelFn();\n setTimeout(function () { return concast.cancel(reason); });\n });\n var concast, containsDataFromLink;\n if (this.transform(normalized.query).hasClientExports) {\n concast = new Concast(this.localState\n .addExportedVariables(normalized.query, normalized.variables, normalized.context)\n .then(fromVariables).then(function (sourcesWithInfo) { return sourcesWithInfo.sources; }));\n containsDataFromLink = true;\n }\n else {\n var sourcesWithInfo = fromVariables(normalized.variables);\n containsDataFromLink = sourcesWithInfo.fromLink;\n concast = new Concast(sourcesWithInfo.sources);\n }\n concast.promise.then(cleanupCancelFn, cleanupCancelFn);\n return {\n concast: concast,\n fromLink: containsDataFromLink,\n };\n };\n QueryManager.prototype.refetchQueries = function (_a) {\n var _this = this;\n var updateCache = _a.updateCache, include = _a.include, _b = _a.optimistic, optimistic = _b === void 0 ? false : _b, _c = _a.removeOptimistic, removeOptimistic = _c === void 0 ? optimistic ? makeUniqueId(\"refetchQueries\") : void 0 : _c, onQueryUpdated = _a.onQueryUpdated;\n var includedQueriesById = new Map();\n if (include) {\n this.getObservableQueries(include).forEach(function (oq, queryId) {\n includedQueriesById.set(queryId, {\n oq: oq,\n lastDiff: _this.getQuery(queryId).getDiff(),\n });\n });\n }\n var results = new Map;\n if (updateCache) {\n this.cache.batch({\n update: updateCache,\n optimistic: optimistic && removeOptimistic || false,\n removeOptimistic: removeOptimistic,\n onWatchUpdated: function (watch, diff, lastDiff) {\n var oq = watch.watcher instanceof QueryInfo &&\n watch.watcher.observableQuery;\n if (oq) {\n if (onQueryUpdated) {\n includedQueriesById.delete(oq.queryId);\n var result = onQueryUpdated(oq, diff, lastDiff);\n if (result === true) {\n result = oq.refetch();\n }\n if (result !== false) {\n results.set(oq, result);\n }\n return result;\n }\n if (onQueryUpdated !== null) {\n includedQueriesById.set(oq.queryId, { oq: oq, lastDiff: lastDiff, diff: diff });\n }\n }\n },\n });\n }\n if (includedQueriesById.size) {\n includedQueriesById.forEach(function (_a, queryId) {\n var oq = _a.oq, lastDiff = _a.lastDiff, diff = _a.diff;\n var result;\n if (onQueryUpdated) {\n if (!diff) {\n var info = oq[\"queryInfo\"];\n info.reset();\n diff = info.getDiff();\n }\n result = onQueryUpdated(oq, diff, lastDiff);\n }\n if (!onQueryUpdated || result === true) {\n result = oq.refetch();\n }\n if (result !== false) {\n results.set(oq, result);\n }\n if (queryId.indexOf(\"legacyOneTimeQuery\") >= 0) {\n _this.stopQueryNoBroadcast(queryId);\n }\n });\n }\n if (removeOptimistic) {\n this.cache.removeOptimistic(removeOptimistic);\n }\n return results;\n };\n QueryManager.prototype.fetchQueryByPolicy = function (queryInfo, _a, networkStatus) {\n var _this = this;\n var query = _a.query, variables = _a.variables, fetchPolicy = _a.fetchPolicy, refetchWritePolicy = _a.refetchWritePolicy, errorPolicy = _a.errorPolicy, returnPartialData = _a.returnPartialData, context = _a.context, notifyOnNetworkStatusChange = _a.notifyOnNetworkStatusChange;\n var oldNetworkStatus = queryInfo.networkStatus;\n queryInfo.init({\n document: this.transform(query).document,\n variables: variables,\n networkStatus: networkStatus,\n });\n var readCache = function () { return queryInfo.getDiff(variables); };\n var resultsFromCache = function (diff, networkStatus) {\n if (networkStatus === void 0) { networkStatus = queryInfo.networkStatus || NetworkStatus.loading; }\n var data = diff.result;\n if (__DEV__ &&\n !returnPartialData &&\n !equal(data, {})) {\n logMissingFieldErrors(diff.missing);\n }\n var fromData = function (data) { return Observable.of(__assign({ data: data, loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus }, (diff.complete ? null : { partial: true }))); };\n if (data && _this.transform(query).hasForcedResolvers) {\n return _this.localState.runResolvers({\n document: query,\n remoteResult: { data: data },\n context: context,\n variables: variables,\n onlyRunForcedResolvers: true,\n }).then(function (resolved) { return fromData(resolved.data || void 0); });\n }\n if (errorPolicy === 'none' &&\n networkStatus === NetworkStatus.refetch &&\n Array.isArray(diff.missing)) {\n return fromData(void 0);\n }\n return fromData(data);\n };\n var cacheWriteBehavior = fetchPolicy === \"no-cache\" ? 0 :\n (networkStatus === NetworkStatus.refetch &&\n refetchWritePolicy !== \"merge\") ? 1\n : 2;\n var resultsFromLink = function () { return _this.getResultsFromLink(queryInfo, cacheWriteBehavior, {\n variables: variables,\n context: context,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n }); };\n var shouldNotify = notifyOnNetworkStatusChange &&\n typeof oldNetworkStatus === \"number\" &&\n oldNetworkStatus !== networkStatus &&\n isNetworkRequestInFlight(networkStatus);\n switch (fetchPolicy) {\n default:\n case \"cache-first\": {\n var diff = readCache();\n if (diff.complete) {\n return { fromLink: false, sources: [resultsFromCache(diff, queryInfo.markReady())] };\n }\n if (returnPartialData || shouldNotify) {\n return { fromLink: true, sources: [resultsFromCache(diff), resultsFromLink()] };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n }\n case \"cache-and-network\": {\n var diff = readCache();\n if (diff.complete || returnPartialData || shouldNotify) {\n return { fromLink: true, sources: [resultsFromCache(diff), resultsFromLink()] };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n }\n case \"cache-only\":\n return { fromLink: false, sources: [resultsFromCache(readCache(), queryInfo.markReady())] };\n case \"network-only\":\n if (shouldNotify) {\n return { fromLink: true, sources: [resultsFromCache(readCache()), resultsFromLink()] };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n case \"no-cache\":\n if (shouldNotify) {\n return {\n fromLink: true,\n sources: [\n resultsFromCache(queryInfo.getDiff()),\n resultsFromLink(),\n ],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n case \"standby\":\n return { fromLink: false, sources: [] };\n }\n };\n QueryManager.prototype.getQuery = function (queryId) {\n if (queryId && !this.queries.has(queryId)) {\n this.queries.set(queryId, new QueryInfo(this, queryId));\n }\n return this.queries.get(queryId);\n };\n QueryManager.prototype.prepareContext = function (context) {\n if (context === void 0) { context = {}; }\n var newContext = this.localState.prepareContext(context);\n return __assign(__assign({}, newContext), { clientAwareness: this.clientAwareness });\n };\n return QueryManager;\n}());\nexport { QueryManager };\n//# sourceMappingURL=QueryManager.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from \"../utilities/globals/index.js\";\nimport { ApolloLink, execute } from \"../link/core/index.js\";\nimport { version } from \"../version.js\";\nimport { HttpLink } from \"../link/http/index.js\";\nimport { QueryManager } from \"./QueryManager.js\";\nimport { LocalState, } from \"./LocalState.js\";\nvar hasSuggestedDevtools = false;\nimport { mergeOptions } from \"../utilities/index.js\";\nexport { mergeOptions };\nvar ApolloClient = (function () {\n function ApolloClient(options) {\n var _this = this;\n this.resetStoreCallbacks = [];\n this.clearStoreCallbacks = [];\n var uri = options.uri, credentials = options.credentials, headers = options.headers, cache = options.cache, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void 0 ? 0 : _b, _c = options.connectToDevTools, connectToDevTools = _c === void 0 ? typeof window === 'object' &&\n !window.__APOLLO_CLIENT__ &&\n __DEV__ : _c, _d = options.queryDeduplication, queryDeduplication = _d === void 0 ? true : _d, defaultOptions = options.defaultOptions, _e = options.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? false : _e, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version;\n var link = options.link;\n if (!link) {\n link = uri\n ? new HttpLink({ uri: uri, credentials: credentials, headers: headers })\n : ApolloLink.empty();\n }\n if (!cache) {\n throw __DEV__ ? new InvariantError(\"To initialize Apollo Client, you must specify a 'cache' property \" +\n \"in the options object. \\n\" +\n \"For more information, please visit: https://go.apollo.dev/c/docs\") : new InvariantError(9);\n }\n this.link = link;\n this.cache = cache;\n this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n this.queryDeduplication = queryDeduplication;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.typeDefs = typeDefs;\n if (ssrForceFetchDelay) {\n setTimeout(function () { return (_this.disableNetworkFetches = false); }, ssrForceFetchDelay);\n }\n this.watchQuery = this.watchQuery.bind(this);\n this.query = this.query.bind(this);\n this.mutate = this.mutate.bind(this);\n this.resetStore = this.resetStore.bind(this);\n this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n if (connectToDevTools && typeof window === 'object') {\n window.__APOLLO_CLIENT__ = this;\n }\n if (!hasSuggestedDevtools && connectToDevTools && __DEV__) {\n hasSuggestedDevtools = true;\n if (typeof window !== 'undefined' &&\n window.document &&\n window.top === window.self &&\n !window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__) {\n var nav = window.navigator;\n var ua = nav && nav.userAgent;\n var url = void 0;\n if (typeof ua === \"string\") {\n if (ua.indexOf(\"Chrome/\") > -1) {\n url = \"https://chrome.google.com/webstore/detail/\" +\n \"apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm\";\n }\n else if (ua.indexOf(\"Firefox/\") > -1) {\n url = \"https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/\";\n }\n }\n if (url) {\n __DEV__ && invariant.log(\"Download the Apollo DevTools for a better development \" +\n \"experience: \" + url);\n }\n }\n }\n this.version = version;\n this.localState = new LocalState({\n cache: cache,\n client: this,\n resolvers: resolvers,\n fragmentMatcher: fragmentMatcher,\n });\n this.queryManager = new QueryManager({\n cache: this.cache,\n link: this.link,\n defaultOptions: this.defaultOptions,\n queryDeduplication: queryDeduplication,\n ssrMode: ssrMode,\n clientAwareness: {\n name: clientAwarenessName,\n version: clientAwarenessVersion,\n },\n localState: this.localState,\n assumeImmutableResults: assumeImmutableResults,\n onBroadcast: connectToDevTools ? function () {\n if (_this.devToolsHookCb) {\n _this.devToolsHookCb({\n action: {},\n state: {\n queries: _this.queryManager.getQueryStore(),\n mutations: _this.queryManager.mutationStore || {},\n },\n dataWithOptimisticResults: _this.cache.extract(true),\n });\n }\n } : void 0,\n });\n }\n ApolloClient.prototype.stop = function () {\n this.queryManager.stop();\n };\n ApolloClient.prototype.watchQuery = function (options) {\n if (this.defaultOptions.watchQuery) {\n options = mergeOptions(this.defaultOptions.watchQuery, options);\n }\n if (this.disableNetworkFetches &&\n (options.fetchPolicy === 'network-only' ||\n options.fetchPolicy === 'cache-and-network')) {\n options = __assign(__assign({}, options), { fetchPolicy: 'cache-first' });\n }\n return this.queryManager.watchQuery(options);\n };\n ApolloClient.prototype.query = function (options) {\n if (this.defaultOptions.query) {\n options = mergeOptions(this.defaultOptions.query, options);\n }\n __DEV__ ? invariant(options.fetchPolicy !== 'cache-and-network', 'The cache-and-network fetchPolicy does not work with client.query, because ' +\n 'client.query can only return a single result. Please use client.watchQuery ' +\n 'to receive multiple results from the cache and the network, or consider ' +\n 'using a different fetchPolicy, such as cache-first or network-only.') : invariant(options.fetchPolicy !== 'cache-and-network', 10);\n if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {\n options = __assign(__assign({}, options), { fetchPolicy: 'cache-first' });\n }\n return this.queryManager.query(options);\n };\n ApolloClient.prototype.mutate = function (options) {\n if (this.defaultOptions.mutate) {\n options = mergeOptions(this.defaultOptions.mutate, options);\n }\n return this.queryManager.mutate(options);\n };\n ApolloClient.prototype.subscribe = function (options) {\n return this.queryManager.startGraphQLSubscription(options);\n };\n ApolloClient.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readQuery(options, optimistic);\n };\n ApolloClient.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readFragment(options, optimistic);\n };\n ApolloClient.prototype.writeQuery = function (options) {\n var ref = this.cache.writeQuery(options);\n if (options.broadcast !== false) {\n this.queryManager.broadcastQueries();\n }\n return ref;\n };\n ApolloClient.prototype.writeFragment = function (options) {\n var ref = this.cache.writeFragment(options);\n if (options.broadcast !== false) {\n this.queryManager.broadcastQueries();\n }\n return ref;\n };\n ApolloClient.prototype.__actionHookForDevTools = function (cb) {\n this.devToolsHookCb = cb;\n };\n ApolloClient.prototype.__requestRaw = function (payload) {\n return execute(this.link, payload);\n };\n ApolloClient.prototype.resetStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () { return _this.queryManager.clearStore({\n discardWatches: false,\n }); })\n .then(function () { return Promise.all(_this.resetStoreCallbacks.map(function (fn) { return fn(); })); })\n .then(function () { return _this.reFetchObservableQueries(); });\n };\n ApolloClient.prototype.clearStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () { return _this.queryManager.clearStore({\n discardWatches: true,\n }); })\n .then(function () { return Promise.all(_this.clearStoreCallbacks.map(function (fn) { return fn(); })); });\n };\n ApolloClient.prototype.onResetStore = function (cb) {\n var _this = this;\n this.resetStoreCallbacks.push(cb);\n return function () {\n _this.resetStoreCallbacks = _this.resetStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n ApolloClient.prototype.onClearStore = function (cb) {\n var _this = this;\n this.clearStoreCallbacks.push(cb);\n return function () {\n _this.clearStoreCallbacks = _this.clearStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n ApolloClient.prototype.reFetchObservableQueries = function (includeStandby) {\n return this.queryManager.reFetchObservableQueries(includeStandby);\n };\n ApolloClient.prototype.refetchQueries = function (options) {\n var map = this.queryManager.refetchQueries(options);\n var queries = [];\n var results = [];\n map.forEach(function (result, obsQuery) {\n queries.push(obsQuery);\n results.push(result);\n });\n var result = Promise.all(results);\n result.queries = queries;\n result.results = results;\n result.catch(function (error) {\n __DEV__ && invariant.debug(\"In client.refetchQueries, Promise.all promise rejected with error \".concat(error));\n });\n return result;\n };\n ApolloClient.prototype.getObservableQueries = function (include) {\n if (include === void 0) { include = \"active\"; }\n return this.queryManager.getObservableQueries(include);\n };\n ApolloClient.prototype.extract = function (optimistic) {\n return this.cache.extract(optimistic);\n };\n ApolloClient.prototype.restore = function (serializedState) {\n return this.cache.restore(serializedState);\n };\n ApolloClient.prototype.addResolvers = function (resolvers) {\n this.localState.addResolvers(resolvers);\n };\n ApolloClient.prototype.setResolvers = function (resolvers) {\n this.localState.setResolvers(resolvers);\n };\n ApolloClient.prototype.getResolvers = function () {\n return this.localState.getResolvers();\n };\n ApolloClient.prototype.setLocalStateFragmentMatcher = function (fragmentMatcher) {\n this.localState.setFragmentMatcher(fragmentMatcher);\n };\n ApolloClient.prototype.setLink = function (newLink) {\n this.link = this.queryManager.link = newLink;\n };\n return ApolloClient;\n}());\nexport { ApolloClient };\n//# sourceMappingURL=ApolloClient.js.map","export var version = '3.7.16';\n//# sourceMappingURL=version.js.map","export var NetworkStatus;\n(function (NetworkStatus) {\n NetworkStatus[NetworkStatus[\"loading\"] = 1] = \"loading\";\n NetworkStatus[NetworkStatus[\"setVariables\"] = 2] = \"setVariables\";\n NetworkStatus[NetworkStatus[\"fetchMore\"] = 3] = \"fetchMore\";\n NetworkStatus[NetworkStatus[\"refetch\"] = 4] = \"refetch\";\n NetworkStatus[NetworkStatus[\"poll\"] = 6] = \"poll\";\n NetworkStatus[NetworkStatus[\"ready\"] = 7] = \"ready\";\n NetworkStatus[NetworkStatus[\"error\"] = 8] = \"error\";\n})(NetworkStatus || (NetworkStatus = {}));\nexport function isNetworkRequestInFlight(networkStatus) {\n return networkStatus ? networkStatus < 7 : false;\n}\n//# sourceMappingURL=networkStatus.js.map","import { __extends, __spreadArray } from \"tslib\";\nimport \"../utilities/globals/index.js\";\nimport { isNonNullObject } from \"../utilities/index.js\";\nexport var PROTOCOL_ERRORS_SYMBOL = Symbol();\nexport function graphQLResultHasProtocolErrors(result) {\n if (result.extensions) {\n return Array.isArray(result.extensions[PROTOCOL_ERRORS_SYMBOL]);\n }\n return false;\n}\nexport function isApolloError(err) {\n return err.hasOwnProperty('graphQLErrors');\n}\nvar generateErrorMessage = function (err) {\n var errors = __spreadArray(__spreadArray(__spreadArray([], err.graphQLErrors, true), err.clientErrors, true), err.protocolErrors, true);\n if (err.networkError)\n errors.push(err.networkError);\n return errors\n .map(function (err) { return isNonNullObject(err) && err.message || 'Error message not found.'; })\n .join('\\n');\n};\nvar ApolloError = (function (_super) {\n __extends(ApolloError, _super);\n function ApolloError(_a) {\n var graphQLErrors = _a.graphQLErrors, protocolErrors = _a.protocolErrors, clientErrors = _a.clientErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo;\n var _this = _super.call(this, errorMessage) || this;\n _this.name = 'ApolloError';\n _this.graphQLErrors = graphQLErrors || [];\n _this.protocolErrors = protocolErrors || [];\n _this.clientErrors = clientErrors || [];\n _this.networkError = networkError || null;\n _this.message = errorMessage || generateErrorMessage(_this);\n _this.extraInfo = extraInfo;\n _this.__proto__ = ApolloError.prototype;\n return _this;\n }\n return ApolloError;\n}(Error));\nexport { ApolloError };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { InvariantError, invariant } from \"../../utilities/globals/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { validateOperation, createOperation, transformOperation, } from \"../utils/index.js\";\nfunction passthrough(op, forward) {\n return (forward ? forward(op) : Observable.of());\n}\nfunction toLink(handler) {\n return typeof handler === 'function' ? new ApolloLink(handler) : handler;\n}\nfunction isTerminating(link) {\n return link.request.length <= 1;\n}\nvar LinkError = (function (_super) {\n __extends(LinkError, _super);\n function LinkError(message, link) {\n var _this = _super.call(this, message) || this;\n _this.link = link;\n return _this;\n }\n return LinkError;\n}(Error));\nvar ApolloLink = (function () {\n function ApolloLink(request) {\n if (request)\n this.request = request;\n }\n ApolloLink.empty = function () {\n return new ApolloLink(function () { return Observable.of(); });\n };\n ApolloLink.from = function (links) {\n if (links.length === 0)\n return ApolloLink.empty();\n return links.map(toLink).reduce(function (x, y) { return x.concat(y); });\n };\n ApolloLink.split = function (test, left, right) {\n var leftLink = toLink(left);\n var rightLink = toLink(right || new ApolloLink(passthrough));\n if (isTerminating(leftLink) && isTerminating(rightLink)) {\n return new ApolloLink(function (operation) {\n return test(operation)\n ? leftLink.request(operation) || Observable.of()\n : rightLink.request(operation) || Observable.of();\n });\n }\n else {\n return new ApolloLink(function (operation, forward) {\n return test(operation)\n ? leftLink.request(operation, forward) || Observable.of()\n : rightLink.request(operation, forward) || Observable.of();\n });\n }\n };\n ApolloLink.execute = function (link, operation) {\n return (link.request(createOperation(operation.context, transformOperation(validateOperation(operation)))) || Observable.of());\n };\n ApolloLink.concat = function (first, second) {\n var firstLink = toLink(first);\n if (isTerminating(firstLink)) {\n __DEV__ && invariant.warn(new LinkError(\"You are calling concat on a terminating link, which will have no effect\", firstLink));\n return firstLink;\n }\n var nextLink = toLink(second);\n if (isTerminating(nextLink)) {\n return new ApolloLink(function (operation) {\n return firstLink.request(operation, function (op) { return nextLink.request(op) || Observable.of(); }) || Observable.of();\n });\n }\n else {\n return new ApolloLink(function (operation, forward) {\n return (firstLink.request(operation, function (op) {\n return nextLink.request(op, forward) || Observable.of();\n }) || Observable.of());\n });\n }\n };\n ApolloLink.prototype.split = function (test, left, right) {\n return this.concat(ApolloLink.split(test, left, right || new ApolloLink(passthrough)));\n };\n ApolloLink.prototype.concat = function (next) {\n return ApolloLink.concat(this, next);\n };\n ApolloLink.prototype.request = function (operation, forward) {\n throw __DEV__ ? new InvariantError('request is not implemented') : new InvariantError(22);\n };\n ApolloLink.prototype.onError = function (error, observer) {\n if (observer && observer.error) {\n observer.error(error);\n return false;\n }\n throw error;\n };\n ApolloLink.prototype.setOnError = function (fn) {\n this.onError = fn;\n return this;\n };\n return ApolloLink;\n}());\nexport { ApolloLink };\n//# sourceMappingURL=ApolloLink.js.map","import { __assign } from \"tslib\";\nexport function createOperation(starting, operation) {\n var context = __assign({}, starting);\n var setContext = function (next) {\n if (typeof next === 'function') {\n context = __assign(__assign({}, context), next(context));\n }\n else {\n context = __assign(__assign({}, context), next);\n }\n };\n var getContext = function () { return (__assign({}, context)); };\n Object.defineProperty(operation, 'setContext', {\n enumerable: false,\n value: setContext,\n });\n Object.defineProperty(operation, 'getContext', {\n enumerable: false,\n value: getContext,\n });\n return operation;\n}\n//# sourceMappingURL=createOperation.js.map","import { getOperationName } from \"../../utilities/index.js\";\nexport function transformOperation(operation) {\n var transformedOperation = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query,\n };\n if (!transformedOperation.operationName) {\n transformedOperation.operationName =\n typeof transformedOperation.query !== 'string'\n ? getOperationName(transformedOperation.query) || undefined\n : '';\n }\n return transformedOperation;\n}\n//# sourceMappingURL=transformOperation.js.map","import { InvariantError } from \"../../utilities/globals/index.js\";\nexport function validateOperation(operation) {\n var OPERATION_FIELDS = [\n 'query',\n 'operationName',\n 'variables',\n 'extensions',\n 'context',\n ];\n for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) {\n var key = _a[_i];\n if (OPERATION_FIELDS.indexOf(key) < 0) {\n throw __DEV__ ? new InvariantError(\"illegal argument: \".concat(key)) : new InvariantError(27);\n }\n }\n return operation;\n}\n//# sourceMappingURL=validateOperation.js.map","import { InvariantError } from \"../../utilities/globals/index.js\";\nexport var serializeFetchParameter = function (p, label) {\n var serialized;\n try {\n serialized = JSON.stringify(p);\n }\n catch (e) {\n var parseError = __DEV__ ? new InvariantError(\"Network request failed. \".concat(label, \" is not serializable: \").concat(e.message)) : new InvariantError(24);\n parseError.parseError = e;\n throw parseError;\n }\n return serialized;\n};\n//# sourceMappingURL=serializeFetchParameter.js.map","import { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function nodeStreamIterator(stream) {\n var cleanup = null;\n var error = null;\n var done = false;\n var data = [];\n var waiting = [];\n function onData(chunk) {\n if (error)\n return;\n if (waiting.length) {\n var shiftedArr = waiting.shift();\n if (Array.isArray(shiftedArr) && shiftedArr[0]) {\n return shiftedArr[0]({ value: chunk, done: false });\n }\n }\n data.push(chunk);\n }\n function onError(err) {\n error = err;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[1](err);\n });\n !cleanup || cleanup();\n }\n function onEnd() {\n done = true;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[0]({ value: undefined, done: true });\n });\n !cleanup || cleanup();\n }\n cleanup = function () {\n cleanup = null;\n stream.removeListener(\"data\", onData);\n stream.removeListener(\"error\", onError);\n stream.removeListener(\"end\", onEnd);\n stream.removeListener(\"finish\", onEnd);\n stream.removeListener(\"close\", onEnd);\n };\n stream.on(\"data\", onData);\n stream.on(\"error\", onError);\n stream.on(\"end\", onEnd);\n stream.on(\"finish\", onEnd);\n stream.on(\"close\", onEnd);\n function getNext() {\n return new Promise(function (resolve, reject) {\n if (error)\n return reject(error);\n if (data.length)\n return resolve({ value: data.shift(), done: false });\n if (done)\n return resolve({ value: undefined, done: true });\n waiting.push([resolve, reject]);\n });\n }\n var iterator = {\n next: function () {\n return getNext();\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=nodeStream.js.map","import { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function readerIterator(reader) {\n var iterator = {\n next: function () {\n return reader.read();\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=reader.js.map","import { isAsyncIterableIterator, isBlob, isNodeResponse, isNodeReadableStream, isReadableStream, isStreamableBlob, } from \"../../utilities/common/responseIterator.js\";\nimport asyncIterator from \"./iterators/async.js\";\nimport nodeStreamIterator from \"./iterators/nodeStream.js\";\nimport promiseIterator from \"./iterators/promise.js\";\nimport readerIterator from \"./iterators/reader.js\";\nexport function responseIterator(response) {\n var body = response;\n if (isNodeResponse(response))\n body = response.body;\n if (isAsyncIterableIterator(body))\n return asyncIterator(body);\n if (isReadableStream(body))\n return readerIterator(body.getReader());\n if (isStreamableBlob(body)) {\n return readerIterator(body.stream().getReader());\n }\n if (isBlob(body))\n return promiseIterator(body.arrayBuffer());\n if (isNodeReadableStream(body))\n return nodeStreamIterator(body);\n throw new Error(\"Unknown body type for responseIterator. Please pass a streamable response.\");\n}\n//# sourceMappingURL=responseIterator.js.map","export default function asyncIterator(source) {\n var _a;\n var iterator = source[Symbol.asyncIterator]();\n return _a = {\n next: function () {\n return iterator.next();\n }\n },\n _a[Symbol.asyncIterator] = function () {\n return this;\n },\n _a;\n}\n//# sourceMappingURL=async.js.map","import { canUseAsyncIteratorSymbol } from \"./canUse.js\";\nexport function isNodeResponse(value) {\n return !!value.body;\n}\nexport function isReadableStream(value) {\n return !!value.getReader;\n}\nexport function isAsyncIterableIterator(value) {\n return !!(canUseAsyncIteratorSymbol &&\n value[Symbol.asyncIterator]);\n}\nexport function isStreamableBlob(value) {\n return !!value.stream;\n}\nexport function isBlob(value) {\n return !!value.arrayBuffer;\n}\nexport function isNodeReadableStream(value) {\n return !!value.pipe;\n}\n//# sourceMappingURL=responseIterator.js.map","import { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function promiseIterator(promise) {\n var resolved = false;\n var iterator = {\n next: function () {\n if (resolved)\n return Promise.resolve({\n value: undefined,\n done: true,\n });\n resolved = true;\n return new Promise(function (resolve, reject) {\n promise\n .then(function (value) {\n resolve({ value: value, done: false });\n })\n .catch(reject);\n });\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=promise.js.map","export var throwServerError = function (response, result, message) {\n var error = new Error(message);\n error.name = 'ServerError';\n error.response = response;\n error.statusCode = response.status;\n error.result = result;\n throw error;\n};\n//# sourceMappingURL=throwServerError.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { responseIterator } from \"./responseIterator.js\";\nimport { throwServerError } from \"../utils/index.js\";\nimport { PROTOCOL_ERRORS_SYMBOL } from \"../../errors/index.js\";\nimport { isApolloPayloadResult } from \"../../utilities/common/incrementalResult.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function readMultipartBody(response, observer) {\n var _a, _b, _c, _d, _e;\n return __awaiter(this, void 0, void 0, function () {\n var decoder, contentType, delimiter, boundaryVal, boundary, buffer, iterator, running, _f, value, done, chunk, searchFrom, bi, message, i, headers, contentType_1, body, result, next;\n var _g, _h;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n if (TextDecoder === undefined) {\n throw new Error(\"TextDecoder must be defined in the environment: please import a polyfill.\");\n }\n decoder = new TextDecoder(\"utf-8\");\n contentType = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get(\"content-type\");\n delimiter = \"boundary=\";\n boundaryVal = (contentType === null || contentType === void 0 ? void 0 : contentType.includes(delimiter))\n ? contentType === null || contentType === void 0 ? void 0 : contentType.substring((contentType === null || contentType === void 0 ? void 0 : contentType.indexOf(delimiter)) + delimiter.length).replace(/['\"]/g, \"\").replace(/\\;(.*)/gm, \"\").trim()\n : \"-\";\n boundary = \"\\r\\n--\".concat(boundaryVal);\n buffer = \"\";\n iterator = responseIterator(response);\n running = true;\n _j.label = 1;\n case 1:\n if (!running) return [3, 3];\n return [4, iterator.next()];\n case 2:\n _f = _j.sent(), value = _f.value, done = _f.done;\n chunk = typeof value === \"string\" ? value : decoder.decode(value);\n searchFrom = buffer.length - boundary.length + 1;\n running = !done;\n buffer += chunk;\n bi = buffer.indexOf(boundary, searchFrom);\n while (bi > -1) {\n message = void 0;\n _g = [\n buffer.slice(0, bi),\n buffer.slice(bi + boundary.length),\n ], message = _g[0], buffer = _g[1];\n i = message.indexOf(\"\\r\\n\\r\\n\");\n headers = parseHeaders(message.slice(0, i));\n contentType_1 = headers[\"content-type\"];\n if (contentType_1 &&\n contentType_1.toLowerCase().indexOf(\"application/json\") === -1) {\n throw new Error(\"Unsupported patch content type: application/json is required.\");\n }\n body = message.slice(i);\n if (body) {\n try {\n result = parseJsonBody(response, body);\n if (Object.keys(result).length > 1 ||\n \"data\" in result ||\n \"incremental\" in result ||\n \"errors\" in result ||\n \"payload\" in result) {\n if (isApolloPayloadResult(result)) {\n next = {};\n if (\"payload\" in result) {\n next = __assign({}, result.payload);\n }\n if (\"errors\" in result) {\n next = __assign(__assign({}, next), { extensions: __assign(__assign({}, (\"extensions\" in next ? next.extensions : null)), (_h = {}, _h[PROTOCOL_ERRORS_SYMBOL] = result.errors, _h)) });\n }\n (_b = observer.next) === null || _b === void 0 ? void 0 : _b.call(observer, next);\n }\n else {\n (_c = observer.next) === null || _c === void 0 ? void 0 : _c.call(observer, result);\n }\n }\n else if (Object.keys(result).length === 1 &&\n \"hasNext\" in result &&\n !result.hasNext) {\n (_d = observer.complete) === null || _d === void 0 ? void 0 : _d.call(observer);\n }\n }\n catch (err) {\n handleError(err, observer);\n }\n }\n bi = buffer.indexOf(boundary);\n }\n return [3, 1];\n case 3:\n (_e = observer.complete) === null || _e === void 0 ? void 0 : _e.call(observer);\n return [2];\n }\n });\n });\n}\nexport function parseHeaders(headerText) {\n var headersInit = {};\n headerText.split(\"\\n\").forEach(function (line) {\n var i = line.indexOf(\":\");\n if (i > -1) {\n var name_1 = line.slice(0, i).trim().toLowerCase();\n var value = line.slice(i + 1).trim();\n headersInit[name_1] = value;\n }\n });\n return headersInit;\n}\nexport function parseJsonBody(response, bodyText) {\n if (response.status >= 300) {\n var getResult = function () {\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n return bodyText;\n }\n };\n throwServerError(response, getResult(), \"Response not successful: Received status code \".concat(response.status));\n }\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n var parseError = err;\n parseError.name = \"ServerParseError\";\n parseError.response = response;\n parseError.statusCode = response.status;\n parseError.bodyText = bodyText;\n throw parseError;\n }\n}\nexport function handleError(err, observer) {\n var _a, _b;\n if (err.name === \"AbortError\")\n return;\n if (err.result && err.result.errors && err.result.data) {\n (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, err.result);\n }\n (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, err);\n}\nexport function readJsonBody(response, operation, observer) {\n parseAndCheckHttpResponse(operation)(response)\n .then(function (result) {\n var _a, _b;\n (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, result);\n (_b = observer.complete) === null || _b === void 0 ? void 0 : _b.call(observer);\n })\n .catch(function (err) { return handleError(err, observer); });\n}\nexport function parseAndCheckHttpResponse(operations) {\n return function (response) {\n return response\n .text()\n .then(function (bodyText) { return parseJsonBody(response, bodyText); })\n .then(function (result) {\n if (response.status >= 300) {\n throwServerError(response, result, \"Response not successful: Received status code \".concat(response.status));\n }\n if (!Array.isArray(result) &&\n !hasOwnProperty.call(result, \"data\") &&\n !hasOwnProperty.call(result, \"errors\")) {\n throwServerError(response, result, \"Server response was missing for query '\".concat(Array.isArray(operations)\n ? operations.map(function (op) { return op.operationName; })\n : operations.operationName, \"'.\"));\n }\n return result;\n });\n };\n}\n//# sourceMappingURL=parseAndCheckHttpResponse.js.map","import { InvariantError } from \"../../utilities/globals/index.js\";\nexport var checkFetcher = function (fetcher) {\n if (!fetcher && typeof fetch === 'undefined') {\n throw __DEV__ ? new InvariantError(\"\\n\\\"fetch\\\" has not been found globally and no fetcher has been configured. To fix this, install a fetch package (like https://www.npmjs.com/package/cross-fetch), instantiate the fetcher, and pass it into your HttpLink constructor. For example:\\n\\nimport fetch from 'cross-fetch';\\nimport { ApolloClient, HttpLink } from '@apollo/client';\\nconst client = new ApolloClient({\\n link: new HttpLink({ uri: '/graphql', fetch })\\n});\\n \") : new InvariantError(23);\n }\n};\n//# sourceMappingURL=checkFetcher.js.map","/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nexport function printString(str) {\n return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n '\\\\u0000',\n '\\\\u0001',\n '\\\\u0002',\n '\\\\u0003',\n '\\\\u0004',\n '\\\\u0005',\n '\\\\u0006',\n '\\\\u0007',\n '\\\\b',\n '\\\\t',\n '\\\\n',\n '\\\\u000B',\n '\\\\f',\n '\\\\r',\n '\\\\u000E',\n '\\\\u000F',\n '\\\\u0010',\n '\\\\u0011',\n '\\\\u0012',\n '\\\\u0013',\n '\\\\u0014',\n '\\\\u0015',\n '\\\\u0016',\n '\\\\u0017',\n '\\\\u0018',\n '\\\\u0019',\n '\\\\u001A',\n '\\\\u001B',\n '\\\\u001C',\n '\\\\u001D',\n '\\\\u001E',\n '\\\\u001F',\n '',\n '',\n '\\\\\"',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 2F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 3F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 4F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\\\\\',\n '',\n '',\n '', // 5F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 6F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\u007F',\n '\\\\u0080',\n '\\\\u0081',\n '\\\\u0082',\n '\\\\u0083',\n '\\\\u0084',\n '\\\\u0085',\n '\\\\u0086',\n '\\\\u0087',\n '\\\\u0088',\n '\\\\u0089',\n '\\\\u008A',\n '\\\\u008B',\n '\\\\u008C',\n '\\\\u008D',\n '\\\\u008E',\n '\\\\u008F',\n '\\\\u0090',\n '\\\\u0091',\n '\\\\u0092',\n '\\\\u0093',\n '\\\\u0094',\n '\\\\u0095',\n '\\\\u0096',\n '\\\\u0097',\n '\\\\u0098',\n '\\\\u0099',\n '\\\\u009A',\n '\\\\u009B',\n '\\\\u009C',\n '\\\\u009D',\n '\\\\u009E',\n '\\\\u009F',\n];\n","import { printBlockString } from './blockString.mjs';\nimport { printString } from './printString.mjs';\nimport { visit } from './visitor.mjs';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, printDocASTReducer);\n}\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n Name: {\n leave: (node) => node.value,\n },\n Variable: {\n leave: (node) => '$' + node.name,\n },\n // Document\n Document: {\n leave: (node) => join(node.definitions, '\\n\\n'),\n },\n OperationDefinition: {\n leave(node) {\n const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n const prefix = join(\n [\n node.operation,\n join([node.name, varDefs]),\n join(node.directives, ' '),\n ],\n ' ',\n ); // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n },\n },\n VariableDefinition: {\n leave: ({ variable, type, defaultValue, directives }) =>\n variable +\n ': ' +\n type +\n wrap(' = ', defaultValue) +\n wrap(' ', join(directives, ' ')),\n },\n SelectionSet: {\n leave: ({ selections }) => block(selections),\n },\n Field: {\n leave({ alias, name, arguments: args, directives, selectionSet }) {\n const prefix = wrap('', alias, ': ') + name;\n let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n },\n Argument: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Fragments\n FragmentSpread: {\n leave: ({ name, directives }) =>\n '...' + name + wrap(' ', join(directives, ' ')),\n },\n InlineFragment: {\n leave: ({ typeCondition, directives, selectionSet }) =>\n join(\n [\n '...',\n wrap('on ', typeCondition),\n join(directives, ' '),\n selectionSet,\n ],\n ' ',\n ),\n },\n FragmentDefinition: {\n leave: (\n { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n ) =>\n // or removed in the future.\n `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n selectionSet,\n },\n // Value\n IntValue: {\n leave: ({ value }) => value,\n },\n FloatValue: {\n leave: ({ value }) => value,\n },\n StringValue: {\n leave: ({ value, block: isBlockString }) =>\n isBlockString ? printBlockString(value) : printString(value),\n },\n BooleanValue: {\n leave: ({ value }) => (value ? 'true' : 'false'),\n },\n NullValue: {\n leave: () => 'null',\n },\n EnumValue: {\n leave: ({ value }) => value,\n },\n ListValue: {\n leave: ({ values }) => '[' + join(values, ', ') + ']',\n },\n ObjectValue: {\n leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n },\n ObjectField: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Directive\n Directive: {\n leave: ({ name, arguments: args }) =>\n '@' + name + wrap('(', join(args, ', '), ')'),\n },\n // Type\n NamedType: {\n leave: ({ name }) => name,\n },\n ListType: {\n leave: ({ type }) => '[' + type + ']',\n },\n NonNullType: {\n leave: ({ type }) => type + '!',\n },\n // Type System Definitions\n SchemaDefinition: {\n leave: ({ description, directives, operationTypes }) =>\n wrap('', description, '\\n') +\n join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n OperationTypeDefinition: {\n leave: ({ operation, type }) => operation + ': ' + type,\n },\n ScalarTypeDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') +\n join(['scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n FieldDefinition: {\n leave: ({ description, name, arguments: args, type, directives }) =>\n wrap('', description, '\\n') +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n ': ' +\n type +\n wrap(' ', join(directives, ' ')),\n },\n InputValueDefinition: {\n leave: ({ description, name, type, defaultValue, directives }) =>\n wrap('', description, '\\n') +\n join(\n [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n ' ',\n ),\n },\n InterfaceTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeDefinition: {\n leave: ({ description, name, directives, types }) =>\n wrap('', description, '\\n') +\n join(\n ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n ' ',\n ),\n },\n EnumTypeDefinition: {\n leave: ({ description, name, directives, values }) =>\n wrap('', description, '\\n') +\n join(['enum', name, join(directives, ' '), block(values)], ' '),\n },\n EnumValueDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n },\n InputObjectTypeDefinition: {\n leave: ({ description, name, directives, fields }) =>\n wrap('', description, '\\n') +\n join(['input', name, join(directives, ' '), block(fields)], ' '),\n },\n DirectiveDefinition: {\n leave: ({ description, name, arguments: args, repeatable, locations }) =>\n wrap('', description, '\\n') +\n 'directive @' +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n (repeatable ? ' repeatable' : '') +\n ' on ' +\n join(locations, ' | '),\n },\n SchemaExtension: {\n leave: ({ directives, operationTypes }) =>\n join(\n ['extend schema', join(directives, ' '), block(operationTypes)],\n ' ',\n ),\n },\n ScalarTypeExtension: {\n leave: ({ name, directives }) =>\n join(['extend scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n InterfaceTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeExtension: {\n leave: ({ name, directives, types }) =>\n join(\n [\n 'extend union',\n name,\n join(directives, ' '),\n wrap('= ', join(types, ' | ')),\n ],\n ' ',\n ),\n },\n EnumTypeExtension: {\n leave: ({ name, directives, values }) =>\n join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n },\n InputObjectTypeExtension: {\n leave: ({ name, directives, fields }) =>\n join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n var _maybeArray$filter$jo;\n\n return (_maybeArray$filter$jo =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.filter((x) => x).join(separator)) !== null &&\n _maybeArray$filter$jo !== void 0\n ? _maybeArray$filter$jo\n : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n return maybeString != null && maybeString !== ''\n ? start + maybeString + end\n : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n var _maybeArray$some;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n return (_maybeArray$some =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n _maybeArray$some !== void 0\n ? _maybeArray$some\n : false;\n}\n","import { __assign, __spreadArray } from \"tslib\";\nimport { print } from 'graphql';\n;\nvar defaultHttpOptions = {\n includeQuery: true,\n includeExtensions: false,\n preserveHeaderCase: false,\n};\nvar defaultHeaders = {\n accept: '*/*',\n 'content-type': 'application/json',\n};\nvar defaultOptions = {\n method: 'POST',\n};\nexport var fallbackHttpConfig = {\n http: defaultHttpOptions,\n headers: defaultHeaders,\n options: defaultOptions,\n};\nexport var defaultPrinter = function (ast, printer) { return printer(ast); };\nexport function selectHttpOptionsAndBody(operation, fallbackConfig) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n configs.unshift(fallbackConfig);\n return selectHttpOptionsAndBodyInternal.apply(void 0, __spreadArray([operation,\n defaultPrinter], configs, false));\n}\nexport function selectHttpOptionsAndBodyInternal(operation, printer) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n var options = {};\n var http = {};\n configs.forEach(function (config) {\n options = __assign(__assign(__assign({}, options), config.options), { headers: __assign(__assign({}, options.headers), config.headers) });\n if (config.credentials) {\n options.credentials = config.credentials;\n }\n http = __assign(__assign({}, http), config.http);\n });\n if (options.headers) {\n options.headers = removeDuplicateHeaders(options.headers, http.preserveHeaderCase);\n }\n var operationName = operation.operationName, extensions = operation.extensions, variables = operation.variables, query = operation.query;\n var body = { operationName: operationName, variables: variables };\n if (http.includeExtensions)\n body.extensions = extensions;\n if (http.includeQuery)\n body.query = printer(query, print);\n return {\n options: options,\n body: body,\n };\n}\n;\nfunction removeDuplicateHeaders(headers, preserveHeaderCase) {\n if (!preserveHeaderCase) {\n var normalizedHeaders_1 = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n normalizedHeaders_1[name.toLowerCase()] = headers[name];\n });\n return normalizedHeaders_1;\n }\n var headerData = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n headerData[name.toLowerCase()] = { originalName: name, value: headers[name] };\n });\n var normalizedHeaders = Object.create(null);\n Object.keys(headerData).forEach(function (name) {\n normalizedHeaders[headerData[name].originalName] = headerData[name].value;\n });\n return normalizedHeaders;\n}\n//# sourceMappingURL=selectHttpOptionsAndBody.js.map","import { Observable } from \"../../utilities/index.js\";\nexport function fromError(errorValue) {\n return new Observable(function (observer) {\n observer.error(errorValue);\n });\n}\n//# sourceMappingURL=fromError.js.map","import { __assign, __rest } from \"tslib\";\nimport \"../../utilities/globals/index.js\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { visit } from 'graphql';\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable, hasDirectives } from \"../../utilities/index.js\";\nimport { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nimport { selectURI } from \"./selectURI.js\";\nimport { handleError, readMultipartBody, readJsonBody } from \"./parseAndCheckHttpResponse.js\";\nimport { checkFetcher } from \"./checkFetcher.js\";\nimport { selectHttpOptionsAndBodyInternal, defaultPrinter, fallbackHttpConfig } from \"./selectHttpOptionsAndBody.js\";\nimport { createSignalIfSupported } from \"./createSignalIfSupported.js\";\nimport { rewriteURIForGET } from \"./rewriteURIForGET.js\";\nimport { fromError } from \"../utils/index.js\";\nimport { maybe, getMainDefinition } from \"../../utilities/index.js\";\nvar backupFetch = maybe(function () { return fetch; });\nexport var createHttpLink = function (linkOptions) {\n if (linkOptions === void 0) { linkOptions = {}; }\n var _a = linkOptions.uri, uri = _a === void 0 ? '/graphql' : _a, preferredFetch = linkOptions.fetch, _b = linkOptions.print, print = _b === void 0 ? defaultPrinter : _b, includeExtensions = linkOptions.includeExtensions, preserveHeaderCase = linkOptions.preserveHeaderCase, useGETForQueries = linkOptions.useGETForQueries, _c = linkOptions.includeUnusedVariables, includeUnusedVariables = _c === void 0 ? false : _c, requestOptions = __rest(linkOptions, [\"uri\", \"fetch\", \"print\", \"includeExtensions\", \"preserveHeaderCase\", \"useGETForQueries\", \"includeUnusedVariables\"]);\n if (__DEV__) {\n checkFetcher(preferredFetch || backupFetch);\n }\n var linkConfig = {\n http: { includeExtensions: includeExtensions, preserveHeaderCase: preserveHeaderCase },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n return new ApolloLink(function (operation) {\n var chosenURI = selectURI(operation, uri);\n var context = operation.getContext();\n var clientAwarenessHeaders = {};\n if (context.clientAwareness) {\n var _a = context.clientAwareness, name_1 = _a.name, version = _a.version;\n if (name_1) {\n clientAwarenessHeaders['apollographql-client-name'] = name_1;\n }\n if (version) {\n clientAwarenessHeaders['apollographql-client-version'] = version;\n }\n }\n var contextHeaders = __assign(__assign({}, clientAwarenessHeaders), context.headers);\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: contextHeaders,\n };\n var _b = selectHttpOptionsAndBodyInternal(operation, print, fallbackHttpConfig, linkConfig, contextConfig), options = _b.options, body = _b.body;\n if (body.variables && !includeUnusedVariables) {\n var unusedNames_1 = new Set(Object.keys(body.variables));\n visit(operation.query, {\n Variable: function (node, _key, parent) {\n if (parent && parent.kind !== 'VariableDefinition') {\n unusedNames_1.delete(node.name.value);\n }\n },\n });\n if (unusedNames_1.size) {\n body.variables = __assign({}, body.variables);\n unusedNames_1.forEach(function (name) {\n delete body.variables[name];\n });\n }\n }\n var controller;\n if (!options.signal) {\n var _c = createSignalIfSupported(), _controller = _c.controller, signal = _c.signal;\n controller = _controller;\n if (controller)\n options.signal = signal;\n }\n var definitionIsMutation = function (d) {\n return d.kind === 'OperationDefinition' && d.operation === 'mutation';\n };\n var definitionIsSubscription = function (d) {\n return d.kind === 'OperationDefinition' && d.operation === 'subscription';\n };\n var isSubscription = definitionIsSubscription(getMainDefinition(operation.query));\n var hasDefer = hasDirectives(['defer'], operation.query);\n if (useGETForQueries &&\n !operation.query.definitions.some(definitionIsMutation)) {\n options.method = 'GET';\n }\n if (hasDefer || isSubscription) {\n options.headers = options.headers || {};\n var acceptHeader = \"multipart/mixed;\";\n if (isSubscription && hasDefer) {\n __DEV__ && invariant.warn(\"Multipart-subscriptions do not support @defer\");\n }\n if (isSubscription) {\n acceptHeader += 'boundary=graphql;subscriptionSpec=1.0,application/json';\n }\n else if (hasDefer) {\n acceptHeader += 'deferSpec=20220824,application/json';\n }\n options.headers.accept = acceptHeader;\n }\n if (options.method === 'GET') {\n var _d = rewriteURIForGET(chosenURI, body), newURI = _d.newURI, parseError = _d.parseError;\n if (parseError) {\n return fromError(parseError);\n }\n chosenURI = newURI;\n }\n else {\n try {\n options.body = serializeFetchParameter(body, 'Payload');\n }\n catch (parseError) {\n return fromError(parseError);\n }\n }\n return new Observable(function (observer) {\n var currentFetch = preferredFetch || maybe(function () { return fetch; }) || backupFetch;\n currentFetch(chosenURI, options)\n .then(function (response) {\n var _a;\n operation.setContext({ response: response });\n var ctype = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get('content-type');\n if (ctype !== null && /^multipart\\/mixed/i.test(ctype)) {\n return readMultipartBody(response, observer);\n }\n else {\n return readJsonBody(response, operation, observer);\n }\n })\n .catch(function (err) { return handleError(err, observer); });\n return function () {\n if (controller)\n controller.abort();\n };\n });\n });\n};\n//# sourceMappingURL=createHttpLink.js.map","export var selectURI = function (operation, fallbackURI) {\n var context = operation.getContext();\n var contextURI = context.uri;\n if (contextURI) {\n return contextURI;\n }\n else if (typeof fallbackURI === 'function') {\n return fallbackURI(operation);\n }\n else {\n return fallbackURI || '/graphql';\n }\n};\n//# sourceMappingURL=selectURI.js.map","export var createSignalIfSupported = function () {\n if (typeof AbortController === 'undefined')\n return { controller: false, signal: false };\n var controller = new AbortController();\n var signal = controller.signal;\n return { controller: controller, signal: signal };\n};\n//# sourceMappingURL=createSignalIfSupported.js.map","import { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nexport function rewriteURIForGET(chosenURI, body) {\n var queryParams = [];\n var addQueryParam = function (key, value) {\n queryParams.push(\"\".concat(key, \"=\").concat(encodeURIComponent(value)));\n };\n if ('query' in body) {\n addQueryParam('query', body.query);\n }\n if (body.operationName) {\n addQueryParam('operationName', body.operationName);\n }\n if (body.variables) {\n var serializedVariables = void 0;\n try {\n serializedVariables = serializeFetchParameter(body.variables, 'Variables map');\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam('variables', serializedVariables);\n }\n if (body.extensions) {\n var serializedExtensions = void 0;\n try {\n serializedExtensions = serializeFetchParameter(body.extensions, 'Extensions map');\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam('extensions', serializedExtensions);\n }\n var fragment = '', preFragment = chosenURI;\n var fragmentStart = chosenURI.indexOf('#');\n if (fragmentStart !== -1) {\n fragment = chosenURI.substr(fragmentStart);\n preFragment = chosenURI.substr(0, fragmentStart);\n }\n var queryParamsPrefix = preFragment.indexOf('?') === -1 ? '?' : '&';\n var newURI = preFragment + queryParamsPrefix + queryParams.join('&') + fragment;\n return { newURI: newURI };\n}\n//# sourceMappingURL=rewriteURIForGET.js.map","import { __extends } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { createHttpLink } from \"./createHttpLink.js\";\nvar HttpLink = (function (_super) {\n __extends(HttpLink, _super);\n function HttpLink(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, createHttpLink(options).request) || this;\n _this.options = options;\n return _this;\n }\n return HttpLink;\n}(ApolloLink));\nexport { HttpLink };\n//# sourceMappingURL=HttpLink.js.map","import * as React from 'react';\nimport { canUseSymbol } from \"../../utilities/index.js\";\nvar contextKey = canUseSymbol\n ? Symbol.for('__APOLLO_CONTEXT__')\n : '__APOLLO_CONTEXT__';\nexport function getApolloContext() {\n var context = React.createContext[contextKey];\n if (!context) {\n Object.defineProperty(React.createContext, contextKey, {\n value: context = React.createContext({}),\n enumerable: false,\n writable: false,\n configurable: true,\n });\n context.displayName = 'ApolloContext';\n }\n return context;\n}\nexport { getApolloContext as resetApolloContext };\n//# sourceMappingURL=ApolloContext.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from 'react';\nimport { getApolloContext } from \"./ApolloContext.js\";\nexport var ApolloProvider = function (_a) {\n var client = _a.client, children = _a.children;\n var ApolloContext = getApolloContext();\n return (React.createElement(ApolloContext.Consumer, null, function (context) {\n if (context === void 0) { context = {}; }\n if (client && context.client !== client) {\n context = Object.assign({}, context, { client: client });\n }\n __DEV__ ? invariant(context.client, 'ApolloProvider was not passed a client instance. Make ' +\n 'sure you pass in your client via the \"client\" prop.') : invariant(context.client, 29);\n return (React.createElement(ApolloContext.Provider, { value: context }, children));\n }));\n};\n//# sourceMappingURL=ApolloProvider.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport { useContext } from 'react';\nimport { getApolloContext } from \"../context/index.js\";\nexport function useApolloClient(override) {\n var context = useContext(getApolloContext());\n var client = override || context.client;\n __DEV__ ? invariant(!!client, 'Could not find \"client\" in the context or passed in as an option. ' +\n 'Wrap the root component in an <ApolloProvider>, or pass an ApolloClient ' +\n 'instance in via options.') : invariant(!!client, 32);\n return client;\n}\n//# sourceMappingURL=useApolloClient.js.map","import { __assign } from \"tslib\";\nimport { useCallback, useMemo, useRef } from 'react';\nimport { mergeOptions } from \"../../utilities/index.js\";\nimport { useInternalState } from \"./useQuery.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nvar EAGER_METHODS = [\n 'refetch',\n 'reobserve',\n 'fetchMore',\n 'updateQuery',\n 'startPolling',\n 'subscribeToMore',\n];\nexport function useLazyQuery(query, options) {\n var _a;\n var execOptionsRef = useRef();\n var optionsRef = useRef();\n var queryRef = useRef();\n var merged = execOptionsRef.current ? mergeOptions(options, execOptionsRef.current) : options;\n var document = (_a = merged === null || merged === void 0 ? void 0 : merged.query) !== null && _a !== void 0 ? _a : query;\n optionsRef.current = merged;\n queryRef.current = document;\n var internalState = useInternalState(useApolloClient(options && options.client), document);\n var useQueryResult = internalState.useQuery(__assign(__assign({}, merged), { skip: !execOptionsRef.current }));\n var initialFetchPolicy = useQueryResult.observable.options.initialFetchPolicy ||\n internalState.getDefaultFetchPolicy();\n var result = Object.assign(useQueryResult, {\n called: !!execOptionsRef.current,\n });\n var eagerMethods = useMemo(function () {\n var eagerMethods = {};\n var _loop_1 = function (key) {\n var method = result[key];\n eagerMethods[key] = function () {\n if (!execOptionsRef.current) {\n execOptionsRef.current = Object.create(null);\n internalState.forceUpdate();\n }\n return method.apply(this, arguments);\n };\n };\n for (var _i = 0, EAGER_METHODS_1 = EAGER_METHODS; _i < EAGER_METHODS_1.length; _i++) {\n var key = EAGER_METHODS_1[_i];\n _loop_1(key);\n }\n return eagerMethods;\n }, []);\n Object.assign(result, eagerMethods);\n var execute = useCallback(function (executeOptions) {\n execOptionsRef.current = executeOptions ? __assign(__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {\n fetchPolicy: initialFetchPolicy,\n };\n var options = mergeOptions(optionsRef.current, __assign({ query: queryRef.current }, execOptionsRef.current));\n var promise = internalState\n .executeQuery(__assign(__assign({}, options), { skip: false }))\n .then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });\n promise.catch(function () { });\n return promise;\n }, []);\n return [execute, result];\n}\n//# sourceMappingURL=useLazyQuery.js.map","import { __assign } from \"tslib\";\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { mergeOptions, } from \"../../core/index.js\";\nimport { equal } from '@wry/equality';\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nexport function useMutation(mutation, options) {\n var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);\n verifyDocumentType(mutation, DocumentType.Mutation);\n var _a = useState({\n called: false,\n loading: false,\n client: client,\n }), result = _a[0], setResult = _a[1];\n var ref = useRef({\n result: result,\n mutationId: 0,\n isMounted: true,\n client: client,\n mutation: mutation,\n options: options,\n });\n {\n Object.assign(ref.current, { client: client, options: options, mutation: mutation });\n }\n var execute = useCallback(function (executeOptions) {\n if (executeOptions === void 0) { executeOptions = {}; }\n var _a = ref.current, options = _a.options, mutation = _a.mutation;\n var baseOptions = __assign(__assign({}, options), { mutation: mutation });\n var client = executeOptions.client || ref.current.client;\n if (!ref.current.result.loading && !baseOptions.ignoreResults && ref.current.isMounted) {\n setResult(ref.current.result = {\n loading: true,\n error: void 0,\n data: void 0,\n called: true,\n client: client,\n });\n }\n var mutationId = ++ref.current.mutationId;\n var clientOptions = mergeOptions(baseOptions, executeOptions);\n return client.mutate(clientOptions).then(function (response) {\n var _a;\n var data = response.data, errors = response.errors;\n var error = errors && errors.length > 0\n ? new ApolloError({ graphQLErrors: errors })\n : void 0;\n if (mutationId === ref.current.mutationId &&\n !clientOptions.ignoreResults) {\n var result_1 = {\n called: true,\n loading: false,\n data: data,\n error: error,\n client: client,\n };\n if (ref.current.isMounted && !equal(ref.current.result, result_1)) {\n setResult(ref.current.result = result_1);\n }\n }\n var onCompleted = executeOptions.onCompleted || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onCompleted);\n onCompleted === null || onCompleted === void 0 ? void 0 : onCompleted(response.data, clientOptions);\n return response;\n }).catch(function (error) {\n var _a;\n if (mutationId === ref.current.mutationId &&\n ref.current.isMounted) {\n var result_2 = {\n loading: false,\n error: error,\n data: void 0,\n called: true,\n client: client,\n };\n if (!equal(ref.current.result, result_2)) {\n setResult(ref.current.result = result_2);\n }\n }\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (onError) {\n onError(error, clientOptions);\n return { data: void 0, errors: error };\n }\n throw error;\n });\n }, []);\n var reset = useCallback(function () {\n if (ref.current.isMounted) {\n setResult({ called: false, loading: false, client: client });\n }\n }, []);\n useEffect(function () {\n ref.current.isMounted = true;\n return function () {\n ref.current.isMounted = false;\n };\n }, []);\n return [execute, __assign({ reset: reset }, result)];\n}\n//# sourceMappingURL=useMutation.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from 'react';\nimport { canUseLayoutEffect } from \"../../utilities/index.js\";\nvar didWarnUncachedGetSnapshot = false;\nvar uSESKey = \"useSyncExternalStore\";\nvar realHook = React[uSESKey];\nexport var useSyncExternalStore = realHook || (function (subscribe, getSnapshot, getServerSnapshot) {\n var value = getSnapshot();\n if (__DEV__ &&\n !didWarnUncachedGetSnapshot &&\n value !== getSnapshot()) {\n didWarnUncachedGetSnapshot = true;\n __DEV__ && invariant.error('The result of getSnapshot should be cached to avoid an infinite loop');\n }\n var _a = React.useState({ inst: { value: value, getSnapshot: getSnapshot } }), inst = _a[0].inst, forceUpdate = _a[1];\n if (canUseLayoutEffect) {\n React.useLayoutEffect(function () {\n Object.assign(inst, { value: value, getSnapshot: getSnapshot });\n if (checkIfSnapshotChanged(inst)) {\n forceUpdate({ inst: inst });\n }\n }, [subscribe, value, getSnapshot]);\n }\n else {\n Object.assign(inst, { value: value, getSnapshot: getSnapshot });\n }\n React.useEffect(function () {\n if (checkIfSnapshotChanged(inst)) {\n forceUpdate({ inst: inst });\n }\n return subscribe(function handleStoreChange() {\n if (checkIfSnapshotChanged(inst)) {\n forceUpdate({ inst: inst });\n }\n });\n }, [subscribe]);\n return value;\n});\nfunction checkIfSnapshotChanged(_a) {\n var value = _a.value, getSnapshot = _a.getSnapshot;\n try {\n return value !== getSnapshot();\n }\n catch (_b) {\n return true;\n }\n}\n//# sourceMappingURL=useSyncExternalStore.js.map","import { __assign, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { useCallback, useContext, useMemo, useRef, useState, } from 'react';\nimport { useSyncExternalStore } from \"./useSyncExternalStore.js\";\nimport { equal } from '@wry/equality';\nimport { mergeOptions } from \"../../core/index.js\";\nimport { getApolloContext } from \"../context/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { NetworkStatus, } from \"../../core/index.js\";\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { canUseWeakMap, compact, isNonEmptyArray, maybeDeepFreeze } from \"../../utilities/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function useQuery(query, options) {\n if (options === void 0) { options = Object.create(null); }\n return useInternalState(useApolloClient(options.client), query).useQuery(options);\n}\nexport function useInternalState(client, query) {\n var stateRef = useRef();\n if (!stateRef.current ||\n client !== stateRef.current.client ||\n query !== stateRef.current.query) {\n stateRef.current = new InternalState(client, query, stateRef.current);\n }\n var state = stateRef.current;\n var _a = useState(0), _tick = _a[0], setTick = _a[1];\n state.forceUpdate = function () {\n setTick(function (tick) { return tick + 1; });\n };\n return state;\n}\nvar InternalState = (function () {\n function InternalState(client, query, previous) {\n this.client = client;\n this.query = query;\n this.ssrDisabledResult = maybeDeepFreeze({\n loading: true,\n data: void 0,\n error: void 0,\n networkStatus: NetworkStatus.loading,\n });\n this.skipStandbyResult = maybeDeepFreeze({\n loading: false,\n data: void 0,\n error: void 0,\n networkStatus: NetworkStatus.ready,\n });\n this.toQueryResultCache = new (canUseWeakMap ? WeakMap : Map)();\n verifyDocumentType(query, DocumentType.Query);\n var previousResult = previous && previous.result;\n var previousData = previousResult && previousResult.data;\n if (previousData) {\n this.previousData = previousData;\n }\n }\n InternalState.prototype.forceUpdate = function () {\n __DEV__ && invariant.warn(\"Calling default no-op implementation of InternalState#forceUpdate\");\n };\n InternalState.prototype.executeQuery = function (options) {\n var _this = this;\n var _a;\n if (options.query) {\n Object.assign(this, { query: options.query });\n }\n this.watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);\n var concast = this.observable.reobserveAsConcast(this.getObsQueryOptions());\n this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;\n this.result = void 0;\n this.forceUpdate();\n return new Promise(function (resolve) {\n var result;\n concast.subscribe({\n next: function (value) {\n result = value;\n },\n error: function () {\n resolve(_this.toQueryResult(_this.observable.getCurrentResult()));\n },\n complete: function () {\n resolve(_this.toQueryResult(result));\n }\n });\n });\n };\n InternalState.prototype.useQuery = function (options) {\n var _this = this;\n this.renderPromises = useContext(getApolloContext()).renderPromises;\n this.useOptions(options);\n var obsQuery = this.useObservableQuery();\n var result = useSyncExternalStore(useCallback(function () {\n if (_this.renderPromises) {\n return function () { };\n }\n var onNext = function () {\n var previousResult = _this.result;\n var result = obsQuery.getCurrentResult();\n if (previousResult &&\n previousResult.loading === result.loading &&\n previousResult.networkStatus === result.networkStatus &&\n equal(previousResult.data, result.data)) {\n return;\n }\n _this.setResult(result);\n };\n var onError = function (error) {\n var last = obsQuery[\"last\"];\n subscription.unsubscribe();\n try {\n obsQuery.resetLastResults();\n subscription = obsQuery.subscribe(onNext, onError);\n }\n finally {\n obsQuery[\"last\"] = last;\n }\n if (!hasOwnProperty.call(error, 'graphQLErrors')) {\n throw error;\n }\n var previousResult = _this.result;\n if (!previousResult ||\n (previousResult && previousResult.loading) ||\n !equal(error, previousResult.error)) {\n _this.setResult({\n data: (previousResult && previousResult.data),\n error: error,\n loading: false,\n networkStatus: NetworkStatus.error,\n });\n }\n };\n var subscription = obsQuery.subscribe(onNext, onError);\n return function () { return setTimeout(function () { return subscription.unsubscribe(); }); };\n }, [\n obsQuery,\n this.renderPromises,\n this.client.disableNetworkFetches,\n ]), function () { return _this.getCurrentResult(); }, function () { return _this.getCurrentResult(); });\n this.unsafeHandlePartialRefetch(result);\n return this.toQueryResult(result);\n };\n InternalState.prototype.useOptions = function (options) {\n var _a;\n var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);\n var currentWatchQueryOptions = this.watchQueryOptions;\n if (!equal(watchQueryOptions, currentWatchQueryOptions)) {\n this.watchQueryOptions = watchQueryOptions;\n if (currentWatchQueryOptions && this.observable) {\n this.observable.reobserve(this.getObsQueryOptions());\n this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;\n this.result = void 0;\n }\n }\n this.onCompleted = options.onCompleted || InternalState.prototype.onCompleted;\n this.onError = options.onError || InternalState.prototype.onError;\n if ((this.renderPromises || this.client.disableNetworkFetches) &&\n this.queryHookOptions.ssr === false &&\n !this.queryHookOptions.skip) {\n this.result = this.ssrDisabledResult;\n }\n else if (this.queryHookOptions.skip ||\n this.watchQueryOptions.fetchPolicy === 'standby') {\n this.result = this.skipStandbyResult;\n }\n else if (this.result === this.ssrDisabledResult ||\n this.result === this.skipStandbyResult) {\n this.result = void 0;\n }\n };\n InternalState.prototype.getObsQueryOptions = function () {\n var toMerge = [];\n var globalDefaults = this.client.defaultOptions.watchQuery;\n if (globalDefaults)\n toMerge.push(globalDefaults);\n if (this.queryHookOptions.defaultOptions) {\n toMerge.push(this.queryHookOptions.defaultOptions);\n }\n toMerge.push(compact(this.observable && this.observable.options, this.watchQueryOptions));\n return toMerge.reduce(mergeOptions);\n };\n InternalState.prototype.createWatchQueryOptions = function (_a) {\n var _b;\n if (_a === void 0) { _a = {}; }\n var skip = _a.skip, ssr = _a.ssr, onCompleted = _a.onCompleted, onError = _a.onError, defaultOptions = _a.defaultOptions, otherOptions = __rest(_a, [\"skip\", \"ssr\", \"onCompleted\", \"onError\", \"defaultOptions\"]);\n var watchQueryOptions = Object.assign(otherOptions, { query: this.query });\n if (this.renderPromises &&\n (watchQueryOptions.fetchPolicy === 'network-only' ||\n watchQueryOptions.fetchPolicy === 'cache-and-network')) {\n watchQueryOptions.fetchPolicy = 'cache-first';\n }\n if (!watchQueryOptions.variables) {\n watchQueryOptions.variables = {};\n }\n if (skip) {\n var _c = watchQueryOptions.fetchPolicy, fetchPolicy = _c === void 0 ? this.getDefaultFetchPolicy() : _c, _d = watchQueryOptions.initialFetchPolicy, initialFetchPolicy = _d === void 0 ? fetchPolicy : _d;\n Object.assign(watchQueryOptions, {\n initialFetchPolicy: initialFetchPolicy,\n fetchPolicy: 'standby',\n });\n }\n else if (!watchQueryOptions.fetchPolicy) {\n watchQueryOptions.fetchPolicy =\n ((_b = this.observable) === null || _b === void 0 ? void 0 : _b.options.initialFetchPolicy) ||\n this.getDefaultFetchPolicy();\n }\n return watchQueryOptions;\n };\n InternalState.prototype.getDefaultFetchPolicy = function () {\n var _a, _b;\n return (((_a = this.queryHookOptions.defaultOptions) === null || _a === void 0 ? void 0 : _a.fetchPolicy) ||\n ((_b = this.client.defaultOptions.watchQuery) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||\n \"cache-first\");\n };\n InternalState.prototype.onCompleted = function (data) { };\n InternalState.prototype.onError = function (error) { };\n InternalState.prototype.useObservableQuery = function () {\n var obsQuery = this.observable =\n this.renderPromises\n && this.renderPromises.getSSRObservable(this.watchQueryOptions)\n || this.observable\n || this.client.watchQuery(this.getObsQueryOptions());\n this.obsQueryFields = useMemo(function () { return ({\n refetch: obsQuery.refetch.bind(obsQuery),\n reobserve: obsQuery.reobserve.bind(obsQuery),\n fetchMore: obsQuery.fetchMore.bind(obsQuery),\n updateQuery: obsQuery.updateQuery.bind(obsQuery),\n startPolling: obsQuery.startPolling.bind(obsQuery),\n stopPolling: obsQuery.stopPolling.bind(obsQuery),\n subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),\n }); }, [obsQuery]);\n var ssrAllowed = !(this.queryHookOptions.ssr === false ||\n this.queryHookOptions.skip);\n if (this.renderPromises && ssrAllowed) {\n this.renderPromises.registerSSRObservable(obsQuery);\n if (obsQuery.getCurrentResult().loading) {\n this.renderPromises.addObservableQueryPromise(obsQuery);\n }\n }\n return obsQuery;\n };\n InternalState.prototype.setResult = function (nextResult) {\n var previousResult = this.result;\n if (previousResult && previousResult.data) {\n this.previousData = previousResult.data;\n }\n this.result = nextResult;\n this.forceUpdate();\n this.handleErrorOrCompleted(nextResult);\n };\n InternalState.prototype.handleErrorOrCompleted = function (result) {\n var _this = this;\n if (!result.loading) {\n var error_1 = this.toApolloError(result);\n Promise.resolve().then(function () {\n if (error_1) {\n _this.onError(error_1);\n }\n else if (result.data) {\n _this.onCompleted(result.data);\n }\n }).catch(function (error) {\n __DEV__ && invariant.warn(error);\n });\n }\n };\n InternalState.prototype.toApolloError = function (result) {\n return isNonEmptyArray(result.errors)\n ? new ApolloError({ graphQLErrors: result.errors })\n : result.error;\n };\n InternalState.prototype.getCurrentResult = function () {\n if (!this.result) {\n this.handleErrorOrCompleted(this.result = this.observable.getCurrentResult());\n }\n return this.result;\n };\n InternalState.prototype.toQueryResult = function (result) {\n var queryResult = this.toQueryResultCache.get(result);\n if (queryResult)\n return queryResult;\n var data = result.data, partial = result.partial, resultWithoutPartial = __rest(result, [\"data\", \"partial\"]);\n this.toQueryResultCache.set(result, queryResult = __assign(__assign(__assign({ data: data }, resultWithoutPartial), this.obsQueryFields), { client: this.client, observable: this.observable, variables: this.observable.variables, called: !this.queryHookOptions.skip, previousData: this.previousData }));\n if (!queryResult.error && isNonEmptyArray(result.errors)) {\n queryResult.error = new ApolloError({ graphQLErrors: result.errors });\n }\n return queryResult;\n };\n InternalState.prototype.unsafeHandlePartialRefetch = function (result) {\n if (result.partial &&\n this.queryHookOptions.partialRefetch &&\n !result.loading &&\n (!result.data || Object.keys(result.data).length === 0) &&\n this.observable.options.fetchPolicy !== 'cache-only') {\n Object.assign(result, {\n loading: true,\n networkStatus: NetworkStatus.refetch,\n });\n this.observable.refetch();\n }\n };\n return InternalState;\n}());\n//# sourceMappingURL=useQuery.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nexport var DocumentType;\n(function (DocumentType) {\n DocumentType[DocumentType[\"Query\"] = 0] = \"Query\";\n DocumentType[DocumentType[\"Mutation\"] = 1] = \"Mutation\";\n DocumentType[DocumentType[\"Subscription\"] = 2] = \"Subscription\";\n})(DocumentType || (DocumentType = {}));\nvar cache = new Map();\nexport function operationName(type) {\n var name;\n switch (type) {\n case DocumentType.Query:\n name = 'Query';\n break;\n case DocumentType.Mutation:\n name = 'Mutation';\n break;\n case DocumentType.Subscription:\n name = 'Subscription';\n break;\n }\n return name;\n}\nexport function parser(document) {\n var cached = cache.get(document);\n if (cached)\n return cached;\n var variables, type, name;\n __DEV__ ? invariant(!!document && !!document.kind, \"Argument of \".concat(document, \" passed to parser was not a valid GraphQL \") +\n \"DocumentNode. You may need to use 'graphql-tag' or another method \" +\n \"to convert your operation into a document\") : invariant(!!document && !!document.kind, 33);\n var fragments = [];\n var queries = [];\n var mutations = [];\n var subscriptions = [];\n for (var _i = 0, _a = document.definitions; _i < _a.length; _i++) {\n var x = _a[_i];\n if (x.kind === 'FragmentDefinition') {\n fragments.push(x);\n continue;\n }\n if (x.kind === 'OperationDefinition') {\n switch (x.operation) {\n case 'query':\n queries.push(x);\n break;\n case 'mutation':\n mutations.push(x);\n break;\n case 'subscription':\n subscriptions.push(x);\n break;\n }\n }\n }\n __DEV__ ? invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), \"Passing only a fragment to 'graphql' is not yet supported. \" +\n \"You must include a query, subscription or mutation as well\") : invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), 34);\n __DEV__ ? invariant(queries.length + mutations.length + subscriptions.length <= 1, \"react-apollo only supports a query, subscription, or a mutation per HOC. \" +\n \"\".concat(document, \" had \").concat(queries.length, \" queries, \").concat(subscriptions.length, \" \") +\n \"subscriptions and \".concat(mutations.length, \" mutations. \") +\n \"You can use 'compose' to join multiple operation types to a component\") : invariant(queries.length + mutations.length + subscriptions.length <= 1, 35);\n type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n if (!queries.length && !mutations.length)\n type = DocumentType.Subscription;\n var definitions = queries.length\n ? queries\n : mutations.length\n ? mutations\n : subscriptions;\n __DEV__ ? invariant(definitions.length === 1, \"react-apollo only supports one definition per HOC. \".concat(document, \" had \") +\n \"\".concat(definitions.length, \" definitions. \") +\n \"You can use 'compose' to join multiple operation types to a component\") : invariant(definitions.length === 1, 36);\n var definition = definitions[0];\n variables = definition.variableDefinitions || [];\n if (definition.name && definition.name.kind === 'Name') {\n name = definition.name.value;\n }\n else {\n name = 'data';\n }\n var payload = { name: name, type: type, variables: variables };\n cache.set(document, payload);\n return payload;\n}\nexport function verifyDocumentType(document, type) {\n var operation = parser(document);\n var requiredOperationName = operationName(type);\n var usedOperationName = operationName(operation.type);\n __DEV__ ? invariant(operation.type === type, \"Running a \".concat(requiredOperationName, \" requires a graphql \") +\n \"\".concat(requiredOperationName, \", but a \").concat(usedOperationName, \" was used instead.\")) : invariant(operation.type === type, 37);\n}\n//# sourceMappingURL=index.js.map","export var isArray = Array.isArray;\nexport function isNonEmptyArray(value) {\n return Array.isArray(value) && value.length > 0;\n}\n//# sourceMappingURL=arrays.js.map","import { maybe } from \"../globals/index.js\";\nexport var canUseWeakMap = typeof WeakMap === 'function' &&\n maybe(function () { return navigator.product; }) !== 'ReactNative';\nexport var canUseWeakSet = typeof WeakSet === 'function';\nexport var canUseSymbol = typeof Symbol === 'function' &&\n typeof Symbol.for === 'function';\nexport var canUseAsyncIteratorSymbol = canUseSymbol && Symbol.asyncIterator;\nexport var canUseDOM = typeof maybe(function () { return window.document.createElement; }) === \"function\";\nvar usingJSDOM = maybe(function () { return navigator.userAgent.indexOf(\"jsdom\") >= 0; }) || false;\nexport var canUseLayoutEffect = canUseDOM && !usingJSDOM;\n//# sourceMappingURL=canUse.js.map","var toString = Object.prototype.toString;\nexport function cloneDeep(value) {\n return cloneDeepHelper(value);\n}\nfunction cloneDeepHelper(val, seen) {\n switch (toString.call(val)) {\n case \"[object Array]\": {\n seen = seen || new Map;\n if (seen.has(val))\n return seen.get(val);\n var copy_1 = val.slice(0);\n seen.set(val, copy_1);\n copy_1.forEach(function (child, i) {\n copy_1[i] = cloneDeepHelper(child, seen);\n });\n return copy_1;\n }\n case \"[object Object]\": {\n seen = seen || new Map;\n if (seen.has(val))\n return seen.get(val);\n var copy_2 = Object.create(Object.getPrototypeOf(val));\n seen.set(val, copy_2);\n Object.keys(val).forEach(function (key) {\n copy_2[key] = cloneDeepHelper(val[key], seen);\n });\n return copy_2;\n }\n default:\n return val;\n }\n}\n//# sourceMappingURL=cloneDeep.js.map","export function compact() {\n var objects = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n objects[_i] = arguments[_i];\n }\n var result = Object.create(null);\n objects.forEach(function (obj) {\n if (!obj)\n return;\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n if (value !== void 0) {\n result[key] = value;\n }\n });\n });\n return result;\n}\n//# sourceMappingURL=compact.js.map","import { isNonNullObject } from \"./objects.js\";\nimport { isNonEmptyArray } from \"./arrays.js\";\nimport { DeepMerger } from \"./mergeDeep.js\";\nexport function isExecutionPatchIncrementalResult(value) {\n return \"incremental\" in value;\n}\nexport function isExecutionPatchInitialResult(value) {\n return \"hasNext\" in value && \"data\" in value;\n}\nexport function isExecutionPatchResult(value) {\n return (isExecutionPatchIncrementalResult(value) ||\n isExecutionPatchInitialResult(value));\n}\nexport function isApolloPayloadResult(value) {\n return isNonNullObject(value) && \"payload\" in value;\n}\nexport function mergeIncrementalData(prevResult, result) {\n var mergedData = prevResult;\n var merger = new DeepMerger();\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (_a) {\n var data = _a.data, path = _a.path;\n for (var i = path.length - 1; i >= 0; --i) {\n var key = path[i];\n var isNumericKey = !isNaN(+key);\n var parent_1 = isNumericKey ? [] : {};\n parent_1[key] = data;\n data = parent_1;\n }\n mergedData = merger.merge(mergedData, data);\n });\n }\n return mergedData;\n}\n//# sourceMappingURL=incrementalResult.js.map","var prefixCounts = new Map();\nexport function makeUniqueId(prefix) {\n var count = prefixCounts.get(prefix) || 1;\n prefixCounts.set(prefix, count + 1);\n return \"\".concat(prefix, \":\").concat(count, \":\").concat(Math.random().toString(36).slice(2));\n}\n//# sourceMappingURL=makeUniqueId.js.map","import \"../globals/index.js\";\nimport { isNonNullObject } from \"./objects.js\";\nfunction deepFreeze(value) {\n var workSet = new Set([value]);\n workSet.forEach(function (obj) {\n if (isNonNullObject(obj) && shallowFreeze(obj) === obj) {\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n if (isNonNullObject(obj[name]))\n workSet.add(obj[name]);\n });\n }\n });\n return value;\n}\nfunction shallowFreeze(obj) {\n if (__DEV__ && !Object.isFrozen(obj)) {\n try {\n Object.freeze(obj);\n }\n catch (e) {\n if (e instanceof TypeError)\n return null;\n throw e;\n }\n }\n return obj;\n}\nexport function maybeDeepFreeze(obj) {\n if (__DEV__) {\n deepFreeze(obj);\n }\n return obj;\n}\n//# sourceMappingURL=maybeDeepFreeze.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { isNonNullObject } from \"./objects.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function mergeDeep() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return mergeDeepArray(sources);\n}\nexport function mergeDeepArray(sources) {\n var target = sources[0] || {};\n var count = sources.length;\n if (count > 1) {\n var merger = new DeepMerger();\n for (var i = 1; i < count; ++i) {\n target = merger.merge(target, sources[i]);\n }\n }\n return target;\n}\nvar defaultReconciler = function (target, source, property) {\n return this.merge(target[property], source[property]);\n};\nvar DeepMerger = (function () {\n function DeepMerger(reconciler) {\n if (reconciler === void 0) { reconciler = defaultReconciler; }\n this.reconciler = reconciler;\n this.isObject = isNonNullObject;\n this.pastCopies = new Set();\n }\n DeepMerger.prototype.merge = function (target, source) {\n var _this = this;\n var context = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n context[_i - 2] = arguments[_i];\n }\n if (isNonNullObject(source) && isNonNullObject(target)) {\n Object.keys(source).forEach(function (sourceKey) {\n if (hasOwnProperty.call(target, sourceKey)) {\n var targetValue = target[sourceKey];\n if (source[sourceKey] !== targetValue) {\n var result = _this.reconciler.apply(_this, __spreadArray([target, source, sourceKey], context, false));\n if (result !== targetValue) {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = result;\n }\n }\n }\n else {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = source[sourceKey];\n }\n });\n return target;\n }\n return source;\n };\n DeepMerger.prototype.shallowCopyForMerge = function (value) {\n if (isNonNullObject(value)) {\n if (!this.pastCopies.has(value)) {\n if (Array.isArray(value)) {\n value = value.slice(0);\n }\n else {\n value = __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n this.pastCopies.add(value);\n }\n }\n return value;\n };\n return DeepMerger;\n}());\nexport { DeepMerger };\n//# sourceMappingURL=mergeDeep.js.map","import { __assign } from \"tslib\";\nimport { compact } from \"./compact.js\";\nexport function mergeOptions(defaults, options) {\n return compact(defaults, options, options.variables && {\n variables: __assign(__assign({}, (defaults && defaults.variables)), options.variables),\n });\n}\n//# sourceMappingURL=mergeOptions.js.map","export function isNonNullObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n//# sourceMappingURL=objects.js.map","import { __extends } from \"tslib\";\nvar genericMessage = \"Invariant Violation\";\nvar _a = Object.setPrototypeOf, setPrototypeOf = _a === void 0 ? function (obj, proto) {\n obj.__proto__ = proto;\n return obj;\n} : _a;\nvar InvariantError = /** @class */ (function (_super) {\n __extends(InvariantError, _super);\n function InvariantError(message) {\n if (message === void 0) { message = genericMessage; }\n var _this = _super.call(this, typeof message === \"number\"\n ? genericMessage + \": \" + message + \" (see https://github.com/apollographql/invariant-packages)\"\n : message) || this;\n _this.framesToPop = 1;\n _this.name = genericMessage;\n setPrototypeOf(_this, InvariantError.prototype);\n return _this;\n }\n return InvariantError;\n}(Error));\nexport { InvariantError };\nexport function invariant(condition, message) {\n if (!condition) {\n throw new InvariantError(message);\n }\n}\nvar verbosityLevels = [\"debug\", \"log\", \"warn\", \"error\", \"silent\"];\nvar verbosityLevel = verbosityLevels.indexOf(\"log\");\nfunction wrapConsoleMethod(name) {\n return function () {\n if (verbosityLevels.indexOf(name) >= verbosityLevel) {\n // Default to console.log if this host environment happens not to provide\n // all the console.* methods we need.\n var method = console[name] || console.log;\n return method.apply(console, arguments);\n }\n };\n}\n(function (invariant) {\n invariant.debug = wrapConsoleMethod(\"debug\");\n invariant.log = wrapConsoleMethod(\"log\");\n invariant.warn = wrapConsoleMethod(\"warn\");\n invariant.error = wrapConsoleMethod(\"error\");\n})(invariant || (invariant = {}));\nexport function setVerbosity(level) {\n var old = verbosityLevels[verbosityLevel];\n verbosityLevel = Math.max(0, verbosityLevels.indexOf(level));\n return old;\n}\nexport default invariant;\n//# sourceMappingURL=invariant.js.map","export function maybe(thunk) {\n try {\n return thunk();\n }\n catch (_a) { }\n}\n//# sourceMappingURL=maybe.js.map","import { maybe } from \"./maybe.js\";\nexport default (maybe(function () { return globalThis; }) ||\n maybe(function () { return window; }) ||\n maybe(function () { return self; }) ||\n maybe(function () { return global; }) || maybe(function () { return maybe.constructor(\"return this\")(); }));\n//# sourceMappingURL=global.js.map","import global from \"./global.js\";\nimport { maybe } from \"./maybe.js\";\nvar __ = \"__\";\nvar GLOBAL_KEY = [__, __].join(\"DEV\");\nfunction getDEV() {\n try {\n return Boolean(__DEV__);\n }\n catch (_a) {\n Object.defineProperty(global, GLOBAL_KEY, {\n value: maybe(function () { return process.env.NODE_ENV; }) !== \"production\",\n enumerable: false,\n configurable: true,\n writable: true,\n });\n return global[GLOBAL_KEY];\n }\n}\nexport default getDEV();\n//# sourceMappingURL=DEV.js.map","function maybe(thunk) {\n try { return thunk() } catch (_) {}\n}\n\nvar safeGlobal = (\n maybe(function() { return globalThis }) ||\n maybe(function() { return window }) ||\n maybe(function() { return self }) ||\n maybe(function() { return global }) ||\n // We don't expect the Function constructor ever to be invoked at runtime, as\n // long as at least one of globalThis, window, self, or global is defined, so\n // we are under no obligation to make it easy for static analysis tools to\n // detect syntactic usage of the Function constructor. If you think you can\n // improve your static analysis to detect this obfuscation, think again. This\n // is an arms race you cannot win, at least not in JavaScript.\n maybe(function() { return maybe.constructor(\"return this\")() })\n);\n\nvar needToRemove = false;\n\nexport function install() {\n if (safeGlobal &&\n !maybe(function() { return process.env.NODE_ENV }) &&\n !maybe(function() { return process })) {\n Object.defineProperty(safeGlobal, \"process\", {\n value: {\n env: {\n // This default needs to be \"production\" instead of \"development\", to\n // avoid the problem https://github.com/graphql/graphql-js/pull/2894\n // will eventually solve, once merged and released.\n NODE_ENV: \"production\",\n },\n },\n // Let anyone else change global.process as they see fit, but hide it from\n // Object.keys(global) enumeration.\n configurable: true,\n enumerable: false,\n writable: true,\n });\n needToRemove = true;\n }\n}\n\n// Call install() at least once, when this module is imported.\ninstall();\n\nexport function remove() {\n if (needToRemove) {\n delete safeGlobal.process;\n needToRemove = false;\n }\n}\n","import { remove } from \"ts-invariant/process/index.js\";\nimport { Source } from 'graphql';\nexport function removeTemporaryGlobals() {\n return typeof Source === \"function\" ? remove() : remove();\n}\n//# sourceMappingURL=fix-graphql.js.map","import { invariant, InvariantError } from \"ts-invariant\";\nimport DEV from \"./DEV.js\";\nexport { DEV };\nexport function checkDEV() {\n __DEV__ ? invariant(\"boolean\" === typeof DEV, DEV) : invariant(\"boolean\" === typeof DEV, 39);\n}\nimport { removeTemporaryGlobals } from \"./fix-graphql.js\";\nremoveTemporaryGlobals();\nexport { maybe } from \"./maybe.js\";\nexport { default as global } from \"./global.js\";\nexport { invariant, InvariantError };\ncheckDEV();\n//# sourceMappingURL=index.js.map","import { invariant } from \"../globals/index.js\";\nimport { visit, BREAK, } from 'graphql';\nexport function shouldInclude(_a, variables) {\n var directives = _a.directives;\n if (!directives || !directives.length) {\n return true;\n }\n return getInclusionDirectives(directives).every(function (_a) {\n var directive = _a.directive, ifArgument = _a.ifArgument;\n var evaledValue = false;\n if (ifArgument.value.kind === 'Variable') {\n evaledValue = variables && variables[ifArgument.value.name.value];\n __DEV__ ? invariant(evaledValue !== void 0, \"Invalid variable referenced in @\".concat(directive.name.value, \" directive.\")) : invariant(evaledValue !== void 0, 40);\n }\n else {\n evaledValue = ifArgument.value.value;\n }\n return directive.name.value === 'skip' ? !evaledValue : evaledValue;\n });\n}\nexport function getDirectiveNames(root) {\n var names = [];\n visit(root, {\n Directive: function (node) {\n names.push(node.name.value);\n },\n });\n return names;\n}\nexport var hasAnyDirectives = function (names, root) { return hasDirectives(names, root, false); };\nexport var hasAllDirectives = function (names, root) { return hasDirectives(names, root, true); };\nexport function hasDirectives(names, root, all) {\n var nameSet = new Set(names);\n var uniqueCount = nameSet.size;\n visit(root, {\n Directive: function (node) {\n if (nameSet.delete(node.name.value) &&\n (!all || !nameSet.size)) {\n return BREAK;\n }\n },\n });\n return all ? !nameSet.size : nameSet.size < uniqueCount;\n}\nexport function hasClientExports(document) {\n return document && hasDirectives(['client', 'export'], document, true);\n}\nfunction isInclusionDirective(_a) {\n var value = _a.name.value;\n return value === 'skip' || value === 'include';\n}\nexport function getInclusionDirectives(directives) {\n var result = [];\n if (directives && directives.length) {\n directives.forEach(function (directive) {\n if (!isInclusionDirective(directive))\n return;\n var directiveArguments = directive.arguments;\n var directiveName = directive.name.value;\n __DEV__ ? invariant(directiveArguments && directiveArguments.length === 1, \"Incorrect number of arguments for the @\".concat(directiveName, \" directive.\")) : invariant(directiveArguments && directiveArguments.length === 1, 41);\n var ifArgument = directiveArguments[0];\n __DEV__ ? invariant(ifArgument.name && ifArgument.name.value === 'if', \"Invalid argument for the @\".concat(directiveName, \" directive.\")) : invariant(ifArgument.name && ifArgument.name.value === 'if', 42);\n var ifValue = ifArgument.value;\n __DEV__ ? invariant(ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), \"Argument for the @\".concat(directiveName, \" directive must be a variable or a boolean value.\")) : invariant(ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), 43);\n result.push({ directive: directive, ifArgument: ifArgument });\n });\n }\n return result;\n}\n//# sourceMappingURL=directives.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant, InvariantError } from \"../globals/index.js\";\nexport function getFragmentQueryDocument(document, fragmentName) {\n var actualFragmentName = fragmentName;\n var fragments = [];\n document.definitions.forEach(function (definition) {\n if (definition.kind === 'OperationDefinition') {\n throw __DEV__ ? new InvariantError(\"Found a \".concat(definition.operation, \" operation\").concat(definition.name ? \" named '\".concat(definition.name.value, \"'\") : '', \". \") +\n 'No operations are allowed when using a fragment as a query. Only fragments are allowed.') : new InvariantError(44);\n }\n if (definition.kind === 'FragmentDefinition') {\n fragments.push(definition);\n }\n });\n if (typeof actualFragmentName === 'undefined') {\n __DEV__ ? invariant(fragments.length === 1, \"Found \".concat(fragments.length, \" fragments. `fragmentName` must be provided when there is not exactly 1 fragment.\")) : invariant(fragments.length === 1, 45);\n actualFragmentName = fragments[0].name.value;\n }\n var query = __assign(__assign({}, document), { definitions: __spreadArray([\n {\n kind: 'OperationDefinition',\n operation: 'query',\n selectionSet: {\n kind: 'SelectionSet',\n selections: [\n {\n kind: 'FragmentSpread',\n name: {\n kind: 'Name',\n value: actualFragmentName,\n },\n },\n ],\n },\n }\n ], document.definitions, true) });\n return query;\n}\nexport function createFragmentMap(fragments) {\n if (fragments === void 0) { fragments = []; }\n var symTable = {};\n fragments.forEach(function (fragment) {\n symTable[fragment.name.value] = fragment;\n });\n return symTable;\n}\nexport function getFragmentFromSelection(selection, fragmentMap) {\n switch (selection.kind) {\n case 'InlineFragment':\n return selection;\n case 'FragmentSpread': {\n var fragmentName = selection.name.value;\n if (typeof fragmentMap === \"function\") {\n return fragmentMap(fragmentName);\n }\n var fragment = fragmentMap && fragmentMap[fragmentName];\n __DEV__ ? invariant(fragment, \"No fragment named \".concat(fragmentName)) : invariant(fragment, 46);\n return fragment || null;\n }\n default:\n return null;\n }\n}\n//# sourceMappingURL=fragments.js.map","import { invariant, InvariantError } from \"../globals/index.js\";\nimport { valueToObjectRepresentation } from \"./storeUtils.js\";\nexport function checkDocument(doc) {\n __DEV__ ? invariant(doc && doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\") : invariant(doc && doc.kind === 'Document', 47);\n var operations = doc.definitions\n .filter(function (d) { return d.kind !== 'FragmentDefinition'; })\n .map(function (definition) {\n if (definition.kind !== 'OperationDefinition') {\n throw __DEV__ ? new InvariantError(\"Schema type definitions not allowed in queries. Found: \\\"\".concat(definition.kind, \"\\\"\")) : new InvariantError(48);\n }\n return definition;\n });\n __DEV__ ? invariant(operations.length <= 1, \"Ambiguous GraphQL document: contains \".concat(operations.length, \" operations\")) : invariant(operations.length <= 1, 49);\n return doc;\n}\nexport function getOperationDefinition(doc) {\n checkDocument(doc);\n return doc.definitions.filter(function (definition) {\n return definition.kind === 'OperationDefinition';\n })[0];\n}\nexport function getOperationName(doc) {\n return (doc.definitions\n .filter(function (definition) {\n return definition.kind === 'OperationDefinition' && !!definition.name;\n })\n .map(function (x) { return x.name.value; })[0] || null);\n}\nexport function getFragmentDefinitions(doc) {\n return doc.definitions.filter(function (definition) {\n return definition.kind === 'FragmentDefinition';\n });\n}\nexport function getQueryDefinition(doc) {\n var queryDef = getOperationDefinition(doc);\n __DEV__ ? invariant(queryDef && queryDef.operation === 'query', 'Must contain a query definition.') : invariant(queryDef && queryDef.operation === 'query', 50);\n return queryDef;\n}\nexport function getFragmentDefinition(doc) {\n __DEV__ ? invariant(doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\") : invariant(doc.kind === 'Document', 51);\n __DEV__ ? invariant(doc.definitions.length <= 1, 'Fragment must have exactly one definition.') : invariant(doc.definitions.length <= 1, 52);\n var fragmentDef = doc.definitions[0];\n __DEV__ ? invariant(fragmentDef.kind === 'FragmentDefinition', 'Must be a fragment definition.') : invariant(fragmentDef.kind === 'FragmentDefinition', 53);\n return fragmentDef;\n}\nexport function getMainDefinition(queryDoc) {\n checkDocument(queryDoc);\n var fragmentDefinition;\n for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {\n var definition = _a[_i];\n if (definition.kind === 'OperationDefinition') {\n var operation = definition.operation;\n if (operation === 'query' ||\n operation === 'mutation' ||\n operation === 'subscription') {\n return definition;\n }\n }\n if (definition.kind === 'FragmentDefinition' && !fragmentDefinition) {\n fragmentDefinition = definition;\n }\n }\n if (fragmentDefinition) {\n return fragmentDefinition;\n }\n throw __DEV__ ? new InvariantError('Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.') : new InvariantError(54);\n}\nexport function getDefaultValues(definition) {\n var defaultValues = Object.create(null);\n var defs = definition && definition.variableDefinitions;\n if (defs && defs.length) {\n defs.forEach(function (def) {\n if (def.defaultValue) {\n valueToObjectRepresentation(defaultValues, def.variable.name, def.defaultValue);\n }\n });\n }\n return defaultValues;\n}\n//# sourceMappingURL=getFromAST.js.map","import { InvariantError } from \"../globals/index.js\";\nimport { isNonNullObject } from \"../common/objects.js\";\nimport { getFragmentFromSelection } from \"./fragments.js\";\nexport function makeReference(id) {\n return { __ref: String(id) };\n}\nexport function isReference(obj) {\n return Boolean(obj && typeof obj === 'object' && typeof obj.__ref === 'string');\n}\nexport function isDocumentNode(value) {\n return (isNonNullObject(value) &&\n value.kind === \"Document\" &&\n Array.isArray(value.definitions));\n}\nfunction isStringValue(value) {\n return value.kind === 'StringValue';\n}\nfunction isBooleanValue(value) {\n return value.kind === 'BooleanValue';\n}\nfunction isIntValue(value) {\n return value.kind === 'IntValue';\n}\nfunction isFloatValue(value) {\n return value.kind === 'FloatValue';\n}\nfunction isVariable(value) {\n return value.kind === 'Variable';\n}\nfunction isObjectValue(value) {\n return value.kind === 'ObjectValue';\n}\nfunction isListValue(value) {\n return value.kind === 'ListValue';\n}\nfunction isEnumValue(value) {\n return value.kind === 'EnumValue';\n}\nfunction isNullValue(value) {\n return value.kind === 'NullValue';\n}\nexport function valueToObjectRepresentation(argObj, name, value, variables) {\n if (isIntValue(value) || isFloatValue(value)) {\n argObj[name.value] = Number(value.value);\n }\n else if (isBooleanValue(value) || isStringValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isObjectValue(value)) {\n var nestedArgObj_1 = {};\n value.fields.map(function (obj) {\n return valueToObjectRepresentation(nestedArgObj_1, obj.name, obj.value, variables);\n });\n argObj[name.value] = nestedArgObj_1;\n }\n else if (isVariable(value)) {\n var variableValue = (variables || {})[value.name.value];\n argObj[name.value] = variableValue;\n }\n else if (isListValue(value)) {\n argObj[name.value] = value.values.map(function (listValue) {\n var nestedArgArrayObj = {};\n valueToObjectRepresentation(nestedArgArrayObj, name, listValue, variables);\n return nestedArgArrayObj[name.value];\n });\n }\n else if (isEnumValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isNullValue(value)) {\n argObj[name.value] = null;\n }\n else {\n throw __DEV__ ? new InvariantError(\"The inline argument \\\"\".concat(name.value, \"\\\" of kind \\\"\").concat(value.kind, \"\\\"\") +\n 'is not supported. Use variables instead of inline arguments to ' +\n 'overcome this limitation.') : new InvariantError(55);\n }\n}\nexport function storeKeyNameFromField(field, variables) {\n var directivesObj = null;\n if (field.directives) {\n directivesObj = {};\n field.directives.forEach(function (directive) {\n directivesObj[directive.name.value] = {};\n if (directive.arguments) {\n directive.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(directivesObj[directive.name.value], name, value, variables);\n });\n }\n });\n }\n var argObj = null;\n if (field.arguments && field.arguments.length) {\n argObj = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj, name, value, variables);\n });\n }\n return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\nvar KNOWN_DIRECTIVES = [\n 'connection',\n 'include',\n 'skip',\n 'client',\n 'rest',\n 'export',\n];\nexport var getStoreKeyName = Object.assign(function (fieldName, args, directives) {\n if (args &&\n directives &&\n directives['connection'] &&\n directives['connection']['key']) {\n if (directives['connection']['filter'] &&\n directives['connection']['filter'].length > 0) {\n var filterKeys = directives['connection']['filter']\n ? directives['connection']['filter']\n : [];\n filterKeys.sort();\n var filteredArgs_1 = {};\n filterKeys.forEach(function (key) {\n filteredArgs_1[key] = args[key];\n });\n return \"\".concat(directives['connection']['key'], \"(\").concat(stringify(filteredArgs_1), \")\");\n }\n else {\n return directives['connection']['key'];\n }\n }\n var completeFieldName = fieldName;\n if (args) {\n var stringifiedArgs = stringify(args);\n completeFieldName += \"(\".concat(stringifiedArgs, \")\");\n }\n if (directives) {\n Object.keys(directives).forEach(function (key) {\n if (KNOWN_DIRECTIVES.indexOf(key) !== -1)\n return;\n if (directives[key] && Object.keys(directives[key]).length) {\n completeFieldName += \"@\".concat(key, \"(\").concat(stringify(directives[key]), \")\");\n }\n else {\n completeFieldName += \"@\".concat(key);\n }\n });\n }\n return completeFieldName;\n}, {\n setStringify: function (s) {\n var previous = stringify;\n stringify = s;\n return previous;\n },\n});\nvar stringify = function defaultStringify(value) {\n return JSON.stringify(value, stringifyReplacer);\n};\nfunction stringifyReplacer(_key, value) {\n if (isNonNullObject(value) && !Array.isArray(value)) {\n value = Object.keys(value).sort().reduce(function (copy, key) {\n copy[key] = value[key];\n return copy;\n }, {});\n }\n return value;\n}\nexport function argumentsObjectFromField(field, variables) {\n if (field.arguments && field.arguments.length) {\n var argObj_1 = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj_1, name, value, variables);\n });\n return argObj_1;\n }\n return null;\n}\nexport function resultKeyNameFromField(field) {\n return field.alias ? field.alias.value : field.name.value;\n}\nexport function getTypenameFromResult(result, selectionSet, fragmentMap) {\n var fragments;\n for (var _i = 0, _a = selectionSet.selections; _i < _a.length; _i++) {\n var selection = _a[_i];\n if (isField(selection)) {\n if (selection.name.value === '__typename') {\n return result[resultKeyNameFromField(selection)];\n }\n }\n else if (fragments) {\n fragments.push(selection);\n }\n else {\n fragments = [selection];\n }\n }\n if (typeof result.__typename === 'string') {\n return result.__typename;\n }\n if (fragments) {\n for (var _b = 0, fragments_1 = fragments; _b < fragments_1.length; _b++) {\n var selection = fragments_1[_b];\n var typename = getTypenameFromResult(result, getFragmentFromSelection(selection, fragmentMap).selectionSet, fragmentMap);\n if (typeof typename === 'string') {\n return typename;\n }\n }\n }\n}\nexport function isField(selection) {\n return selection.kind === 'Field';\n}\nexport function isInlineFragment(selection) {\n return selection.kind === 'InlineFragment';\n}\n//# sourceMappingURL=storeUtils.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant } from \"../globals/index.js\";\nimport { visit, Kind, } from 'graphql';\nimport { checkDocument, getOperationDefinition, getFragmentDefinition, getFragmentDefinitions, getMainDefinition, } from \"./getFromAST.js\";\nimport { isField } from \"./storeUtils.js\";\nimport { createFragmentMap, } from \"./fragments.js\";\nimport { isArray } from \"../common/arrays.js\";\nvar TYPENAME_FIELD = {\n kind: Kind.FIELD,\n name: {\n kind: Kind.NAME,\n value: '__typename',\n },\n};\nfunction isEmpty(op, fragmentMap) {\n return !op || op.selectionSet.selections.every(function (selection) { return selection.kind === Kind.FRAGMENT_SPREAD &&\n isEmpty(fragmentMap[selection.name.value], fragmentMap); });\n}\nfunction nullIfDocIsEmpty(doc) {\n return isEmpty(getOperationDefinition(doc) || getFragmentDefinition(doc), createFragmentMap(getFragmentDefinitions(doc)))\n ? null\n : doc;\n}\nfunction getDirectiveMatcher(directives) {\n var nameSet = new Set();\n var tests = [];\n directives.forEach(function (directive) {\n if (directive.name) {\n nameSet.add(directive.name);\n }\n else if (directive.test) {\n tests.push(directive.test);\n }\n });\n return function (directive) { return (nameSet.has(directive.name.value) ||\n tests.some(function (test) { return test(directive); })); };\n}\nfunction makeInUseGetterFunction(defaultKey) {\n var map = new Map();\n return function inUseGetterFunction(key) {\n if (key === void 0) { key = defaultKey; }\n var inUse = map.get(key);\n if (!inUse) {\n map.set(key, inUse = {\n variables: new Set,\n fragmentSpreads: new Set,\n });\n }\n return inUse;\n };\n}\nexport function removeDirectivesFromDocument(directives, doc) {\n var getInUseByOperationName = makeInUseGetterFunction(\"\");\n var getInUseByFragmentName = makeInUseGetterFunction(\"\");\n var getInUse = function (ancestors) {\n for (var p = 0, ancestor = void 0; p < ancestors.length && (ancestor = ancestors[p]); ++p) {\n if (isArray(ancestor))\n continue;\n if (ancestor.kind === Kind.OPERATION_DEFINITION) {\n return getInUseByOperationName(ancestor.name && ancestor.name.value);\n }\n if (ancestor.kind === Kind.FRAGMENT_DEFINITION) {\n return getInUseByFragmentName(ancestor.name.value);\n }\n }\n __DEV__ && invariant.error(\"Could not find operation or fragment\");\n return null;\n };\n var operationCount = 0;\n for (var i = doc.definitions.length - 1; i >= 0; --i) {\n if (doc.definitions[i].kind === Kind.OPERATION_DEFINITION) {\n ++operationCount;\n }\n }\n var directiveMatcher = getDirectiveMatcher(directives);\n var hasRemoveDirective = directives.some(function (directive) { return directive.remove; });\n var shouldRemoveField = function (nodeDirectives) { return (hasRemoveDirective &&\n nodeDirectives &&\n nodeDirectives.some(directiveMatcher)); };\n var originalFragmentDefsByPath = new Map();\n var firstVisitMadeChanges = false;\n var fieldOrInlineFragmentVisitor = {\n enter: function (node) {\n if (shouldRemoveField(node.directives)) {\n firstVisitMadeChanges = true;\n return null;\n }\n },\n };\n var docWithoutDirectiveSubtrees = visit(doc, {\n Field: fieldOrInlineFragmentVisitor,\n InlineFragment: fieldOrInlineFragmentVisitor,\n VariableDefinition: {\n enter: function () {\n return false;\n },\n },\n Variable: {\n enter: function (node, _key, _parent, _path, ancestors) {\n var inUse = getInUse(ancestors);\n if (inUse) {\n inUse.variables.add(node.name.value);\n }\n },\n },\n FragmentSpread: {\n enter: function (node, _key, _parent, _path, ancestors) {\n if (shouldRemoveField(node.directives)) {\n firstVisitMadeChanges = true;\n return null;\n }\n var inUse = getInUse(ancestors);\n if (inUse) {\n inUse.fragmentSpreads.add(node.name.value);\n }\n },\n },\n FragmentDefinition: {\n enter: function (node, _key, _parent, path) {\n originalFragmentDefsByPath.set(JSON.stringify(path), node);\n },\n leave: function (node, _key, _parent, path) {\n var originalNode = originalFragmentDefsByPath.get(JSON.stringify(path));\n if (node === originalNode) {\n return node;\n }\n if (operationCount > 0 &&\n node.selectionSet.selections.every(function (selection) { return (selection.kind === Kind.FIELD &&\n selection.name.value === '__typename'); })) {\n getInUseByFragmentName(node.name.value).removed = true;\n firstVisitMadeChanges = true;\n return null;\n }\n },\n },\n Directive: {\n leave: function (node) {\n if (directiveMatcher(node)) {\n firstVisitMadeChanges = true;\n return null;\n }\n },\n },\n });\n if (!firstVisitMadeChanges) {\n return doc;\n }\n var populateTransitiveVars = function (inUse) {\n if (!inUse.transitiveVars) {\n inUse.transitiveVars = new Set(inUse.variables);\n if (!inUse.removed) {\n inUse.fragmentSpreads.forEach(function (childFragmentName) {\n populateTransitiveVars(getInUseByFragmentName(childFragmentName)).transitiveVars.forEach(function (varName) {\n inUse.transitiveVars.add(varName);\n });\n });\n }\n }\n return inUse;\n };\n var allFragmentNamesUsed = new Set();\n docWithoutDirectiveSubtrees.definitions.forEach(function (def) {\n if (def.kind === Kind.OPERATION_DEFINITION) {\n populateTransitiveVars(getInUseByOperationName(def.name && def.name.value)).fragmentSpreads.forEach(function (childFragmentName) {\n allFragmentNamesUsed.add(childFragmentName);\n });\n }\n else if (def.kind === Kind.FRAGMENT_DEFINITION &&\n operationCount === 0 &&\n !getInUseByFragmentName(def.name.value).removed) {\n allFragmentNamesUsed.add(def.name.value);\n }\n });\n allFragmentNamesUsed.forEach(function (fragmentName) {\n populateTransitiveVars(getInUseByFragmentName(fragmentName)).fragmentSpreads.forEach(function (childFragmentName) {\n allFragmentNamesUsed.add(childFragmentName);\n });\n });\n var fragmentWillBeRemoved = function (fragmentName) { return !!(!allFragmentNamesUsed.has(fragmentName) ||\n getInUseByFragmentName(fragmentName).removed); };\n var enterVisitor = {\n enter: function (node) {\n if (fragmentWillBeRemoved(node.name.value)) {\n return null;\n }\n },\n };\n return nullIfDocIsEmpty(visit(docWithoutDirectiveSubtrees, {\n FragmentSpread: enterVisitor,\n FragmentDefinition: enterVisitor,\n OperationDefinition: {\n leave: function (node) {\n if (node.variableDefinitions) {\n var usedVariableNames_1 = populateTransitiveVars(getInUseByOperationName(node.name && node.name.value)).transitiveVars;\n if (usedVariableNames_1.size < node.variableDefinitions.length) {\n return __assign(__assign({}, node), { variableDefinitions: node.variableDefinitions.filter(function (varDef) { return usedVariableNames_1.has(varDef.variable.name.value); }) });\n }\n }\n },\n },\n }));\n}\nexport var addTypenameToDocument = Object.assign(function (doc) {\n return visit(doc, {\n SelectionSet: {\n enter: function (node, _key, parent) {\n if (parent &&\n parent.kind === Kind.OPERATION_DEFINITION) {\n return;\n }\n var selections = node.selections;\n if (!selections) {\n return;\n }\n var skip = selections.some(function (selection) {\n return (isField(selection) &&\n (selection.name.value === '__typename' ||\n selection.name.value.lastIndexOf('__', 0) === 0));\n });\n if (skip) {\n return;\n }\n var field = parent;\n if (isField(field) &&\n field.directives &&\n field.directives.some(function (d) { return d.name.value === 'export'; })) {\n return;\n }\n return __assign(__assign({}, node), { selections: __spreadArray(__spreadArray([], selections, true), [TYPENAME_FIELD], false) });\n },\n },\n });\n}, {\n added: function (field) {\n return field === TYPENAME_FIELD;\n },\n});\nvar connectionRemoveConfig = {\n test: function (directive) {\n var willRemove = directive.name.value === 'connection';\n if (willRemove) {\n if (!directive.arguments ||\n !directive.arguments.some(function (arg) { return arg.name.value === 'key'; })) {\n __DEV__ && invariant.warn('Removing an @connection directive even though it does not have a key. ' +\n 'You may want to use the key parameter to specify a store key.');\n }\n }\n return willRemove;\n },\n};\nexport function removeConnectionDirectiveFromDocument(doc) {\n return removeDirectivesFromDocument([connectionRemoveConfig], checkDocument(doc));\n}\nfunction hasDirectivesInSelectionSet(directives, selectionSet, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n return (!!selectionSet &&\n selectionSet.selections &&\n selectionSet.selections.some(function (selection) {\n return hasDirectivesInSelection(directives, selection, nestedCheck);\n }));\n}\nfunction hasDirectivesInSelection(directives, selection, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n if (!isField(selection)) {\n return true;\n }\n if (!selection.directives) {\n return false;\n }\n return (selection.directives.some(getDirectiveMatcher(directives)) ||\n (nestedCheck &&\n hasDirectivesInSelectionSet(directives, selection.selectionSet, nestedCheck)));\n}\nfunction getArgumentMatcher(config) {\n return function argumentMatcher(argument) {\n return config.some(function (aConfig) {\n return argument.value &&\n argument.value.kind === Kind.VARIABLE &&\n argument.value.name &&\n (aConfig.name === argument.value.name.value ||\n (aConfig.test && aConfig.test(argument)));\n });\n };\n}\nexport function removeArgumentsFromDocument(config, doc) {\n var argMatcher = getArgumentMatcher(config);\n return nullIfDocIsEmpty(visit(doc, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { variableDefinitions: node.variableDefinitions ? node.variableDefinitions.filter(function (varDef) {\n return !config.some(function (arg) { return arg.name === varDef.variable.name.value; });\n }) : [] });\n },\n },\n Field: {\n enter: function (node) {\n var shouldRemoveField = config.some(function (argConfig) { return argConfig.remove; });\n if (shouldRemoveField) {\n var argMatchCount_1 = 0;\n if (node.arguments) {\n node.arguments.forEach(function (arg) {\n if (argMatcher(arg)) {\n argMatchCount_1 += 1;\n }\n });\n }\n if (argMatchCount_1 === 1) {\n return null;\n }\n }\n },\n },\n Argument: {\n enter: function (node) {\n if (argMatcher(node)) {\n return null;\n }\n },\n },\n }));\n}\nexport function removeFragmentSpreadFromDocument(config, doc) {\n function enter(node) {\n if (config.some(function (def) { return def.name === node.name.value; })) {\n return null;\n }\n }\n return nullIfDocIsEmpty(visit(doc, {\n FragmentSpread: { enter: enter },\n FragmentDefinition: { enter: enter },\n }));\n}\nexport function buildQueryFromSelectionSet(document) {\n var definition = getMainDefinition(document);\n var definitionOperation = definition.operation;\n if (definitionOperation === 'query') {\n return document;\n }\n var modifiedDoc = visit(document, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { operation: 'query' });\n },\n },\n });\n return modifiedDoc;\n}\nexport function removeClientSetsFromDocument(document) {\n checkDocument(document);\n var modifiedDoc = removeDirectivesFromDocument([\n {\n test: function (directive) { return directive.name.value === 'client'; },\n remove: true,\n },\n ], document);\n return modifiedDoc;\n}\n//# sourceMappingURL=transform.js.map","export default function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure \" + obj);\n}","// This currentContext variable will only be used if the makeSlotClass\n// function is called, which happens only if this is the first copy of the\n// @wry/context package to be imported.\nlet currentContext = null;\n// This unique internal object is used to denote the absence of a value\n// for a given Slot, and is never exposed to outside code.\nconst MISSING_VALUE = {};\nlet idCounter = 1;\n// Although we can't do anything about the cost of duplicated code from\n// accidentally bundling multiple copies of the @wry/context package, we can\n// avoid creating the Slot class more than once using makeSlotClass.\nconst makeSlotClass = () => class Slot {\n constructor() {\n // If you have a Slot object, you can find out its slot.id, but you cannot\n // guess the slot.id of a Slot you don't have access to, thanks to the\n // randomized suffix.\n this.id = [\n \"slot\",\n idCounter++,\n Date.now(),\n Math.random().toString(36).slice(2),\n ].join(\":\");\n }\n hasValue() {\n for (let context = currentContext; context; context = context.parent) {\n // We use the Slot object iself as a key to its value, which means the\n // value cannot be obtained without a reference to the Slot object.\n if (this.id in context.slots) {\n const value = context.slots[this.id];\n if (value === MISSING_VALUE)\n break;\n if (context !== currentContext) {\n // Cache the value in currentContext.slots so the next lookup will\n // be faster. This caching is safe because the tree of contexts and\n // the values of the slots are logically immutable.\n currentContext.slots[this.id] = value;\n }\n return true;\n }\n }\n if (currentContext) {\n // If a value was not found for this Slot, it's never going to be found\n // no matter how many times we look it up, so we might as well cache\n // the absence of the value, too.\n currentContext.slots[this.id] = MISSING_VALUE;\n }\n return false;\n }\n getValue() {\n if (this.hasValue()) {\n return currentContext.slots[this.id];\n }\n }\n withValue(value, callback, \n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n const slots = {\n __proto__: null,\n [this.id]: value,\n };\n const parent = currentContext;\n currentContext = { parent, slots };\n try {\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n }\n finally {\n currentContext = parent;\n }\n }\n // Capture the current context and wrap a callback function so that it\n // reestablishes the captured context when called.\n static bind(callback) {\n const context = currentContext;\n return function () {\n const saved = currentContext;\n try {\n currentContext = context;\n return callback.apply(this, arguments);\n }\n finally {\n currentContext = saved;\n }\n };\n }\n // Immediately run a callback function without any captured context.\n static noContext(callback, \n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n if (currentContext) {\n const saved = currentContext;\n try {\n currentContext = null;\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n }\n finally {\n currentContext = saved;\n }\n }\n else {\n return callback.apply(thisArg, args);\n }\n }\n};\nfunction maybe(fn) {\n try {\n return fn();\n }\n catch (ignored) { }\n}\n// We store a single global implementation of the Slot class as a permanent\n// non-enumerable property of the globalThis object. This obfuscation does\n// nothing to prevent access to the Slot class, but at least it ensures the\n// implementation (i.e. currentContext) cannot be tampered with, and all copies\n// of the @wry/context package (hopefully just one) will share the same Slot\n// implementation. Since the first copy of the @wry/context package to be\n// imported wins, this technique imposes a steep cost for any future breaking\n// changes to the Slot class.\nconst globalKey = \"@wry/context:Slot\";\nconst host = \n// Prefer globalThis when available.\n// https://github.com/benjamn/wryware/issues/347\nmaybe(() => globalThis) ||\n // Fall back to global, which works in Node.js and may be converted by some\n // bundlers to the appropriate identifier (window, self, ...) depending on the\n // bundling target. https://github.com/endojs/endo/issues/576#issuecomment-1178515224\n maybe(() => global) ||\n // Otherwise, use a dummy host that's local to this module. We used to fall\n // back to using the Array constructor as a namespace, but that was flagged in\n // https://github.com/benjamn/wryware/issues/347, and can be avoided.\n Object.create(null);\n// Whichever globalHost we're using, make TypeScript happy about the additional\n// globalKey property.\nconst globalHost = host;\nexport const Slot = globalHost[globalKey] ||\n // Earlier versions of this package stored the globalKey property on the Array\n // constructor, so we check there as well, to prevent Slot class duplication.\n Array[globalKey] ||\n (function (Slot) {\n try {\n Object.defineProperty(globalHost, globalKey, {\n value: Slot,\n enumerable: false,\n writable: false,\n // When it was possible for globalHost to be the Array constructor (a\n // legacy Slot dedup strategy), it was important for the property to be\n // configurable:true so it could be deleted. That does not seem to be as\n // important when globalHost is the global object, but I don't want to\n // cause similar problems again, and configurable:true seems safest.\n // https://github.com/endojs/endo/issues/576#issuecomment-1178274008\n configurable: true\n });\n }\n finally {\n return Slot;\n }\n })(makeSlotClass());\n//# sourceMappingURL=slot.js.map","import { Slot } from \"./slot.js\";\nexport { Slot };\nexport const { bind, noContext } = Slot;\n// Like global.setTimeout, except the callback runs with captured context.\nexport { setTimeoutWithContext as setTimeout };\nfunction setTimeoutWithContext(callback, delay) {\n return setTimeout(bind(callback), delay);\n}\n// Turn any generator function into an async function (using yield instead\n// of await), with context automatically preserved across yields.\nexport function asyncFromGen(genFn) {\n return function () {\n const gen = genFn.apply(this, arguments);\n const boundNext = bind(gen.next);\n const boundThrow = bind(gen.throw);\n return new Promise((resolve, reject) => {\n function invoke(method, argument) {\n try {\n var result = method.call(gen, argument);\n }\n catch (error) {\n return reject(error);\n }\n const next = result.done ? resolve : invokeNext;\n if (isPromiseLike(result.value)) {\n result.value.then(next, result.done ? reject : invokeThrow);\n }\n else {\n next(result.value);\n }\n }\n const invokeNext = (value) => invoke(boundNext, value);\n const invokeThrow = (error) => invoke(boundThrow, error);\n invokeNext();\n });\n };\n}\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\n// If you use the fibers npm package to implement coroutines in Node.js,\n// you should call this function at least once to ensure context management\n// remains coherent across any yields.\nconst wrappedFibers = [];\nexport function wrapYieldingFiberMethods(Fiber) {\n // There can be only one implementation of Fiber per process, so this array\n // should never grow longer than one element.\n if (wrappedFibers.indexOf(Fiber) < 0) {\n const wrap = (obj, method) => {\n const fn = obj[method];\n obj[method] = function () {\n return noContext(fn, arguments, this);\n };\n };\n // These methods can yield, according to\n // https://github.com/laverdet/node-fibers/blob/ddebed9b8ae3883e57f822e2108e6943e5c8d2a8/fibers.js#L97-L100\n wrap(Fiber, \"yield\");\n wrap(Fiber.prototype, \"run\");\n wrap(Fiber.prototype, \"throwInto\");\n wrappedFibers.push(Fiber);\n }\n return Fiber;\n}\n//# sourceMappingURL=index.js.map","const { toString, hasOwnProperty } = Object.prototype;\nconst fnToStr = Function.prototype.toString;\nconst previousComparisons = new Map();\n/**\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\n */\nexport function equal(a, b) {\n try {\n return check(a, b);\n }\n finally {\n previousComparisons.clear();\n }\n}\n// Allow default imports as well.\nexport default equal;\nfunction check(a, b) {\n // If the two values are strictly equal, our job is easy.\n if (a === b) {\n return true;\n }\n // Object.prototype.toString returns a representation of the runtime type of\n // the given value that is considerably more precise than typeof.\n const aTag = toString.call(a);\n const bTag = toString.call(b);\n // If the runtime types of a and b are different, they could maybe be equal\n // under some interpretation of equality, but for simplicity and performance\n // we just return false instead.\n if (aTag !== bTag) {\n return false;\n }\n switch (aTag) {\n case '[object Array]':\n // Arrays are a lot like other objects, but we can cheaply compare their\n // lengths as a short-cut before comparing their elements.\n if (a.length !== b.length)\n return false;\n // Fall through to object case...\n case '[object Object]': {\n if (previouslyCompared(a, b))\n return true;\n const aKeys = definedKeys(a);\n const bKeys = definedKeys(b);\n // If `a` and `b` have a different number of enumerable keys, they\n // must be different.\n const keyCount = aKeys.length;\n if (keyCount !== bKeys.length)\n return false;\n // Now make sure they have the same keys.\n for (let k = 0; k < keyCount; ++k) {\n if (!hasOwnProperty.call(b, aKeys[k])) {\n return false;\n }\n }\n // Finally, check deep equality of all child properties.\n for (let k = 0; k < keyCount; ++k) {\n const key = aKeys[k];\n if (!check(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n case '[object Error]':\n return a.name === b.name && a.message === b.message;\n case '[object Number]':\n // Handle NaN, which is !== itself.\n if (a !== a)\n return b !== b;\n // Fall through to shared +a === +b case...\n case '[object Boolean]':\n case '[object Date]':\n return +a === +b;\n case '[object RegExp]':\n case '[object String]':\n return a == `${b}`;\n case '[object Map]':\n case '[object Set]': {\n if (a.size !== b.size)\n return false;\n if (previouslyCompared(a, b))\n return true;\n const aIterator = a.entries();\n const isMap = aTag === '[object Map]';\n while (true) {\n const info = aIterator.next();\n if (info.done)\n break;\n // If a instanceof Set, aValue === aKey.\n const [aKey, aValue] = info.value;\n // So this works the same way for both Set and Map.\n if (!b.has(aKey)) {\n return false;\n }\n // However, we care about deep equality of values only when dealing\n // with Map structures.\n if (isMap && !check(aValue, b.get(aKey))) {\n return false;\n }\n }\n return true;\n }\n case '[object Uint16Array]':\n case '[object Uint8Array]': // Buffer, in Node.js.\n case '[object Uint32Array]':\n case '[object Int32Array]':\n case '[object Int8Array]':\n case '[object Int16Array]':\n case '[object ArrayBuffer]':\n // DataView doesn't need these conversions, but the equality check is\n // otherwise the same.\n a = new Uint8Array(a);\n b = new Uint8Array(b);\n // Fall through...\n case '[object DataView]': {\n let len = a.byteLength;\n if (len === b.byteLength) {\n while (len-- && a[len] === b[len]) {\n // Keep looping as long as the bytes are equal.\n }\n }\n return len === -1;\n }\n case '[object AsyncFunction]':\n case '[object GeneratorFunction]':\n case '[object AsyncGeneratorFunction]':\n case '[object Function]': {\n const aCode = fnToStr.call(a);\n if (aCode !== fnToStr.call(b)) {\n return false;\n }\n // We consider non-native functions equal if they have the same code\n // (native functions require === because their code is censored).\n // Note that this behavior is not entirely sound, since !== function\n // objects with the same code can behave differently depending on\n // their closure scope. However, any function can behave differently\n // depending on the values of its input arguments (including this)\n // and its calling context (including its closure scope), even\n // though the function object is === to itself; and it is entirely\n // possible for functions that are not === to behave exactly the\n // same under all conceivable circumstances. Because none of these\n // factors are statically decidable in JavaScript, JS function\n // equality is not well-defined. This ambiguity allows us to\n // consider the best possible heuristic among various imperfect\n // options, and equating non-native functions that have the same\n // code has enormous practical benefits, such as when comparing\n // functions that are repeatedly passed as fresh function\n // expressions within objects that are otherwise deeply equal. Since\n // any function created from the same syntactic expression (in the\n // same code location) will always stringify to the same code\n // according to fnToStr.call, we can reasonably expect these\n // repeatedly passed function expressions to have the same code, and\n // thus behave \"the same\" (with all the caveats mentioned above),\n // even though the runtime function objects are !== to one another.\n return !endsWith(aCode, nativeCodeSuffix);\n }\n }\n // Otherwise the values are not equal.\n return false;\n}\nfunction definedKeys(obj) {\n // Remember that the second argument to Array.prototype.filter will be\n // used as `this` within the callback function.\n return Object.keys(obj).filter(isDefinedKey, obj);\n}\nfunction isDefinedKey(key) {\n return this[key] !== void 0;\n}\nconst nativeCodeSuffix = \"{ [native code] }\";\nfunction endsWith(full, suffix) {\n const fromIndex = full.length - suffix.length;\n return fromIndex >= 0 &&\n full.indexOf(suffix, fromIndex) === fromIndex;\n}\nfunction previouslyCompared(a, b) {\n // Though cyclic references can make an object graph appear infinite from the\n // perspective of a depth-first traversal, the graph still contains a finite\n // number of distinct object references. We use the previousComparisons cache\n // to avoid comparing the same pair of object references more than once, which\n // guarantees termination (even if we end up comparing every object in one\n // graph to every object in the other graph, which is extremely unlikely),\n // while still allowing weird isomorphic structures (like rings with different\n // lengths) a chance to pass the equality test.\n let bSet = previousComparisons.get(a);\n if (bSet) {\n // Return true here because we can be sure false will be returned somewhere\n // else if the objects are not equivalent.\n if (bSet.has(b))\n return true;\n }\n else {\n previousComparisons.set(a, bSet = new Set);\n }\n bSet.add(b);\n return false;\n}\n//# sourceMappingURL=index.js.map","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\n// object keys weakly, yet can also hold non-object keys, unlike the\n// native `WeakMap`.\n// If no makeData function is supplied, the looked-up data will be an empty,\n// null-prototype Object.\nconst defaultMakeData = () => Object.create(null);\n// Useful for processing arguments objects as well as arrays.\nconst { forEach, slice } = Array.prototype;\nconst { hasOwnProperty } = Object.prototype;\nexport class Trie {\n constructor(weakness = true, makeData = defaultMakeData) {\n this.weakness = weakness;\n this.makeData = makeData;\n }\n lookup(...array) {\n return this.lookupArray(array);\n }\n lookupArray(array) {\n let node = this;\n forEach.call(array, key => node = node.getChildTrie(key));\n return hasOwnProperty.call(node, \"data\")\n ? node.data\n : node.data = this.makeData(slice.call(array));\n }\n peek(...array) {\n return this.peekArray(array);\n }\n peekArray(array) {\n let node = this;\n for (let i = 0, len = array.length; node && i < len; ++i) {\n const map = this.weakness && isObjRef(array[i]) ? node.weak : node.strong;\n node = map && map.get(array[i]);\n }\n return node && node.data;\n }\n getChildTrie(key) {\n const map = this.weakness && isObjRef(key)\n ? this.weak || (this.weak = new WeakMap())\n : this.strong || (this.strong = new Map());\n let child = map.get(key);\n if (!child)\n map.set(key, child = new Trie(this.weakness, this.makeData));\n return child;\n }\n}\nfunction isObjRef(value) {\n switch (typeof value) {\n case \"object\":\n if (value === null)\n break;\n // Fall through to return true...\n case \"function\":\n return true;\n }\n return false;\n}\n//# sourceMappingURL=index.js.map","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export function devAssert(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","const MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? `[function ${value.name}]` : '[function]';\n\n case 'object':\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (value === null) {\n return 'null';\n }\n\n if (previouslySeenValues.includes(value)) {\n return '[Circular]';\n }\n\n const seenValues = [...previouslySeenValues, value];\n\n if (isJSONable(value)) {\n const jsonValue = value.toJSON(); // check for infinite recursion\n\n if (jsonValue !== value) {\n return typeof jsonValue === 'string'\n ? jsonValue\n : formatValue(jsonValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction isJSONable(value) {\n return typeof value.toJSON === 'function';\n}\n\nfunction formatObject(object, seenValues) {\n const entries = Object.entries(object);\n\n if (entries.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n const properties = entries.map(\n ([key, value]) => key + ': ' + formatValue(value, seenValues),\n );\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n const remaining = array.length - len;\n const items = [];\n\n for (let i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(`... ${remaining} more items`);\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag(object) {\n const tag = Object.prototype.toString\n .call(object)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n const name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport class Location {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n constructor(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n get [Symbol.toStringTag]() {\n return 'Location';\n }\n\n toJSON() {\n return {\n start: this.start,\n end: this.end,\n };\n }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport class Token {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n *\n * Note: is undefined for punctuation tokens, but typed as string for\n * convenience in the parser.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. <SOF> is always the first node and <EOF>\n * the last.\n */\n constructor(kind, start, end, line, column, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n this.value = value;\n this.prev = null;\n this.next = null;\n }\n\n get [Symbol.toStringTag]() {\n return 'Token';\n }\n\n toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column,\n };\n }\n}\n/**\n * The list of all possible AST node types.\n */\n\n/**\n * @internal\n */\nexport const QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: [\n 'name',\n 'variableDefinitions',\n 'directives',\n 'selectionSet',\n ],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: [\n 'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n 'variableDefinitions',\n 'typeCondition',\n 'directives',\n 'selectionSet',\n ],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: [\n 'description',\n 'name',\n 'type',\n 'defaultValue',\n 'directives',\n ],\n InterfaceTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields'],\n};\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n const maybeKind =\n maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nvar OperationTypeNode;\n\n(function (OperationTypeNode) {\n OperationTypeNode['QUERY'] = 'query';\n OperationTypeNode['MUTATION'] = 'mutation';\n OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (OperationTypeNode = {}));\n\nexport { OperationTypeNode };\n","import { isWhiteSpace } from './characterClasses.mjs';\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\n\nexport function dedentBlockStringLines(lines) {\n var _firstNonEmptyLine2;\n\n let commonIndent = Number.MAX_SAFE_INTEGER;\n let firstNonEmptyLine = null;\n let lastNonEmptyLine = -1;\n\n for (let i = 0; i < lines.length; ++i) {\n var _firstNonEmptyLine;\n\n const line = lines[i];\n const indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n firstNonEmptyLine =\n (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine !== void 0\n ? _firstNonEmptyLine\n : i;\n lastNonEmptyLine = i;\n\n if (i !== 0 && indent < commonIndent) {\n commonIndent = indent;\n }\n }\n\n return lines // Remove common indentation from all lines but first.\n .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n .slice(\n (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine2 !== void 0\n ? _firstNonEmptyLine2\n : 0,\n lastNonEmptyLine + 1,\n );\n}\n\nfunction leadingWhitespace(str) {\n let i = 0;\n\n while (i < str.length && isWhiteSpace(str.charCodeAt(i))) {\n ++i;\n }\n\n return i;\n}\n/**\n * @internal\n */\n\nexport function isPrintableAsBlockString(value) {\n if (value === '') {\n return true; // empty string is printable\n }\n\n let isEmptyLine = true;\n let hasIndent = false;\n let hasCommonIndent = true;\n let seenNonEmptyLine = false;\n\n for (let i = 0; i < value.length; ++i) {\n switch (value.codePointAt(i)) {\n case 0x0000:\n case 0x0001:\n case 0x0002:\n case 0x0003:\n case 0x0004:\n case 0x0005:\n case 0x0006:\n case 0x0007:\n case 0x0008:\n case 0x000b:\n case 0x000c:\n case 0x000e:\n case 0x000f:\n return false;\n // Has non-printable characters\n\n case 0x000d:\n // \\r\n return false;\n // Has \\r or \\r\\n which will be replaced as \\n\n\n case 10:\n // \\n\n if (isEmptyLine && !seenNonEmptyLine) {\n return false; // Has leading new line\n }\n\n seenNonEmptyLine = true;\n isEmptyLine = true;\n hasIndent = false;\n break;\n\n case 9: // \\t\n\n case 32:\n // <space>\n hasIndent || (hasIndent = isEmptyLine);\n break;\n\n default:\n hasCommonIndent && (hasCommonIndent = hasIndent);\n isEmptyLine = false;\n }\n }\n\n if (isEmptyLine) {\n return false; // Has trailing empty lines\n }\n\n if (hasCommonIndent && seenNonEmptyLine) {\n return false; // Has internal indent\n }\n\n return true;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value, options) {\n const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n const forceLeadingNewLine =\n lines.length > 1 &&\n lines\n .slice(1)\n .every((line) => line.length === 0 || isWhiteSpace(line.charCodeAt(0))); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n const hasTrailingSlash = value.endsWith('\\\\');\n const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n const printAsMultipleLines =\n !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n (!isSingleLine ||\n value.length > 70 ||\n forceTrailingNewline ||\n forceLeadingNewLine ||\n hasTrailingTripleQuotes);\n let result = ''; // Format a multi-line block quote to account for leading space.\n\n const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0));\n\n if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n result += '\\n';\n }\n\n result += escapedValue;\n\n if (printAsMultipleLines || forceTrailingNewline) {\n result += '\\n';\n }\n\n return '\"\"\"' + result + '\"\"\"';\n}\n","/**\n * ```\n * WhiteSpace ::\n * - \"Horizontal Tab (U+0009)\"\n * - \"Space (U+0020)\"\n * ```\n * @internal\n */\nexport function isWhiteSpace(code) {\n return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nexport function isDigit(code) {\n return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n * - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n * - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n * - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n * - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nexport function isLetter(code) {\n return (\n (code >= 0x0061 && code <= 0x007a) || // A-Z\n (code >= 0x0041 && code <= 0x005a) // a-z\n );\n}\n/**\n * ```\n * NameStart ::\n * - Letter\n * - `_`\n * ```\n * @internal\n */\n\nexport function isNameStart(code) {\n return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n * - Letter\n * - Digit\n * - `_`\n * ```\n * @internal\n */\n\nexport function isNameContinue(code) {\n return isLetter(code) || isDigit(code) || code === 0x005f;\n}\n","/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind;\n\n(function (Kind) {\n Kind['NAME'] = 'Name';\n Kind['DOCUMENT'] = 'Document';\n Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n Kind['SELECTION_SET'] = 'SelectionSet';\n Kind['FIELD'] = 'Field';\n Kind['ARGUMENT'] = 'Argument';\n Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n Kind['VARIABLE'] = 'Variable';\n Kind['INT'] = 'IntValue';\n Kind['FLOAT'] = 'FloatValue';\n Kind['STRING'] = 'StringValue';\n Kind['BOOLEAN'] = 'BooleanValue';\n Kind['NULL'] = 'NullValue';\n Kind['ENUM'] = 'EnumValue';\n Kind['LIST'] = 'ListValue';\n Kind['OBJECT'] = 'ObjectValue';\n Kind['OBJECT_FIELD'] = 'ObjectField';\n Kind['DIRECTIVE'] = 'Directive';\n Kind['NAMED_TYPE'] = 'NamedType';\n Kind['LIST_TYPE'] = 'ListType';\n Kind['NON_NULL_TYPE'] = 'NonNullType';\n Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n})(Kind || (Kind = {}));\n\nexport { Kind };\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n","import { inspect } from './inspect.mjs';\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n * See: https://webpack.js.org/guides/production/\n */\n\nexport const instanceOf =\n /* c8 ignore next 6 */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n globalThis.process && globalThis.process.env.NODE_ENV === 'production'\n ? function instanceOf(value, constructor) {\n return value instanceof constructor;\n }\n : function instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (typeof value === 'object' && value !== null) {\n var _value$constructor;\n\n // Prefer Symbol.toStringTag since it is immune to minification.\n const className = constructor.prototype[Symbol.toStringTag];\n const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n ? value[Symbol.toStringTag]\n : (_value$constructor = value.constructor) === null ||\n _value$constructor === void 0\n ? void 0\n : _value$constructor.name;\n\n if (className === valueClassName) {\n const stringifiedValue = inspect(value);\n throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n\nEnsure that there is only one instance of \"graphql\" in the node_modules\ndirectory. If different versions of \"graphql\" are the dependencies of other\nrelied on modules, use \"resolutions\" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate \"graphql\" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`);\n }\n }\n\n return false;\n };\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { instanceOf } from '../jsutils/instanceOf.mjs';\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport class Source {\n constructor(\n body,\n name = 'GraphQL request',\n locationOffset = {\n line: 1,\n column: 1,\n },\n ) {\n typeof body === 'string' ||\n devAssert(false, `Body must be a string. Received: ${inspect(body)}.`);\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 ||\n devAssert(\n false,\n 'line in locationOffset is 1-indexed and must be positive.',\n );\n this.locationOffset.column > 0 ||\n devAssert(\n false,\n 'column in locationOffset is 1-indexed and must be positive.',\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'Source';\n }\n}\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\nexport function isSource(source) {\n return instanceOf(source, Source);\n}\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { isNode, QueryDocumentKeys } from './ast.mjs';\nimport { Kind } from './kinds.mjs';\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport const BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\n\nexport function visit(root, visitor, visitorKeys = QueryDocumentKeys) {\n const enterLeaveMap = new Map();\n\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n /* eslint-disable no-undef-init */\n\n let stack = undefined;\n let inArray = Array.isArray(root);\n let keys = [root];\n let index = -1;\n let edits = [];\n let node = root;\n let key = undefined;\n let parent = undefined;\n const path = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n let editOffset = 0;\n\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = Object.defineProperties(\n {},\n Object.getOwnPropertyDescriptors(node),\n );\n\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent) {\n key = inArray ? index : keys[index];\n node = parent[key];\n\n if (node === null || node === undefined) {\n continue;\n }\n\n path.push(key);\n }\n\n let result;\n\n if (!Array.isArray(node)) {\n var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n isNode(node) || devAssert(false, `Invalid AST Node: ${inspect(node)}.`);\n const visitFn = isLeaving\n ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get === void 0\n ? void 0\n : _enterLeaveMap$get.leave\n : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get2 === void 0\n ? void 0\n : _enterLeaveMap$get2.enter;\n result =\n visitFn === null || visitFn === void 0\n ? void 0\n : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _node$kind;\n\n stack = {\n inArray,\n index,\n keys,\n edits,\n prev: stack,\n };\n inArray = Array.isArray(node);\n keys = inArray\n ? node\n : (_node$kind = visitorKeys[node.kind]) !== null &&\n _node$kind !== void 0\n ? _node$kind\n : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits[edits.length - 1][1];\n }\n\n return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor || (hasVisitor = enter != null || leave != null);\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave = {\n enter(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _enterList$i;\n\n const result =\n (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n ? void 0\n : _enterList$i.apply(visitors[i], args);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n\n leave(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _leaveList$i;\n\n const result =\n (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n ? void 0\n : _leaveList$i.apply(visitors[i], args);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nexport function getEnterLeaveForKind(visitor, kind) {\n const kindVisitor = visitor[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return {\n enter: kindVisitor,\n leave: undefined,\n };\n } // { enter() {}, leave() {} }\n\n return {\n enter: visitor.enter,\n leave: visitor.leave,\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n return isLeaving ? leave : enter;\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n};\n","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(observer, subscriber) {\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n var _proto = Subscription.prototype;\n\n _proto.unsubscribe = function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n };\n\n _createClass(Subscription, [{\n key: \"closed\",\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = /*#__PURE__*/function () {\n function SubscriptionObserver(subscription) {\n this._subscription = subscription;\n }\n\n var _proto2 = SubscriptionObserver.prototype;\n\n _proto2.next = function next(value) {\n onNotify(this._subscription, 'next', value);\n };\n\n _proto2.error = function error(value) {\n onNotify(this._subscription, 'error', value);\n };\n\n _proto2.complete = function complete() {\n onNotify(this._subscription, 'complete');\n };\n\n _createClass(SubscriptionObserver, [{\n key: \"closed\",\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = /*#__PURE__*/function () {\n function Observable(subscriber) {\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n var _proto3 = Observable.prototype;\n\n _proto3.subscribe = function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n };\n\n _proto3.forEach = function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n };\n\n _proto3.map = function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.filter = function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.reduce = function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n };\n\n _proto3.concat = function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n };\n\n _proto3.flatMap = function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n };\n\n _proto3[SymbolObservable] = function () {\n return this;\n };\n\n Observable.from = function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var _iterator = _createForOfIteratorHelperLoose(method.call(x)), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n observer.next(item);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n };\n\n Observable.of = function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n };\n\n _createClass(Observable, null, [{\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}\n\nexport { Observable };\n"],"names":["capitalize","string","Error","charAt","toUpperCase","slice","TableCell","props","ref","role","Component","_props$align","align","classes","className","component","paddingProp","padding","scopeProp","scope","sizeProp","size","sortDirection","variantProp","variant","other","table","TableContext","tablelvl2","Tablelvl2Context","isHeadCell","ariaSort","root","concat","stickyHeader","withStyles","theme","typography","body2","display","verticalAlign","borderBottom","palette","type","divider","textAlign","head","color","text","primary","lineHeight","pxToRem","fontWeight","fontWeightMedium","body","footer","secondary","fontSize","sizeSmall","paddingRight","width","paddingLeft","paddingCheckbox","paddingNone","alignLeft","alignCenter","alignRight","flexDirection","alignJustify","position","top","left","zIndex","backgroundColor","background","default","name","defaultComponent","TableFooter","_props$component","Provider","value","TableHead","TableRow","_props$hover","hover","_props$selected","selected","outline","action","main","selectedOpacity","exports","React","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","obj","Symbol","iterator","constructor","prototype","configurable","writable","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","Array","isArray","_i","_s","_e","_arr","_n","_d","call","next","done","err","o","minLen","_arrayLikeToArray","n","toString","from","test","len","arr2","TypeError","createCommonjsModule","fn","module","hasOwnProperty","ReactPropTypesSecret_1","emptyFunction","emptyFunctionWithReset","resetWarningCache","factoryWithThrowingShims","shim","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bool","func","number","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","propTypes","usePrevious","useRef","useEffect","current","isUnknownObject","raw","isPromise","then","isStripe","elements","createToken","createPaymentMethod","confirmCardPayment","PLAIN_OBJECT_STR","isEqual","right","leftArray","leftPlainObject","leftKeys","rightKeys","keySet","allKeys","l","r","pred","every","extractAllowedOptionsUpdates","options","prevOptions","immutableKeys","reduce","newOptions","isUpdated","includes","console","warn","INVALID_STRIPE_ERROR","validateStripe","maybeStripe","parseStripeProp","tag","stripePromise","Promise","resolve","stripe","ElementsContext","createContext","displayName","parseElementsContext","ctx","useCase","CartElementContext","parseCartElementContext","Elements","_ref","rawStripeProp","children","parsed","useMemo","_React$useState2","useState","cart","setCart","_React$useState4","cartState","setCartState","_React$useState6","setContext","isMounted","safeSetContext","prevStripe","updates","update","anyStripe","_registerWrapper","registerAppInfo","version","url","createElement","useElementsContextWithUseCase","useCaseMessage","useContext","useCartElementContextWithUseCase","useElements","useStripe","useCartElement","useCartElementState","ElementsConsumer","_ref2","useAttachEvent","event","cb","cbDefined","cbRef","decoratedCb","on","off","capitalized","str","createElementComponent","isServer","Element","id","readyCallback","_ref$options","onBlur","onFocus","onReady","onChange","onEscape","onClick","onLoadError","onLoaderStart","onNetworksChange","onCheckout","onLineItemClick","onConfirm","onCancel","onShippingAddressChange","onShippingRateChange","setElement","elementRef","domNode","_useCartElementContex","useLayoutEffect","newElement","create","mount","destroy","error","__elementType","window","AuBankAccountElement","CardElement","CardNumberElement","CardExpiryElement","CardCvcElement","FpxBankElement","IbanElement","IdealBankElement","P24BankElement","EpsBankElement","PaymentElement","ExpressCheckoutElement","PaymentRequestButtonElement","LinkAuthenticationElement","AddressElement","ShippingAddressElement","CartElement","PaymentMethodMessagingElement","AffirmMessageElement","AfterpayClearpayMessageElement","factory","V3_URL","V3_URL_REGEX","EXISTING_SCRIPT_MESSAGE","loadScript","params","reject","document","Stripe","script","scripts","querySelectorAll","src","findScript","queryString","advancedFraudSignals","headOrBody","appendChild","injectScript","addEventListener","stripePromise$1","loadCalled","loadStripe","_len","args","_key","startTime","Date","now","undefined","registerWrapper","initStripe","__esModule","instance","Constructor","_defineProperty2","descriptor","protoProps","staticProps","_assign","_assign2","_setPrototypeOf2","_interopRequireDefault","_create2","_typeof3","subClass","superClass","__proto__","indexOf","_typeof2","self","ReferenceError","_from","_from2","_iterator2","_symbol2","$Object","P","D","it","desc","isObject","toIObject","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","O","index","cof","TAG","ARG","T","B","e","tryGet","callee","core","__e","$defineProperty","createDesc","f","aFunction","that","a","b","c","get","is","split","getKeys","gOPS","pIE","result","getSymbols","isEnum","global","hide","has","PROTOTYPE","$export","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","IS_WRAP","W","expProto","C","this","Function","virtual","R","U","exec","Math","__g","dP","documentElement","propertyIsEnumerable","Iterators","ITERATOR","ArrayProto","arg","anObject","entries","ret","setToStringTag","IteratorPrototype","NAME","LIBRARY","redefine","$iterCreate","getPrototypeOf","BUGGY","KEYS","VALUES","returnThis","Base","DEFAULT","IS_SET","FORCED","methods","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","values","SAFE_CLOSING","riter","skipClosing","safe","iter","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","KEY","NEED","fastKey","getWeak","onFreeze","DESCRIPTORS","toObject","IObject","$assign","assign","A","K","k","join","aLen","j","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","contentWindow","open","write","lt","close","Properties","IE8_DOM_DEFINE","toPrimitive","Attributes","gOPD","gOPN","windowNames","getOwnPropertyNames","getWindowNames","$keys","hiddenKeys","ObjectProto","arrayIndexOf","names","fails","exp","bitmap","check","set","setPrototypeOf","buggy","def","stat","shared","uid","SHARED","store","mode","copyright","toInteger","defined","TO_STRING","pos","s","String","charCodeAt","max","min","ceil","floor","isNaN","val","valueOf","px","random","wksExt","$Symbol","USE_SYMBOL","classof","isArrayIter","createProperty","getIterFn","arrayLike","step","mapfn","mapping","iterFn","addToUnscopables","iterated","_t","_k","Arguments","$getPrototypeOf","$at","point","$fails","wks","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$GOPS","$DP","$JSON","JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","protoDesc","wrap","isSymbol","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","TO_STRING_TAG","DOMIterables","Collection","canUseDOM","currentListeners","nextListeners","ensureCanMutateNextListeners","listen","listener","isSubscribed","splice","emit","listeners","conversions","PI","sourceUnit","targetUnit","precision","converted","pow","parseInt","round","globalScope","ONE","MAX_DIGITS","Decimal","rounding","toExpNeg","toExpPos","LN10","external","decimalError","invalidArgument","exponentOutOfRange","mathfloor","mathpow","isDecimal","BASE","LOG_BASE","MAX_SAFE_INTEGER","MAX_E","add","x","y","carry","d","xd","yd","Ctor","pr","reverse","unshift","pop","checkInt32","digitsToString","ws","indexOfLastWord","getZeroString","absoluteValue","abs","comparedTo","cmp","xdL","ydL","decimalPlaces","dp","dividedBy","div","divide","dividedToIntegerBy","idiv","equals","eq","exponent","getBase10Exponent","greaterThan","gt","greaterThanOrEqualTo","gte","isInteger","isint","isNegative","isneg","isPositive","ispos","isZero","lessThan","lessThanOrEqualTo","lte","logarithm","log","base","wpr","ln","minus","sub","subtract","modulo","mod","q","times","naturalExponential","naturalLogarithm","negated","neg","plus","sd","z","squareRoot","sqrt","t","toExponential","mul","rL","shift","toDecimalPlaces","todp","rm","toFixed","toint","toNumber","toPower","sign","yIsInt","yn","truncate","toPrecision","toSignificantDigits","tosd","toJSON","multiplyInteger","temp","compare","aL","bL","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","denominator","sum","getLn10","zs","c0","numerator","x2","parseDecimal","replace","search","substring","rd","doRound","xdi","xe","xLTy","isExp","config","p","v","ps","clone","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","prefix","Events","EE","context","once","addListener","emitter","evt","_events","_eventsCount","clearEvent","EventEmitter","eventNames","events","handlers","ee","listenerCount","a1","a2","a3","a4","a5","removeListener","removeAllListeners","prefixed","objA","objB","keysA","keysB","invariant","condition","message","Boolean","LineRegExp","getLocation","lastLineStart","line","match","matchAll","column","printLocation","printSourceLocation","start","sourceLocation","firstLineColumnOffset","locationOffset","padStart","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","lines","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","map","subLine","existingLines","_","padLen","GraphQLError","rawArgs","_this$nodes","_nodeLocations$","nodes","positions","path","originalError","extensions","firstArg","toNormalizedOptions","super","undefinedIfEmpty","nodeLocations","loc","locations","originalExtensions","stack","captureStackTrace","toStringTag","output","formattedError","syntaxError","description","DirectiveLocation","TokenKind","Lexer","startOfFileToken","SOF","lastToken","token","lineStart","advance","lookahead","EOF","nextToken","readNextToken","end","prev","COMMENT","isUnicodeScalarValue","code","isSupplementaryCodePoint","isLeadingSurrogate","isTrailingSurrogate","printCodePointAt","lexer","codePointAt","char","fromCodePoint","col","bodyLength","readComment","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","readBlockString","readString","readNumber","readName","firstCode","isFloat","readDigits","FLOAT","INT","chunkStart","STRING","escape","readEscapedUnicodeVariableWidth","readEscapedUnicodeFixedWidth","readEscapedCharacter","readHexDigit","read16BitHexCode","trailingCode","currentLine","blockLines","BLOCK_STRING","Parser","sourceObj","_lexer","_options","_tokenCounter","parseName","expectToken","parseDocument","DOCUMENT","definitions","many","parseDefinition","peek","parseOperationDefinition","hasDescription","peekDescription","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseFragmentDefinition","parseTypeSystemExtension","unexpected","OPERATION_DEFINITION","operation","QUERY","variableDefinitions","directives","selectionSet","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","MUTATION","SUBSCRIPTION","optionalMany","parseVariableDefinition","VARIABLE_DEFINITION","variable","parseVariable","parseTypeReference","defaultValue","expectOptionalToken","parseConstValueLiteral","parseConstDirectives","VARIABLE","SELECTION_SET","selections","parseSelection","parseFragment","parseField","nameOrAlias","alias","FIELD","parseArguments","isConst","item","parseConstArgument","parseArgument","ARGUMENT","parseValueLiteral","hasTypeCondition","expectOptionalKeyword","FRAGMENT_SPREAD","parseFragmentName","INLINE_FRAGMENT","typeCondition","parseNamedType","expectKeyword","allowLegacyFragmentVariables","FRAGMENT_DEFINITION","parseList","parseObject","advanceLexer","parseStringLiteral","BOOLEAN","NULL","ENUM","varName","block","LIST","OBJECT","fields","parseObjectField","OBJECT_FIELD","parseDirective","DIRECTIVE","innerType","LIST_TYPE","NON_NULL_TYPE","NAMED_TYPE","parseDescription","operationTypes","parseOperationTypeDefinition","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","interfaces","parseImplementsInterfaces","parseFieldsDefinition","OBJECT_TYPE_DEFINITION","delimitedMany","parseFieldDefinition","parseArgumentDefs","FIELD_DEFINITION","parseInputValueDef","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","types","parseUnionMemberTypes","UNION_TYPE_DEFINITION","parseEnumValuesDefinition","ENUM_TYPE_DEFINITION","parseEnumValueDefinition","parseEnumValueName","ENUM_VALUE_DEFINITION","getTokenDesc","parseInputFieldsDefinition","INPUT_OBJECT_TYPE_DEFINITION","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","repeatable","parseDirectiveLocations","DIRECTIVE_DEFINITION","parseDirectiveLocation","startToken","noLocation","getTokenKindDesc","atToken","openKind","parseFn","closeKind","delimiterKind","maxTokens","isPunctuatorTokenKind","docCache","Map","fragmentSourceMap","printFragmentWarnings","experimentalFragmentVariables","normalize","trim","processFragments","ast","seenKeys","Set","fragmentDefinition","fragmentName","sourceKey","sourceKeySet","cacheKey","parse","doc","workSet","endToken","stripLoc","gql","literals","gql_1","extras","clear","resetCaches","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","baseCreate","baseLodash","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","LodashWrapper","chainAll","__chain__","__index__","__values__","predicate","baseIndexOf","comparator","wait","setTimeout","baseForOwn","baseEach","createBaseEach","collection","iteratee","computed","fromRight","baseFindIndex","baseIsNaN","strictIndexOf","isArrayLike","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","identity","iteratees","orders","nativeCeil","nativeMax","accumulator","initAccum","eachFunc","metaMap","baseSetData","data","comparer","sort","SetCache","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","isCommon","seen","outer","seenIndex","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","offset","placeholder","iterable","createCtor","bitmask","thisArg","isBind","wrapper","thisBinding","createHybrid","createRecurry","getHolder","replaceHolders","arity","findIndexFunc","composeArgs","composeArgsRight","countHolders","reorder","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","baseRange","isIterateeCall","toFinite","isLaziable","setData","setWrapToString","wrapFunc","isCurry","newData","noop","createBind","createCurry","createPartial","getData","mergeData","realNames","otherFunc","reWrapDetails","reSplitDetails","reWrapComment","details","lastIndex","getFuncName","lodash","funcName","PLACEHOLDER","WRAP_ARY_FLAG","nativeMin","srcBitmask","newBitmask","isCombo","WeakMap","copyArray","isIndex","indexes","arrLength","oldArray","resIndex","shortOut","getWrapDetails","insertWrapDetails","setToString","updateWrapDetails","reference","arrayEach","wrapFlags","pair","baseRest","createWrap","bind","baseDelay","delay","arrayEvery","baseEvery","guard","find","createFind","baseFlatten","castFunction","baseGetTag","isObjectLike","baseIsEqual","isNumber","lowerFirst","createCaseFirst","baseExtremum","baseGt","baseLt","range","createRange","arrayReduce","baseReduce","arraySome","baseSome","baseOrderBy","sortBy","INFINITY","remainder","baseUniq","wrapperClone","defaultMakeData","_a","Trie","weakness","makeData","lookup","lookupArray","getChildTrie","isObjRef","weak","strong","child","defaultDispose","Cache","dispose","Infinity","newest","oldest","getNode","older","newer","clean","delete","parentEntrySlot","toArray","maybeUnsubscribe","entryOrDep","unsubscribe","emptySetPool","POOL_TARGET_SIZE","assert","optionalMessage","valueGet","Entry","parents","childValues","dirtyChildren","dirty","recomputing","deps","count","mightBeDirty","rememberParent","recompute","entry","forgetChildren","withValue","recomputeNewValue","subscribe","setDirty","maybeSubscribe","reportClean","setClean","reallyRecompute","reportDirty","_this","eachParent","parent","forgetChild","forget","dependOn","dep","forgetDeps","getValue","reportDirtyChild","reportCleanChild","callback","parentCount","parentWasClean","childValue","removeDirtyChild","dc","_value","EntryMethods","depsByKey","depend","dep_1","entryMethodName","m_1","makeDefaultMakeCacheKeyFunction","keyTrie","caches","originalFunction","cache","keyArgs","makeCacheKey","optimistic","hasValue","dirtyKey","peekKey","forgetKey","getKey","freeze","_reactSwipe","_reactSwipe2","_react","_propTypes","setHasSupportToCaptureOption","_react2","_propTypes2","_extends","_objectWithoutProperties","_classCallCheck","_createClass","_possibleConstructorReturn","_inherits","supportsCaptureOption","hasSupport","getSafeEventHandlerOpts","capture","getPosition","_event$touches$","touches","pageX","pageY","screenX","screenY","ReactSwipe","_Component","_handleSwipeStart","_handleSwipeMove","_handleSwipeEnd","_onMouseDown","_onMouseMove","_onMouseUp","_setSwiperRef","swiper","passive","removeEventListener","allowMouseEvents","mouseDown","_getPosition","moveStart","onSwipeStart","_getPosition2","deltaX","deltaY","moving","onSwipeMove","cancelable","preventDefault","movePosition","onSwipeEnd","tolerance","onSwipeLeft","onSwipeRight","onSwipeUp","onSwipeDown","innerRef","_props","tagName","onMouseDown","onTouchStart","onTouchEnd","defaultProps","extendStatics","__extends","__","__importDefault","prop_types_1","react_1","FileDrop","_super","resetDragging","frameDragCounter","setState","draggingOverFrame","draggingOverTarget","handleWindowDragOverOrDrop","handleFrameDrag","eventHasFiles","onFrameDragEnter","onFrameDragLeave","handleFrameDrop","state","onFrameDrop","handleDragOver","isIE","dropEffect","dataTransfer","onDragOver","handleDragLeave","onDragLeave","handleDrop","onDrop","files","handleTargetClick","onTargetClick","stopFrameListeners","frame","startFrameListeners","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","render","targetClassName","draggingOverFrameClassName","draggingOverTargetClassName","_b","fileDropTargetClassName","navigator","userAgent","appVersion","hasFiles","keyOrIndex","prop","HTMLElement","PureComponent","BicyclingLayer","_defineProperty3","_getPrototypeOf2","_classCallCheck3","_createClass3","_possibleConstructorReturn3","_inherits3","_MapChildHelper","_constants","_React$PureComponent","bicyclingLayer","google","maps","construct","updaterMap","setMap","MAP","BICYCLING_LAYER","eventMap","contextTypes","Circle","circle","CIRCLE","getBounds","getCenter","getDraggable","getEditable","getRadius","getVisible","defaultCenter","defaultDraggable","defaultEditable","defaultOptions","defaultRadius","defaultVisible","center","draggable","editable","radius","visible","onDblClick","onDragEnd","onDragStart","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onRightClick","onCenterChanged","onDrag","onRadiusChanged","_center","setCenter","_draggable","setDraggable","_editable","setEditable","setOptions","_radius","setRadius","_visible","setVisible","DirectionsRenderer","directionsRenderer","DIRECTIONS_RENDERER","getDirections","getPanel","getRouteIndex","defaultDirections","defaultPanel","defaultRouteIndex","directions","panel","routeIndex","onDirectionsChanged","_directions","setDirections","_panel","setPanel","_routeIndex","setRouteIndex","FusionTablesLayer","fusionTablesLayer","FUSION_TABLES_LAYER","GoogleMap","_toConsumableArray3","_invariant2","_context$MAP","fitBounds","_context$MAP2","panBy","_context$MAP3","panTo","_context$MAP4","panToBounds","getClickableIcons","getDiv","getHeading","getMapTypeId","getProjection","getStreetView","getTilt","getZoom","defaultExtraMapTypes","defaultClickableIcons","defaultHeading","defaultMapTypeId","defaultStreetView","defaultTilt","defaultZoom","clickableIcons","heading","mapTypeId","streetView","tilt","zoom","onMapTypeIdChanged","onTilesLoaded","onBoundsChanged","onHeadingChanged","onIdle","onProjectionChanged","onResize","onTiltChanged","onZoomChanged","extraMapTypes","extra","_instance$mapTypes","mapTypes","_clickableIcons","setClickableIcons","_heading","setHeading","_mapTypeId","setMapTypeId","_streetView","setStreetView","_tilt","setTilt","_zoom","setZoom","GroundOverlay","_warning2","bounds","groundOverlay","defaultUrl","defaultBounds","GROUND_LAYER","getOpacity","getUrl","defaultOpacity","opacity","_opacity","setOpacity","InfoWindow","_InfoWindow$contextTy","_canUseDom2","_reactDom2","infoWindow","INFO_WINDOW","containerElement","setContent","ANCHOR","content","unstable_renderSubtreeIntoContainer","Children","only","getContent","unmountComponentAtNode","createPortal","getZIndex","defaultPosition","defaultZIndex","onCloseClick","onDomReady","onContentChanged","onPositionChanged","onZindexChanged","anchor","getMap","_position","setPosition","_zIndex","setZIndex","KmlLayer","kmlLayer","KML_LAYER","getDefaultViewport","getMetadata","getStatus","onDefaultViewportChanged","onStatusChanged","_url","setUrl","Marker","_Marker$contextTypes","marker","markerClusterer","MARKER_CLUSTERER","addMarker","noRedraw","MARKER","removeMarker","getAnimation","getClickable","getCursor","getIcon","getLabel","getPlace","getShape","getTitle","defaultAnimation","defaultClickable","defaultCursor","defaultIcon","defaultLabel","defaultPlace","defaultShape","defaultTitle","animation","clickable","cursor","icon","label","place","title","onAnimationChanged","onClickableChanged","onCursorChanged","onDraggableChanged","onFlatChanged","onIconChanged","onShapeChanged","onTitleChanged","onVisibleChanged","childContextTypes","_animation","setAnimation","_clickable","setClickable","_cursor","setCursor","_icon","setIcon","_label","setLabel","_place","setPlace","_shape","setShape","_title","setTitle","OverlayView","_OverlayView$contextT","_extends3","_delay3","_assign3","_bind3","_OverlayViewHelper","overlayView","onAdd","draw","onRemove","onPositionElement","OVERLAY_VIEW","mapPaneName","getPanes","mapCanvasProjection","getOffsetOverride","layoutStyles","getLayoutStyles","parentNode","removeChild","FLOAT_PANE","MAP_PANE","MARKER_LAYER","OVERLAY_LAYER","OVERLAY_MOUSE_TARGET","getPixelPositionOffset","Polygon","polygon","POLYGON","getPath","getPaths","defaultPath","defaultPaths","paths","_path","setPath","_paths","setPaths","Polyline","polyline","POLYLINE","Rectangle","rectangle","RECTANGLE","_bounds","setBounds","StreetViewPanorama","streetViewPanorama","getLinks","getMotionTracking","getPano","getPhotographerPov","getPov","defaultLinks","defaultMotionTracking","defaultPano","defaultPov","links","motionTracking","pano","pov","onPanoChanged","onPovChanged","_links","setLinks","_motionTracking","setMotionTracking","_pano","setPano","_pov","setPov","TrafficLayer","trafficLayer","TRAFFIC_LAYER","MARKER_WITH_LABEL","HEATMAP_LAYER","DRAWING_MANAGER","SEARCH_BOX","INFO_BOX","STREET_VIEW_PANORAMA","_withScriptjs","_withGoogleMap","_GoogleMap","_Circle","_Marker","_Polyline","_Polygon","_Rectangle","_InfoWindow","_OverlayView","_GroundOverlay","_DirectionsRenderer","_FusionTablesLayer","_KmlLayer","_TrafficLayer","_StreetViewPanorama","_BicyclingLayer","_isFunction3","_reduce4","_forEach3","_lowerFirst3","_has3","rdcUncontrolledAndControlledProps","acc","unprefixedKey","nextProps","applyUpdaterToNextProps","nextValue","registerEvents","registeredList","googleEventName","onEventName","unregisterAllEvents","unregisterEvent","registered","_isFunction2","createLatLng","inst","Type","lat","lng","createLatLngBounds","LatLng","ne","sw","ensureOfType","offsetWidth","offsetHeight","fromLatLngToDivPixel","getNorthEast","getSouthWest","height","getLayoutStylesByBounds","LatLngBounds","getLayoutStylesByPosition","_objectWithoutProperties3","withGoogleMap","_recompose","BaseComponent","createFactory","Container","_temp","_ret","handleComponentMount","mapElement","_props2","restProps","cloneElement","getDisplayName","withScriptjs","LOADING_STATE_NONE","LOADING_STATE_BEGIN","LOADING_STATE_LOADED","loadingState","isUnmounted","handleLoaded","loadingElement","googleMapURL","scriptjs","I","_insertTag","tags","prepend","container","firstChild","before","nextSibling","insertBefore","isSpeedy","speedy","ctr","nonce","hydrate","insert","setAttribute","createTextNode","sheet","styleSheets","ownerNode","insertRule","cssRules","flush","fromCharCode","N","V","M","X","Z","L","return","Y","H","J","Q","$","te","oe","u","g","h","m","ie","ae","re","se","ce","ue","le","pe","de","fe","ge","he","me","be","ve","Ae","Ge","we","getAttribute","stylisPlugins","styles","inserted","compat","Ne","require","Se","for","Ve","Te","Me","Be","Xe","Ze","Pe","Le","Ee","We","ke","Re","Fe","je","De","Ye","ze","He","Je","$$typeof","Ue","Qe","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","$e","Ke","qe","et","tt","nt","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","order","orphans","tabSize","widows","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","at","st","ct","ut","toLowerCase","It","mt","__emotion_styles","anim","yt","Ct","At","xt","Gt","wt","Ot","Nt","Tt","css","dangerouslySetInnerHTML","__html","Mt","Vt","querySelector","nextElementSibling","Zt","Pt","Et","cx","Lt","jt","Dt","Yt","zt","Ut","qt","an","sn","cn","un","visibility","overflow","whiteSpace","fontFamily","fontStyle","letterSpacing","textTransform","substr","inputRef","input","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","inputWidth","minWidth","inputId","prevId","mounted","copyInputStyles","updateInputWidth","onAutosize","getComputedStyle","scrollWidth","placeholderIsMinWidth","extraWidth","focus","blur","select","injectStyles","boxSizing","inputStyle","inputClassName","renderStyles","pn","dn","gn","bn","hn","mn","vn","Reflect","sham","Proxy","In","Cn","An","xn","Gn","wn","clearValue","getStyles","isMulti","isRtl","selectOption","selectProps","setValue","On","Nn","pageYOffset","scrollTop","Sn","scrollTo","Tn","Vn","requestAnimationFrame","Mn","createEvent","Bn","Xn","Zn","Pn","En","Wn","getPortalPlacement","kn","maxHeight","maxMenuHeight","placement","getPlacement","minMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","menuEl","minHeight","shouldScroll","isFixedPosition","spacing","parentElement","overflowY","overflowX","offsetParent","getBoundingClientRect","bottom","innerHeight","marginBottom","marginTop","controlHeight","Ln","getUpdatedProps","placerProps","contextType","Rn","baseUnit","colors","neutral40","Fn","jn","Dn","innerProps","Yn","zn","Jn","Un","Hn","appendTo","controlElement","rect","Qn","viewBox","focusable","$n","Kn","qn","isFocused","neutral60","neutral20","transition","neutral80","eo","to","no","oo","borderRadius","marginLeft","ro","indicator","io","border","ao","so","co","uo","components","isDisabled","removeProps","Label","Remove","cropWithEllipsis","lo","ClearIndicator","Control","menuIsOpen","control","DropdownIndicator","DownChevron","CrossIcon","Group","Heading","headingProps","group","GroupHeading","IndicatorsContainer","indicators","IndicatorSeparator","Input","isHidden","disabled","LoadingIndicator","Menu","menu","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","MultiValue","MultiValueContainer","MultiValueLabel","MultiValueRemove","Option","isSelected","option","Placeholder","SelectContainer","SingleValue","ValueContainer","po","fo","go","Number","bo","ho","mo","vo","guidance","isSearchable","tabSelectsValue","focused","selectValue","onFilter","inputValue","resultsMessage","Io","ariaSelection","focusedOption","focusedValue","focusableOptions","ariaLiveMessages","getOptionLabel","isOptionDisabled","screenReaderStatus","removedValue","yo","letters","Co","RegExp","Ao","xo","Go","wo","Oo","No","So","Vo","To","in","onExited","appear","enter","exit","emotion","transform","Mo","Bo","Xo","Zo","stopPropagation","Po","scrollHeight","Lo","maxTouchPoints","Eo","Wo","ko","Ro","activeElement","Fo","jo","lockEnabled","captureEnabled","isEnabled","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","clientHeight","changedTouches","clientY","accountForScrollbars","clientWidth","innerWidth","Yo","clearIndicator","direction","pointerEvents","alignItems","neutral5","neutral0","borderColor","neutral10","borderStyle","borderWidth","boxShadow","flexWrap","justifyContent","neutral30","dropdownIndicator","paddingBottom","paddingTop","groupHeading","indicatorsContainer","alignSelf","indicatorSeparator","margin","loadingIndicator","marginRight","loadingMessage","menuGutter","menuList","WebkitOverflowScrolling","menuPortal","multiValue","multiValueLabel","textOverflow","multiValueRemove","dangerLight","danger","noOptionsMessage","primary25","userSelect","WebkitTapHighlightColor","primary50","neutral50","singleValue","maxWidth","valueContainer","zo","primary75","neutral70","neutral90","Ho","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","controlShouldRenderValue","escapeClearsValue","filterOption","ignoreCase","ignoreAccents","matchFrom","Do","formatGroupLabel","getOptionValue","isLoading","menuShouldBlockScroll","openMenuOnFocus","openMenuOnClick","pageSize","tabIndex","Jo","qo","er","$o","Ko","Uo","_o","Qo","nr","tr","isOptionSelected","some","hideSelectedOptions","or","rr","inputIsHidden","clearFocusValueOnUpdate","inputIsHiddenAfterUpdate","blockOptionHover","isComposing","commonProps","initialTouchX","initialTouchY","instancePrefix","openAfterFocus","scrollToFocusedOptionOnUpdate","userIsDragging","controlRef","getControlRef","focusedOptionRef","getFocusedOptionRef","menuListRef","getMenuListRef","getInputRef","focusInput","blurInput","ariaOnChange","onInputChange","onMenuClose","removeValue","removedValues","popValue","classNamePrefix","getElementId","getComponents","buildCategorizedOptions","getCategorizedOptions","buildFocusableOptions","getFocusableOptions","onMenuMouseDown","button","onMenuMouseMove","onControlMouseDown","openMenu","onDropdownIndicatorMouseDown","onClearIndicatorMouseDown","onScroll","onCompositionStart","onCompositionEnd","clientX","onTouchMove","contains","onControlTouchEnd","onClearIndicatorTouchEnd","onDropdownIndicatorTouchEnd","handleInputChange","currentTarget","onMenuOpen","onInputFocus","onInputBlur","onOptionHover","shouldHideSelectedOptions","onKeyDown","isClearable","defaultPrevented","focusValue","shiftKey","keyCode","focusOption","instanceId","startListeningComposition","startListeningToTouch","autoFocus","offsetTop","stopListeningComposition","stopListeningToTouch","getTheme","formatOptionLabel","form","autoCapitalize","autoComplete","autoCorrect","spellCheck","readOnly","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","hasOptions","delimiter","getCommonProps","renderLiveRegion","renderPlaceholderOrValue","renderInput","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","ar","sr","cr","ur","lr","dr","fr","gr","cacheOptions","br","defaultInputValue","defaultMenuIsOpen","callProp","getProp","lastRequest","loadedInputValue","loadedOptions","passEmptyOptions","optionsCache","loadOptions","prevDefaultOptions","prevCacheOptions","mr","flags","vr","apiKey","channel","client","libraries","language","region","mapIds","retries","CALLBACK","callbacks","loading","errors","failed","createUrl","load","loadPromise","loadCallback","execute","setScript","getElementById","onerror","loadErrorCallback","defer","async","deleteScript","remove","reset","onerrorEvent","resetIfRetryingFailed","setCallback","__googleMapsCallback","Ir","apiOptions","autocompletionRequest","debounce","minLengthAutocomplete","onLoadFailed","withSessionToken","maxWait","leading","trailing","clearTimeout","getPlacePredictions","sessionToken","hr","places","AutocompleteService","AutocompleteSessionToken","getSessionToken","refreshSessionToken","throw","sent","trys","ops","place_id","Cr","Geocoder","GeocoderStatus","OK","geocode","address","Ar","xr","placeId","ArrayBuffer","isView","delta","preventDefaultTouchmoveEvent","rotationAngle","trackMouse","trackTouch","first","initial","swiping","xy","cos","sin","timeStamp","absX","absY","dir","velocity","vxvy","onSwiping","onSwiped","eventData","onTap","cleanUpTouch","DOWN","LEFT","RIGHT","UP","useSwipeable","globalThis","NaN","cancel","__entries__","MutationObserver","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","addObserver","connect_","removeObserver","disconnect_","updateObservers_","gatherActive","hasActive","broadcastActive","observe","attributes","childList","characterData","subtree","disconnect","propertyName","getInstance","instance_","ownerDocument","defaultView","parseFloat","SVGGraphicsElement","SVGElement","getBBox","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","DOMRectReadOnly","contentRect","activeObservations_","observations_","callback_","controller_","callbackCtx_","unobserve","clearActive","ResizeObserver","memo","fullscreen","handleImageLoaded","isFullscreen","onImageError","original","originalAlt","originalHeight","originalWidth","originalTitle","sizes","srcSet","alt","onLoad","onError","points","maximize","minimize","play","pause","xmlns","fill","stroke","strokeLinecap","strokeLinejoin","isPlaying","ye","Oe","Ie","media","which","currentIndex","startIndex","thumbsTranslate","thumbsSwipedTranslate","currentSlideOffset","galleryWidth","thumbnailsWrapperWidth","thumbnailsWrapperHeight","thumbsStyle","slideDuration","isSwipingThumbnail","loadedImages","imageGallery","createRef","thumbnailsWrapper","thumbnails","imageGallerySlideWrapper","handleKeyDown","handleMouseDown","handleResize","handleTouchMove","handleOnSwiped","handleScreenChange","handleSwiping","handleThumbnailSwiping","handleOnThumbnailSwiped","onThumbnailMouseLeave","handleImageError","pauseOrPlay","renderThumbInner","renderItem","slideLeft","slideRight","toggleFullScreen","togglePlay","unthrottledSlideToIndex","slideToIndex","lazyLoad","lazyLoaded","autoPlay","useWindowKeyDown","initSlideWrapperResizeObserver","initThumbnailWrapperResizeObserver","addScreenChangeEvent","items","slideInterval","thumbnailPosition","showThumbnails","removeResizeObserver","removeThumbnailsResizeObserver","slideThumbnailBar","slideStyle","removeScreenChangeEvent","playPauseIntervalId","clearInterval","transitionTimer","isTransitioning","onSlide","onThumbnailClick","thumbnailMouseOverTimer","onScreenChange","modalFullscreen","disableThumbnailScroll","isThumbnailVertical","infinite","previousIndex","gallerySlideWrapperHeight","useTranslate3D","isRTL","getTranslateXForTwoSlide","isSlideVisible","WebkitTransform","MozTransform","msTransform","OTransform","slideOnThumbnailOver","onMouseLeave","showBullets","getAlignmentClassName","originalClass","thumbnailClass","getSlideStyle","onKeyUp","handleSlideKeyUp","thumbnail","active","handleThumbnailMouseOver","handleThumbnailKeyUp","bulletClass","bulletOnClick","itemIndex","slides","bullets","slideIsTransitioning","ignoreIsTransitioning","isFirstOrLastSlide","getThumbsTranslate","canSlideNext","canSlidePrevious","disableSwipe","swipingUpDown","swipingLeftRight","swipingTransitionDuration","swipingThumbnailTransitionDuration","resetSwipingDirection","swipeThreshold","flickThreshold","handleOnSwipedTo","sufficientSwipe","canSlideLeft","canSlideRight","classList","disableKeyDown","useBrowserFullscreen","exitFullScreen","onErrorImageURL","resizeThumbnailWrapperObserver","resizeSlideWrapperObserver","setThumbsTranslate","fullScreen","fullscreenElement","msFullscreenElement","mozFullScreenElement","webkitFullscreenElement","onBeforeSlide","onSliding","slideTo","onThumbnailMouseOver","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","setModalFullscreen","exitFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","onPlay","setInterval","onPause","onImageLoad","onThumbnailError","thumbnailHeight","thumbnailWidth","thumbnailAlt","thumbnailTitle","thumbnailLoading","thumbnailLabel","additionalClass","disableThumbnailSwipe","indexSeparator","renderFullscreenButton","renderCustomControls","renderLeftNav","renderRightNav","showFullscreenButton","showIndex","showNav","showPlayButton","renderPlayPauseButton","getThumbnailStyle","getSlideItems","getThumbnailPositionClassName","canSlide","getThumbnailBarHeight","imageSet","DEFAULT_DATA_URL_KEY","INIT_MAX_NUMBER","DEFAULT_NULL_INDEX","__assign","__createBinding","k2","__setModuleDefault","__importStar","__awaiter","_arguments","generator","fulfilled","rejected","__generator","verb","op","__spreadArrays","il","jl","utils_1","validation_1","constants_1","_c","dataURLKey","multiple","maxNumber","acceptType","maxFileSize","resolutionWidth","resolutionHeight","resolutionType","_f","inputProps","_g","allowNonImageType","inValue","_h","keyUpdate","setKeyUpdate","_j","setErrors","isDragging","setIsDragging","handleClickInput","useCallback","openFileDialog","onImageUpload","onImageRemoveAll","validate","fileList","errorsValidation","getErrorValidation","handleChange","updatedFileList","updatedIndexes","firstFile","getListFiles","acceptTypeString","getAcceptTypeString","accept","imageList","onImageUpdate","onImageRemove","updatedList","dragProps","onDragEnter","clearData","getImage","getBase64","click","file","reader","FileReader","readAsDataURL","image","Image","URL","createObjectURL","promiseFiles","all","fileListBase64","base64","isMaxNumberValid","isAcceptTypeValid","isMaxFileSizeValid","isImageValid","isResolutionValid","ratio","fileType","fileSize","fileName","type_1","findIndex","totalNumber","newErrors","resolution","metric","axis","positionPercent","fadeAnimationHandler","slideStopSwipingHandler","slideSwipeAnimationHandler","slideAnimationHandler","_CSSTranslate","_utils","_objectSpread","returnStyles","selectedItem","previousItem","lastPosition","infiniteLoop","centerMode","centerSlidePercentage","itemListStyle","currentPosition","transformProp","transitionTime","WebkitTransitionDuration","MozTransitionDuration","OTransitionDuration","transitionDuration","msTransitionDuration","isHorizontal","childrenLength","finalBoundry","axisDelta","handledDelta","itemSize","hasMoved","swipeScrollTolerance","preventMovementUntilSwipeScrollTolerance","swipeMovementStarted","cancelClick","transitionTimingFunction","msTransitionTimingFunction","MozTransitionTimingFunction","WebkitTransitionTimingFunction","OTransitionTimingFunction","selectedStyle","prevStyle","_getRequireWildcardCache","newObj","hasPropertyDescriptor","_interopRequireWildcard","_reactEasySwipe","_cssClasses","_Thumbs","_document","_window","_animations","_defineProperties","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_assertThisInitialized","Carousel","_React$Component","thumbsRef","carouselWrapperRef","listRef","itemsRef","clearAutoPlay","timer","increment","interval","isMouseEntered","isFocusWithinTheCarousel","prevKey","decrement","initialized","firstItem","updateSizes","hasMount","onClickItem","onClickThumb","moveTo","animationHandlerResponse","swipeAnimationHandler","selectItem","resetAutoPlay","emulateTouch","newIndex","isKeyboardEvent","animationHandler","handleOnChange","getElementsByTagName","slideImages","complete","forceUpdate","initState","setupCarousel","prevState","forceFocus","stopSwipingHandler","setupAutoPlay","destroyAutoPlay","destroyCarousel","_this2","bindEvents","initialImage","getInitialImage","setMountState","unbindEvents","carouselWrapper","stopOnHover","startOnLeave","useKeyboardArrows","navigateWithKeyboard","_this$carouselWrapper","isClone","_this3","isPrevious","slideProps","setItemsRef","ITEM","handleClickItem","_this4","_this$props","showIndicators","labels","renderIndicator","changeItem","showStatus","statusFormatter","showThumbs","setThumbsRef","onSelectItem","handleClickThumb","thumbWidth","renderThumbs","_this5","isSwipeable","swipeable","canShowArrows","showArrows","hasPrev","hasNext","itemsClone","renderItems","firstClone","lastClone","swiperProps","SLIDER","containerStyles","onSwipeForward","onSwipeBackwards","dynamicHeight","itemHeight","getVariableItemHeight","verticalSwipe","ariaLabel","ROOT","setCarouselWrapperRef","CAROUSEL","renderControls","renderArrowPrev","onClickPrev","leftArrow","WRAPPER","setListRef","renderArrowNext","onClickNext","rightArrow","renderStatus","onClickHandler","ARROW_PREV","ARROW_NEXT","DOT","images","img","defaultStatusFormatter","total","_dimensions","Thumbs","itemsWrapperRef","itemsListRef","wrapperSize","outerWidth","visibleItems","_state","getFirstItem","handler","setupThumbs","destroyThumbs","itemClass","thumbProps","itemListStyles","MsTransform","MsTransitionDuration","setItemsWrapperRef","setItemsListRef","_classnames","_default","customClassName","isSlider","carousel","isSwiping","thumbs","slider","animated","previous","thumb","slide","dot","_Carousel","_types","BrowserRouter","history","resolveToLocation","currentLocation","normalizeToLocation","forwardRefShim","forwardRef","LinkAnchor","forwardedRef","navigate","_onClick","rest","ex","metaKey","altKey","ctrlKey","isModifiedEvent","Link","_ref2$component","Consumer","href","createHref","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","NavLink","_ref$ariaCurrent","ariaCurrent","_ref$activeClassName","activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","sensitive","strict","styleProp","toLocation","pathname","escapedPath","classnames","joinClassnames","hashFragment","observer","asyncTimerId","scrollFunction","isInteractiveElement","hasAttribute","getElAndScroll","originalTabIndex","preventScroll","removeAttribute","genericHashLink","As","linkHash","hash","passDownProps","isExact","filteredProps","__rest","timeout","elementId","scroll","smooth","scrollIntoView","behavior","HashLink","FacebookShareButton","quote","hashtag","windowWidth","windowHeight","LinkedinShareButton","summary","mini","TwitterShareButton","via","hashtags","related","ShareButton","openShareDialog","link","onShareWindowClose","windowPosition","onClose","configRest","toolbar","status","directories","menubar","scrollbars","resizable","centerscreen","chrome","shareDialog","interval_1","closed","windowOpen","screenLeft","outerHeight","screenTop","screen","getBoxPositionOnScreenCenter","handleClick","beforeOnClick","networkLink","openShareDialogOnClick","opts","returnVal","disabledStyle","networkName","resetButtonStyle","newClassName","newStyle","font","optsMap","CreatedButton","passedProps","AssertionError","objectToGetParams","encodeURIComponent","combineComparators","comparatorA","comparatorB","createIsCircular","areItemsEqual","cachedA","cachedB","getStrictProperties","hasOwn","property","sameValueZeroEqual","OWNER","areArraysEqual","areDatesEqual","getTime","areMapsEqual","aResult","bResult","matchedIndices","aIterable","bIterable","hasMatch","matchIndex","aKey","aValue","bKey","bValue","areObjectsEqual","properties","areObjectsEqualStrict","descriptorA","descriptorB","arePrimitiveWrappersEqual","areRegExpsEqual","areSetsEqual","areTypedArraysEqual","ARGUMENTS_TAG","BOOLEAN_TAG","DATE_TAG","MAP_TAG","NUMBER_TAG","OBJECT_TAG","REG_EXP_TAG","SET_TAG","STRING_TAG","isTypedArray","getTag","deepEqual","createCustomEqual","circular","createInternalComparator","createCustomInternalComparator","createState","createCustomConfig","areArraysEqual$1","areMapsEqual$1","areObjectsEqual$1","areSetsEqual$1","createEqualityComparatorConfig","createEqualityComparator","createIsEqual","_indexOrKeyA","_indexOrKeyB","_parentA","_parentB","setRafTimeout","currTime","shouldUpdate","_toArray","_iterableToArray","createAnimateManager","shouldStop","setStyle","_style","_styles","curr","restStyles","stop","_handleChange","hint","prim","res","_toPrimitive","_toPropertyKey","PREFIX_LIST","IN_LINE_PREFIX_LIST","IN_COMPATIBLE_PROPERTY","param","mapObject","translateStyle","isTransition","camelName","styleVal","generatePrefixStyle","getTransitionVal","duration","easing","getDashCase","_x","_r","_toConsumableArray","_arrayWithoutHoles","_nonIterableSpread","ACCURACY","cubicBezierFactor","c1","c2","multyTime","pre","cubicBezier","configBezier","x1","y1","y2","_easing$1$split$0$spl2","num","curveX","curveY","derCurveX","newParams","bezier","evalT","derVal","isStepper","configEasing","_len2","_key2","_config$stiff","stiff","_config$damping","damping","_config$dt","dt","stepper","currX","destX","currV","newV","newX","configSpring","alpha","begin","needContinue","calStepperVals","preVals","steps","nextStepVals","_easing2","preObj","nextObj","preTime","beginTime","interKeys","timingStyle","stepperStyle","cafId","currStyle","finalStyle","cancelAnimationFrame","_excluded","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","Animate","_PureComponent","attributeName","handleStyleChange","changeStyle","_this$props2","canBegin","runAnimation","_this$props3","shouldReAnimate","currentFrom","isTriggered","manager","stopJSAnimation","_newState","newState","unSubscribe","onAnimationEnd","onAnimationStart","startAnimation","configUpdate","_steps$","initialStyle","_steps$$duration","initialTime","sequence","nextItem","_nextItem$easing","nextProperties","preItem","runJSAnimation","propsTo","runStepAnimation","_this$props4","others","onAnimationReStart","stateStyle","cloneContainer","_container$props","_container$props$styl","isFinite","parseDurationOfSingleTransition","AnimateGroupChild","isAppearing","appearOptions","enterOptions","handleStyleActive","leaveOptions","Transition","onEnter","handleEnter","onExit","handleExit","parseTimeout","AnimateGroup","leave","TransitionGroup","_hasClass","baseVal","replaceClassName","origClass","classToRemove","_addClass","_removeClass","_Transition","addClass","removeClass","CSSTransition","appearing","getClassNames","removeClasses","onEntering","reflowAndAddClass","onEntered","appearClassName","doneClassName","enterClassName","onExiting","classNames","isStringClassNames","_proto","_this$getClassNames6","_reactDom","_TransitionGroup","ReplaceTransition","_args","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","_len5","_key5","handleExiting","_len6","_key6","handleExited","_len7","_key7","idx","originalArgs","_child$props","findDOMNode","inProp","_React$Children$toArr","second","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","_reactLifecyclesCompat","initialStatus","parentGroup","transitionGroup","isMounting","appearStatus","unmountOnExit","mountOnEnter","nextCallback","getChildContext","getDerivedStateFromProps","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","timeouts","enterTimeout","safeSetState","onTransitionEnd","nextState","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","childProps","polyfill","_ChildMapping","firstRender","appeared","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","childFactory","_CSSTransition","_ReplaceTransition","mergeChildMappings","nextChildMapping","isValidElement","prevChild","isLeaving","mapFn","mapper","getValueForKey","nextKeysPending","pendingKeys","childMapping","nextKey","pendingNextKey","classNamesShape","timeoutsShape","getStickyValue","sticky","columnIsLastLeftSticky","columnId","nextColumn","columnIsLeftSticky","nextColumnIsLeftSticky","columnIsFirstRightSticky","prevColumn","columnIsRightSticky","prevColumnIsRightSticky","getMarginRight","rightMargin","isVisible","checkErrors","hasGroups","stickyColumnsWithoutGroup","Header","bugWithUnderColumnsSticky","parentCol","childBugs","cellStylesSticky","getStickyProps","header","dataAttrs","headers","flatHeaderItem","depth","findHeadersSameLevel","flatHeaders","totalLeft","useSticky","hooks","getHeaderProps","getCellProps","cell","pluginName","Truncate","ellipsis","onTruncate","calcTargetWidth","measureWidth","getLines","renderLine","canvas","canvasContext","getContext","contentKey","innerHTML","didTruncate","targetWidth","measureText","numLines","trimWhitespace","innerText","trimRight","textLines","ellipsisWidth","textWords","resultLine","textRest","lower","upper","middle","lastLineText","_lower","_upper","_middle","spanProps","targetEl","textEl","ellipsisEl","Area","isAnimationFinished","animationId","prevAnimationId","curPoints","curBaseLine","baseLine","prevPoints","prevBaseLine","needClip","clipDot","clipPathId","isAnimationActive","dataKey","areaProps","customDotProps","dots","dotProps","cy","payload","renderDotItem","dotsProps","clipPath","startX","endX","maxY","startY","endY","maxX","layout","renderVerticalRect","renderHorizontalRect","connectNulls","isRange","_this$props5","animationBegin","animationDuration","animationEasing","_this$state","handleAnimationEnd","handleAnimationStart","stepBaseLine","prevPointsDiffFactor","stepPoints","prevPointIndex","interpolatorX","interpolatorY","interpolator","_interpolator","renderAreaStatically","renderClipRect","_this$props6","_this$state2","totalLength","renderAreaWithAnimation","_filterProps","_this$props7","xAxis","yAxis","hasSinglePoint","layerClass","needClipX","allowDataOverflow","needClipY","_ref2$r","_ref2$strokeWidth","_ref3$clipDot","dotSize","renderArea","renderDots","renderCallByParent","xAxisId","yAxisId","legendType","activeDot","isSsr","chartBaseValue","baseValue","itemBaseValue","numericAxis","domain","scale","_ref4","xAxisTicks","yAxisTicks","bandSize","stackedData","dataStartIndex","displayedData","hasStack","getBaseValue","originalValue","isBreakPoint","ticks","ErrorBar","dataPointFormatter","svgProps","errorBars","_dataPointFormatter","errorVal","lowBound","highBound","lineCoordinates","_errorVal","yMid","yMin","yMax","xMin","xMax","_scale","xMid","_xMin","_xMax","_yMin","_yMax","coordinates","XAxis","allowDecimals","orientation","mirror","tickCount","reversed","allowDuplicatedCategory","YAxis","AreaChart","chartName","GraphicalChild","axisComponents","axisType","AxisComp","formatAxisMap","getEveryNthWithCondition","isValid","getAngledTickWidth","contentSize","unitSize","angle","getTicksStart","preserveEnd","tickFormatter","minTickGap","unit","sizeKey","coordinate","tail","tailContent","tailSize","tailGap","tickCoord","isShow","gap","getTicks","tick","Global","getNumberIntervalTicks","candidates","tickItem","getEveryNThTick","getTicksEnd","Cross","_excluded2","_excluded3","CartesianAxis","Text","viewBoxOld","restPropsOld","htmlLayer","layerReference","getElementsByClassName","tx","ty","tickSize","tickMargin","finalTickSize","textAnchor","verticalAnchor","axisLine","needHeight","needWidth","tickLine","finalTicks","getTickTextAnchor","getTickVerticalAnchor","axisProps","customTickProps","tickLineProps","_this2$getTickLineCoo","getTickLineCoord","lineCoord","tickProps","visibleTicksCount","Layer","renderTickItem","ticksGenerator","_this$props8","noTicksProps","renderAxisLine","renderTicks","isTouch","Brush","leaveTimer","isTravellerMoving","handleTravellerMove","isSlideMoving","handleSlideDrag","handleDrag","detachDragEndListener","handleDragEnd","leaveTimeOut","isTextActive","slideMoveStartX","attachDragEndListener","travellerDragStartHandlers","handleTravellerDragStart","lineY","renderDefaultTraveller","travellerWidth","updateId","endIndex","prevData","prevUpdateId","prevTravellerWidth","prevX","prevWidth","scaleValues","createScale","minIndex","getIndexInRange","maxIndex","getIndex","movingTravellerId","brushMoveStartX","_this$setState","prevValue","chartElement","compact","travellerX","traveller","travellerProps","onMouseEnter","handleEnterSlideOrTraveller","handleLeaveSlideOrTraveller","renderTraveller","handleSlideDragStart","_this$props9","_this$state3","attrs","getTextOfTick","_this$props10","alwaysShowText","_this$state4","isPanoramic","handleLeaveWrapper","renderBackground","renderPanorama","renderSlide","renderTravellerLayer","renderText","ifOverflowMatches","alwaysShow","ifOverflow","ReferenceDot","isX","isY","scales","bandAware","isInRange","getCoordinate","renderDot","isFront","Dot","ReferenceLine","fixedX","fixedY","segment","endPoints","isFixedX","isFixedY","isSegment","_props$viewBox","yCoord","coord","xCoord","_orientation","_coord","_points","_points2","getEndPoints","_endPoints","_endPoints$","_endPoints$2","lineProps","ReferenceArea","hasX1","hasX2","hasY1","hasY2","xValue1","xValue2","yValue1","yValue2","p1","rangeMin","p2","rangeMax","getRect","renderRect","detectReferenceElementsDomain","axisId","specifiedTicks","areas","idKey","valueKey","finalDomain","key1","key2","value1","value2","eventCenter","setMaxListeners","SYNC_EVENT","AccessibilityManager","_ref$coordinateList","coordinateList","_ref$container","_ref$layout","_ref$offset","_ref$mouseHandlerCall","mouseHandlerCallback","activeIndex","spoofMouse","_this$container$getBo","ORIENT_MAP","originCoordinate","isFinit","setImmediate","deferClear","clearImmediate","getDisplayedData","graphicalItems","dataEndIndex","itemsData","itemData","getDefaultDomainByAxisType","getTooltipContent","chartData","activeLabel","tooltipAxis","getTooltipData","rangeObj","rangeData","chartX","chartY","calculateTooltipPos","orderedTooltipTicks","tooltipTicks","activePayload","activeCoordinate","_angle","getActiveCoordinate","activeTooltipIndex","getAxisMapByAxes","axes","axisIdKey","stackGroups","stackOffset","isCategorical","_child$props$domain2","includeHidden","duplicateDomain","categoricalDomain","domainStart","domainEnd","isDomainSpecifiedByUser","defaultDomain","_child$props$domain","childDomain","duplicate","errorBarsDomain","axisDomain","originalDomain","getAxisMap","_ref4$axisType","axisMap","_ref3","Axis","getAxisMapByItems","createDefaultState","_brushItem$props","_brushItem$props2","defaultShowTooltip","brushItem","isTooltipActive","getAxisNameByLayout","numericAxisName","cateAxisName","generateCategoricalChart","_ref6","_class","_ref6$defaultTooltipE","defaultTooltipEventType","_ref6$validateTooltip","validateTooltipEventTypes","legendContent","getFormatItems","currentState","barSize","barGap","barCategoryGap","globalMaxBarSize","maxBarSize","_getAxisNameByLayout","hasBar","hasGraphicalBarItem","sizeList","formattedItems","_item$props","childMaxBarSize","numericAxisId","cateAxisId","axisObj","_objectSpread6","cateAxis","cateTicks","itemIsBar","barPosition","_ref7","_getBandSizeOfAxis","barBandSize","_objectSpread7","composedFn","getComposedData","childIndex","updateStateOfAxisMapsOffsetAndStackGroups","_ref8","reverseStackOrder","_getAxisNameByLayout2","_ref5","prevLegendBBox","_ref5$xAxisMap","xAxisMap","_ref5$yAxisMap","yAxisMap","legendItem","Legend","offsetH","offsetV","brushBottom","calculateOffset","legendBBox","cateAxisMap","ticksObj","tooltipAxisBandSize","formattedGraphicalItems","CategoricalChartWrapper","deferId","box","cId","chartId","syncId","uniqueChartId","clearDeferId","applySyncEvent","_ref9","triggerSyncEvent","mouse","getMouseInfo","_nextState","activeItem","tooltipPayload","tooltipPosition","persist","triggeredAfterMouseMove","cancelThrottledTriggerAfterMouseMove","eventName","_nextState2","handleMouseMove","handleMouseUp","_ref10","_ref11","tooltipEventType","getTooltipEventType","cursorComp","Curve","getCursorRectangle","_this$getCursorPoints","getCursorPoints","startAngle","endAngle","innerRadius","outerRadius","Sector","cursorProps","payloadIndex","axisOption","renderAxis","chartWidth","chartHeight","verticalCoordinatesGenerator","horizontalCoordinatesGenerator","_element$props","radialLines","polarAngles","polarRadius","radiusAxisMap","angleAxisMap","radiusAxis","angleAxis","legendWidth","otherProps","legend","legendInstance","onBBoxUpdate","handleLegendBBoxUpdate","tooltipItem","Tooltip","_this$state5","_this$state6","handleBrushChange","_this$state7","_element$props2","_ref12","activePoint","basePoint","_item$item$props","renderActiveDot","filterFormatItem","_this$state8","_item$props2","_item$item$props2","itemEvents","trigger","handleItemMouseEnter","onCLick","handleItemMouseLeave","graphicalItem","specifiedKey","renderActivePoints","throttleDelay","_this$props$margin$le","_this$props$margin$to","accessibilityManager","setDetails","accessibilityLayer","_this$props$margin$le2","_this$props$margin$to2","eventType","containerOffset","inRange","_this$state9","xScale","yScale","xValue","invert","yValue","toolTipData","_this$state10","halfSize","_this$state11","_cx","_cy","innerPoint","outerPoint","_this$state12","tooltipEvents","handleMouseEnter","handleMouseLeave","handleTouchStart","handleTouchEnd","handleOuterEvent","handleReceiveSyncEvent","_maxListeners","syncMethod","_this$state13","validateChartX","validateChartY","axisOptions","axesTicksGenerator","_this$state$offset","_ref13","_ref14","_ref15","_ref16","_this$state$xAxisMap","_this$state$xAxisMap$","_this$state$yAxisMap","_this$state$yAxisMap$","chartXY","itemDisplayName","activeBarItem","_activeBarItem","CartesianGrid","renderGrid","renderReferenceElement","renderXAxis","renderYAxis","renderBrush","Bar","renderGraphicChild","Line","Radar","RadialBar","Scatter","Pie","Funnel","renderCursor","PolarGrid","renderPolarGrid","PolarAngleAxis","renderPolarAxis","PolarRadiusAxis","Customized","renderCustomized","Surface","renderClipPath","keyboardEvent","parseEventsOfWrapper","renderLegend","renderTooltip","defaultState","prevHeight","prevLayout","prevStackOffset","prevMargin","prevChildren","_defaultState","keepFromPrevState","updatesToState","newUpdateId","Cell","formatter","renderRadialLabel","labelProps","labelAngle","clockWise","deltaAngle","getDeltaAngle","startPoint","endPoint","dominantBaseline","xlinkHref","getAttrsOfPolarLabel","midAngle","_polarToCartesian","_polarToCartesian2","getAttrsOfCartesianLabel","parentViewBox","verticalSign","verticalOffset","verticalEnd","verticalStart","horizontalSign","horizontalOffset","horizontalEnd","horizontalStart","_attrs2","_attrs3","sizeAttrs","isPolar","_props$className","textBreakAll","isPolarLabel","positionAttrs","breakAll","parseViewBox","labelViewBox","parentProps","checkPropsLabel","explicitChildren","implicitLabel","parseLabel","valueAccessor","LabelList","idProps","parseLabelList","atan2","pi","tau","arc","lineTo","closePath","tan30","tan30_2","kr","kx","ky","sqrt3","x0","y0","symbolFactories","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","RADIAN","Symbols","sizeType","symbolFactory","getSymbolFactory","buffer","constant","tan","calculateAreaSize","registerSymbol","SIZE","DefaultLegendContent","inactiveColor","sixthSize","thirdSize","inactive","legendIcon","iconProps","iconSize","itemStyle","svgStyle","_classNames","finalFormatter","renderIcon","defaultUniqBy","getUniqPayload","boxWidth","boxHeight","updateBBox","wrapperNode","hPos","vPos","getBBoxSnapshot","_box3","wrapperStyle","payloadUniqBy","outerStyle","getDefaultPosition","renderContent","patchResizeHandler","resizeCallback","refreshMode","refreshRate","refreshOptions","isFunction","isSSR","isDOMElement","HTMLDocument","createNotifier","setSize","handleWidth","handleHeight","ResizeDetector","cancelHandler","resizeHandler","attachObserver","targetRef","observerOptions","getElement","observableElement","resizeObserver","targetDomEl","currentElement","getRenderType","createResizeHandler","notifyResize","setStateFunc","skipOnMount","nodeType","WrapperTag","nativeProps","ResponsiveContainer","aspect","_ref$initialDimension","initialDimension","_ref$width","_ref$height","_ref$minWidth","_ref$debounce","_useState2","containerWidth","containerHeight","setSizes","containerRef","useImperativeHandle","getContainerSize","updateDimensionsImmediate","newSize","currentSizes","oldWidth","oldHeight","chartContent","calculatedWidth","calculatedHeight","BREAKING_SPACES","calculateWordWidths","words","wordsWithComputedWidth","word","spaceWidth","getWordsWithoutCalculate","getWordsByLines","scaleToFit","maxLines","wordWidths","initialWordsWithComputedWith","lineWidth","shouldLimitLines","calculate","newLine","originalResult","trimmedResult","checkOverflow","tempText","doesOverflow","findLongestLine","iterations","_checkOverflow2","doesPrevOverflow","doesMiddleOverflow","calculateWordsByLines","textDefaultProps","capHeight","wordsByLines","dx","dy","textProps","startDy","transforms","defaultFormatter","DefaultTooltipContent","_props$separator","separator","_props$contentStyle","contentStyle","_props$itemStyle","_props$labelStyle","labelStyle","itemSorter","wrapperClassName","labelClassName","labelFormatter","finalLabelStyle","hasLabel","finalLabel","wrapperCN","labelCN","finalItemStyle","finalValue","finalName","formatted","_formatted","CLS_PREFIX","tooltipDefaultProps","allowEscapeViewBox","reverseDirection","cursorStyle","filterNull","useTranslate3d","setBoxWidth","_useState4","setBoxHeight","_useState6","dismissed","setDismissed","_useState8","dismissedAtCoordinate","setDismissedAtCoordinate","translateX","translateY","getTranslate","tooltipDimension","viewBoxDimension","negative","positive","finalPayload","hasPayload","cls","svgView","_context","bezierCurveTo","_x0","_x1","_y0","_y1","Basis","BasisClosed","BasisOpen","areaStart","_line","areaEnd","_point","lineEnd","_x2","_x3","_x4","_y2","_y3","_y4","Bump","LinearClosed","Linear","slope3","h0","h1","s0","s1","slope2","t0","t1","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","_t0","_y","py","i0","i1","curve","defined0","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","CURVE_FACTORIES","curveBasisClosed","curveBasisOpen","curveBasis","curveBumpX","curveBumpY","curveLinearClosed","curveLinear","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","getX","getY","lineFunction","curveFactory","getCurveFactory","formatPoints","formatBaseLine","areaPoints","pathRef","realPath","getRectanglePath","maxRadius","ySign","xSign","newRadius","_newRadius","isInRectangle","minX","minY","setTotalLength","getTotalLength","pathTotalLength","isUpdateAnimationActive","currWidth","currHeight","currY","getTangentCircle","isExternal","cornerRadius","cornerIsExternal","centerRadius","theta","asin","centerAngle","lineTangencyAngle","circleTangency","lineTangency","getSectorPath","tempEndAngle","outerStartPoint","outerEndPoint","innerStartPoint","innerEndPoint","forceCornerRadius","deltaRadius","_getTangentCircle","soct","solt","sot","_getTangentCircle2","eoct","eolt","eot","outerArcAngle","_getTangentCircle3","sict","silt","sit","_getTangentCircle4","eict","eilt","eit","innerArcAngle","getSectorWithCorner","curData","baseProps","renderRectangle","stepData","interpolatorWidth","interpolatorHeight","_interpolatorHeight","renderRectanglesStatically","renderRectanglesWithAnimation","backgroundProps","errorBarItems","dataPoint","errorBarProps","renderRectangles","renderErrorBar","minPointSize","stackedDomain","cells","rects","baseValueScale","currentValueScale","computedHeight","_baseValueScale","_currentValueScale","ids","leftMirror","rightMirror","topMirror","bottomMirror","calculatedPadding","needSpace","_axis$padding","offsetKey","diff","smallestDistanceBetweenValues","sortedValues","smallestDistanceInPercent","rangeWidth","halfBand","_parseScale","realScaleType","finalAxis","rectWithPoints","rectWithCoords","ScaleHelper","bandwidth","_offset","_offset2","last","createLabeledScales","getAngledRectangleWidth","normalizedAngle","normalizeAngle","angleRadians","angleThreshold","atan","angledWidth","e10","e5","e2","tickSpec","power","log10","factor","i2","inc","tickIncrement","tickStep","ascending","descending","bisector","compare1","compare2","hi","mid","zero","ascendingBisect","bisectRight","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","format","rgbn","Rgb","rgba","hsla","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","basis","v0","v1","v2","v3","t2","t3","copy","channels","displayable","formatHex8","formatHsl","clamp","linear","gamma","nogamma","exponential","rgbGamma","rgbSpline","spline","genericArray","nb","na","setTime","reA","reB","am","bm","bs","bi","one","date","DataView","bimap","interpolate","d0","d1","r0","r1","polymap","bisect","unknown","transformer","untransform","piecewise","rescale","rangeRound","continuous","prefixExponent","formatSpecifier","specifier","FormatSpecifier","comma","formatDecimalParts","coefficient","toLocaleString","formatRounded","formatPrefix","prefixes","locale","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","init","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","square","radial","squared","unsquare","valueof","compareDefined","swap","quantile","Float64Array","numbers","value0","subarray","quantileSorted","thresholds","invertExtent","quantiles","quantize","threshold","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","timeInterval","floori","offseti","field","millisecond","getMilliseconds","getUTCSeconds","timeMinute","getSeconds","getMinutes","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","getHours","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","getDate","getTimezoneOffset","utcDay","setUTCHours","setUTCDate","getUTCDate","unixDay","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","getMonth","getFullYear","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","utcDate","UTC","newDate","timeFormat","utcFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekNumberMonday","parseFullYear","parseYear","parseZone","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","time","utcTime","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","r2","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","series","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","newParse","utcParse","formatLocale","stackValue","stackSeries","PLACE_HOLDER","isPlaceHolder","curry0","_curried","curryN","restArgs","newArgs","curry","compose","fns","firstFn","tailsFn","memoize","lastArgs","lastResult","rangeStep","getDigitCount","interpolateNumber","newA","uninterpolateNumber","uninterpolateTruncation","getValidInterval","validMin","validMax","getFormatStep","roughStep","correctionFactor","digitCount","digitCountValue","stepRatio","stepRatioScale","formatStep","getTickOfSingleValue","absVal","middleIndex","calculateStep","tickMin","tickMax","belowCount","upCount","scaleCount","getNiceTickValues","_getValidInterval2","cormin","cormax","_values","_calculateStep","getTickValuesFixedDomain","_getValidInterval4","_getValidInterval6","getValueByDataKey","getDomainOfDataByKey","filterNil","flattenData","calculateActiveTickIndex","_ticks$length","unsortedTicks","cur","after","sameDirectionCoord","diffInterval","curInRange","afterInRange","sameInterval","getMainColorOfGraphicItem","getLegendProps","legendData","sectors","iconType","getWithHeight","getBarSizeList","globalSize","_ref5$stackGroups","numericAxisIds","sgs","stackIds","sLen","_sgs$stackIds$j","barItems","selfSize","cateId","stackList","getBarPosition","_ref6$sizeList","realBarGap","useFull","fullBarSize","newRes","originalSize","appendOffsetOfLegend","legendBox","legendProps","newOffset","getDomainOfErrorBars","errorBarChild","isErrorBarRelevantForAxis","entryValue","mainValue","errorDomain","prevErrorArr","errorValue","lowerValue","upperValue","parseErrorBarsOfAxis","domains","getDomainOfItemsWithSameAxis","isCategoricalAxis","getCoordinatesOfGrid","hasMin","hasMax","getTicksOfAxis","isGrid","isAll","offsetForBand","niceTicks","scaleContent","row","combineEventHandlers","defaultHandler","parentHandler","childHandler","customizedHandler","arg1","arg2","arg3","arg4","parseScale","chartType","EPS","checkDomainOfScale","findPositionOfBar","truncateByDomain","STACK_OFFSET_MAP","expand","none","silhouette","wiggle","s2","si","sij0","s3","sk","getStackedData","stackItems","offsetType","dataKeys","oz","sz","getStackGroupsByAxisId","_items","_item$props3","stackId","childGroup","getTicksOfScale","scaleType","tickValues","_domain","getCateCoordinateOfLine","matchedTick","getCateCoordinateOfBar","getBaseValueOfBar","getStackedDataOfItem","getDomainOfStackGroups","MIN_VALUE_REG","MAX_VALUE_REG","parseSpecifiedDomain","specifiedDomain","dataDomain","getBandSizeOfAxis","isBar","bandWidth","orderedTicks","parseDomainOfCategoryAxis","calculatedDomain","axisChild","getTooltipItem","_graphicalItem$props","tooltipType","stringCache","widthCache","cacheCount","SPAN_STYLE","STYLE_LIST","MEASUREMENT_SPAN_ID","getStyleString","autoCompleteStyle","getStringSize","styleString","measurementSpan","measurementSpanStyle","styleKey","textContent","getOffset","html","clientTop","pageXOffset","clientLeft","calculateChartCoordinate","mathSign","isPercent","isNumOrStr","idCounter","uniqueId","getPercentValue","totalValue","getAnyElementOfObject","hasDuplicate","numberA","numberB","findEntryInArray","specifiedValue","radianToDegree","angleInRadian","polarToCartesian","getMaxRadius","_range2","getAngleOfPoint","anotherPoint","acos","reverseFormatAngleOfSetor","startCnt","endCnt","inRangeOfSector","sector","_getAngleOfPoint","_formatAngleOfSector","formatAngleOfSector","formatAngle","REACT_BROWSER_EVENT_MAP","mousedown","mouseup","mouseover","mousemove","mouseout","mouseenter","mouseleave","touchcancel","touchend","touchmove","touchstart","Comp","lastChildren","findAllByType","childType","findChildByType","validateWidthHeight","_el$props","SVG_TAGS","isSvgElement","isDotProps","filterProps","includeEvents","svgElementType","_inputProps","_FilteredElementKeyMa","matchingElementTypeKeys","isValidSpreadableProp","isChildrenEqual","nextChildren","isSingleChildEqual","nextChild","renderByOrder","renderMap","record","results","getReactEventByType","parseChildIndex","shallowEqual","SVGElementPropKeys","PolyElementKeys","FilteredElementKeyMap","svg","EventKeys","adaptEventHandlers","newHandler","adaptEventsOfChild","originalHandler","getEventHandlerOfChild","setStatic","setDisplayName","Component$$1","wrapDisplayName","hocName","mapProps","propsMapper","classCallCheck","inherits","objectWithoutProperties","possibleConstructorReturn","withProps","pick","withPropsOnChange","shouldMapOrKeys","shouldMap","WithPropsOnChange","computedProps","componentWillReceiveProps","mapValues","withHandlers","WithHandlers","_initialiseProps","cachedHandlers","createHandler","handlerName","cachedHandler","DefaultProps","ownerProps","omit","renameProp","oldName","newName","_babelHelpers$extends","renameProps","nameMap","flattenProp","withState","stateName","stateUpdaterName","initialState","WithState","stateValue","updateStateValue","updateFn","withStateHandlers","stateUpdaters","WithStateHandlers","shouldComponentUpdate","propsChanged","stateChanged","mayBeEvent","withReducer","dispatchName","reducer","WithReducer","initializeStateValue","dispatch","branch","leftFactory","rightFactory","renderComponent","Nothing","renderNothing","ShouldUpdate","pure","hoc","onlyUpdateForKeys","propKeys","onlyUpdateForPropTypes","withContext","WithContext","GetContext","lifecycle","spec","Lifecycle","hook","isClassComponent","toClass","baseComponent","ToClass","setPropTypes","funcs","createSink","Sink","componentWillMount","componentFromProp","nest","Components","factories","reduceRight","hoistStatics","higherOrderComponent","NewComponent","_config","fromESObservable","toESObservable","configureObservable","observable","stream","componentFromStreamWithConfig","config$$1","propsToVdom","ComponentFromStream","_config$fromESObserva","vdom","propsEmitter","props$","vdom$","subscription","componentFromStream","identity$1","mapPropsStreamWithConfig","mapPropsStream","createEventHandlerWithConfig","createEventHandler","REACT_STATICS","getDefaultProps","mixins","KNOWN_STATICS","caller","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","_postcssValueParser2","_parser","_reducer2","_stringifier2","MATCH_CALC","walk","contents","parser","reducedAst","_cssUnitConverter","_cssUnitConverter2","convertAbsoluteLength","flip","_convert","_convert2","operator","convertMathExpression","_node","flipValue","isValueType","reduceAddSubExpression","reduceDivisionExpression","reduceMultiplicationExpression","reduceMathExpression","calc","_reducer","prec","fallback","JisonParserError","msg","stacktrace","exception","ex2","rv","trace","yy","hasPartialLrUpgradeOnConflict","errorRecoveryTokenDiscardCount","symbols_","terminals_","TERROR","originalQuoteName","originalParseError","cleanupAfterParse","constructParseErrorInfo","yyMergeLocationInfo","__reentrant_call_depth","__error_infos","__error_recovery_infos","quoteName","id_str","getSymbolName","describeSymbol","terminal_descriptions_","collect_expected_token_set","do_not_describe","tokenset","state_descriptions_","productions_","rule","bp","performAction","yystate","yysp","yyvstack","goto","bt","defaultActions","bda","parseError","ExceptionClass","recoverable","sstack","vstack","sp","NO_ACTION","__lexer__","sharedState_yy","pre_parse","post_parse","pre_lex","post_lex","fastLex","yyGetSharedState","dst","shallow_copy_noclobber","resultValue","invoke_post_methods","do_not_nuke_errorinfos","cleanupAfterLex","expected","pei","errStr","yytext","token_id","yylineno","new_state","symbol_stack","state_stack","value_stack","stack_pointer","rec","yyrulelen","this_production","lex","yyval","_$","retval","setInput","canIUse","errSymbolDescr","showPosition","ntsymbol","JisonLexerError","ERROR","__currentRuleSet__","__decompressed","_backtrack","_input","_more","_signaled_error_token","conditionStack","matched","matches","yyleng","yylloc","constructLexErrorInfo","show_input_position","prettyPrintRange","pos_str","yyerror","lineno_msg","lexerErrorsAreRecoverable","extra_error_attributes","last_column","first_line","first_column","last_line","rules","rule_re","conditions","rule_ids","rule_regexes","rule_new_ids","__rule_regexes","__rule_count","editRemainingInput","cpsArg","ch","slice_len","ch2","unput","pre_lines","more","backtrack_lexer","less","pastInput","maxSize","past","upcomingInput","maxPrefix","maxPostfix","deriveLocationInfo","actual","preceding","following","context_loc","context_loc2","l0","l1","lineno_display_width","ws_prefix","nonempty_line_indexes","lno","errpfx","clip_start","MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT","clip_end","intermediate_line","describeYYLLOC","display_range_too","l2","test_match","indexed_rule","backup","match_str","match_str_len","tempMatch","_currentRules","trackPosition","topState","regexes","pendingInput","activeCondition","conditionStackDepth","pushState","popState","stateStackSize","yyrulenumber","YY_START","simpleCaseActionClusters","inclusive","ValueParser","bubble","openParentheses","closeParentheses","singleQuote","doubleQuote","backslash","slash","colon","star","escapePos","whitespacePos","tokens","balanced","sourceIndex","unclosed","stringifyNode","custom","buf","customResult","EXP","dotted","sciPos","containsNumber","scriptpath","urlArgs","readyState","onreadystatechange","list","each","$script","idOrDone","optDone","idOrDoneIsDone","queue","loopFn","dset","force","loaded","onload","lastChild","ready","req","missing","formatting","complex","basic","plugins_1","suneditor_1","getLanguage_1","events_1","lang","setContents","setDefaultStyle","getSunEditorInstance","appendContents","setAllPlugins","disable","hideToolbar","disableToolbar","txtArea","editor","initialEffect","plugins","defaultStyle","reload","focusEdge","util","_createDefaultRange","wysiwyg","getContents","hasFocus","show","enable","buttonList","SunEditor_1","noGlobal","save","bold","underline","italic","strike","subscript","superscript","removeFormat","fontColor","hiliteColor","indent","outdent","orderList","unorderList","horizontalRule","hr_solid","hr_dotted","hr_dashed","math","video","audio","showBlocks","codeView","undo","redo","preview","print","tag_p","tag_div","tag_h","tag_blockquote","tag_pre","template","paragraphStyle","textStyle","dir_ltr","dir_rtl","mention","dialogBox","linkBox","newWindowCheck","downloadLinkCheck","bookmark","mathBox","inputLabel","fontSizeLabel","previewLabel","imageBox","altText","videoBox","audioBox","browser","caption","submitButton","revertButton","proportion","controller","edit","unlink","insertRowAbove","insertRowBelow","deleteRow","insertColumnBefore","insertColumnAfter","deleteColumn","fixedColumnWidth","resize100","resize75","resize50","resize25","autoSize","mirrorHorizontal","mirrorVertical","rotateLeft","rotateRight","minSize","tableHeader","mergeCells","splitCells","HorizontalSplit","VerticalSplit","spaced","bordered","neon","translucent","shadow","SUNEDITOR_LANG","ckb","fixColumnWidth","targetElement","blockquote","targetButton","nodeName","currentBlockquote","getParentElement","getSelectionNode","detachRangeFormatElement","applyRangeFormatElement","cloneNode","icons","_itemMenu","_alignList","currentAlign","defaultDir","rtl","justify","align_justify","align_left","align_right","align_center","listDiv","setSubmenu","listUl","pickup","initMenuTarget","alignContext","firstElementChild","isFormatElement","changeElement","alignList","exchangeDir","leftBtn","rightBtn","lp","rp","selectedFormsts","getSelectedElements","effectNode","submenuOff","targetText","targetTooltip","_fontList","currentFont","fontList","tooltip","selectFont","changeTxt","wwComputedStyle","fontContext","newNode","nodeChange","_sizeList","currentSize","fontSizeUnit","_convertFontSize","fontSizeContext","colorPicker","colorListHTML","_colorInput","_defaultColor","_styleProperty","_currentColor","_colorList","createColorList","_makeColorList","makeColor","colorList","colorArr","checked","erase","fillColor","getColorInNode","isHexColor","rgb2hex","setInputText","colorName2hex","setCurrentColor","hexColorStr","findColor","styleProperty","isWysiwygDiv","rgbMatch","colorName","_w","removeItem","addModule","previewEl","colorInput","onChangeInput","submit","colorArea","contextPicker","contextFontColor","applyColor","contextHiliteColor","currentHR","horizontalRulePick","hrItems","class","hasClass","controllersOn","controllersOff","appendHr","hrTemp","insertComponent","command","oNode","setRange","_list","currentList","list_bullets","list_number","isList","listContext","editList","selectedCells","detach","getRange","selectedFormats","getSelectedElementsAndComponents","getRange_addLine","sortByDepth","firstSel","lastSel","topEl","isListCell","isComponent","previousElementSibling","bottomEl","isCollapsed","collapsed","originRange","sc","startContainer","endContainer","onlyZeroWidthSpace","startOffset","endOffset","ec","afterRange","isRemove","getRangeFormatElement","topElParent","bottomElParent","mergeTop","mergeBottom","firstList","lastList","topNumber","bottomNumber","passComponent","newCell","fTag","isCell","originParent","nextParent","parentTag","siblingTag","rangeTag","childNodes","_isIgnoreNodeChange","isRangeFormatElement","copyFormatAttributes","isHR","outerHTML","fChildren","getElementDepth","currentFormat","rangeArr","tempList","_detachNested","originList","sibling","cLen","newList","getPositionIndex","mergeSameTags","edge","getEdgeChildNodes","cc","editInsideList","cellsLen","lastCell","innerList","nodePath","sl","_insiedList","getNodeFromPath","insertPrev","getNodePath","slPath","lastElementChild","mergeNestedTags","contextTable","_element","_tdElement","_trElement","_trElements","_tableXY","_maxWidth","_fixedColumn","_rtl","cellControllerTop","tableCellControllerPosition","resizeText","headerButton","mergeButton","splitButton","splitMenu","maxText","minText","_physical_cellCnt","_logical_cellCnt","_rowCnt","_rowIndex","_physical_cellIndex","_logical_cellIndex","_current_colSpan","_current_rowSpan","expansion","reduction","tablePicker","tableHighlight","tableUnHighlight","tableDisplay","tableController","setController_table","resizeButton","columnFixedButton","resizeDiv","setController_tableEditor","insertRowAboveButton","insertRowBelowButton","onMouseMove_tablePicker","appendTable","onClick_tableController","relative","tableResize","fixed_column_width","table_header","insert_row_above","insert_row_below","delete_row","merge_cell","insert_column_left","insert_column_right","delete_column","split_cell","oTable","createCells","tableHTML","firstTd","reset_table_picker","cnt","returnElement","cellsHTML","offsetX","offsetY","highlight","unHighlight","tablePlugin","_removeEvents","_selectedTable","_toggleEditor","_shift","_selectedCells","_fixedCell","_selectedCell","_fixedCellName","call_controller_tableEdit","tdElement","getSelection","tableElement","tableLayout","setTableStyle","setPositionControllerTop","setPositionControllerDiv","setControllerPosition","setCellInfo","rows","cellIndex","cellCnt","colSpan","rowIndex","rowSpan","rowSpanArr","spanIndex","cs","rs","logcalIndex","editTable","isRow","tableAttr","positionCell","editRow","removeCells","firstRow","rightCell","editCell","positionResetElement","up","originRowIndex","spanCells","spanCell","insertRow","passCell","removeCell","removeSpanArr","insertIndex","applySpan","cellColSpan","removeIndex","getOverlapRangeAtIndex","removeFirst","removeEnd","rLen","getArrayIndex","rowSpanCell","_closeSplitMenu","openSplitMenu","removeDocEvent","addDocEvent","vertical","currentCell","currentRow","currentColSpan","currentRowSpan","newRowSpan","nextRowIndex","nextRow","nextCells","newRow","physicalIndex","mergeCell","emptyRowFirst","emptyRowLast","mergeHTML","rowIndexFirst","rowIndexLast","removeRows","setActiveButton","toggleHeader","toggleClass","span","sizeIcon","fixedCell","selectedCell","_bindOnSelect","_bindOffSelect","_bindOffShift","enabled","_offCellMultiSelect","_initBind","_wd","_onCellMultiSelect","_antiBlur","_setMultiCells","startCell","endCell","findSelectedCell","newCs","newCe","newRs","newRe","onTableCellMultiSelect","emptyDiv","removeItemAllParents","formatBlock","_formatList","pickUp","lang_toolbar","defaultFormats","formatList","formatTitle","formatContext","rangeElement","firstPath","lastPath","rlist","detachList","modifiedFormsts","freeElement","focusElement","inner","isComp","isSameAttributes","previousSibling","replaceChild","lineHeights","lineHeightContext","getFormatElement","selectedIndex","templateDiv","templateList","templates","_classList","menuLang","defaultList","paragraphStyles","paragraphList","_styleList","styleList","textStyles","styleButtonList","selectionNode","btn","checkStyles","cssText","removeNodes","selectMenu","callerContext","setForm","createList","menus","initEvent","forms","clickMethod","callerName","onMousedown_list","onMouseMove_list","onClick_list","moveItem","selectIndex","getItem","positionHandler","setDialogForm","host","origin","relList","linkRel","defaultRel","linkRelDefault","protocol","download","rel","anchorPlugin","modal","urlInput","linkDefaultRel","currentRel","linkAnchor","linkValue","_change","check_new_window","check_bookmark","anchorText","downloadCheck","bookmarkButton","relButton","relPreview","onClick_relButton","onClick_relList","onChange_newWindowCheck","onChange_downloadCheck","onChangeAnchorText","onChangeUrlInput","onKeyDownUrlInput","onFocusUrlInput","onBlurUrlInput","onClick_bookmarkButton","contextAnchor","dialog","updateModal","selfPathBookmark","lastIndexOf","linkTargetNewWindow","setRel","setLinkPreview","setHeaderBookmark","_closeRelMenu","toggleRelList","offsetLeft","modalForm","cmd","relAttr","relListEl","rels","checkedRel","createHeaderList","contextList","urlValue","getListChildren","valueRegExp","_setMenuListPosition","contextLink","linkProtocol","noPrefix","linkNoPrefix","reservedProtocol","sameProtocol","setCtx","updateAnchor","displayText","notText","createAnchor","oA","_relMerge","_relDelete","_linkAnchor","anchorCtx","link_dialog","setDialog","link_controller","setController_LinkButton","linkController","onClick_linkController","link_btn","currentControllerName","showLoading","textNode","oFormat","insertNode","closeLoading","isAnchor","controllerArray","call_controller","selectionATag","editLink","linkBtn","getChildElement","contextImage","_infoList","_infoIndex","_uploadFileLength","sizeUnit","_imageSizeUnit","_linkElement","_altText","_align","_floatClassRegExp","_v_src","_linkValue","svgDefaultSize","base64RenderIndex","_cover","_container","inputX","inputY","_element_w","_element_h","_element_l","_element_t","_defaultSizeX","_defaultSizeY","_origin_w","imageWidth","_origin_h","imageHeight","_proportionChecked","_resizing","imageResizing","_resizeDotHide","imageHeightShow","_rotation","imageRotation","_alignHide","imageAlignShow","_onlyPercentage","imageSizeOnlyPercentage","_ratio","_ratioX","_ratioY","_captionShow","_captionChecked","_caption","captionCheckEl","image_dialog","imgInputFile","imgUrlFile","previewSrc","openTab","_removeSelectedFiles","_onLinkPreview","_fileInputChange","imageGalleryButton","_openGallery","setInputSize","setRatio","sizeRevert","imageFileInput","imageAccept","imageMultipleFile","imageUrlInput","imageGalleryUrl","image_gallery","onlyPercentage","onlyPercentDisplay","heightDisplay","revert","textDecoration","callPlugin","_setUrlInput","fileTags","onModifyMode","resizing","call_controller_resize","imageEl","imageContainer","isMediaComponent","dataIndex","focusEl","fileManager","deleteInfo","functions","tabName","contentClassName","tabContent","tabLinks","imagePlugin","update_image","submitAction","onRender_imgUrl","limitSize","imageUploadSizeLimit","infoSize","imagesInfo","onImageUploadError","noticeOpen","info","inputHeight","isUpdate","onImageUploadBefore","register","upload","response","imageUploadUrl","filesLen","formData","FormData","append","imageUploadHeader","callBack_imgUpload","setup_reader","xmlHttp","imageUploadHandler","responseText","errorMessage","update_src","create_image","wFileReader","filesStack","updateElement","onRender_imgBase64","updateMethod","createMethod","onRender_link","imgTag","_module_setInputSize","_module_setRatio","checkFileInfo","modifyHandler","openModify","float","checkInfo","resetFileInfo","resetInfo","_resize_plugin","oImg","cover","set_cover","set_container","create_caption","applySize","setAlign","_image_create_onload","setInfo","mediaAutoSelect","selectComponent","appendFormatTag","openController","notHistoryPush","changeSize","isNewContainer","modifiedCaption","isNewAnchor","imageElement","newEl","existElement","isNotCheckingNode","refer","removeEmptyNode","splitElement","htmlRemoveWhiteSpace","__updateTags","_rotateVertical","resetTransform","setTransformSize","getNumber","userSize","notOpen","_module_setModifyInputSize","setPercentSize","setAutoSize","_module_sizeRevert","notResetPercentage","onlyW","cancelPercentAttr","_module_saveCurrentSize","setOriginSize","originSize","heightPercentage","setCaptionPosition","contextVideo","_videoSizeUnit","_youtubeQuery","youtubeQuery","_videoRatio","videoRatio","_defaultRatio","videoWidth","videoHeight","videoResizing","videoHeightShow","videoRotation","videoAlignShow","videoSizeOnlyPercentage","video_dialog","videoInputFile","videoUrlFile","videoRatioOption","setVideoRatio","videoFileInput","videoAccept","videoMultipleFile","videoUrlInput","ratioList","videoRatioList","ratioDisplay","videoRatioShow","onlyWidthDisplay","_setTagAttrs","videoTagAttrs","createVideoTag","videoTag","_setIframeAttrs","frameBorder","allowFullscreen","videoIframeAttrs","createIframeTag","iframeTag","onVideoUpload","setVideoRatioSelect","videoPlugin","setup_url","videoUploadSizeLimit","videosInfo","onVideoUploadError","onVideoUploadBefore","videoUploadUrl","videoUploadHeader","callBack_videoUpload","videoUploadHandler","create_video","DOMParser","parseFromString","splitUrl","endsWith","oFrame","isYoutube","isVimeo","newTag","inputUpdate","_module_getSizeX","_module_getSizeY","changed","_update_videoCover","prevFrame","figcaption","ratioSelected","ratioOptions","onlyH","dataSize","contextAudio","targetSelect","audioWidth","audioHeight","audio_dialog","audioInputFile","audioUrlFile","audio_controller","setController","onClick_controller","audioFileInput","audioAccept","audioMultipleFile","audioUrlInput","_createAudioTag","oAudio","audioTagAttrs","onAudioUpload","updateCover","setupUrl","audioUploadSizeLimit","audiosInfo","onAudioUploadError","onAudioUploadBefore","audioUploadUrl","audioUploadHeader","callBack_upload","audioUploadHandler","create_audio","prevElement","selectionTag","onControllerOff","KATEX_WEBSITE","previewElement","fontSizeElement","defaultFontSize","_mathExp","math_dialog","_renderMathExp","math_controller","setController_MathButton","mathController","onClick_mathController","mathFontSize","math_btn","managedTags","method","katex","dom","createContextualFragment","_renderer","HTMLDecoder","renderToString","throwOnError","displayMode","contextMath","mathExp","katexEl","HTMLEncoder","containerEl","empty","zeroWidthSpace","mathTag","mathBtn","imageGalleryHeader","listClass","itemTemplateHandler","drawItems","selectorHandler","setImage","columnSize","fileBrowser","srcName","SUNEDITOR_MODULES","_closeSignal","dialog_div","dialog_back","dialog_area","modalArea","back","_onMouseDown_dialog","_onClick_dialog","_bindClose","popupDisplay","_xmlHttp","_loading","tagArea","tagElements","selectedTags","contextPlugin","browser_div","set_browser","titleArea","onClickTag","onClickFile","_onMouseDown_browser","_onClick_browser","fileBrowserContext","pluginContext","listClassName","_drawFileList","fileBrowserPlugin","abort","showBrowserLoading","closeBrowserLoading","browserHeader","getXMLHttpRequest","_callBackGet","setRequestHeader","send","_drawListItem","nullMessage","_tags","splitSize","drawItemHandler","tagsHTML","listHTML","tLen","selectTag","sTagIndex","listEl","_checkMediaComponent","uploadUrl","uploadHeader","callBack","errorCallBack","filePlugin","_callBackUpload","tagNames","uploadEventHandler","fileManagerPlugin","infoList","setFileInfo","_componentsInfoReset","infoUpdate","currentTags","infoIndex","plguin","_componentsInfoInit","naturalWidth","naturalHeight","_resizeClientX","_resizeClientY","_resize_w","_resize_h","_resize_direction","_move_path","_isChange","alignIcons","resize_div_container","setController_resize","resizeContainer","resizeDot","resizeDisplay","resize_button","setController_button","resize_handles","resizeHandles","resizeButtonGroup","rotationButtons","percentageButtons","alignMenu","alignMenuList","alignButton","autoSizeButton","captionButton","onMouseDown_resize_handle","onClick_resizeButton","resize_container","auto_size","rotate_left","rotate_right","mirror_horizontal","mirror_vertical","modify","pluginObj","percentageRotation","xUnit","yUnit","dec","plugin","contextResizing","wysiwygFrame","isVertical","scrollLeft","displayX","displayY","resizeDotShow","rotations","pButtons","addOffset","setDisabledButtons","resizingDisabledButtons","_closeAlignMenu","openAlignMenu","currentContext","contextEl","currentModule","percentY","percentage","_setTransForm","slope","deg","alignValue","captionText","transformOrigin","transOrigin","offsetW","translate","resizeBackground","closureFunc_bind","change","resizing_element_bind","cancel_controller_resize","resizing_element","resultW","resultH","wh","limit","code_view","line_height","paragraph_style","text_style","arrow_down","font_color","highlight_color","horizontal_rule","show_blocks","line_break","alert_outline","more_text","more_paragraph","more_plus","more_horizontal","more_vertical","attachment","magic_stick","empty_file","isIE_Edge","isOSX_IOS","isChromium","isResizeObserverSupported","_propertiesInit","platform","_allowedEmptyNodeList","_HTMLConvertor","zeroWidthRegExp","onlyZeroWidthRegExp","fontValueMap","ActiveXObject","XMLHttpRequest","e1","getValues","camelToKebabCase","letter","kebabToCamelCase","elementName","_hasOwn","getIncludePath","nameArray","extension","pathList","regExp","extRegExp","editorTag","getPageStyle","sheets","getIframeDocument","wDocument","contentDocument","getAttributesToString","exceptAttrs","attrString","getByteLength","encoder","cl","unescape","TextEncoder","encode","isNonEditable","isTextStyleElement","isInputElement","isClosureRangeFormatElement","isFreeFormatElement","isClosureFreeFormatElement","isUneditableComponent","validation","getFreeFormatElement","getClosureFreeFormatElement","copyTagAttributes","originEl","copyEl","copyStyles","getArrayItem","multi","nextIdx","prevIdx","_newOffsets","finds","offsets","style_a","style_b","compStyle","class_a","class_b","reg","compClass","isEmptyLine","isSpanWithoutAttr","isTable","isBreak","isMedia","isFigures","maxDec","recursionFunc","getListChildNodes","compareElements","aNode","bNode","ancestor","aIndex","bIndex","query","attr","offsetElement","aStart","aEnd","bStart","bEnd","overlap","txt","styleName","isImportantDisabled","important","stopParent","detachNestedList","baseNode","rNode","_deleteNestedList","cNodes","rChildren","baseParent","liSibling","liParent","suffixIndex","splitText","depthEl","pElement","nodePathArray","onlyText","nodePathLen","depthIndex","cDepth","spliceDepth","childs","childLength","nLen","textOffset","tempL","notRemoveNode","forceDelete","_notTextNode","htmlCompress","des","_isExcludeSelectionElement","_isMaintainedNode","_isSizeNode","_disallowedTags","createTagsWhitelist","createTagsBlacklist","_consistencyCheckOfHTML","documentFragment","htmlCheckWhitelistRegExp","htmlCheckBlacklistRegExp","classNameFilter","removeTags","emptyTags","wrongList","withoutFormatCells","wrongTags","nrtag","fel","checkTags","cellChildren","tp","_setDefaultOptionStyle","optionStyle","styleArr","_setIframeDocument","_setIframeCssTags","_editableClass","linkNames","iframeCSSFileName","wRegExp","tagString","CSSFileName","styleTag","_initOptions","top_div","tool_bar","_createToolBar","toolbarShadow","pluginCallButtons","_checkKatexMath","arrow","sticky_dummy","editor_div","initElements","_initElements","bottomBar","wysiwyg_div","placeholder_span","textarea","resizing_bar","resizingBar","navigation","char_wrapper","charWrapper","char_counter","charCounter","loading_box","line_breaker","line_breaker_t","line_breaker_b","resize_back","toolbarContainer","resizingBarContainer","_checkCodeMirror","constructed","_top","_relative","_toolBar","_toolbarShadow","_menuTray","_editorArea","_wysiwygArea","_codeArea","_placeholder","_resizingBar","_navigation","_charWrapper","_charCounter","_lineBreaker","_lineBreaker_t","_lineBreaker_b","_resizeBack","_stickyDummy","_arrow","_responsiveButtons","responsiveButtons","codeMirror","cmOptions","htmlMode","lineNumbers","lineWrapping","viewportMargin","cm","fromTextArea","codeMirrorEditor","katexOptions","_setOptions","mergeOptions","originOptions","originElement","editorArea","isNewToolbarContainer","isNewToolbar","topArea","callButtons","topDiv","toolBar","toolBarArrow","_editorStyles","toolbarWidth","wysiwygDiv","iframeAttributes","charCounterLabel","charLabel","maxCharCount","char_max","_plugins","pluginsValues","allowedClassNames","historyStackDelayTime","frameAttrbutes","defaultTag","textTags","sup","_new","_textTagsMap","_defaultCommand","__allowedScriptTag","tagsBlacklist","_defaultTagsWhitelist","_editorTagsWhitelist","addTagsWhitelist","_setWhitelist","pasteTagsBlacklist","pasteTagsWhitelist","attributesWhitelist","attributesBlacklist","lineAttrReset","_printClass","stickyToolbar","fullScreenOffset","fullPage","previewTemplate","printTemplate","showPathLabel","resizeEnable","charCounterType","tabDisable","shortcutsDisable","shortcutsHint","callBackSave","__listCommonStyle","whitelist","_defaultButtons","addShift","indentKey","indentIcon","_createModuleGroup","oDiv","oUl","_createButton","buttonClass","dataCommand","dataDisplay","_disabled","_icons","oLi","oButton","separator_vertical","_buttonTray","defaultButtonList","moduleElement","buttonElement","moreLayer","buttonGroupLoop","moreContainer","moreCommand","buttonGroup","moreButton","ul","li","sv","enterDiv","tool_cover","cons","lineBreaker","lineBreaker_t","lineBreaker_b","tool","notice","notice_div","notice_span","notice_button","onClick_cancel","init_options","idOrElement","_init_options","_prevRtl","_editorHeight","_editorHeightPadding","_listCamel","_listKebab","_ww","_shadowRoot","_shadowRootControllerEventTarget","_notice","initPlugins","_targetPlugins","submenu","_submenuName","_bindedSubmenuOff","_bindedContainerOff","submenuActiveButton","containerActiveButton","currentControllerTarget","currentFileComponentInfo","codeViewDisabledButtons","_moreLayerActiveButton","_htmlCheckWhitelistRegExp","_htmlCheckBlacklistRegExp","_disallowedTextTagsRegExp","editorTagsWhitelistRegExp","editorTagsBlacklistRegExp","pasteTagsWhitelistRegExp","pasteTagsBlacklistRegExp","isReadOnly","_attributesWhitelistRegExp","_attributesWhitelistRegExp_all_data","_attributesBlacklistRegExp","_attributesTagsWhitelist","_attributesTagsBlacklist","_bindControllersOff","_isInline","_isBalloon","_isBalloonAlways","_inlineToolbarAttr","_notHideToolbar","_sticky","_lineBreakerButton","activePlugins","managedTagsInfo","_charTypeHTML","_fileInfoPluginsCheck","_fileInfoPluginsReset","_fileManager","pluginRegExp","pluginMap","commandMap","_commandMapStyles","STRONG","EM","DEL","_styleCommandMap","_cleanStyleRegExp","_variable","isChanged","isCodeView","isFullScreen","innerHeight_fullScreen","resizeClientY","codeIndent","minResizingSize","currentNodes","currentNodesMap","_range","_selectionNode","_originCssText","_bodyOverflow","_editorAreaOriginCssText","_wysiwygOriginCssText","_codeOriginCssText","_fullScreenAttrs","balloon","inline","_lineBreakComp","_lineBreakDir","_formatAttrsTemp","_saveButtonStates","allCommandButtons","currentButtons","_recoverButtonStates","oldButton","callBackFunction","_target","moduleArray","moduleName","getGlobalScrollOffset","submenuOn","submenuName","_setMenuPosition","moreLayerOff","containerOn","containerName","_containerName","containerOff","toolbarW","toolbarOffset","_getEditorOffsets","menuW","elementW","rtlW","rtlL","overLeft","offsetEl","toolbarTop","menuHeight","menuHeight_bottom","menuTop","insTop","menuHeight_top","getFileComponent","showController","referEl","topMargin","controllerW","referElW","allow","overSize","execCommand","showDefaultUI","nativeFocus","__focus","_editorRange","currentNode","commonAncestorContainer","_applyTagEffects","_toggleToolbarBalloon","fileComponentInfo","startCon","startOff","endCon","endOff","setStart","setEnd","selection","removeAllRanges","addRange","_rangeInfo","removeRange","_setKeyEffect","focusNode","rangeCount","getRangeAt","anchorNode","anchorOffset","focusOffset","compareValue","rightDir","_selectionVoid","activeEl","extentNode","firstFormat","comm","_resetRangeToTextNode","tempCon","tempOffset","tempChild","onlyBreak","emptyText","commonCon","lineNodes","startLine","endLine","startIdx","endIdx","onlyTable","startRangeEl","endRangeEl","sameRange","removeDuplicate","myComponent","selectedLines","isEdgePoint","nodeValue","_isEdgeFormat","formatNode","currentFormatEl","oFormatName","checkCharCount","notSelect","removeNode","formatEl","depthFormat","_setComponentLineBreaker","t_style","b_style","componentTop","wScroll","_checkDuplicateNode","_dupleCheck","oStyles","duple","afterNode","originAfter","tempAfterNode","insertListCell","tempParentNode","freeFormat","isFormats","isEdge","prevContainer","sameParent","subList","formatRange","removedTag","oldParent","rangeCon","fNode","chList","dupleNodes","cItem","_setIntoFreeFormat","previousText","nextText","newRange","zeroWidth","oNodeChildren","lastONode","isStartEdge","isEndEdge","startPrevEl","endNextEl","beforeNode","startNode","endNode","_nodeRemoveListItem","substringData","endUl","startLi","rc","rangeLines","linesLoop","nested","fEl","lEl","standTag","beforeTag","parentDepth","listParent","lineArr","removeItems","nextLine","nextList","removeArray","splitRange","newRangeElement","firstNode","lastNode","rangeEl","insertedNew","moveComplete","appendNode","insNode","originNode","insChildren","originNext","detachRange","insNext","innerChildren","rangeParent","rangeRight","childEdge","listFirst","listLast","styleArray","removeNodeArray","strictRemove","isRemoveNode","isRemoveFormat","newNodeName","sNode","checkCnt","checkAttrs","ckeckClasses","classReg","styleCheck","classCheck","styleRegExp","classRegExp","removeNodeRegExp","wBoolean","_removeCheck","checkNode","vNode","tagRemove","originStyle","originClasses","oneLine","endLength","isRemoveAnchor","isSizeNode","_getMaintainedNode","_util_getMaintainedNode","_util_isMaintainedNode","_resetCommonListCell","_nodeChange_oneLine","_setCommonListStyle","appliedCommonList","_nodeChange_endLine","_nodeChange_middleLine","_nodeChange_startLine","elStyles","ek","elKeys","removeProperty","sel","appliedEl","childStyle","elStyle","cKeys","_stripRemoveNode","_isRemove","newInnerNode","parentCon","sameTag","nNodeArray","pNode","isSameNode","pCurrent","startPass","endPass","checkCss","coverNode","prevNode","prevAnchorNode","childNode","anchors","aChildren","ancestorAnchorNode","afterAnchorNode","textNode_s","textNode_e","endConReset","newStartOffset","startPath","mergeEndCon","newEndOffset","endPath","newOffsets","_endContainer","passNode","cloneChild","isTopNode","tempNode","newCssText","newClass","noneChange","actionCall","layer","_showToolbarBalloon","_showToolbarInline","commandHandler","toggleCodeView","toggleDisplayBlocks","setDir","nodesMap","marginDir","_resourcesStateChange","_setCodeDataToEditor","_hideToolbar","_resetCachingButton","_setEditorDataToCodeView","_checkPlaceholder","code_html","_getCodeView","headChildren","convertContentsForEditor","editableClasses","codeContents","convertHTMLForCodeView","codeValue","_setCodeView","_var","wasToolbarHidden","_codeViewAutoHeight","onScroll_window","_iframeAutoHeight","contentsHTML","printDocument","wDoc","arrts","linkHTML","documentMode","StyleMedia","windowObject","mimeType","changeDir","convertValue","_resetComponents","setIframeContents","__scriptTagRegExp","onlyContents","cleanHTML","renderHTML","editableEls","getFullContents","_makeLine","requireFormat","__disallowedTagNameRegExp","textArray","_allowHTMLComments","_tagConvertor","_deleteDisallowedTags","__disallowedTagsRegExp","sizeNum","pxSize","_cleanStyle","face","allowedStyle","_cleanTags","lowLevelCheck","bAttr","wAttr","_editFormat","tempTree","_convertListCell","domTree","_isFormatData","_classNameFilter","textCompList","initMethod","__allowedScriptRegExp","comp","returnHTML","brReg","isFormat","brChar","indentSize","elementRegTest","elementIndent","lineBR","nodeRegTest","tagIndent","XMLSerializer","serializeToString","useCapture","_charCount","inputText","countType","nextCharCount","getCharLength","_setCharCount","over","getCharCount","slicePosition","_callCounterBlink","resetResponsiveToolbar","responsiveSize","_responsiveButtonSize","responsiveWidth","_responsiveCurrentSize","setToolbarButtons","_checkComponents","getDoc","ignoredList","OUTDENT","INDENT","_init","_initHTML","getPropertyValue","sPrefix","ShadowRoot","shadowRoot","disallowTextTags","allowTextTags","getRegList","str2","defaultAttr","regEndStr","_wAttr","tagsAttr","allAttr","_bAttr","_cachingButtons","managedClass","filePluginRegExp","delayTime","pushDelay","stackIndex","setContentsFromStack","pushStack","getCurrentIndex","ignoreChangeEvent","_destroy","_onChange_historyStack","_iframeAuto","_initWysiwygArea","__callResizeFunction","resizeObserverEntry","borderBoxSize","blockSize","onResizeEditor","_setDefaultFormat","formatName","fileComponent","_setOptionsInit","_getConstructed","_editorInit","_addEvent","_offStickyToolbar","onResize_window","_resizeObserver","_toolbarObserver","_IEisComposing","_lineBreakerBind","_cursorMoveKeyCode","_directionKeyCode","_nonTextKeyCode","_historyIgnoreKeyCode","_onButtonsCheck","_frontZeroWidthReg","_keyCodeShortcut","_shortcutCommand","keyStr","classOnCheck","commandMapNodes","_buttonsEventHandler","onClick_toolbar","onMouseDown_wysiwyg","tableCell","onClick_wysiwyg","detail","prevLi","_balloonDelay","_showToolbarBalloonDelay","isDirTop","getClientRects","globalScroll","editorWidth","stickyTop","editorLeft","nodeOffset","noText","arrowMargin","toolbarHeight","iframeRects","_setToolbarOffset","editorParent","absoluteLeft","overRight","resetTop","space","_getPageBottomSpace","arrow_left","showInline","onInput_wysiwyg","onInput","_isUneditableNode","siblingKey","siblingNode","_isUneditableNode_getSibling","selectNode","_onShortcutKey","onKeyDown_wysiwyg","ctrl","selectRange","fileComponentName","_hardDelete","defaultFormat","con","prevLast","ignoreZWS","nextEl","fc","lc","moveCell","endChild","tabText","textRange","freeFormatEl","enterHTML","formatEndEdge","formatStartEdge","innerNode","newListCell","selectionFormat","wSelection","insertHTML","wOffset","focusNext","brPrev","brNext","focusBR","isMultiLine","innerRange","tempEl","compContext","nbsp","onKeyUp_wysiwyg","oFormatTag","frontZeroWidthCnt","onScroll_wysiwyg","onFocus_wysiwyg","onBlur_wysiwyg","onMouseDown_resizingBar","_resize_editor","closureFunc","resizeInterval","isToolbarHidden","editorHeight","scrollY","editorTop","inlineOffset","_onStickyToolbar","sCell","eCell","sIsCell","eIsCell","sComp","eComp","onPaste_wysiwyg","clipboardData","_dataTransferAction","_setClipboardComponent","onCopy_wysiwyg","onCopy","onSave_wysiwyg","onSave","onCut_wysiwyg","onCut","onDrop_wysiwyg","_setDropLocationSelection","rangeOffset","caretRangeFromPoint","plainText","cleanData","tempDiv","tempRange","_setClipboardData","MSData","onPaste","insertImage","onMouseMove_wysiwyg","lineBreakerStyle","ctxEl","_onMouseDown_lineBreak","_onLineBreak","eventWysiwyg","_setResponsiveToolbar","_removeEvent","sizeArray","buttonsObj","onSetToolbarButtons","newToolbar","newContext","newStyles","noticeClose","getText","getImagesInfo","getFilesInfo","notCleaningData","rangeSelection","checkHTML","firstCon","setOption","topAreaStyle","appendClass","parseValue","ApolloCache","getFragmentDoc","batch","updateResult","optimisticId","performTransaction","recordOptimisticTransaction","transaction","transformDocument","transformForLink","identify","gc","readQuery","read","rootId","readFragment","fragment","writeQuery","dataId","writeFragment","updateQuery","updateFragment","MissingFieldError","variables","isNullish","defaultDataIdFromObject","__typename","_id","keyObject","defaultConfig","dataIdFromObject","addTypename","resultCaching","canonizeResults","shouldCanonizeResults","TypeOrFieldNameRegExp","fieldNameFromStoreName","storeFieldName","selectionSetMatchesResult","storeValueIsStoreObject","extractFragmentContext","fragments","fragmentMap","lookupFragment","DELETE","delModifier","INVALIDATE","EntityStore","policies","rootIds","refs","getFieldValue","objectOrReference","maybeDeepFreeze","__ref","canRead","objOrRef","toReference","objOrIdOrRef","mergeIntoStore","merge","fieldName","storeObject","rootTypenamesById","dependOnExistence","existing","incoming","__DEV__","merged","storeObjectReconciler","caching","fieldsToDirty_1","__exists","hasKeyArgs","changedFields_1","needToMerge_1","allDeleted_1","sharedDetails_1","isReference","readField","fieldNameOrOptions","fieldValue","newValue","storage","getStorage","typename","getStoreFieldName","evict","evicted","extract","extraRootIds","getRootIdSet","__META","rest_1","retain","release","snapshot","findChildRefIds","idsToRemove","root_1","found_1","workSet_1","keyMaker","CacheGroup","resetCaching","canUse","makeDepKey","maybeDependOnExistenceOfEntity","entityId","supportsResultCaching","Root","seed","stump","Stump","storageTrie","addLayer","layerId","replay","removeLayer","ownStoreObject","parentStoreObject","fromParent","existingObject","incomingObject","existingValue","incomingValue","execSelectionSetKeyArgs","StoreReader","knownResults","canon","executeSelectionSet","peekArgs","admit","enclosingRef","execSelectionSetImpl","resultCacheMaxSize","varString","executeSubSelectedArray","execSubSelectedArrayImpl","resetCanon","diffQueryAgainstStore","returnPartialData","rootRef","execResult","firstMissing","isFresh","latest","isKnown","objectsToMerge","missingMerger","handleMissing","resultName","rootIdsByTypename","added","pass","fragmentMatches","finalResult","mergeDeep","frozen","childResult","getTypenameFromStoreObject","assertSelectionSetForIdValue","tree","specifierInfoCache","lookupSpecifierInfo","keyFieldsFnFromSpecifier","keyFieldsFn","collectSpecifierPaths","schemaKeyPath","extracted","extractKeyPath","extractKey","keyArgsFnFromSpecifier","keyArgsFn","collected","keyPath","firstKey","firstChar","variableName","varKeyPath","directiveName_1","directiveArgs","extractor","merger","getSpecifierPaths","toMerge","paths_1","currentPath_1","argsFromFieldSpecifier","setStringify","nullKeyFieldsFn","simpleKeyArgsFn","mergeTrueFn","mergeObjects","mergeFalseFn","Policies","typePolicies","toBeAdded","supertypeMap","fuzzySubtypes","usingPossibleTypes","setRootTypename","possibleTypes","addPossibleTypes","addTypePolicies","partialContext","ROOT_QUERY","normalizeReadFieldOptions","policy","getTypePolicy","keyFn","specifierOrId","queryType","mutationType","subscriptionType","updateTypePolicy","keyFields","setMerge","getFieldPolicy","old","supertype","getSupertypeSet","subtype","policy_1","supertypes","inbox","createIfMissing","fieldPolicies","supertypeSet","typenameSupertypeSet","workQueue_1","maybeEnqueue_1","needToCheckFuzzySubtypes","checkingFuzzySubtypes","fuzzyString","fieldSpec","specifierOrString","readOptions","makeFieldFunctionOptions","getReadFunction","getMergeFunction","parentTypename","childTypename","runMergeFunction","makeMergeObjectsFunction","overwrite","readFieldArgs","undefId","argc","makeUniqueId","eType","iType","getContextFlavor","clientOnly","deferred","flavored","flavors","StoreWriter","writeToStore","operationDefinition","written","incomingById","processSelectionSet","mergeTree","fieldNodeSet","entityRef","applied","applyMerges","fieldsWithSelectionSets_1","hasSelectionSet_1","childTree","hasMergeFunction_1","existingRef","incomingObj","getChild","parentType","typeDotName","warnings","childTypenames","warnAboutDataLoss","result_1","flattenFields","resultFieldKey","getChildMergeTree","processFieldValue","maybeRecycleChildMergeTree","dataRef","sets","previous_1","mergeMergeTrees","mergeTreeIsEmpty","cloneDeep","fieldMap","limitingTrie","flatten","inheritedContext","visitedNode","visited","if","getStorageArgs","e_1","i_1","getValue_1","eVal","iVal","aVal","emptyMergeTreePool","needToMergeMaps","remainingRightKeys_1","leftTree","InMemoryCache","watches","typenameDocumentCache","makeVar","txCount","normalizeConfig","rootStore","optimisticData","resetResultCache","resetResultIdentities","previousReader","storeReader","storeWriter","maybeBroadcastWatch","broadcastWatch","restore","broadcast","broadcastWatches","watch","immediate","discardWatches","removeOptimistic","idToRemove","newOptimisticData","onWatchUpdated","perform","alreadyDirty","lastDiff","fromOptimisticTransaction","stringifyCanon","stringifyCache","ObjectCanon","known","WeakSet","pool","passes","keysByJSON","shallowCopy","proto_1","array_1","sortedKeys","json","firstValueIndex_1","sorted","obj_1","canonicalStringify","resetCanonicalStringify","canonical","cacheSlot","cacheInfoMap","getCacheInfo","vars","forgetCache","recallCache","attachCache","oldListeners","attach","onNextChange","ApolloLink","asyncMap","catchFn","activeCallbackCount","completed","promiseQueue","makeCallback","examiner","delegate","both","catch","caught","graphQLResultHasError","getGraphQLErrorsFromResult","graphQLErrors","incremental","incrementalResult","iterateObserversSafely","observers","argument","observersWithMethod","obs","fixObservableSubclass","subclass","species","isPromiseLike","Concast","sources","promise","notify","nextResultListeners","reason","deliverLastMessage","nextOrError","beforeNext","called","ObservableQuery","queryManager","queryInfo","subObserver","_subscription","_observer","defaultSubscriptionObserverErrorCallback","reobserve","tearDownQuery","subscriptions","isTornDown","watchQuery","fetchPolicy","defaultFetchPolicy","initialFetchPolicy","queryId","generateQueryId","opDef","queryName","removeQuery","getCurrentResult","saveAsLastResult","getLastResult","networkStatus","hasForcedResolvers","getDiff","partial","partialRefetch","logMissingFieldErrors","updateLastResult","isDifferentFromLastResult","newResult","getLast","variablesMustMatch","getLastError","resetLastResults","resetQueryStoreErrors","resetErrors","refetch","reobserveOptions","pollInterval","queryDef","resetLastWrite","fetchMore","fetchMoreOptions","combinedOptions","qid","originalNetworkStatus","notifyOnNetworkStatusChange","updatedQuerySet","fetchQuery","fetchMoreResult","finally","reobserveCacheFirst","subscribeToMore","startGraphQLSubscription","subscriptionData","setVariables","broadcastQueries","startPolling","updatePolling","stopPolling","applyNextFetchPolicy","nextFetchPolicy","fetch","newNetworkStatus","setObservableQuery","ssrMode","pollingInfo","maybeFetch","poll","assumeImmutableResults","reobserveAsConcast","useDisposableConcast","oldVariables","oldFetchPolicy","mergedOptions","concast","fromLink","reportResult","reportError","lastError","errorResult","hasObservers","stopQuery","obsQuery","debug","isSelectionNode","LocalState","resolvers","fragmentMatcher","selectionsToResolveCache","addResolvers","setFragmentMatcher","resolverGroup","setResolvers","getResolvers","runResolvers","remoteResult","onlyRunForcedResolvers","resolveDocument","localResult","getFragmentMatcher","clientQuery","serverQuery","prepareContext","getCacheKey","addExportedVariables","buildRootValueFromCache","exportedVariables","shouldForceResolvers","forceResolvers","Directive","rootValue","mainDefinition","selectionsToResolve","definitionOperation","defaultOperationType","execContext","collectSelectionsToResolve","resolveSelectionSet","isClientFieldDescendant","resultsToMerge","resolveField","fieldResult","fragmentResult","aliasedFieldName","aliasUsed","defaultResult","resultPromise","resolverType","resolverMap","directive","isClientField","resolveSubSelectedArray","isSingleASTNode","collectByDefinition","definitionNode","matches_1","___","ancestors","FragmentSpread","spread","fragmentSelections","destructiveMethodCounts","wrapDestructiveCacheMethod","methodName","cancelNotifyTimeout","QueryInfo","lastRequestId","stopped","observableQuery","networkError","getDiffOptions","updateWatch","oq","updateLastDiff","setDiff","oldDiff","notifyTimeout","oqListener","shouldNotify","watchOptions","watcher","lastWatch","lastWrite","shouldWrite","dmCount","markResult","cacheWriteBehavior","mergedData","shouldWriteResult","errorPolicy","diffOptions","markReady","markError","ignoreErrors","writeWithErrors","QueryManager","queryDeduplication","onBroadcast","clientAwareness","localState","queries","fetchCancelFns","transformCache","queryIdCounter","requestIdCounter","mutationIdCounter","inFlightLinkObservables","mutationStore","_info","stopQueryNoBroadcast","cancelPendingFetches","mutate","mutation","optimisticResponse","updateQueries","refetchQueries","awaitRefetchQueries","updateWithProxyFn","onQueryUpdated","keepRootFields","mutationId","hasClientExports","mutationStoreValue","generateMutationId","getVariables","markMutationOptimistic","getObservableFromLink","storeResult","markMutationResult","cacheWrites","skipCache","asQuery","updateQueries_1","updater","currentQueryResult","nextQueryResult","mutationResult","queryVariables","results_1","updateCache","isFinalResult","include","fetchQueryObservable","getQueryStore","transformed","noConnection","cacheEntry_1","defaultVars","generateRequestId","stopQueryInStore","stopQueryInStoreNoBroadcast","clearStore","getObservableQueries","queryNamesAndDocs","legacyQueryOptions","getQuery","included","nameOrDoc","reFetchObservableQueries","includeStandby","observableQueryPromises","makeObservable","hasErrors","hasProtocolErrors","protocolErrors","observablePromise_1","getLocalState","deduplication","inFlightLinkObservables_1","operationName","forceFetch","byVariables_1","varJson_1","of","getResultsFromLink","requestId","linkDocument","aqr","fetchConcastWithInfo","containsDataFromLink","defaults","normalized","fromVariables","sourcesWithInfo","fetchQueryByPolicy","cleanupCancelFn","includedQueriesById","refetchWritePolicy","oldNetworkStatus","readCache","resultsFromCache","fromData","resolved","resultsFromLink","hasSuggestedDevtools","ApolloClient","resetStoreCallbacks","clearStoreCallbacks","uri","credentials","ssrForceFetchDelay","connectToDevTools","__APOLLO_CLIENT__","typeDefs","clientAwarenessName","clientAwarenessVersion","HttpLink","disableNetworkFetches","resetStore","__APOLLO_DEVTOOLS_GLOBAL_HOOK__","nav","ua","devToolsHookCb","mutations","dataWithOptimisticResults","__actionHookForDevTools","__requestRaw","onResetStore","onClearStore","serializedState","setLocalStateFragmentMatcher","setLink","newLink","NetworkStatus","isNetworkRequestInFlight","PROTOCOL_ERRORS_SYMBOL","graphQLResultHasProtocolErrors","isApolloError","ApolloError","clientErrors","extraInfo","passthrough","forward","toLink","isTerminating","request","LinkError","leftLink","rightLink","starting","createOperation","transformedOperation","transformOperation","OPERATION_FIELDS","validateOperation","firstLink","nextLink","setOnError","serializeFetchParameter","serialized","nodeStreamIterator","cleanup","waiting","onData","chunk","shiftedArr","onEnd","asyncIterator","readerIterator","responseIterator","isAsyncIterableIterator","getReader","isReadableStream","isStreamableBlob","arrayBuffer","isBlob","promiseIterator","pipe","isNodeReadableStream","throwServerError","statusCode","parseHeaders","headerText","headersInit","name_1","parseJsonBody","bodyText","getResult","handleError","readJsonBody","operations","escapedRegExp","escapedReplacer","escapeSequences","printDocASTReducer","Name","Variable","Document","OperationDefinition","varDefs","VariableDefinition","SelectionSet","Field","argsLine","Argument","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","isBlockString","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","hasMultilineItems","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","maybeArray","_maybeArray$filter$jo","maybeString","_maybeArray$some","fallbackHttpConfig","http","includeQuery","includeExtensions","preserveHeaderCase","defaultPrinter","printer","selectHttpOptionsAndBodyInternal","configs","normalizedHeaders_1","headerData","originalName","normalizedHeaders","removeDuplicateHeaders","fromError","backupFetch","createHttpLink","linkOptions","preferredFetch","useGETForQueries","includeUnusedVariables","requestOptions","fetcher","checkFetcher","linkConfig","fetchOptions","chosenURI","fallbackURI","contextURI","selectURI","clientAwarenessHeaders","contextHeaders","contextConfig","unusedNames_1","signal","AbortController","createSignalIfSupported","_controller","isSubscription","hasDefer","acceptHeader","queryParams","addQueryParam","serializedVariables","serializedExtensions","preFragment","fragmentStart","queryParamsPrefix","newURI","rewriteURIForGET","ctype","decoder","contentType","boundaryVal","boundary","running","searchFrom","contentType_1","TextDecoder","decode","readMultipartBody","contextKey","getApolloContext","ApolloProvider","ApolloContext","useApolloClient","override","EAGER_METHODS","useLazyQuery","execOptionsRef","optionsRef","queryRef","internalState","useQueryResult","useQuery","skip","getDefaultFetchPolicy","eagerMethods","_loop_1","EAGER_METHODS_1","executeOptions","executeQuery","queryResult","useMutation","Mutation","setResult","baseOptions","ignoreResults","clientOptions","onCompleted","result_2","didWarnUncachedGetSnapshot","useSyncExternalStore","getSnapshot","getServerSnapshot","checkIfSnapshotChanged","useInternalState","stateRef","InternalState","setTick","ssrDisabledResult","skipStandbyResult","toQueryResultCache","Query","previousResult","previousData","watchQueryOptions","createWatchQueryOptions","queryHookOptions","getObsQueryOptions","toQueryResult","renderPromises","useOptions","useObservableQuery","onNext","unsafeHandlePartialRefetch","currentWatchQueryOptions","ssr","globalDefaults","otherOptions","getSSRObservable","obsQueryFields","ssrAllowed","registerSSRObservable","addObservableQueryPromise","nextResult","handleErrorOrCompleted","error_1","toApolloError","resultWithoutPartial","DocumentType","Subscription","verifyDocumentType","cached","requiredOperationName","usedOperationName","isNonEmptyArray","canUseWeakMap","product","canUseWeakSet","canUseSymbol","canUseAsyncIteratorSymbol","usingJSDOM","canUseLayoutEffect","cloneDeepHelper","copy_1","copy_2","objects","isExecutionPatchIncrementalResult","isExecutionPatchResult","isExecutionPatchInitialResult","isApolloPayloadResult","mergeIncrementalData","prevResult","parent_1","prefixCounts","deepFreeze","isFrozen","shallowFreeze","mergeDeepArray","DeepMerger","defaultReconciler","reconciler","pastCopies","targetValue","shallowCopyForMerge","isNonNullObject","genericMessage","InvariantError","framesToPop","verbosityLevels","verbosityLevel","wrapConsoleMethod","maybe","thunk","GLOBAL_KEY","safeGlobal","needToRemove","process","env","NODE_ENV","DEV","shouldInclude","isInclusionDirective","directiveArguments","directiveName","ifArgument","ifValue","getInclusionDirectives","evaledValue","hasDirectives","nameSet","uniqueCount","getFragmentQueryDocument","actualFragmentName","createFragmentMap","symTable","getFragmentFromSelection","checkDocument","getOperationDefinition","getOperationName","getFragmentDefinitions","getQueryDefinition","getFragmentDefinition","fragmentDef","getMainDefinition","queryDoc","getDefaultValues","defaultValues","defs","makeReference","isDocumentNode","valueToObjectRepresentation","argObj","isIntValue","isFloatValue","isBooleanValue","isStringValue","isObjectValue","nestedArgObj_1","isVariable","variableValue","isListValue","listValue","nestedArgArrayObj","isEnumValue","isNullValue","storeKeyNameFromField","directivesObj","getStoreKeyName","KNOWN_DIRECTIVES","filterKeys","filteredArgs_1","completeFieldName","stringifiedArgs","stringifyReplacer","argumentsObjectFromField","argObj_1","resultKeyNameFromField","getTypenameFromResult","isField","fragments_1","isInlineFragment","TYPENAME_FIELD","isEmpty","nullIfDocIsEmpty","getDirectiveMatcher","tests","makeInUseGetterFunction","defaultKey","inUse","fragmentSpreads","removeDirectivesFromDocument","getInUseByOperationName","getInUseByFragmentName","getInUse","operationCount","directiveMatcher","hasRemoveDirective","shouldRemoveField","nodeDirectives","originalFragmentDefsByPath","firstVisitMadeChanges","fieldOrInlineFragmentVisitor","docWithoutDirectiveSubtrees","_parent","removed","populateTransitiveVars","transitiveVars","childFragmentName","allFragmentNamesUsed","enterVisitor","usedVariableNames_1","varDef","addTypenameToDocument","connectionRemoveConfig","willRemove","removeConnectionDirectiveFromDocument","buildQueryFromSelectionSet","removeClientSetsFromDocument","_objectDestructuringEmpty","MISSING_VALUE","ignored","globalKey","globalHost","Slot","slots","static","saved","noContext","fnToStr","previousComparisons","equal","aTag","previouslyCompared","aKeys","definedKeys","bKeys","keyCount","aIterator","isMap","Uint8Array","byteLength","aCode","full","nativeCodeSuffix","isDefinedKey","bSet","peekArray","band","ordinal","ordinalRange","paddingInner","paddingOuter","pointish","initRange","initInterpolator","InternMap","keyof","_intern","intern_get","intern_set","intern_delete","implicit","epsilon","tauEpsilon","strings","Path","digits","_append","appendRound","quadraticCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","a0","ccw","cw","da","withPath","RangeError","devAssert","MAX_ARRAY_LENGTH","MAX_RECURSIVE_DEPTH","inspect","formatValue","seenValues","previouslySeenValues","isJSONable","jsonValue","remaining","formatArray","getObjectTag","formatObject","formatObjectValue","Location","Token","QueryDocumentKeys","kindValues","isNode","maybeNode","maybeKind","OperationTypeNode","dedentBlockStringLines","_firstNonEmptyLine2","commonIndent","firstNonEmptyLine","lastNonEmptyLine","_firstNonEmptyLine","leadingWhitespace","printBlockString","escapedValue","isSingleLine","forceLeadingNewLine","hasTrailingTripleQuotes","hasTrailingQuote","hasTrailingSlash","forceTrailingNewline","printAsMultipleLines","skipLeadingNewLine","isWhiteSpace","isDigit","isLetter","isNameStart","isNameContinue","Kind","_value$constructor","stringifiedValue","Source","isSource","BREAK","visit","visitor","visitorKeys","enterLeaveMap","getEnterLeaveForKind","inArray","edits","isEdited","editOffset","editKey","editValue","arrayKey","_enterLeaveMap$get","_enterLeaveMap$get2","visitFn","_node$kind","kindVisitor","__spreadArray","pack","_createForOfIteratorHelperLoose","allowArrayLike","hasSymbols","hasSymbol","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getSpecies","ctor","Observable","isObservable","hostReportError","enqueue","cleanupSubscription","_cleanup","closeSubscription","_queue","notifySubscription","onNotify","flushSubscription","subscriber","subscriptionObserver","SubscriptionObserver","_proto2","_subscriber","_proto3","hasSeed","startNext","flatMap","_this6","completeIfDone","_step","_iterator"],"sourceRoot":""}