{"version":3,"file":"index.full.min.mjs","sources":["../../../packages/vue-cesium/version.ts","../../../packages/utils/config.ts","../../../node_modules/.pnpm/@vue+shared@3.2.30/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_freeGlobal.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_root.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Symbol.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getRawTag.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_objectToString.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetTag.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObjectLike.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isSymbol.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayMap.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseToString.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_trimmedEndIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseTrim.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObject.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toNumber.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toFinite.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toInteger.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/identity.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isFunction.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_coreJsData.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isMasked.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_toSource.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsNative.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getValue.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getNative.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_WeakMap.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseCreate.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_apply.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_copyArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_shortOut.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/constant.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_defineProperty.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseSetToString.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setToString.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayEach.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFindIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsNaN.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_strictIndexOf.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIndexOf.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayIncludes.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseAssignValue.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/eq.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assignValue.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_copyObject.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_overRest.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseRest.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isLength.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArrayLike.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isPrototype.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseTimes.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsArguments.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArguments.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/stubFalse.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isBuffer.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsTypedArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseUnary.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nodeUtil.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isTypedArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayLikeKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_overArg.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeKeysIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseKeysIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keysIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isKey.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeCreate.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashClear.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Hash.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheClear.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assocIndexOf.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_ListCache.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Map.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheClear.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isKeyable.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getMapData.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_MapCache.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/memoize.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_memoizeCapped.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stringToPath.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toString.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_castPath.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_toKey.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/get.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayPush.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isFlattenable.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFlatten.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getPrototype.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseSlice.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_castSlice.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hasUnicode.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_asciiToArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_unicodeToArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stringToArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createCaseFirst.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/upperFirst.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/capitalize.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayReduce.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_basePropertyOf.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_deburrLetter.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/deburr.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_asciiWords.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hasUnicodeWord.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_unicodeWords.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/words.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createCompounder.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/camelCase.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackClear.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackDelete.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackGet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Stack.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseAssign.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseAssignIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cloneBuffer.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayFilter.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/stubArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getSymbols.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_copySymbols.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getSymbolsIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_copySymbolsIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetAllKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getAllKeys.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getAllKeysIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_DataView.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Promise.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Set.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getTag.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_initCloneArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Uint8Array.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cloneArrayBuffer.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cloneDataView.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cloneRegExp.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cloneSymbol.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cloneTypedArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_initCloneByTag.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_initCloneObject.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsMap.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isMap.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isSet.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseClone.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/cloneDeep.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setCacheAdd.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setCacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_SetCache.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arraySome.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cacheHas.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalArrays.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapToArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setToArray.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalByTag.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalObjects.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqualDeep.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqual.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsMatch.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isStrictComparable.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getMatchData.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_matchesStrictComparable.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMatches.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseHasIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hasPath.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/hasIn.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMatchesProperty.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseProperty.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_basePropertyDeep.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/property.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIteratee.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/now.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/debounce.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArrayLikeObject.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayIncludesWith.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseDifference.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/last.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/differenceBy.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/findIndex.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_parent.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isNull.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isUndefined.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseUnset.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_basePullAt.js","../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/remove.js","../../../packages/utils/util.ts","../../../packages/composables/use-global-config/index.ts","../../../packages/composables/private/use-log.ts","../../../packages/vue-cesium/make-installer.ts","../../../node_modules/.pnpm/mitt@3.0.0/node_modules/mitt/dist/mitt.mjs","../../../packages/utils/merge-descriptors.ts","../../../packages/utils/private/vm.ts","../../../packages/utils/cesium-helpers.ts","../../../packages/utils/cesium-props.ts","../../../packages/locale/lang/zh-hans.ts","../../../packages/composables/use-locale/index.ts","../../../packages/composables/use-events/index.ts","../../../packages/composables/use-common/index.ts","../../../packages/composables/use-datasources/index.ts","../../../packages/composables/use-geometries/index.ts","../../../packages/composables/use-graphics/index.ts","../../../packages/composables/use-handler/index.ts","../../../packages/composables/use-primitive-collection-items/index.ts","../../../packages/composables/use-primitive-collections/index.ts","../../../packages/composables/use-primitives/index.ts","../../../packages/utils/coordtransform.ts","../../../packages/composables/use-providers/index.ts","../../../packages/composables/use-vue-cesium/index.ts","../../../packages/components/viewer/src/defaultProps.ts","../../../packages/components/viewer/src/loadUtil.ts","../../../packages/components/viewer/src/useViewer.ts","../../../packages/components/viewer/src/events.ts","../../../packages/composables/private/use-size.ts","../../../packages/utils/private/render.ts","../../../packages/components/ui/icon/index.ts","../../../packages/components/ui/spinner/use-spinner.ts","../../../packages/components/ui/spinner/spinner-ball.ts","../../../packages/components/ui/spinner/spinner-bars.ts","../../../packages/components/ui/spinner/spinner-dots.ts","../../../packages/components/ui/spinner/spinner-gears.ts","../../../packages/components/ui/spinner/spinner-hourglass.ts","../../../packages/components/ui/spinner/spinner-ios.ts","../../../packages/components/ui/spinner/spinner-orbit.ts","../../../packages/components/ui/spinner/spinner-oval.ts","../../../packages/components/ui/spinner/spinner-puff.ts","../../../packages/components/ui/spinner/spinner-rings.ts","../../../packages/components/ui/spinner/spinner-tail.ts","../../../packages/components/ui/spinner/spinner.ts","../../../packages/utils/private/dom.ts","../../../packages/utils/private/event.ts","../../../packages/utils/private/key-composition.ts","../../../packages/utils/private/throttle.ts","../../../packages/directives/ripple/index.ts","../../../packages/composables/private/use-align.ts","../../../packages/components/ui/btn/use-btn.ts","../../../packages/utils/platform.ts","../../../packages/utils/private/touch.ts","../../../packages/components/ui/btn/index.ts","../../../packages/utils/private/selection.ts","../../../packages/composables/private/use-anchor.ts","../../../packages/composables/private/use-scroll-target.ts","../../../packages/composables/private/use-model-toggle.ts","../../../packages/utils/private/global-nodes.ts","../../../packages/utils/private/portal.ts","../../../packages/composables/private/use-portal.ts","../../../packages/composables/private/use-transition.ts","../../../packages/composables/private/use-tick.ts","../../../packages/composables/private/use-timeout.ts","../../../packages/utils/private/scroll.ts","../../../packages/utils/private/position-engine.ts","../../../packages/components/ui/tooltip/index.ts","../../../packages/utils/private/format.ts","../../../packages/components/ui/ajax-bar/index.ts","../../../packages/composables/private/use-dark.ts","../../../packages/components/ui/skeleton/index.ts","../../../packages/components/ui/fab/use-fab.ts","../../../packages/components/ui/fab/defaultProps.ts","../../../packages/components/ui/fab/fab.ts","../../../packages/components/ui/fab/defaultPropsAction.ts","../../../packages/components/ui/fab/fab-action.ts","../../../packages/components/ui/index.ts","../../../packages/utils/emits.ts","../../../packages/components/viewer/src/index.ts","../../../packages/components/viewer/index.ts","../../../packages/composables/private/use-position.ts","../../../packages/components/controls/compass/defaultProps.ts","../../../packages/components/controls/compass/CameraFlightPath.ts","../../../packages/components/controls/compass/use-compass.ts","../../../packages/components/controls/compass/index.ts","../../../packages/components/controls/zoom-control/defaultProps.ts","../../../packages/components/controls/zoom-control/use-zoom-control.ts","../../../packages/components/controls/zoom-control/index.ts","../../../packages/components/controls/print/print-view.ts","../../../packages/components/controls/print/createPrintView.ts","../../../packages/components/controls/print/defaultProps.ts","../../../packages/components/controls/print/printWindow.ts","../../../packages/components/controls/print/index.ts","../../../node_modules/.pnpm/@amap+amap-jsapi-loader@1.0.1/node_modules/@amap/amap-jsapi-loader/dist/index.js","../../../packages/components/controls/my-location/defaultProps.ts","../../../packages/components/controls/my-location/index.ts","../../../packages/components/controls/status-bar/prettifyCoordinates.ts","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/global.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/constants/values.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/constants/PrimeMeridian.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/constants/units.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/match.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projString.js","../../../node_modules/.pnpm/wkt-parser@1.3.1/node_modules/wkt-parser/parser.js","../../../node_modules/.pnpm/wkt-parser@1.3.1/node_modules/wkt-parser/process.js","../../../node_modules/.pnpm/wkt-parser@1.3.1/node_modules/wkt-parser/index.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/defs.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/parseCode.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/extend.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/msfnz.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/sign.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/adjust_lon.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/tsfnz.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/phi2z.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/merc.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/longlat.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/constants/Ellipsoid.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/deriveConstants.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/constants/Datum.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/datum.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/nadgrid.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/Proj.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/datumUtils.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/datum_transform.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/adjust_axis.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/toPoint.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/checkSanity.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/transform.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/core.js","../../../node_modules/.pnpm/mgrs@1.0.0/node_modules/mgrs/mgrs.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/Point.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/pj_enfn.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/pj_mlfn.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/pj_inv_mlfn.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/tmerc.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/sinh.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/hypot.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/log1py.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/asinhy.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/gatg.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/clens.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/cosh.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/clens_cmplx.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/etmerc.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/adjust_zone.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/utm.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/srat.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/gauss.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/sterea.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/stere.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/somerc.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/omerc.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/lcc.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/krovak.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/mlfn.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/e0fn.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/e1fn.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/e2fn.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/e3fn.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/gN.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/adjust_lat.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/imlfn.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/cass.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/qsfnz.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/laea.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/asinz.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/aea.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/gnom.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/common/iqsfnz.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/cea.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/eqc.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/poly.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/nzmg.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/mill.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/sinu.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/moll.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/eqdc.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/vandg.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/aeqd.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/ortho.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/qsc.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/robin.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/geocent.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/projections/tpers.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/projs.js","../../../node_modules/.pnpm/proj4@2.7.5/node_modules/proj4/lib/index.js","../../../packages/components/controls/status-bar/prettifyProjection.ts","../../../packages/components/controls/status-bar/EarthGravityModel1996.ts","../../../packages/components/controls/status-bar/MouseCoords.ts","../../../packages/components/controls/status-bar/defaultProps.ts","../../../packages/components/controls/status-bar/index.ts","../../../packages/components/controls/distance-legend/defaultProps.ts","../../../packages/components/controls/distance-legend/index.ts","../../../packages/components/controls/navigation/defaultProps.ts","../../../packages/components/controls/navigation/index.ts","../../../packages/components/controls/navigation-sm/use-compass.ts","../../../packages/components/controls/navigation-sm/compass-sm.ts","../../../packages/components/controls/navigation-sm/use-zoom-control.ts","../../../packages/components/controls/navigation-sm/zoom-control-sm.ts","../../../packages/components/controls/navigation-sm/index.ts","../../../packages/components/controls/vc-overview-map/index.ts","../../../packages/components/controls/selection-indicator/Feature.ts","../../../packages/components/controls/selection-indicator/PickedFeatures.ts","../../../packages/components/controls/selection-indicator/use-selection-indicatior.ts","../../../packages/components/controls/selection-indicator/index.ts","../../../packages/components/controls/index.ts","../../../packages/shared/src/VisibilityState.ts","../../../packages/shared/src/DrawStatus.ts","../../../packages/shared/src/MeasureUnits.ts","../../../packages/shared/src/PolygonPrimitive.ts","../../../packages/shared/src/DynamicOverlay.ts","../../../packages/composables/use-drawing/defaultOpts.ts","../../../packages/composables/use-drawing/props.ts","../../../packages/components/measurements/src/defaultProps.ts","../../../packages/components/overlays/html/index.ts","../../../node_modules/.pnpm/@zouyaoji+heatmap.js@2.0.8/node_modules/@zouyaoji/heatmap.js/build/heatmap.js","../../../packages/components/entity/src/index.ts","../../../packages/components/entity/index.ts","../../../packages/components/imagery-layer/src/defaultProps.ts","../../../packages/components/imagery-layer/src/index.ts","../../../packages/components/imagery-layer/index.ts","../../../packages/components/primitives/classification/index.ts","../../../packages/components/primitives/ground/index.ts","../../../packages/components/primitives/ground-polyline/index.ts","../../../packages/components/primitives/model/index.ts","../../../packages/components/primitives/primitive/index.ts","../../../packages/components/primitives/tileset/index.ts","../../../packages/components/primitives/particle/index.ts","../../../packages/components/primitives/index.ts","../../../packages/components/overlays/heatmap/index.ts","../../../packages/components/overlays/echarts/index.ts","../../../packages/components/overlays/wind/util.ts","../../../packages/components/overlays/wind/glsl/calculateSpeed.frag.ts","../../../packages/components/overlays/wind/glsl/updatePosition.frag.ts","../../../packages/components/overlays/wind/glsl/postProcessingPosition.frag.ts","../../../packages/components/overlays/wind/customPrimitive.ts","../../../packages/components/overlays/wind/particlesComputing.ts","../../../packages/components/overlays/wind/glsl/segmentDraw.vert.ts","../../../packages/components/overlays/wind/glsl/segmentDraw.frag.ts","../../../packages/components/overlays/wind/glsl/fullscreen.vert.ts","../../../packages/components/overlays/wind/glsl/trailDraw.frag.ts","../../../packages/components/overlays/wind/glsl/screenDraw.frag.ts","../../../packages/components/overlays/wind/particlesRendering.ts","../../../packages/components/overlays/wind/particleSystem.ts","../../../packages/components/overlays/wind/index.ts","../../../packages/components/overlays/dynamic/index.ts","../../../packages/components/overlays/index.ts","../../../packages/components/primitive-collections/billboard-collection/index.ts","../../../packages/components/primitive-collections/billboard/index.ts","../../../packages/components/primitive-collections/cloud/index.ts","../../../packages/components/primitive-collections/cloud-collection/index.ts","../../../packages/components/primitive-collections/label-collection/index.ts","../../../packages/components/primitive-collections/label/index.ts","../../../packages/components/primitive-collections/point-collection/index.ts","../../../packages/components/primitive-collections/point/index.ts","../../../packages/components/primitive-collections/polyline-collection/index.ts","../../../packages/components/primitive-collections/polyline/index.ts","../../../packages/components/primitive-collections/primitive-collection/index.ts","../../../packages/components/primitive-collections/polygon/index.ts","../../../packages/components/primitive-collections/index.ts","../../../packages/components/geometry-instance/src/index.ts","../../../packages/components/geometry-instance/index.ts","../../../packages/components/geometries/box/index.ts","../../../packages/components/geometries/box-outline/index.ts","../../../packages/components/geometries/circle/index.ts","../../../packages/components/geometries/circle-outline/index.ts","../../../packages/components/geometries/coplanar-polygon/index.ts","../../../packages/components/geometries/coplanar-polygon-outline/index.ts","../../../packages/components/geometries/corridor/index.ts","../../../packages/components/geometries/corridor-outline/index.ts","../../../packages/components/geometries/cylinder/index.ts","../../../packages/components/geometries/cylinder-outline/index.ts","../../../packages/components/geometries/ellipse/index.ts","../../../packages/components/geometries/ellipse-outline/index.ts","../../../packages/components/geometries/ellipsoid/index.ts","../../../packages/components/geometries/ellipsoid-outline/index.ts","../../../packages/components/geometries/frustum/index.ts","../../../packages/components/geometries/frustum-outline/index.ts","../../../packages/components/geometries/ground-polyline/index.ts","../../../packages/components/geometries/plane/index.ts","../../../packages/components/geometries/plane-outline/index.ts","../../../packages/components/geometries/polygon/index.ts","../../../packages/components/geometries/polygon-outline/index.ts","../../../packages/components/geometries/polyline/index.ts","../../../packages/components/geometries/polyline-volume/index.ts","../../../packages/components/geometries/polyline-volume-outline/index.ts","../../../packages/components/geometries/rectangle/index.ts","../../../packages/components/geometries/rectangle-outline/index.ts","../../../packages/components/geometries/simple-polyline/index.ts","../../../packages/components/geometries/sphere/index.ts","../../../packages/components/geometries/sphere-outline/index.ts","../../../packages/components/geometries/wall/index.ts","../../../packages/components/geometries/wall-outline/index.ts","../../../packages/components/geometries/index.ts","../../../packages/components/post-processes/post-process-stage/defaultProps.ts","../../../packages/components/post-processes/post-process-stage/index.ts","../../../packages/shared/materials/shaders/RadarScan.ts","../../../packages/components/post-processes/post-process-stage-scan/use-radar-scan.ts","../../../packages/shared/materials/shaders/CircleScan.ts","../../../packages/components/post-processes/post-process-stage-scan/use-circle-scan.ts","../../../packages/components/post-processes/post-process-stage-scan/index.ts","../../../packages/components/post-processes/post-process-stage-collection/index.ts","../../../packages/components/post-processes/index.ts","../../../packages/composables/use-drawing/use-drawing-action.ts","../../../packages/composables/use-drawing/use-drawing-segment.ts","../../../packages/components/measurements/src/distance/index.ts","../../../packages/composables/use-drawing/use-drawing-polyline.ts","../../../packages/components/measurements/src/polyline/index.ts","../../../packages/components/measurements/src/horizontal/index.ts","../../../packages/components/measurements/src/vertical/index.ts","../../../packages/components/measurements/src/height/index.ts","../../../packages/composables/use-drawing/use-drawing-point.ts","../../../packages/components/measurements/src/point/index.ts","../../../packages/components/measurements/src/area/index.ts","../../../packages/components/measurements/src/rectangle/index.ts","../../../packages/components/measurements/src/regular/index.ts","../../../packages/composables/use-drawing/use-drawing-fab.ts","../../../packages/components/measurements/src/index.ts","../../../packages/components/measurements/index.ts","../../../packages/components/drawings/src/defaultProps.ts","../../../packages/components/drawings/src/pin/index.ts","../../../packages/components/drawings/src/point/index.ts","../../../packages/components/drawings/src/polyline/index.ts","../../../packages/components/drawings/src/polygon/index.ts","../../../packages/components/drawings/src/regular/index.ts","../../../packages/components/drawings/src/rectangle/index.ts","../../../packages/components/drawings/src/index.ts","../../../packages/components/drawings/index.ts","../../../packages/components/providers/arcgis/imagery.ts","../../../packages/components/providers/baidu/Point.ts","../../../packages/components/providers/baidu/Pixel.ts","../../../packages/components/providers/baidu/BaiduMapMercatorProjection.ts","../../../packages/components/providers/baidu/BaiduMapTilingScheme.ts","../../../packages/components/providers/baidu/BaiduMapImageryProvider.ts","../../../packages/components/providers/baidu/index.ts","../../../packages/components/providers/bingmaps/index.ts","../../../packages/components/providers/google-earth/index.ts","../../../packages/components/providers/grid/index.ts","../../../packages/components/providers/ion/index.ts","../../../packages/components/providers/mapbox-style/index.ts","../../../packages/components/providers/osm/index.ts","../../../packages/components/providers/single-tile/index.ts","../../../packages/components/providers/supermap/IndexedDBScheduler.ts","../../../packages/components/providers/supermap/SuperMapImageryProvider.ts","../../../packages/components/providers/supermap/index.ts","../../../packages/components/providers/tianditu/TiandituMapsStyle.ts","../../../packages/components/providers/tianditu/TiandituImageryProvider.ts","../../../packages/components/providers/tianditu/imagery.ts","../../../packages/components/providers/tile-coordinates/index.ts","../../../packages/components/providers/tile-map-service/index.ts","../../../packages/components/providers/tiled-cache/index.ts","../../../packages/components/providers/url-template/index.ts","../../../packages/components/providers/wms/index.ts","../../../packages/components/providers/wmts/index.ts","../../../packages/components/providers/cesium-terrain/index.ts","../../../packages/components/providers/arcgis/terrain.ts","../../../packages/components/providers/vr-theworld/index.ts","../../../packages/components/providers/tianditu/terrain.ts","../../../packages/components/providers/index.ts","../../../packages/components/datasources/custom/index.ts","../../../packages/components/datasources/czml/index.ts","../../../packages/components/datasources/geojson/index.ts","../../../packages/components/datasources/kml/index.ts","../../../packages/components/datasources/index.ts","../../../packages/components/graphics/billboard/index.ts","../../../packages/components/graphics/box/index.ts","../../../packages/components/graphics/corridor/index.ts","../../../packages/components/graphics/cylinder/index.ts","../../../packages/components/graphics/ellipse/index.ts","../../../packages/components/graphics/ellipsoid/index.ts","../../../packages/components/graphics/label/index.ts","../../../packages/components/graphics/model/index.ts","../../../packages/components/graphics/path/index.ts","../../../packages/components/graphics/plane/index.ts","../../../packages/components/graphics/point/index.ts","../../../packages/components/graphics/polygon/index.ts","../../../packages/components/graphics/polyline/index.ts","../../../packages/components/graphics/polylineVolume/index.ts","../../../packages/components/graphics/rectangle/index.ts","../../../packages/components/graphics/tileset/index.ts","../../../packages/components/graphics/wall/index.ts","../../../packages/components/graphics/index.ts","../../../packages/components/config-provider/src/index.ts","../../../packages/components/config-provider/index.ts","../../../packages/components/analyses/flood/index.ts","../../../packages/components/analyses/src/defaultProps.ts","../../../packages/components/analyses/src/sightline/index.ts","../../../packages/components/analyses/src/viewshed/fragmentShader.ts","../../../packages/components/analyses/src/viewshed/index.ts","../../../packages/components/analyses/src/index.ts","../../../packages/components/analyses/index.ts","../../../packages/vue-cesium/component.ts","../../../packages/vue-cesium/defaults.ts","../../../packages/vue-cesium/index.ts"],"sourcesContent":["export const version = '3.0.10'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-02-09 23:47:58\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\config.ts\n */\nimport type { Language } from '@vue-cesium/locale'\nimport type { InjectionKey, Ref } from 'vue'\nimport type { AnyObject } from './types'\n\nconst hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol'\nexport interface ConfigProviderContext {\n  cesiumPath?: string\n  accessToken?: string\n  locale?: Language\n  cfg?: AnyObject // for mars3d\n  __scriptPromise?: Promise<unknown>\n  __viewerUnloadingPromise?: Promise<boolean>\n}\n\nconst vcKey = hasSymbol ? Symbol('VueCesium') : 'VueCesium'\n\nconst fabKey = hasSymbol ? Symbol('_vc_f_') : '_vc_f_'\n\nconst measurementKey = hasSymbol ? Symbol('_vc_measurement_') : '_vc_measurement_'\n\nexport { vcKey, fabKey, measurementKey }\n\nexport const configProviderContextKey: InjectionKey<Ref<ConfigProviderContext>> = Symbol()\n","/**\r\n * Make a map and return a function for checking if a key\r\n * is in that map.\r\n * IMPORTANT: all calls of this function must be prefixed with\r\n * \\/\\*#\\_\\_PURE\\_\\_\\*\\/\r\n * So that rollup can tree-shake them if necessary.\r\n */\r\nfunction makeMap(str, expectsLowerCase) {\r\n    const map = Object.create(null);\r\n    const list = str.split(',');\r\n    for (let i = 0; i < list.length; i++) {\r\n        map[list[i]] = true;\r\n    }\r\n    return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\r\n}\n\n/**\r\n * dev only flag -> name mapping\r\n */\r\nconst PatchFlagNames = {\r\n    [1 /* TEXT */]: `TEXT`,\r\n    [2 /* CLASS */]: `CLASS`,\r\n    [4 /* STYLE */]: `STYLE`,\r\n    [8 /* PROPS */]: `PROPS`,\r\n    [16 /* FULL_PROPS */]: `FULL_PROPS`,\r\n    [32 /* HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,\r\n    [64 /* STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,\r\n    [128 /* KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,\r\n    [256 /* UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,\r\n    [512 /* NEED_PATCH */]: `NEED_PATCH`,\r\n    [1024 /* DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,\r\n    [2048 /* DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,\r\n    [-1 /* HOISTED */]: `HOISTED`,\r\n    [-2 /* BAIL */]: `BAIL`\r\n};\n\n/**\r\n * Dev only\r\n */\r\nconst slotFlagsText = {\r\n    [1 /* STABLE */]: 'STABLE',\r\n    [2 /* DYNAMIC */]: 'DYNAMIC',\r\n    [3 /* FORWARDED */]: 'FORWARDED'\r\n};\n\nconst GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +\r\n    'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +\r\n    'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';\r\nconst isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\r\nfunction generateCodeFrame(source, start = 0, end = source.length) {\r\n    // Split the content into individual lines but capture the newline sequence\r\n    // that separated each line. This is important because the actual sequence is\r\n    // needed to properly take into account the full line length for offset\r\n    // comparison\r\n    let lines = source.split(/(\\r?\\n)/);\r\n    // Separate the lines and newline sequences into separate arrays for easier referencing\r\n    const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\r\n    lines = lines.filter((_, idx) => idx % 2 === 0);\r\n    let count = 0;\r\n    const res = [];\r\n    for (let i = 0; i < lines.length; i++) {\r\n        count +=\r\n            lines[i].length +\r\n                ((newlineSequences[i] && newlineSequences[i].length) || 0);\r\n        if (count >= start) {\r\n            for (let j = i - range; j <= i + range || end > count; j++) {\r\n                if (j < 0 || j >= lines.length)\r\n                    continue;\r\n                const line = j + 1;\r\n                res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}|  ${lines[j]}`);\r\n                const lineLength = lines[j].length;\r\n                const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;\r\n                if (j === i) {\r\n                    // push underline\r\n                    const pad = start - (count - (lineLength + newLineSeqLength));\r\n                    const length = Math.max(1, end > count ? lineLength - pad : end - start);\r\n                    res.push(`   |  ` + ' '.repeat(pad) + '^'.repeat(length));\r\n                }\r\n                else if (j > i) {\r\n                    if (end > count) {\r\n                        const length = Math.max(Math.min(end - count, lineLength), 1);\r\n                        res.push(`   |  ` + '^'.repeat(length));\r\n                    }\r\n                    count += lineLength + newLineSeqLength;\r\n                }\r\n            }\r\n            break;\r\n        }\r\n    }\r\n    return res.join('\\n');\r\n}\n\n/**\r\n * On the client we only need to offer special cases for boolean attributes that\r\n * have different names from their corresponding dom properties:\r\n * - itemscope -> N/A\r\n * - allowfullscreen -> allowFullscreen\r\n * - formnovalidate -> formNoValidate\r\n * - ismap -> isMap\r\n * - nomodule -> noModule\r\n * - novalidate -> noValidate\r\n * - readonly -> readOnly\r\n */\r\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\r\nconst isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);\r\n/**\r\n * The full list is needed during SSR to produce the correct initial markup.\r\n */\r\nconst isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +\r\n    `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +\r\n    `loop,open,required,reversed,scoped,seamless,` +\r\n    `checked,muted,multiple,selected`);\r\n/**\r\n * Boolean attributes should be included if the value is truthy or ''.\r\n * e.g. `<select multiple>` compiles to `{ multiple: '' }`\r\n */\r\nfunction includeBooleanAttr(value) {\r\n    return !!value || value === '';\r\n}\r\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\r\nconst attrValidationCache = {};\r\nfunction isSSRSafeAttrName(name) {\r\n    if (attrValidationCache.hasOwnProperty(name)) {\r\n        return attrValidationCache[name];\r\n    }\r\n    const isUnsafe = unsafeAttrCharRE.test(name);\r\n    if (isUnsafe) {\r\n        console.error(`unsafe attribute name: ${name}`);\r\n    }\r\n    return (attrValidationCache[name] = !isUnsafe);\r\n}\r\nconst propsToAttrMap = {\r\n    acceptCharset: 'accept-charset',\r\n    className: 'class',\r\n    htmlFor: 'for',\r\n    httpEquiv: 'http-equiv'\r\n};\r\n/**\r\n * CSS properties that accept plain numbers\r\n */\r\nconst isNoUnitNumericStyleProp = /*#__PURE__*/ makeMap(`animation-iteration-count,border-image-outset,border-image-slice,` +\r\n    `border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,` +\r\n    `columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,` +\r\n    `grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,` +\r\n    `grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,` +\r\n    `line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,` +\r\n    // SVG\r\n    `fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,` +\r\n    `stroke-miterlimit,stroke-opacity,stroke-width`);\r\n/**\r\n * Known attributes, this is used for stringification of runtime static nodes\r\n * so that we don't stringify bindings that cannot be set from HTML.\r\n * Don't also forget to allow `data-*` and `aria-*`!\r\n * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\r\n */\r\nconst isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +\r\n    `autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +\r\n    `border,buffered,capture,challenge,charset,checked,cite,class,code,` +\r\n    `codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +\r\n    `coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +\r\n    `disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +\r\n    `formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +\r\n    `height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +\r\n    `ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +\r\n    `manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +\r\n    `open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +\r\n    `referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +\r\n    `selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +\r\n    `start,step,style,summary,tabindex,target,title,translate,type,usemap,` +\r\n    `value,width,wrap`);\r\n/**\r\n * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\r\n */\r\nconst isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +\r\n    `arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +\r\n    `baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +\r\n    `clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +\r\n    `color-interpolation-filters,color-profile,color-rendering,` +\r\n    `contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +\r\n    `descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +\r\n    `dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +\r\n    `fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +\r\n    `font-family,font-size,font-size-adjust,font-stretch,font-style,` +\r\n    `font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +\r\n    `glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +\r\n    `gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +\r\n    `horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +\r\n    `k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +\r\n    `lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +\r\n    `marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +\r\n    `mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +\r\n    `name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +\r\n    `overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +\r\n    `pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +\r\n    `pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +\r\n    `preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +\r\n    `rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +\r\n    `restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +\r\n    `specularConstant,specularExponent,speed,spreadMethod,startOffset,` +\r\n    `stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +\r\n    `strikethrough-position,strikethrough-thickness,string,stroke,` +\r\n    `stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +\r\n    `stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +\r\n    `systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +\r\n    `text-decoration,text-rendering,textLength,to,transform,transform-origin,` +\r\n    `type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +\r\n    `unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +\r\n    `v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +\r\n    `vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +\r\n    `writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +\r\n    `xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +\r\n    `xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);\n\nfunction normalizeStyle(value) {\r\n    if (isArray(value)) {\r\n        const res = {};\r\n        for (let i = 0; i < value.length; i++) {\r\n            const item = value[i];\r\n            const normalized = isString(item)\r\n                ? parseStringStyle(item)\r\n                : normalizeStyle(item);\r\n            if (normalized) {\r\n                for (const key in normalized) {\r\n                    res[key] = normalized[key];\r\n                }\r\n            }\r\n        }\r\n        return res;\r\n    }\r\n    else if (isString(value)) {\r\n        return value;\r\n    }\r\n    else if (isObject(value)) {\r\n        return value;\r\n    }\r\n}\r\nconst listDelimiterRE = /;(?![^(]*\\))/g;\r\nconst propertyDelimiterRE = /:(.+)/;\r\nfunction parseStringStyle(cssText) {\r\n    const ret = {};\r\n    cssText.split(listDelimiterRE).forEach(item => {\r\n        if (item) {\r\n            const tmp = item.split(propertyDelimiterRE);\r\n            tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\r\n        }\r\n    });\r\n    return ret;\r\n}\r\nfunction stringifyStyle(styles) {\r\n    let ret = '';\r\n    if (!styles || isString(styles)) {\r\n        return ret;\r\n    }\r\n    for (const key in styles) {\r\n        const value = styles[key];\r\n        const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\r\n        if (isString(value) ||\r\n            (typeof value === 'number' && isNoUnitNumericStyleProp(normalizedKey))) {\r\n            // only render valid values\r\n            ret += `${normalizedKey}:${value};`;\r\n        }\r\n    }\r\n    return ret;\r\n}\r\nfunction normalizeClass(value) {\r\n    let res = '';\r\n    if (isString(value)) {\r\n        res = value;\r\n    }\r\n    else if (isArray(value)) {\r\n        for (let i = 0; i < value.length; i++) {\r\n            const normalized = normalizeClass(value[i]);\r\n            if (normalized) {\r\n                res += normalized + ' ';\r\n            }\r\n        }\r\n    }\r\n    else if (isObject(value)) {\r\n        for (const name in value) {\r\n            if (value[name]) {\r\n                res += name + ' ';\r\n            }\r\n        }\r\n    }\r\n    return res.trim();\r\n}\r\nfunction normalizeProps(props) {\r\n    if (!props)\r\n        return null;\r\n    let { class: klass, style } = props;\r\n    if (klass && !isString(klass)) {\r\n        props.class = normalizeClass(klass);\r\n    }\r\n    if (style) {\r\n        props.style = normalizeStyle(style);\r\n    }\r\n    return props;\r\n}\n\n// These tag configs are shared between compiler-dom and runtime-dom, so they\r\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element\r\nconst HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +\r\n    'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +\r\n    'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +\r\n    'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +\r\n    'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +\r\n    'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +\r\n    'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +\r\n    'option,output,progress,select,textarea,details,dialog,menu,' +\r\n    'summary,template,blockquote,iframe,tfoot';\r\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element\r\nconst SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +\r\n    'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +\r\n    'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +\r\n    'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +\r\n    'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +\r\n    'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +\r\n    'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +\r\n    'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +\r\n    'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +\r\n    'text,textPath,title,tspan,unknown,use,view';\r\nconst VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';\r\n/**\r\n * Compiler only.\r\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\r\n */\r\nconst isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);\r\n/**\r\n * Compiler only.\r\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\r\n */\r\nconst isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);\r\n/**\r\n * Compiler only.\r\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\r\n */\r\nconst isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);\n\nconst escapeRE = /[\"'&<>]/;\r\nfunction escapeHtml(string) {\r\n    const str = '' + string;\r\n    const match = escapeRE.exec(str);\r\n    if (!match) {\r\n        return str;\r\n    }\r\n    let html = '';\r\n    let escaped;\r\n    let index;\r\n    let lastIndex = 0;\r\n    for (index = match.index; index < str.length; index++) {\r\n        switch (str.charCodeAt(index)) {\r\n            case 34: // \"\r\n                escaped = '&quot;';\r\n                break;\r\n            case 38: // &\r\n                escaped = '&amp;';\r\n                break;\r\n            case 39: // '\r\n                escaped = '&#39;';\r\n                break;\r\n            case 60: // <\r\n                escaped = '&lt;';\r\n                break;\r\n            case 62: // >\r\n                escaped = '&gt;';\r\n                break;\r\n            default:\r\n                continue;\r\n        }\r\n        if (lastIndex !== index) {\r\n            html += str.slice(lastIndex, index);\r\n        }\r\n        lastIndex = index + 1;\r\n        html += escaped;\r\n    }\r\n    return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\r\n}\r\n// https://www.w3.org/TR/html52/syntax.html#comments\r\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\r\nfunction escapeHtmlComment(src) {\r\n    return src.replace(commentStripRE, '');\r\n}\n\nfunction looseCompareArrays(a, b) {\r\n    if (a.length !== b.length)\r\n        return false;\r\n    let equal = true;\r\n    for (let i = 0; equal && i < a.length; i++) {\r\n        equal = looseEqual(a[i], b[i]);\r\n    }\r\n    return equal;\r\n}\r\nfunction looseEqual(a, b) {\r\n    if (a === b)\r\n        return true;\r\n    let aValidType = isDate(a);\r\n    let bValidType = isDate(b);\r\n    if (aValidType || bValidType) {\r\n        return aValidType && bValidType ? a.getTime() === b.getTime() : false;\r\n    }\r\n    aValidType = isArray(a);\r\n    bValidType = isArray(b);\r\n    if (aValidType || bValidType) {\r\n        return aValidType && bValidType ? looseCompareArrays(a, b) : false;\r\n    }\r\n    aValidType = isObject(a);\r\n    bValidType = isObject(b);\r\n    if (aValidType || bValidType) {\r\n        /* istanbul ignore if: this if will probably never be called */\r\n        if (!aValidType || !bValidType) {\r\n            return false;\r\n        }\r\n        const aKeysCount = Object.keys(a).length;\r\n        const bKeysCount = Object.keys(b).length;\r\n        if (aKeysCount !== bKeysCount) {\r\n            return false;\r\n        }\r\n        for (const key in a) {\r\n            const aHasKey = a.hasOwnProperty(key);\r\n            const bHasKey = b.hasOwnProperty(key);\r\n            if ((aHasKey && !bHasKey) ||\r\n                (!aHasKey && bHasKey) ||\r\n                !looseEqual(a[key], b[key])) {\r\n                return false;\r\n            }\r\n        }\r\n    }\r\n    return String(a) === String(b);\r\n}\r\nfunction looseIndexOf(arr, val) {\r\n    return arr.findIndex(item => looseEqual(item, val));\r\n}\n\n/**\r\n * For converting {{ interpolation }} values to displayed strings.\r\n * @private\r\n */\r\nconst toDisplayString = (val) => {\r\n    return isString(val)\r\n        ? val\r\n        : val == null\r\n            ? ''\r\n            : isArray(val) ||\r\n                (isObject(val) &&\r\n                    (val.toString === objectToString || !isFunction(val.toString)))\r\n                ? JSON.stringify(val, replacer, 2)\r\n                : String(val);\r\n};\r\nconst replacer = (_key, val) => {\r\n    // can't use isRef here since @vue/shared has no deps\r\n    if (val && val.__v_isRef) {\r\n        return replacer(_key, val.value);\r\n    }\r\n    else if (isMap(val)) {\r\n        return {\r\n            [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {\r\n                entries[`${key} =>`] = val;\r\n                return entries;\r\n            }, {})\r\n        };\r\n    }\r\n    else if (isSet(val)) {\r\n        return {\r\n            [`Set(${val.size})`]: [...val.values()]\r\n        };\r\n    }\r\n    else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\r\n        return String(val);\r\n    }\r\n    return val;\r\n};\n\nconst EMPTY_OBJ = (process.env.NODE_ENV !== 'production')\r\n    ? Object.freeze({})\r\n    : {};\r\nconst EMPTY_ARR = (process.env.NODE_ENV !== 'production') ? Object.freeze([]) : [];\r\nconst NOOP = () => { };\r\n/**\r\n * Always return false.\r\n */\r\nconst NO = () => false;\r\nconst onRE = /^on[^a-z]/;\r\nconst isOn = (key) => onRE.test(key);\r\nconst isModelListener = (key) => key.startsWith('onUpdate:');\r\nconst extend = Object.assign;\r\nconst remove = (arr, el) => {\r\n    const i = arr.indexOf(el);\r\n    if (i > -1) {\r\n        arr.splice(i, 1);\r\n    }\r\n};\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\r\nconst isArray = Array.isArray;\r\nconst isMap = (val) => toTypeString(val) === '[object Map]';\r\nconst isSet = (val) => toTypeString(val) === '[object Set]';\r\nconst isDate = (val) => val instanceof Date;\r\nconst isFunction = (val) => typeof val === 'function';\r\nconst isString = (val) => typeof val === 'string';\r\nconst isSymbol = (val) => typeof val === 'symbol';\r\nconst isObject = (val) => val !== null && typeof val === 'object';\r\nconst isPromise = (val) => {\r\n    return isObject(val) && isFunction(val.then) && isFunction(val.catch);\r\n};\r\nconst objectToString = Object.prototype.toString;\r\nconst toTypeString = (value) => objectToString.call(value);\r\nconst toRawType = (value) => {\r\n    // extract \"RawType\" from strings like \"[object RawType]\"\r\n    return toTypeString(value).slice(8, -1);\r\n};\r\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\r\nconst isIntegerKey = (key) => isString(key) &&\r\n    key !== 'NaN' &&\r\n    key[0] !== '-' &&\r\n    '' + parseInt(key, 10) === key;\r\nconst isReservedProp = /*#__PURE__*/ makeMap(\r\n// the leading comma is intentional so empty string \"\" is also included\r\n',key,ref,ref_for,ref_key,' +\r\n    'onVnodeBeforeMount,onVnodeMounted,' +\r\n    'onVnodeBeforeUpdate,onVnodeUpdated,' +\r\n    'onVnodeBeforeUnmount,onVnodeUnmounted');\r\nconst isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');\r\nconst cacheStringFunction = (fn) => {\r\n    const cache = Object.create(null);\r\n    return ((str) => {\r\n        const hit = cache[str];\r\n        return hit || (cache[str] = fn(str));\r\n    });\r\n};\r\nconst camelizeRE = /-(\\w)/g;\r\n/**\r\n * @private\r\n */\r\nconst camelize = cacheStringFunction((str) => {\r\n    return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\r\n});\r\nconst hyphenateRE = /\\B([A-Z])/g;\r\n/**\r\n * @private\r\n */\r\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());\r\n/**\r\n * @private\r\n */\r\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\r\n/**\r\n * @private\r\n */\r\nconst toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\r\n// compare whether a value has changed, accounting for NaN.\r\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\r\nconst invokeArrayFns = (fns, arg) => {\r\n    for (let i = 0; i < fns.length; i++) {\r\n        fns[i](arg);\r\n    }\r\n};\r\nconst def = (obj, key, value) => {\r\n    Object.defineProperty(obj, key, {\r\n        configurable: true,\r\n        enumerable: false,\r\n        value\r\n    });\r\n};\r\nconst toNumber = (val) => {\r\n    const n = parseFloat(val);\r\n    return isNaN(n) ? val : n;\r\n};\r\nlet _globalThis;\r\nconst getGlobalThis = () => {\r\n    return (_globalThis ||\r\n        (_globalThis =\r\n            typeof globalThis !== 'undefined'\r\n                ? globalThis\r\n                : typeof self !== 'undefined'\r\n                    ? self\r\n                    : typeof window !== 'undefined'\r\n                        ? window\r\n                        : typeof global !== 'undefined'\r\n                            ? global\r\n                            : {}));\r\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isModelListener, isNoUnitNumericStyleProp, isObject, isOn, isPlainObject, isPromise, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\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 * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nexport default baseTrim;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\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\nexport default toFinite;\n","import toFinite from './toFinite.js';\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\nexport default toInteger;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nexport default baseCreate;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nexport default copyArray;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nexport default shortOut;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nexport default constant;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nexport default defineProperty;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nexport default baseSetToString;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nexport default arrayEach;\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\nexport default baseFindIndex;\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\nexport default baseIsNaN;\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\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\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\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\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\nexport default arrayIncludes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nexport default baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\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 * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nexport default copyObject;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nexport default overRest;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\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/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\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 an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\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 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\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 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\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 * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nexport default arrayPush;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nexport default baseFlatten;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nexport default stringToArray;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nexport default createCaseFirst;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper 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 * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nexport default arrayReduce;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default basePropertyOf;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nexport default words;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nexport default createCompounder;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nexport default cloneBuffer;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nexport default getTag;\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 * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nexport default initCloneByTag;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\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 * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\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 * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nexport default baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nexport default baseIteratee;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nexport default now;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nexport default debounce;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\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\nexport default arrayIncludesWith;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee == null ? value : iteratee(value);\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseDifference;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar differenceBy = baseRest(function(array, values) {\n  var iteratee = last(values);\n  if (isArrayLikeObject(iteratee)) {\n    iteratee = undefined;\n  }\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))\n    : [];\n});\n\nexport default differenceBy;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\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\nexport default findIndex;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n  return value === null;\n}\n\nexport default isNull;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nexport default isUndefined;\n","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n  path = castPath(path, object);\n  object = parent(object, path);\n  return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n","import baseUnset from './_baseUnset.js';\nimport isIndex from './_isIndex.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n  var length = array ? indexes.length : 0,\n      lastIndex = length - 1;\n\n  while (length--) {\n    var index = indexes[length];\n    if (length == lastIndex || index !== previous) {\n      var previous = index;\n      if (isIndex(index)) {\n        splice.call(array, index, 1);\n      } else {\n        baseUnset(array, index);\n      }\n    }\n  }\n  return array;\n}\n\nexport default basePullAt;\n","import baseIteratee from './_baseIteratee.js';\nimport basePullAt from './_basePullAt.js';\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n *   return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n  var result = [];\n  if (!(array && array.length)) {\n    return result;\n  }\n  var index = -1,\n      indexes = [],\n      length = array.length;\n\n  predicate = baseIteratee(predicate, 3);\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result.push(value);\n      indexes.push(index);\n    }\n  }\n  basePullAt(array, indexes);\n  return result;\n}\n\nexport default remove;\n","import { camelize, capitalize, extend, hasOwn, hyphenate, isArray, isObject, isString, looseEqual, isFunction, isPlainObject } from '@vue/shared'\nimport { isUndefined, isNull, camelCase } from 'lodash-unified'\nimport { AnyFunction, AnyObject } from './types'\n\nexport function getFileNameByPath(path: string): string {\n  const posStart = path.lastIndexOf('/')\n  const posEnd = path.lastIndexOf('.')\n  return path.substring(posStart + 1, posEnd)\n}\n\nexport function dirname(path: string): string {\n  if (typeof path !== 'string') path = path + ''\n  if (path.length === 0) return '.'\n  let code = path.charCodeAt(0)\n  const hasRoot = code === 47 /* / */\n  let end = -1\n  let matchedSlash = true\n  for (let i = path.length - 1; i >= 1; --i) {\n    code = path.charCodeAt(i)\n    if (code === 47 /* / */) {\n      if (!matchedSlash) {\n        end = i\n        break\n      }\n    } else {\n      // We saw the first non-path separator\n      matchedSlash = false\n    }\n  }\n\n  if (end === -1) return hasRoot ? '/' : '.'\n  if (hasRoot && end === 1) {\n    // return '//';\n    // Backwards-compat fix:\n    return '/'\n  }\n  return path.slice(0, end)\n}\n\nexport function removeEmpty(obj: any): AnyObject {\n  const proto = Object.getPrototypeOf(obj)\n  const finalObj: AnyObject = {}\n  Object.setPrototypeOf(finalObj, proto)\n  Object.keys(obj).forEach(key => {\n    const className = getObjClassName(obj[key])\n    if ((obj[key] && isArray(obj[key])) || obj[key] instanceof Element) {\n      finalObj[key] = obj[key]\n    } else if (obj[key] && typeof obj[key] === 'object' && !Cesium[className]) {\n      // Do not process cesium objects\n      const nestedObj = removeEmpty(obj[key])\n      if (Object.keys(nestedObj).length) {\n        finalObj[key] = nestedObj\n      }\n    } else if (obj[key] !== '' && obj[key] !== undefined && obj[key] !== null) {\n      finalObj[key] = obj[key]\n    }\n  })\n  return finalObj\n}\n\nexport function isEmptyObj(obj: unknown): boolean {\n  if (isUndefined(obj) || isNull(obj)) {\n    return true\n  }\n\n  if (obj instanceof Element) {\n    return false\n  }\n\n  const arr = Object.keys(obj as any)\n  return arr.length === 0\n}\n\nexport const kebabCase = hyphenate\n\nexport function getObjClassName(obj: AnyObject): string {\n  if (obj && obj.constructor) {\n    const strFun = obj.constructor.toString()\n    let className = strFun.substr(0, strFun.indexOf('('))\n    className = className.replace('function', '')\n    return className.replace(/(^\\s*)|(\\s*$)/gi, '')\n  }\n  return typeof obj\n}\n\n/**\n * 验证是否是经纬度。\n * @param {Number} longitude\n * @param {Number} latitude\n * @returns {Boolean}\n */\nexport function lnglatValidator(longitude: number, latitude: number) {\n  // 经度，整数部分为0-180小数部分为0到6位\n  const longreg = /^(-|\\+)?(((\\d|[1-9]\\d|1[0-7]\\d|0{1,3})\\.\\d{0,15})|(\\d|[1-9]\\d|1[0-7]\\d|0{1,3})|180\\.0{0,15}|180)$/\n  if (!longreg.test(longitude.toString())) {\n    return false\n  } // 纬度,整数部分为0-90小数部分为0到6位\n  const latreg = /^(-|\\+)?([0-8]?\\d{1}\\.\\d{0,15}|90\\.0{0,15}|[0-8]?\\d{1}|90)$/\n  if (!latreg.test(latitude.toString())) {\n    return false\n  }\n  return true\n}\n\nexport function defaultValue(a, b) {\n  if (a !== undefined && a !== null) {\n    return a\n  }\n  return b\n}\n\nexport function inherit(base, derived) {\n  function F() {\n    //\n  }\n  F.prototype = base.prototype\n  derived.prototype = new F()\n  derived.prototype.constructor = derived\n}\n\nexport function getDefaultOptionByProps<T>(props, ignores: Array<string> = []) {\n  const defaultOptions: T = {} as T\n  Object.keys(props).forEach(key => {\n    if (ignores.indexOf(key) === -1) {\n      const value: {\n        default?: AnyFunction<any> | AnyObject\n      } = props[key]\n      defaultOptions[key] = isFunction(value)\n        ? undefined\n        : isPlainObject(value)\n        ? isFunction(value.default)\n          ? value.default()\n          : value.default\n        : value\n    }\n  })\n\n  return defaultOptions\n}\n\nconst addCustomProperty = (obj, options) => {\n  for (const prop in options) {\n    if (!obj[prop]) {\n      obj[prop] = options[prop]\n    }\n  }\n}\n\nexport const merge = <T extends Record<string, any>>(a: T, b: T) => {\n  const keys = [...new Set([...Object.keys(a), ...Object.keys(b)])] as (keyof T)[]\n  const obj = {} as T\n  for (const key of keys) {\n    obj[key] = b[key] ?? a[key]\n  }\n  return obj\n}\n\n// reexport from lodash & vue shared\nexport {\n  hasOwn,\n  // isEmpty,\n  // isEqual,\n  isObject,\n  isPlainObject,\n  isArray,\n  isString,\n  capitalize,\n  camelize,\n  looseEqual,\n  extend,\n  isUndefined,\n  isFunction,\n  camelCase,\n  addCustomProperty\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-02-09 16:19:57\n * @LastEditTime: 2022-02-09 16:49:56\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-global-config\\index.ts\n */\nimport { ConfigProviderContext, configProviderContextKey } from '@vue-cesium/utils/config'\nimport { inject, ref, computed, unref, provide, getCurrentInstance } from 'vue'\nimport type { Ref, App } from 'vue'\nimport { hasOwn, isObject, merge } from '@vue-cesium/utils/util'\nimport { MaybeRef } from '@vue-cesium/utils/types'\n\nconst cache = ref<ConfigProviderContext>({})\n\nexport function useGlobalConfig<K extends keyof ConfigProviderContext>(key: K): Ref<ConfigProviderContext[K]>\nexport function useGlobalConfig(): Ref<ConfigProviderContext>\nexport function useGlobalConfig(key?: keyof ConfigProviderContext) {\n  const config = inject(configProviderContextKey, cache)\n  if (key) {\n    return isObject(config.value) && hasOwn(config.value, key) ? computed(() => config.value[key]) : ref(undefined)\n  } else {\n    return config\n  }\n}\n\nexport const provideGlobalConfig = (config: MaybeRef<ConfigProviderContext>, app?: App) => {\n  const inSetup = !!getCurrentInstance()\n  const oldConfig = inSetup ? useGlobalConfig() : undefined\n\n  const provideFn = app?.provide ?? (inSetup ? provide : undefined)\n  if (!provideFn) {\n    console.warn('provideGlobalConfig', 'provideGlobalConfig() can only be used inside setup().')\n    return\n  }\n\n  const context = computed(() => {\n    const cfg = unref(config)\n    if (!oldConfig) return cfg\n    return merge(oldConfig.value, cfg)\n  })\n  provideFn(configProviderContextKey, context)\n  cache.value = context.value\n  return context\n}\n","import { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { isString } from '@vue-cesium/utils/util'\n\nexport default function (vcInstance: VcComponentInternalInstance) {\n  const makeLog = (prefix = '') => {\n    return function (...args) {\n      if (prefix) {\n        if (isString(args[0])) {\n          args[0] = prefix.trim() + ' ' + args[0]\n        } else {\n          args = [prefix.trim(), ...args]\n        }\n      }\n      console.log(...args)\n    }\n  }\n\n  const makeWarn = (prefix = '') => {\n    return function (...args) {\n      if (prefix) {\n        if (isString(args[0])) {\n          args[0] = prefix.trim() + ' ' + args[0]\n        } else {\n          args = [prefix.trim(), ...args]\n        }\n      }\n      console.warn(...args)\n    }\n  }\n\n  const makeError = (prefix = '') => {\n    return function (...args) {\n      if (prefix) {\n        if (isString(args[0])) {\n          args[0] = prefix.trim() + ' ' + args[0]\n        } else {\n          args = [prefix.trim(), ...args]\n        }\n      }\n      console.error(...args)\n    }\n  }\n\n  const makeDebug = (prefix = '') => {\n    return function (...args) {\n      if (prefix) {\n        if (isString(args[0])) {\n          args[0] = prefix.trim() + ' ' + args[0]\n        } else {\n          args = [prefix.trim(), ...args]\n        }\n      }\n\n      if (process.env.NODE_ENV === 'development') {\n        // console.log(...args)\n      }\n    }\n  }\n\n  /**\n   * @description 返回这个样式的颜色值\n   * @param {String} type 样式名称 [ primary | success | warning | danger | text ]\n   */\n  const typeColor = (type = 'default') => {\n    let color = ''\n    switch (type) {\n      case 'default':\n        color = '#35495E'\n        break\n      case 'primary':\n        color = '#3488ff'\n        break\n      case 'success':\n        color = '#43B883'\n        break\n      case 'warning':\n        color = '#e6a23c'\n        break\n      case 'danger':\n        color = '#f56c6c'\n        break\n      default:\n        break\n    }\n    return color\n  }\n  /**\n   * @description 打印一个 [ title | text ] 样式的信息\n   * @param {String} title title text\n   * @param {String} info info text\n   * @param {String} type style\n   */\n  const capsule = (title, info, type = 'primary') => {\n    console.log(\n      `%c ${title} %c ${info} %c`,\n      'background:#35495E; padding: 1px; border-radius: 3px 0 0 3px; color: #fff;',\n      `background:${typeColor(type)}; padding: 1px; border-radius: 0 3px 3px 0;  color: #fff;`,\n      'background:transparent'\n    )\n  }\n\n  /**\n   * @description 打印彩色文字\n   */\n  const colorful = textArr => {\n    console.log(`%c${textArr.map(t => t.text || '').join('%c')}`, ...textArr.map(t => `color: ${typeColor(t.type)};`))\n  }\n\n  const success = text => {\n    colorful([{ text, type: 'success' }])\n  }\n\n  const warning = text => {\n    colorful([{ text, type: 'warning' }])\n  }\n\n  const danger = text => {\n    colorful([{ text, type: 'danger' }])\n  }\n\n  const primary = text => {\n    colorful([{ text, type: 'primary' }])\n  }\n\n  return {\n    log: makeLog(`[VueCesium] ${vcInstance?.proxy?.$options.name}`),\n    warn: makeWarn(`[VueCesium] WARN ${vcInstance?.proxy?.$options.name}`),\n    error: makeError(`[VueCesium] ERR ${vcInstance?.proxy?.$options.name}`),\n    debug: makeDebug(`[VueCesium] Debug ${vcInstance?.proxy?.$options.name}`),\n    capsule,\n    success,\n    warning,\n    danger,\n    primary\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-17 11:46:54\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\vue-cesium\\make-installer.ts\n */\n\nimport { version } from './version'\nimport type { App, Plugin } from 'vue'\nimport type { ConfigProviderContext } from '@vue-cesium/utils/config'\nimport { provideGlobalConfig } from '@vue-cesium/composables/use-global-config'\nimport useLog from '@vue-cesium/composables/private/use-log'\nconst logger = useLog(undefined)\n\nconst INSTALLED_KEY = Symbol('INSTALLED_KEY')\n\nconst makeInstaller = (components: Plugin[] = []) => {\n  const install = (app: App, opts: ConfigProviderContext) => {\n    if (app[INSTALLED_KEY]) return\n\n    const defaultConfig: ConfigProviderContext = {\n      cesiumPath: 'https://cdn.jsdelivr.net/npm/cesium@latest/Build/Cesium/Cesium.js',\n      accessToken:\n        'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2OGE2MjZlOC1mMzhiLTRkZjQtOWEwZi1jZTE0MWY0YzhlMTAiLCJpZCI6MjU5LCJpYXQiOjE2NDM3MjU1NzZ9.ptZ5tVXvMmuWRC0WhjtYTg-17nQh14fgxBsx0HJiVXQ'\n    }\n\n    app[INSTALLED_KEY] = true\n    components.forEach(c => {\n      app.use(c, opts)\n    })\n\n    const options = Object.assign(defaultConfig, opts)\n    provideGlobalConfig(options, app)\n\n    if (process.env.NODE_ENV === 'development') {\n      logger.capsule('VueCesium', `v${version}`)\n      logger.success('VueCesium  https://github.com/zouyaoji/vue-cesium')\n      logger.success('Document  https://zouyaoji.top/vue-cesium')\n      logger.success(`If you like it, give it a star reward, ^_^`)\n      logger.success(`表示赞，给它一个星星奖励，^_^`)\n    }\n  }\n\n  return {\n    version,\n    install\n  }\n}\n\nexport default makeInstaller\n","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-04-06 09:21:02\n * @LastEditTime: 2021-10-02 23:27:05\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\merge-descriptors.ts\n */\n/*!\n * merge-descriptors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module variables.\n * @private\n */\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty\n\n/**\n * Merge the property descriptors of `src` into `dest`\n *\n * @param {object} dest Object to add descriptors to\n * @param {object} src Object to clone descriptors from\n * @param {boolean} [redefine=true] Redefine `dest` properties with `src` properties\n * @returns {object} Reference to dest\n * @public\n */\n\nfunction merge(dest, src, redefine) {\n  if (!dest) {\n    throw new TypeError('argument dest is required')\n  }\n\n  if (!src) {\n    throw new TypeError('argument src is required')\n  }\n\n  if (redefine === undefined) {\n    // Default to true\n    redefine = true\n  }\n\n  Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) {\n    if (!redefine && hasOwnProperty.call(dest, name)) {\n      // Skip desriptor\n      return\n    }\n\n    // Copy descriptor\n    const descriptor = Object.getOwnPropertyDescriptor(src, name)\n    Object.defineProperty(dest, name, descriptor!)\n  })\n\n  return dest\n}\n\n/**\n * @param {...Object} args\n * @returns {Object}\n */\nexport function mergeDescriptors(...args: any[]) {\n  let redefine: boolean\n  if (typeof args[args.length - 1] !== 'object') {\n    redefine = args.pop()\n  }\n\n  return args.slice(1).reduce((dest, src, i) => merge(dest, src, redefine), args[0])\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2021-12-31 09:28:32\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\private\\vm.ts\n */\nimport { Ref } from 'vue'\nimport { AnyFunction, VcComponentInternalInstance } from '../types'\nimport { camelCase, capitalize } from '../util'\nimport { findIndex } from 'lodash-unified'\n\n// used directly by docs too\nexport function getParentVm(vm) {\n  if (vm.$parent !== void 0 && vm.$parent !== null) {\n    return vm.$parent\n  }\n\n  vm = vm.$.parent\n\n  while (vm !== void 0 && vm !== null) {\n    if (vm.proxy !== void 0 && vm.proxy !== null) {\n      return vm.proxy\n    }\n\n    vm = vm.parent\n  }\n}\n\n// vnodes from rendered in advanced slots\nexport function getNormalizedVNodes(vnodes) {\n  const children = new Set()\n\n  vnodes.forEach(vnode => {\n    if (typeof vnode.type === 'symbol' && Array.isArray(vnode.children) === true) {\n      vnode.children.forEach(child => {\n        children.add(child)\n      })\n    } else {\n      children.add(vnode)\n    }\n  })\n\n  return Array.from(children)\n}\n\nexport function vmHasRouter(vm) {\n  return vm.appContext.config.globalProperties.$router !== void 0\n}\n\nexport function vmHasListener(vm, listenerName) {\n  return vm.vnode.props !== null && vm.vnode.props[listenerName] !== void 0\n}\n\nexport function getInstanceListener(vcInstance: VcComponentInternalInstance, listenerName: string) {\n  const props = vcInstance.vnode.props\n  if (props === null) {\n    return undefined\n  }\n  const propKeys = Object.keys(props)\n  const index = findIndex(propKeys, o => {\n    return o.includes(`on${capitalize(listenerName)}`) || o.includes(`on${capitalize(camelCase(listenerName))}`)\n  })\n  const listener = props[propKeys[index]]\n  return listener as AnyFunction<any>\n}\n\n/**\n * Unwraps refed value\n * @param ref Refed value\n */\nexport function $<T>(ref: Ref<T>) {\n  return ref.value\n}\n\nexport function getVcParentInstance(instance: VcComponentInternalInstance): VcComponentInternalInstance {\n  const parentInstance = instance.parent as VcComponentInternalInstance\n  return !parentInstance.cesiumClass && parentInstance.proxy?.$options.name !== 'VcViewer' ? getVcParentInstance(parentInstance) : parentInstance\n}\n","import type {\n  AnyFunction,\n  Cartesian2Option,\n  Cartesian3Option,\n  Cartesian4Option,\n  PolygonHierarchyOption,\n  CartographicInDegreeOption,\n  NearFarScalarOption,\n  DistanceDisplayConditionOption,\n  ColorInByteOption,\n  MaterialOption,\n  VcComponentInternalInstance,\n  RectangleInDegreeOption,\n  BoundingRectangleOption,\n  PlaneOption,\n  TranslationRotationScaleOption,\n  VcCamera,\n  HeadingPitchRollOption,\n  CesiumAppearance,\n  VcPosition,\n  CesiumPosition,\n  VcRectangle,\n  CesiumRectangle,\n  VcColor,\n  CesiumColor,\n  VcAppearance,\n  CesiumDistanceDisplayCondition,\n  VcDistanceDisplayCondition,\n  VcCartesian2,\n  CesiumCartesian2,\n  CesiumCartesian3Array,\n  VcCartesian3Array,\n  VcCartesian2Array,\n  CesiumCartesian2Array,\n  CesiumNearFarScalar,\n  VcNearFarScalar,\n  VcPolygonHierarchy,\n  CesiumPolygonHierarchy,\n  VcMaterial,\n  VcMaterialProperty,\n  CesiumMaterialProperty,\n  CesiumMaterial,\n  VcBoundingRectangle,\n  CesiumBoundingRectangle\n} from './types'\nimport { hasOwn, isFunction, isArray, isString, isPlainObject, isEmptyObj, getObjClassName, isUndefined } from './util'\n\n/**\n * 将对象或数组转换为 Cesium.Cartesian2\n * @param {Object} val\n * @returns {Cartesian2 | CallbackProperty} 返回 Cartesian2 或者 CallbackProperty\n * @example\n * const options = [100, 100]\n * // const options = [x: 100, y: 100]\n * const position = makeCartesian2(options)\n */\nexport function makeCartesian2(val: VcCartesian2, isConstant = false): CesiumCartesian2 | undefined {\n  const { Cartesian2, CallbackProperty } = Cesium\n\n  if (val instanceof Cesium.Cartesian2 || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isPlainObject(val)) {\n    if (hasOwn(val, 'x') && hasOwn(val, 'y')) {\n      const value = val as Cartesian2Option\n      return new Cartesian2(value.x, value.y)\n    }\n  }\n\n  if (isArray(val)) {\n    return new Cartesian2(val[0], val[1])\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 将对象或者数组转换为 Cesium.Cartesian3\n * @param {Object} val 传入的对象或数组\n * @param {Boolean} isConstant 传入function时生效，true 代表回调 function 每时每刻都返回值， false 代表改变才会返回值。默认false。\n * @returns 返回 Cartesian3 或者 CallbackProperty\n * @example\n * const options = {\n *  lng: 108,\n *  lat: 35,\n *  height: 1000\n * }\n * // const options = [108, 35, 1000]\n * const position = makeCartesian3 (options) // return Cesium.Cartesian3\n */\nexport function makeCartesian3(val: VcPosition, ellipsoid?: Cesium.Ellipsoid, isConstant = false): CesiumPosition | undefined {\n  const {\n    CallbackProperty,\n    Cartesian3,\n    Ellipsoid,\n    SampledPositionProperty,\n    CompositePositionProperty,\n    ConstantPositionProperty,\n    TimeIntervalCollectionPositionProperty\n  } = Cesium\n\n  if (\n    val instanceof Cartesian3 ||\n    val instanceof CallbackProperty ||\n    val instanceof SampledPositionProperty ||\n    val instanceof CompositePositionProperty ||\n    val instanceof ConstantPositionProperty ||\n    val instanceof TimeIntervalCollectionPositionProperty\n  ) {\n    return val\n  }\n\n  ellipsoid = ellipsoid || Ellipsoid.WGS84\n\n  if (isPlainObject(val)) {\n    if (hasOwn(val, 'x') && hasOwn(val, 'y') && hasOwn(val, 'z')) {\n      const value = val as Cartesian3Option\n      return new Cartesian3(value.x, value.y, value.z)\n    } else if (hasOwn(val, 'lng') && hasOwn(val, 'lat')) {\n      const value = val as CartographicInDegreeOption\n      return Cartesian3.fromDegrees(value.lng!, value.lat!, value.height || 0, ellipsoid)\n    }\n  }\n  // 经纬度数组\n  if (isArray(val)) {\n    return Cartesian3.fromDegrees(val[0], val[1], val[2] || 0, ellipsoid)\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 将数组 [lng, lat, height, ……，lng, lat, height] 转换为 Cesium.Cartesian3 数组\n * @param {Array} val\n * @returns {Array<Cartesian3>}\n */\nexport function makeCartesian3Array(vals: VcCartesian3Array, ellipsoid?: Cesium.Ellipsoid, isConstant = false): CesiumCartesian3Array | undefined {\n  const { CallbackProperty, Cartesian3, Ellipsoid } = Cesium\n\n  if (vals instanceof CallbackProperty) {\n    return vals\n  }\n\n  if (isFunction(vals)) {\n    return new CallbackProperty(vals, isConstant)\n  }\n\n  ellipsoid = ellipsoid || Ellipsoid.WGS84\n\n  if (isArray(vals)) {\n    if (isArray(vals[0]) || isPlainObject(vals[0])) {\n      const results: Array<any> = []\n      vals.forEach(val => {\n        results.push(makeCartesian3(val, ellipsoid))\n      })\n      return results\n    }\n\n    return Cartesian3.fromDegreesArrayHeights(vals as Array<number>, ellipsoid)\n  }\n\n  return undefined\n}\n\n/**\n * 将形如 [lng, lat, ……，lng, lat] 数组转换为 Cesium.Cartesian2 数组\n * @param {Array} vals\n * @returns {Array<Cartesian2>}\n */\nexport function makeCartesian2Array(vals: VcCartesian2Array, isConstant): CesiumCartesian2Array | undefined {\n  const { CallbackProperty } = Cesium\n\n  if (vals instanceof CallbackProperty) {\n    return vals\n  }\n\n  if (isFunction(vals)) {\n    return new CallbackProperty(vals, isConstant)\n  }\n\n  if (isArray(vals)) {\n    const points: Array<Cesium.Cartesian2> = []\n    vals.forEach(val => {\n      points.push(makeCartesian2(val) as Cesium.Cartesian2)\n    })\n    return points\n  }\n\n  return undefined\n}\n\n/**\n * 将对象或数组 转换为 Cesium.Quaternion\n * @param {Object} val\n * @example\n * const options = {x: 0, y: 0, z: 0, w: 0}\n * // const options = [0, 0, 0, 0]\n * const orientation = makeQuaternion(options) // returns Cesium.Quaternion\n */\nexport function makeQuaternion(\n  val: Cesium.CallbackProperty | Cesium.Quaternion | Cartesian4Option | Array<number> | AnyFunction<any>,\n  isConstant = false\n): Cesium.CallbackProperty | Cesium.Quaternion | Cesium.VelocityOrientationProperty | undefined {\n  const { CallbackProperty, Quaternion, VelocityOrientationProperty } = Cesium\n\n  if (val instanceof Quaternion || val instanceof CallbackProperty || val instanceof VelocityOrientationProperty) {\n    return val\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'x') && hasOwn(val, 'y')) {\n    const value = val as Cartesian4Option\n    return new Quaternion(value.x, value.y, value.z, value.w)\n  }\n\n  if (isArray(val)) {\n    return new Quaternion(val[0], val[1], val[2], val[3])\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 解析 HierarchyJson\n * @param {Object} val\n */\nfunction parsePolygonHierarchyJson(val: Array<PolygonHierarchyOption>, ellipsoid?: Cesium.Ellipsoid) {\n  val.forEach(item => {\n    item.positions = makeCartesian3Array(item.positions, ellipsoid) as Array<Cesium.Cartesian3>\n    if (item.holes) {\n      parsePolygonHierarchyJson(item.holes, ellipsoid)\n    }\n  })\n}\n\n/**\n * 普通数组或对象转 Cesium.PolygonHierarchy 对象。\n * @param {Object|Array} val\n */\nexport function makePolygonHierarchy(val: VcPolygonHierarchy, ellipsoid?: Cesium.Ellipsoid, isConstant = false): CesiumPolygonHierarchy | undefined {\n  const { PolygonHierarchy, CallbackProperty } = Cesium\n\n  if (val instanceof PolygonHierarchy || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  if (isArray(val) && val.length >= 3) {\n    const points = makeCartesian3Array(val, ellipsoid) as Array<Cesium.Cartesian3>\n    return new PolygonHierarchy(points)\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'positions')) {\n    const value = val as PolygonHierarchyOption\n    value.positions = makeCartesian3Array(value.positions, ellipsoid) as Array<Cesium.Cartesian3>\n    value.holes?.length && parsePolygonHierarchyJson(value.holes, ellipsoid)\n    return value\n  }\n\n  return undefined\n}\n\n/**\n * 对象或数组转 Cesium.NearFarScalar。\n * @param {Object} val\n * @returns {NearFarScalar}\n * @example\n * const options = {near: 1000, nearValue: 1.0, far: 10000, farValue: 0.5}\n * // const options = [1000, 1.0, 10000, 1.5]\n * const nearFarScalar = makeNearFarScalar(options)\n */\nexport function makeNearFarScalar(val: VcNearFarScalar, isConstant = false): CesiumNearFarScalar | undefined {\n  const { NearFarScalar, CallbackProperty } = Cesium\n\n  if (val instanceof NearFarScalar || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'near') && hasOwn(val, 'far')) {\n    const value = val as NearFarScalarOption\n    return new NearFarScalar(value.near, value.nearValue || 0.0, value.far, value.farValue || 1.0)\n  }\n\n  if (isArray(val)) {\n    return new NearFarScalar(val[0], val[1], val[2], val[3])\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n/**\n * 对象或数组转 Cesium.DistanceDisplayCondition。\n * @param {Object} val\n * @returns {DistanceDisplayCondition}\n * @example\n * const options = [0, 1000]\n * // const options = {near: 0, far: 1000}\n * const distanceDisplayCondition = makeDistanceDisplayCondition(options) // return Cesium.DistanceDisplayCondition\n */\nexport function makeDistanceDisplayCondition(val: VcDistanceDisplayCondition, isConstant = false): CesiumDistanceDisplayCondition | undefined {\n  const { DistanceDisplayCondition, CallbackProperty } = Cesium\n\n  if (val instanceof DistanceDisplayCondition || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'near') && hasOwn(val, 'far')) {\n    const value = val as DistanceDisplayConditionOption\n    return new DistanceDisplayCondition(value.near, value.far)\n  }\n\n  if (isArray(val)) {\n    return new DistanceDisplayCondition(val[0], val[1])\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 普通对象、数组或字符串转 Cesium.Color。\n * @param {String|Array|Object|Function} val\n * @returns {Color}\n * @example\n * const options = 'red'\n * // const options = [1, 0, 0, 1.0] // r g b a\n * // const options = {red: 255, green: 0, bule: 0, alpha: 255}\n * const color = makeColor(options) // return Cesium.Color\n */\nexport function makeColor(val: VcColor, isConstant = false): CesiumColor | undefined {\n  const { Color, CallbackProperty } = Cesium\n\n  if (val instanceof Color || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isString(val)) {\n    return Color.fromCssColorString(val)\n  }\n\n  if (isPlainObject(val)) {\n    if (hasOwn(val, 'red')) {\n      const value = val as ColorInByteOption\n      return Color.fromBytes(value.red, value.green || 255, value.blue || 255, value.alpha || 255)\n    } else if (hasOwn(val, 'x')) {\n      const value = val as Cartesian4Option\n      return new Color(value.x, value.y || 1, value.z || 1, value.w || 1)\n    }\n  }\n\n  if (isArray(val)) {\n    return Color.fromBytes(val[0], val[1], val[2], val[3] || 255)\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\nexport function makeColors(vals: VcColor[]): Cesium.Color[] {\n  if (isArray(vals)) {\n    const results: Cesium.Color[] = []\n    vals.forEach(val => {\n      results.push(makeColor(val) as Cesium.Color)\n    })\n\n    return results\n  } else {\n    return vals\n  }\n}\n\n/**\n * 普通对象或数组 [r, g, b, a] 或字符串转 MaterialProperty\n * @param {String|Array|Object} val\n */\nexport function makeMaterialProperty(val: VcMaterialProperty, isConstant = false): CesiumMaterialProperty {\n  const {\n    CallbackProperty,\n    Color,\n    CheckerboardMaterialProperty,\n    ColorMaterialProperty,\n    GridMaterialProperty,\n    ImageMaterialProperty,\n    PolylineArrowMaterialProperty,\n    PolylineDashMaterialProperty,\n    PolylineGlowMaterialProperty,\n    PolylineOutlineMaterialProperty,\n    StripeMaterialProperty,\n    StripeOrientation\n  } = Cesium\n\n  if (\n    val instanceof CallbackProperty ||\n    val instanceof Color ||\n    val instanceof CheckerboardMaterialProperty ||\n    val instanceof ColorMaterialProperty ||\n    val instanceof ImageMaterialProperty ||\n    val instanceof PolylineArrowMaterialProperty ||\n    val instanceof PolylineDashMaterialProperty ||\n    val instanceof PolylineGlowMaterialProperty ||\n    val instanceof PolylineOutlineMaterialProperty ||\n    val instanceof StripeMaterialProperty ||\n    getObjClassName(val as any).indexOf('MaterialProperty') !== -1\n  ) {\n    return val as CesiumMaterialProperty\n  }\n  if (\n    (isString(val) && /(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$/.test(val)) ||\n    val instanceof HTMLImageElement ||\n    val instanceof HTMLCanvasElement ||\n    val instanceof HTMLVideoElement\n  ) {\n    return new ImageMaterialProperty({\n      image: val,\n      repeat: makeCartesian2({ x: 1.0, y: 1.0 }),\n      color: Color.WHITE,\n      transparent: true\n    })\n  }\n\n  if (isArray(val) || isString(val)) {\n    return new ColorMaterialProperty(makeColor(val))\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'fabric')) {\n    const value = val as MaterialOption\n    switch (value.fabric.type) {\n      case 'Image':\n        return new ImageMaterialProperty({\n          image: value.fabric.uniforms.image,\n          repeat: makeCartesian2((value.fabric.uniforms.repeat as Cartesian2Option) || { x: 1.0, y: 1.0 }),\n          color: makeColor(value.fabric.uniforms.color!) || Color.WHITE,\n          transparent: value.fabric.uniforms.transparent || false\n        })\n      case 'Color':\n        return new ColorMaterialProperty(makeColor(value.fabric.uniforms.color || Color.WHITE))\n      case 'PolylineArrow':\n        return new PolylineArrowMaterialProperty(makeColor(value.fabric.uniforms.color || Color.WHITE))\n      case 'PolylineDash':\n        return new PolylineDashMaterialProperty({\n          color: makeColor(value.fabric.uniforms.color || 'white') || Color.WHITE,\n          gapColor: makeColor(value.fabric.uniforms.gapColor!) || Color.TRANSPARENT,\n          dashLength: value.fabric.uniforms.taperPower || 16.0,\n          dashPattern: value.fabric.uniforms.taperPower || 255.0\n        })\n      case 'PolylineGlow':\n        return new PolylineGlowMaterialProperty({\n          color: makeColor(value.fabric.uniforms.color!) || Color.WHITE,\n          glowPower: value.fabric.uniforms.glowPower || 0.25,\n          taperPower: value.fabric.uniforms.taperPower || 1.0\n        })\n      case 'PolylineOutline':\n        return new PolylineOutlineMaterialProperty({\n          color: makeColor(value.fabric.uniforms.color!) || Color.WHITE,\n          outlineColor: makeColor(value.fabric.uniforms.outlineColor!) || Color.BLACK,\n          outlineWidth: value.fabric.uniforms.outlineWidth || 1.0\n        })\n      case 'Checkerboard':\n        return new CheckerboardMaterialProperty({\n          evenColor: makeColor(value.fabric.uniforms.evenColor!) || Color.WHITE,\n          oddColor: makeColor(value.fabric.uniforms.oddColor!) || Color.BLACK,\n          repeat: makeCartesian2((value.fabric.uniforms.repeat as Cartesian2Option) || { x: 2, y: 2 })\n        })\n      case 'Grid':\n        return new GridMaterialProperty({\n          color: makeColor(value.fabric.uniforms.color!) || Color.WHITE,\n          cellAlpha: value.fabric.uniforms.cellAlpha || 0.1,\n          lineCount: makeCartesian2((value.fabric.uniforms.lineCount as Cartesian2Option) || { x: 8, y: 8 }),\n          lineThickness: makeCartesian2((value.fabric.uniforms.lineThickness as Cartesian2Option) || { x: 1, y: 1 }),\n          lineOffset: makeCartesian2((value.fabric.uniforms.lineOffset as Cartesian2Option) || { x: 0, y: 0 })\n        })\n      case 'Stripe':\n        return new StripeMaterialProperty({\n          orientation: value.fabric.uniforms.orientation || StripeOrientation.HORIZONTAL,\n          evenColor: makeColor(value.fabric.uniforms.evenColor || 'white'),\n          oddColor: makeColor(value.fabric.uniforms.oddColor || 'black'),\n          offset: value.fabric.uniforms.offset || 0,\n          repeat: (value.fabric.uniforms.repeat as number) || 1\n        })\n    }\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return val as CesiumMaterialProperty\n}\n\n/**\n * 转 Material\n * @param {String|Array|Object} val\n */\nexport function makeMaterial(this, val: VcMaterial): CesiumMaterial {\n  const vcInstance = this as VcComponentInternalInstance\n  const cmpName = vcInstance?.proxy?.$options.name\n  if (\n    cmpName &&\n    (cmpName.indexOf('Graphics') !== -1 || cmpName.indexOf('Datasource') !== -1 || cmpName === 'VcOverlayDynamic' || cmpName === 'VcEntity')\n  ) {\n    return makeMaterialProperty(val as VcMaterialProperty)\n  }\n  const { Material, combine } = Cesium\n  if (val instanceof Material) {\n    return val\n  }\n  if (isPlainObject(val) && hasOwn(val, 'fabric')) {\n    const f = obj => {\n      for (const i in obj) {\n        if (!isArray(obj[i]) && isPlainObject(obj[i])) {\n          f(obj[i])\n        } else {\n          if (i.toLocaleLowerCase().indexOf('color') !== -1 && !isEmptyObj(obj[i])) {\n            const result = makeColor(obj[i])\n            // Cesium 通过对象属性个数判断具体材质类型的，通过 Cesium.combine 移除 vue 传的一些属性\n            obj[i] = combine(result, result, true)\n          }\n        }\n      }\n    }\n    f(val)\n    return new Material(val as MaterialOption)\n  }\n\n  if (isArray(val) || isString(val)) {\n    const material = Material.fromType('Color')\n    material.uniforms.color = makeColor(val)\n    return material\n  }\n\n  return undefined\n}\n\nexport function makeAppearance(this: VcComponentInternalInstance, val: VcAppearance): CesiumAppearance | undefined {\n  const {\n    Appearance,\n    DebugAppearance,\n    MaterialAppearance,\n    PolylineColorAppearance,\n    EllipsoidSurfaceAppearance,\n    PerInstanceColorAppearance,\n    PolylineMaterialAppearance\n  } = Cesium\n\n  if (\n    val instanceof Appearance ||\n    val instanceof DebugAppearance ||\n    val instanceof MaterialAppearance ||\n    val instanceof PolylineColorAppearance ||\n    val instanceof EllipsoidSurfaceAppearance ||\n    val instanceof PerInstanceColorAppearance ||\n    val instanceof PolylineMaterialAppearance ||\n    getObjClassName(val as any).indexOf('Appearance') !== -1\n  ) {\n    return val as CesiumAppearance\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'type')) {\n    const options: any = {\n      ...val.options\n    }\n    if (val.options?.material) {\n      options.material = makeMaterial.call(this, val.options.material as any)\n    }\n\n    return new Cesium[val.type!]({\n      ...options\n    })\n  }\n\n  return undefined\n}\n\n/**\n * 将对象 {west: number, south: number, east: number, north: number} 或者[west, south, east, north]数组 转 Cesium.Rectangle 对象。\n * @param {Object} val\n * @returns {Rectangle}\n */\nexport function makeRectangle(val: VcRectangle, isConstant = false): CesiumRectangle | Cesium.RectangleGraphics | undefined {\n  const { Rectangle, RectangleGraphics, CallbackProperty } = Cesium\n\n  // Entiy 的 rectangle 属性不能调用这个方法\n  if (val instanceof RectangleGraphics || val instanceof Rectangle) {\n    return val\n  }\n\n  if (isArray(val)) {\n    return Rectangle.fromDegrees(val[0], val[1], val[2], val[3])\n  }\n\n  if (isPlainObject(val)) {\n    if (hasOwn(val, 'west')) {\n      const value = val as RectangleInDegreeOption\n      return Rectangle.fromDegrees(value.west, value.south, value.east, value.north)\n    } else if (hasOwn(val, 'x')) {\n      const value = val as Cartesian4Option\n      return new Rectangle(value.x, value.y, value.z, value.w)\n    }\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 对象或数组转 Cesium.BoundingRectangle。\n * @param {Object} val\n * @returns {Cesium.BoundingRectangle}\n * @example\n * const options = [0, 0, 100, 100]\n * // const options = {x: 0, y: 0, width: 100, height: 100}\n * const boundingRectangle = makeBoundingRectangle(options)\n */\nexport function makeBoundingRectangle(val: VcBoundingRectangle, isConstant = false): CesiumBoundingRectangle | undefined {\n  const { BoundingRectangle, CallbackProperty } = Cesium\n\n  if (val instanceof BoundingRectangle || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'x')) {\n    const value = val as BoundingRectangleOption\n    return new BoundingRectangle(value.x, value.y, value.width, value.height)\n  }\n\n  if (isArray(val)) {\n    return new BoundingRectangle(val[0], val[1], val[2], val[3])\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 普通对象 {normal: number, distance: number} 转 Cesium.Plane 对象。\n * @param {Object} val\n * @returns {Plane}\n */\nexport function makePlane(\n  val: Cesium.CallbackProperty | Cesium.Plane | PlaneOption | Array<any> | AnyFunction<any>,\n  isConstant = false\n): Cesium.CallbackProperty | Cesium.Plane | Cesium.PlaneGraphics | undefined {\n  const { Cartesian3, Plane, PlaneGraphics, CallbackProperty } = Cesium\n\n  // Entiy 和 PlaneGraphics 都有个 plane 属性 要区别一下\n  if (val instanceof PlaneGraphics || val instanceof Plane || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'normal')) {\n    const value = val as PlaneOption\n    // normal 法向量 需要写成 {x: number, y: number, z: number} 形式\n    Cartesian3.normalize(makeCartesian3(value.normal) as Cesium.Cartesian3, value.normal as Cesium.Cartesian3)\n    return new Plane(value.normal as Cesium.Cartesian3, value.distance)\n  }\n\n  if (isArray(val)) {\n    const point3D = makeCartesian3(val[0]) as Cesium.Cartesian3\n    const normalizePoint3D = Cartesian3.normalize(point3D, new Cartesian3())\n    return new Plane(normalizePoint3D, val[1])\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 普通对象转平移、旋转、缩放变换对象。\n * @param {*} val\n */\nexport function makeTranslationRotationScale(\n  val: Cesium.TranslationRotationScale | Cesium.CallbackProperty | TranslationRotationScaleOption | AnyFunction<any> | Array<any>,\n  isConstant = false\n) {\n  const { TranslationRotationScale, CallbackProperty } = Cesium\n  if (val instanceof CallbackProperty || val instanceof TranslationRotationScale) {\n    return val\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'translation')) {\n    const value = val as TranslationRotationScaleOption\n    // note\n    // translation scale需要写成 { x: number, y: number, z: number } 的形式\n    return new TranslationRotationScale(\n      makeCartesian3(value.translation) as Cesium.Cartesian3,\n      makeQuaternion(value.rotation) as Cesium.Quaternion,\n      makeCartesian3(value.scale) as Cesium.Cartesian3\n    )\n  }\n\n  if (isArray(val)) {\n    return new TranslationRotationScale(\n      makeCartesian3(val[0]) as Cesium.Cartesian3,\n      makeQuaternion(val[1]) as Cesium.Quaternion,\n      makeCartesian3(val[2]) as Cesium.Cartesian3\n    )\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n  return val\n}\n\nexport function makeOptions(this, val) {\n  const vcInstance = this as VcComponentInternalInstance\n  const cmpName = vcInstance.proxy?.$options.name\n  const result: any = {}\n  switch (cmpName) {\n    case 'VcDatasourceGeojson':\n      Object.assign(result, val)\n      result && result.markerColor && (result.markerColor = makeColor(result.markerColor))\n      result && result.stroke && (result.stroke = makeColor(result.stroke))\n      result && result.fill && (result.fill = makeColor(result.fill))\n      return result\n  }\n  return val\n}\n\nexport function captureScreenshot(viewer: Cesium.Viewer) {\n  const scene = viewer.scene\n  const promise: Promise<string> = new Promise((resolve, reject) => {\n    const removeCallback = viewer.scene.postRender.addEventListener(() => {\n      removeCallback()\n      try {\n        const cesiumCanvas = viewer.scene.canvas\n        const canvas = cesiumCanvas\n        resolve(canvas.toDataURL('image/png'))\n      } catch (e) {\n        reject(e)\n      }\n    })\n  })\n\n  scene.render(viewer.clock.currentTime)\n  return promise\n}\n\nexport function makeCameraOptions(camera: VcCamera, ellipsoid?: Cesium.Ellipsoid) {\n  const { Math: CesiumMath, Rectangle } = Cesium\n\n  let destination: Cesium.Cartesian3 | Cesium.Rectangle | undefined = undefined\n  let orientation: HeadingPitchRollOption = {}\n\n  if (hasOwn(camera, 'position')) {\n    const position = camera.position\n    destination = makeCartesian3(position!, ellipsoid) as Cesium.Cartesian3\n    if ((hasOwn(position!, 'lng') && hasOwn(position!, 'lat')) || isArray(position)) {\n      orientation = {\n        heading: CesiumMath.toRadians(camera.heading || 360),\n        pitch: CesiumMath.toRadians(camera.pitch || -90),\n        roll: CesiumMath.toRadians(camera.roll || 0)\n      }\n    } else {\n      orientation = {\n        heading: camera.heading || 2 * Math.PI,\n        pitch: camera.pitch || -Math.PI / 2,\n        roll: camera.roll || 0\n      }\n    }\n  } else if (hasOwn(camera, 'rectangle')) {\n    const rectangle = camera.retangle\n    destination = makeRectangle(rectangle!) as Cesium.Rectangle\n    Rectangle.validate(destination)\n    if (\n      (hasOwn(rectangle!, 'west') && hasOwn(rectangle!, 'south') && hasOwn(rectangle!, 'east') && hasOwn(rectangle!, 'north')) ||\n      isArray(rectangle)\n    ) {\n      orientation = {\n        heading: CesiumMath.toRadians(camera.heading || 360),\n        pitch: CesiumMath.toRadians(camera.pitch || -90),\n        roll: CesiumMath.toRadians(camera.roll || 0)\n      }\n    } else {\n      orientation = {\n        heading: camera.heading || 2 * Math.PI,\n        pitch: camera.pitch || -Math.PI / 2,\n        roll: camera.roll || 0\n      }\n    }\n  }\n\n  return {\n    destination,\n    orientation\n  }\n}\n\nexport function setViewerCamera(viewer: Cesium.Viewer, camera: VcCamera) {\n  const { destination, orientation } = makeCameraOptions(camera, viewer.scene.globe.ellipsoid)\n  viewer.camera.setView({\n    destination: destination,\n    orientation: orientation\n  })\n}\n\nexport function flyToCamera(viewer: Cesium.Viewer, camera: VcCamera, options?) {\n  const { destination, orientation } = makeCameraOptions(camera, viewer.scene.globe.ellipsoid)\n  viewer.camera.flyTo({\n    destination: options.destination || destination,\n    orientation: options.orientation || orientation,\n    duration: options.duration,\n    complete: options.complete,\n    cancel: options.cancel\n  })\n}\n\nexport function getGeodesicDistance(start: Cesium.Cartesian3, end: Cesium.Cartesian3, ellipsoid: Cesium.Ellipsoid) {\n  const { EllipsoidGeodesic, Ellipsoid } = Cesium\n  ellipsoid = ellipsoid || Ellipsoid.WGS84\n  const pickedPointCartographic = ellipsoid.cartesianToCartographic(start)\n  const lastPointCartographic = ellipsoid.cartesianToCartographic(end)\n  const geodesic = new EllipsoidGeodesic(pickedPointCartographic, lastPointCartographic)\n  return geodesic.surfaceDistance\n}\n\nexport function getHeadingPitchRoll(start: Cesium.Cartesian3, end: Cesium.Cartesian3, scene: Cesium.Scene, result?: Array<number>) {\n  const { Camera, Cartesian3, Math: CesiumMath } = Cesium\n  const camera = new Camera(scene)\n  if (Cartesian3.equals(start, end)) {\n    return undefined\n  }\n\n  let direction = Cartesian3.subtract(end, start, {} as any)\n  direction = Cartesian3.normalize(direction, direction)\n  let up = Cartesian3.subtract(start, new Cartesian3(), {} as any)\n  up = Cartesian3.normalize(up, up)\n  camera.setView({\n    destination: start,\n    orientation: {\n      direction,\n      up\n    }\n  })\n\n  result = result || [0, 0, 0]\n  let heading = camera.heading\n  heading -= CesiumMath.PI_OVER_TWO\n  if (heading < 0) {\n    heading += CesiumMath.TWO_PI\n  }\n  result.splice(0, result.length, heading, camera.pitch, camera.roll)\n  return result\n}\n\nexport function getPolylineSegmentEndpoint(start: Cesium.Cartesian3, heading: number, distance: number, ellipsoid: Cesium.Ellipsoid) {\n  const { HeadingPitchRoll, Transforms, Matrix4, Cartesian3, Cartesian4, Quaternion, Cartographic, Ellipsoid } = Cesium\n  ellipsoid = ellipsoid || Ellipsoid.WGS84\n  const hpr = new HeadingPitchRoll(heading, 0, 0)\n  const scale = new Cartesian3(1, 1, 1)\n  const matrix = Transforms.headingPitchRollToFixedFrame(start, hpr)\n  const translation = Matrix4.getColumn(matrix, 1, new Cartesian4())\n  const axis = new Cartesian3(translation.x, translation.y, translation.z)\n  const quaternion = Quaternion.fromAxisAngle(axis, distance * ellipsoid.oneOverRadii.x)\n  const hprMatrix = Matrix4.fromTranslationQuaternionRotationScale(Cartesian3.ZERO, quaternion, scale)\n  const position = Matrix4.multiplyByPoint(hprMatrix, start, new Cartesian3())\n  const startCartographic = Cartographic.fromCartesian(start, ellipsoid)\n  const positionCartographic = Cartographic.fromCartesian(position, ellipsoid)\n  positionCartographic.height = startCartographic.height\n  return Cartographic.toCartesian(positionCartographic, ellipsoid)\n}\n\nexport function calculateAreaByPostions(positions: Array<Cesium.Cartesian3>) {\n  let area = 0\n  const { CoplanarPolygonGeometry, VertexFormat, defined, Cartesian3 } = Cesium\n  const geometry = CoplanarPolygonGeometry.createGeometry(\n    CoplanarPolygonGeometry.fromPositions({\n      positions: positions,\n      vertexFormat: VertexFormat.POSITION_ONLY\n    })\n  )\n\n  if (!isUndefined(geometry) && defined(geometry)) {\n    const indices = geometry.indices\n    const positionValues = geometry.attributes.position.values as number[]\n    for (let i = 0; i < indices.length; i += 3) {\n      const indice0 = indices[i]\n      const indice1 = indices[i + 1]\n      const indice2 = indices[i + 2]\n\n      area += triangleArea(\n        Cartesian3.unpack(positionValues, 3 * indice0, {} as any),\n        Cartesian3.unpack(positionValues, 3 * indice1, {} as any),\n        Cartesian3.unpack(positionValues, 3 * indice2, {} as any)\n      )\n    }\n  }\n\n  return area\n}\n\nconst triangleArea = (vertexA, vertexB, vertexC) => {\n  const { Cartesian3 } = Cesium\n  const vectorBA = Cartesian3.subtract(vertexA, vertexB, {} as any)\n  const vectorBC = Cartesian3.subtract(vertexC, vertexB, {} as any)\n  const crossProduct = Cartesian3.cross(vectorBA, vectorBC, vectorBA)\n  return 0.5 * Cartesian3.magnitude(crossProduct)\n}\n\nconst restoreCursors: Array<string> = []\nexport function setViewerCursor(viewer: Cesium.Viewer, cursor: string) {\n  const restoreCursor = getComputedStyle(viewer.canvas).cursor\n  restoreCursors[restoreCursors.length - 1] !== restoreCursor && restoreCursors.push(restoreCursor)\n  viewer.canvas.setAttribute('style', `cursor: ${cursor}`)\n}\n\nexport function restoreViewerCursor(viewer: Cesium.Viewer, count = 1) {\n  for (let i = 0; i < count; i++) {\n    const cursor = restoreCursors.pop()\n    viewer.canvas.setAttribute('style', `cursor: ${cursor}`)\n  }\n}\n\nexport function makeJulianDate(val: string | Date | Cesium.JulianDate): Cesium.JulianDate {\n  const { JulianDate } = Cesium\n  if (val instanceof JulianDate) {\n    return val\n  } else if (isString(val)) {\n    return Cesium.JulianDate.fromIso8601(val)\n  } else if (val instanceof Date) {\n    return Cesium.JulianDate.fromDate(val)\n  }\n\n  return Cesium.JulianDate.now()\n}\n\nexport function getPolylineSegmentHeading(start: Cesium.Cartesian3, end: Cesium.Cartesian3) {\n  const { Cartesian3, Matrix4, Transforms, Math: CesiumMath } = Cesium\n  const cartesian3Scratch = new Cartesian3()\n  const matrix4Scratch = Transforms.eastNorthUpToFixedFrame(start)\n  Matrix4.inverse(matrix4Scratch, matrix4Scratch)\n  Matrix4.multiplyByPoint(matrix4Scratch, end, cartesian3Scratch)\n  Cartesian3.normalize(cartesian3Scratch, cartesian3Scratch)\n  return CesiumMath.toDegrees(Math.atan2(cartesian3Scratch.x, cartesian3Scratch.y))\n}\n\nexport function getPolylineSegmentPitch(start: Cesium.Cartesian3, end: Cesium.Cartesian3) {\n  const { Cartesian3, Matrix4, Transforms, Math: CesiumMath } = Cesium\n  const cartesian3Scratch = new Cartesian3()\n  const matrix4Scratch = Transforms.eastNorthUpToFixedFrame(start)\n  Matrix4.inverse(matrix4Scratch, matrix4Scratch)\n  Matrix4.multiplyByPoint(matrix4Scratch, end, cartesian3Scratch)\n  Cartesian3.normalize(cartesian3Scratch, cartesian3Scratch)\n  return CesiumMath.toDegrees(Math.asin(cartesian3Scratch.z))\n}\n\nexport function getFirstIntersection(\n  start: Cesium.Cartesian3,\n  end: Cesium.Cartesian3,\n  viewer: Cesium.Viewer,\n  objectsToExclude = []\n): Cesium.Cartesian3 {\n  const { Cartesian3, Ray, defined } = Cesium\n  const direction = Cartesian3.normalize(Cartesian3.subtract(end, start, new Cartesian3()), new Cartesian3())\n  const ray = new Ray(start, direction)\n  const result = viewer.scene.pickFromRay(ray, objectsToExclude)\n  if (defined(result)) {\n    if (defined(result.position)) {\n      const intersection = result.position\n      return intersection\n    }\n  }\n\n  return undefined\n}\n\n// 粗略计算\nexport function heightToLevel(altitude: number) {\n  const A = 40487.57\n  const B = 0.00007096758\n  const C = 91610.74\n  const D = -40467.74\n\n  return Math.round(D + (A - D) / (1 + Math.pow(altitude / C, B)))\n}\n","import { hasOwn, isObject, isFunction, isArray } from './util'\n\nimport {\n  makeDistanceDisplayCondition,\n  makeCartesian2,\n  makeCartesian2Array,\n  makeCartesian3,\n  makeColor,\n  makeColors,\n  makeNearFarScalar,\n  makeMaterial,\n  makeCartesian3Array,\n  makeRectangle,\n  makeBoundingRectangle,\n  makePlane,\n  makePolygonHierarchy,\n  makeTranslationRotationScale,\n  makeQuaternion,\n  makeOptions,\n  makeAppearance\n} from './cesium-helpers'\nimport type { PropType } from 'vue'\nimport type {\n  VcPosition,\n  VcRectangle,\n  VcAppearance,\n  VcColor,\n  ProjectionTransforms,\n  VcCallbackPropertyFunction,\n  VcDistanceDisplayCondition,\n  VcCartesian2,\n  VcCartesian3Array,\n  VcCartesian2Array,\n  VcNearFarScalar,\n  VcPolygonHierarchy,\n  VcMaterial,\n  VcBoundingRectangle\n} from './types'\n\n// 下面属性作为实体加载时 可以传 Function\n// Entity start\n/**\n * @const {Object, Array, Function}  position mixin\n * 坐标位置属性。\n * @example\n * :position = { lng: number, lat: number, height: number }\n * :position = { x: number, y: number, z: number }\n * :position = [number, number, number]\n */\nconst position = {\n  /**\n   * A Property specifying the entity position.\n   */\n  position: {\n    type: [Object, Array, Function] as PropType<VcPosition>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3,\n      deep: true // 在 use-common 中已将 SampledPositionProperty 类型的 deep 设为 false\n    }\n  }\n}\n\nconst viewFrom = {\n  /**\n   * A suggested initial offset for viewing this object.\n   */\n  viewFrom: {\n    type: [Object, Array, Function] as PropType<VcPosition>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3,\n      deep: true\n    }\n  }\n}\n\n/**\n * @const {Object, Array, Function} orientation mixin\n */\nconst orientation = {\n  orientation: {\n    type: [Object, Array, Function] as PropType<Cesium.Quaternion>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeQuaternion\n    }\n  }\n}\n// Entity end\n\n// BillboardGraphics start\n/**\n * @const {Object, Array, Function} alignedAxis mixin\n */\nconst alignedAxis = {\n  alignedAxis: {\n    type: [Object, Array, Function] as PropType<VcPosition>,\n    default: () => {\n      return {\n        x: 0,\n        y: 0,\n        z: 0\n      }\n    },\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3\n    }\n  }\n}\n\n/**\n * @const {Object, String, Array, Function} color mixin\n */\nconst color = {\n  color: {\n    type: [Object, String, Array, Function] as PropType<VcColor>,\n    default: 'white',\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  }\n}\nconst depthFailColor = {\n  depthFailColor: {\n    type: [Object, String, Array, Function] as PropType<VcColor>,\n    default: 'white',\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  }\n}\n\n/**\n * @const {Number, Object, Function} disableDepthTestDistance mixin\n */\nconst disableDepthTestDistance = {\n  disableDepthTestDistance: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\n}\n\n/**\n * @const {Object, Array, Function}  distanceDisplayCondition mixin\n */\nconst distanceDisplayCondition = {\n  distanceDisplayCondition: {\n    type: [Object, Array, Function] as PropType<VcDistanceDisplayCondition>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeDistanceDisplayCondition\n    }\n  }\n}\n\n/**\n * @const {Object, Array, Function}  eyeOffset mixin\n */\nconst eyeOffset = {\n  eyeOffset: {\n    type: [Object, Array, Function] as PropType<VcPosition>,\n    default: () => {\n      return {\n        x: 0,\n        y: 0,\n        z: 0\n      }\n    },\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3\n    }\n  }\n}\n\n/**\n * @const {Number, Object, Function} height mixin\n */\nconst height = {\n  height: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\n}\n\n/**\n * @const {Number, Object, Function} heightReference mixin\n */\nconst heightReference = {\n  heightReference: {\n    type: [Number, Object, Function] as PropType<number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\n    // default: 0\n  }\n}\n\n/**\n * @const {Number, Object, Function} horizontalOrigin mixin\n */\nconst horizontalOrigin = {\n  horizontalOrigin: {\n    type: [Number, Object, Function] as PropType<number | Cesium.HorizontalOrigin | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\n    default: 0\n  }\n}\n\n/**\n * @const {String, Object, HTMLCanvasElement, Function} image mixin\n */\nconst image = {\n  image: [String, Object, HTMLCanvasElement, Function] as PropType<\n    string | HTMLCanvasElement | Cesium.CallbackProperty | VcCallbackPropertyFunction<string>\n  >\n}\n\n/**\n * @const {Object, Array, Function} imageSubRegion mixin\n */\nconst imageSubRegion = {\n  imageSubRegion: {\n    type: [Object, Array, Function] as PropType<VcBoundingRectangle>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeBoundingRectangle\n    }\n  }\n}\n\n/**\n * @const {Object, Array, Function}  pixelOffset mixin\n */\nconst pixelOffset = {\n  pixelOffset: {\n    type: [Object, Array, Function] as PropType<VcCartesian2>,\n    default: () => {\n      return {\n        x: 0,\n        y: 0\n      }\n    },\n    validator: v => {\n      if (isArray(v)) {\n        return v.length === 2\n      }\n      if (isObject(v)) {\n        return hasOwn(v, 'x') && hasOwn(v, 'y')\n      }\n\n      if (isFunction(v)) {\n        return true\n      }\n\n      return false\n    },\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian2\n    }\n  }\n}\n\n/**\n * @const {Object, Array, Function} pixelOffsetScaleByDistance mixin\n */\nconst pixelOffsetScaleByDistance = {\n  pixelOffsetScaleByDistance: {\n    type: [Object, Array, Function] as PropType<VcNearFarScalar>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeNearFarScalar\n    }\n  }\n}\n\n/**\n * @const {Number, Object, Function} rotation mixin\n */\nconst rotation = {\n  rotation: {\n    type: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\n    default: 0\n  }\n}\n\n/**\n * @const {Number, Object, Function} scale mixin\n */\nconst scale = {\n  scale: {\n    type: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\n    default: 1.0\n  }\n}\n\n/**\n * @const {Object, Array, Function} scaleByDistance mixin\n */\nconst scaleByDistance = {\n  scaleByDistance: {\n    type: [Object, Array, Function] as PropType<VcNearFarScalar>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeNearFarScalar\n    }\n  }\n}\n\n/**\n * @const {Boolean, Object, Function}  show mixin\n */\nconst show = {\n  show: {\n    type: [Boolean, Object, Function] as PropType<boolean>,\n    default: true\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} sizeInMeters mixin\n */\nconst sizeInMeters = {\n  sizeInMeters: {\n    type: [Boolean, Object, Function] as PropType<boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>>,\n    default: false\n  }\n}\n\n/**\n * @const {Object, Array, Function} translucencyByDistance mixin\n */\nconst translucencyByDistance = {\n  translucencyByDistance: {\n    type: [Object, Array, Function] as PropType<VcNearFarScalar>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeNearFarScalar\n    }\n  }\n}\n\n/**\n * @const {Number, Object, Function}  verticalOrigin mixin\n */\nconst verticalOrigin = {\n  verticalOrigin: {\n    type: [Number, Object, Function] as PropType<number | Cesium.VerticalOrigin | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\n    default: 0\n  }\n}\n\n/**\n * @const {Number, Object, Function} width mixin\n */\nconst width = {\n  width: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\n}\n// BillboardGraphics end\n\n// BoxGraphics start\n/**\n * @const {Object, Array, Function} dimensions mixin\n * // 和 PlaneGraphics.dimensions 区分\n */\nconst dimensions = {\n  dimensions: {\n    type: [Object, Array, Function] as PropType<VcPosition>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3\n    }\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} fill mixin\n */\nconst fill = {\n  fill: {\n    type: [Boolean, Object, Function] as PropType<boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>>,\n    default: true\n  }\n}\n\n/**\n * @const {Object, String, Array, Function} material mixin\n */\nconst material = {\n  material: {\n    type: [Object, String, Array, Function] as PropType<VcMaterial>,\n    default: 'white',\n    watcherOptions: {\n      cesiumObjectBuilder: makeMaterial\n    }\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} outline mixin\n */\nconst outline = {\n  outline: {\n    type: [Boolean, Object, Function] as PropType<boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>>,\n    default: false\n  }\n}\n\n/**\n * @const {Object, String, Array, Function} outlineColor mixin\n */\nconst outlineColor = {\n  outlineColor: {\n    type: [Object, String, Array, Function] as PropType<VcColor>,\n    default: 'black',\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  }\n}\n\n/**\n * @const {Number, Object, Function} outlineWidth mixin\n */\nconst outlineWidth = {\n  outlineWidth: {\n    type: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\n    default: 1.0\n  }\n}\n\n/**\n * @const {Number, Object, Function} shadows mixin\n */\nconst shadows = {\n  shadows: [Number, Object, Function] as PropType<number | Cesium.ShadowMode | VcCallbackPropertyFunction<number>>\n}\n// BoxGraphics end\n\n// CorridorGraphics start\n/**\n * @const {Array, Object, Function} positions mixin\n */\nconst positions = {\n  positions: {\n    type: [Array, Object, Function] as PropType<VcCartesian3Array>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3Array,\n      exclude: '_callback',\n      deep: true\n    }\n  }\n}\n\n/**\n * @const {Number, Object, Function} extrudedHeight mixin\n */\nconst extrudedHeight = {\n  extrudedHeight: [Number, Object, Function]\n}\n\n/**\n * @const {Number, Object, Function} extrudedHeightReference mixin\n */\nconst extrudedHeightReference = {\n  extrudedHeightReference: [Number, Object, Function]\n}\n\n/**\n * @const {Number, Object, Function} cornerType mixin\n */\nconst cornerType = {\n  cornerType: {\n    type: [Number, Object, Function],\n    default: 0\n  }\n}\n\n/**\n * @const {Number, Object, Function} granularity mixin\n */\nconst granularity = {\n  granularity: [Number, Object, Function]\n}\n\n/**\n * @const {Number, Object, Function} classificationType mixin\n */\nconst classificationType = {\n  classificationType: {\n    type: [Number, Object, Function] as PropType<number | Cesium.ClassificationType | VcCallbackPropertyFunction<Cesium.ClassificationType>>\n  }\n}\n\n/**\n * @const {Number, Object, Function} zIndex mixin\n */\nconst zIndex = {\n  zIndex: [Number, Object, Function]\n}\n// CorridorGraphics end\n\n// CylinderGraphics start\n\n/**\n * @const {Number, Object, Function} length mixin\n */\nconst length = {\n  length: [Number, Object, Function]\n}\n\n/**\n * @const {Number, Object, Function} topRadius mixin\n */\nconst topRadius = {\n  topRadius: [Number, Object, Function]\n}\n\n/**\n * @const {Number, Object, Function} bottomRadius mixin\n */\nconst bottomRadius = {\n  bottomRadius: [Number, Object, Function]\n}\n\n/**\n * @const {Number, Object, Function} numberOfVerticalLines mixin\n */\nconst numberOfVerticalLines = {\n  numberOfVerticalLines: {\n    type: [Number, Object, Function],\n    default: 16\n  }\n}\n\n/**\n * @const {Number, Object, Function} slices mixin\n */\nconst slices = {\n  slices: {\n    type: [Number, Object, Function],\n    default: 128\n  }\n}\n// CylinderGraphics end\n\n// EllipseGraphics start\n/**\n * @const {Number, Object, Function} semiMajorAxis mixin\n */\nconst semiMajorAxis = {\n  semiMajorAxis: [Number, Object, Function]\n}\n\n/**\n * @const {Number, Object, Function} semiMinorAxis mixin\n */\nconst semiMinorAxis = {\n  semiMinorAxis: [Number, Object, Function]\n}\n\n/**\n * @const {Number, Object, Function} stRotation mixin\n */\nconst stRotation = {\n  stRotation: {\n    type: [Number, Object, Function],\n    default: 0.0\n  }\n}\n// EllipseGraphics end\n\n// EllipsoidGraphics start\n/**\n * @const {Number, Object, Function} radii mixin\n */\nconst radii = {\n  radii: {\n    type: [Object, Array, Function] as PropType<VcPosition>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3\n    }\n  }\n}\n\n/**\n * @const {Object, Array, Function} innerRadii mixin\n */\nconst innerRadii = {\n  innerRadii: {\n    type: [Object, Array, Function] as PropType<VcPosition>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3\n    }\n  }\n}\n\n/**\n * @const {Number, Object, Function} minimumClock mixin\n */\nconst minimumClock = {\n  minimumClock: {\n    type: [Number, Object, Function],\n    default: 0.0\n  }\n}\n/**\n * @const {Number, Object, Function} maximumClock mixin\n */\nconst maximumClock = {\n  maximumClock: {\n    type: [Number, Object, Function],\n    default: 2 * Math.PI\n  }\n}\n/**\n * @const {Number, Object, Function} minimumCone mixin\n */\nconst minimumCone = {\n  minimumCone: {\n    type: [Number, Object, Function],\n    default: 0.0\n  }\n}\n/**\n * @const {Number, Object, Function} maximumCone mixin\n */\nconst maximumCone = {\n  maximumCone: {\n    type: [Number, Object, Function],\n    default: Math.PI\n  }\n}\n\n/**\n * @const {Number, Object, Function} stackPartitions mixin\n */\nconst stackPartitions = {\n  stackPartitions: {\n    type: [Number, Object, Function],\n    default: 64\n  }\n}\n\n/**\n * @const {Number, Object, Function} slicePartitions mixin\n */\nconst slicePartitions = {\n  slicePartitions: {\n    type: [Number, Object, Function],\n    default: 64\n  }\n}\n\n/**\n * @const {Number, Object, Function} subdivisions mixin\n */\nconst subdivisions = {\n  subdivisions: {\n    type: [Number, Object, Function] as PropType<number>,\n    default: 128\n  }\n}\n// EllipsoidGraphics end\n\n// LabelGraphics start\n/**\n * @const {String, Object, Function} text mixin\n */\nconst text = {\n  text: [String, Object, Function]\n}\n\n/**\n * @const {String, Object, Function} font mixin\n */\nconst font = {\n  font: {\n    type: [String, Object, Function],\n    default: '30px sans-serif'\n  }\n}\n\n/**\n * @const {Number, Object, Function} labelStyle mixin\n */\nconst labelStyle = {\n  labelStyle: {\n    type: [Number, Object, Function] as PropType<number | Cesium.LabelStyle | VcCallbackPropertyFunction<number>>,\n    default: 0\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} showBackground mixin\n */\nconst showBackground = {\n  showBackground: {\n    type: [Boolean, Object, Function],\n    default: false\n  }\n}\n\n/**\n * @const {Object, String, Array, Function} backgroundColor mixin\n */\nconst backgroundColor = {\n  backgroundColor: {\n    type: [Object, String, Array, Function] as PropType<VcColor>,\n    default: () => {\n      return { x: 0.165, y: 0.165, z: 0.165, w: 0.8 }\n    },\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  }\n}\n\n/**\n * @const {Object, Array, Function} backgroundPadding mixin\n */\nconst backgroundPadding = {\n  backgroundPadding: {\n    type: [Object, Array, Function] as PropType<VcCartesian2>,\n    default: () => {\n      return { x: 7, y: 5 }\n    },\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian2\n    }\n  }\n}\n\n/**\n * @const {Object, String, Array, Function} fillColor mixin\n */\nconst fillColor = {\n  fillColor: {\n    type: [Object, String, Array, Function] as PropType<VcColor>,\n    default: 'white',\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  }\n}\n// LabelGraphics end\n\n// ModelGraphics start\n/**\n * @const {String, Object, Function} uri mixin\n */\nconst uri = {\n  uri: [String, Object, Function]\n}\n\n/**\n * @const {Number, Object, Function} minimumPixelSize mixin\n */\nconst minimumPixelSize = {\n  minimumPixelSize: {\n    type: [Number, Object, Function],\n    default: 0.0\n  }\n}\n\n/**\n * @const {Number, Object, Function} maximumScale mixin\n */\nconst maximumScale = {\n  maximumScale: [Number, Object, Function]\n}\n\n/**\n * @const {Boolean, Object, Function} incrementallyLoadTextures mixin\n */\nconst incrementallyLoadTextures = {\n  incrementallyLoadTextures: {\n    type: [Boolean, Object, Function],\n    default: true\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} clampAnimations mixin\n */\nconst runAnimations = {\n  clampAnimations: {\n    type: [Boolean, Object, Function],\n    default: true\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} clampAnimations mixin\n */\nconst clampAnimations = {\n  clampAnimations: {\n    type: [Boolean, Object, Function],\n    default: true\n  }\n}\n\n/**\n * @const {Object, String, Array, Function} silhouetteColor mixin\n */\nconst silhouetteColor = {\n  silhouetteColor: {\n    type: [Object, String, Array, Function] as PropType<VcColor>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  }\n}\n\n/**\n * @const {Number, Object, Function} silhouetteSize mixin\n */\nconst silhouetteSize = {\n  silhouetteSize: {\n    type: [Number, Object, Function],\n    default: 0.0\n  }\n}\n\n/**\n * @const {Number, Object, Function} colorBlendMode mixin\n */\nconst colorBlendMode = {\n  colorBlendMode: {\n    type: [Number, Object, Function] as PropType<number | Cesium.ColorBlendMode | VcCallbackPropertyFunction<number>>,\n    default: 0\n  }\n}\n\n/**\n * @const {Number, Object, Function} colorBlendAmount mixin\n */\nconst colorBlendAmount = {\n  colorBlendAmount: {\n    type: [Number, Object, Function],\n    default: 0.5\n  }\n}\n\n/**\n * @const {Object, Array, Function} imageBasedLightingFactor mixin\n */\nconst imageBasedLightingFactor = {\n  imageBasedLightingFactor: {\n    type: [Object, Array, Function] as PropType<VcCartesian2>,\n    default: () => [1.0, 1.0],\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian2\n    }\n  }\n}\n\n/**\n * @const {Object, String, Array, Function} lightColor mixin\n * 注意区别 Cesium3DTileset 的 lightColor\n */\nconst lightColor = {\n  lightColor: {\n    type: [Object, String, Array, Function] as PropType<VcColor>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  }\n}\n\n/**\n * @const {Object, Function} nodeTransformations mixin\n */\nconst nodeTransformations = {\n  nodeTransformations: {\n    type: [Object, Function] as PropType<Cesium.TranslationRotationScale>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeTranslationRotationScale\n    }\n  }\n}\n\n/**\n * @const {Object, Function} articulations mixin\n */\nconst articulations = {\n  articulations: [Object, Function]\n}\n\n/**\n * @const {Object} clippingPlanes mixin\n */\nconst clippingPlanes = {\n  clippingPlanes: [Object, Function] as PropType<Cesium.ClippingPlaneCollection | VcCallbackPropertyFunction<Cesium.ClippingPlaneCollection>>\n}\n// ModelGraphics end\n\n// PathGraphics start\n// PathGraphics end\n\n// PlaneGraphics start\n/**\n * @const {Object, Array, Function} plane mixin\n */\nconst plane = {\n  plane: {\n    type: [Object, Array, Function] as PropType<Cesium.Plane>,\n    watcherOptions: {\n      cesiumObjectBuilder: makePlane\n    }\n  }\n}\n// PlaneGraphics end\n\n// PointGraphics start\n/**\n * @const {Number, Object, Function} pixelSize mixin\n */\nconst pixelSize = {\n  pixelSize: {\n    type: [Number, Object, Function],\n    default: 1\n  }\n}\n// PointGraphics end\n\n// PolygonGraphics start\n\n/**\n * @const {Object, Array, Function} hierarchy mixin\n */\nconst hierarchy = {\n  hierarchy: {\n    type: [Object, Array, Function] as PropType<VcPolygonHierarchy>,\n    watcherOptions: {\n      cesiumObjectBuilder: makePolygonHierarchy,\n      deep: true,\n      exclude: '_callback'\n    }\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} perPositionHeight mixin\n */\nconst perPositionHeight = {\n  perPositionHeight: {\n    type: [Boolean, Object, Function],\n    default: false\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} closeTop mixin\n */\nconst closeTop = {\n  closeTop: {\n    type: [Boolean, Object, Function],\n    default: true\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} closeBottom mixin\n */\nconst closeBottom = {\n  closeBottom: {\n    type: [Boolean, Object, Function],\n    default: true\n  }\n}\n\n/**\n * @const {Number, Object, Function} arcType mixin\n */\nconst arcType = {\n  arcType: {\n    type: [Number, Object, Function],\n    default: 1\n  }\n}\n// PolygonGraphics end\n\n// PolylineGraphics start\n/**\n * @const {Object, String, Array, Function} depthFailMaterial  mixin\n */\nconst depthFailMaterial = {\n  depthFailMaterial: {\n    type: [Object, String, Array, Function] as PropType<VcMaterial>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeMaterial\n    }\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} clampToGround mixin\n */\nconst clampToGround = {\n  clampToGround: {\n    type: [Boolean, Object, Function],\n    default: false\n  }\n}\n// PolylineGraphics end\n\n// PolylineVolumeGraphics start\n/**\n * @const {Array, Object, Function} shape mixin\n */\nconst shape = {\n  shape: {\n    type: [Array, Object, Function] as PropType<VcCartesian2Array>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian2Array\n    }\n  }\n}\n// PolylineVolumeGraphics end\n\n// RectangleGraphics start\n/**\n * @const {Object, Array, Function} coordinates mixin\n */\nconst coordinates = {\n  coordinates: {\n    type: [Object, Array, Function] as PropType<VcRectangle>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeRectangle\n    }\n  }\n}\n// RectangleGraphics end\n\n// Cesium3DTilesetGraphics start\n/**\n * @const {Number, Object, Function} maximumScreenSpaceError mixin\n */\nconst maximumScreenSpaceError = {\n  maximumScreenSpaceError: {\n    type: [Number, Object, Function],\n    default: 16\n  }\n}\n// Cesium3DTilesetGraphics end\n\n// WallGraphics start\n/**\n * @const {Array, Object, Function} minimumHeights mixin\n */\nconst minimumHeights = {\n  minimumHeights: [Array, Object, Function]\n}\n\n/**\n * @const {Array, Object, Function} maximumHeights mixin\n */\nconst maximumHeights = {\n  maximumHeights: [Array, Object, Function]\n}\n// WallGraphics end\n// Entity end\n\n// ImageryLayer start\n/**\n * @const {Object, Array} cutoutRectangle mixin\n */\nconst cutoutRectangle = {\n  cutoutRectangle: {\n    type: [Object, Array] as PropType<VcRectangle>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeRectangle\n    }\n  }\n}\n\n/**\n * @const {Object, String, Array} colorToAlpha mixin\n */\nconst colorToAlpha = {\n  colorToAlpha: {\n    type: [Object, String, Array] as PropType<VcColor>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  }\n}\n// ImageryLayer end\n\n// imageryProvider\n/**\n * @const {String, Object} url mixin\n */\nconst url = {\n  url: [String, Object] as PropType<string | Cesium.Resource>\n}\n\n/**\n * @const {String} token mixin\n */\nconst token = {\n  token: String\n}\n\n/**\n * @const {Object} tileDiscardPolicy mixin\n */\nconst tileDiscardPolicy = {\n  tileDiscardPolicy: Object as PropType<Cesium.DiscardMissingTileImagePolicy | Cesium.NeverTileDiscardPolicy>\n}\n\n/**\n * @const {String} layers mixin\n */\nconst layers = {\n  layers: String\n}\n\n/**\n * @const {Boolean} enablePickFeatures mixin\n */\nconst enablePickFeatures = {\n  enablePickFeatures: {\n    type: Boolean,\n    default: true\n  }\n}\n\n/**\n * @const {Object, Array} rectangle mixin\n */\nconst rectangle = {\n  rectangle: {\n    type: [Object, Array] as PropType<VcRectangle>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeRectangle\n    }\n  }\n}\n\n/**\n * @const {Object} tilingScheme mixin\n */\nconst tilingScheme = {\n  tilingScheme: Object as PropType<Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme>\n}\n\n/**\n * @const {Object} ellipsoid mixin\n */\nconst ellipsoid = {\n  ellipsoid: Object as PropType<Cesium.Ellipsoid>\n}\n\n/**\n * @const {String, Object} credit mixin\n */\nconst credit = {\n  credit: {\n    type: [String, Object] as PropType<string | Cesium.Credit>,\n    default: ''\n  }\n}\n\n/**\n * @const {Number} tileWidth mixin\n */\nconst tileWidth = {\n  tileWidth: {\n    type: Number,\n    default: 256\n  }\n}\n\n/**\n * @const {Number} tileHeight mixin\n */\nconst tileHeight = {\n  tileHeight: {\n    type: Number,\n    default: 256\n  }\n}\n\n/**\n * @const {Number} maximumLevel mixin\n */\nconst maximumLevel = {\n  maximumLevel: Number\n}\n\n/**\n * @const {Number} minimumLevel mixin\n */\nconst minimumLevel = {\n  minimumLevel: {\n    type: Number,\n    default: 0\n  }\n}\n\n/**\n * @const {String} fileExtension mixin\n */\nconst fileExtension = {\n  fileExtension: {\n    type: String,\n    default: 'png'\n  }\n}\n\n/**\n * @const {String} accessToken mixin\n */\nconst accessToken = {\n  accessToken: String\n}\n\n/**\n * @const {String} format mixin\n */\nconst format = {\n  format: {\n    type: String,\n    default: 'png'\n  }\n}\n\n/**\n * @const {String, Array} subdomains mixin\n */\nconst subdomains = {\n  subdomains: [String, Array] as PropType<string | Array<string>>\n}\n\n/**\n * @const {Array} getFeatureInfoFormats mixin\n */\nconst getFeatureInfoFormats = {\n  getFeatureInfoFormats: Array as PropType<Array<Cesium.GetFeatureInfoFormat>>\n}\n\n/**\n * @const {Object} clock mixin\n */\nconst clock = {\n  clock: Object as PropType<Cesium.Clock>\n}\n\n/**\n * @const {Object} times mixin\n */\nconst times = {\n  times: Object as PropType<Cesium.TimeIntervalCollection>\n}\n\nconst projectionTransforms = {\n  projectionTransforms: {\n    type: [Boolean, Object] as PropType<ProjectionTransforms>,\n    default: false\n  }\n}\n// primitive 相关\n\n/**\n * @const {Boolean}\n * allowPicking\n */\nconst allowPicking = {\n  allowPicking: {\n    type: Boolean,\n    default: true\n  }\n}\n\n/**\n * @const {Boolean}\n * asynchronous\n */\nconst asynchronous = {\n  asynchronous: {\n    type: Boolean,\n    default: true\n  }\n}\n\n/**\n * @const {Boolean} debugShowShadowVolume mixin\n */\nconst debugShowShadowVolume = {\n  debugShowShadowVolume: {\n    type: Boolean,\n    default: false\n  }\n}\n\n/**\n * @const {Boolean} releaseGeometryInstances mixin\n */\nconst releaseGeometryInstances = {\n  releaseGeometryInstances: {\n    type: Boolean,\n    default: true\n  }\n}\n\n/**\n * @const {Boolean} interleave mixin\n */\nconst interleave = {\n  interleave: {\n    type: Boolean,\n    default: false\n  }\n}\n\n/**\n * @const {Object} appearance mixin\n */\nconst appearance = {\n  appearance: {\n    type: Object as PropType<VcAppearance>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeAppearance,\n      deep: true // 在 use-common 中已将 CesiumAppearance 类型的 deep 设为 false\n    }\n  }\n}\n\nconst depthFailAppearance = {\n  depthFailAppearance: {\n    type: Object as PropType<VcAppearance>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeAppearance,\n      deep: true\n    }\n  }\n}\n\n/**\n * @const {Array, Object} geometryInstances mixin\n */\nconst geometryInstances = {\n  geometryInstances: [Array, Object] as PropType<Cesium.GeometryInstance | Array<Cesium.GeometryInstance>>\n}\n\n/**\n * @const {Boolean}\n * vertexCacheOptimize\n */\nconst vertexCacheOptimize = {\n  vertexCacheOptimize: {\n    type: Boolean,\n    default: false\n  }\n}\n/**\n * @const {Boolean}\n * compressVertices\n */\nconst compressVertices = {\n  compressVertices: {\n    type: Boolean,\n    default: true\n  }\n}\n\n/**\n * @const {Object} modelMatrix mixin\n */\nconst modelMatrix = {\n  modelMatrix: Object as PropType<Cesium.Matrix4>\n}\n\n/**\n * @const {Boolean} debugShowBoundingVolume mixin\n */\nconst debugShowBoundingVolume = {\n  debugShowBoundingVolume: {\n    tyep: Boolean,\n    default: false\n  }\n}\n\n/**\n * @const {Object} scene mixin\n */\nconst scene = {\n  scene: Object as PropType<Cesium.Scene>\n}\n\n/**\n * @const {Number} blendOption mixin\n */\nconst blendOption = {\n  blendOption: {\n    type: Number as PropType<number | Cesium.BlendOption>,\n    default: 2\n  }\n}\n\n/**\n * @const {*} id mixin\n */\nconst id = {\n  id: null as unknown as PropType<any>\n}\n\n/**\n * @const {Boolean} loop mixin\n */\nconst loop = {\n  loop: {\n    type: Boolean,\n    default: false\n  }\n}\n\n/**\n * @const {Boolean} debugWireframe mixin\n */\nconst debugWireframe = {\n  debugWireframe: {\n    type: Boolean,\n    default: false\n  }\n}\n\n// geometry 相关\n\n/**\n * @const {Object} vertexFormat mixin\n */\nconst vertexFormat = {\n  vertexFormat: Object as PropType<Cesium.VertexFormat>\n}\n\n/**\n * @const {Object, Array} center mixin\n */\nconst center = {\n  /**\n   * center\n   */\n  center: {\n    type: [Object, Array] as PropType<VcPosition>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3\n    }\n  }\n}\n\n/**\n * @const {Object} radius mixin\n */\nconst radius = {\n  radius: Number\n}\n\n/**\n * @const {Object} frustum mixin\n */\nconst frustum = {\n  frustum: Object\n}\n\n/**\n * @const {Object, Array} origin mixin\n */\nconst origin = {\n  origin: {\n    type: [Object, Array] as PropType<VcPosition>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3\n    }\n  }\n}\n\n/**\n * @const {Object} polygonHierarchy mixin\n */\nconst polygonHierarchy = {\n  polygonHierarchy: {\n    type: [Object, Array] as PropType<VcPolygonHierarchy>,\n    watcherOptions: {\n      cesiumObjectBuilder: makePolygonHierarchy,\n      deep: true\n    }\n  }\n}\n\n/**\n * @const {Object, String, Array} startColor mixin\n */\nconst startColor = {\n  startColor: {\n    type: [Object, String, Array] as PropType<VcColor>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  }\n}\n\n/**\n * @const {Object, String, Array} endColor mixin\n */\nconst endColor = {\n  endColor: {\n    type: [Object, String, Array] as PropType<VcColor>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  }\n}\n\n/**\n * @const {Object, Array} minimumImageSize mixin\n */\nconst minimumImageSize = {\n  minimumImageSize: {\n    type: [Object, Array] as PropType<VcCartesian2>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian2\n    }\n  }\n}\n\n/**\n * @const {Object, Array} maximumImageSize mixin\n */\nconst maximumImageSize = {\n  maximumImageSize: {\n    type: [Object, Array] as PropType<VcCartesian2>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian2\n    }\n  }\n}\n\n/**\n * @const {Object, Array} imageSize mixin\n */\nconst imageSize = {\n  imageSize: {\n    type: [Object, Array] as PropType<VcCartesian2>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian2\n    }\n  }\n}\n\n/**\n * @const {Array} shapePositions mixin\n */\nconst shapePositions = {\n  shapePositions: {\n    type: Array as PropType<VcCartesian2Array>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian2Array\n    }\n  }\n}\n\n/**\n * @const {Array} polylinePositions mixin\n */\nconst polylinePositions = {\n  polylinePositions: {\n    type: Array as PropType<VcCartesian3Array>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3Array\n    }\n  }\n}\n\n/**\n * @const {Object, String, Array} lightColor2 mixin\n * 用于 Cesium3DTileset 和 Model\n */\nconst lightColor2 = {\n  lightColor: {\n    type: [Object, Array] as PropType<VcPosition>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3\n    }\n  }\n}\n\n/**\n * @const {Number} luminanceAtZenith mixin\n */\nconst luminanceAtZenith = {\n  luminanceAtZenith: {\n    type: Number,\n    default: 0.2\n  }\n}\n\n/**\n * @const {Array, Object} sphericalHarmonicCoefficients mixin\n */\nconst sphericalHarmonicCoefficients = {\n  sphericalHarmonicCoefficients: {\n    type: [Array, Object] as PropType<VcCartesian3Array>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3Array\n    }\n  }\n}\n\n/**\n * @const {String} specularEnvironmentMaps mixin\n */\nconst specularEnvironmentMaps = {\n  specularEnvironmentMaps: String\n}\n\n/**\n * @const {Boolean} backFaceCulling mixin\n */\nconst backFaceCulling = {\n  backFaceCulling: {\n    type: Boolean,\n    default: true\n  }\n}\n\nconst colors = {\n  colors: {\n    type: Array as PropType<Array<VcColor>>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeColors\n    }\n  }\n}\n\n// datasouce\n/**\n * @const {String, Object} data mixin\n */\nconst data = {\n  data: {\n    type: [String, Object] as PropType<string | Cesium.Resource>,\n    required: true\n  }\n}\n\nconst sourceUri = {\n  sourceUri: {\n    type: [String, Object] as PropType<string | Cesium.Resource>\n  }\n}\n\n/**\n * @const {Object} options mixin\n */\nconst options = {\n  options: {\n    type: Object,\n    watcherOptions: {\n      cesiumObjectBuilder: makeOptions,\n      deep: true\n    }\n  }\n}\n\n// PostProcessStage start\n/**\n * @const {String, Array, Object} glowColor mixin\n */\nconst glowColor = {\n  glowColor: {\n    type: [String, Array, Object] as PropType<VcColor>,\n    default: () => [0.0, 1.0, 0.0, 0.05],\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  }\n}\n\n/**\n * @const {String, Array, Object} clearColor mixin\n */\nconst clearColor = {\n  clearColor: {\n    type: [String, Array, Object] as PropType<VcColor>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  }\n}\n\n/**\n * @const {Object, Array} scissorRectangle mixin\n */\nconst scissorRectangle = {\n  scissorRectangle: {\n    type: [Object, Array] as PropType<VcBoundingRectangle>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeBoundingRectangle\n    }\n  }\n}\n\n// PostProcessStage end\n\n// custom\nconst enableMouseEvent = {\n  enableMouseEvent: {\n    type: Boolean,\n    default: true\n  }\n}\nexport {\n  viewFrom,\n  projectionTransforms,\n  sourceUri,\n  colors,\n  enableMouseEvent,\n  backFaceCulling,\n  specularEnvironmentMaps,\n  sphericalHarmonicCoefficients,\n  luminanceAtZenith,\n  maximumScreenSpaceError,\n  runAnimations,\n  articulations,\n  scissorRectangle,\n  clearColor,\n  glowColor,\n  options,\n  data,\n  imageSubRegion,\n  coordinates,\n  nodeTransformations,\n  hierarchy,\n  plane,\n  colorToAlpha,\n  cutoutRectangle,\n  polylinePositions,\n  shapePositions,\n  imageSize,\n  maximumImageSize,\n  minimumImageSize,\n  endColor,\n  startColor,\n  shape,\n  lightColor,\n  lightColor2,\n  imageBasedLightingFactor,\n  polygonHierarchy,\n  orientation,\n  origin,\n  frustum,\n  maximumCone,\n  minimumCone,\n  maximumClock,\n  minimumClock,\n  innerRadii,\n  radius,\n  center,\n  debugWireframe,\n  vertexFormat,\n  position,\n  loop,\n  geometryInstances,\n  depthFailAppearance,\n  appearance,\n  interleave,\n  releaseGeometryInstances,\n  debugShowShadowVolume,\n  id,\n  allowPicking,\n  asynchronous,\n  vertexCacheOptimize,\n  compressVertices,\n  modelMatrix,\n  debugShowBoundingVolume,\n  scene,\n  blendOption,\n  maximumHeights,\n  minimumHeights,\n  arcType,\n  clampToGround,\n  closeBottom,\n  closeTop,\n  perPositionHeight,\n  pixelSize,\n  clippingPlanes,\n  colorBlendAmount,\n  colorBlendMode,\n  silhouetteSize,\n  silhouetteColor,\n  clampAnimations,\n  incrementallyLoadTextures,\n  maximumScale,\n  minimumPixelSize,\n  uri,\n  fillColor,\n  backgroundPadding,\n  backgroundColor,\n  showBackground,\n  labelStyle,\n  font,\n  text,\n  subdivisions,\n  slicePartitions,\n  stackPartitions,\n  radii,\n  stRotation,\n  semiMinorAxis,\n  semiMajorAxis,\n  slices,\n  numberOfVerticalLines,\n  bottomRadius,\n  topRadius,\n  length,\n  zIndex,\n  classificationType,\n  granularity,\n  cornerType,\n  extrudedHeightReference,\n  extrudedHeight,\n  positions,\n  image,\n  scale,\n  pixelOffset,\n  eyeOffset,\n  horizontalOrigin,\n  verticalOrigin,\n  heightReference,\n  depthFailColor,\n  color,\n  rotation,\n  alignedAxis,\n  sizeInMeters,\n  width,\n  height,\n  scaleByDistance,\n  translucencyByDistance,\n  pixelOffsetScaleByDistance,\n  disableDepthTestDistance,\n  dimensions,\n  fill,\n  depthFailMaterial,\n  material,\n  outline,\n  outlineColor,\n  outlineWidth,\n  shadows,\n  distanceDisplayCondition,\n  show,\n  times,\n  clock,\n  getFeatureInfoFormats,\n  subdomains,\n  format,\n  accessToken,\n  fileExtension,\n  minimumLevel,\n  maximumLevel,\n  tileHeight,\n  url,\n  token,\n  tileDiscardPolicy,\n  layers,\n  enablePickFeatures,\n  rectangle,\n  tilingScheme,\n  ellipsoid,\n  credit,\n  tileWidth\n}\n","import { Language } from '..'\n\nexport default {\n  name: 'zh-hans',\n  nativeName: '中文(简体)',\n  vc: {\n    loadError: '加载失败，必须作为 VcViewer 的子组件加载。',\n    navigation: {\n      compass: {\n        outerTip: '旋转视图：顺/逆时针方向拖拽罗盘外环。\\n重置视图：双击罗盘外环。',\n        innerTip: '翻转视图：由内环向外环拖拽罗盘。\\n 或者按住 Ctrl 键的同时拖拽地图。',\n        title: '按住鼠标拖拽旋转相机。'\n      },\n      zoomCotrol: {\n        zoomInTip: '放大',\n        zoomResetTip: '重置视图',\n        zoomOutTip: '缩小'\n      },\n      print: {\n        printTip: '场景截图/打印',\n        printViewTitle: '打印预览',\n        credit: '地图版权',\n        screenshot: '场景截图'\n      },\n      myLocation: {\n        myLocationTip: '定位您的位置',\n        positioning: '定位中...',\n        fail: '定位失败',\n        centreMap: '我的位置',\n        lat: '纬度',\n        lng: '经度',\n        address: '地址'\n      },\n      statusBar: {\n        lat: '纬度',\n        lng: '经度',\n        zone: '带号',\n        e: 'X',\n        n: 'Y',\n        elev: '高程',\n        level: '层级',\n        heading: '方位',\n        pitch: '俯仰',\n        roll: '侧翻',\n        cameraHeight: '视高',\n        tip: '点击切换鼠标显示坐标为 UTM 投影坐标'\n      }\n    },\n    navigationSm: {\n      compass: {\n        outerTip: '旋转视图：顺/逆时针方向拖拽罗盘外环；重置视图：双击罗盘外环。'\n      },\n      zoomCotrol: {\n        zoomInTip: '放大',\n        zoomBarTip: '按住滑块向上放大，向下缩小。',\n        zoomOutTip: '缩小'\n      }\n    },\n    measurement: {\n      expand: '展开',\n      collapse: '收拢',\n      editor: {\n        move: '移动节点',\n        insert: '插入节点',\n        remove: '移除节点',\n        removeAll: '移除所有节点'\n      },\n      distance: {\n        tip: '距离量算',\n        drawingTipStart: '单击左键绘制距离量算起点。',\n        drawingTipEnd: '单击左键绘制距离量算终点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      'component-distance': {\n        tip: '三角量算',\n        drawingTipStart: '单击左键绘制三角量算起点。',\n        drawingTipEnd: '单击左键绘制三角量算终点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      polyline: {\n        tip: '折线距离量算',\n        drawingTipStart: '单击左键绘制第一个点。',\n        drawingTipEnd: '单击左键绘制下一个点，双击左键结束量算。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      horizontal: {\n        tip: '水平距离量算',\n        drawingTipStart: '单击左键绘制第一个点。',\n        drawingTipEnd: '单击左键绘制下一个点，双击左键结束量算。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      vertical: {\n        tip: '垂直距离量算',\n        drawingTipStart: '单击左键绘制垂直距离量算起点。',\n        drawingTipEnd: '单击左键绘制垂直距离量算终点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      height: {\n        tip: '地表高度量算',\n        drawingTipStart: '单击左键绘制高度量算点。',\n        drawingTipEnd: '单击左键绘制高度量算点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      area: {\n        tip: '面积量算',\n        drawingTipStart: '单击左键绘制第一个点。',\n        drawingTipEnd: '点击左键绘制下一个点，双击左键结束量算。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      point: {\n        tip: '坐标量算',\n        drawingTipStart: '点击左键绘制坐标量算点。',\n        drawingTipEnd: '点击左键绘制坐标量算点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。',\n        lng: '经度：',\n        lat: '纬度：',\n        height: '高度：',\n        slope: '坡度：'\n      },\n      rectangle: {\n        tip: '矩形量算',\n        drawingTipStart: '单击左键绘制矩形量算起点。',\n        drawingTipEnd: '单击左键绘制矩形量算终点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      regular: {\n        tip: '正多边形量算',\n        drawingTipStart: '单击左键绘制正多边形量算起点。',\n        drawingTipEnd: '单击左键绘制正多边形量算终点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      circle: {\n        tip: '圆形量算',\n        drawingTipStart: '单击左键绘制圆形量算起点。',\n        drawingTipEnd: '单击左键绘制圆形量算终点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      clear: {\n        tip: '清除量算结果'\n      }\n    },\n    drawing: {\n      expand: '展开',\n      collapse: '收拢',\n      editor: {\n        move: '移动节点',\n        insert: '插入节点',\n        remove: '移除节点',\n        removeAll: '移除所有节点'\n      },\n      pin: {\n        tip: '绘制图标点',\n        drawingTipStart: '点击左键绘制图标点。',\n        drawingTipEnd: '点击左键绘制图标点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      point: {\n        tip: '绘制点',\n        drawingTipStart: '点击左键绘制点。',\n        drawingTipEnd: '点击左键绘制点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      polyline: {\n        tip: '绘制线',\n        drawingTipStart: '单击左键绘制第一个点。',\n        drawingTipEnd: '单击左键绘制下一个点，双击左键结束绘制。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      polygon: {\n        tip: '绘制面',\n        drawingTipStart: '单击左键绘制第一个点。',\n        drawingTipEnd: '单击左键绘制下一个点，双击左键结束绘制。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      rectangle: {\n        tip: '绘制矩形',\n        drawingTipStart: '单击左键绘制矩形起点。',\n        drawingTipEnd: '单击左键绘制矩形终点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      circle: {\n        tip: '绘制圆',\n        drawingTipStart: '单击左键绘制圆形起点。',\n        drawingTipEnd: '单击左键绘制圆形终点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      regular: {\n        tip: '绘制正多边形',\n        drawingTipStart: '单击左键绘制正多边形起点。',\n        drawingTipEnd: '单击左键绘制正多边形终点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      clear: {\n        tip: '清除绘制结果'\n      }\n    },\n    analysis: {\n      expand: '展开',\n      collapse: '收拢',\n      editor: {\n        move: '移动节点',\n        insert: '插入节点',\n        remove: '移除节点',\n        removeAll: '移除所有节点'\n      },\n      sightline: {\n        tip: '通视分析',\n        drawingTipStart: '单击左键绘制观测点。',\n        drawingTipEnd: '单击左键绘制目标点，双击左键结束绘制。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      viewshed: {\n        tip: '可视域分析',\n        drawingTipStart: '单击左键绘制可视域分析起点。',\n        drawingTipEnd: '单击左键绘制可视域分析终点。',\n        drawingTipEditing: '移动鼠标修改节点，单击左键确定修改，单击右键放弃修改。'\n      },\n      clear: {\n        tip: '清除分析结果'\n      }\n    },\n    overview: {\n      show: '显示鹰眼',\n      hidden: '隐藏鹰眼'\n    }\n  }\n} as Language\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-07 15:49:08\n * @LastEditTime: 2022-02-09 17:46:25\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-locale\\index.ts\n */\nimport { computed, getCurrentInstance, inject, isRef, provide, ref, unref } from 'vue'\nimport Chinese from '@vue-cesium/locale/lang/zh-hans'\nimport { get } from 'lodash-unified'\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { Language } from '@vue-cesium/locale'\nimport { useGlobalConfig } from '../use-global-config'\nimport { MaybeRef } from '@vue-cesium/utils/types'\n\nexport type TranslatorOption = Record<string, string | number>\nexport type Translator = (path: string, option?: TranslatorOption) => string\nexport type LocaleContext = {\n  locale: Ref<Language>\n  lang: Ref<string>\n  t: Translator\n}\n\nexport const buildTranslator =\n  (locale: MaybeRef<Language>): Translator =>\n  (path, option) =>\n    translate(path, option, unref(locale))\n\nexport const translate = (path: string, option: undefined | TranslatorOption, locale: Language): string =>\n  (get(locale, path, path) as string).replace(/\\{(\\w+)\\}/g, (_, key) => `${option?.[key] ?? `{${key}}`}`)\n\nexport const buildLocaleContext = (locale: MaybeRef<Language>): LocaleContext => {\n  const lang = computed(() => unref(locale).name)\n  const localeRef = isRef(locale) ? locale : ref(locale)\n  return {\n    lang,\n    locale: localeRef,\n    t: buildTranslator(locale)\n  }\n}\n\nexport const useLocale = () => {\n  const locale = useGlobalConfig('locale')\n  return buildLocaleContext(computed(() => locale.value || Chinese))\n}\n","import { AnyObject, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { isArray } from '@vue-cesium/utils/util'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\n\nexport default function (props, vcInstance: VcComponentInternalInstance, logger) {\n  const bindEvents = (cesiumObject: AnyObject, cesiumEvents: Array<string>, register = true) => {\n    const ev = cesiumEvents || vcInstance.cesiumEvents || []\n    ev &&\n      ev.forEach(eventName => {\n        if (cesiumObject[eventName]) {\n          const listener = getInstanceListener(vcInstance, eventName)\n          const methodName = register ? 'addEventListener' : 'removeEventListener'\n          listener && cesiumObject[eventName][methodName](listener)\n        } else if (process.env.VUECESIUM_DEBUG) {\n          logger.warn('Add event linstener of ' + eventName + ' failed, try to upgrade Cesium to latest version.')\n        }\n      })\n  }\n  const registerEvents = register => {\n    const { viewer, cesiumObject } = vcInstance\n    if (cesiumObject === void 0) {\n      return\n    }\n    const { ScreenSpaceEventHandler, ScreenSpaceEventType } = Cesium\n\n    if (!viewer._vcPickScreenSpaceEventHandler || !viewer._vcViewerScreenSpaceEventHandler) {\n      viewer._vcPickScreenSpaceEventHandler = new ScreenSpaceEventHandler(viewer.canvas)\n      viewer._vcViewerScreenSpaceEventHandler = new ScreenSpaceEventHandler(viewer.canvas)\n      viewerScreenSpaceEvents.forEach(type => {\n        const listener = getInstanceListener(vcInstance, type)\n        listener && viewer._vcViewerScreenSpaceEventHandler.setInputAction(listener, ScreenSpaceEventType[type])\n        // vc-viewer 率先绑定\n        viewer._vcPickScreenSpaceEventHandler.setInputAction(pickedAction.bind({ eventName: type, viewer }), ScreenSpaceEventType[type])\n      })\n    }\n\n    bindEvents(cesiumObject, vcInstance.cesiumEvents || [], register)\n\n    vcInstance.cesiumMembersEvents?.forEach(eventName => {\n      const cesiumIntanceMember =\n        isArray(eventName.name) && eventName.name.length > 0 && cesiumObject[eventName.name[0]]\n          ? cesiumObject[eventName.name[0]][eventName.name[1]]\n          : cesiumObject[eventName.name as string]\n      cesiumIntanceMember && bindEvents(cesiumIntanceMember, eventName.events, register)\n    })\n\n    if (props.enableMouseEvent) {\n      pickEvents.forEach(eventName => {\n        const listener = getInstanceListener(vcInstance, eventName)\n        if (register) {\n          listener && (cesiumObject[eventName] = listener)\n        } else {\n          listener && delete cesiumObject[eventName]\n        }\n      })\n    }\n  }\n\n  function pickedAction(this, movement) {\n    if (!props.enableMouseEvent || !movement) {\n      return\n    }\n    const viewer: Cesium.Viewer = this.viewer\n    const { eventName } = this\n    const position: Cesium.Cartesian2 = movement.position || movement.endPosition\n    if (!position) {\n      return\n    }\n\n    const pickedFeatureAndCallbackNames: Array<any> = []\n\n    let callbackName\n    if (eventName.indexOf('LEFT_DOUBLE_CLICK') !== -1) {\n      callbackName = 'dblclick'\n    } else if (eventName.indexOf('CLICK') !== -1) {\n      callbackName = 'click'\n    } else if (eventName.indexOf('DOWN') !== -1) {\n      callbackName = 'mousedown'\n    } else if (eventName.indexOf('UP') !== -1) {\n      callbackName = 'mouseup'\n    } else if (eventName.indexOf('MOUSE_MOVE') !== -1) {\n      callbackName = 'mousemove'\n    }\n\n    let callbackNameOut\n    if (callbackName === 'mousemove') {\n      callbackNameOut = 'mouseout'\n    } else if (callbackName === 'click') {\n      callbackNameOut = 'clickout'\n    }\n\n    const pickedFeature = viewer.scene.pick(position)\n    if (!Cesium.defined(pickedFeature)) {\n      if (this.pickedFeature) {\n        // 没有拾取到对象，this.pickedFeature又有记录，说明移出了。\n        pickedFeatureAndCallbackNames.push({\n          callbackName: callbackNameOut,\n          pickedFeature: this.pickedFeature\n        })\n      }\n\n      this.pickedFeature = undefined\n    } else {\n      if (this.pickedFeature && this.pickedFeature.id !== pickedFeature.id) {\n        pickedFeatureAndCallbackNames.push({\n          // 拾取到对象，this.pickedFeature也有记录，两者不同，说明操作到另外一个对象上去了\n          callbackName: callbackNameOut,\n          pickedFeature: this.pickedFeature\n        })\n      }\n      if (callbackName === 'mousemove' && (!this.pickedFeature || this.pickedFeature.id !== pickedFeature.id)) {\n        pickedFeatureAndCallbackNames.push({\n          callbackName: 'mouseover',\n          pickedFeature\n        })\n      }\n\n      pickedFeatureAndCallbackNames.push({\n        callbackName,\n        pickedFeature\n      })\n    }\n\n    if (pickedFeatureAndCallbackNames.length === 0) {\n      return\n    }\n\n    let intersection: Cesium.Cartesian3 | undefined\n    const scene = viewer.scene\n    if (scene.mode === Cesium.SceneMode.SCENE3D) {\n      const ray = scene.camera.getPickRay(position)\n      intersection = scene.globe.pick(ray, scene)\n    } else {\n      intersection = scene.camera.pickEllipsoid(position, scene.globe.ellipsoid)\n    }\n\n    let button = -1\n    if (eventName.indexOf('LEFT') !== -1) {\n      button = 0\n    } else if (eventName.indexOf('MIDDLE') !== -1) {\n      button = 1\n    } else if (eventName.indexOf('RIGHT') !== -1) {\n      button = 2\n    }\n    const eventSourceList: Array<any> = []\n    pickedFeatureAndCallbackNames.forEach(item => {\n      const callbackName = item.callbackName\n      const pickedFeature = item.pickedFeature\n      if (pickedFeature.id) {\n        if (isArray(pickedFeature.id) && pickedFeature.id[0] instanceof Cesium.Entity) {\n          // 数据源集合（集群）\n          eventSourceList.push({\n            callbackName,\n            cesiumObject: pickedFeature.id[0].entityCollection.owner,\n            pickedFeature\n          })\n        } else if (pickedFeature.id instanceof Cesium.Entity) {\n          // 实体\n          eventSourceList.push({\n            callbackName,\n            cesiumObject: pickedFeature.id,\n            pickedFeature\n          })\n          // 数据源\n          eventSourceList.push({\n            callbackName,\n            cesiumObject: pickedFeature.id.entityCollection.owner,\n            pickedFeature\n          })\n        }\n      }\n      const getParentCollection = e => {\n        eventSourceList.push({\n          callbackName,\n          cesiumObject: e,\n          pickedFeature\n        })\n        if (e._vcParent) {\n          getParentCollection(e._vcParent)\n        }\n      }\n      // 图元\n      // + 自定义图元 如 PolygonPrimitive\n      if (pickedFeature.primitive) {\n        if (pickedFeature.primitive._vcParent) {\n          getParentCollection(pickedFeature.primitive._vcParent)\n        }\n        eventSourceList.push({\n          callbackName,\n          cesiumObject: pickedFeature.primitive,\n          pickedFeature\n        })\n      }\n\n      // 图元集合\n      if (pickedFeature.collection) {\n        if (pickedFeature.collection._vcParent) {\n          getParentCollection(pickedFeature.collection._vcParent)\n        }\n\n        eventSourceList.push({\n          callbackName,\n          cesiumObject: pickedFeature.collection,\n          pickedFeature\n        })\n      }\n    })\n\n    eventSourceList.forEach(event => {\n      event.cesiumObject[event.callbackName] &&\n        event.cesiumObject[event.callbackName]({\n          type: `on${event.callbackName}`,\n          windowPosition: position,\n          surfacePosition: intersection,\n          pickedFeature: event.pickedFeature,\n          button,\n          cesiumObject: event.cesiumObject\n        })\n    })\n\n    this.pickedFeature = pickedFeature\n  }\n  return {\n    bindEvents,\n    registerEvents\n  }\n}\n\nconst viewerScreenSpaceEvents: Array<string> = [\n  'LEFT_CLICK',\n  'LEFT_DOUBLE_CLICK',\n  'LEFT_DOWN',\n  'LEFT_UP',\n  'MIDDLE_CLICK',\n  'MIDDLE_DOWN',\n  'MIDDLE_UP',\n  'MOUSE_MOVE',\n  'PINCH_END',\n  'PINCH_MOVE',\n  'PINCH_START',\n  'RIGHT_CLICK',\n  'RIGHT_DOWN',\n  'RIGHT_UP',\n  'WHEEL'\n]\n\nconst pickEvents: Array<string> = ['mousedown', 'mouseup', 'click', 'clickout', 'dblclick', 'mousemove', 'mouseover', 'mouseout']\n\nexport { pickEvents, viewerScreenSpaceEvents }\n","import type { VcReadyObject, VcComponentInternalInstance, VcComponentPublicInstance, VcMittEvents, VcViewerProvider } from '@vue-cesium/utils/types'\nimport { inject, onUnmounted, WatchStopHandle } from 'vue'\nimport mitt, { Emitter } from 'mitt'\nimport { getObjClassName, isEmptyObj, isFunction, removeEmpty } from '@vue-cesium/utils/util'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport * as cesiumProps from '@vue-cesium/utils/cesium-props'\nimport { vcKey } from '@vue-cesium/utils/config'\nimport useLog from '../private/use-log'\nimport { useLocale } from '../use-locale'\nimport useEvents from '../use-events'\n\nexport default function (props, { emit }, vcInstance: VcComponentInternalInstance) {\n  const logger = useLog(vcInstance)\n\n  // state\n  vcInstance.alreadyListening = []\n  vcInstance.removeCallbacks = []\n  let unwatchFns: Array<WatchStopHandle> = []\n  vcInstance.mounted = false\n  const vcMitt: Emitter<VcMittEvents> = mitt()\n  vcInstance.vcMitt = vcMitt\n  const $services = inject<VcViewerProvider>(vcKey)\n  const { t } = useLocale()\n\n  if ($services === void 0) {\n    console.error(`${vcInstance.cesiumClass} ${t('vc.loadError')}`)\n    return\n  }\n\n  const parentVcInstance = getVcParentInstance(vcInstance)\n  const eventsState = useEvents(props, vcInstance, logger)\n  vcInstance.children = []\n\n  const entityGraphics = [\n    'billboard',\n    'box',\n    'corridor',\n    'cylinder',\n    'ellipse',\n    'ellipsoid',\n    'label',\n    'model',\n    'tileset',\n    'path',\n    'plane',\n    'point',\n    'polygon',\n    'polyline',\n    'polylineVolume',\n    'rectangle',\n    'wall'\n  ]\n\n  // methods\n  const beforeLoad = async () => {\n    emit('beforeLoad', vcInstance)\n\n    if (parentVcInstance.nowaiting) {\n      return true\n    } else {\n      await (parentVcInstance.proxy as VcComponentPublicInstance).createPromise\n    }\n  }\n\n  const load = async () => {\n    // Returns if it is already loaded. 如果已经加载则返回。\n    if (vcInstance.mounted) {\n      return false\n    }\n\n    logger.debug(`${vcInstance.cesiumClass}---loading`)\n\n    await beforeLoad()\n\n    const { Cesium, viewer } = $services\n    vcInstance.viewer = viewer\n    vcInstance.Cesium = Cesium\n\n    // If you call the unload method to unload the component, the Cesium object of the parent component may be unloaded. You need to load the parent component first.\n    // 如果调用过 unload 方法卸载组件，父组件的 Cesium 对象可能会被卸载 需要先加载父组件。\n    if (!parentVcInstance.cesiumObject && !parentVcInstance.nowaiting) {\n      return await (parentVcInstance.proxy as VcComponentPublicInstance)?.load()\n    }\n\n    setPropsWatcher(true)\n\n    return createCesiumObject().then(async cesiumObject => {\n      vcInstance.cesiumObject = cesiumObject\n      // Load the created Cesium object. 加载创建的 Cesium 对象。\n      return mount().then((): VcReadyObject => {\n        vcInstance.mounted = true\n        parentVcInstance.children.push(vcInstance)\n        Object.assign(vcInstance.proxy, {\n          cesiumObject: vcInstance.cesiumObject\n        })\n        // Trigger the component's 'ready' event. 触发该组件的 'ready' 事件。\n        const readyObj: VcReadyObject = { Cesium, viewer, cesiumObject, vm: vcInstance.proxy as VcComponentPublicInstance }\n        emit('ready', readyObj)\n        vcMitt.emit('ready', readyObj)\n        logger.debug(`${vcInstance.cesiumClass}---loaded`)\n        return readyObj\n      })\n    })\n  }\n\n  const beforeUnload = async () => {\n    await vcInstance.unloadingPromise\n  }\n\n  // eslint-disable-next-line arrow-parens\n  const unload = async () => {\n    await beforeUnload()\n\n    // If the component has subcomponents, you need to remove the subcomponents first. 如果该组件带有子组件，需要先移除子组件。\n    for (let i = 0; i < vcInstance.children.length; i++) {\n      const vcChildCmp = vcInstance.children[i].proxy as VcComponentPublicInstance\n      await vcChildCmp.unload()\n    }\n\n    vcInstance.children.length = 0\n\n    return vcInstance.mounted\n      ? unmount().then(async () => {\n          setPropsWatcher(false)\n          vcInstance.cesiumObject = undefined\n          vcInstance.mounted = false\n          vcInstance.removeCallbacks.forEach(removeCallback => {\n            removeCallback()\n          })\n          emit('destroyed', vcInstance)\n          logger.debug(`${vcInstance.cesiumClass}---unmounted`)\n\n          // If the component cannot be rendered without the parent component, the parent component needs to be removed.\n          // 如果该组件的渲染和父组件是绑定在一起的，需要移除父组件。\n          return vcInstance.renderByParent && !vcInstance.unloadingPromise ? (parentVcInstance.proxy as VcComponentPublicInstance).unload() : true\n        })\n      : false\n  }\n\n  const reload = async () => {\n    return unload().then(() => {\n      return load()\n    })\n  }\n\n  const mount = async () => {\n    eventsState.registerEvents(true)\n    return vcInstance.mount?.() || true\n  }\n\n  const unmount = async () => {\n    eventsState.registerEvents(false)\n    return vcInstance.unmount?.() || true\n  }\n\n  const createCesiumObject = async () => {\n    logger.debug('do createCesiumObject')\n    if (isFunction(vcInstance.createCesiumObject)) {\n      return vcInstance.createCesiumObject()\n    } else {\n      const options = transformProps(props)\n      return new Cesium[vcInstance.cesiumClass](options)\n    }\n  }\n\n  const deepWatchHandler = (vueProp, watcherOptions) => {\n    let deep = watcherOptions?.deep\n    const {\n      SampledPositionProperty,\n      Appearance,\n      DebugAppearance,\n      MaterialAppearance,\n      PolylineColorAppearance,\n      EllipsoidSurfaceAppearance,\n      PerInstanceColorAppearance,\n      PolylineMaterialAppearance\n    } = Cesium\n\n    if (vueProp === 'position') {\n      // position 要排除 SampledPositionProperty 不然会卡死\n      deep = !((vcInstance.proxy as any)[vueProp] instanceof SampledPositionProperty)\n    } else if (vueProp === 'appearance' || vueProp === 'depthFailAppearance') {\n      // appearance 要排除 Cesium 的类型 不然会卡死\n      const value = (vcInstance.proxy as any)[vueProp]\n      deep = !(\n        value instanceof Appearance ||\n        value instanceof DebugAppearance ||\n        value instanceof MaterialAppearance ||\n        value instanceof PolylineColorAppearance ||\n        value instanceof EllipsoidSurfaceAppearance ||\n        value instanceof PerInstanceColorAppearance ||\n        value instanceof PolylineMaterialAppearance ||\n        getObjClassName(value as any).indexOf('Appearance') !== -1\n      )\n    }\n\n    return deep\n  }\n\n  const setPropsWatcher = register => {\n    if (register) {\n      if (!vcInstance.cesiumClass || !Cesium[vcInstance.cesiumClass]) {\n        return\n      }\n\n      props &&\n        Object.keys(props).forEach(vueProp => {\n          let cesiumProp = vueProp\n          if (vueProp === 'labelStyle' || vueProp === 'wmtsStyle') {\n            cesiumProp = 'style'\n          } else if (vueProp === 'bmKey') {\n            cesiumProp = 'key'\n          }\n          // 如果在vue文件中已经监听了改 props 这儿不再监听了\n          // If you have listened to the props in the vue file, you will not add any more listeners here.\n          if (vcInstance.proxy?.$options.watch?.[vueProp] || vcInstance.alreadyListening.indexOf(vueProp) !== -1) {\n            return\n          }\n\n          const watcherOptions = vcInstance.proxy?.$options.props[vueProp]?.watcherOptions\n          // returns an unwatch function that stops firing the callback\n          const unwatch = vcInstance.proxy?.$watch(\n            vueProp,\n            async val => {\n              // Wait for child components to be created.\n              // 等待子组件创建完成。否则在父组件的 `ready` 事件中就改变的属性将不起作用。\n              await (vcInstance.proxy as VcComponentPublicInstance).createPromise\n              const { cesiumObject } = vcInstance\n              // Get the writability of the current cesiumobject or the props on its prototype chain to\n              // detect whether the component property responds dynamically or reloads the component when the property changes.\n              // 通过 cesiumObject 对象或它原型链上的 prop 的可写性，以检测属性改变时组件属性是动态响应还是重载组件。\n              const pd = cesiumObject && Object.getOwnPropertyDescriptor(cesiumObject, cesiumProp)\n              const pdProto = cesiumObject && Object.getOwnPropertyDescriptor(Object.getPrototypeOf(cesiumObject), cesiumProp)\n              const hasSetter = (pd && (pd.writable || pd.set)) || (pdProto && (pdProto.writable || pdProto.set))\n              if (hasSetter) {\n                // Attributes are writable and directly respond to changes in attributes.\n                // 属性可写，直接动态响应属性的改变。\n                if (watcherOptions && watcherOptions.cesiumObjectBuilder) {\n                  const newVal = watcherOptions.cesiumObjectBuilder.call(vcInstance, val, vcInstance.viewer.scene.globe.ellipsoid)\n                  // If an exclude condition has been defined for the object, such as \"_callback\", Cesium will automatically handle it internally and no longer need to be assigned.\n                  // 如果对象已经定义了 exclude 条件，如已经定义了“_callback”，Cesium 内部会自动处理的 不用再赋值了。\n                  if (!(Cesium.defined(cesiumObject[cesiumProp]) && Cesium.defined(cesiumObject[cesiumProp]._callback))) {\n                    cesiumObject[cesiumProp] = newVal\n                  }\n                } else {\n                  cesiumObject[cesiumProp] = transformProp(cesiumProp, val)\n                }\n                return true\n              } else {\n                // The attribute is not writable, and the property is changed indirectly through reloading the component.\n                // 属性不可写，通过重加载组件间接实现改变属性\n                return (vcInstance.proxy as VcComponentPublicInstance).reload()\n              }\n            },\n            {\n              deep: deepWatchHandler(vueProp, watcherOptions)\n            }\n          )\n          unwatchFns.push(unwatch!)\n        })\n    } else {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    }\n  }\n\n  const transformProps = <T>(props: T, childProps?: any) => {\n    let options: any = {}\n    props &&\n      Object.keys(props).forEach(vueProp => {\n        let cesiumProp = vueProp\n        // The properties of the following Cesium instance objects are HTML or Vue reserved words and require special handling.\n        // 以下 Cesium 实例对象的属性是 HTML 或 Vue 保留字，需要特别处理一下。\n        if (vueProp === 'labelStyle' || vueProp === 'wmtsStyle') {\n          cesiumProp = 'style'\n        } else if (vueProp === 'bmKey') {\n          cesiumProp = 'key'\n        }\n\n        const className = getObjClassName(props[vueProp])\n        if (\n          className &&\n          className.indexOf('Graphics') === -1 &&\n          entityGraphics.indexOf(cesiumProp) !== -1 &&\n          (vcInstance.cesiumClass === 'Entity' || vcInstance.cesiumClass.indexOf('DataSource') > 0)\n        ) {\n          options[cesiumProp] = transformProps(props[vueProp], childProps)\n        } else {\n          options[cesiumProp] = transformProp(vueProp, props[vueProp], childProps)\n        }\n      })\n\n    options = removeEmpty(options)\n    return options as T\n  }\n\n  const transformProp = (prop, value, childProps?) => {\n    const className = getObjClassName(value)\n    if (\n      className &&\n      className.indexOf('Graphics') === -1 &&\n      entityGraphics.indexOf(prop) !== -1 &&\n      (vcInstance.cesiumClass === 'Entity' || vcInstance.cesiumClass.indexOf('DataSource') > 0 || vcInstance.cesiumClass === 'VcOverlayDynamic')\n    ) {\n      return transformProps(value, childProps)\n    } else {\n      const cmpName = vcInstance.proxy?.$options.name\n      const propOption = vcInstance.proxy?.$options.props[prop] || childProps?.[prop] || (cesiumProps[prop] && cesiumProps[prop][prop])\n      return propOption?.watcherOptions && !isEmptyObj(value)\n        ? propOption.watcherOptions.cesiumObjectBuilder.call(vcInstance, value, vcInstance.viewer.scene.globe.ellipsoid)\n        : isFunction(value) && cmpName && (cmpName.indexOf('Graphics') !== -1 || cmpName === 'VcEntity' || cmpName.indexOf('Datasource') !== -1)\n        ? new Cesium.CallbackProperty(value, false)\n        : value\n    }\n  }\n\n  const getServices = () => {\n    return mergeDescriptors({}, $services || {})\n  }\n\n  // lifecycle\n  const createPromise = new Promise<VcReadyObject | boolean>((resolve, reject) => {\n    try {\n      let isLoading = false\n      if ($services.viewer) {\n        isLoading = true\n        load().then(e => {\n          resolve(e)\n          isLoading = false\n        })\n      }\n      parentVcInstance.vcMitt.on('ready', () => {\n        if (!isLoading && !vcInstance.isUnmounted) {\n          resolve(load())\n        }\n      })\n    } catch (e) {\n      reject(e)\n    }\n  })\n  logger.debug(`${vcInstance.cesiumClass}---onCreated`)\n  onUnmounted(() => {\n    logger.debug(`${vcInstance.cesiumClass}---onUnmounted`)\n    vcInstance.unloadingPromise = new Promise((resolve, reject) => {\n      unload().then(() => {\n        logger.debug(`${vcInstance.cesiumClass}---unloaded`)\n        resolve(true)\n        vcInstance.unloadingPromise = undefined\n        vcMitt.all.clear()\n      })\n    })\n    vcInstance.alreadyListening = []\n  })\n\n  // expose public methods\n  Object.assign(vcInstance.proxy, {\n    createPromise: createPromise,\n    load: load,\n    unload: unload,\n    reload: reload,\n    getCesiumObject: () => vcInstance.cesiumObject\n  })\n\n  return {\n    $services,\n    load,\n    unload,\n    reload,\n    createPromise,\n    transformProp,\n    transformProps,\n    unwatchFns,\n    setPropsWatcher,\n    logger,\n    getServices\n  }\n}\n","import { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport useCommon from '../use-common'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { onUnmounted, provide, watch, WatchStopHandle } from 'vue'\nimport { vcKey } from '@vue-cesium/utils/config'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { addCustomProperty } from '@vue-cesium/utils/util'\n\nexport default function (props, ctx, vcInstance: VcComponentInternalInstance) {\n  // state\n  vcInstance.cesiumEvents = ['changedEvent', 'errorEvent', 'loadingEvent']\n  if (vcInstance.cesiumClass === 'KmlDataSource') {\n    vcInstance.cesiumEvents.push('refreshEvent')\n    vcInstance.cesiumEvents.push('unsupportedNodeEvent')\n  }\n  vcInstance.cesiumMembersEvents = [\n    {\n      name: 'clock',\n      events: ['definitionChanged']\n    },\n    {\n      name: 'clustering',\n      events: ['clusterEvent']\n    },\n    {\n      name: 'entities',\n      events: ['collectionChanged']\n    }\n  ]\n  const commonState = useCommon(props, ctx, vcInstance)\n\n  if (commonState === void 0) {\n    return\n  }\n  // watcher\n  vcInstance.alreadyListening.push('entities')\n  let unwatchFns: Array<WatchStopHandle> = []\n  unwatchFns.push(\n    watch(\n      () => cloneDeep(props.entities),\n      (newVal, oldVal) => {\n        if (!vcInstance.mounted) {\n          return\n        }\n        const datasource = vcInstance.cesiumObject as Cesium.DataSource\n\n        if (newVal.length === oldVal.length) {\n          // 视为修改操作\n          // Treated as modified\n          const modifies: Array<any> = []\n          for (let i = 0; i < newVal.length; i++) {\n            const options = newVal[i]\n            const oldOptions = oldVal[i]\n\n            if (JSON.stringify(options) !== JSON.stringify(oldOptions)) {\n              modifies.push({\n                newOptions: options,\n                oldOptions: oldOptions\n              })\n            }\n          }\n\n          modifies.forEach(v => {\n            const modifyEntity = datasource.entities.getById(v.oldOptions.id)\n            if (v.oldOptions.id === v.newOptions.id) {\n              modifyEntity &&\n                Object.keys(v.newOptions).forEach(prop => {\n                  if (v.oldOptions[prop] !== v.newOptions[prop]) {\n                    modifyEntity[prop] = commonState.transformProp(prop, v.newOptions[prop])\n                  }\n                })\n            } else {\n              // 改了 id\n              datasource.entities.remove(modifyEntity!)\n              const entityOptions = v.newOptions\n              addEntities(datasource, [entityOptions])\n            }\n          })\n        } else {\n          const addeds: any = differenceBy(newVal, oldVal, 'id')\n          const deletes: any = differenceBy(oldVal, newVal, 'id')\n          const deletedEntities: Array<Cesium.Entity> = []\n          for (let i = 0; i < deletes.length; i++) {\n            const deleteEntity = datasource.entities.getById(deletes[i].id)\n            deletedEntities.push(deleteEntity!)\n          }\n\n          deletedEntities.forEach(v => {\n            datasource.entities.remove(v)\n          })\n          addEntities(datasource, addeds)\n        }\n      },\n      {\n        deep: true\n      }\n    )\n  )\n  // methods\n  const addEntities = (datasource, entities) => {\n    for (let i = 0; i < entities.length; i++) {\n      const entityOptions = entities[i]\n      const entityOptionsTransform = commonState.transformProps(entityOptions)\n      const entity = datasource.entities.add(entityOptionsTransform)\n      entityOptions.id !== entity.id && (entityOptions.id = entity.id)\n      addCustomProperty(entity, entityOptionsTransform)\n    }\n  }\n\n  vcInstance.mount = async () => {\n    const dataSources = commonState.$services.dataSources\n    const datasource = vcInstance.cesiumObject as Cesium.DataSource\n    datasource.show = props.show\n    addEntities(datasource, props.entities)\n    return dataSources.add(datasource).then(() => {\n      return true\n    })\n  }\n  vcInstance.unmount = async () => {\n    const dataSources = commonState.$services.dataSources\n    const datasource = vcInstance.cesiumObject as Cesium.DataSource\n    return dataSources && dataSources.remove(datasource, props.destroy)\n  }\n\n  const getServices = () => {\n    return mergeDescriptors(commonState.getServices(), {\n      get datasource() {\n        return vcInstance.cesiumObject as Cesium.DataSource\n      },\n      get entities() {\n        return (vcInstance.cesiumObject as Cesium.DataSource)?.entities\n      }\n    })\n  }\n\n  // life cycle\n  onUnmounted(() => {\n    unwatchFns.forEach(item => item())\n    unwatchFns = []\n  })\n\n  // provide\n  provide(vcKey, getServices())\n  vcInstance.appContext.config.globalProperties.$VueCesium = getServices()\n  return {\n    transformProps: commonState.transformProps,\n    unwatchFns: commonState.unwatchFns,\n    setPropsWatcher: commonState.setPropsWatcher\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-06-01 18:06:23\n * @LastEditTime: 2021-10-02 11:00:04\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-geometries\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport useCommon from '../use-common'\nimport { getVcParentInstance } from '@vue-cesium/utils/private/vm'\n\nexport default function (props, ctx, vcInstance: VcComponentInternalInstance) {\n  // state\n  vcInstance.cesiumEvents = []\n  vcInstance.renderByParent = true\n  const commonState = useCommon(props, ctx, vcInstance)\n\n  if (commonState === void 0) {\n    return\n  }\n\n  // methods\n  vcInstance.mount = async () => {\n    const geometry = vcInstance.cesiumObject as Cesium.Geometry\n    const parentVM = getVcParentInstance(vcInstance).proxy as VcComponentPublicInstance\n    return parentVM.__updateGeometry?.(geometry)\n  }\n\n  return {\n    transformProps: commonState.transformProps,\n    unwatchFns: commonState.unwatchFns,\n    setPropsWatcher: commonState.setPropsWatcher\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-06-01 18:06:23\n * @LastEditTime: 2022-01-14 16:27:10\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-graphics\\index.ts\n */\nimport type { EntityEmitType, VcComponentInternalInstance, VcComponentPublicInstance, VcGraphics } from '@vue-cesium/utils/types'\nimport useCommon from '../use-common'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { getVcParentInstance } from '@vue-cesium/utils/private/vm'\n\nexport default function (props, ctx, vcInstance: VcComponentInternalInstance) {\n  // state\n  vcInstance.cesiumEvents = ['definitionChanged']\n  const commonState = useCommon(props, ctx, vcInstance)\n\n  if (commonState === void 0) {\n    return\n  }\n  // methods\n  vcInstance.mount = async () => {\n    const graphics = vcInstance.cesiumObject as VcGraphics\n\n    if (graphics === undefined) {\n      return false\n    }\n\n    const cmpNameArr = kebabCase(vcInstance.proxy?.$options.name || '').split('-')\n    const emitType = (cmpNameArr.length === 3 ? `update:${cmpNameArr[2]}` : 'update:polylineVolume') as EntityEmitType\n    const parentVM = getVcParentInstance(vcInstance).proxy as VcComponentPublicInstance\n    return parentVM && parentVM.__updateGraphics?.(graphics, emitType)\n  }\n  vcInstance.unmount = async () => {\n    const cmpNameArr = kebabCase(vcInstance.proxy?.$options.name || '').split('-')\n    const emitType = (cmpNameArr.length === 3 ? `update:${cmpNameArr[2]}` : 'update:polylineVolume') as EntityEmitType\n    const parentVM = getVcParentInstance(vcInstance).proxy as VcComponentPublicInstance\n    return parentVM && parentVM.__updateGraphics?.(undefined, emitType)\n  }\n}\n","import { VcViewerProvider, AnyFunction } from '@vue-cesium/utils/types'\nimport { ref } from 'vue'\n\ninterface HandlerActions {\n  handleMouseClick?: AnyFunction<void>\n  handleMouseDown?: AnyFunction<void>\n  handleMouseUp?: AnyFunction<void>\n  handleMouseMove?: AnyFunction<void>\n  handleDoubleClick?: AnyFunction<void>\n  handleMouseWheel?: AnyFunction<void>\n  handlePinch?: AnyFunction<void>\n}\n\nexport default function (\n  $services: VcViewerProvider,\n  {\n    handleMouseClick = undefined,\n    handleMouseDown = undefined,\n    handleMouseUp = undefined,\n    handleMouseMove = undefined,\n    handleDoubleClick = undefined,\n    handleMouseWheel = undefined,\n    handlePinch = undefined\n  }: HandlerActions\n) {\n  // state\n  const handler = ref<Cesium.ScreenSpaceEventHandler | undefined>(undefined)\n  const isActive = ref(false)\n\n  //methods\n  const activate = () => {\n    if (isActive.value) {\n      return\n    }\n\n    const { ScreenSpaceEventType, KeyboardEventModifier, ScreenSpaceEventHandler } = Cesium\n    if (!handler.value) {\n      const { viewer } = $services\n      handler.value = new ScreenSpaceEventHandler(viewer.canvas)\n    }\n\n    const sseh = handler.value\n    sseh.setInputAction(onLeftClick, ScreenSpaceEventType.LEFT_CLICK)\n    sseh.setInputAction(onLeftClickShift, ScreenSpaceEventType.LEFT_CLICK, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onLeftClickCtrl, ScreenSpaceEventType.LEFT_CLICK, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onLeftDown, ScreenSpaceEventType.LEFT_DOWN)\n    sseh.setInputAction(onLeftDownShift, ScreenSpaceEventType.LEFT_DOWN, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onLeftDownCtrl, ScreenSpaceEventType.LEFT_DOWN, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onLeftUp, ScreenSpaceEventType.LEFT_UP)\n    sseh.setInputAction(onLeftUpShift, ScreenSpaceEventType.LEFT_UP, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onLeftUpCtrl, ScreenSpaceEventType.LEFT_UP, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onRightClick, ScreenSpaceEventType.RIGHT_CLICK)\n    sseh.setInputAction(onRightClickShift, ScreenSpaceEventType.RIGHT_CLICK, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onRightClickCtrl, ScreenSpaceEventType.RIGHT_CLICK, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onRightDown, ScreenSpaceEventType.RIGHT_DOWN)\n    sseh.setInputAction(onRightDownShift, ScreenSpaceEventType.RIGHT_DOWN, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onRightDownCtrl, ScreenSpaceEventType.RIGHT_DOWN, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onRightUp, ScreenSpaceEventType.RIGHT_UP)\n    sseh.setInputAction(onRightUpShift, ScreenSpaceEventType.RIGHT_UP, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onRightUpCtrl, ScreenSpaceEventType.RIGHT_UP, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onMiddleClick, ScreenSpaceEventType.MIDDLE_CLICK)\n    sseh.setInputAction(onMiddleClickShift, ScreenSpaceEventType.MIDDLE_CLICK, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onMiddleClickCtrl, ScreenSpaceEventType.MIDDLE_CLICK, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onMiddleDown, ScreenSpaceEventType.MIDDLE_DOWN)\n    sseh.setInputAction(onMiddleDownShift, ScreenSpaceEventType.MIDDLE_DOWN, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onMiddleDownCtrl, ScreenSpaceEventType.MIDDLE_DOWN, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onMiddleUp, ScreenSpaceEventType.MIDDLE_UP)\n    sseh.setInputAction(onMiddleUpShift, ScreenSpaceEventType.MIDDLE_UP, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onMiddleUpCtrl, ScreenSpaceEventType.MIDDLE_UP, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onDoubleClick, ScreenSpaceEventType.LEFT_DOUBLE_CLICK)\n    sseh.setInputAction(onDoubleClickShift, ScreenSpaceEventType.LEFT_DOUBLE_CLICK, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onDoubleClickCtrl, ScreenSpaceEventType.LEFT_DOUBLE_CLICK, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onMouseMove, ScreenSpaceEventType.MOUSE_MOVE)\n    sseh.setInputAction(onMouseMoveShift, ScreenSpaceEventType.MOUSE_MOVE, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onMouseMoveCtrl, ScreenSpaceEventType.MOUSE_MOVE, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onMouseWheel, ScreenSpaceEventType.WHEEL)\n    sseh.setInputAction(onMouseWheelShift, ScreenSpaceEventType.WHEEL, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onMouseWheelCtrl, ScreenSpaceEventType.WHEEL, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onPinchStart, ScreenSpaceEventType.PINCH_START)\n    sseh.setInputAction(onPinchStartShift, ScreenSpaceEventType.PINCH_START, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onPinchStartCtrl, ScreenSpaceEventType.PINCH_START, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onPinchEnd, ScreenSpaceEventType.PINCH_END)\n    sseh.setInputAction(onPinchEndShift, ScreenSpaceEventType.PINCH_END, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onPinchEndCtrl, ScreenSpaceEventType.PINCH_END, KeyboardEventModifier.CTRL)\n\n    sseh.setInputAction(onPinchMove, ScreenSpaceEventType.PINCH_MOVE)\n    sseh.setInputAction(onPinchMoveShift, ScreenSpaceEventType.PINCH_MOVE, KeyboardEventModifier.SHIFT)\n    sseh.setInputAction(onPinchMoveCtrl, ScreenSpaceEventType.PINCH_MOVE, KeyboardEventModifier.CTRL)\n    isActive.value = true\n  }\n\n  const deactivate = () => {\n    if (!isActive.value) {\n      return\n    }\n    const { ScreenSpaceEventType, KeyboardEventModifier } = Cesium\n\n    const sseh = handler.value\n    if (!sseh) {\n      return\n    }\n    sseh.removeInputAction(ScreenSpaceEventType.LEFT_CLICK)\n    sseh.removeInputAction(ScreenSpaceEventType.LEFT_CLICK, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.LEFT_CLICK, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.LEFT_DOWN)\n    sseh.removeInputAction(ScreenSpaceEventType.LEFT_DOWN, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.LEFT_DOWN, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n    sseh.removeInputAction(ScreenSpaceEventType.LEFT_UP, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.LEFT_UP, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.RIGHT_CLICK)\n    sseh.removeInputAction(ScreenSpaceEventType.RIGHT_CLICK, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.RIGHT_CLICK, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.RIGHT_DOWN)\n    sseh.removeInputAction(ScreenSpaceEventType.RIGHT_DOWN, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.RIGHT_DOWN, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.RIGHT_UP)\n    sseh.removeInputAction(ScreenSpaceEventType.RIGHT_UP, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.RIGHT_UP, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_CLICK)\n    sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_CLICK, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_CLICK, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_DOWN)\n    sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_DOWN, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_DOWN, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_UP)\n    sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_UP, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_UP, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.LEFT_DOUBLE_CLICK)\n    sseh.removeInputAction(ScreenSpaceEventType.LEFT_DOUBLE_CLICK, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.LEFT_DOUBLE_CLICK, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.MOUSE_MOVE)\n    sseh.removeInputAction(ScreenSpaceEventType.MOUSE_MOVE, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.MOUSE_MOVE, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.WHEEL)\n    sseh.removeInputAction(ScreenSpaceEventType.WHEEL, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.WHEEL, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.PINCH_START)\n    sseh.removeInputAction(ScreenSpaceEventType.PINCH_START, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.PINCH_START, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.PINCH_END)\n    sseh.removeInputAction(ScreenSpaceEventType.PINCH_END, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.PINCH_END, KeyboardEventModifier.CTRL)\n\n    sseh.removeInputAction(ScreenSpaceEventType.PINCH_MOVE)\n    sseh.removeInputAction(ScreenSpaceEventType.PINCH_MOVE, KeyboardEventModifier.SHIFT)\n    sseh.removeInputAction(ScreenSpaceEventType.PINCH_MOVE, KeyboardEventModifier.CTRL)\n    isActive.value = false\n  }\n\n  const destroy = () => {\n    handler.value?.destroy()\n    handler.value = undefined\n  }\n\n  const onLeftClick = movement => {\n    handleMouseClick?.(movement, {\n      button: 0\n    })\n  }\n\n  const onLeftClickShift = movement => {\n    handleMouseClick?.(movement, {\n      button: 0,\n      shift: true\n    })\n  }\n\n  const onLeftClickCtrl = movement => {\n    handleMouseClick?.(movement, {\n      button: 0,\n      ctrl: true\n    })\n  }\n\n  const onMiddleClick = movement => {\n    handleMouseClick?.(movement, {\n      button: 1\n    })\n  }\n\n  const onMiddleClickShift = movement => {\n    handleMouseClick?.(movement, {\n      button: 1,\n      shift: true\n    })\n  }\n\n  const onMiddleClickCtrl = movement => {\n    handleMouseClick?.(movement, {\n      button: 1,\n      ctrl: true\n    })\n  }\n\n  const onRightClick = movement => {\n    handleMouseClick?.(movement, {\n      button: 2\n    })\n  }\n\n  const onRightClickShift = movement => {\n    handleMouseClick?.(movement, {\n      button: 2,\n      shift: true\n    })\n  }\n\n  const onRightClickCtrl = movement => {\n    handleMouseClick?.(movement, {\n      button: 2,\n      ctrl: true\n    })\n  }\n\n  const onLeftDown = movement => {\n    handleMouseDown?.(movement, {\n      button: 0\n    })\n  }\n\n  const onLeftDownShift = movement => {\n    handleMouseDown?.(movement, {\n      button: 0,\n      shift: true\n    })\n  }\n\n  const onLeftDownCtrl = movement => {\n    handleMouseDown?.(movement, {\n      button: 0,\n      ctrl: true\n    })\n  }\n\n  const onMiddleDown = movement => {\n    handleMouseDown?.(movement, {\n      button: 1\n    })\n  }\n\n  const onMiddleDownShift = movement => {\n    handleMouseDown?.(movement, {\n      button: 1,\n      shift: true\n    })\n  }\n\n  const onMiddleDownCtrl = movement => {\n    handleMouseDown?.(movement, {\n      button: 1,\n      ctrl: true\n    })\n  }\n\n  const onRightDown = movement => {\n    handleMouseDown?.(movement, {\n      button: 2\n    })\n  }\n\n  const onRightDownShift = movement => {\n    handleMouseDown?.(movement, {\n      button: 2,\n      shift: true\n    })\n  }\n\n  const onRightDownCtrl = movement => {\n    handleMouseDown?.(movement, {\n      button: 2,\n      ctrl: true\n    })\n  }\n\n  const onLeftUp = movement => {\n    handleMouseUp?.(movement, {\n      button: 0\n    })\n  }\n\n  const onLeftUpShift = movement => {\n    handleMouseUp?.(movement, {\n      button: 0,\n      shift: true\n    })\n  }\n\n  const onLeftUpCtrl = movement => {\n    handleMouseUp?.(movement, {\n      button: 0,\n      ctrl: true\n    })\n  }\n\n  const onMiddleUp = movement => {\n    handleMouseUp?.(movement, {\n      button: 1,\n      ctrl: true\n    })\n  }\n\n  const onMiddleUpShift = movement => {\n    handleMouseUp?.(movement, {\n      button: 1,\n      shift: true\n    })\n  }\n\n  const onMiddleUpCtrl = movement => {\n    handleMouseUp?.(movement, {\n      button: 1,\n      ctrl: true\n    })\n  }\n\n  const onRightUp = movement => {\n    handleMouseUp?.(movement, {\n      button: 2\n    })\n  }\n\n  const onRightUpShift = movement => {\n    handleMouseUp?.(movement, {\n      button: 2,\n      shift: true\n    })\n  }\n\n  const onRightUpCtrl = movement => {\n    handleMouseUp?.(movement, {\n      button: 2,\n      ctrl: true\n    })\n  }\n\n  const onDoubleClick = movement => {\n    handleDoubleClick?.(movement, {\n      button: 0\n    })\n  }\n\n  const onDoubleClickShift = movement => {\n    handleDoubleClick?.(movement, {\n      button: 0,\n      shift: true\n    })\n  }\n\n  const onDoubleClickCtrl = movement => {\n    handleDoubleClick?.(movement, {\n      button: 0,\n      ctrl: true\n    })\n  }\n\n  const onMouseMove = movement => {\n    handleMouseMove?.(movement)\n  }\n\n  const onMouseMoveShift = movement => {\n    handleMouseMove?.(movement, {\n      shift: true\n    })\n  }\n\n  const onMouseMoveCtrl = movement => {\n    handleMouseMove?.(movement, {\n      ctrl: true\n    })\n  }\n\n  const onMouseWheel = e => {\n    handleMouseWheel?.(e)\n  }\n\n  const onMouseWheelShift = e => {\n    handleMouseWheel?.(e, {\n      shift: true\n    })\n  }\n\n  const onMouseWheelCtrl = e => {\n    handleMouseWheel?.(e, {\n      ctrl: true\n    })\n  }\n\n  const onPinchStart = e => {\n    handlePinch?.(e, {\n      start: true\n    })\n  }\n\n  const onPinchStartShift = e => {\n    handlePinch?.(e, {\n      start: true,\n      shift: true\n    })\n  }\n\n  const onPinchStartCtrl = e => {\n    handlePinch?.(e, {\n      start: true,\n      ctrl: true\n    })\n  }\n\n  const onPinchEnd = e => {\n    handlePinch?.(e, {\n      end: true\n    })\n  }\n\n  const onPinchEndShift = e => {\n    handlePinch?.(e, {\n      end: true,\n      shift: true\n    })\n  }\n\n  const onPinchEndCtrl = e => {\n    handlePinch?.(e, {\n      end: true,\n      ctrl: true\n    })\n  }\n\n  const onPinchMove = e => {\n    handlePinch?.(e, {\n      move: true\n    })\n  }\n\n  const onPinchMoveShift = e => {\n    handlePinch?.(e, {\n      move: true,\n      shift: true\n    })\n  }\n\n  const onPinchMoveCtrl = e => {\n    handlePinch?.(e, {\n      move: true,\n      ctrl: true\n    })\n  }\n\n  return {\n    activate,\n    deactivate,\n    destroy,\n    isActive\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-07 23:36:43\n * @LastEditTime: 2021-11-20 16:06:29\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-primitive-collection-items\\index.ts\n */\n/**\n * for\n * Billboard\n * Label\n * PointPrimitive\n * Polyline\n */\n\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport useCommon from '../use-common'\n\nexport type CollectionItem = Cesium.Billboard | Cesium.Label | Cesium.PointPrimitive | Cesium.Polyline\n\nexport default function (props, ctx, vcInstance: VcComponentInternalInstance) {\n  // state\n  const commonState = useCommon(props, ctx, vcInstance)\n  if (commonState === void 0) {\n    return\n  }\n  // methods\n  vcInstance.createCesiumObject = async () => {\n    const options = commonState.transformProps(props)\n    const primitives = commonState.$services.primitives\n    return primitives && primitives.add(options)\n  }\n\n  vcInstance.mount = async () => {\n    const primitives = commonState.$services.primitives\n    const collectionItem = vcInstance.cesiumObject as CollectionItem\n    return primitives && primitives.contains(collectionItem)\n  }\n  vcInstance.unmount = async () => {\n    const primitives = commonState.$services.primitives\n    const collectionItem = vcInstance.cesiumObject as CollectionItem\n    return primitives && !primitives.isDestroyed() && primitives.remove(collectionItem)\n  }\n\n  return {\n    transformProps: commonState.transformProps,\n    unwatchFns: commonState.unwatchFns,\n    setPropsWatcher: commonState.setPropsWatcher,\n    $services: commonState.$services\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-06-04 13:55:35\n * @LastEditTime: 2022-02-15 09:15:08\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-primitive-collections\\index.ts\n */\n/**\n * for\n * PrimitiveCollection\n * BillboardCollection\n * LabelCollection\n * PointPrimitiveCollection\n * PolylineCollection\n */\n\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport useCommon from '../use-common'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { provide } from 'vue'\nimport { vcKey } from '@vue-cesium/utils/config'\n\nexport type Collection =\n  | Cesium.PrimitiveCollection\n  | Cesium.BillboardCollection\n  | Cesium.LabelCollection\n  | Cesium.PointPrimitiveCollection\n  | Cesium.PolylineCollection\n\nexport default function (props, ctx, vcInstance: VcComponentInternalInstance) {\n  // state\n  const commonState = useCommon(props, ctx, vcInstance)\n  if (commonState === void 0) {\n    return\n  }\n  // methods\n  vcInstance.mount = async () => {\n    const primitives = commonState.$services.primitives\n    const collection = vcInstance.cesiumObject as Collection\n    const object = primitives && primitives.add(collection)\n    return Cesium.defined(object)\n  }\n  vcInstance.unmount = async () => {\n    const primitives = commonState.$services.primitives\n    const collection = vcInstance.cesiumObject as Collection\n    return primitives && primitives.remove(collection)\n  }\n\n  const getServices = () => {\n    return mergeDescriptors(commonState.getServices(), {\n      get primitives() {\n        return vcInstance.cesiumObject as Collection\n      }\n    })\n  }\n\n  // provide\n  provide(vcKey, getServices())\n  vcInstance.appContext.config.globalProperties.$VueCesium = getServices()\n\n  return {\n    transformProps: commonState.transformProps,\n    transformProp: commonState.transformProp,\n    unwatchFns: commonState.unwatchFns,\n    setPropsWatcher: commonState.setPropsWatcher\n  }\n}\n","/**\n * for\n * ClassificationPrimitive\n * GroundPolylinePrimitive\n * GroundPrimitive\n * Model\n * Cesium3DTileset\n * Primitive\n * ParticleSystem\n */\nimport type { SetupContext } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport type { PrimitiveEmits } from '@vue-cesium/utils/emits'\nimport useCommon from '../use-common'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { provide, ref } from 'vue'\nimport { vcKey } from '@vue-cesium/utils/config'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { isArray } from '@vue-cesium/utils/util'\n\nexport default function (props, ctx, vcInstance: VcComponentInternalInstance) {\n  // state\n  const commonState = useCommon(props, ctx, vcInstance)\n  if (commonState === void 0) {\n    return\n  }\n\n  const { emit } = ctx\n  const childCount = ref(0)\n  const instances = ref<Array<Cesium.GeometryInstance>>([])\n  // methods\n  vcInstance.createCesiumObject = async () => {\n    const options = commonState.transformProps(props)\n    if (!options.asynchronous) {\n      await Cesium[vcInstance.cesiumClass].initializeTerrainHeights?.()\n    }\n    if (props.geometryInstances) {\n      if (isArray(props.geometryInstances)) {\n        instances.value.push(...props.geometryInstances)\n        childCount.value += props.geometryInstances.length\n      } else {\n        childCount.value += 1\n        instances.value.push(props.geometryInstances)\n      }\n    }\n    return new Cesium[vcInstance.cesiumClass](options)\n  }\n\n  vcInstance.mount = async () => {\n    const primitives = vcInstance.cesiumClass.includes('Ground') ? commonState.$services.groundPrimitives : commonState.$services.primitives\n    const primitive = vcInstance.cesiumObject as Cesium.Primitive\n    primitive.readyPromise &&\n      primitive.readyPromise.then(e => {\n        const listener = getInstanceListener(vcInstance, 'readyPromise')\n        listener && emit('readyPromise', e, commonState.$services.viewer, vcInstance.proxy as VcComponentPublicInstance)\n      })\n    ;(primitive as any)._vcParent = primitives\n    const object = primitives && primitives.add(primitive)\n    if (vcInstance.cesiumClass === 'ParticleSystem') {\n      const intervalId = setInterval(() => {\n        if (Cesium.defined(object._billboardCollection)) {\n          object._billboardCollection._vcParent = object\n          clearInterval(intervalId)\n        }\n      }, 500)\n    }\n    return Cesium.defined(object)\n  }\n  vcInstance.unmount = async () => {\n    childCount.value = 0\n    instances.value = []\n    const primitives = vcInstance.cesiumClass.includes('Ground') ? commonState.$services.groundPrimitives : commonState.$services.primitives\n    const primitive = vcInstance.cesiumObject as Cesium.Primitive\n    return primitives && primitives.remove(primitive)\n  }\n\n  const updateGeometryInstances = (instance, index) => {\n    // Todo 同时改 geometry 的多个属性导致 bug\n    // 如可视域分析创建 VcGeometryEllipsoidOutline 修改 radii 和 innerRadii 有问题\n    instances.value.push(instance)\n    if (index === childCount.value - 1) {\n      const listener = getInstanceListener(vcInstance, 'update:geometryInstances')\n      if (listener) {\n        ctx.emit('update:geometryInstances', instances.value)\n      } else {\n        const primitive = vcInstance.cesiumObject as Cesium.Primitive\n        ;(primitive as any).geometryInstances = index === 0 ? instance : instances.value\n      }\n    }\n    return true\n  }\n\n  const removeGeometryInstances = instance => {\n    const index = instances.value.indexOf(instance)\n    instances.value.splice(index, 1)\n    return true\n  }\n\n  const getServices = () => {\n    return mergeDescriptors(commonState.getServices(), {\n      get primitive() {\n        return vcInstance.cesiumObject as Cesium.Primitive\n      }\n    })\n  }\n\n  // provide\n  provide(vcKey, getServices())\n  vcInstance.appContext.config.globalProperties.$VueCesium = getServices()\n\n  // expose public methods\n  Object.assign(vcInstance.proxy, {\n    // private but needed by VcGeometryInstance\n    __updateGeometryInstances: updateGeometryInstances,\n    __removeGeometryInstances: removeGeometryInstances,\n    __childCount: childCount\n  })\n\n  return {\n    transformProps: commonState.transformProps,\n    unwatchFns: commonState.unwatchFns,\n    setPropsWatcher: commonState.setPropsWatcher\n  }\n}\n","/* eslint-disable */\n/**\n * Created by Wandergis on 2015/7/8. coordtransform.js@2.1.2\n * 提供了百度坐标（BD-09）、国测局坐标（火星坐标，GCJ-02）、和 WGS-84 坐标系之间的转换\n * https://github.com/wandergis/coordtransform\n */\n// 定义一些常量\nconst x_PI = (3.14159265358979324 * 3000.0) / 180.0\nconst PI = 3.1415926535897932384626\nconst a = 6378245.0\nconst ee = 0.00669342162296594323\n/**\n * 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02) 的转换\n * 即 百度 转 谷歌、高德\n * @param bd_lng\n * @param bd_lat\n * @returns {*[]}\n */\nconst bd09togcj02 = function bd09togcj02(bd_lng: number, bd_lat: number) {\n  var bd_lng = +bd_lng\n  var bd_lat = +bd_lat\n  const x = bd_lng - 0.0065\n  const y = bd_lat - 0.006\n  const z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_PI)\n  const theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_PI)\n  const gg_lng = z * Math.cos(theta)\n  const gg_lat = z * Math.sin(theta)\n  return [gg_lng, gg_lat]\n}\n\n/**\n * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换\n * 即 谷歌、高德 转 百度\n * @param lng\n * @param lat\n * @returns {*[]}\n */\nconst gcj02tobd09 = function gcj02tobd09(lng: number, lat: number) {\n  var lat = +lat\n  var lng = +lng\n  const z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI)\n  const theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI)\n  const bd_lng = z * Math.cos(theta) + 0.0065\n  const bd_lat = z * Math.sin(theta) + 0.006\n  return [bd_lng, bd_lat]\n}\n\n/**\n * WGS-84 转 GCJ-02\n * @param lng\n * @param lat\n * @returns {*[]}\n */\nconst wgs84togcj02 = function wgs84togcj02(lng: number, lat: number) {\n  var lat = +lat\n  var lng = +lng\n  if (out_of_china(lng, lat)) {\n    return [lng, lat]\n  } else {\n    let dlat = transformlat(lng - 105.0, lat - 35.0)\n    let dlng = transformlng(lng - 105.0, lat - 35.0)\n    const radlat = (lat / 180.0) * PI\n    let magic = Math.sin(radlat)\n    magic = 1 - ee * magic * magic\n    const sqrtmagic = Math.sqrt(magic)\n    dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI)\n    dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI)\n    const mglat = lat + dlat\n    const mglng = lng + dlng\n    return [mglng, mglat]\n  }\n}\n\n/**\n * GCJ-02 转换为 WGS-84\n * @param lng\n * @param lat\n * @returns {*[]}\n */\nconst gcj02towgs84 = function gcj02towgs84(lng: number, lat: number) {\n  var lat = +lat\n  var lng = +lng\n  if (out_of_china(lng, lat)) {\n    return [lng, lat]\n  } else {\n    let dlat = transformlat(lng - 105.0, lat - 35.0)\n    let dlng = transformlng(lng - 105.0, lat - 35.0)\n    const radlat = (lat / 180.0) * PI\n    let magic = Math.sin(radlat)\n    magic = 1 - ee * magic * magic\n    const sqrtmagic = Math.sqrt(magic)\n    dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI)\n    dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI)\n    const mglat = lat + dlat\n    const mglng = lng + dlng\n    return [lng * 2 - mglng, lat * 2 - mglat]\n  }\n}\n\nvar transformlat = function transformlat(lng: number, lat: number) {\n  var lat = +lat\n  var lng = +lng\n  let ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng))\n  ret += ((20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0) / 3.0\n  ret += ((20.0 * Math.sin(lat * PI) + 40.0 * Math.sin((lat / 3.0) * PI)) * 2.0) / 3.0\n  ret += ((160.0 * Math.sin((lat / 12.0) * PI) + 320 * Math.sin((lat * PI) / 30.0)) * 2.0) / 3.0\n  return ret\n}\n\nvar transformlng = function transformlng(lng: number, lat: number) {\n  var lat = +lat\n  var lng = +lng\n  let ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng))\n  ret += ((20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0) / 3.0\n  ret += ((20.0 * Math.sin(lng * PI) + 40.0 * Math.sin((lng / 3.0) * PI)) * 2.0) / 3.0\n  ret += ((150.0 * Math.sin((lng / 12.0) * PI) + 300.0 * Math.sin((lng / 30.0) * PI)) * 2.0) / 3.0\n  return ret\n}\n\n/**\n * 判断是否在国内，不在国内则不做偏移\n * @param lng\n * @param lat\n * @returns {boolean}\n */\nvar out_of_china = function out_of_china(lng: number, lat: number) {\n  var lat = +lat\n  var lng = +lng\n  // 纬度 3.86~53.55, 经度 73.66~135.05\n  return !(lng > 73.66 && lng < 135.05 && lat > 3.86 && lat < 53.55)\n}\n\nexport { bd09togcj02, gcj02tobd09, wgs84togcj02, gcj02towgs84 }\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-06-01 18:06:23\n * @LastEditTime: 2022-01-15 23:58:19\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-providers\\index.ts\n */\nimport { getInstanceListener, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport * as coordtransform from '@vue-cesium/utils/coordtransform'\nimport useCommon from '../use-common'\nimport type { SetupContext } from 'vue'\nimport type { ProviderEmits } from '@vue-cesium/utils/emits'\n\nexport default function (props, ctx: SetupContext<ProviderEmits>, vcInstance: VcComponentInternalInstance) {\n  // state\n  vcInstance.cesiumEvents = ['errorEvent']\n  const commonState = useCommon(props, ctx, vcInstance)\n  if (commonState === void 0) {\n    return\n  }\n\n  const { emit } = ctx\n\n  // methods\n  vcInstance.mount = async () => {\n    const { viewer } = commonState.$services\n    if (vcInstance.cesiumClass.indexOf('ImageryProvider') !== -1) {\n      vcInstance.renderByParent = true\n      const imageryProvider = vcInstance.cesiumObject as Cesium.ImageryProvider\n      imageryProvider?.readyPromise?.then(() => {\n        const listener = getInstanceListener(vcInstance, 'readyPromise')\n        listener && emit('readyPromise', imageryProvider, viewer, vcInstance.proxy as VcComponentPublicInstance)\n      })\n\n      if (props.projectionTransforms && props.projectionTransforms.from !== props.projectionTransforms.to) {\n        const ignoreTransforms =\n          vcInstance.proxy?.$options.name === 'VcImageryProviderBaidu' ||\n          (vcInstance.proxy?.$options.name === 'VcImageryProviderTianditu' && (imageryProvider as any)._epsgCode === '4490')\n        if (!ignoreTransforms) {\n          const { WebMercatorTilingScheme, Cartographic, Math: CesiumMath } = Cesium\n          const tilingScheme = new WebMercatorTilingScheme()\n          const projection = tilingScheme.projection\n          const nativeProject = projection.project\n          const nativeUnProject = projection.unproject\n          let projectMethods\n          let unprojectMethods\n          if (props.projectionTransforms.to.toUpperCase() === 'WGS84') {\n            projectMethods = 'wgs84togcj02'\n            unprojectMethods = 'gcj02towgs84'\n          } else if (props.projectionTransforms.to.toUpperCase() === 'GCJ02') {\n            projectMethods = 'gcj02towgs84'\n            unprojectMethods = 'wgs84togcj02'\n          }\n\n          if (projectMethods && unprojectMethods) {\n            projection.project = function (cartographic, result) {\n              result = result || new Cesium.Cartesian3()\n              result = coordtransform[projectMethods](CesiumMath.toDegrees(cartographic.longitude), CesiumMath.toDegrees(cartographic.latitude))\n              return nativeProject.call(this, new Cartographic(CesiumMath.toRadians(result?.[0]), CesiumMath.toRadians(result?.[1])))\n            }\n            projection.unproject = function (cartesian2, result) {\n              result = result || new Cartographic()\n              const cartographic = nativeUnProject.call(this, cartesian2)\n              result = coordtransform[unprojectMethods](CesiumMath.toDegrees(cartographic.longitude), CesiumMath.toDegrees(cartographic.latitude))\n              return new Cartographic(CesiumMath.toRadians(result?.[0]), CesiumMath.toRadians(result?.[1]))\n            }\n            ;(imageryProvider as any)._tilingScheme = tilingScheme\n          }\n        }\n      }\n      const parentVM = getVcParentInstance(vcInstance).proxy as VcComponentPublicInstance\n      return parentVM && parentVM.__updateProvider?.(imageryProvider)\n    } else {\n      const terrainProvider = vcInstance.cesiumObject as Cesium.TerrainProvider\n      terrainProvider.readyPromise.then(() => {\n        const listener = getInstanceListener(vcInstance, 'readyPromise')\n        listener && emit('readyPromise', terrainProvider, viewer, vcInstance.proxy as VcComponentPublicInstance)\n      })\n      viewer.terrainProvider = terrainProvider\n      return true\n    }\n  }\n  vcInstance.unmount = async () => {\n    const { viewer } = commonState.$services\n    if (vcInstance.cesiumClass.indexOf('ImageryProvider') !== -1) {\n      const parentVM = getVcParentInstance(vcInstance).proxy as VcComponentPublicInstance\n      return parentVM && parentVM.__updateProvider?.(undefined)\n    } else {\n      const terrainProvider = new Cesium.EllipsoidTerrainProvider()\n      terrainProvider.readyPromise.then(() => {\n        const listener = getInstanceListener(vcInstance, 'readyPromise')\n        listener && emit('readyPromise', terrainProvider, viewer, vcInstance.proxy as VcComponentPublicInstance)\n      })\n      viewer.terrainProvider = terrainProvider\n      return true\n    }\n  }\n\n  return {\n    transformProps: commonState.transformProps,\n    unwatchFns: commonState.unwatchFns,\n    setPropsWatcher: commonState.setPropsWatcher\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-04-06 09:21:02\n * @LastEditTime: 2022-02-25 23:27:55\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-vue-cesium\\index.ts\n */\nimport { getCurrentInstance } from 'vue'\nimport { VcViewerProvider } from '@vue-cesium/utils/types'\nimport useLog from '@vue-cesium/composables/private/use-log'\n\nexport default function useVueCesium(): VcViewerProvider {\n  const instance = getCurrentInstance()\n  const logger = useLog(undefined)\n  if (instance) {\n    return instance.appContext.config.globalProperties.$VueCesium as VcViewerProvider\n  } else {\n    logger.warn('VueCesium useVueCesium() can only be used inside setup().')\n  }\n}\n","import type { VcCamera, VcContextOptions } from '@vue-cesium/utils/types'\nimport type { PropType } from 'vue'\nimport { VcSkeletonProps } from '../../ui'\n\nexport default {\n  cesiumPath: String,\n  animation: {\n    type: Boolean,\n    default: false\n  },\n  baseLayerPicker: {\n    type: Boolean,\n    default: false\n  },\n  fullscreenButton: {\n    type: Boolean,\n    default: false\n  },\n  vrButton: {\n    type: Boolean,\n    default: false\n  },\n  geocoder: {\n    type: [Boolean, Array] as PropType<boolean | Array<Cesium.GeocoderService>>,\n    default: false\n  },\n  homeButton: {\n    type: Boolean,\n    default: false\n  },\n  infoBox: {\n    type: Boolean,\n    default: true\n  },\n  sceneModePicker: {\n    type: Boolean,\n    default: false\n  },\n  selectionIndicator: {\n    type: Boolean,\n    default: true\n  },\n  timeline: {\n    type: Boolean,\n    default: false\n  },\n  navigationHelpButton: {\n    type: Boolean,\n    default: false\n  },\n  navigationInstructionsInitiallyVisible: {\n    type: Boolean,\n    default: false\n  },\n  scene3DOnly: {\n    type: Boolean,\n    default: false\n  },\n  shouldAnimate: {\n    type: Boolean,\n    default: false\n  },\n  clockViewModel: Object as PropType<Cesium.ClockViewModel>,\n  selectedImageryProviderViewModel: Object as PropType<Cesium.ProviderViewModel>,\n  imageryProviderViewModels: Array as PropType<Array<Cesium.ProviderViewModel>>,\n  selectedTerrainProviderViewModel: Object as PropType<Cesium.ProviderViewModel>,\n  terrainProviderViewModels: Array as PropType<Array<Cesium.ProviderViewModel>>,\n  imageryProvider: Object as PropType<Cesium.ImageryProvider>,\n  terrainProvider: Object as PropType<Cesium.TerrainProvider>,\n  skyBox: {\n    type: [Object, Boolean] as PropType<Cesium.SkyBox | false>,\n    default: () => undefined\n  },\n  skyAtmosphere: {\n    type: [Object, Boolean] as PropType<Cesium.SkyAtmosphere | false>,\n    default: () => undefined\n  },\n  fullscreenElement: {\n    type: [String, Element] as PropType<string | Element>\n  },\n  useDefaultRenderLoop: {\n    type: Boolean,\n    default: true\n  },\n  targetFrameRate: Number,\n  showRenderLoopErrors: {\n    type: Boolean,\n    default: true\n  },\n  useBrowserRecommendedResolution: {\n    type: Boolean,\n    default: true\n  },\n  automaticallyTrackDataSourceClocks: {\n    type: Boolean,\n    default: true\n  },\n  contextOptions: Object as PropType<VcContextOptions>,\n  sceneMode: {\n    type: Number,\n    default: 3\n  },\n  mapProjection: Object as PropType<Cesium.MapProjection>,\n  globe: {\n    type: [Object, Boolean] as PropType<Cesium.Globe | false>,\n    default: () => undefined\n  },\n  orderIndependentTranslucency: {\n    type: Boolean,\n    default: true\n  },\n  creditContainer: [String, Element] as PropType<string | Element>,\n  creditViewport: [String, Element] as PropType<string | Element>,\n  dataSources: Object as PropType<Cesium.DataSourceCollection>,\n  terrainExaggeration: {\n    type: Number,\n    default: 1.0\n  },\n  shadows: {\n    type: Boolean,\n    default: false\n  },\n  terrainShadows: {\n    type: Number,\n    default: 3\n  },\n  mapMode2D: {\n    type: Number,\n    default: 1\n  },\n  projectionPicker: {\n    type: Boolean,\n    default: false\n  },\n  requestRenderMode: {\n    type: Boolean,\n    default: false\n  },\n  maximumRenderTimeChange: {\n    type: Number,\n    default: 0.0\n  },\n  debugShowFramesPerSecond: {\n    type: Boolean,\n    default: false\n  },\n  showCredit: {\n    type: Boolean,\n    default: true\n  },\n  accessToken: String,\n  camera: {\n    type: Object as PropType<VcCamera>,\n    default: () =>\n      ({\n        position: {\n          lng: 105,\n          lat: 29.999999999999993,\n          height: 19059568.497290563\n        },\n        heading: 360,\n        pitch: -90,\n        roll: 0\n      } as VcCamera)\n  },\n  navigation: {\n    // for supermap\n    type: Boolean,\n    default: false\n  },\n  TZCode: {\n    type: String\n    // default: new Date().getTimezoneOffset() === 0 ? 'UTC' : 'UTC' + '+' + -(new Date().getTimezoneOffset() / 60)\n  },\n  UTCOffset: {\n    type: Number\n    // default: new Date().getTimezoneOffset()\n  },\n  removeCesiumScript: {\n    type: Boolean,\n    default: true\n  },\n  autoSortImageryLayers: {\n    type: Boolean,\n    default: true\n  },\n  enableMouseEvent: {\n    type: Boolean,\n    default: true\n  },\n  skeleton: {\n    type: [Boolean, Object] as PropType<boolean | VcSkeletonProps>,\n    default: () =>\n      ({\n        dark: false,\n        animation: 'wave',\n        square: true,\n        bordered: true,\n        color: undefined\n      } as VcSkeletonProps)\n  }\n}\n","/**\n * 加载Mars3D平台CDN资源文件，\n * 这些文件可以从  http://mars3d.cn/download/lib.rar  下载后放在本地项目目录引入。\n * @param {string} libpath 根目录，如：http://mars3d.cn/lib/\n * @return {*}\n */\nexport function getMars3dConfig(libpath: string) {\n  const libsConfig = {\n    'font-awesome': [libpath + 'fonts/font-awesome/css/font-awesome.min.css'],\n    haoutil: [libpath + 'hao/haoutil.js'],\n    turf: [libpath + 'turf/turf.min.js'],\n    'mars3d-space': [\n      //卫星插件\n      libpath + 'mars3d/plugins/space/mars3d-space.js'\n    ],\n    'mars3d-echarts': [\n      //echarts支持插件\n      libpath + 'echarts/echarts.min.js',\n      libpath + 'echarts/echarts-gl.min.js',\n      libpath + 'mars3d/plugins/echarts/mars3d-echarts.js'\n    ],\n    'mars3d-mapv': [\n      //mapv支持插件\n      libpath + 'mapV/mapv.min.js',\n      libpath + 'mars3d/plugins/mapv/mars3d-mapv.js'\n    ],\n    'mars3d-heatmap': [\n      //heatmap热力图支持插件\n      libpath + 'mars3d/plugins/heatmap/heatmap.min.js',\n      libpath + 'mars3d/plugins/heatmap/mars3d-heatmap.js'\n    ],\n    'mars3d-wind': [\n      //风场图层插件\n      libpath + 'mars3d/plugins/wind/netcdfjs.js', //m10_windLayer解析nc\n      libpath + 'mars3d/plugins/wind/mars3d-wind.js'\n    ],\n    mars3d: [\n      //三维地球“主库”\n      libpath + 'Cesium/Widgets/widgets.css', //cesium\n      libpath + 'Cesium/Cesium.js',\n      libpath + 'mars3d/mars3d.css', //mars3d\n      libpath + 'mars3d/mars3d.js'\n    ]\n  }\n  return libsConfig\n}\n","import { ExtractPropTypes, watch, ref, onMounted, onUnmounted, nextTick, reactive, VNode } from 'vue'\nimport mitt, { Emitter } from 'mitt'\nimport { useLocale } from '@vue-cesium/composables'\nimport defaultProps from './defaultProps'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { dirname, removeEmpty, isEmptyObj, hasOwn } from '@vue-cesium/utils/util'\nimport { getInstanceListener, $ } from '@vue-cesium/utils/private/vm'\nimport {\n  VcComponentInternalInstance,\n  VcCamera,\n  VcReadyObject,\n  VcComponentPublicInstance,\n  AnyObject,\n  VcMittEvents,\n  VcTerrainProvider,\n  VcDatasource,\n  ViewerWidgetResizedEvent,\n  VcContextOptions\n} from '@vue-cesium/utils/types'\nimport { setViewerCamera } from '@vue-cesium/utils/cesium-helpers'\nimport useLog from '@vue-cesium/composables/private/use-log'\nimport { useEvents } from '@vue-cesium/composables'\nimport { getMars3dConfig } from './loadUtil'\nimport { useGlobalConfig } from '@vue-cesium/composables/use-global-config'\nimport { VcSkeletonProps } from '../../ui/skeleton'\n\nexport const viewerProps = defaultProps\n// export type VcViewerProps = ExtractPropTypes<typeof viewerProps>\n\nexport default function (props: VcViewerProps, ctx, vcInstance: VcComponentInternalInstance) {\n  // state\n  let createResolve, reject\n  const createPromise = new Promise<VcReadyObject>((_resolve, _reject) => {\n    createResolve = _resolve\n    reject = _reject\n  })\n\n  const viewerRef = ref<HTMLElement>(null!)\n  const isReady = ref(false)\n  const vcMitt: Emitter<VcMittEvents> = mitt()\n  const { emit } = ctx\n\n  const globalConfig = useGlobalConfig()\n\n  const logger = useLog(vcInstance)\n\n  vcInstance.mounted = false\n  vcInstance.vcMitt = vcMitt\n  vcInstance.cesiumClass = 'Viewer'\n  vcInstance.children = []\n  const eventsState = useEvents(props, vcInstance, logger)\n\n  const layout = reactive({\n    toolbarContainerRC: undefined,\n    timelineContainerRC: undefined,\n    animationContainerRC: undefined,\n    bottomContainerRC: undefined\n  })\n\n  let loadLibs: Array<string> = []\n\n  logger.debug('viewer creating')\n\n  const { t } = useLocale()\n\n  // watch\n  watch(\n    () => props.selectionIndicator,\n    val => {\n      const { viewer, viewerElement } = vcInstance\n      const { defined, SelectionIndicator } = Cesium\n      let selectionIndicatorContainer\n      if (defined(viewer.selectionIndicator) && !viewer.selectionIndicator.isDestroyed() && !val) {\n        selectionIndicatorContainer = viewer.selectionIndicator.container\n        viewerElement?.removeChild(selectionIndicatorContainer)\n        viewer.selectionIndicator.destroy()\n        viewer._selectionIndicator = undefined\n      } else if (!defined(viewer.selectionIndicator) || viewer.selectionIndicator.isDestroyed()) {\n        selectionIndicatorContainer = document.createElement('div')\n        selectionIndicatorContainer.className = 'cesium-viewer-selectionIndicatorContainer'\n        viewerElement?.appendChild(selectionIndicatorContainer)\n        const selectionIndicator = new SelectionIndicator(selectionIndicatorContainer, viewer.scene)\n        viewer._selectionIndicator = selectionIndicator\n      }\n\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'selectionIndicator',\n        status: val ? 'added' : 'removed',\n        target: selectionIndicatorContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.infoBox,\n    val => {\n      const { viewer, viewerElement } = vcInstance\n      const { defined, InfoBox } = Cesium\n      const events = ['cameraClicked', 'closeClicked']\n      let infoBoxContainer\n      if (defined(viewer.infoBox) && !viewer.infoBox.isDestroyed() && !val) {\n        const infoBoxViewModel = viewer.infoBox.viewModel\n        infoBoxViewModel && eventsState.bindEvents(infoBoxViewModel, events, false)\n        infoBoxContainer = viewer.infoBox.container\n        viewerElement?.removeChild(infoBoxContainer)\n        viewer.infoBox.destroy()\n        viewer._infoBox = undefined\n      } else if (!defined(viewer.infoBox) || viewer.infoBox.isDestroyed()) {\n        infoBoxContainer = document.createElement('div')\n        infoBoxContainer.className = 'cesium-viewer-infoBoxContainer'\n        viewerElement?.appendChild(infoBoxContainer)\n        const infoBox = new InfoBox(infoBoxContainer)\n        const infoBoxViewModel = infoBox.viewModel\n        viewer._onInfoBoxCameraClicked && viewer._eventHelper?.add(infoBoxViewModel.cameraClicked, viewer._onInfoBoxCameraClicked, viewer)\n        viewer._onInfoBoxClockClicked && viewer._eventHelper?.add(infoBoxViewModel.closeClicked, viewer._onInfoBoxClockClicked, viewer)\n        infoBoxViewModel && eventsState.bindEvents(infoBoxViewModel, events, true)\n        viewer._infoBox = infoBox\n      }\n      viewer.forceResize()\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'infoBox',\n        status: val ? 'added' : 'removed',\n        target: infoBoxContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.geocoder,\n    val => {\n      const { viewer } = vcInstance\n      const toolbar = viewer._toolbar\n      const { defined, Geocoder } = Cesium\n      let geocoderContainer\n      if (defined(viewer.geocoder) && !viewer.geocoder.isDestroyed() && !val) {\n        geocoderContainer = viewer.geocoder.container\n        toolbar?.removeChild(geocoderContainer)\n        viewer.geocoder.destroy()\n        viewer._geocoder = undefined\n      } else if (!defined(viewer.geocoder) || viewer.geocoder.isDestroyed()) {\n        geocoderContainer = document.createElement('div')\n        geocoderContainer.className = 'cesium-viewer-geocoderContainer'\n        toolbar?.appendChild(geocoderContainer)\n        const geocoder = new Geocoder({\n          container: geocoderContainer,\n          geocoderServices:\n            defined(props.geocoder) && typeof props.geocoder !== 'boolean'\n              ? Array.isArray(props.geocoder)\n                ? props.geocoder\n                : [props.geocoder]\n              : undefined,\n          scene: viewer.scene\n        })\n        viewer._clearObjects && viewer._eventHelper?.add(geocoder.viewModel.search.beforeExecute, viewer._clearObjects, viewer)\n        viewer._geocoder = geocoder\n        resizeToolbar(toolbar, geocoderContainer)\n      }\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'geocoder',\n        status: val ? 'added' : 'removed',\n        target: geocoderContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.homeButton,\n    val => {\n      const { viewer } = vcInstance\n      const toolbar = viewer._toolbar\n      const { defined, HomeButton } = Cesium\n      if (defined(viewer.homeButton) && !viewer.homeButton.isDestroyed() && !val) {\n        viewer.homeButton.destroy()\n        viewer._homeButton = undefined\n      } else if (!defined(viewer.homeButton) || viewer.homeButton.isDestroyed()) {\n        const homeButton = new HomeButton(toolbar!, viewer.scene)\n        if (defined(viewer.geocoder)) {\n          viewer._eventHelper?.add(homeButton.viewModel.command.afterExecute, function () {\n            const viewModel = viewer.geocoder.viewModel\n            viewModel.searchText = ''\n            viewModel.isSearchInProgress && (viewModel as any).search()\n          })\n        }\n        viewer._clearTrackedObject && viewer._eventHelper?.add(homeButton.viewModel.command.beforeExecute, viewer._clearTrackedObject, viewer)\n        viewer._homeButton = homeButton\n        resizeToolbar(toolbar, homeButton)\n      }\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'homeButton',\n        status: val ? 'added' : 'removed',\n        target: toolbar\n      })\n    }\n  )\n\n  watch(\n    () => props.sceneModePicker,\n    val => {\n      const { viewer } = vcInstance\n      const toolbar = viewer._toolbar\n      const { defined, DeveloperError, SceneModePicker } = Cesium\n      if (defined(viewer.sceneModePicker) && !viewer.sceneModePicker.isDestroyed() && !val) {\n        viewer.sceneModePicker.destroy()\n        viewer._sceneModePicker = undefined\n      } else if (!defined(viewer.sceneModePicker) || viewer.sceneModePicker.isDestroyed()) {\n        if (props.sceneModePicker && props.scene3DOnly) {\n          throw new DeveloperError('options.sceneModePicker is not available when options.scene3DOnly is set to true.')\n        }\n        if (!props.scene3DOnly && props.sceneModePicker) {\n          const sceneModePicker = new SceneModePicker(toolbar!, viewer.scene)\n          viewer._sceneModePicker = sceneModePicker\n          resizeToolbar(toolbar, sceneModePicker)\n        }\n      }\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'sceneModePicker',\n        status: val ? 'added' : 'removed',\n        target: toolbar\n      })\n    }\n  )\n\n  watch(\n    () => props.projectionPicker,\n    val => {\n      const { viewer } = vcInstance\n      const toolbar = viewer._toolbar\n      const { defined, ProjectionPicker } = Cesium\n      if (defined(viewer.projectionPicker) && !viewer.projectionPicker.isDestroyed() && !val) {\n        viewer.projectionPicker.destroy()\n        viewer._projectionPicker = undefined\n      } else if (!defined(viewer.projectionPicker) || viewer.projectionPicker.isDestroyed()) {\n        const projectionPicker = new ProjectionPicker(toolbar!, viewer.scene)\n        viewer._projectionPicker = projectionPicker\n        resizeToolbar(toolbar, projectionPicker)\n      }\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'projectionPicker',\n        status: val ? 'added' : 'removed',\n        target: toolbar\n      })\n    }\n  )\n\n  watch(\n    () => props.baseLayerPicker,\n    val => {\n      console.log(val)\n      const { viewer } = vcInstance\n      const toolbar = viewer._toolbar\n      const {\n        defined,\n        buildModuleUrl,\n        DeveloperError,\n        defaultValue,\n        createDefaultImageryProviderViewModels,\n        createDefaultTerrainProviderViewModels,\n        BaseLayerPicker\n      } = Cesium\n      if (defined(viewer.baseLayerPicker) && !viewer.baseLayerPicker.isDestroyed() && !val) {\n        viewer.baseLayerPicker.destroy()\n        viewer._baseLayerPicker = undefined\n        viewer.imageryLayers.remove(viewer.imageryLayers.get(viewer.imageryLayers.length - 1))\n        const url = buildModuleUrl('Assets/Textures/NaturalEarthII')\n        const baseLayer = viewer.imageryLayers.addImageryProvider(\n          new Cesium.TileMapServiceImageryProvider({\n            url\n          })\n        )\n        viewer.imageryLayers.lowerToBottom(baseLayer)\n      } else if (!defined(viewer.baseLayerPicker) || viewer.baseLayerPicker.isDestroyed()) {\n        const createBaseLayerPicker =\n          (!Cesium.defined(viewer.scene.globe) || props.globe !== false) &&\n          (!Cesium.defined(viewer.baseLayerPicker) || props.baseLayerPicker !== false)\n\n        if (createBaseLayerPicker && defined(props.imageryProvider)) {\n          throw new DeveloperError(`options.imageryProvider is not available when using the BaseLayerPicker widget.\n        Either specify options.selectedImageryProviderViewModel instead or set options.baseLayerPicker to false.`)\n        }\n        if (!createBaseLayerPicker && defined(props.selectedImageryProviderViewModel)) {\n          throw new DeveloperError(`options.selectedImageryProviderViewModel is not available when not using the BaseLayerPicker widget.\n        Either specify options.imageryProvider instead or set options.baseLayerPicker to true.`)\n        }\n        if (createBaseLayerPicker && defined(props.terrainProvider)) {\n          throw new DeveloperError(`options.terrainProvider is not available when using the BaseLayerPicker widget.\n        Either specify options.selectedTerrainProviderViewModel instead or set options.baseLayerPicker to false.`)\n        }\n        if (!createBaseLayerPicker && defined(props.selectedTerrainProviderViewModel)) {\n          throw new DeveloperError(`options.selectedTerrainProviderViewModel is not available when not using the BaseLayerPicker widget.\n        Either specify options.terrainProvider instead or set options.baseLayerPicker to true.`)\n        }\n        if (createBaseLayerPicker) {\n          const imageryProviderViewModels = defaultValue(props.imageryProviderViewModels, createDefaultImageryProviderViewModels())\n          const terrainProviderViewModels = defaultValue(props.terrainProviderViewModels, createDefaultTerrainProviderViewModels())\n          const baseLayerPicker = new BaseLayerPicker(toolbar!, {\n            globe: viewer.scene.globe,\n            imageryProviderViewModels: imageryProviderViewModels,\n            selectedImageryProviderViewModel: imageryProviderViewModels[0],\n            terrainProviderViewModels: terrainProviderViewModels,\n            selectedTerrainProviderViewModel: terrainProviderViewModels[0]\n          })\n\n          const elements = toolbar?.getElementsByClassName('cesium-baseLayerPicker-dropDown')\n\n          const baseLayerPickerDropDown = elements?.[0]\n          viewer._baseLayerPickerDropDown = baseLayerPickerDropDown\n          viewer._baseLayerPicker = baseLayerPicker\n          viewer.imageryLayers.raiseToTop(viewer.imageryLayers.get(0))\n          resizeToolbar(toolbar, baseLayerPicker)\n        }\n      }\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'baseLayerPicker',\n        status: val ? 'added' : 'removed',\n        target: toolbar\n      })\n    }\n  )\n\n  watch(\n    () => props.navigationHelpButton,\n    val => {\n      const { viewer } = vcInstance\n      const toolbar = viewer._toolbar\n      const { defined, defaultValue, NavigationHelpButton } = Cesium\n      if (defined(viewer.navigationHelpButton) && !viewer.navigationHelpButton.isDestroyed() && !val) {\n        viewer.navigationHelpButton.destroy()\n        viewer._navigationHelpButton = undefined\n      } else if (!defined(viewer.navigationHelpButton) || viewer.navigationHelpButton.isDestroyed()) {\n        let showNavHelp = true\n        try {\n          if (defined(window.localStorage)) {\n            const hasSeenNavHelp = window.localStorage.getItem('cesium-hasSeenNavHelp')\n            if (defined(hasSeenNavHelp) && Boolean(hasSeenNavHelp)) {\n              showNavHelp = false\n            } else {\n              window.localStorage.setItem('cesium-hasSeenNavHelp', 'true')\n            }\n          }\n        } catch (e) {\n          //\n        }\n        const navigationHelpButton = new NavigationHelpButton({\n          container: toolbar!,\n          instructionsInitiallyVisible: defaultValue(props.navigationInstructionsInitiallyVisible, showNavHelp)\n        })\n        viewer._navigationHelpButton = navigationHelpButton\n        resizeToolbar(toolbar, navigationHelpButton)\n      }\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'navigationHelpButton',\n        status: val ? 'added' : 'removed',\n        target: toolbar\n      })\n    }\n  )\n\n  watch(\n    () => props.animation,\n    val => {\n      const { viewer, viewerElement } = vcInstance\n      const { defined, Animation, AnimationViewModel } = Cesium\n      let animationContainer\n      if (defined(viewer.animation) && !viewer.animation.isDestroyed() && !val) {\n        animationContainer = viewer.animation.container\n        viewerElement?.removeChild(animationContainer)\n        viewer.animation.destroy()\n        viewer._animation = undefined\n      } else if (!defined(viewer.animation) || viewer.animation.isDestroyed()) {\n        animationContainer = document.createElement('div')\n        animationContainer.className = 'cesium-viewer-animationContainer'\n        viewerElement?.appendChild(animationContainer)\n        const animation = new Animation(animationContainer, new AnimationViewModel(viewer.clockViewModel))\n        animation.viewModel.dateFormatter = localeDateTimeFormatter\n        animation.viewModel.timeFormatter = localeTimeFormatter\n        viewer._animation = animation\n      }\n      viewer.forceResize()\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'animation',\n        status: val ? 'added' : 'removed',\n        target: animationContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.timeline,\n    val => {\n      const { viewer, viewerElement } = vcInstance\n      const { defined, Timeline } = Cesium\n      let timelineContainer\n      if (defined(viewer.timeline) && !viewer.timeline.isDestroyed() && !val) {\n        timelineContainer = viewer.timeline.container\n        viewerElement?.removeChild(timelineContainer)\n        viewer.timeline.destroy()\n        viewer._timeline = undefined\n      } else if (!defined(viewer.timeline) || viewer.timeline.isDestroyed()) {\n        timelineContainer = document.createElement('div')\n        timelineContainer.className = 'cesium-viewer-timelineContainer'\n        viewerElement?.appendChild(timelineContainer)\n        const timeline = new Timeline(timelineContainer, viewer.clock)\n        timeline.makeLabel = time => {\n          return localeDateTimeFormatter(time)\n        }\n        timeline.addEventListener?.('settime', onTimelineScrubfunction, false)\n        timeline.zoomTo(viewer.clock.startTime, viewer.clock.stopTime)\n        viewer._timeline = timeline\n      }\n      viewer.forceResize()\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'timeline',\n        status: val ? 'added' : 'removed',\n        target: timelineContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.fullscreenButton,\n    val => {\n      const { viewer, viewerElement } = vcInstance\n      const { defined, FullscreenButton } = Cesium\n      let fullscreenContainer\n      if (defined(viewer.fullscreenButton) && !viewer.fullscreenButton.isDestroyed() && !val) {\n        fullscreenContainer = viewer.fullscreenButton.container\n        viewerElement?.removeChild(fullscreenContainer)\n        viewer.fullscreenButton.destroy()\n        viewer._fullscreenButton = undefined\n      } else if (!defined(viewer.fullscreenButton) || viewer.fullscreenButton.isDestroyed()) {\n        fullscreenContainer = document.createElement('div')\n        fullscreenContainer.className = 'cesium-viewer-fullscreenContainer'\n        viewerElement?.appendChild(fullscreenContainer)\n        const fullscreenButton = new FullscreenButton(fullscreenContainer, viewerElement)\n        viewer._fullscreenButton = fullscreenButton\n      }\n      viewer.forceResize()\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'fullscreenButton',\n        status: val ? 'added' : 'removed',\n        target: fullscreenContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.fullscreenElement,\n    val => {\n      const { viewer } = vcInstance\n      const { defined } = Cesium\n      if (!defined(viewer.fullscreenButton)) {\n        return\n      }\n      if (defined(val)) {\n        viewer.fullscreenButton.viewModel.fullscreenElement = val as Element\n      }\n    }\n  )\n\n  watch(\n    () => props.vrButton,\n    val => {\n      const { viewer, viewerElement } = vcInstance\n      const { defined, VRButton } = Cesium\n      let vrContainer\n      if (defined(viewer.vrButton) && !viewer.vrButton.isDestroyed() && !val) {\n        vrContainer = viewer.vrButton.container\n        viewerElement?.removeChild(vrContainer)\n        viewer.vrButton.destroy()\n        viewer._vrButton = undefined\n      } else if (!defined(viewer.vrButton) || viewer.vrButton.isDestroyed()) {\n        vrContainer = document.createElement('div')\n        vrContainer.className = 'cesium-viewer-vrContainer'\n        viewerElement?.appendChild(vrContainer)\n        const vrButton = new VRButton(vrContainer, viewer.scene, viewerElement)\n        const viewModelCommand = vrButton.viewModel.command as any\n        ;(vrButton.viewModel as any)._command = function (VRButtonViewModel) {\n          viewModelCommand()\n          enableVRUI(viewer, VRButtonViewModel.isVRMode)\n        }\n        viewer._vrButton = vrButton\n      }\n      viewer.forceResize()\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'fullscreenButton',\n        status: val ? 'added' : 'removed',\n        target: vrContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.useDefaultRenderLoop,\n    val => {\n      vcInstance.viewer.useDefaultRenderLoop = val\n    }\n  )\n\n  watch(\n    () => props.sceneMode,\n    val => {\n      const { SceneMode } = Cesium\n      if (SceneMode.COLUMBUS_VIEW === val || SceneMode.MORPHING === val || SceneMode.SCENE2D === val || SceneMode.SCENE3D === val) {\n        vcInstance.viewer.scene.mode = val\n      }\n    }\n  )\n\n  watch(\n    () => props.shouldAnimate,\n    val => {\n      vcInstance.viewer.clock.shouldAnimate = val\n    }\n  )\n\n  watch(\n    () => props.terrainExaggeration,\n    val => {\n      vcInstance.viewer._terrainExaggeration = val\n    }\n  )\n\n  watch(\n    () => props.shadows,\n    val => {\n      vcInstance.viewer.scene.shadowMap.enabled = val\n    }\n  )\n\n  watch(\n    () => props.terrainProvider,\n    val => {\n      val && (vcInstance.viewer.terrainProvider = val)\n    }\n  )\n\n  watch(\n    () => props.camera,\n    val => {\n      setViewerCamera(vcInstance.viewer, val)\n    },\n    { deep: true }\n  )\n\n  watch(\n    () => props.imageryProvider,\n    (val, oldVal) => {\n      const { viewer } = vcInstance\n      const { defined } = Cesium\n      if (defined(val)) {\n        for (let i = 0; i < viewer.imageryLayers.length; i++) {\n          viewer.imageryLayers.get(i).imageryProvider === oldVal && viewer.imageryLayers.remove(viewer.imageryLayers[i])\n        }\n        val && viewer.imageryLayers.addImageryProvider(val)\n      }\n    }\n  )\n\n  watch(\n    () => props.showCredit,\n    val => {\n      const { viewer } = vcInstance\n      ;(viewer.cesiumWidget.creditContainer as HTMLElement).style.display = val ? 'inline' : 'none'\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'credit',\n        status: val ? 'added' : 'removed',\n        target: viewer.cesiumWidget.creditContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.debugShowFramesPerSecond,\n    val => {\n      const { viewer } = vcInstance\n      viewer.scene.debugShowFramesPerSecond = val\n    }\n  )\n\n  // methods\n\n  /**\n   * 检测是否引入 CesiumJS\n   */\n  const beforeLoad = async function (): Promise<void> {\n    logger.debug('beforeLoad - viewer')\n    const listener = getInstanceListener(vcInstance, 'beforeLoad')\n    listener && emit('beforeLoad', vcInstance)\n    globalConfig.value.__scriptPromise = globalConfig.value.__scriptPromise || getCesiumScript()\n    await globalConfig.value.__scriptPromise\n  }\n  /**\n   * 初始化 Viewer，成功返回 {Cesium, viewer, instance}， 失败返回false。\n   * @returns VcReadyObject\n   */\n  const load = async function (): Promise<boolean | VcReadyObject> {\n    logger.debug('loading-viewer')\n    if (vcInstance.mounted) {\n      return false\n    }\n\n    await beforeLoad()\n\n    if (typeof Cesium === 'undefined') {\n      return false\n    }\n\n    const { Ion, buildModuleUrl, TileMapServiceImageryProvider, Viewer, defined, Math: CesiumMath, Event } = Cesium\n    const accessToken = props.accessToken ? props.accessToken : globalConfig.value.accessToken\n    Ion.defaultAccessToken = accessToken!\n\n    const {\n      animation,\n      baseLayerPicker,\n      fullscreenButton,\n      vrButton,\n      geocoder,\n      homeButton,\n      infoBox,\n      sceneModePicker,\n      selectionIndicator,\n      timeline,\n      navigationHelpButton,\n      navigationInstructionsInitiallyVisible,\n      scene3DOnly,\n      shouldAnimate,\n      clockViewModel,\n      selectedImageryProviderViewModel,\n      imageryProviderViewModels,\n      selectedTerrainProviderViewModel,\n      terrainProviderViewModels,\n      imageryProvider,\n      terrainProvider,\n      skyBox,\n      skyAtmosphere,\n      fullscreenElement,\n      useDefaultRenderLoop,\n      targetFrameRate,\n      showRenderLoopErrors,\n      useBrowserRecommendedResolution,\n      automaticallyTrackDataSourceClocks,\n      contextOptions,\n      sceneMode,\n      mapProjection,\n      globe,\n      orderIndependentTranslucency,\n      creditContainer,\n      creditViewport,\n      dataSources,\n      terrainExaggeration,\n      shadows,\n      terrainShadows,\n      mapMode2D,\n      projectionPicker,\n      requestRenderMode,\n      maximumRenderTimeChange,\n      camera,\n      navigation\n    } = props\n\n    const url = buildModuleUrl('Assets/Textures/NaturalEarthII')\n\n    let options: AnyObject = {\n      animation,\n      baseLayerPicker,\n      fullscreenButton,\n      vrButton,\n      geocoder,\n      homeButton,\n      infoBox,\n      sceneModePicker,\n      selectionIndicator,\n      timeline,\n      navigationHelpButton,\n      navigationInstructionsInitiallyVisible,\n      scene3DOnly,\n      shouldAnimate,\n      clockViewModel,\n      selectedImageryProviderViewModel,\n      imageryProviderViewModels,\n      selectedTerrainProviderViewModel,\n      terrainProviderViewModels,\n      imageryProvider: isEmptyObj(imageryProvider)\n        ? new TileMapServiceImageryProvider({\n            url\n          })\n        : imageryProvider,\n      terrainProvider,\n      skyBox,\n      skyAtmosphere,\n      fullscreenElement: isEmptyObj(fullscreenElement) ? $(viewerRef) : fullscreenElement,\n      useDefaultRenderLoop,\n      targetFrameRate,\n      showRenderLoopErrors,\n      useBrowserRecommendedResolution,\n      automaticallyTrackDataSourceClocks,\n      contextOptions,\n      sceneMode,\n      mapProjection,\n      globe,\n      orderIndependentTranslucency,\n      creditContainer,\n      creditViewport,\n      dataSources,\n      terrainExaggeration,\n      shadows,\n      terrainShadows,\n      mapMode2D,\n      projectionPicker,\n      requestRenderMode,\n      maximumRenderTimeChange,\n      navigation\n    }\n    options = removeEmpty(options)\n\n    if (Cesium.VERSION >= '1.83') {\n      delete options.terrainExaggeration\n    }\n\n    let viewer: Cesium.Viewer\n\n    if (globalThis.mars3d) {\n      vcInstance.map = new mars3d.Map($(viewerRef).id, options)\n      viewer = vcInstance.map?._viewer\n    } else if (globalThis.DC) {\n      vcInstance.dcViewer = new DC.Viewer($(viewerRef).id, options)\n      viewer = vcInstance.dcViewer?.delegate\n    } else if (globalThis.XE) {\n      vcInstance.earth = new globalThis.XE.Earth($(viewerRef), options)\n      viewer = vcInstance.earth?.czm.viewer\n    } else {\n      viewer = new Viewer($(viewerRef), options)\n    }\n\n    vcInstance.Cesium = Cesium\n    vcInstance.viewer = viewer\n    vcInstance.viewerElement = (viewer as any)._element\n    vcInstance.mounted = true\n\n    if (Cesium.VERSION >= '1.83') {\n      viewer.scene.globe.terrainExaggeration = terrainExaggeration\n    }\n\n    // vue-cesium 扩展补充\n    // vue-cesium extension\n    defined(camera) && setViewerCamera(viewer, camera)\n\n    const listener = getInstanceListener(vcInstance, 'update:camera')\n    listener &&\n      viewer.camera.changed.addEventListener(() => {\n        const cartographic = viewer.camera.positionCartographic\n        let cameraNew: VcCamera\n        if (hasOwn(camera.position, 'lng')) {\n          cameraNew = {\n            position: {\n              lng: CesiumMath.toDegrees(cartographic.longitude),\n              lat: CesiumMath.toDegrees(cartographic.latitude),\n              height: cartographic.height\n            },\n            heading: CesiumMath.toDegrees(viewer.camera.heading || 360),\n            pitch: CesiumMath.toDegrees(viewer.camera.pitch || -90),\n            roll: CesiumMath.toDegrees(viewer.camera.roll || 0)\n          }\n        } else {\n          cameraNew = {\n            position: {\n              x: viewer.camera.position.x,\n              y: viewer.camera.position.y,\n              z: viewer.camera.position.z\n            },\n            heading: viewer.camera.heading || 2 * Math.PI,\n            pitch: viewer.camera.pitch || -Math.PI / 2,\n            roll: viewer.camera.roll || 0\n          }\n        }\n\n        emit('update:camera', cameraNew)\n      })\n\n    if (defined(viewer.animation)) {\n      viewer.animation.viewModel.dateFormatter = localeDateTimeFormatter as Cesium.AnimationViewModel.DateFormatter\n      viewer.animation.viewModel.timeFormatter = localeTimeFormatter as Cesium.AnimationViewModel.TimeFormatter\n    }\n\n    if (defined(viewer.timeline)) {\n      viewer.timeline.makeLabel = time => {\n        return localeDateTimeFormatter(time)\n      }\n      viewer.timeline.zoomTo(viewer.clock.startTime, viewer.clock.stopTime)\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if ((props as any).logo) {\n        logger.warn(\"'logo' is deprecated. Use `showCredit` prop instead. \")\n      }\n    }\n\n    !props.showCredit && ((viewer.cesiumWidget.creditContainer as HTMLElement).style.display = 'none')\n\n    props.debugShowFramesPerSecond && (viewer.scene.debugShowFramesPerSecond = true)\n\n    viewer.viewerWidgetResized = viewer.viewerWidgetResized || new Event()\n    viewer.viewerWidgetResized.addEventListener(onViewerWidgetResized)\n    viewer.imageryLayers.layerAdded.addEventListener(onImageryLayerAdded)\n    eventsState.registerEvents(true)\n    const readyObj: VcReadyObject = {\n      Cesium,\n      viewer,\n      vm: vcInstance.proxy as VcComponentPublicInstance\n    }\n    if (globalThis.XE) {\n      Object.assign(readyObj, {\n        earth: vcInstance.earth\n      })\n    } else if (globalThis.mars3d) {\n      Object.assign(readyObj, {\n        map: vcInstance.map\n      })\n    } else if (globalThis.DC) {\n      Object.assign(readyObj, {\n        dcViewer: vcInstance.dcViewer\n      })\n    }\n\n    const listenerReady = getInstanceListener(vcInstance, 'ready')\n    listenerReady && emit('ready', readyObj)\n    vcMitt?.emit('ready', readyObj)\n    nextTick(() => {\n      viewer.resize()\n      onViewerWidgetResized({\n        type: 'viewer',\n        status: 'added',\n        target: viewer.container as HTMLElement\n      })\n      isReady.value = true\n    })\n\n    logger.debug('loaded-viewer')\n\n    Object.assign(vcInstance.proxy, {\n      cesiumObject: viewer\n    })\n    return readyObj\n  }\n\n  /**\n   * Viewer 销毁方法。\n   */\n  const unload = async function () {\n    if (!vcInstance.mounted) {\n      return false\n    }\n\n    logger.debug('viewer---unloading')\n    let unloadingResolve\n    globalConfig.value.__viewerUnloadingPromise = new Promise((resolve, reject) => {\n      unloadingResolve = resolve\n    })\n\n    // If the component has subcomponents, you need to remove the subcomponents first. 如果该组件带有子组件，需要先移除子组件。\n    for (let i = 0; i < vcInstance.children.length; i++) {\n      const vcChildCmp = vcInstance.children[i].proxy as VcComponentPublicInstance\n      await vcChildCmp.unload()\n    }\n\n    vcInstance.children.length = 0\n\n    const { viewer, earth, map, dcViewer } = vcInstance\n    if (globalThis.Cesium) {\n      viewer.imageryLayers.layerAdded.removeEventListener(onImageryLayerAdded)\n      eventsState.registerEvents(false)\n    }\n\n    viewer._vcPickScreenSpaceEventHandler && viewer._vcPickScreenSpaceEventHandler.destroy()\n    viewer._vcViewerScreenSpaceEventHandler && viewer._vcViewerScreenSpaceEventHandler.destroy()\n    viewer._vcPickScreenSpaceEventHandler = undefined!\n    viewer._vcViewerScreenSpaceEventHandler = undefined!\n\n    if (globalThis.XE) {\n      earth && earth.destroy()\n    } else if (globalThis.mars3d) {\n      map && map.destroy()\n    } else if (globalThis.DC) {\n      dcViewer && dcViewer.destroy()\n    } else {\n      viewer && viewer.destroy()\n    }\n\n    vcInstance.viewer = undefined!\n    vcInstance.mounted = false\n    const { removeCesiumScript } = props\n    if (removeCesiumScript && globalThis.Cesium) {\n      const scripts = document.getElementsByTagName('script')\n      const removeScripts: Array<HTMLScriptElement | HTMLLinkElement> = []\n      for (const script of scripts) {\n        script.src.indexOf('/Cesium.js') > -1 && removeScripts.push(script)\n        script.src.indexOf('/Workers/zlib.min.js') > -1 && removeScripts.push(script)\n        if (globalThis.XE) {\n          script.src.indexOf('/rxjs.umd.min.js') > -1 && removeScripts.push(script)\n          script.src.indexOf('/XbsjCesium.js') > -1 && removeScripts.push(script)\n          script.src.indexOf('/viewerCesiumNavigationMixin.js') > -1 && removeScripts.push(script)\n          script.src.indexOf('/XbsjEarth.js') > -1 && removeScripts.push(script)\n        }\n\n        loadLibs.includes(script.src) && !removeScripts.includes(script) && removeScripts.push(script)\n      }\n\n      const links = document.getElementsByTagName('link')\n      for (const link of links) {\n        link.href.includes('Widgets/widgets.css') && !removeScripts.includes(link) && removeScripts.push(link)\n        loadLibs.includes(link.href) && !removeScripts.includes(link) && removeScripts.push(link)\n      }\n      removeScripts.forEach(script => {\n        script.parentNode && script.parentNode.removeChild(script)\n      })\n      globalThis.Cesium && (globalThis.Cesium = undefined!)\n      globalThis.XbsjCesium && (globalThis.XbsjCesium = undefined)\n      globalThis.XbsjEarth && (globalThis.XbsjEarth = undefined)\n      globalThis.XE && (globalThis.XE = undefined)\n      globalThis.mars3d && (globalThis.mars3d = undefined)\n      globalThis.DC && (globalThis.DC = undefined)\n      globalThis.DcCore && (globalThis.DcCore = undefined)\n      globalConfig.value.__scriptPromise = undefined\n      loadLibs = []\n    }\n    const listener = getInstanceListener(vcInstance, 'destroyed')\n    listener && emit('destroyed', vcInstance)\n    logger.debug('viewer---unloaded')\n    unloadingResolve(true)\n    globalConfig.value.__viewerUnloadingPromise = undefined\n    isReady.value = false\n    return true\n  }\n\n  const reload = function () {\n    return unload().then(() => {\n      return load()\n    })\n  }\n\n  /**\n   * 动态引入 CesiumJS\n   */\n  const getCesiumScript = async function (): Promise<typeof Cesium> {\n    logger.debug('getCesiumScript')\n    if (!globalThis.Cesium) {\n      let cesiumPath = props.cesiumPath ? props.cesiumPath : globalConfig.value.cesiumPath\n      const dirName = dirname(cesiumPath!)\n      if (!cesiumPath?.includes('.js')) {\n        // 认为是mars3d\n        if (cesiumPath?.lastIndexOf('/') !== cesiumPath?.length - 1) {\n          cesiumPath += '/'\n        }\n        const libsConfig = getMars3dConfig(cesiumPath!)\n        const include = globalConfig.value.cfg?.include || 'mars3d'\n        const arrInclude = include.split(',')\n        const keys = {}\n        for (let i = 0, len = arrInclude.length; i < len; i++) {\n          const key = arrInclude[i]\n          if (keys[key]) {\n            //规避重复引入lib\n            continue\n          }\n          keys[key] = true\n          loadLibs.push(...libsConfig[key])\n        }\n      } else if (cesiumPath.includes('dc.base')) {\n        loadLibs.push(cesiumPath)\n        loadLibs.push(cesiumPath.replace('dc.base', 'dc.core'))\n        loadLibs.push(cesiumPath.replace('dc.base', 'dc.core').replace('.js', '.css'))\n      } else if (cesiumPath.includes('/XbsjEarth.js')) {\n        loadLibs.push(cesiumPath)\n      } else {\n        loadLibs.push(cesiumPath)\n        loadLibs.push(`${dirName}/Widgets/widgets.css`)\n      }\n\n      const secondaryLibs = loadLibs\n      if (!cesiumPath?.includes('.js')) {\n        // mars3d 必须要等 Cesium 先初始化\n        const primaryLib = loadLibs.find(v => v.includes('Cesium.js'))\n        await loadScript(primaryLib)\n        secondaryLibs.splice(secondaryLibs.indexOf(primaryLib!), 1)\n      }\n\n      const scriptLoadPromises: Array<Promise<unknown>> = []\n      secondaryLibs.forEach(url => {\n        const cssExpr = new RegExp('\\\\.css')\n        if (cssExpr.test(url)) {\n          scriptLoadPromises.push(loadLink(url))\n        } else {\n          scriptLoadPromises.push(loadScript(url))\n        }\n      })\n\n      return Promise.all(scriptLoadPromises).then(() => {\n        if (globalThis.Cesium) {\n          const listener = getInstanceListener(vcInstance, 'cesiumReady')\n          listener && emit('cesiumReady', globalThis.Cesium)\n          return globalThis.Cesium\n        } else if (globalThis.XE) {\n          // 兼容 cesiumlab earthsdk\n          return globalThis.XE.ready().then(() => {\n            // resolve(globalThis.Cesium)\n            const listener = getInstanceListener(vcInstance, 'cesiumReady')\n            listener && emit('cesiumReady', globalThis.Cesium)\n            return globalThis.Cesium\n          })\n        } else if (globalThis.DC) {\n          // 兼容  dc-sdk\n          globalThis.DC.use(globalThis.DcCore.default || globalThis.DcCore)\n          globalThis.DC.baseUrl = `${dirName}/resources/`\n          globalThis.DC.ready(() => {\n            globalThis.Cesium = DC.Namespace.Cesium\n\n            const listener = getInstanceListener(vcInstance, 'cesiumReady')\n            listener && emit('cesiumReady', globalThis.DC)\n            return globalThis.Cesium\n          })\n          return globalThis.Cesium\n        } else {\n          reject(new Error('VueCesium ERROR: ' + 'Error loading CesiumJS!'))\n        }\n      })\n    } else {\n      return Promise.resolve(globalThis.Cesium)\n    }\n  }\n\n  const loadScript = src => {\n    const $script = document.createElement('script')\n    $script.async = true\n    $script.src = src\n    document.body.appendChild($script)\n    return new Promise((resolve, reject) => {\n      $script.onload = () => {\n        resolve(true)\n      }\n    })\n  }\n\n  const loadLink = src => {\n    const $link = document.createElement('link')\n    $link.rel = 'stylesheet'\n    $link.href = src\n    document.head.appendChild($link)\n    return new Promise((resolve, reject) => {\n      $link.onload = () => {\n        resolve(true)\n      }\n    })\n  }\n\n  const onViewerWidgetResized = e => {\n    const { viewer } = vcInstance\n    const toolbarElement = viewer._toolbar as HTMLElement\n    if (\n      toolbarElement !== void 0 &&\n      getComputedStyle(toolbarElement).visibility !== 'hidden' &&\n      getComputedStyle(toolbarElement).display !== 'none'\n    ) {\n      ;(layout.toolbarContainerRC as any) = toolbarElement.getBoundingClientRect()!\n    } else {\n      layout.toolbarContainerRC = undefined\n    }\n\n    const bottomContainer = viewer.bottomContainer as HTMLElement\n    if (\n      bottomContainer !== void 0 &&\n      getComputedStyle(bottomContainer).visibility !== 'hidden' &&\n      getComputedStyle(bottomContainer).display !== 'none'\n    ) {\n      ;(layout.bottomContainerRC as any) = bottomContainer.getBoundingClientRect()\n    } else {\n      layout.bottomContainerRC = undefined\n    }\n\n    const timelineContainer = viewer.timeline?.container as HTMLElement\n    if (\n      timelineContainer !== void 0 &&\n      getComputedStyle(timelineContainer).visibility !== 'hidden' &&\n      getComputedStyle(timelineContainer).display !== 'none'\n    ) {\n      ;(layout.timelineContainerRC as any) = timelineContainer.getBoundingClientRect()\n    } else {\n      layout.timelineContainerRC = undefined\n    }\n\n    const animationContainer = viewer.animation?.container as HTMLElement\n    if (\n      animationContainer !== void 0 &&\n      getComputedStyle(animationContainer).visibility !== 'hidden' &&\n      getComputedStyle(animationContainer).display !== 'none'\n    ) {\n      ;(layout.animationContainerRC as any) = animationContainer.getBoundingClientRect()\n    } else {\n      layout.animationContainerRC = undefined\n    }\n\n    viewer.resize()\n    const listener = getInstanceListener(vcInstance, 'viewerWidgetResized')\n    listener && emit('viewerWidgetResized', e)\n  }\n\n  /**\n   * 添加影像图层事件回调方法，在此维护影像图层相对顺序。\n   * @param layer 添加的图层。\n   */\n  const onImageryLayerAdded = (layer: Cesium.ImageryLayer) => {\n    const viewer = vcInstance.viewer as Cesium.Viewer\n    const { autoSortImageryLayers } = props\n\n    if (viewer.baseLayerPicker) {\n      viewer.imageryLayers.raiseToTop(layer)\n    }\n    const { defined } = Cesium\n    if (autoSortImageryLayers) {\n      layer.sortOrder = defined(layer.sortOrder) ? layer.sortOrder : 9999\n      viewer.imageryLayers._layers.sort((a: Cesium.ImageryLayer, b: Cesium.ImageryLayer) => a.sortOrder! - b.sortOrder!)\n      viewer.imageryLayers._update()\n    }\n  }\n  /**\n   * 本地日期和时间格式化函数。\n   * @param date\n   * @param viewModel\n   * @param ignoredate\n   */\n  const localeDateTimeFormatter = function (date: Cesium.JulianDate, viewModel?: Cesium.AnimationViewModel, ignoredate?: boolean): string {\n    const { JulianDate } = Cesium\n    let TZCode\n\n    if (props.UTCOffset) {\n      date = JulianDate.addMinutes(date, props.UTCOffset, new JulianDate())\n      const offset = new Date().getTimezoneOffset() - props.UTCOffset\n      TZCode = offset === 0 ? 'UTC' : 'UTC' + '+' + -(offset / 60)\n    } else {\n      TZCode = new Date().getTimezoneOffset() === 0 ? 'UTC' : 'UTC' + '+' + -(new Date().getTimezoneOffset() / 60)\n    }\n    const jsDate = JulianDate.toDate(date)\n    const timeString: string = jsDate\n      .toLocaleString(t('name'), {\n        hour: 'numeric',\n        minute: 'numeric',\n        second: 'numeric',\n        hour12: false\n      })\n      .replace(/,/g, '')\n    const dateString: string = jsDate\n      .toLocaleString(t('name'), {\n        year: 'numeric',\n        month: 'short',\n        day: 'numeric'\n      })\n      .replace(/,/g, '')\n\n    if (!ignoredate && (viewModel || jsDate.getHours() + jsDate.getMinutes() === 0)) {\n      return dateString\n    }\n\n    props.TZCode && (TZCode = props.TZCode)\n    return ignoredate ? `${timeString} ${TZCode}` : `${dateString} ${timeString} ${TZCode}`\n  }\n\n  /**\n   * 本地时间格式化函数。\n   * @param time\n   * @param viewModel\n   */\n  const localeTimeFormatter = function (time: Cesium.JulianDate, viewModel: Cesium.AnimationViewModel): string {\n    return localeDateTimeFormatter(time, viewModel, true)\n  }\n\n  const onTimelineScrubfunction = function (e) {\n    const clock = e.clock\n    clock.currentTime = e.timeJulian\n    clock.shouldAnimate = false\n  }\n\n  const enableVRUI = function (viewer, enabled) {\n    const geocoder = viewer._geocoder\n    const homeButton = viewer._homeButton\n    const sceneModePicker = viewer._sceneModePicker\n    const projectionPicker = viewer._projectionPicker\n    const baseLayerPicker = viewer._baseLayerPicker\n    const animation = viewer._animation\n    const timeline = viewer._timeline\n    const fullscreenButton = viewer._fullscreenButton\n    const infoBox = viewer._infoBox\n    const selectionIndicator = viewer._selectionIndicator\n    const visibility = enabled ? 'hidden' : 'visible'\n    const { defined } = Cesium\n    if (defined(geocoder)) {\n      geocoder.container.style.visibility = visibility\n    }\n    if (defined(homeButton)) {\n      homeButton.container.style.visibility = visibility\n    }\n    if (defined(sceneModePicker)) {\n      sceneModePicker.container.style.visibility = visibility\n    }\n    if (defined(projectionPicker)) {\n      projectionPicker.container.style.visibility = visibility\n    }\n    if (defined(baseLayerPicker)) {\n      baseLayerPicker.container.style.visibility = visibility\n    }\n    if (defined(animation)) {\n      animation.container.style.visibility = visibility\n    }\n    if (defined(timeline)) {\n      timeline.container.style.visibility = visibility\n    }\n    if (defined(fullscreenButton) && fullscreenButton.viewModel.isFullscreenEnabled) {\n      fullscreenButton.container.style.visibility = visibility\n    }\n    if (defined(infoBox)) {\n      infoBox.container.style.visibility = visibility\n    }\n    if (defined(selectionIndicator)) {\n      selectionIndicator.container.style.visibility = visibility\n    }\n    if (viewer._container) {\n      const right = enabled || !defined(fullscreenButton) ? 0 : fullscreenButton.container.clientWidth\n      viewer._vrButton.container.style.right = right + 'px'\n      viewer.forceResize()\n    }\n  }\n\n  const resizeToolbar = function (parent, child) {\n    Array.prototype.slice.call(parent.children).forEach(element => {\n      switch (element.className) {\n        case 'cesium-viewer-geocoderContainer':\n          element.customIndex = 1\n          break\n        case 'cesium-button cesium-toolbar-button cesium-home-button':\n          element.customIndex = 2\n          break\n        case 'cesium-sceneModePicker-wrapper cesium-toolbar-button':\n          element.customIndex = 3\n          break\n        case 'cesium-projectionPicker-wrapper cesium-toolbar-button':\n          element.customIndex = 4\n          break\n        case 'cesium-button cesium-toolbar-button':\n        case 'cesium-baseLayerPicker-dropDown':\n          element.customIndex = 5\n          break\n        case 'cesium-navigationHelpButton-wrapper':\n          element.customIndex = 6\n          break\n      }\n    })\n    const arr: any[] = []\n    Array.prototype.slice.call(parent.children).forEach(element => {\n      arr.push(element)\n    })\n    arr.sort(function (a, b) {\n      return a.customIndex - b.customIndex\n    })\n    for (let i = 0; i < arr.length; i++) {\n      parent.appendChild(arr[i])\n    }\n  }\n\n  const getServices = function () {\n    return mergeDescriptors(\n      {},\n      {\n        get layout() {\n          return layout\n        },\n        get vm() {\n          return vcInstance\n        },\n        get Cesium() {\n          return vcInstance.Cesium\n        },\n        get viewer(): Cesium.Viewer {\n          return vcInstance.viewer\n        },\n        get dataSources(): Cesium.DataSourceCollection {\n          return vcInstance.viewer?.dataSources\n        },\n        get entities() {\n          return vcInstance.viewer?.entities\n        },\n        get imageryLayers() {\n          return vcInstance.viewer?.imageryLayers\n        },\n        get primitives() {\n          return vcInstance.viewer?.scene.primitives\n        },\n        get groundPrimitives() {\n          return vcInstance.viewer?.scene.groundPrimitives\n        },\n        get postProcessStages() {\n          return vcInstance.viewer?.postProcessStages\n        },\n        get viewerCreatePromise() {\n          return createPromise\n        }\n      }\n    )\n  }\n\n  Object.defineProperties(vcInstance, {\n    cesiumObject: {\n      enumerable: true,\n      get: () => vcInstance.viewer\n    }\n  })\n\n  // lifecycle\n  onMounted(async () => {\n    try {\n      logger.debug('viewer - onMounted')\n      await globalConfig.value?.__viewerUnloadingPromise\n      createResolve(load())\n    } catch (e) {\n      reject(e)\n    }\n  })\n\n  onUnmounted(() => {\n    logger.debug('viewer - onUnmounted')\n    unload().then(() => {\n      vcMitt.all.clear()\n    })\n  })\n\n  return {\n    isReady,\n    load,\n    unload,\n    reload,\n    getServices,\n    viewerRef,\n    createPromise\n  }\n}\n\n// export type VcViewerProps = ExtractPropTypes<typeof viewerProps>\nexport type VcViewerProps = {\n  /**\n   * If set to false, the Animation widget will not be created.\n   * Default value: false\n   */\n  animation?: boolean\n  /**\n   * If set to false, the BaseLayerPicker widget will not be created.\n   * Default value: false\n   */\n  baseLayerPicker?: boolean\n  /**\n   * \tIf set to false, the FullscreenButton widget will not be created.\n   * Default value: false\n   */\n  fullscreenButton?: boolean\n  /**\n   * If set to true, the VRButton widget will be created.\n   * Default value: false\n   */\n  vrButton?: boolean\n  /**\n   * If set to false, the Geocoder widget will not be created.\n   * Default value: false\n   */\n  geocoder?: boolean | Array<Cesium.GeocoderService>\n  /**\n   * If set to false, the HomeButton widget will not be created.\n   * Default value: false\n   */\n  homeButton?: boolean\n  /**\n   * If set to false, the InfoBox widget will not be created.\n   * Default value: false\n   */\n  infoBox?: boolean\n  /**\n   * If set to false, the SceneModePicker widget will not be created.\n   * Default value: false\n   */\n  sceneModePicker?: boolean\n  /**\n   * If set to false, the SelectionIndicator widget will not be created.\n   * Default value: false\n   */\n  selectionIndicator?: boolean\n  /**\n   * If set to false, the Timeline widget will not be created.\n   * Default value: false\n   */\n  timeline?: boolean\n  /**\n   * If set to false, the navigation help button will not be created.\n   * Default value: false\n   */\n  navigationHelpButton?: boolean\n  /**\n   * True if the navigation instructions should initially be visible, or false if the should not be shown until the user explicitly clicks the button.\n   * Default value: false\n   */\n  navigationInstructionsInitiallyVisible?: boolean\n  /**\n   * When true, each geometry instance will only be rendered in 3D to save GPU memory.\n   * Default value: false\n   */\n  scene3DOnly?: boolean\n  /**\n   * true if the clock should attempt to advance simulation time by default, false otherwise. This option takes precedence over setting clockViewModel.\n   * Default value: false\n   */\n  shouldAnimate?: boolean\n  /**\n   * The clock view model to use to control current time.\n   */\n  clockViewModel?: Cesium.ClockViewModel\n  /**\n   * The view model for the current base imagery layer, if not supplied the first available base layer is used. This value is only valid if `baseLayerPicker` is set to true.\n   */\n  selectedImageryProviderViewModel?: Cesium.ProviderViewModel\n  /**\n   * The array of ProviderViewModels to be selectable from the BaseLayerPicker. This value is only valid if `baseLayerPicker` is set to true.\n   */\n  imageryProviderViewModels?: Array<Cesium.ProviderViewModel>\n  /**\n   * The view model for the current base terrain layer, if not supplied the first available base layer is used. This value is only valid if `baseLayerPicker` is set to true.\n   */\n  selectedTerrainProviderViewModel?: Cesium.ProviderViewModel\n  /**\n   * The array of ProviderViewModels to be selectable from the BaseLayerPicker. This value is only valid if `baseLayerPicker` is set to true.\n   */\n  terrainProviderViewModels?: Array<Cesium.ProviderViewModel>\n  /**\n   * The imagery provider to use. This value is only valid if `baseLayerPicker` is set to false.\n   */\n  imageryProvider?: Cesium.ImageryProvider\n  /**\n   * The terrain provider to use\n   */\n  terrainProvider?: Cesium.TerrainProvider\n  /**\n   * The skybox used to render the stars. When undefined, the default stars are used. If set to false, no skyBox, Sun, or Moon will be added.\n   * Default value: undefined\n   */\n  skyBox?: Cesium.SkyBox | false\n  /**\n   * Blue sky, and the glow around the Earth's limb. Set to false to turn it off.\n   */\n  skyAtmosphere?: Cesium.SkyAtmosphere | false\n  /**\n   * The element or id to be placed into fullscreen mode when the full screen button is pressed.\n   */\n  fullscreenElement?: string | Element\n  /**\n   * True if this widget should control the render loop, false otherwise.\n   * Default value: true\n   */\n  useDefaultRenderLoop?: boolean\n  /**\n   * The target frame rate when using the default render loop.\n   */\n  targetFrameRate?: number\n  /**\n   * If true, this widget will automatically display an HTML panel to the user containing the error, if a render loop error occurs.\n   * Default value: true\n   */\n  showRenderLoopErrors?: boolean\n  /**\n   * If true, render at the browser's recommended resolution and ignore window.devicePixelRatio.\n   * Default value: true\n   */\n  useBrowserRecommendedResolution?: boolean\n  /**\n   * If true, this widget will automatically track the clock settings of newly added DataSources, updating if the DataSource's clock changes. Set this to false if you want to configure the clock independently.\n   * Default value: true\n   */\n  automaticallyTrackDataSourceClocks?: boolean\n  /**\n   * Context and WebGL creation properties corresponding to options passed to Scene.\n   */\n  contextOptions?: VcContextOptions\n  /**\n   * The initial scene mode.\n   * Default value: 3\n   */\n  sceneMode?: Cesium.SceneMode\n  /**\n   * The map projection to use in 2D and Columbus View modes.\n   */\n  mapProjection?: Cesium.MapProjection\n  /**\n   * The globe to use in the scene. If set to false, no globe will be added.\n   */\n  globe?: Cesium.Globe | false\n  /**\n   * If true and the configuration supports it, use order independent translucency.\n   * Default value: true\n   */\n  orderIndependentTranslucency?: boolean\n  /**\n   * The DOM element or ID that will contain the CreditDisplay. If not specified, the credits are added to the bottom of the widget itself.\n   */\n  creditContainer?: string | Element\n  /**\n   * The DOM element or ID that will contain the credit pop up created by the CreditDisplay. If not specified, it will appear over the widget itself.\n   */\n  creditViewport?: string | Element\n  /**\n   * The collection of data sources visualized by the widget. If this parameter is provided, the instance is assumed to be owned by the caller and will not be destroyed when the viewer is destroyed.\n   */\n  dataSources?: Cesium.DataSourceCollection\n  /**\n   * A scalar used to exaggerate the terrain. Defaults to 1.0 (no exaggeration). A value of 2.0 scales the terrain by 2x. A value of 0.0 makes the terrain completely flat. Note that terrain exaggeration will not modify any other primitive as they are positioned relative to the ellipsoid.\n   * Default value: 1.0\n   */\n  terrainExaggeration?: number\n  /**\n   * Determines if shadows are cast by light sources.\n   * Default value: false\n   */\n  shadows?: boolean\n  /**\n   * Determines if the terrain casts or receives shadows from light sources.\n   * Default value: 3\n   */\n  terrainShadows?: Cesium.ShadowMode\n  /**\n   * Determines if the 2D map is rotatable or can be scrolled infinitely in the horizontal direction.\n   * Default value: 1\n   */\n  mapMode2D?: Cesium.MapMode2D\n  /**\n   * If set to true, the ProjectionPicker widget will be created.\n   * Default value: false\n   */\n  projectionPicker?: boolean\n  /**\n   * If true, rendering a frame will only occur when needed as determined by changes within the scene. Enabling reduces the CPU/GPU usage of your application and uses less battery on mobile, but requires using Scene#requestRender to render a new frame explicitly in this mode. This will be necessary in many cases after making changes to the scene in other parts of the API. See Improving Performance with Explicit Rendering.\n   * Default value: false\n   */\n  requestRenderMode?: boolean\n  /**\n   * If requestRenderMode is true, this value defines the maximum change in simulation time allowed before a render is requested. See Improving Performance with Explicit Rendering.\n   * Default value: 0.0\n   */\n  maximumRenderTimeChange?: number\n  /**\n   * Specify the web service address of the CesiumJS library used to initialize the `vc-viewer` component.\n   */\n  cesiumPath?: string\n  /**\n   * Specify the default [Cesium ion](https://cesium.com/ion/) access token.\n   */\n  accessToken?: string\n  /**\n   * Specify the viewer camera\n   */\n  camera?: VcCamera\n  /**\n   * Specify whether to display the default Logo and loading data copyright information.\n   * Default value: true\n   */\n  showCredit?: boolean\n  /**\n   * Specify whether to display frames per second and time between frames.This property is for debugging only; it is not for production use.\n   * Default value: false\n   */\n  debugShowFramesPerSecond?: boolean\n  /**\n   * Specify whether to display navigation control. for supermap webgl iclient only.\n   * Default value: false\n   */\n  navigation?: boolean\n  /**\n   * The time zone code used for timeline date formatting. By default, it is formatted as local time. If you want to display it as UTC universal time, set `UTCoffset` to `new Date().getTimezoneOffset()`\n   */\n  TZCode?: string\n  /**\n   * The time difference (minutes) between local time and UTC time.\n   */\n  UTCOffset?: number\n  /**\n   * Specify whether to remove the CesiumJS script tag when `vc-viewer` is destroyed.\n   * Default value: true\n   */\n  removeCesiumScript?: boolean\n  /**\n   * Specify whether to automatically sort imageLayers according to the layer's `sortOrder` property when adding imagelayer.\n   * Default value: true\n   */\n  autoSortImageryLayers?: boolean\n  /**\n   * Specifiy whether to trigger mouse events.\n   * Default value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify whether to show the skeleton background during `vc-viewer` initialization.\n   * Default value: true\n   */\n  skeleton?: boolean | VcSkeletonProps\n  /**\n   * Triggers before the VcViewer is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcViewer is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcViewer is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when CesiumJS is successfully loaded.\n   */\n  onCesiumReady?: (payload: typeof Cesium) => void\n  /**\n   * Triggers when a component changes on vc-viewer.\n   */\n  onViewerWidgetResized?: (payload: ViewerWidgetResizedEvent) => void\n  /**\n   * Triggers when the selected entity changes.\n   */\n  onSelectedEntityChanged?: (entity: Cesium.Entity) => void\n  /**\n   * Triggers when the tracked entity changes.\n   */\n  onTrackedEntityChanged?: (entity: Cesium.Entity) => void\n  /**\n   * Triggers when a layer is added to the collection. Event handlers are passed the layer that was added and the index at which it was added.\n   */\n  onLayerAdded?: (imageryLayer: Cesium.ImageryLayer, index: number) => void\n  /**\n   * Triggers when a layer changes position in the collection. Event handlers are passed the layer that was moved, its new index after the move, and its old index prior to the move.\n   */\n  onLayerMoved?: (imageryLayer: Cesium.ImageryLayer, newIndex: number, oldIndex: number) => void\n  /**\n   * Triggers when a layer is removed from the collection. Event handlers are passed the layer that was removed and the index from which it was removed.\n   */\n  onLayerRemoved?: (imageryLayer: Cesium.ImageryLayer, index: number) => void\n  /**\n   * Triggers when a layer is shown or hidden by setting the ImageryLayer#show property. Event handlers are passed a reference to this layer, the index of the layer in the collection, and a flag that is true if the layer is now shown or false if it is now hidden.\n   */\n  onLayerShownOrHidden?: (imageryLayer: Cesium.ImageryLayer, index: number, show: boolean) => void\n  /**\n   * Triggers when a data source is added to the collection. Event handlers are passed the data source that was added.\n   */\n  onDataSourceAdded?: (collection: Cesium.DataSourceCollection, dataSource: VcDatasource) => void\n  /**\n   * Triggers when a data source changes position in the collection. Event handlers are passed the data source that was moved, its new index after the move, and its old index prior to the move.\n   */\n  onDataSourceMoved?: (dataSource: VcDatasource, newIndex: number, oldIndex: number) => void\n  /**\n   * Triggers when a data source is removed from the collection. Event handlers are passed the data source that was removed.\n   */\n  onDataSourceRemoved?: (collection: Cesium.DataSourceCollection, dataSource: VcDatasource) => void\n  /**\n   * Triggers when when entities are added or removed from the collection. The generated event is a EntityCollection.collectionChangedEventCallback.\n   */\n  onCollectionChanged?: (\n    collection: Cesium.EntityCollection,\n    addedArray: Array<Cesium.Entity>,\n    removedArray: Array<Cesium.Entity>,\n    changedArray: Array<Cesium.Entity>\n  ) => void\n  /**\n   * Triggers at the completion of a scene transition.\n   */\n  onMorphComplete?: (transitioner: any, preceneModeMode: Cesium.SceneMode, sceneMode: Cesium.SceneMode, wasMorphing: boolean) => void\n  /**\n   * Triggers at the beginning of a scene transition.\n   */\n  onMorphStart?: (transitioner: any, preceneModeMode: Cesium.SceneMode, sceneMode: Cesium.SceneMode, wasMorphing: boolean) => void\n  /**\n   * Triggers immediately after the scene is rendered. Subscribers to the event receive the Scene instance as the first parameter and the current time as the second parameter.\n   */\n  onPostRender?: (scene: Cesium.Scene, time: Cesium.JulianDate) => void\n  /**\n   * Triggers after the scene is updated and immediately before the scene is rendered. Subscribers to the event receive the Scene instance as the first parameter and the current time as the second parameter.\n   */\n  onPreRender?: (scene: Cesium.Scene, time: Cesium.JulianDate) => void\n  /**\n   * Triggers immediately after the scene is updated and before the scene is rendered. Subscribers to the event receive the Scene instance as the first parameter and the current time as the second parameter.\n   */\n  onPostUpdate?: (scene: Cesium.Scene, time: Cesium.JulianDate) => void\n  /**\n   * Triggers before the scene is updated or rendered. Subscribers to the event receive the Scene instance as the first parameter and the current time as the second parameter.\n   */\n  onPreUpdate?: (scene: Cesium.Scene, time: Cesium.JulianDate) => void\n  /**\n   * Triggers when an error is thrown inside the render function. The Scene instance and the thrown error are the only two parameters passed to the event handler. By default, errors are not rethrown after this event is raised, but that can be changed by setting the rethrowRenderErrors property.\n   */\n  onRenderError?: (scene: Cesium.Scene, error: any) => void\n  /**\n   * Triggers when the terrain provider is changed.\n   */\n  onTerrainProviderChanged?: (provider: VcTerrainProvider) => void\n  /**\n   * Triggers when the camera has changed by percentageChanged.\n   */\n  onChanged?: (percent: number) => void\n  /**\n   * Triggers when the camera has stopped moving.\n   */\n  onMoveEnd?: () => void\n  /**\n   * Triggers when the camera starts to move.\n   */\n  onMoveStart?: () => void\n  /**\n   * Triggers when Clock#stopTime is reached.\n   */\n  onOnStop?: (clock: Cesium.Clock) => void\n  /**\n   * Triggers when Clock#tick is called.\n   */\n  onOnTick?: (clock: Cesium.Clock) => void\n  /**\n   * Triggers when the terrain provider encounters an asynchronous error. By subscribing to the event, you will be notified of the error and can potentially recover from it. Event listeners are passed an instance of TileProviderError.\n   */\n  onErrorEvent?: (tileProviderError: any) => void\n  /**\n   * Triggers when the user clicks the camera icon.\n   */\n  onCameraClicked?: (viewModel: Cesium.InfoBoxViewModel) => void\n  /**\n   * Triggers when the user closes the info box.\n   */\n  onCloseClicked?: (viewModel: Cesium.InfoBoxViewModel) => void\n  /**\n   * Triggers when the mouse left button clicked.\n   */\n  onLeftClick?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggered when the mouse left button double clicked.\n   */\n  onLeftDoubleClick?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggered when the mouse left button down.\n   */\n  onLeftDown?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggered when the mouse left button up.\n   */\n  onLeftUp?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse middle button clicked.\n   */\n  onMiddleClick?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse middle button down.\n   */\n  onMiddleDown?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse middle button up.\n   */\n  onMiddleUp?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse move.\n   */\n  onMouseMove?: (mouseClickEvent: { startPosition: Cesium.Cartesian2; endPosition: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the start of a two-finger on a touch surface.\n   */\n  onPinchStart?: (touch2StartEvent: { position1: Cesium.Cartesian2; position2: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when a change of a two-finger on a touch surface.\n   */\n  onPinchMove?: (touchPinchMovementEvent: {\n    distance: {\n      startPosition: Cesium.Cartesian2\n      endPosition: Cesium.Cartesian2\n    }\n    angleAndHeight: {\n      startPosition: Cesium.Cartesian2\n      endPosition: Cesium.Cartesian2\n    }\n  }) => void\n  /**\n   * Triggers when end of a two-finger on a touch surface.\n   */\n  onPinchEnd?: () => void\n  /**\n   * Triggers when the mouse right click.\n   */\n  onRightClick?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse right button down.\n   */\n  onRightDown?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse right button up.\n   */\n  onRightUp?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse wheel.\n   */\n  onWheel?: (delta: number) => void\n  /**\n   * Triggers when an imagery layer is added, shown, hidden, moved, or removed.\n   */\n  onImageryLayersUpdatedEvent?: () => void\n  /**\n   * \tTriggers when the length of the tile load queue has changed since the last render frame. When the load queue is empty, all terrain and imagery for the current view have been loaded. The event passes the new length of the tile load queue.\n   */\n  onTileLoadProgressEvent?: (length: number) => void\n}\n\nexport interface VcViewerSlots {\n  /**\n   * Default slot content of the component\n   */\n  default: () => VNode[]\n}\n","import { viewerScreenSpaceEvents, pickEvents } from '@vue-cesium/composables/use-events'\nimport { camelCase, capitalize } from '@vue-cesium/utils/util'\n\nconst viewerEvents = [\n  {\n    // viewer.imageryLayers\n    name: 'imageryLayers',\n    events: ['layerAdded', 'layerMoved', 'layerRemoved', 'layerShownOrHidden']\n  },\n  {\n    // viewer.dataSources\n    name: 'dataSources',\n    events: ['dataSourceAdded', 'dataSourceMoved', 'dataSourceRemoved']\n  },\n  {\n    // viewer.entities\n    name: 'entities',\n    events: ['collectionChanged']\n  },\n  {\n    // viewer.scene\n    name: 'scene',\n    events: ['morphComplete', 'morphStart', 'postRender', 'postUpdate', 'preRender', 'preUpdate', 'renderError', 'terrainProviderChanged']\n  },\n  {\n    // viewer.camera\n    name: 'camera',\n    events: ['changed', 'moveEnd', 'moveStart']\n  },\n  {\n    // viewer.clock\n    name: 'clock',\n    events: ['onStop', 'onTick']\n  },\n  {\n    // viewer.terrainProvider\n    name: 'terrainProvider',\n    events: ['errorEvent']\n  },\n  {\n    // viewer.infoBox.viewModel\n    name: ['infoBox', 'viewModel'],\n    events: ['cameraClicked', 'closeClicked']\n  },\n  // viewer.scene.globe\n  {\n    name: ['scene', 'globe'],\n    events: ['imageryLayersUpdatedEvent', 'terrainProviderChanged', 'tileLoadProgressEvent']\n  }\n]\n\nconst viewerScreenSpaceEventsCamel = viewerScreenSpaceEvents.map(v => camelCase(v))\n\nconst cmpEvents = [\n  'beforeLoad',\n  'cesiumReady',\n  'ready',\n  'destroyed',\n  'update:camera',\n  'viewerWidgetResized',\n  ...viewerScreenSpaceEvents,\n  ...viewerScreenSpaceEventsCamel,\n  ...pickEvents\n]\n\nconst emits = viewerEvents.reduce((pre, cur) => {\n  return pre.concat(cur.events)\n}, cmpEvents)\n\nexport { viewerEvents, emits }\n","import { computed } from 'vue'\n\nexport const useSizeDefaults = {\n  xs: 18,\n  sm: 24,\n  md: 32,\n  lg: 38,\n  xl: 46\n}\n\nexport const useSizeProps = {\n  size: String\n}\n\nexport default function (props, sizes = useSizeDefaults) {\n  // return sizeStyle\n  return computed(() => (props.size !== void 0 ? { fontSize: props.size in sizes ? `${sizes[props.size]}px` : props.size } : null))\n}\n","import { h, withDirectives } from 'vue'\n\nexport function hSlot(slot, otherwise?) {\n  return slot !== void 0 ? slot() : otherwise\n}\n\nexport function hUniqueSlot(slot, otherwise) {\n  return slot !== void 0 ? slot().slice() : otherwise\n}\n\n/**\n * Source definitely exists,\n * so it's merged with the possible slot\n */\nexport function hMergeSlot(slot, source) {\n  return slot !== void 0 ? source.concat(slot()) : source\n}\n\n/**\n * Merge with possible slot,\n * even if source might not exist\n */\nexport function hMergeSlotSafely(slot, source) {\n  if (slot === void 0) {\n    return source\n  }\n\n  return source !== void 0 ? source.concat(slot()) : slot()\n}\n\n/*\n * (String)  key       - unique vnode key\n * (Boolean) condition - should change ONLY when adding/removing directive\n */\nexport function hDir(tag, data, children?, key?, condition?, getDirsFn?) {\n  data.key = key + condition\n\n  const vnode = h(tag, data, children)\n\n  return condition === true ? withDirectives(vnode, getDirsFn()) : vnode\n}\n","import { h, defineComponent, computed } from 'vue'\nimport type { CSSProperties, ExtractPropTypes } from 'vue'\nimport useSize, { useSizeProps } from '@vue-cesium/composables/private/use-size'\nimport { hMergeSlot, hSlot } from '@vue-cesium/utils/private/render'\n\nexport const iconProps = {\n  ...useSizeProps,\n\n  tag: {\n    type: String,\n    default: 'i'\n  },\n\n  name: String,\n  color: String,\n  hoverColor: String,\n  left: Boolean,\n  right: Boolean\n}\nexport default defineComponent({\n  name: 'VcIcon',\n  props: iconProps,\n  setup(props, { slots }) {\n    const sizeStyle = useSize(props)\n    const style = computed(() => {\n      const css: CSSProperties | null = sizeStyle.value\n      if (!css) {\n        return undefined\n      }\n      props.color && (css.color = props.color)\n      props.hoverColor && (css['--hover-color'] = props.hoverColor)\n      return css\n    })\n\n    const classes = computed(\n      () =>\n        'vc-icon' +\n        (props.left === true ? ' on-left' : '') +\n        (props.right === true ? ' on-right' : '') +\n        (props.color !== void 0 ? ` text-${props.color}` : '')\n    )\n\n    const type = computed(() => {\n      let cls\n      let icon = props.name\n\n      if (!icon) {\n        return {\n          none: true,\n          cls: classes.value\n        }\n      }\n\n      if (icon.startsWith('M') === true) {\n        const [def, viewBox] = icon.split('|')\n\n        return {\n          svg: true,\n          cls: classes.value,\n          nodes: def.split('&&').map(path => {\n            const [d, style, transform] = path.split('@@')\n            return h('path', {\n              style,\n              d,\n              transform\n            })\n          }),\n          viewBox: viewBox !== void 0 ? viewBox : '0 0 24 24'\n        }\n      }\n\n      if (icon.startsWith('img:') === true) {\n        return {\n          img: true,\n          cls: classes.value,\n          src: icon.substring(4)\n        }\n      }\n\n      if (icon.startsWith('svguse:') === true) {\n        const [def, viewBox] = icon.split('|')\n\n        return {\n          svguse: true,\n          cls: classes.value,\n          src: def.substring(7),\n          viewBox: viewBox !== void 0 ? viewBox : '0 0 24 24'\n        }\n      }\n\n      let content = ' '\n\n      if (/^[l|f]a[s|r|l|b|d]{0,1} /.test(icon) || icon.startsWith('icon-') === true) {\n        cls = icon\n      } else if (icon.startsWith('bt-') === true) {\n        cls = `bt ${icon}`\n      } else if (icon.startsWith('eva-') === true) {\n        cls = `eva ${icon}`\n      } else if (/^ion-(md|ios|logo)/.test(icon) === true) {\n        cls = `ionicons ${icon}`\n      } else if (icon.startsWith('ion-') === true) {\n        cls = `ionicons ion-md${icon.substr(3)}`\n      } else if (icon.startsWith('mdi-') === true) {\n        cls = `mdi ${icon}`\n      } else if (icon.startsWith('iconfont ') === true) {\n        cls = `${icon}`\n      } else if (icon.startsWith('ti-') === true) {\n        cls = `themify-icon ${icon}`\n      } else if (icon.startsWith('vc-') === true) {\n        cls = `vc-icons ${icon}`\n      } else {\n        // \"notranslate\" class is for Google Translate\n        // to avoid tampering with Material Icons ligature font\n        //\n        // Caution: To be able to add suffix to the class name,\n        // keep the 'material-icons' at the end of the string.\n        cls = 'notranslate material-icons'\n\n        if (icon.startsWith('o_') === true) {\n          icon = icon.substring(2)\n          cls += '-outlined'\n        } else if (icon.startsWith('r_') === true) {\n          icon = icon.substring(2)\n          cls += '-round'\n        } else if (icon.startsWith('s_') === true) {\n          icon = icon.substring(2)\n          cls += '-sharp'\n        }\n\n        content = icon\n      }\n\n      return {\n        cls: cls + ' ' + classes.value,\n        content\n      }\n    })\n\n    return () => {\n      const data = {\n        class: type.value.cls,\n        style: style.value,\n        'aria-hidden': 'true',\n        role: 'presentation',\n        viewBox: '',\n        src: ''\n      }\n\n      if (type.value.none === true) {\n        return h(props.tag, data, hSlot(slots.default))\n      }\n\n      if (type.value.img === true) {\n        data.src = type.value.src\n        if (data.style) {\n          data.style.width = data.style.fontSize\n          data.style.height = data.style.fontSize\n        }\n        return h('img', data)\n      }\n\n      if (type.value.svg === true) {\n        data.viewBox = type.value.viewBox\n        data['aria-hidden'] = 'true'\n\n        if (data.style) {\n          data.style.width = data.style.fontSize\n          data.style.height = data.style.fontSize\n        }\n\n        return h('svg', data, hMergeSlot(slots.default, type.value.nodes))\n      }\n\n      if (type.value.svguse === true) {\n        data.viewBox = type.value.viewBox\n        data['aria-hidden'] = 'true'\n\n        if (data.style) {\n          data.style.width = data.style.fontSize\n          data.style.height = data.style.fontSize\n        }\n        return h('svg', data, hMergeSlot(slots.default, [h('use', { 'xlink:href': type.value.src })]))\n      }\n\n      return h(props.tag, data, hMergeSlot(slots.default, [type.value.content]))\n    }\n  }\n})\n\n// export type VcIconProps = ExtractPropTypes<typeof iconProps>\nexport interface VcIconProps {\n  /**\n   * Size in CSS units, including unit name or standard size name (xs|sm|md|lg|xl).\n   */\n  size?: string | undefined\n  /**\n   * HTML tag to render, unless no icon is supplied or it's an svg icon.\n   * Default value: i\n   */\n  tag?: string | undefined\n  /**\n   * Name of the icon, following VueCesium convention.\n   */\n  name?: string | undefined\n  /**\n   * Color name for component from the css color palette.\n   */\n  color?: string | undefined\n  /**\n   * Useful if icon is on the left side of something: applies a standard margin on the right side of Icon.\n   */\n  left?: boolean | undefined\n  /**\n   * Useful if icon is on the right side of something: applies a standard margin on the left side of Icon.\n   */\n  right?: boolean | undefined\n}\n","import { computed } from 'vue'\nimport { useSizeDefaults } from '@vue-cesium/composables/private/use-size'\n\nexport const useSpinnerProps = {\n  size: {\n    type: [Number, String],\n    default: '1em'\n  },\n  color: String\n}\n\nexport default function useSpinner(props) {\n  return {\n    cSize: computed(() => (props.size in useSizeDefaults ? `${useSizeDefaults[props.size]}px` : props.size)),\n\n    classes: computed(() => 'vc-spinner' + (props.color ? ` text-${props.color}` : ''))\n  }\n}\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner'\n\nconst svg = [\n  h(\n    'g',\n    {\n      transform: 'translate(1 1)',\n      'stroke-width': '2',\n      fill: 'none',\n      'fill-rule': 'evenodd'\n    },\n    [\n      h(\n        'circle',\n        {\n          cx: '5',\n          cy: '50',\n          r: '5'\n        },\n        [\n          h('animate', {\n            attributeName: 'cy',\n            begin: '0s',\n            dur: '2.2s',\n            values: '50;5;50;50',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          }),\n          h('animate', {\n            attributeName: 'cx',\n            begin: '0s',\n            dur: '2.2s',\n            values: '5;27;49;5',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'circle',\n        {\n          cx: '27',\n          cy: '5',\n          r: '5'\n        },\n        [\n          h('animate', {\n            attributeName: 'cy',\n            begin: '0s',\n            dur: '2.2s',\n            from: '5',\n            to: '5',\n            values: '5;50;50;5',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          }),\n          h('animate', {\n            attributeName: 'cx',\n            begin: '0s',\n            dur: '2.2s',\n            from: '27',\n            to: '27',\n            values: '27;49;5;27',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'circle',\n        {\n          cx: '49',\n          cy: '50',\n          r: '5'\n        },\n        [\n          h('animate', {\n            attributeName: 'cy',\n            begin: '0s',\n            dur: '2.2s',\n            values: '50;50;5;50',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          }),\n          h('animate', {\n            attributeName: 'cx',\n            from: '49',\n            to: '49',\n            begin: '0s',\n            dur: '2.2s',\n            values: '49;5;27;49',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          })\n        ]\n      )\n    ]\n  )\n]\n\nexport default defineComponent({\n  name: 'VcSpinnerBall',\n\n  props: useSpinnerProps,\n\n  setup(props) {\n    const { cSize, classes } = useSpinner(props)\n\n    return () =>\n      h(\n        'svg',\n        {\n          class: classes.value,\n          stroke: 'currentColor',\n          width: cSize.value,\n          height: cSize.value,\n          viewBox: '0 0 57 57',\n          xmlns: 'http://www.w3.org/2000/svg'\n        },\n        svg\n      )\n  }\n})\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner'\n\nconst svg = [\n  h(\n    'rect',\n    {\n      y: '10',\n      width: '15',\n      height: '120',\n      rx: '6'\n    },\n    [\n      h('animate', {\n        attributeName: 'height',\n        begin: '0.5s',\n        dur: '1s',\n        values: '120;110;100;90;80;70;60;50;40;140;120',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      }),\n      h('animate', {\n        attributeName: 'y',\n        begin: '0.5s',\n        dur: '1s',\n        values: '10;15;20;25;30;35;40;45;50;0;10',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      })\n    ]\n  ),\n  h(\n    'rect',\n    {\n      x: '30',\n      y: '10',\n      width: '15',\n      height: '120',\n      rx: '6'\n    },\n    [\n      h('animate', {\n        attributeName: 'height',\n        begin: '0.25s',\n        dur: '1s',\n        values: '120;110;100;90;80;70;60;50;40;140;120',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      }),\n      h('animate', {\n        attributeName: 'y',\n        begin: '0.25s',\n        dur: '1s',\n        values: '10;15;20;25;30;35;40;45;50;0;10',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      })\n    ]\n  ),\n  h(\n    'rect',\n    {\n      x: '60',\n      width: '15',\n      height: '140',\n      rx: '6'\n    },\n    [\n      h('animate', {\n        attributeName: 'height',\n        begin: '0s',\n        dur: '1s',\n        values: '120;110;100;90;80;70;60;50;40;140;120',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      }),\n      h('animate', {\n        attributeName: 'y',\n        begin: '0s',\n        dur: '1s',\n        values: '10;15;20;25;30;35;40;45;50;0;10',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      })\n    ]\n  ),\n  h(\n    'rect',\n    {\n      x: '90',\n      y: '10',\n      width: '15',\n      height: '120',\n      rx: '6'\n    },\n    [\n      h('animate', {\n        attributeName: 'height',\n        begin: '0.25s',\n        dur: '1s',\n        values: '120;110;100;90;80;70;60;50;40;140;120',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      }),\n      h('animate', {\n        attributeName: 'y',\n        begin: '0.25s',\n        dur: '1s',\n        values: '10;15;20;25;30;35;40;45;50;0;10',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      })\n    ]\n  ),\n  h(\n    'rect',\n    {\n      x: '120',\n      y: '10',\n      width: '15',\n      height: '120',\n      rx: '6'\n    },\n    [\n      h('animate', {\n        attributeName: 'height',\n        begin: '0.5s',\n        dur: '1s',\n        values: '120;110;100;90;80;70;60;50;40;140;120',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      }),\n      h('animate', {\n        attributeName: 'y',\n        begin: '0.5s',\n        dur: '1s',\n        values: '10;15;20;25;30;35;40;45;50;0;10',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      })\n    ]\n  )\n]\n\nexport default defineComponent({\n  name: 'VcSpinnerBars',\n\n  props: useSpinnerProps,\n\n  setup(props) {\n    const { cSize, classes } = useSpinner(props)\n\n    return () =>\n      h(\n        'svg',\n        {\n          class: classes.value,\n          fill: 'currentColor',\n          width: cSize.value,\n          height: cSize.value,\n          viewBox: '0 0 135 140',\n          xmlns: 'http://www.w3.org/2000/svg'\n        },\n        svg\n      )\n  }\n})\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner'\n\nconst svg = [\n  h(\n    'circle',\n    {\n      cx: '15',\n      cy: '15',\n      r: '15'\n    },\n    [\n      h('animate', {\n        attributeName: 'r',\n        from: '15',\n        to: '15',\n        begin: '0s',\n        dur: '0.8s',\n        values: '15;9;15',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      }),\n      h('animate', {\n        attributeName: 'fill-opacity',\n        from: '1',\n        to: '1',\n        begin: '0s',\n        dur: '0.8s',\n        values: '1;.5;1',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      })\n    ]\n  ),\n  h(\n    'circle',\n    {\n      cx: '60',\n      cy: '15',\n      r: '9',\n      'fill-opacity': '.3'\n    },\n    [\n      h('animate', {\n        attributeName: 'r',\n        from: '9',\n        to: '9',\n        begin: '0s',\n        dur: '0.8s',\n        values: '9;15;9',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      }),\n      h('animate', {\n        attributeName: 'fill-opacity',\n        from: '.5',\n        to: '.5',\n        begin: '0s',\n        dur: '0.8s',\n        values: '.5;1;.5',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      })\n    ]\n  ),\n  h(\n    'circle',\n    {\n      cx: '105',\n      cy: '15',\n      r: '15'\n    },\n    [\n      h('animate', {\n        attributeName: 'r',\n        from: '15',\n        to: '15',\n        begin: '0s',\n        dur: '0.8s',\n        values: '15;9;15',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      }),\n      h('animate', {\n        attributeName: 'fill-opacity',\n        from: '1',\n        to: '1',\n        begin: '0s',\n        dur: '0.8s',\n        values: '1;.5;1',\n        calcMode: 'linear',\n        repeatCount: 'indefinite'\n      })\n    ]\n  )\n]\n\nexport default defineComponent({\n  name: 'VcSpinnerDots',\n\n  props: useSpinnerProps,\n\n  setup(props) {\n    const { cSize, classes } = useSpinner(props)\n\n    return () =>\n      h(\n        'svg',\n        {\n          class: classes.value,\n          fill: 'currentColor',\n          width: cSize.value,\n          height: cSize.value,\n          viewBox: '0 0 120 30',\n          xmlns: 'http://www.w3.org/2000/svg'\n        },\n        svg\n      )\n  }\n})\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner'\n\nconst svg = [\n  h(\n    'g',\n    {\n      transform: 'translate(-20,-20)'\n    },\n    [\n      h(\n        'path',\n        {\n          d: 'M79.9,52.6C80,51.8,80,50.9,80,50s0-1.8-0.1-2.6l-5.1-0.4c-0.3-2.4-0.9-4.6-1.8-6.7l4.2-2.9c-0.7-1.6-1.6-3.1-2.6-4.5 L70,35c-1.4-1.9-3.1-3.5-4.9-4.9l2.2-4.6c-1.4-1-2.9-1.9-4.5-2.6L59.8,27c-2.1-0.9-4.4-1.5-6.7-1.8l-0.4-5.1C51.8,20,50.9,20,50,20 s-1.8,0-2.6,0.1l-0.4,5.1c-2.4,0.3-4.6,0.9-6.7,1.8l-2.9-4.1c-1.6,0.7-3.1,1.6-4.5,2.6l2.1,4.6c-1.9,1.4-3.5,3.1-5,4.9l-4.5-2.1 c-1,1.4-1.9,2.9-2.6,4.5l4.1,2.9c-0.9,2.1-1.5,4.4-1.8,6.8l-5,0.4C20,48.2,20,49.1,20,50s0,1.8,0.1,2.6l5,0.4 c0.3,2.4,0.9,4.7,1.8,6.8l-4.1,2.9c0.7,1.6,1.6,3.1,2.6,4.5l4.5-2.1c1.4,1.9,3.1,3.5,5,4.9l-2.1,4.6c1.4,1,2.9,1.9,4.5,2.6l2.9-4.1 c2.1,0.9,4.4,1.5,6.7,1.8l0.4,5.1C48.2,80,49.1,80,50,80s1.8,0,2.6-0.1l0.4-5.1c2.3-0.3,4.6-0.9,6.7-1.8l2.9,4.2 c1.6-0.7,3.1-1.6,4.5-2.6L65,69.9c1.9-1.4,3.5-3,4.9-4.9l4.6,2.2c1-1.4,1.9-2.9,2.6-4.5L73,59.8c0.9-2.1,1.5-4.4,1.8-6.7L79.9,52.6 z M50,65c-8.3,0-15-6.7-15-15c0-8.3,6.7-15,15-15s15,6.7,15,15C65,58.3,58.3,65,50,65z',\n          fill: 'currentColor'\n        },\n        [\n          h('animateTransform', {\n            attributeName: 'transform',\n            type: 'rotate',\n            from: '90 50 50',\n            to: '0 50 50',\n            dur: '1s',\n            repeatCount: 'indefinite'\n          })\n        ]\n      )\n    ]\n  ),\n  h(\n    'g',\n    {\n      transform: 'translate(20,20) rotate(15 50 50)'\n    },\n    [\n      h(\n        'path',\n        {\n          d: 'M79.9,52.6C80,51.8,80,50.9,80,50s0-1.8-0.1-2.6l-5.1-0.4c-0.3-2.4-0.9-4.6-1.8-6.7l4.2-2.9c-0.7-1.6-1.6-3.1-2.6-4.5 L70,35c-1.4-1.9-3.1-3.5-4.9-4.9l2.2-4.6c-1.4-1-2.9-1.9-4.5-2.6L59.8,27c-2.1-0.9-4.4-1.5-6.7-1.8l-0.4-5.1C51.8,20,50.9,20,50,20 s-1.8,0-2.6,0.1l-0.4,5.1c-2.4,0.3-4.6,0.9-6.7,1.8l-2.9-4.1c-1.6,0.7-3.1,1.6-4.5,2.6l2.1,4.6c-1.9,1.4-3.5,3.1-5,4.9l-4.5-2.1 c-1,1.4-1.9,2.9-2.6,4.5l4.1,2.9c-0.9,2.1-1.5,4.4-1.8,6.8l-5,0.4C20,48.2,20,49.1,20,50s0,1.8,0.1,2.6l5,0.4 c0.3,2.4,0.9,4.7,1.8,6.8l-4.1,2.9c0.7,1.6,1.6,3.1,2.6,4.5l4.5-2.1c1.4,1.9,3.1,3.5,5,4.9l-2.1,4.6c1.4,1,2.9,1.9,4.5,2.6l2.9-4.1 c2.1,0.9,4.4,1.5,6.7,1.8l0.4,5.1C48.2,80,49.1,80,50,80s1.8,0,2.6-0.1l0.4-5.1c2.3-0.3,4.6-0.9,6.7-1.8l2.9,4.2 c1.6-0.7,3.1-1.6,4.5-2.6L65,69.9c1.9-1.4,3.5-3,4.9-4.9l4.6,2.2c1-1.4,1.9-2.9,2.6-4.5L73,59.8c0.9-2.1,1.5-4.4,1.8-6.7L79.9,52.6 z M50,65c-8.3,0-15-6.7-15-15c0-8.3,6.7-15,15-15s15,6.7,15,15C65,58.3,58.3,65,50,65z',\n          fill: 'currentColor'\n        },\n        [\n          h('animateTransform', {\n            attributeName: 'transform',\n            type: 'rotate',\n            from: '0 50 50',\n            to: '90 50 50',\n            dur: '1s',\n            repeatCount: 'indefinite'\n          })\n        ]\n      )\n    ]\n  )\n]\n\nexport default defineComponent({\n  name: 'VcSpinnerGears',\n\n  props: useSpinnerProps,\n\n  setup(props) {\n    const { cSize, classes } = useSpinner(props)\n\n    return () =>\n      h(\n        'svg',\n        {\n          class: classes.value,\n          width: cSize.value,\n          height: cSize.value,\n          viewBox: '0 0 100 100',\n          preserveAspectRatio: 'xMidYMid',\n          xmlns: 'http://www.w3.org/2000/svg'\n        },\n        svg\n      )\n  }\n})\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner'\n\nconst svg = [\n  h('g', [\n    h('path', {\n      fill: 'none',\n      stroke: 'currentColor',\n      'stroke-width': '5',\n      'stroke-miterlimit': '10',\n      d: 'M58.4,51.7c-0.9-0.9-1.4-2-1.4-2.3s0.5-0.4,1.4-1.4 C70.8,43.8,79.8,30.5,80,15.5H70H30H20c0.2,15,9.2,28.1,21.6,32.3c0.9,0.9,1.4,1.2,1.4,1.5s-0.5,1.6-1.4,2.5 C29.2,56.1,20.2,69.5,20,85.5h10h40h10C79.8,69.5,70.8,55.9,58.4,51.7z'\n    }),\n    h(\n      'clipPath',\n      {\n        id: 'uil-hourglass-clip1'\n      },\n      [\n        h(\n          'rect',\n          {\n            x: '15',\n            y: '20',\n            width: ' 70',\n            height: '25'\n          },\n          [\n            h('animate', {\n              attributeName: 'height',\n              from: '25',\n              to: '0',\n              dur: '1s',\n              repeatCount: 'indefinite',\n              values: '25;0;0',\n              keyTimes: '0;0.5;1'\n            }),\n            h('animate', {\n              attributeName: 'y',\n              from: '20',\n              to: '45',\n              dur: '1s',\n              repeatCount: 'indefinite',\n              values: '20;45;45',\n              keyTimes: '0;0.5;1'\n            })\n          ]\n        )\n      ]\n    ),\n    h(\n      'clipPath',\n      {\n        id: 'uil-hourglass-clip2'\n      },\n      [\n        h(\n          'rect',\n          {\n            x: '15',\n            y: '55',\n            width: ' 70',\n            height: '25'\n          },\n          [\n            h('animate', {\n              attributeName: 'height',\n              from: '0',\n              to: '25',\n              dur: '1s',\n              repeatCount: 'indefinite',\n              values: '0;25;25',\n              keyTimes: '0;0.5;1'\n            }),\n            h('animate', {\n              attributeName: 'y',\n              from: '80',\n              to: '55',\n              dur: '1s',\n              repeatCount: 'indefinite',\n              values: '80;55;55',\n              keyTimes: '0;0.5;1'\n            })\n          ]\n        )\n      ]\n    ),\n    h('path', {\n      d: 'M29,23c3.1,11.4,11.3,19.5,21,19.5S67.9,34.4,71,23H29z',\n      'clip-path': 'url(#uil-hourglass-clip1)',\n      fill: 'currentColor'\n    }),\n    h('path', {\n      d: 'M71.6,78c-3-11.6-11.5-20-21.5-20s-18.5,8.4-21.5,20H71.6z',\n      'clip-path': 'url(#uil-hourglass-clip2)',\n      fill: 'currentColor'\n    }),\n    h('animateTransform', {\n      attributeName: 'transform',\n      type: 'rotate',\n      from: '0 50 50',\n      to: '180 50 50',\n      repeatCount: 'indefinite',\n      dur: '1s',\n      values: '0 50 50;0 50 50;180 50 50',\n      keyTimes: '0;0.7;1'\n    })\n  ])\n]\n\nexport default defineComponent({\n  name: 'VcSpinnerHourglass',\n\n  props: useSpinnerProps,\n\n  setup(props) {\n    const { cSize, classes } = useSpinner(props)\n\n    return () =>\n      h(\n        'svg',\n        {\n          class: classes.value,\n          width: cSize.value,\n          height: cSize.value,\n          viewBox: '0 0 100 100',\n          preserveAspectRatio: 'xMidYMid',\n          xmlns: 'http://www.w3.org/2000/svg'\n        },\n        svg\n      )\n  }\n})\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner'\n\nconst svg = [\n  h(\n    'g',\n    {\n      'stroke-width': '4',\n      'stroke-linecap': 'round'\n    },\n    [\n      h(\n        'line',\n        {\n          y1: '17',\n          y2: '29',\n          transform: 'translate(32,32) rotate(180)'\n        },\n        [\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            dur: '750ms',\n            values: '1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'line',\n        {\n          y1: '17',\n          y2: '29',\n          transform: 'translate(32,32) rotate(210)'\n        },\n        [\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            dur: '750ms',\n            values: '0;1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'line',\n        {\n          y1: '17',\n          y2: '29',\n          transform: 'translate(32,32) rotate(240)'\n        },\n        [\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            dur: '750ms',\n            values: '.1;0;1;.85;.7;.65;.55;.45;.35;.25;.15;.1',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'line',\n        {\n          y1: '17',\n          y2: '29',\n          transform: 'translate(32,32) rotate(270)'\n        },\n        [\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            dur: '750ms',\n            values: '.15;.1;0;1;.85;.7;.65;.55;.45;.35;.25;.15',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'line',\n        {\n          y1: '17',\n          y2: '29',\n          transform: 'translate(32,32) rotate(300)'\n        },\n        [\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            dur: '750ms',\n            values: '.25;.15;.1;0;1;.85;.7;.65;.55;.45;.35;.25',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'line',\n        {\n          y1: '17',\n          y2: '29',\n          transform: 'translate(32,32) rotate(330)'\n        },\n        [\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            dur: '750ms',\n            values: '.35;.25;.15;.1;0;1;.85;.7;.65;.55;.45;.35',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'line',\n        {\n          y1: '17',\n          y2: '29',\n          transform: 'translate(32,32) rotate(0)'\n        },\n        [\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            dur: '750ms',\n            values: '.45;.35;.25;.15;.1;0;1;.85;.7;.65;.55;.45',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'line',\n        {\n          y1: '17',\n          y2: '29',\n          transform: 'translate(32,32) rotate(30)'\n        },\n        [\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            dur: '750ms',\n            values: '.55;.45;.35;.25;.15;.1;0;1;.85;.7;.65;.55',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'line',\n        {\n          y1: '17',\n          y2: '29',\n          transform: 'translate(32,32) rotate(60)'\n        },\n        [\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            dur: '750ms',\n            values: '.65;.55;.45;.35;.25;.15;.1;0;1;.85;.7;.65',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'line',\n        {\n          y1: '17',\n          y2: '29',\n          transform: 'translate(32,32) rotate(90)'\n        },\n        [\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            dur: '750ms',\n            values: '.7;.65;.55;.45;.35;.25;.15;.1;0;1;.85;.7',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'line',\n        {\n          y1: '17',\n          y2: '29',\n          transform: 'translate(32,32) rotate(120)'\n        },\n        [\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            dur: '750ms',\n            values: '.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1;.85',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'line',\n        {\n          y1: '17',\n          y2: '29',\n          transform: 'translate(32,32) rotate(150)'\n        },\n        [\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            dur: '750ms',\n            values: '1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1',\n            repeatCount: 'indefinite'\n          })\n        ]\n      )\n    ]\n  )\n]\n\nexport default defineComponent({\n  name: 'VcSpinnerIos',\n\n  props: useSpinnerProps,\n\n  setup(props) {\n    const { cSize, classes } = useSpinner(props)\n\n    return () =>\n      h(\n        'svg',\n        {\n          class: classes.value,\n          width: cSize.value,\n          height: cSize.value,\n          stroke: 'currentColor',\n          fill: 'currentColor',\n          viewBox: '0 0 64 64'\n        },\n        svg\n      )\n  }\n})\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner'\n\nconst svg = [\n  h('circle', {\n    cx: '50',\n    cy: '50',\n    r: '44',\n    fill: 'none',\n    'stroke-width': '4',\n    'stroke-opacity': '.5',\n    stroke: 'currentColor'\n  }),\n  h(\n    'circle',\n    {\n      cx: '8',\n      cy: '54',\n      r: '6',\n      fill: 'currentColor',\n      'stroke-width': '3',\n      stroke: 'currentColor'\n    },\n    [\n      h('animateTransform', {\n        attributeName: 'transform',\n        type: 'rotate',\n        from: '0 50 48',\n        to: '360 50 52',\n        dur: '2s',\n        repeatCount: 'indefinite'\n      })\n    ]\n  )\n]\n\nexport default defineComponent({\n  name: 'VcSpinnerOrbit',\n\n  props: useSpinnerProps,\n\n  setup(props) {\n    const { cSize, classes } = useSpinner(props)\n\n    return () =>\n      h(\n        'svg',\n        {\n          class: classes.value,\n          width: cSize.value,\n          height: cSize.value,\n          viewBox: '0 0 100 100',\n          preserveAspectRatio: 'xMidYMid',\n          xmlns: 'http://www.w3.org/2000/svg'\n        },\n        svg\n      )\n  }\n})\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner'\n\nconst svg = [\n  h(\n    'g',\n    {\n      transform: 'translate(1 1)',\n      'stroke-width': '2',\n      fill: 'none',\n      'fill-rule': 'evenodd'\n    },\n    [\n      h('circle', {\n        'stroke-opacity': '.5',\n        cx: '18',\n        cy: '18',\n        r: '18'\n      }),\n      h(\n        'path',\n        {\n          d: 'M36 18c0-9.94-8.06-18-18-18'\n        },\n        [\n          h('animateTransform', {\n            attributeName: 'transform',\n            type: 'rotate',\n            from: '0 18 18',\n            to: '360 18 18',\n            dur: '1s',\n            repeatCount: 'indefinite'\n          })\n        ]\n      )\n    ]\n  )\n]\n\nexport default defineComponent({\n  name: 'VcSpinnerOval',\n\n  props: useSpinnerProps,\n\n  setup(props) {\n    const { cSize, classes } = useSpinner(props)\n\n    return () =>\n      h(\n        'svg',\n        {\n          class: classes.value,\n          stroke: 'currentColor',\n          width: cSize.value,\n          height: cSize.value,\n          viewBox: '0 0 38 38',\n          xmlns: 'http://www.w3.org/2000/svg'\n        },\n        svg\n      )\n  }\n})\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner'\n\nconst svg = [\n  h(\n    'g',\n    {\n      fill: 'none',\n      'fill-rule': 'evenodd',\n      'stroke-width': '2'\n    },\n    [\n      h(\n        'circle',\n        {\n          cx: '22',\n          cy: '22',\n          r: '1'\n        },\n        [\n          h('animate', {\n            attributeName: 'r',\n            begin: '0s',\n            dur: '1.8s',\n            values: '1; 20',\n            calcMode: 'spline',\n            keyTimes: '0; 1',\n            keySplines: '0.165, 0.84, 0.44, 1',\n            repeatCount: 'indefinite'\n          }),\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            begin: '0s',\n            dur: '1.8s',\n            values: '1; 0',\n            calcMode: 'spline',\n            keyTimes: '0; 1',\n            keySplines: '0.3, 0.61, 0.355, 1',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'circle',\n        {\n          cx: '22',\n          cy: '22',\n          r: '1'\n        },\n        [\n          h('animate', {\n            attributeName: 'r',\n            begin: '-0.9s',\n            dur: '1.8s',\n            values: '1; 20',\n            calcMode: 'spline',\n            keyTimes: '0; 1',\n            keySplines: '0.165, 0.84, 0.44, 1',\n            repeatCount: 'indefinite'\n          }),\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            begin: '-0.9s',\n            dur: '1.8s',\n            values: '1; 0',\n            calcMode: 'spline',\n            keyTimes: '0; 1',\n            keySplines: '0.3, 0.61, 0.355, 1',\n            repeatCount: 'indefinite'\n          })\n        ]\n      )\n    ]\n  )\n]\n\nexport default defineComponent({\n  name: 'VcSpinnerPuff',\n\n  props: useSpinnerProps,\n\n  setup(props) {\n    const { cSize, classes } = useSpinner(props)\n\n    return () =>\n      h(\n        'svg',\n        {\n          class: classes.value,\n          stroke: 'currentColor',\n          width: cSize.value,\n          height: cSize.value,\n          viewBox: '0 0 44 44',\n          xmlns: 'http://www.w3.org/2000/svg'\n        },\n        svg\n      )\n  }\n})\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner'\n\nconst svg = [\n  h(\n    'g',\n    {\n      fill: 'none',\n      'fill-rule': 'evenodd',\n      transform: 'translate(1 1)',\n      'stroke-width': '2'\n    },\n    [\n      h(\n        'circle',\n        {\n          cx: '22',\n          cy: '22',\n          r: '6'\n        },\n        [\n          h('animate', {\n            attributeName: 'r',\n            begin: '1.5s',\n            dur: '3s',\n            values: '6;22',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          }),\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            begin: '1.5s',\n            dur: '3s',\n            values: '1;0',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          }),\n          h('animate', {\n            attributeName: 'stroke-width',\n            begin: '1.5s',\n            dur: '3s',\n            values: '2;0',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'circle',\n        {\n          cx: '22',\n          cy: '22',\n          r: '6'\n        },\n        [\n          h('animate', {\n            attributeName: 'r',\n            begin: '3s',\n            dur: '3s',\n            values: '6;22',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          }),\n          h('animate', {\n            attributeName: 'stroke-opacity',\n            begin: '3s',\n            dur: '3s',\n            values: '1;0',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          }),\n          h('animate', {\n            attributeName: 'stroke-width',\n            begin: '3s',\n            dur: '3s',\n            values: '2;0',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'circle',\n        {\n          cx: '22',\n          cy: '22',\n          r: '8'\n        },\n        [\n          h('animate', {\n            attributeName: 'r',\n            begin: '0s',\n            dur: '1.5s',\n            values: '6;1;2;3;4;5;6',\n            calcMode: 'linear',\n            repeatCount: 'indefinite'\n          })\n        ]\n      )\n    ]\n  )\n]\n\nexport default defineComponent({\n  name: 'VcSpinnerRings',\n\n  props: useSpinnerProps,\n\n  setup(props) {\n    const { cSize, classes } = useSpinner(props)\n\n    return () =>\n      h(\n        'svg',\n        {\n          class: classes.value,\n          stroke: 'currentColor',\n          width: cSize.value,\n          height: cSize.value,\n          viewBox: '0 0 45 45',\n          xmlns: 'http://www.w3.org/2000/svg'\n        },\n        svg\n      )\n  }\n})\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner'\n\nconst svg = [\n  h('defs', [\n    h(\n      'linearGradient',\n      {\n        x1: '8.042%',\n        y1: '0%',\n        x2: '65.682%',\n        y2: '23.865%',\n        id: 'a'\n      },\n      [\n        h('stop', {\n          'stop-color': 'currentColor',\n          'stop-opacity': '0',\n          offset: '0%'\n        }),\n        h('stop', {\n          'stop-color': 'currentColor',\n          'stop-opacity': '.631',\n          offset: '63.146%'\n        }),\n        h('stop', {\n          'stop-color': 'currentColor',\n          offset: '100%'\n        })\n      ]\n    )\n  ]),\n  h(\n    'g',\n    {\n      transform: 'translate(1 1)',\n      fill: 'none',\n      'fill-rule': 'evenodd'\n    },\n    [\n      h(\n        'path',\n        {\n          d: 'M36 18c0-9.94-8.06-18-18-18',\n          stroke: 'url(#a)',\n          'stroke-width': '2'\n        },\n        [\n          h('animateTransform', {\n            attributeName: 'transform',\n            type: 'rotate',\n            from: '0 18 18',\n            to: '360 18 18',\n            dur: '0.9s',\n            repeatCount: 'indefinite'\n          })\n        ]\n      ),\n      h(\n        'circle',\n        {\n          fill: 'currentColor',\n          cx: '36',\n          cy: '18',\n          r: '1'\n        },\n        [\n          h('animateTransform', {\n            attributeName: 'transform',\n            type: 'rotate',\n            from: '0 18 18',\n            to: '360 18 18',\n            dur: '0.9s',\n            repeatCount: 'indefinite'\n          })\n        ]\n      )\n    ]\n  )\n]\n\nexport default defineComponent({\n  name: 'VcSpinnerTail',\n\n  props: useSpinnerProps,\n\n  setup(props) {\n    const { cSize, classes } = useSpinner(props)\n\n    return () =>\n      h(\n        'svg',\n        {\n          class: classes.value,\n          width: cSize.value,\n          height: cSize.value,\n          viewBox: '0 0 38 38',\n          xmlns: 'http://www.w3.org/2000/svg'\n        },\n        svg\n      )\n  }\n})\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner'\n\nexport default defineComponent({\n  name: 'VcSpinner',\n\n  props: {\n    ...useSpinnerProps,\n\n    thickness: {\n      type: Number,\n      default: 5\n    }\n  },\n\n  setup(props) {\n    const { cSize, classes } = useSpinner(props)\n\n    return () =>\n      h(\n        'svg',\n        {\n          class: classes.value + ' vc-spinner-mat',\n          width: cSize.value,\n          height: cSize.value,\n          viewBox: '25 25 50 50'\n        },\n        [\n          h('circle', {\n            class: 'path',\n            cx: '50',\n            cy: '50',\n            r: '20',\n            fill: 'none',\n            stroke: 'currentColor',\n            'stroke-width': props.thickness,\n            'stroke-miterlimit': '10'\n          })\n        ]\n      )\n  }\n})\n","import { isRef } from 'vue'\n\nexport function offset(el) {\n  if (el === window) {\n    return { top: 0, left: 0 }\n  }\n  const { top, left } = el.getBoundingClientRect()\n  return { top, left }\n}\n\nexport function style(el, property) {\n  return window.getComputedStyle(el).getPropertyValue(property)\n}\n\nexport function height(el) {\n  return el === window ? window.innerHeight : el.getBoundingClientRect().height\n}\n\nexport function width(el) {\n  return el === window ? window.innerWidth : el.getBoundingClientRect().width\n}\n\nexport function css(element, css) {\n  const style = element.style\n\n  Object.keys(css).forEach(prop => {\n    style[prop] = css[prop]\n  })\n}\n\nexport function cssBatch(elements, style) {\n  elements.forEach(el => css(el, style))\n}\n\nexport function ready(fn) {\n  if (typeof fn !== 'function') {\n    return\n  }\n\n  if (document.readyState !== 'loading') {\n    return fn()\n  }\n\n  document.addEventListener('DOMContentLoaded', fn, false)\n}\n\n// internal\nexport function getElement(el) {\n  if (el === void 0 || el === null) {\n    return void 0\n  }\n\n  if (typeof el === 'string') {\n    try {\n      return document.querySelector(el) || void 0\n    } catch (err) {\n      return void 0\n    }\n  }\n\n  const target = isRef(el) === true ? el.value : el\n\n  if (target) {\n    return target.$el || target\n  }\n}\n\n// internal\nexport function childHasFocus(el, focusedEl) {\n  if (el === void 0 || el.contains(focusedEl) === true) {\n    return true\n  }\n\n  for (let next = el.nextElementSibling; next !== null; next = next.nextElementSibling) {\n    if (next.contains(focusedEl)) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport default {\n  offset,\n  style,\n  height,\n  width,\n  css,\n  cssBatch,\n  ready\n}\n","export const listenOpts = {\n  hasPassive: false,\n  passiveCapture: true,\n  notPassiveCapture: true,\n  passive: undefined\n}\n\ntry {\n  const opts = Object.defineProperty({}, 'passive', {\n    get() {\n      Object.assign(listenOpts, {\n        hasPassive: true,\n        passive: { passive: true },\n        notPassive: { passive: false },\n        passiveCapture: { passive: true, capture: true },\n        notPassiveCapture: { passive: false, capture: true }\n      })\n    }\n  })\n  window.addEventListener('qtest', null as any, opts)\n  window.removeEventListener('qtest', null as any, opts)\n} catch (e) {\n  //\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n\nexport function leftClick(e) {\n  return e.button === 0\n}\n\nexport function middleClick(e) {\n  return e.button === 1\n}\n\nexport function rightClick(e) {\n  return e.button === 2\n}\n\nexport function position(e) {\n  if (e.touches && e.touches[0]) {\n    e = e.touches[0]\n  } else if (e.changedTouches && e.changedTouches[0]) {\n    e = e.changedTouches[0]\n  } else if (e.targetTouches && e.targetTouches[0]) {\n    e = e.targetTouches[0]\n  }\n\n  return {\n    top: e.clientY,\n    left: e.clientX\n  }\n}\n\nexport function getEventPath(e) {\n  if (e.path) {\n    return e.path\n  }\n  if (e.composedPath) {\n    return e.composedPath()\n  }\n\n  const path: Array<Document | Window> = []\n  let el = e.target\n\n  while (el) {\n    path.push(el)\n\n    if (el.tagName === 'HTML') {\n      path.push(document)\n      path.push(window)\n      return path\n    }\n\n    el = el.parentElement\n  }\n}\n\n// Reasonable defaults\nconst LINE_HEIGHT = 40,\n  PAGE_HEIGHT = 800\n\nexport function getMouseWheelDistance(e) {\n  let x = e.deltaX,\n    y = e.deltaY\n\n  if ((x || y) && e.deltaMode) {\n    const multiplier = e.deltaMode === 1 ? LINE_HEIGHT : PAGE_HEIGHT\n    x *= multiplier\n    y *= multiplier\n  }\n\n  if (e.shiftKey && !x) {\n    ;[y, x] = [x, y]\n  }\n\n  return { x, y }\n}\n\nexport function stop(e) {\n  e.stopPropagation()\n}\n\nexport function prevent(e) {\n  e.cancelable !== false && e.preventDefault()\n}\n\nexport function stopAndPrevent(e) {\n  e.cancelable !== false && e.preventDefault()\n  e.stopPropagation()\n}\n\nexport function preventDraggable(el, status) {\n  if (el === void 0 || (status === true && el.__dragPrevented === true)) {\n    return\n  }\n\n  const fn =\n    status === true\n      ? el => {\n          el.__dragPrevented = true\n          el.addEventListener('dragstart', prevent, listenOpts.notPassiveCapture)\n        }\n      : el => {\n          delete el.__dragPrevented\n          el.removeEventListener('dragstart', prevent, listenOpts.notPassiveCapture)\n        }\n\n  el.querySelectorAll('a, img').forEach(fn)\n}\n\nexport function addEvt(ctx, targetName, events) {\n  const name = `__vc_${targetName}_evt`\n\n  ctx[name] = ctx[name] !== void 0 ? ctx[name].concat(events) : events\n\n  events.forEach(evt => {\n    evt[0].addEventListener(evt[1], ctx[evt[2]], listenOpts[evt[3]])\n  })\n}\n\nexport function cleanEvt(ctx, targetName) {\n  const name = `__vc_${targetName}_evt`\n\n  if (ctx[name] !== void 0) {\n    ctx[name].forEach(evt => {\n      evt[0].removeEventListener(evt[1], ctx[evt[2]], listenOpts[evt[3]])\n    })\n    ctx[name] = void 0\n  }\n}\n\n/*\n * also update /types/utils/event.d.ts\n */\n\nexport default {\n  listenOpts,\n  leftClick,\n  middleClick,\n  rightClick,\n  position,\n  getEventPath,\n  getMouseWheelDistance,\n  stop,\n  prevent,\n  stopAndPrevent,\n  preventDraggable\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-04-06 09:21:02\n * @LastEditTime: 2021-10-02 23:15:01\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\private\\key-composition.ts\n */\nlet lastKeyCompositionStatus = false\n\nexport function onKeyDownComposition(evt) {\n  lastKeyCompositionStatus = evt.isComposing === true\n}\n\nexport function shouldIgnoreKey(evt) {\n  return lastKeyCompositionStatus === true || evt !== Object(evt) || evt.isComposing === true || evt.qKeyEvent === true\n}\n\nexport function isKeyCode(evt, keyCodes) {\n  return shouldIgnoreKey(evt) === true ? false : ([] as any).concat(keyCodes).includes(evt.keyCode)\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-04-06 09:21:02\n * @LastEditTime: 2021-10-02 23:16:17\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\private\\throttle.ts\n */\nexport default function (fn, limit = 250) {\n  let wait = false,\n    result\n\n  return function (this /* ...args */) {\n    if (wait === false) {\n      wait = true\n      setTimeout(() => {\n        wait = false\n      }, limit)\n      // eslint-disable-next-line prefer-rest-params\n      result = fn.apply(this, arguments)\n    }\n\n    return result\n  }\n}\n","import { css } from '@vue-cesium/utils/private/dom'\nimport { position, stop, addEvt, cleanEvt } from '@vue-cesium/utils/private/event'\nimport { isKeyCode } from '@vue-cesium/utils/private/key-composition'\nimport throttle from '@vue-cesium/utils/private/throttle'\n\nfunction showRipple(evt, el, ctx, forceCenter) {\n  ctx.modifiers.stop === true && stop(evt)\n\n  const color = ctx.modifiers.color\n  let center = ctx.modifiers.center\n  center = center === true || forceCenter === true\n\n  const node = document.createElement('span'),\n    innerNode = document.createElement('span'),\n    pos = position(evt),\n    { left, top, width, height } = el.getBoundingClientRect(),\n    diameter = Math.sqrt(width * width + height * height),\n    radius = diameter / 2,\n    centerX = `${(width - diameter) / 2}px`,\n    x = center ? centerX : `${pos.left - left - radius}px`,\n    centerY = `${(height - diameter) / 2}px`,\n    y = center ? centerY : `${pos.top - top - radius}px`\n\n  innerNode.className = 'vc-ripple__inner'\n  css(innerNode, {\n    height: `${diameter}px`,\n    width: `${diameter}px`,\n    transform: `translate3d(${x},${y},0) scale3d(.2,.2,1)`,\n    opacity: 0\n  })\n\n  node.className = `vc-ripple${color ? ' text-' + color : ''}`\n  node.setAttribute('dir', 'ltr')\n  node.appendChild(innerNode)\n  el.appendChild(node)\n\n  const abort = () => {\n    node.remove()\n    clearTimeout(timer)\n  }\n  ctx.abort.push(abort)\n\n  let timer = setTimeout(() => {\n    innerNode.classList.add('vc-ripple__inner--enter')\n    innerNode.style.transform = `translate3d(${centerX},${centerY},0) scale3d(1,1,1)`\n    innerNode.style.opacity = '0.2'\n\n    timer = setTimeout(() => {\n      innerNode.classList.remove('vc-ripple__inner--enter')\n      innerNode.classList.add('vc-ripple__inner--leave')\n      innerNode.style.opacity = '0'\n\n      timer = setTimeout(() => {\n        node.remove()\n        ctx.abort.splice(ctx.abort.indexOf(abort), 1)\n      }, 275)\n    }, 250)\n  }, 50)\n}\n\nfunction updateModifiers(ctx, { modifiers, value, arg }) {\n  // const cfg = Object.assign({}, $q.config.ripple, modifiers, value)\n  const cfg = Object.assign({}, modifiers, value)\n  ctx.modifiers = {\n    early: cfg.early === true,\n    stop: cfg.stop === true,\n    center: cfg.center === true,\n    color: cfg.color || arg,\n    keyCodes: [].concat(cfg.keyCodes || 13)\n  }\n}\n\nexport default {\n  name: 'ripple',\n\n  beforeMount(el, binding) {\n    const ctx = {\n      enabled: binding.value !== false,\n      modifiers: {} as any,\n      abort: [],\n\n      start(evt) {\n        if (\n          ctx.enabled === true &&\n          evt.qSkipRipple !== true &&\n          (ctx.modifiers.early === true ? ['mousedown', 'touchstart'].includes(evt.type) === true : evt.type === 'click')\n        ) {\n          showRipple(evt, el, ctx, evt.qKeyEvent === true)\n        }\n      },\n\n      keystart: throttle(evt => {\n        if (\n          ctx.enabled === true &&\n          evt.qSkipRipple !== true &&\n          isKeyCode(evt, ctx.modifiers.keyCodes) === true &&\n          evt.type === `key${ctx.modifiers.early === true ? 'down' : 'up'}`\n        ) {\n          showRipple(evt, el, ctx, true)\n        }\n      }, 300)\n    }\n\n    updateModifiers(ctx, binding)\n\n    el.__vcripple = ctx\n\n    addEvt(ctx, 'main', [\n      [el, 'mousedown', 'start', 'passive'],\n      [el, 'touchstart', 'start', 'passive'],\n      [el, 'click', 'start', 'passive'],\n      [el, 'keydown', 'keystart', 'passive'],\n      [el, 'keyup', 'keystart', 'passive']\n    ])\n  },\n\n  updated(el, binding) {\n    if (binding.oldValue !== binding.value) {\n      const ctx = el.__vcripple\n      ctx.enabled = binding.value !== false\n\n      if (ctx.enabled === true && Object(binding.value) === binding.value) {\n        updateModifiers(ctx, binding)\n      }\n    }\n  },\n\n  beforeUnmount(el) {\n    const ctx = el.__vcripple\n    ctx.abort.forEach(fn => {\n      fn()\n    })\n    cleanEvt(ctx, 'main')\n    delete el._qripple\n  }\n}\n","import { computed } from 'vue'\n\nexport const alignMap = {\n  left: 'start',\n  center: 'center',\n  right: 'end',\n  between: 'between',\n  around: 'around',\n  evenly: 'evenly',\n  stretch: 'stretch'\n}\n\nexport const alignValues = Object.keys(alignMap)\n\nexport const useAlignProps = {\n  align: {\n    type: String,\n    validator: v => alignValues.includes(v)\n  }\n}\n\nexport default function (props) {\n  // return alignClass\n  return computed(() => {\n    const align = props.align === void 0 ? (props.vertical === true ? 'stretch' : 'left') : props.align\n\n    return `${props.vertical === true ? 'items' : 'justify'}-${alignMap[align]}`\n  })\n}\n","import { computed } from 'vue'\nimport useAlign, { useAlignProps } from '@vue-cesium/composables/private/use-align'\nimport useSize, { useSizeProps } from '@vue-cesium/composables/private/use-size'\n\nconst padding = {\n  none: 0,\n  xs: 4,\n  sm: 8,\n  md: 16,\n  lg: 24,\n  xl: 32\n}\n\nconst defaultSizes = {\n  xs: 8,\n  sm: 10,\n  md: 14,\n  lg: 20,\n  xl: 24\n}\n\nexport const useBtnProps = {\n  ...useSizeProps,\n\n  type: {\n    type: String,\n    default: 'button'\n  },\n\n  label: [Number, String],\n  icon: String,\n  iconRight: String,\n\n  round: Boolean,\n  outline: Boolean,\n  flat: Boolean,\n  unelevated: Boolean,\n  rounded: Boolean,\n  push: Boolean,\n  glossy: Boolean,\n\n  size: String,\n  fab: Boolean,\n  fabMini: Boolean,\n  padding: String,\n\n  color: String,\n  textColor: String,\n  noCaps: Boolean,\n  noWrap: Boolean,\n  dense: Boolean,\n\n  tabindex: [Number, String],\n\n  ripple: {\n    type: [Boolean, Object],\n    default: true\n  },\n\n  align: {\n    ...useAlignProps.align,\n    default: 'center'\n  },\n  stack: Boolean,\n  stretch: Boolean,\n  loading: {\n    type: Boolean,\n    default: null\n  },\n  disable: Boolean\n}\n\nexport default function (props) {\n  const sizeStyle = useSize(props, defaultSizes)\n  const alignClass = useAlign(props)\n\n  const style = computed(() => {\n    const obj = props.fab === false && props.fabMini === false ? sizeStyle.value : {}\n    return props.padding !== void 0\n      ? Object.assign({}, obj, {\n          padding: props.padding\n            .split(/\\s+/)\n            .map(v => (v in padding ? padding[v] + 'px' : v))\n            .join(' '),\n          minWidth: '0',\n          minHeight: '0'\n        })\n      : obj\n  })\n\n  const isRounded = computed(() => props.rounded === true || props.fab === true || props.fabMini === true)\n\n  const isActionable = computed(() => props.disable !== true && props.loading !== true)\n\n  const tabIndex = computed(() => (isActionable.value === true ? props.tabindex || 0 : -1))\n\n  const design = computed(() => {\n    if (props.flat === true) return 'flat'\n    if (props.outline === true) return 'outline'\n    if (props.push === true) return 'push'\n    if (props.unelevated === true) return 'unelevated'\n    return 'standard'\n  })\n\n  const attributes = computed(() => {\n    const acc: any = { tabindex: tabIndex.value }\n\n    if (props.type !== 'a') {\n      acc.type = props.type\n    }\n\n    acc.role = props.type === 'a' ? 'link' : 'button'\n\n    if (props.loading === true && props.percentage !== void 0) {\n      Object.assign(acc, {\n        role: 'progressbar',\n        'aria-valuemin': 0,\n        'aria-valuemax': 100,\n        'aria-valuenow': props.percentage\n      })\n    }\n\n    if (props.disable === true) {\n      acc.disabled = ''\n      acc['aria-disabled'] = 'true'\n    }\n\n    return acc\n  })\n\n  const classes = computed(() => {\n    let colors\n\n    if (props.color !== void 0) {\n      if (props.flat === true || props.outline === true) {\n        colors = `text-${props.textColor || props.color}`\n      } else {\n        colors = `bg-${props.color} text-${props.textColor || 'white'}`\n      }\n    } else if (props.textColor) {\n      colors = `text-${props.textColor}`\n    }\n\n    return (\n      `vc-btn--${design.value} ` +\n      `vc-btn--${props.round === true ? 'round' : `rectangle${isRounded.value === true ? ' vc-btn--rounded' : ''}`}` +\n      (colors !== void 0 ? ' ' + colors : '') +\n      (isActionable.value === true ? ' vc-btn--actionable vc-focusable vc-hoverable' : props.disable === true ? ' disabled' : '') +\n      (props.fab === true ? ' vc-btn--fab' : props.fabMini === true ? ' vc-btn--fab-mini' : '') +\n      (props.noCaps === true ? ' vc-btn--no-uppercase' : '') +\n      (props.dense === true ? ' vc-btn--dense' : '') +\n      (props.stretch === true ? ' no-border-radius self-stretch' : '') +\n      (props.glossy === true ? ' glossy' : '')\n    )\n  })\n\n  const innerClasses = computed(\n    () =>\n      alignClass.value +\n      (props.stack === true ? ' column' : ' row') +\n      (props.noWrap === true ? ' no-wrap text-no-wrap' : '') +\n      (props.loading === true ? ' vc-btn__content--hidden' : '')\n  )\n\n  return {\n    classes,\n    style,\n    innerClasses,\n    attributes,\n    isActionable\n  }\n}\n","export function platform() {\n  const ua = navigator.userAgent\n  const isWindowsPhone = /(?:Windows Phone)/.test(ua)\n  const isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone\n  const isAndroid = /(?:Android)/.test(ua)\n  const isFireFox = /(?:Firefox)/.test(ua)\n  const isChrome = /(?:Chrome|CriOS)/.test(ua)\n  const isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua))\n  const isPhone = /(?:iPhone)/.test(ua) && !isTablet\n  const isPc = !isPhone && !isAndroid && !isSymbian\n  const isIOS = !!ua.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/)\n  return {\n    isTablet: isTablet,\n    isPhone: isPhone,\n    isAndroid: isAndroid,\n    isPc: isPc,\n    isChrome: isChrome,\n    isIOS\n  }\n}\n","import { platform } from '../platform'\n\nconst directions = ['left', 'right', 'up', 'down', 'horizontal', 'vertical']\n\nconst modifiersAll = {\n  left: true,\n  right: true,\n  up: true,\n  down: true,\n  horizontal: true,\n  vertical: true,\n  all: true\n}\n\nexport function getModifierDirections(mod) {\n  const dir: any = {}\n\n  directions.forEach(direction => {\n    if (mod[direction]) {\n      dir[direction] = true\n    }\n  })\n\n  if (Object.keys(dir).length === 0) {\n    return modifiersAll\n  }\n\n  if (dir.horizontal === true) {\n    dir.left = dir.right = true\n  }\n  if (dir.vertical === true) {\n    dir.up = dir.down = true\n  }\n  if (dir.left === true && dir.right === true) {\n    dir.horizontal = true\n  }\n  if (dir.up === true && dir.down === true) {\n    dir.vertical = true\n  }\n  if (dir.horizontal === true && dir.vertical === true) {\n    dir.all = true\n  }\n\n  return dir\n}\n\nexport const getTouchTarget = platform().isIOS || navigator.vendor.toLowerCase().indexOf('apple') > -1 ? () => document : target => target\n\nexport function shouldStart(evt, ctx) {\n  return (\n    ctx.event === void 0 &&\n    evt.target !== void 0 &&\n    evt.target.draggable !== true &&\n    typeof ctx.handler === 'function' &&\n    evt.target.nodeName.toUpperCase() !== 'INPUT' &&\n    (evt.qClonedBy === void 0 || evt.qClonedBy.indexOf(ctx.uid) === -1)\n  )\n}\n","import { h, defineComponent, ref, computed, Transition, onBeforeUnmount, getCurrentInstance } from 'vue'\nimport type { VNode, ExtractPropTypes } from 'vue'\nimport VcIcon from '../icon'\nimport { Spinner as VcSpinner } from '../spinner'\nimport { Ripple } from '@vue-cesium/directives'\nimport useBtn, { useBtnProps } from './use-btn'\nimport { hMergeSlot, hDir } from '@vue-cesium/utils/private/render'\nimport { stop, prevent, stopAndPrevent, listenOpts } from '@vue-cesium/utils/private/event'\nimport { getTouchTarget } from '@vue-cesium/utils/private/touch'\nimport { isKeyCode } from '@vue-cesium/utils/private/key-composition'\n\nconst { passiveCapture } = listenOpts\n\nlet touchTarget: HTMLElement | null, keyboardTarget: HTMLElement | null, mouseTarget: HTMLElement | null\nexport const btnProps = {\n  ...useBtnProps,\n\n  percentage: {\n    type: Number,\n    default: 0\n  },\n  darkPercentage: Boolean\n}\nexport default defineComponent({\n  name: 'VcBtn',\n\n  props: btnProps,\n\n  emits: ['click', 'keydown', 'touchstart', 'mousedown', 'keyup'],\n\n  setup(props, { slots, emit }) {\n    const proxy = getCurrentInstance()?.proxy\n\n    const { classes, style, innerClasses, attributes, isActionable } = useBtn(props)\n\n    const rootRef = ref<HTMLElement>(null)\n    const blurTargetRef = ref<HTMLElement>(null)\n\n    let localTouchTargetEl: HTMLElement = null,\n      avoidMouseRipple,\n      mouseTimer\n\n    const hasLabel = computed(() => props.label !== void 0 && props.label !== null && props.label !== '')\n\n    const ripple = computed(() =>\n      props.ripple === false\n        ? false\n        : {\n            // keyCodes: isLink.value === true ? [ 13, 32 ] : [ 13 ],\n            keyCodes: 13,\n            ...(props.ripple === true ? {} : props.ripple)\n          }\n    )\n\n    const percentageStyle = computed(() => {\n      const val = Math.max(0, Math.min(100, props.percentage))\n      return val > 0 ? { transition: 'transform 0.6s', transform: `translateX(${val - 100}%)` } : {}\n    })\n\n    const onEvents = computed(() => {\n      if (props.loading === true) {\n        return {\n          onMousedown: onLoadingEvt,\n          onTouchstart: onLoadingEvt,\n          onClick: onLoadingEvt,\n          onKeydown: onLoadingEvt,\n          onKeyup: onLoadingEvt\n        }\n      } else if (isActionable.value === true) {\n        return {\n          onClick,\n          onKeydown,\n          onMousedown,\n          onTouchstart\n        }\n      }\n\n      return {}\n    })\n\n    const directives = computed(() => {\n      // if props.disable !== true && props.ripple !== false\n      return [[Ripple, ripple.value, void 0, { center: props.round }]]\n    })\n\n    const nodeProps = computed(() => ({\n      ref: rootRef,\n      class: 'vc-btn vc-btn-item non-selectable no-outline ' + classes.value,\n      style: style.value,\n      ...attributes.value,\n      ...onEvents.value\n    }))\n\n    function onClick(e) {\n      if (e !== void 0) {\n        if (e.defaultPrevented === true) {\n          return\n        }\n\n        const el = document.activeElement\n        // focus button if it came from ENTER on form\n        // prevent the new submit (already done)\n        if (\n          props.type === 'submit' &&\n          el !== document.body &&\n          rootRef.value?.contains(el) === false &&\n          // required for iOS and desktop Safari\n          el?.contains(rootRef.value) === false\n        ) {\n          rootRef.value.focus()\n\n          const onClickCleanup = () => {\n            document.removeEventListener('keydown', stopAndPrevent, true)\n            document.removeEventListener('keyup', onClickCleanup, passiveCapture)\n            rootRef.value !== null && rootRef.value.removeEventListener('blur', onClickCleanup, passiveCapture)\n          }\n\n          document.addEventListener('keydown', stopAndPrevent, true)\n          document.addEventListener('keyup', onClickCleanup, passiveCapture)\n          rootRef.value.addEventListener('blur', onClickCleanup, passiveCapture)\n        }\n      }\n\n      const go = () => {\n        // navigateToLink(e)\n      }\n\n      emit('click', e, go)\n      // TODO vue3 - not accounting for e.navigate\n      // hasLink.value === true && e.navigate !== false && go()\n    }\n\n    function onKeydown(e) {\n      if (isKeyCode(e, [13, 32]) === true) {\n        stopAndPrevent(e)\n\n        if (keyboardTarget !== rootRef.value) {\n          keyboardTarget !== null && cleanup()\n\n          // focus external button if the focus helper was focused before\n          rootRef.value?.focus()\n\n          keyboardTarget = rootRef.value\n          rootRef.value?.classList.add('vc-btn--active')\n          document.addEventListener('keyup', onPressEnd, true)\n          rootRef.value?.addEventListener('blur', onPressEnd, passiveCapture)\n        }\n      }\n\n      emit('keydown', e)\n    }\n\n    function onTouchstart(e) {\n      if (touchTarget !== rootRef.value) {\n        touchTarget !== null && cleanup()\n        touchTarget = rootRef.value\n\n        localTouchTargetEl = getTouchTarget(e.target)\n        localTouchTargetEl?.addEventListener('touchcancel', onPressEnd, passiveCapture)\n        localTouchTargetEl?.addEventListener('touchend', onPressEnd, passiveCapture)\n      }\n\n      // avoid duplicated mousedown event\n      // triggering another early ripple\n      avoidMouseRipple = true\n      clearTimeout(mouseTimer)\n      mouseTimer = setTimeout(() => {\n        avoidMouseRipple = false\n      }, 200)\n\n      emit('touchstart', e)\n    }\n\n    function onMousedown(e) {\n      if (mouseTarget !== rootRef.value) {\n        mouseTarget !== null && cleanup()\n        mouseTarget = rootRef.value\n        rootRef.value?.classList.add('vc-btn--active')\n        document.addEventListener('mouseup', onPressEnd, passiveCapture)\n      }\n\n      e.qSkipRipple = avoidMouseRipple === true\n      emit('mousedown', e)\n    }\n\n    function onPressEnd(e) {\n      // needed for IE (because it emits blur when focusing button from focus helper)\n      if (e !== void 0 && e.type === 'blur' && document.activeElement === rootRef.value) {\n        return\n      }\n\n      if (e !== void 0 && e.type === 'keyup') {\n        if (keyboardTarget === rootRef.value && isKeyCode(e, [13, 32]) === true) {\n          // for click trigger\n          const evt = new MouseEvent('click', e)\n          ;(evt as any).qKeyEvent = true\n          e.defaultPrevented === true && prevent(evt)\n          e.cancelBubble === true && stop(evt)\n          rootRef.value?.dispatchEvent(evt)\n\n          stopAndPrevent(e)\n\n          // for ripple\n          e.qKeyEvent = true\n        }\n\n        emit('keyup', e)\n      }\n\n      cleanup()\n    }\n\n    function cleanup(destroying?) {\n      const blurTarget = blurTargetRef.value\n\n      if (\n        destroying !== true &&\n        (touchTarget === rootRef.value || mouseTarget === rootRef.value) &&\n        blurTarget !== null &&\n        blurTarget !== document.activeElement\n      ) {\n        blurTarget.setAttribute('tabindex', '-1')\n        blurTarget.focus()\n      }\n\n      if (touchTarget === rootRef.value) {\n        if (localTouchTargetEl !== null) {\n          localTouchTargetEl.removeEventListener('touchcancel', onPressEnd, passiveCapture)\n          localTouchTargetEl.removeEventListener('touchend', onPressEnd, passiveCapture)\n        }\n        touchTarget = localTouchTargetEl = null\n      }\n\n      if (mouseTarget === rootRef.value) {\n        document.removeEventListener('mouseup', onPressEnd, passiveCapture)\n        mouseTarget = null\n      }\n\n      if (keyboardTarget === rootRef.value) {\n        document.removeEventListener('keyup', onPressEnd, true)\n        rootRef.value !== null && rootRef.value.removeEventListener('blur', onPressEnd, passiveCapture)\n        keyboardTarget = null\n      }\n\n      rootRef.value !== null && rootRef.value.classList.remove('vc-btn--active')\n    }\n\n    function onLoadingEvt(evt) {\n      stopAndPrevent(evt)\n      evt.qSkipRipple = true\n    }\n\n    onBeforeUnmount(() => {\n      cleanup(true)\n    })\n\n    // expose public methods\n    Object.assign(proxy, {\n      click: onClick\n    })\n\n    return () => {\n      let inner: Array<VNode> = []\n\n      props.icon !== void 0 &&\n        inner.push(\n          h(VcIcon, {\n            name: props.icon,\n            left: props.stack === false && hasLabel.value === true,\n            role: 'img',\n            'aria-hidden': 'true'\n          })\n        )\n\n      hasLabel.value === true && inner.push(h('span', { class: 'block' }, [props.label]))\n\n      inner = hMergeSlot(slots.default, inner)\n\n      if (props.iconRight !== void 0 && props.round === false) {\n        inner.push(\n          h(VcIcon, {\n            name: props.iconRight,\n            right: props.stack === false && hasLabel.value === true,\n            role: 'img',\n            'aria-hidden': 'true'\n          })\n        )\n      }\n\n      const child = [\n        h('span', {\n          class: 'vc-focus-helper',\n          ref: blurTargetRef\n        })\n      ]\n\n      if (props.loading === true && props.percentage !== void 0) {\n        child.push(\n          h(\n            'span',\n            {\n              class: 'vc-btn__progress absolute-full overflow-hidden'\n            },\n            [\n              h('span', {\n                class: 'vc-btn__progress-indicator fit block' + (props.darkPercentage === true ? ' vc-btn__progress--dark' : ''),\n                style: percentageStyle.value\n              })\n            ]\n          )\n        )\n      }\n\n      child.push(\n        h(\n          'span',\n          {\n            class: 'vc-btn__content text-center col items-center vc-anchor--skip ' + innerClasses.value\n          },\n          inner\n        )\n      )\n\n      props.loading !== null &&\n        child.push(\n          h(\n            Transition,\n            {\n              name: 'vc-transition--fade'\n            },\n            () =>\n              props.loading === true\n                ? [\n                    h(\n                      'span',\n                      {\n                        key: 'loading',\n                        class: 'absolute-full flex flex-center'\n                      },\n                      slots.loading !== void 0 ? slots.loading() : [h(VcSpinner)]\n                    )\n                  ]\n                : null\n          )\n        )\n\n      return hDir('button', nodeProps.value, child, 'ripple', props.disable !== true && props.ripple !== false, () => directives.value)\n    }\n  }\n})\n\n// export type VcBtnProps = ExtractPropTypes<typeof btnProps>\n\nexport interface VcBtnProps {\n  /**\n   * Size in CSS units, including unit name or standard size name (xs|sm|md|lg|xl).\n   */\n  size?: string | undefined\n  /**\n   * 1) Define the button native type attribute (submit, reset, button) or 2) render component with <a> tag so you can access events even if disable or 3) Use 'href' prop and specify 'type' as a media tag.\n   * Default value: button\n   */\n  type?: string | undefined\n  /**\n   * Equivalent to Vue Router <router-link> 'to' property; Superseeded by 'href' prop if used.\n   */\n  to?: string | any | undefined\n  /**\n   * Equivalent to Vue Router <router-link> 'replace' property; Superseeded by 'href' prop if used.\n   */\n  replace?: boolean | undefined\n  /**\n   * Native <a> link href attribute; Has priority over the 'to' and 'replace' props.\n   */\n  href?: string | undefined\n  /**\n   * Native <a> link target attribute; Use it only with 'to' or 'href' props.\n   */\n  target?: string | undefined\n  /**\n   * The text that will be shown on the button.\n   */\n  label?: string | number | undefined\n  /**\n   * Icon name following VueCesium convention; Make sure you have the icon library installed unless you are using 'img:' prefix.\n   */\n  icon?: string | undefined\n  /**\n   * Icon name following VueCesium convention; Make sure you have the icon library installed unless you are using 'img:' prefix.\n   */\n  iconRight?: string | undefined\n  /**\n   * Use 'outline' design.\n   */\n  outline?: boolean | undefined\n  /**\n   * Use 'flat' design.\n   */\n  flat?: boolean | undefined\n  /**\n   * Remove shadow.\n   */\n  unelevated?: boolean | undefined\n  /**\n   * Applies a more prominent border-radius for a squared shape button.\n   */\n  rounded?: boolean | undefined\n  /**\n   * Use 'push' design.\n   */\n  push?: boolean | undefined\n  /**\n   * Applies a glossy effect.\n   */\n  glossy?: boolean | undefined\n  /**\n   * Makes button size and shape to fit a Floating Action Button.\n   */\n  fab?: boolean | undefined\n  /**\n   * Makes button size and shape to fit a small Floating Action Button\n   */\n  fabMini?: boolean | undefined\n  /**\n   * Apply custom padding (vertical [horizontal]); Size in CSS units, including unit name or standard size name (none|xs|sm|md|lg|xl); Also removes the min width and height when set.\n   */\n  padding?: string | undefined\n  /**\n   * Color name for component from the css Color Palette.\n   */\n  color?: string | undefined\n  /**\n   * Overrides text color (if needed); Color name from the css Color Palette.\n   */\n  textColor?: string | undefined\n  /**\n   * Avoid turning label text into caps (which happens by default).\n   */\n  noCaps?: boolean | undefined\n  /**\n   * Avoid label text wrapping.\n   */\n  noWrap?: boolean | undefined\n  /**\n   * Dense mode; occupies less space.\n   */\n  dense?: boolean | undefined\n  /**\n   * Configure material ripple (disable it by setting it to 'false' or supply a config object).\n   * Default value: true\n   */\n  ripple?: boolean | any | undefined\n  /**\n   * Tabindex HTML attribute value.\n   */\n  tabindex?: number | string | undefined\n  /**\n   * Label or content alignment.\n   * Default value: center\n   */\n  align?: 'left' | 'right' | 'center' | 'around' | 'between' | 'evenly' | undefined\n  /**\n   * Stack icon and label vertically instead of on same line (like it is by default).\n   */\n  stack?: boolean | undefined\n  /**\n   * When used on flexbox parent, button will stretch to parent's height.\n   */\n  stretch?: boolean | undefined\n  /**\n   * Put button into loading state (displays a QSpinner -- can be overridden by using a 'loading' slot).\n   */\n  loading?: boolean | undefined\n  /**\n   * Put component in disabled mode.\n   */\n  disable?: boolean | undefined\n  /**\n   * Makes a circle shaped button.\n   */\n  round?: boolean | undefined\n  /**\n   * Percentage (0.0 < x < 100.0); To be used along 'loading' prop; Display a progress bar on the background.\n   */\n  percentage?: number | undefined\n  /**\n   * Progress bar on the background should have dark color; To be used along with 'percentage' and 'loading' props.\n   */\n  darkPercentage?: boolean | undefined\n  background?: string | undefined\n  /**\n   * Emitted when component is clicked (activated).\n   * @param evt JS event object; If you want to cancel navigation set synchronously 'evt.navigate' to false\n   * @param navigateFn When you need to control the time at which the button should trigger the route navigation then set 'evt.navigate' to false and call this function; Useful if you have async work to be done before the actual route navigation\n   */\n  onClick?: (evt: any, navigateFn: () => void) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-04-06 09:21:02\n * @LastEditTime: 2021-10-02 23:16:08\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\private\\selection.ts\n */\nimport { platform } from '../platform'\n\nexport function clearSelection() {\n  if (window.getSelection !== void 0) {\n    const selection = window.getSelection()\n    if (selection?.empty !== void 0) {\n      selection.empty()\n    } else if (selection?.removeAllRanges !== void 0) {\n      selection.removeAllRanges()\n      platform().isPhone !== true && selection.addRange(document.createRange())\n    }\n  } else if ((document as any).selection !== void 0) {\n    ;(document as any).selection.empty()\n  }\n}\n","import { ref, watch, onMounted, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport { clearSelection } from '@vue-cesium/utils/private/selection'\nimport { addEvt, cleanEvt, prevent } from '@vue-cesium/utils/private/event'\nimport { getTouchTarget } from '@vue-cesium/utils/private/touch'\nimport { isKeyCode } from '@vue-cesium/utils/private/key-composition'\nimport { platform } from '@vue-cesium/utils/platform'\n\nexport const useAnchorProps = {\n  target: {\n    type: [Boolean, String],\n    default: true\n  },\n  noParentEvent: Boolean,\n  contextMenu: Boolean\n}\n\nexport default function ({\n  showing,\n  avoidEmit, // required for VcPopupProxy (true)\n  configureAnchorEl // optional\n}) {\n  const { props, proxy, emit } = getCurrentInstance()!\n\n  const anchorEl = ref<HTMLElement>(null!)\n\n  let touchTimer\n\n  function canShow(evt) {\n    // abort with no parent configured or on multi-touch\n    return anchorEl.value === null ? false : evt === void 0 || evt.touches === void 0 || evt.touches.length <= 1\n  }\n\n  const anchorEvents: any = {}\n\n  if (configureAnchorEl === void 0) {\n    // default configureAnchorEl is designed for\n\n    Object.assign(anchorEvents, {\n      hide(evt) {\n        ;(proxy as any).hide(evt)\n      },\n\n      toggle(evt) {\n        ;(proxy as any).toggle(evt)\n      },\n\n      toggleKey(evt) {\n        isKeyCode(evt, 13) === true && (proxy as any).toggle(evt)\n      },\n\n      contextClick(evt) {\n        ;(proxy as any).hide(evt)\n        nextTick(() => {\n          ;(proxy as any).show(evt)\n        })\n        prevent(evt)\n      },\n\n      mobilePrevent: prevent,\n\n      mobileTouch(evt) {\n        anchorEvents.mobileCleanup(evt)\n\n        if (canShow(evt) !== true) {\n          return\n        }\n\n        ;(proxy as any).hide(evt)\n        anchorEl.value?.classList.add('non-selectable')\n\n        const target = getTouchTarget(evt.target)\n        addEvt(anchorEvents, 'anchor', [\n          [target, 'touchmove', 'mobileCleanup', 'passive'],\n          [target, 'touchend', 'mobileCleanup', 'passive'],\n          [target, 'touchcancel', 'mobileCleanup', 'passive'],\n          [anchorEl.value, 'contextmenu', 'mobilePrevent', 'notPassive']\n        ])\n\n        touchTimer = setTimeout(() => {\n          ;(proxy as any).show(evt)\n        }, 300)\n      },\n\n      mobileCleanup(evt) {\n        anchorEl.value.classList.remove('non-selectable')\n        clearTimeout(touchTimer)\n\n        if (showing.value === true && evt !== void 0) {\n          clearSelection()\n        }\n      }\n    })\n\n    configureAnchorEl = function (context = props.contextMenu) {\n      if (props.noParentEvent === true || anchorEl.value === null) {\n        return\n      }\n\n      let evts\n\n      if (context === true) {\n        if (platform().isPhone === true) {\n          evts = [[anchorEl.value, 'touchstart', 'mobileTouch', 'passive']]\n        } else {\n          evts = [\n            [anchorEl.value, 'click', 'hide', 'passive'],\n            [anchorEl.value, 'contextmenu', 'contextClick', 'notPassive']\n          ]\n        }\n      } else {\n        evts = [\n          [anchorEl.value, 'click', 'toggle', 'passive'],\n          [anchorEl.value, 'keyup', 'toggleKey', 'passive']\n        ]\n      }\n\n      addEvt(anchorEvents, 'anchor', evts)\n    }\n  }\n\n  function unconfigureAnchorEl() {\n    cleanEvt(anchorEvents, 'anchor')\n  }\n\n  function setAnchorEl(el) {\n    anchorEl.value = el\n    while (anchorEl.value.classList.contains('vc-anchor--skip')) {\n      ;(anchorEl.value as any) = anchorEl.value.parentNode\n    }\n    configureAnchorEl()\n  }\n\n  function pickAnchorEl() {\n    if (props.target === false || props.target === '') {\n      anchorEl.value = null!\n    } else if (props.target === true) {\n      setAnchorEl(proxy?.$el.parentNode)\n    } else {\n      let el = props.target as any\n\n      if (typeof props.target === 'string') {\n        try {\n          el = document.querySelector(props.target)\n        } catch (err) {\n          el = void 0\n        }\n      }\n\n      if (el !== void 0 && el !== null) {\n        anchorEl.value = el.$el || el\n        configureAnchorEl()\n      } else {\n        anchorEl.value = null!\n        console.error(`Anchor: target \"${props.target}\" not found`)\n      }\n    }\n  }\n\n  watch(\n    () => props.contextMenu,\n    val => {\n      if (anchorEl.value !== null) {\n        unconfigureAnchorEl()\n        configureAnchorEl(val)\n      }\n    }\n  )\n\n  watch(\n    () => props.target,\n    () => {\n      if (anchorEl.value !== null) {\n        unconfigureAnchorEl()\n      }\n\n      pickAnchorEl()\n    }\n  )\n\n  watch(\n    () => props.noParentEvent,\n    val => {\n      if (anchorEl.value !== null) {\n        if (val === true) {\n          unconfigureAnchorEl()\n        } else {\n          configureAnchorEl()\n        }\n      }\n    }\n  )\n\n  onMounted(() => {\n    pickAnchorEl()\n\n    if (avoidEmit !== true && props.modelValue === true && anchorEl.value === null) {\n      emit('update:modelValue', false)\n    }\n  })\n\n  onBeforeUnmount(() => {\n    clearTimeout(touchTimer)\n    unconfigureAnchorEl()\n  })\n\n  return {\n    anchorEl,\n    canShow,\n    anchorEvents\n  }\n}\n","import { ref, watch, onBeforeUnmount } from 'vue'\n\nimport { listenOpts } from '@vue-cesium/utils/private/event'\n\nexport default function (props, configureScrollTarget) {\n  const localScrollTarget = ref(null)\n  let scrollFn\n\n  function changeScrollEvent(scrollTarget, fn?) {\n    const fnProp = `${fn !== void 0 ? 'add' : 'remove'}EventListener`\n    const fnHandler = fn !== void 0 ? fn : scrollFn\n\n    if (scrollTarget !== window) {\n      scrollTarget[fnProp]('scroll', fnHandler, listenOpts.passive)\n    }\n\n    window[fnProp]('scroll', fnHandler, listenOpts.passive)\n\n    scrollFn = fn\n  }\n\n  function unconfigureScrollTarget() {\n    if (localScrollTarget.value !== null) {\n      changeScrollEvent(localScrollTarget.value)\n      localScrollTarget.value = null\n    }\n  }\n\n  const noParentEventWatcher = watch(\n    () => props.noParentEvent,\n    () => {\n      if (localScrollTarget.value !== null) {\n        unconfigureScrollTarget()\n        configureScrollTarget()\n      }\n    }\n  )\n\n  onBeforeUnmount(noParentEventWatcher)\n\n  return {\n    localScrollTarget,\n    unconfigureScrollTarget,\n    changeScrollEvent\n  }\n}\n","import { watch, nextTick, onMounted, getCurrentInstance, Ref, ComputedRef } from 'vue'\n\nimport { vmHasRouter, vmHasListener } from '@vue-cesium/utils/private/vm'\nimport { AnyFunction } from '@vue-cesium/utils/types'\n\nexport const useModelToggleProps = {\n  modelValue: {\n    type: Boolean,\n    default: null\n  }\n}\n\nexport const useModelToggleEmits = ['update:modelValue', 'before-show', 'show', 'before-hide', 'hide']\n\n// handleShow/handleHide -> removeTick(), self (& emit show), prepareTick()\n\nexport default function ({\n  showing,\n  canShow = undefined, // optional\n  hideOnRouteChange = undefined, // optional\n  handleShow = undefined, // optional\n  handleHide = undefined, // optional\n  processOnMount = undefined // optional\n}: {\n  showing?: Ref<boolean>\n  canShow?: AnyFunction<boolean>\n  hideOnRouteChange?: ComputedRef<boolean>\n  handleShow?: AnyFunction<void>\n  handleHide?: AnyFunction<void>\n  processOnMount?: boolean\n}) {\n  const vm = getCurrentInstance()!\n  const { props, emit, proxy } = vm\n\n  let payload\n\n  function toggle(evt) {\n    if (showing?.value === true) {\n      hide(evt)\n    } else {\n      show(evt)\n    }\n  }\n\n  function show(evt) {\n    if (props.disable === true || (canShow !== void 0 && canShow(evt) !== true)) {\n      return\n    }\n\n    const listener = vmHasListener(vm, 'onUpdate:modelValue') === true\n\n    if (listener === true) {\n      emit('update:modelValue', true)\n      payload = evt\n      nextTick(() => {\n        if (payload === evt) {\n          payload = void 0\n        }\n      })\n    }\n\n    if (props.modelValue === null || listener === false) {\n      processShow(evt)\n    }\n  }\n\n  function processShow(evt) {\n    if (showing?.value === true) {\n      return\n    }\n\n    showing && (showing.value = true)\n\n    emit('before-show', evt)\n\n    if (evt && evt.cancel === true) {\n      return\n    }\n\n    if (handleShow !== void 0) {\n      handleShow(evt)\n    } else {\n      emit('show', evt)\n    }\n  }\n\n  function hide(evt?) {\n    if (props.disable === true) {\n      return\n    }\n\n    const listener = vmHasListener(vm, 'onUpdate:modelValue') === true\n\n    if (listener === true) {\n      emit('update:modelValue', false)\n      payload = evt\n      nextTick(() => {\n        if (payload === evt) {\n          payload = void 0\n        }\n      })\n    }\n\n    if (props.modelValue === null || listener === false) {\n      processHide(evt)\n    }\n  }\n\n  function processHide(evt) {\n    if (showing?.value === false) {\n      return\n    }\n\n    showing && (showing.value = false)\n\n    emit('before-hide', evt)\n\n    if (handleHide !== void 0) {\n      handleHide(evt)\n    } else {\n      emit('hide', evt)\n    }\n  }\n\n  function processModelChange(val) {\n    if (props.disable === true && val === true) {\n      if (vmHasListener(vm, 'onUpdate:modelValue') === true) {\n        emit('update:modelValue', false)\n      }\n    } else if ((val === true) !== showing?.value) {\n      const fn = val === true ? processShow : processHide\n      fn(payload)\n    }\n  }\n\n  watch(() => props.modelValue, processModelChange)\n\n  if (hideOnRouteChange !== void 0 && vmHasRouter(vm) === true) {\n    watch(\n      () => (proxy as any).$route,\n      () => {\n        if (hideOnRouteChange.value === true && showing?.value === true) {\n          hide()\n        }\n      }\n    )\n  }\n\n  processOnMount === true &&\n    onMounted(() => {\n      processModelChange(props.modelValue)\n    })\n\n  // expose public methods\n  const publicMethods = { show, hide, toggle }\n  Object.assign(proxy, publicMethods)\n\n  return publicMethods\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-04-06 09:21:02\n * @LastEditTime: 2021-10-02 23:14:39\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\private\\global-nodes.ts\n */\nconst globalNodes: Array<HTMLDivElement> = []\nlet target = document.body\n\nexport function createGlobalNode(id?) {\n  const el = document.createElement('div')\n\n  if (id !== void 0) {\n    el.id = id\n  }\n\n  target.appendChild(el)\n  globalNodes.push(el)\n\n  return el\n}\n\nexport function removeGlobalNode(el) {\n  globalNodes.splice(globalNodes.indexOf(el), 1)\n  el.remove()\n}\n\nexport function changeGlobalNodesTarget(el) {\n  if (el !== target) {\n    target = el\n\n    globalNodes.forEach(el => {\n      if (el.contains(target) === false) {\n        target.appendChild(el)\n      }\n    })\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-04-06 09:21:02\n * @LastEditTime: 2021-10-02 10:54:02\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\private\\portal.ts\n */\nimport { getParentVm } from './vm'\n\nexport const portalList: Array<any> = []\n\nexport function getPortalVm(el) {\n  return portalList.find(vm => vm.__vcPortalInnerRef.value !== null && vm.__vcPortalInnerRef.value.contains(el))\n}\n\nexport function closePortalMenus(vm, evt) {\n  do {\n    if (vm.$options.name === 'VcMenu') {\n      vm.hide(evt)\n\n      // is this a point of separation?\n      if (vm.$props.separateClosePopup === true) {\n        return getParentVm(vm)\n      }\n    } else if (vm.__vcPortalInnerRef !== void 0) {\n      // treat it as point of separation if parent is QPopupProxy\n      // (so mobile matches desktop behavior)\n      // and hide it too\n      const parent = getParentVm(vm)\n\n      if (parent !== void 0 && parent.$options.name === 'VcPopupProxy') {\n        vm.hide(evt)\n        return parent\n      } else {\n        return vm\n      }\n    }\n\n    vm = getParentVm(vm)\n  } while (vm !== void 0 && vm !== null)\n}\n\nexport function closePortals(vm, evt, depth) {\n  while (depth !== 0 && vm !== void 0 && vm !== null) {\n    if (vm.__vcPortalInnerRef !== void 0) {\n      depth--\n\n      if (vm.$options.name === 'VcMenu') {\n        vm = closePortalMenus(vm, evt)\n        continue\n      }\n\n      vm.hide(evt)\n    }\n\n    vm = getParentVm(vm)\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-06-01 18:06:23\n * @LastEditTime: 2021-10-02 10:52:32\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\private\\use-portal.ts\n */\nimport { h, ref, onUnmounted, Teleport } from 'vue'\nimport { createGlobalNode, removeGlobalNode } from '@vue-cesium/utils/private/global-nodes'\nimport { portalList } from '@vue-cesium/utils/private/portal'\n\nfunction isOnGlobalDialog(vm) {\n  vm = vm.parent\n\n  while (vm !== void 0 && vm !== null) {\n    if (vm.type.name === 'VcGlobalDialog') {\n      return true\n    }\n    if (vm.type.name === 'VcDialog' || vm.type.name === 'VcMenu') {\n      return false\n    }\n\n    vm = vm.parent\n  }\n\n  return false\n}\n\n// Warning!\n// You MUST specify \"inheritAttrs: false\" in your component\n\nexport default function (vm, innerRef, renderPortalContent, checkGlobalDialog?) {\n  let portalEl: HTMLElement = null!\n\n  if (vm.props?.teleport?.to) {\n    portalEl = vm.props?.teleport?.to\n  }\n\n  const onGlobalDialog = checkGlobalDialog === true && isOnGlobalDialog(vm)\n  const portalIsActive = ref(false)\n\n  function showPortal() {\n    if (onGlobalDialog === false && portalEl === null) {\n      portalEl = createGlobalNode()\n    }\n\n    portalIsActive.value = true\n\n    // register portal\n    portalList.push(vm.proxy)\n  }\n\n  function hidePortal() {\n    portalIsActive.value = false\n\n    // unregister portal\n    const index = portalList.indexOf(vm.proxy)\n    if (index > -1) {\n      portalList.splice(index, 1)\n    }\n\n    if (portalEl !== null && !vm.props?.teleport?.to) {\n      removeGlobalNode(portalEl)\n      portalEl = null!\n    }\n  }\n\n  onUnmounted(hidePortal)\n\n  // expose publicly needed stuff for portal utils\n  Object.assign(vm.proxy, { __vcPortalInnerRef: innerRef })\n\n  return {\n    showPortal,\n    hidePortal,\n\n    portalIsActive,\n\n    renderPortal: () => {\n      return onGlobalDialog === true\n        ? renderPortalContent()\n        : portalIsActive.value === true\n        ? [h(Teleport, { to: portalEl }, renderPortalContent())]\n        : void 0\n    }\n  }\n}\n","import { ref, computed, watch, nextTick } from 'vue'\n\nexport const useTransitionProps = {\n  transitionShow: {\n    type: String,\n    default: 'fade'\n  },\n\n  transitionHide: {\n    type: String,\n    default: 'fade'\n  },\n\n  transitionDuration: {\n    type: [String, Number],\n    default: 300\n  }\n}\n\nexport default function (props, showing) {\n  const transitionState = ref(showing.value)\n\n  watch(showing, val => {\n    nextTick(() => {\n      transitionState.value = val\n    })\n  })\n\n  // return transition\n  return {\n    transition: computed(() => 'vc-transition--' + (transitionState.value === true ? props.transitionHide : props.transitionShow)),\n\n    transitionStyle: computed(() => `--vc-transition-duration: ${props.transitionDuration}ms`)\n  }\n}\n","import { nextTick, onBeforeUnmount } from 'vue'\n\n/*\n * Usage:\n *    registerTick(fn)\n *    registerTick(fn)\n *    ....\n *    prepareTick()\n */\n\nexport default function () {\n  let tickFn\n\n  onBeforeUnmount(() => {\n    tickFn = void 0\n  })\n\n  return {\n    registerTick(fn) {\n      tickFn = fn\n    },\n\n    removeTick() {\n      tickFn = void 0\n    },\n\n    prepareTick() {\n      if (tickFn !== void 0) {\n        const fn = tickFn\n        nextTick(() => {\n          if (tickFn === fn) {\n            tickFn()\n            tickFn = void 0\n          }\n        })\n      }\n    }\n  }\n}\n","import { onBeforeUnmount } from 'vue'\n\nexport default function () {\n  let timer\n\n  onBeforeUnmount(() => {\n    clearTimeout(timer)\n  })\n\n  return {\n    registerTimeout(fn, delay) {\n      clearTimeout(timer)\n      timer = setTimeout(fn, delay)\n    },\n\n    removeTimeout() {\n      clearTimeout(timer)\n    }\n  }\n}\n","import { css, getElement } from './dom'\n\nconst scrollTargets = [null, document, document.body, document.scrollingElement, document.documentElement]\n\nexport function getScrollTarget(el, targetEl) {\n  let target = getElement(targetEl)\n\n  if (target === void 0) {\n    if (el === void 0 || el === null) {\n      return window\n    }\n\n    target = el.closest('.scroll,.scroll-y,.overflow-auto')\n  }\n\n  return scrollTargets.includes(target) ? window : target\n}\n\nexport function getScrollHeight(el) {\n  return (el === window ? document.body : el).scrollHeight\n}\n\nexport function getScrollWidth(el) {\n  return (el === window ? document.body : el).scrollWidth\n}\n\nexport function getVerticalScrollPosition(scrollTarget) {\n  return scrollTarget === window ? window.pageYOffset || window.scrollY || document.body.scrollTop || 0 : scrollTarget.scrollTop\n}\n\nexport function getHorizontalScrollPosition(scrollTarget) {\n  return scrollTarget === window ? window.pageXOffset || window.scrollX || document.body.scrollLeft || 0 : scrollTarget.scrollLeft\n}\n\nexport function animVerticalScrollTo(el, to, duration = 0, prevTime?) {\n  prevTime = prevTime || performance.now()\n  const pos = getVerticalScrollPosition(el)\n\n  if (duration <= 0) {\n    if (pos !== to) {\n      setScroll(el, to)\n    }\n    return\n  }\n\n  requestAnimationFrame(nowTime => {\n    const frameTime = nowTime - prevTime\n    const newPos = pos + ((to - pos) / Math.max(frameTime, duration)) * frameTime\n    setScroll(el, newPos)\n    if (newPos !== to) {\n      animVerticalScrollTo(el, to, duration - frameTime, nowTime)\n    }\n  })\n}\n\nexport function animHorizontalScrollTo(el, to, duration = 0, prevTime?) {\n  prevTime = prevTime || performance.now()\n  const pos = getHorizontalScrollPosition(el)\n\n  if (duration <= 0) {\n    if (pos !== to) {\n      setHorizontalScroll(el, to)\n    }\n    return\n  }\n\n  requestAnimationFrame(nowTime => {\n    const frameTime = nowTime - prevTime\n    const newPos = pos + ((to - pos) / Math.max(frameTime, duration)) * frameTime\n    setHorizontalScroll(el, newPos)\n    if (newPos !== to) {\n      animHorizontalScrollTo(el, to, duration - frameTime, nowTime)\n    }\n  })\n}\n\nfunction setScroll(scrollTarget, offset) {\n  if (scrollTarget === window) {\n    window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, offset)\n    return\n  }\n  scrollTarget.scrollTop = offset\n}\n\nfunction setHorizontalScroll(scrollTarget, offset) {\n  if (scrollTarget === window) {\n    window.scrollTo(offset, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)\n    return\n  }\n  scrollTarget.scrollLeft = offset\n}\n\nexport function setVerticalScrollPosition(scrollTarget, offset, duration) {\n  if (duration) {\n    animVerticalScrollTo(scrollTarget, offset, duration)\n    return\n  }\n  setScroll(scrollTarget, offset)\n}\n\nexport function setHorizontalScrollPosition(scrollTarget, offset, duration) {\n  if (duration) {\n    animHorizontalScrollTo(scrollTarget, offset, duration)\n    return\n  }\n  setHorizontalScroll(scrollTarget, offset)\n}\n\nlet size\nexport function getScrollbarWidth() {\n  if (size !== undefined) {\n    return size\n  }\n\n  const inner = document.createElement('p'),\n    outer = document.createElement('div')\n\n  css(inner, {\n    width: '100%',\n    height: '200px'\n  })\n  css(outer, {\n    position: 'absolute',\n    top: '0px',\n    left: '0px',\n    visibility: 'hidden',\n    width: '200px',\n    height: '150px',\n    overflow: 'hidden'\n  })\n\n  outer.appendChild(inner)\n\n  document.body.appendChild(outer)\n\n  const w1 = inner.offsetWidth\n  outer.style.overflow = 'scroll'\n  let w2 = inner.offsetWidth\n\n  if (w1 === w2) {\n    w2 = outer.clientWidth\n  }\n\n  outer.remove()\n  size = w1 - w2\n\n  return size\n}\n\nexport function hasScrollbar(el, onY = true) {\n  if (!el || el.nodeType !== Node.ELEMENT_NODE) {\n    return false\n  }\n\n  return onY\n    ? el.scrollHeight > el.clientHeight &&\n        (el.classList.contains('scroll') ||\n          el.classList.contains('overflow-auto') ||\n          ['auto', 'scroll'].includes(window.getComputedStyle(el)['overflow-y']))\n    : el.scrollWidth > el.clientWidth &&\n        (el.classList.contains('scroll') ||\n          el.classList.contains('overflow-auto') ||\n          ['auto', 'scroll'].includes(window.getComputedStyle(el)['overflow-x']))\n}\n\nexport default {\n  getScrollTarget,\n\n  getScrollHeight,\n  getScrollWidth,\n\n  getVerticalScrollPosition,\n  getHorizontalScrollPosition,\n\n  animVerticalScrollTo,\n  animHorizontalScrollTo,\n\n  setVerticalScrollPosition,\n  setHorizontalScrollPosition,\n\n  getScrollbarWidth,\n  hasScrollbar\n}\n","import { getScrollbarWidth } from './scroll'\nimport { platform } from '../platform'\nimport { CSSProperties } from 'vue'\n\nlet vpLeft, vpTop\n\nexport function validatePosition(pos) {\n  const parts = pos.split(' ')\n  if (parts.length !== 2) {\n    return false\n  }\n  if (['top', 'center', 'bottom'].includes(parts[0]) !== true) {\n    console.error('Anchor/Self position must start with one of top/center/bottom')\n    return false\n  }\n  if (['left', 'middle', 'right', 'start', 'end'].includes(parts[1]) !== true) {\n    console.error('Anchor/Self position must end with one of left/middle/right/start/end')\n    return false\n  }\n  return true\n}\n\nexport function validateOffset(val) {\n  if (!val) {\n    return true\n  }\n  if (val.length !== 2) {\n    return false\n  }\n  if (typeof val[0] !== 'number' || typeof val[1] !== 'number') {\n    return false\n  }\n  return true\n}\n\nconst horizontalPos = {\n  'start#ltr': 'left',\n  'start#rtl': 'right',\n  'end#ltr': 'right',\n  'end#rtl': 'left'\n}\n;['left', 'middle', 'right'].forEach(pos => {\n  horizontalPos[`${pos}#ltr`] = pos\n  horizontalPos[`${pos}#rtl`] = pos\n})\n\nexport function parsePosition(pos, rtl) {\n  const parts = pos.split(' ')\n  return {\n    vertical: parts[0],\n    horizontal: horizontalPos[`${parts[1]}#${rtl === true ? 'rtl' : 'ltr'}`]\n  }\n}\n\nexport function validateCover(val) {\n  if (val === true || val === false) {\n    return true\n  }\n  return validatePosition(val)\n}\n\nexport function getAnchorProps(el, offset) {\n  let { top, left, right, bottom, width, height } = el.getBoundingClientRect()\n\n  if (offset !== void 0) {\n    top -= offset[1]\n    left -= offset[0]\n    bottom += offset[1]\n    right += offset[0]\n\n    width += offset[0]\n    height += offset[1]\n  }\n\n  return {\n    top,\n    left,\n    right,\n    bottom,\n    width,\n    height,\n    middle: left + (right - left) / 2,\n    center: top + (bottom - top) / 2\n  }\n}\n\nexport function getTargetProps(el) {\n  return {\n    top: 0,\n    center: el.offsetHeight / 2,\n    bottom: el.offsetHeight,\n    left: 0,\n    middle: el.offsetWidth / 2,\n    right: el.offsetWidth\n  }\n}\n\n// cfg: { el, anchorEl, anchorOrigin, selfOrigin, offset, absoluteOffset, cover, fit, maxHeight, maxWidth }\nexport function setPosition(cfg) {\n  if (platform().isIOS === true && window.visualViewport !== void 0) {\n    // uses the vc-position-engine CSS class\n\n    const el = document.body.style\n    const { offsetLeft: left, offsetTop: top } = window.visualViewport\n\n    if (left !== vpLeft) {\n      el.setProperty('--vc-pe-left', left + 'px')\n      vpLeft = left\n    }\n    if (top !== vpTop) {\n      el.setProperty('--vc-pe-top', top + 'px')\n      vpTop = top\n    }\n  }\n\n  let anchorProps: any = {}\n\n  // scroll position might change\n  // if max-height/-width changes, so we\n  // need to restore it after we calculate\n  // the new positioning\n  const { scrollLeft, scrollTop } = cfg.el\n\n  if (cfg.absoluteOffset === void 0) {\n    anchorProps = getAnchorProps(cfg.anchorEl, cfg.cover === true ? [0, 0] : cfg.offset)\n  } else {\n    const { top: anchorTop, left: anchorLeft } = cfg.anchorEl.getBoundingClientRect(),\n      top = anchorTop + cfg.absoluteOffset.top,\n      left = anchorLeft + cfg.absoluteOffset.left\n\n    anchorProps = { top, left, width: 1, height: 1, right: left + 1, center: top, middle: left, bottom: top + 1 }\n  }\n\n  let elStyle: CSSProperties = {\n    maxHeight: cfg.maxHeight,\n    maxWidth: cfg.maxWidth,\n    visibility: 'visible'\n  }\n\n  if (cfg.fit === true || cfg.cover === true) {\n    elStyle.minWidth = anchorProps.width + 'px'\n    if (cfg.cover === true) {\n      elStyle.minHeight = anchorProps.height + 'px'\n    }\n  }\n\n  Object.assign(cfg.el.style, elStyle)\n\n  const targetProps = getTargetProps(cfg.el),\n    props: any = {\n      top: anchorProps[cfg.anchorOrigin.vertical] - targetProps[cfg.selfOrigin.vertical],\n      left: anchorProps[cfg.anchorOrigin.horizontal] - targetProps[cfg.selfOrigin.horizontal]\n    }\n\n  applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)\n\n  elStyle = {\n    top: props.top + 'px',\n    left: props.left + 'px'\n  }\n\n  if (props.maxHeight !== void 0) {\n    elStyle.maxHeight = props.maxHeight + 'px'\n\n    if (anchorProps.height > props.maxHeight) {\n      elStyle.minHeight = elStyle.maxHeight\n    }\n  }\n  if (props.maxWidth !== void 0) {\n    elStyle.maxWidth = props.maxWidth + 'px'\n\n    if (anchorProps.width > props.maxWidth) {\n      elStyle.minWidth = elStyle.maxWidth\n    }\n  }\n\n  Object.assign(cfg.el.style, elStyle)\n\n  // restore scroll position\n  if (cfg.el.scrollTop !== scrollTop) {\n    cfg.el.scrollTop = scrollTop\n  }\n  if (cfg.el.scrollLeft !== scrollLeft) {\n    cfg.el.scrollLeft = scrollLeft\n  }\n}\n\nfunction applyBoundaries(props, anchorProps, targetProps, anchorOrigin, selfOrigin) {\n  const currentHeight = targetProps.bottom,\n    currentWidth = targetProps.right,\n    margin = getScrollbarWidth(),\n    innerHeight = window.innerHeight - margin,\n    innerWidth = document.body.clientWidth\n\n  if (props.top < 0 || props.top + currentHeight > innerHeight) {\n    if (selfOrigin.vertical === 'center') {\n      props.top = anchorProps[anchorOrigin.vertical] > innerHeight / 2 ? Math.max(0, innerHeight - currentHeight) : 0\n      props.maxHeight = Math.min(currentHeight, innerHeight)\n    } else if (anchorProps[anchorOrigin.vertical] > innerHeight / 2) {\n      const anchorY = Math.min(\n        innerHeight,\n        anchorOrigin.vertical === 'center' ? anchorProps.center : anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.bottom : anchorProps.top\n      )\n      props.maxHeight = Math.min(currentHeight, anchorY)\n      props.top = Math.max(0, anchorY - currentHeight)\n    } else {\n      props.top = Math.max(\n        0,\n        anchorOrigin.vertical === 'center' ? anchorProps.center : anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.top : anchorProps.bottom\n      )\n      props.maxHeight = Math.min(currentHeight, innerHeight - props.top)\n    }\n  }\n\n  if (props.left < 0 || props.left + currentWidth > innerWidth) {\n    props.maxWidth = Math.min(currentWidth, innerWidth)\n    if (selfOrigin.horizontal === 'middle') {\n      props.left = anchorProps[anchorOrigin.horizontal] > innerWidth / 2 ? Math.max(0, innerWidth - currentWidth) : 0\n    } else if (anchorProps[anchorOrigin.horizontal] > innerWidth / 2) {\n      const anchorX = Math.min(\n        innerWidth,\n        anchorOrigin.horizontal === 'middle'\n          ? anchorProps.middle\n          : anchorOrigin.horizontal === selfOrigin.horizontal\n          ? anchorProps.right\n          : anchorProps.left\n      )\n      props.maxWidth = Math.min(currentWidth, anchorX)\n      props.left = Math.max(0, anchorX - props.maxWidth)\n    } else {\n      props.left = Math.max(\n        0,\n        anchorOrigin.horizontal === 'middle'\n          ? anchorProps.middle\n          : anchorOrigin.horizontal === selfOrigin.horizontal\n          ? anchorProps.left\n          : anchorProps.right\n      )\n      props.maxWidth = Math.min(currentWidth, innerWidth - props.left)\n    }\n  }\n}\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport { h, defineComponent, ref, computed, watch, onBeforeUnmount, Transition, getCurrentInstance } from 'vue'\n\nimport useAnchor, { useAnchorProps } from '@vue-cesium/composables/private/use-anchor'\nimport useScrollTarget from '@vue-cesium/composables/private/use-scroll-target'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '@vue-cesium/composables/private/use-model-toggle'\nimport usePortal from '@vue-cesium/composables/private/use-portal'\nimport useTransition, { useTransitionProps } from '@vue-cesium/composables/private/use-transition'\nimport useTick from '@vue-cesium/composables/private/use-tick'\nimport useTimeout from '@vue-cesium/composables/private/use-timeout'\n\nimport { getScrollTarget } from '@vue-cesium/utils/private/scroll'\nimport { getTouchTarget } from '@vue-cesium/utils/private/touch'\nimport { addEvt, cleanEvt } from '@vue-cesium/utils/private/event'\nimport { clearSelection } from '@vue-cesium/utils/private/selection'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { validatePosition, validateOffset, setPosition, parsePosition } from '@vue-cesium/utils/private/position-engine'\nimport { platform } from '@vue-cesium/utils/platform'\n\nexport const tooltipProps = {\n  ...useAnchorProps,\n  ...useModelToggleProps,\n  ...useTransitionProps,\n\n  maxHeight: {\n    type: String,\n    default: null\n  },\n  maxWidth: {\n    type: String,\n    default: null\n  },\n\n  transitionShow: {\n    type: String,\n    default: 'jump-down'\n  },\n  transitionHide: {\n    type: String,\n    default: 'jump-up'\n  },\n\n  anchor: {\n    type: String as PropType<\n      | 'top left'\n      | 'top middle'\n      | 'top right'\n      | 'top start'\n      | 'top end'\n      | 'center left'\n      | 'center middle'\n      | 'center right'\n      | 'center start'\n      | 'center end'\n      | 'bottom left'\n      | 'bottom middle'\n      | 'bottom right'\n      | 'bottom start'\n      | 'bottom end'\n    >,\n    default: 'bottom middle',\n    validator: validatePosition\n  },\n  self: {\n    type: String as PropType<\n      | 'top left'\n      | 'top middle'\n      | 'top right'\n      | 'top start'\n      | 'top end'\n      | 'center left'\n      | 'center middle'\n      | 'center right'\n      | 'center start'\n      | 'center end'\n      | 'bottom left'\n      | 'bottom middle'\n      | 'bottom right'\n      | 'bottom start'\n      | 'bottom end'\n    >,\n    default: 'top middle',\n    validator: validatePosition\n  },\n  offset: {\n    type: Array,\n    default: () => [14, 14],\n    validator: validateOffset\n  },\n\n  scrollTarget: String,\n\n  delay: {\n    type: Number,\n    default: 0\n  },\n\n  hideDelay: {\n    type: Number,\n    default: 0\n  },\n\n  persistent: {\n    type: Boolean\n  }\n}\n\nexport default defineComponent({\n  name: 'VcTooltip',\n\n  inheritAttrs: false,\n\n  props: tooltipProps,\n\n  emits: [...useModelToggleEmits],\n\n  setup(props, { slots, emit, attrs }) {\n    let unwatchPosition, observer\n    const vm = getCurrentInstance()\n\n    const innerRef = ref(null)\n    const showing = ref(false)\n\n    const anchorOrigin = computed(() => parsePosition(props.anchor, true))\n    const selfOrigin = computed(() => parsePosition(props.self, true))\n    const hideOnRouteChange = computed(() => props.persistent !== true)\n\n    const { registerTick, removeTick, prepareTick } = useTick()\n    const { registerTimeout, removeTimeout } = useTimeout()\n    const { transition, transitionStyle } = useTransition(props, showing)\n    const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget)\n\n    const { anchorEl, canShow, anchorEvents } = useAnchor({ showing, configureAnchorEl, avoidEmit: undefined })\n\n    const { show, hide } = useModelToggle({\n      showing,\n      canShow,\n      handleShow,\n      handleHide,\n      hideOnRouteChange,\n      processOnMount: true\n    })\n\n    Object.assign(anchorEvents, { delayShow, delayHide })\n\n    const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent)\n\n    function handleShow(evt) {\n      removeTick()\n      removeTimeout()\n\n      showPortal()\n\n      registerTick(() => {\n        observer = new MutationObserver(() => updatePosition())\n        observer.observe(innerRef.value, { attributes: false, childList: true, characterData: true, subtree: true })\n        updatePosition()\n        configureScrollTarget()\n      })\n      prepareTick()\n\n      if (unwatchPosition === void 0) {\n        unwatchPosition = watch(() => props.self + '|' + props.anchor, updatePosition)\n      }\n\n      registerTimeout(() => {\n        // eslint-disable-next-line vue/require-explicit-emits\n        emit('show', evt)\n      }, props.transitionDuration)\n    }\n\n    function handleHide(evt) {\n      removeTick()\n      removeTimeout()\n\n      anchorCleanup()\n\n      registerTimeout(() => {\n        hidePortal()\n        // eslint-disable-next-line vue/require-explicit-emits\n        emit('hide', evt)\n      }, props.transitionDuration)\n    }\n\n    function anchorCleanup() {\n      if (observer !== void 0) {\n        observer.disconnect()\n        observer = void 0\n      }\n\n      if (unwatchPosition !== void 0) {\n        unwatchPosition()\n        unwatchPosition = void 0\n      }\n\n      unconfigureScrollTarget()\n      cleanEvt(anchorEvents, 'tooltipTemp')\n    }\n\n    function updatePosition() {\n      const el = innerRef.value\n\n      if (anchorEl.value === void 0 || !el) {\n        return\n      }\n\n      setPosition({\n        el,\n        offset: props.offset,\n        anchorEl: anchorEl.value,\n        anchorOrigin: anchorOrigin.value,\n        selfOrigin: selfOrigin.value,\n        maxHeight: props.maxHeight,\n        maxWidth: props.maxWidth\n      })\n    }\n\n    function delayShow(evt) {\n      if (platform().isPhone === true) {\n        clearSelection()\n        document.body.classList.add('non-selectable')\n\n        const target = getTouchTarget(anchorEl.value)\n        const evts = ['touchmove', 'touchcancel', 'touchend', 'click'].map(e => [target, e, '__delayHide', 'passiveCapture'])\n\n        addEvt(anchorEvents, 'tooltipTemp', evts)\n      }\n\n      registerTimeout(() => {\n        show(evt)\n      }, props.delay)\n    }\n\n    function delayHide(evt) {\n      removeTimeout()\n\n      if (platform().isPhone === true) {\n        cleanEvt(anchorEvents, 'tooltipTemp')\n        clearSelection()\n        // delay needed otherwise selection still occurs\n        setTimeout(() => {\n          document.body.classList.remove('non-selectable')\n        }, 10)\n      }\n\n      registerTimeout(() => {\n        hide(evt)\n      }, props.hideDelay)\n    }\n\n    function configureAnchorEl() {\n      if (props.noParentEvent === true || anchorEl.value === void 0) {\n        return\n      }\n\n      const evts =\n        platform().isPhone === true\n          ? [[anchorEl.value, 'touchstart', 'delayShow', 'passive']]\n          : [\n              [anchorEl.value, 'mouseenter', 'delayShow', 'passive'],\n              [anchorEl.value, 'mouseleave', 'delayHide', 'passive']\n            ]\n\n      addEvt(anchorEvents, 'anchor', evts)\n    }\n\n    function configureScrollTarget() {\n      if (anchorEl.value !== void 0 || props.scrollTarget !== void 0) {\n        localScrollTarget.value = getScrollTarget(anchorEl.value, props.scrollTarget)\n        const fn = props.noParentEvent === true ? updatePosition : hide\n\n        changeScrollEvent(localScrollTarget.value, fn)\n      }\n    }\n\n    function getTooltipContent() {\n      return showing.value === true\n        ? h(\n            'div',\n            {\n              ...attrs,\n              ref: innerRef,\n              class: ['vc-tooltip vc-tooltip--style vc-position-engine no-pointer-events', attrs.class],\n              style: transitionStyle.value,\n              role: 'complementary'\n            },\n            hSlot(slots.default)\n          )\n        : null\n    }\n\n    function renderPortalContent() {\n      return h(\n        Transition,\n        {\n          name: transition.value,\n          appear: true\n        },\n        getTooltipContent\n      )\n    }\n\n    onBeforeUnmount(anchorCleanup)\n\n    // expose public methods\n    Object.assign(vm?.proxy, { updatePosition })\n\n    return renderPortal\n  }\n})\n\n// export type VcTooltipProps = ExtractPropTypes<typeof tooltipProps>\n\nexport interface VcTooltipProps {\n  /**\n   * One of VueCesium's embedded transitions.\n   * Default value: jump-down\n   */\n  transitionShow?: string | undefined\n  /**\n   * One of VueCesium's embedded transitions.\n   * Default value: jump-up\n   */\n  transitionHide?: string | undefined\n  /**\n   * Transition duration (in milliseconds, without unit).\n   * Default value: 300\n   */\n  transitionDuration?: string | number | undefined\n  /**\n   * Model of the component defining shown/hidden state; Either use this property (along with a listener for 'update:model-value' event) OR use v-model directive.\n   */\n  modelValue?: boolean\n  /**\n   * The maximum height of the Tooltip; Size in CSS units, including unit name.\n   */\n  maxHeight?: string | undefined\n  /**\n   * The maximum width of the Tooltip; Size in CSS units, including unit name.\n   */\n  maxWidth?: string | undefined\n  /**\n   * Two values setting the starting position or anchor point of the Tooltip relative to its target.\n   * Default value: bottom middle\n   */\n  anchor?:\n    | 'top left'\n    | 'top middle'\n    | 'top right'\n    | 'top start'\n    | 'top end'\n    | 'center left'\n    | 'center middle'\n    | 'center right'\n    | 'center start'\n    | 'center end'\n    | 'bottom left'\n    | 'bottom middle'\n    | 'bottom right'\n    | 'bottom start'\n    | 'bottom end'\n    | undefined\n  /**\n   * Two values setting the Tooltip's own position relative to its target.\n   * Default value: top middle\n   */\n  self?:\n    | 'top left'\n    | 'top middle'\n    | 'top right'\n    | 'top start'\n    | 'top end'\n    | 'center left'\n    | 'center middle'\n    | 'center right'\n    | 'center start'\n    | 'center end'\n    | 'bottom left'\n    | 'bottom middle'\n    | 'bottom right'\n    | 'bottom start'\n    | 'bottom end'\n    | undefined\n  /**\n   * An array of two numbers to offset the Tooltip horizontally and vertically in pixels.\n   * Default value: [14, 14]\n   */\n  offset?: any[] | undefined\n  /**\n   * CSS selector or DOM element to be used as a custom scroll container instead of the auto detected one.\n   */\n  scrollTarget?: string | undefined\n  /**\n   * Configure a target element to trigger Tooltip toggle; 'true' means it enables the parent DOM element, 'false' means it disables attaching events to any DOM elements; By using a String (CSS selector) it attaches the events to the specified DOM element (if it exists).\n   * Default value: true\n   */\n  target?: boolean | string | undefined\n  /**\n   * Skips attaching events to the target DOM element (that trigger the element to get shown).\n   */\n  noParentEvent?: boolean | undefined\n  /**\n   * Configure Tooltip to appear with delay.\n   */\n  delay?: number | undefined\n  /**\n   * Configure Tooltip to disappear with delay.\n   */\n  hideDelay?: number | undefined\n  tip?: string | undefined\n  persistent?: boolean\n  contextMenu?: boolean\n  /**\n   * Emitted when showing/hidden state changes; Is also used by v-model.\n   * @param value New state (showing/hidden)\n   */\n  'onUpdate:modelValue'?: (value: boolean) => void\n  /**\n   * Emitted after component has triggered show().\n   * @param evt JS event object\n   */\n  onShow?: (evt: any) => void\n  /**\n   * Emitted when component triggers show() but before it finishes doing it.\n   * @param evt JS event object\n   */\n  onBeforeShow?: (evt: any) => void\n  /**\n   * Emitted after component has triggered hide().\n   * @param evt JS event object\n   */\n  onHide?: (evt: any) => void\n  /**\n   * Emitted when component triggers hide() but before it finishes doing it.\n   * @param evt JS event object\n   */\n  onBeforeHide?: (evt: any) => void\n}\n","const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']\n\nexport function humanStorageSize(bytes) {\n  let u = 0\n\n  while (parseInt(bytes, 10) >= 1024 && u < units.length - 1) {\n    bytes /= 1024\n    ++u\n  }\n\n  return `${bytes.toFixed(1)}${units[u]}`\n}\n\nexport function capitalize(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function between(v, min, max) {\n  return max <= min ? min : Math.min(max, Math.max(min, v))\n}\n\nexport function normalizeToInterval(v, min, max) {\n  if (max <= min) {\n    return min\n  }\n\n  const size = max - min + 1\n\n  let index = min + ((v - min) % size)\n  if (index < min) {\n    index = size + index\n  }\n\n  return index === 0 ? 0 : index // fix for (-a % a) => -0\n}\n\nexport function pad(v, length = 2, char = '0') {\n  if (v === void 0 || v === null) {\n    return v\n  }\n\n  const val = '' + v\n  return val.length >= length ? val : new Array(length - val.length + 1).join(char) + val\n}\n\nexport default {\n  humanStorageSize,\n  capitalize,\n  between,\n  normalizeToInterval,\n  pad\n}\n","import { h, defineComponent, ref, computed, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'\nimport type { CSSProperties, ExtractPropTypes } from 'vue'\n\nimport { between } from '@vue-cesium/utils/private/format'\nimport { AnyFunction } from '@vue-cesium/utils/types'\n\nconst xhr = XMLHttpRequest,\n  send = xhr.prototype.send,\n  open = xhr.prototype.open,\n  positionValues = ['top', 'right', 'bottom', 'left']\n\nlet stack = []\nlet highjackCount = 0\n\nfunction translate({ p, pos, active, horiz, reverse, dir }) {\n  let x = 1,\n    y = 1\n\n  if (horiz === true) {\n    if (reverse === true) {\n      x = -1\n    }\n    if (pos === 'bottom') {\n      y = -1\n    }\n    return { transform: `translate3d(${x * (p - 100)}%,${active ? 0 : y * -200}%,0)` }\n  }\n\n  if (reverse === true) {\n    y = -1\n  }\n  if (pos === 'right') {\n    x = -1\n  }\n  return { transform: `translate3d(${active ? 0 : dir * x * -200}%,${y * (p - 100)}%,0)` }\n}\n\nfunction inc(p, amount) {\n  if (typeof amount !== 'number') {\n    if (p < 25) {\n      amount = Math.random() * 3 + 3\n    } else if (p < 65) {\n      amount = Math.random() * 3\n    } else if (p < 85) {\n      amount = Math.random() * 2\n    } else if (p < 99) {\n      amount = 0.6\n    } else {\n      amount = 0\n    }\n  }\n  return between(p + amount, 0, 100)\n}\n\nfunction highjackAjax(stackEntry) {\n  highjackCount++\n\n  stack.push(stackEntry)\n\n  if (highjackCount > 1) {\n    return\n  }\n\n  xhr.prototype.open = function (_, url) {\n    const stopStack = []\n\n    const loadStart = () => {\n      stack.forEach(entry => {\n        if (entry.hijackFilter.value === null || entry.hijackFilter.value(url) === true) {\n          entry.start()\n          stopStack.push(entry.stop)\n        }\n      })\n    }\n\n    const loadEnd = () => {\n      stopStack.forEach(stop => {\n        stop()\n      })\n    }\n\n    this.addEventListener('loadstart', loadStart, { once: true })\n    this.addEventListener('loadend', loadEnd, { once: true })\n\n    // eslint-disable-next-line prefer-rest-params\n    open.apply(this, arguments as any)\n  }\n}\n\nfunction restoreAjax(start) {\n  stack = stack.filter(entry => entry.start !== start)\n\n  highjackCount = Math.max(0, highjackCount - 1)\n  if (highjackCount === 0) {\n    xhr.prototype.open = open\n  }\n}\n\nexport const ajaxBarProps = {\n  position: {\n    type: String,\n    default: 'top',\n    validator: val => positionValues.includes(val)\n  },\n  size: {\n    type: String,\n    default: '2px'\n  },\n  color: String,\n  skipHijack: Boolean,\n  reverse: Boolean,\n  positioning: {\n    type: String,\n    default: 'absolute',\n    validator: (val: string) => ['absolute', 'fixed'].includes(val)\n  },\n  hijackFilter: Function\n}\n\nexport default defineComponent({\n  name: 'VcAjaxBar',\n\n  props: ajaxBarProps,\n\n  emits: ['start', 'stop'],\n\n  setup(props, { emit }) {\n    const { proxy } = getCurrentInstance()!\n\n    const progress = ref(0)\n    const onScreen = ref(false)\n    const animate = ref(true)\n\n    let sessions = 0,\n      timer,\n      speed\n\n    const classes = computed(\n      () =>\n        `vc-loading-bar vc-loading-bar--${props.position}` +\n        (props.color !== void 0 ? ` bg-${props.color}` : '') +\n        (animate.value === true ? '' : ' no-transition')\n    )\n\n    const horizontal = computed(() => props.position === 'top' || props.position === 'bottom')\n    const sizeProp = computed(() => (horizontal.value === true ? 'height' : 'width'))\n\n    const style = computed(() => {\n      const active = onScreen.value\n\n      const obj: CSSProperties = translate({\n        p: progress.value,\n        pos: props.position,\n        active,\n        horiz: horizontal.value,\n        reverse: props.reverse,\n        dir: 1\n      })\n\n      obj[sizeProp.value] = props.size\n      obj.opacity = active ? 1 : 0\n      obj.position = props.positioning === 'absolute' ? 'absolute' : 'fixed'\n      obj.backgroundColor = props.color\n\n      return obj\n    })\n\n    const attributes = computed(() =>\n      onScreen.value === true\n        ? {\n            role: 'progressbar',\n            'aria-valuemin': 0,\n            'aria-valuemax': 100,\n            'aria-valuenow': progress.value\n          }\n        : { 'aria-hidden': 'true' }\n    )\n\n    function start(newSpeed = 300) {\n      const oldSpeed = speed\n      speed = Math.max(0, newSpeed) || 0\n\n      sessions++\n\n      if (sessions > 1) {\n        if (oldSpeed === 0 && newSpeed > 0) {\n          planNextStep()\n        } else if (oldSpeed > 0 && newSpeed <= 0) {\n          clearTimeout(timer)\n        }\n        return sessions\n      }\n\n      clearTimeout(timer)\n      emit('start')\n\n      progress.value = 0\n\n      timer = setTimeout(\n        () => {\n          animate.value = true\n          newSpeed > 0 && planNextStep()\n        },\n        onScreen.value === true ? 500 : 1\n      )\n\n      if (onScreen.value !== true) {\n        onScreen.value = true\n        animate.value = false\n      }\n\n      return sessions\n    }\n\n    function increment(amount?) {\n      if (sessions > 0) {\n        progress.value = inc(progress.value, amount)\n      }\n\n      return sessions\n    }\n\n    function stop() {\n      sessions = Math.max(0, sessions - 1)\n      if (sessions > 0) {\n        return sessions\n      }\n\n      clearTimeout(timer)\n      emit('stop')\n\n      const end = () => {\n        animate.value = true\n        progress.value = 100\n        timer = setTimeout(() => {\n          onScreen.value = false\n        }, 1000)\n      }\n\n      if (progress.value === 0) {\n        timer = setTimeout(end, 1)\n      } else {\n        end()\n      }\n    }\n\n    function planNextStep() {\n      if (progress.value < 100) {\n        timer = setTimeout(() => {\n          increment()\n          planNextStep()\n        }, speed)\n      }\n    }\n\n    let hijacked\n\n    onMounted(() => {\n      if (props.skipHijack !== true) {\n        hijacked = true\n        highjackAjax({\n          start,\n          stop,\n          hijackFilter: computed(() => props.hijackFilter || null)\n        })\n      }\n    })\n\n    onBeforeUnmount(() => {\n      clearTimeout(timer)\n      hijacked === true && restoreAjax(start)\n    })\n\n    // expose public methods\n    Object.assign(proxy, { start, stop, increment })\n\n    return () =>\n      h('div', {\n        class: classes.value,\n        style: style.value,\n        ...attributes.value\n      })\n  }\n})\n\n// export type VcAjaxBarProps = ExtractPropTypes<typeof ajaxBarProps>\nexport interface VcAjaxBarProps {\n  /**\n   * Position within window of where QAjaxBar should be displayed.\n   * Default value: top\n   */\n  position?: 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * Size in CSS units, including unit name.\n   * Default value: 2px\n   */\n  size?: string\n  /**\n   * Color name for component from the css color.\n   */\n  color?: string\n  /**\n   * Reverse direction of progress.\n   */\n  reverse?: boolean\n  /**\n   * Skip Ajax hijacking (not a reactive prop).\n   */\n  skipHijack?: boolean\n  /**\n   * Specify the positioning of the progress bar.\n   */\n  positioning?: 'absolute' | 'fixed'\n  /**\n   * Filter which URL should trigger start() + stop().\n   * @param url The URL being triggered\n   * @returns Should the URL received as param trigger start() + stop()?\n   */\n  hijackFilter?: ((url: string) => boolean) | undefined\n  /**\n   * Emitted when bar is triggered to appear.\n   */\n  onStart?: () => void\n  /**\n   * Emitted when bar has finished its job.\n   */\n  onStop?: () => void\n}\n","import { computed } from 'vue'\n\nexport const useDarkProps = {\n  dark: {\n    type: Boolean,\n    default: null\n  }\n}\n\nexport default function (props) {\n  // return isDark\n  return computed(() => props.dark)\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-02-11 09:36:28\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\ui\\skeleton\\index.ts\n */\nimport { h, defineComponent, computed } from 'vue'\n\nimport type { PropType, ExtractPropTypes } from 'vue'\n\nimport useDark, { useDarkProps } from '@vue-cesium/composables/private/use-dark'\n\nimport { hSlot } from '@vue-cesium/utils/private/render'\n\nexport const skeletonTypes = [\n  'text',\n  'rect',\n  'circle',\n  'VcBtn',\n  'VcBadge',\n  'VcChip',\n  'VcToolbar',\n  'VcCheckbox',\n  'VcRadio',\n  'VcToggle',\n  'VcSlider',\n  'VcRange',\n  'VcInput',\n  'VcAvatar'\n]\n\nexport const skeletonAnimations = ['wave', 'pulse', 'pulse-x', 'pulse-y', 'fade', 'blink', 'none']\nexport const skeletonProps = {\n  ...useDarkProps,\n\n  tag: {\n    type: String,\n    default: 'div'\n  },\n\n  type: {\n    type: String,\n    validator: (v: string) => skeletonTypes.includes(v),\n    default: 'rect'\n  },\n\n  animation: {\n    type: String as PropType<'wave' | 'pulse' | 'pulse-x' | 'pulse-y' | 'fade' | 'blink' | 'none'>,\n    validator: (v: string) => skeletonAnimations.includes(v),\n    default: 'wave'\n  },\n\n  square: Boolean,\n  bordered: Boolean,\n\n  size: String as PropType<string>,\n  width: String,\n  height: String\n}\nexport default defineComponent({\n  name: 'VcSkeleton',\n\n  props: skeletonProps,\n\n  setup(props, { slots }) {\n    const isDark = useDark(props)\n\n    const style = computed(() => (props.size !== void 0 ? { width: props.size, height: props.size } : { width: props.width, height: props.height }))\n\n    const classes = computed(\n      () =>\n        `vc-skeleton vc-skeleton--${isDark.value === true ? 'dark' : 'light'} vc-skeleton--type-${props.type}` +\n        (props.animation !== 'none' ? ` vc-skeleton--anim vc-skeleton--anim-${props.animation}` : '') +\n        (props.square === true ? ' vc-skeleton--square' : '') +\n        (props.bordered === true ? ' vc-skeleton--bordered' : '')\n    )\n\n    return () =>\n      h(\n        props.tag,\n        {\n          class: classes.value,\n          style: style.value\n        },\n        hSlot(slots.default)\n      )\n  }\n})\n\n// export type VcSkeletonProps = ExtractPropTypes<typeof skeletonProps>\nexport interface VcSkeletonProps {\n  /**\n   * Notify the component that the background is a dark color.\n   */\n  dark?: boolean | undefined\n  /**\n   * Type of skeleton placeholder.\n   * Default value: rect\n   */\n  type?:\n    | 'text'\n    | 'rect'\n    | 'circle'\n    | 'VcBtn'\n    | 'VcBadge'\n    | 'VcChip'\n    | 'VcToolbar'\n    | 'VcCheckbox'\n    | 'VcRadio'\n    | 'VcToggle'\n    | 'VcSlider'\n    | 'VcRange'\n    | 'VcInput'\n    | 'VcAvatar'\n    | undefined\n  /**\n   * The animation effect of the skeleton placeholder.\n   * Default value: wave\n   */\n  animation?: 'wave' | 'pulse' | 'pulse-x' | 'pulse-y' | 'fade' | 'blink' | 'none' | undefined\n  /**\n   * Animation speed (in milliseconds, without unit).\n   * Default value: 300\n   */\n  animationSpeed?: string | number | undefined\n  /**\n   * Removes border-radius so borders are squared.\n   */\n  square?: boolean | undefined\n  /**\n   * Applies a default border to the component.\n   */\n  bordered?: boolean | undefined\n  /**\n   * Size in CSS units, including unit name; Overrides 'height' and 'width' props and applies the value to both height and width.\n   */\n  size?: string | undefined\n  /**\n   * Width in CSS units, including unit name; Apply custom width; Use this prop or through CSS; Overridden by 'size' prop if used.\n   */\n  width?: string | undefined\n  /**\n   * Height in CSS units, including unit name; Apply custom height; Use this prop or through CSS; Overridden by 'size' prop if used.\n   */\n  height?: string | undefined\n  /**\n   * HTML tag to use.\n   * Default value: div\n   */\n  tag?: string | undefined\n  color?: string\n}\n","import { computed } from 'vue'\n\nconst labelPositions = ['top', 'right', 'bottom', 'left']\n\nexport const useFabProps = {\n  type: {\n    type: String,\n    default: 'a'\n  },\n\n  outline: Boolean,\n  push: Boolean,\n  flat: Boolean,\n  unelevated: Boolean,\n\n  color: String,\n  textColor: String,\n  glossy: Boolean,\n\n  square: Boolean,\n  padding: String,\n  size: String,\n\n  label: {\n    type: [String, Number],\n    default: ''\n  },\n  labelPosition: {\n    type: String,\n    default: 'right',\n    validator: v => labelPositions.includes(v)\n  },\n  externalLabel: Boolean,\n  hideLabel: {\n    type: Boolean\n  },\n  labelClass: [Array, String, Object],\n  labelStyle: [Array, String, Object],\n\n  disable: Boolean,\n\n  tabindex: [Number, String]\n}\n\nexport default function (props, showing) {\n  return {\n    formClass: computed(() => `vc-fab--form-${props.square === true ? 'square' : 'rounded'}`),\n\n    stacked: computed(() => props.externalLabel === false && ['top', 'bottom'].includes(props.labelPosition)),\n\n    labelProps: computed(() => {\n      if (props.externalLabel === true) {\n        const hideLabel = props.hideLabel === null ? showing.value === false : props.hideLabel\n\n        return {\n          action: 'push',\n          data: {\n            class: [\n              props.labelClass,\n              'vc-fab__label vc-tooltip--style vc-fab__label--external' +\n                ` vc-fab__label--external-${props.labelPosition}` +\n                (hideLabel === true ? ' vc-fab__label--external-hidden' : '')\n            ],\n            style: props.labelStyle\n          }\n        }\n      }\n\n      return {\n        action: ['left', 'top'].includes(props.labelPosition) ? 'unshift' : 'push',\n        data: {\n          class: [\n            props.labelClass,\n            `vc-fab__label vc-fab__label--internal vc-fab__label--internal-${props.labelPosition}` +\n              (props.hideLabel === true ? ' vc-fab__label--internal-hidden' : '')\n          ],\n          style: props.labelStyle\n        }\n      }\n    })\n  }\n}\n","import { useFabProps } from './use-fab'\nimport { useModelToggleProps } from '@vue-cesium/composables/private/use-model-toggle'\nconst directions = ['up', 'right', 'down', 'left']\nconst alignValues = ['left', 'center', 'right']\n\nconst defaultProps = {\n  ...useFabProps,\n  ...useModelToggleProps,\n\n  icon: String,\n  activeIcon: String,\n  hideActionOnClick: {\n    type: Boolean,\n    default: true\n  },\n  hideIcon: Boolean,\n  hideLabel: {\n    type: Boolean,\n    default: true\n  },\n\n  direction: {\n    type: String,\n    default: 'right',\n    validator: (v: string) => directions.includes(v)\n  },\n\n  persistent: Boolean,\n  stacked: Boolean,\n  verticalActionsAlign: {\n    type: String,\n    default: 'center',\n    validator: v => alignValues.includes(v)\n  }\n}\n\nexport default defaultProps\n","import { h, defineComponent, ref, computed, provide } from 'vue'\nimport type { VNode, ExtractPropTypes } from 'vue'\nimport useModelToggle, { useModelToggleEmits } from '@vue-cesium/composables/private/use-model-toggle'\nimport { hSlot, hMergeSlot } from '@vue-cesium/utils/private/render'\nimport { fabKey } from '@vue-cesium/utils/config'\nimport useFab from './use-fab'\nimport VcBtn from '../btn'\nimport VcIcon from '../icon'\nimport defaultProps from './defaultProps'\n\nexport const fabProps = defaultProps\nexport default defineComponent({\n  name: 'VcFab',\n\n  props: fabProps,\n\n  emits: useModelToggleEmits,\n\n  setup(props, { slots }) {\n    const triggerRef = ref<typeof VcBtn>(null!)\n\n    const showing = ref(props.modelValue === true)\n    const { formClass, labelProps } = useFab(props, showing)\n\n    const hideOnRouteChange = computed(() => props.persistent !== true)\n\n    const { hide, toggle } = useModelToggle({\n      showing,\n      hideOnRouteChange\n    })\n\n    const classes = computed(\n      () =>\n        'vc-fab z-fab row inline justify-center' +\n        ` vc-fab--align-${props.verticalActionsAlign} ${formClass.value}` +\n        (showing.value === true ? ' vc-fab--opened' : '')\n    )\n\n    const actionClass = computed(() => 'vc-fab__actions flex no-wrap inline' + ` vc-fab__actions--${props.direction}`)\n\n    function getTriggerContent() {\n      const child: Array<VNode> = []\n\n      props.hideIcon !== true &&\n        child.push(\n          h('div', { class: 'vc-fab__icon-holder' }, [\n            h(VcIcon, {\n              class: 'vc-fab__icon absolute-full',\n              name: props.icon\n            }),\n\n            h(VcIcon, {\n              class: 'vc-fab__active-icon absolute-full',\n              name: props.activeIcon\n            })\n          ])\n        )\n\n      props.label !== '' && child[labelProps.value.action](h('div', labelProps.value.data, [props.label]))\n\n      return hMergeSlot(slots.tooltip, child)\n    }\n\n    provide(fabKey, {\n      showing,\n\n      onChildClick(evt) {\n        props.hideActionOnClick && hide(evt)\n\n        if (triggerRef.value !== null) {\n          triggerRef.value.$el.focus()\n        }\n      }\n    })\n\n    return () =>\n      h(\n        'div',\n        {\n          class: classes.value\n        },\n        [\n          h(\n            VcBtn,\n            {\n              ref: triggerRef,\n              class: formClass.value,\n              ...props,\n              noWrap: true,\n              stack: props.stacked,\n              align: void 0,\n              icon: void 0,\n              label: void 0,\n              noCaps: true,\n              fab: true,\n              flat: props.flat,\n              size: props.size,\n              'aria-expanded': showing.value === true ? 'true' : 'false',\n              'aria-haspopup': 'true',\n              onClick: toggle\n            },\n            getTriggerContent\n          ),\n\n          h('div', { class: actionClass.value }, hSlot(slots.default))\n        ]\n      )\n  }\n})\n\n// export type VcFabProps = ExtractPropTypes<typeof fabProps>\n\nexport interface VcFabProps {\n  /**\n   * Define the button HTML DOM type.\n   * Default value: a\n   */\n  type?: 'a' | 'submit' | 'button' | 'reset' | undefined\n  /**\n   * Use 'outline' design for Fab button.\n   */\n  outline?: boolean | undefined\n  /**\n   * Use 'push' design for Fab button.\n   */\n  push?: boolean | undefined\n  /**\n   * Use 'flat' design for Fab button.\n   */\n  flat?: boolean | undefined\n  /**\n   * Remove shadow.\n   */\n  unelevated?: boolean | undefined\n  /**\n   * Apply custom padding (vertical [horizontal]); Size in CSS units, including unit name or standard size name (none|xs|sm|md|lg|xl); Also removes the min width and height when set.\n   */\n  padding?: string | undefined\n  /**\n   * Color name for component from the css color palette.\n   */\n  color?: string | undefined\n  /**\n   * Overrides text color (if needed); Color name from the css color palette.\n   */\n  textColor?: string | undefined\n  /**\n   * Apply the glossy effect over the button.\n   */\n  glossy?: boolean | undefined\n  /**\n   * Display label besides the FABs, as external content.\n   */\n  externalLabel?: boolean | undefined\n  /**\n   * The label that will be shown when Fab is extended.\n   */\n  label?: string | number | undefined\n  /**\n   * Position of the label around the icon.\n   */\n  labelPosition?: 'top' | 'right' | 'bottom' | 'left' | undefined\n  /**\n   * Hide the label; Useful for animation purposes where you toggle the visibility of the label.\n   */\n  hideLabel?: boolean | undefined\n  /**\n   * Class definitions to be attributed to the label container.\n   */\n  labelClass?: any[] | string | any | undefined\n  /**\n   * Style definitions to be attributed to the label container.\n   */\n  labelStyle?: any[] | string | any | undefined\n  /**\n   * Apply a rectangle aspect to the FAB.\n   */\n  square?: boolean | undefined\n  /**\n   * Put component in disabled mode.\n   */\n  disable?: boolean | undefined\n  /**\n   * Tabindex HTML attribute value.\n   */\n  tabindex?: number | string | undefined\n  /**\n   * Controls state of fab actions (showing/hidden); Works best with v-model directive, otherwise use along listening to 'update:modelValue' event.\n   */\n  modelValue?: boolean\n  /**\n   * Icon name following VueCesium convention; Make sure you have the icon library installed unless you are using 'img:' prefix.\n   */\n  icon?: string | undefined\n  /**\n   * Icon name following VueCesium convention; Make sure you have the icon library installed unless you are using 'img:' prefix.\n   */\n  activeIcon?: string | undefined\n  /**\n   * Hide the icon (don't use any).\n   */\n  hideIcon?: boolean | undefined\n  /**\n   * Direction to expand Fab Actions to.\n   * Default value: right\n   */\n  direction?: 'up' | 'right' | 'down' | 'left' | undefined\n  /**\n   * The side of the Fab where Fab Actions will expand (only when direction is 'up' or 'down').\n   * Default value: center\n   */\n  verticalActionsAlign?: 'left' | 'center' | 'right' | undefined\n  /**\n   * By default, Fab Actions are hidden when user navigates to another route and this prop disables this behavior.\n   */\n  persistent?: boolean | undefined\n  /**\n   * Emitted when fab actions are shown/hidden; Captured by v-model directive.\n   * @param value New state (showing/hidden)\n   */\n  'onUpdate:modelValue'?: (value: boolean) => void\n  /**\n   * Emitted after component has triggered show().\n   * @param evt JS event object\n   */\n  onShow?: (evt: any) => void\n  /**\n   * Emitted when component triggers show() but before it finishes doing it.\n   * @param evt JS event object\n   */\n  onBeforeShow?: (evt: any) => void\n  /**\n   * Emitted after component has triggered hide().\n   * @param evt JS event object\n   */\n  onHide?: (evt: any) => void\n  /**\n   * Emitted when component triggers hide() but before it finishes doing it.\n   * @param evt JS event object\n   */\n  onBeforeHide?: (evt: any) => void\n}\n","import { useFabProps } from './use-fab'\nconst anchorMap = {\n  start: 'self-end',\n  center: 'self-center',\n  end: 'self-start'\n}\nconst anchorValues = Object.keys(anchorMap)\n\nconst defaultProps = {\n  ...useFabProps,\n\n  icon: {\n    type: String,\n    default: ''\n  },\n  stacked: Boolean,\n  anchor: {\n    type: String,\n    validator: v => anchorValues.includes(v)\n  },\n\n  to: [String, Object],\n  replace: Boolean\n}\n\nexport default defaultProps\nexport { anchorMap }\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-22 09:39:46\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\ui\\fab\\fab-action.ts\n */\nimport { h, defineComponent, computed, inject, getCurrentInstance } from 'vue'\nimport type { VNode, ExtractPropTypes } from 'vue'\nimport { fabKey } from '@vue-cesium/utils/config'\nimport { hMergeSlot } from '@vue-cesium/utils/private/render'\n\nimport VcBtn from '../btn'\nimport VcIcon from '../icon'\nimport useFab from './use-fab'\nimport defaultPropsAction, { anchorMap } from './defaultPropsAction'\n\ninterface FabData {\n  showing?: {\n    value: boolean\n  }\n  onChildClick?(...args: any[]): any\n}\n\nexport const fabActionProps = defaultPropsAction\nexport default defineComponent({\n  name: 'VcFabAction',\n\n  props: fabActionProps,\n\n  emits: ['click'],\n\n  setup(props, { slots, emit }) {\n    const $fab = inject<FabData>(fabKey)\n\n    const { formClass, labelProps } = useFab(props, $fab?.showing)\n\n    const classes = computed(() => {\n      let align = undefined\n      if (props.anchor) {\n        align = anchorMap[props.anchor]\n      }\n      return formClass.value + (align !== void 0 ? ` ${align}` : '')\n    })\n\n    const isDisabled = computed(() => props.disable === true || $fab?.showing?.value !== true)\n\n    function click(e) {\n      $fab?.onChildClick?.(e)\n      emit('click', e)\n    }\n\n    function getContent() {\n      const child: Array<VNode> = []\n\n      props.icon !== '' && child.push(h(VcIcon, { name: props.icon }))\n\n      props.label !== '' && child[labelProps.value.action](h('div', labelProps.value.data, [props.label]))\n\n      return hMergeSlot(slots.default, child)\n    }\n\n    // expose public methods\n    const vm = getCurrentInstance()\n    Object.assign(vm?.proxy, { click })\n\n    return () =>\n      h(\n        VcBtn,\n        {\n          class: classes.value,\n          ...props,\n          noWrap: true,\n          stack: props.stacked,\n          icon: void 0,\n          label: void 0,\n          noCaps: true,\n          fabMini: true,\n          disable: isDisabled.value,\n          size: props.size,\n          onClick: click\n        },\n        getContent\n      )\n  }\n})\n\n// export type VcFabActionProps = ExtractPropTypes<typeof fabActionProps>\n\nexport interface VcFabActionProps {\n  /**\n   * Define the button HTML DOM type.\n   * Default value: a\n   */\n  type?: 'a' | 'submit' | 'button' | 'reset' | undefined\n  /**\n   * Use 'outline' design for Fab button.\n   */\n  outline?: boolean | undefined\n  /**\n   * Use 'push' design for Fab button.\n   */\n  push?: boolean | undefined\n  /**\n   * Use 'flat' design for Fab button.\n   */\n  flat?: boolean | undefined\n  /**\n   * Remove shadow\n   */\n  unelevated?: boolean | undefined\n  /**\n   * Apply custom padding (vertical [horizontal]); Size in CSS units, including unit name or standard size name (none|xs|sm|md|lg|xl); Also removes the min width and height when set.\n   */\n  padding?: string | undefined\n  /**\n   * Color name for component from the css color palette.\n   */\n  color?: string | undefined\n  /**\n   * Overrides text color (if needed); Color name from the css color palette.\n   */\n  textColor?: string | undefined\n  /**\n   * Apply the glossy effect over the button.\n   */\n  glossy?: boolean | undefined\n  /**\n   * Display label besides the FABs, as external content.\n   */\n  externalLabel?: boolean | undefined\n  /**\n   * The label that will be shown when Fab is extended.\n   */\n  label?: string | number | undefined\n  /**\n   * Position of the label around the icon.\n   */\n  labelPosition?: 'top' | 'right' | 'bottom' | 'left' | undefined\n  /**\n   * Hide the label; Useful for animation purposes where you toggle the visibility of the label.\n   */\n  hideLabel?: boolean | undefined\n  /**\n   * Class definitions to be attributed to the label container.\n   */\n  labelClass?: any[] | string | any | undefined\n  /**\n   * Style definitions to be attributed to the label container.\n   */\n  labelStyle?: any[] | string | any | undefined\n  /**\n   * Apply a rectangle aspect to the FAB.\n   */\n  square?: boolean | undefined\n  /**\n   * Put component in disabled mode.\n   */\n  disable?: boolean | undefined\n  /**\n   * Tabindex HTML attribute value.\n   */\n  tabindex?: number | string | undefined\n  /**\n   * Icon name following VueCesium convention; Make sure you have the icon library installed unless you are using 'img:' prefix.\n   */\n  icon?: string | undefined\n  /**\n   * How to align the Fab Action relative to Fab expand side; By default it uses the align specified in QFab.\n   */\n  anchor?: 'start' | 'center' | 'end' | undefined\n  /**\n   * Equivalent to Vue Router <router-link> 'to' property.\n   */\n  to?: string | any | undefined\n  /**\n   * Equivalent to Vue Router <router-link> 'replace' property.\n   */\n  replace?: boolean | undefined\n  /**\n   * Emitted when user clicks/taps on the component.\n   * @param evt JS event object\n   */\n  onClick?: (evt: any) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-18 14:55:36\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\ui\\index.ts\n */\nimport { App } from 'vue'\nimport Btn from './btn'\nimport Icon from './icon'\nimport {\n  SpinnerBall,\n  SpinnerBars,\n  SpinnerDots,\n  SpinnerGears,\n  SpinnerHourglass,\n  SpinnerIos,\n  SpinnerOrbit,\n  SpinnerOval,\n  SpinnerPuff,\n  SpinnerRings,\n  SpinnerTail,\n  Spinner\n} from './spinner'\nimport Tooltip from './tooltip'\nimport AjaxBar from './ajax-bar'\nimport Skeleton from './skeleton'\nimport Fab from './fab/fab'\nimport FabAction from './fab/fab-action'\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\n\nconst components = [\n  Btn,\n  Icon,\n  SpinnerBall,\n  SpinnerBars,\n  SpinnerDots,\n  SpinnerGears,\n  SpinnerHourglass,\n  SpinnerIos,\n  SpinnerOrbit,\n  SpinnerOval,\n  SpinnerPuff,\n  SpinnerRings,\n  SpinnerTail,\n  Spinner,\n  Tooltip,\n  AjaxBar,\n  Skeleton,\n  Fab,\n  FabAction\n]\n\nconst install = (app: App): void => {\n  components.forEach(cmp => {\n    app.component(cmp.name, cmp)\n  })\n}\n\nexport default {\n  install\n}\n\ncomponents.forEach(cmp => {\n  cmp['install'] = (app: App): void => {\n    app.component(cmp.name, cmp)\n  }\n})\n\nexport const VcBtn = Btn as SFCWithInstall<typeof Btn>\nexport const VcIcon = Icon as SFCWithInstall<typeof Icon>\nexport const VcSpinnerBall = SpinnerBall as SFCWithInstall<typeof SpinnerBall>\nexport const VcSpinnerBars = SpinnerBars as SFCWithInstall<typeof SpinnerBars>\nexport const VcSpinnerDots = SpinnerDots as SFCWithInstall<typeof SpinnerDots>\nexport const VcSpinnerGears = SpinnerGears as SFCWithInstall<typeof SpinnerGears>\nexport const VcSpinnerHourglass = SpinnerHourglass as SFCWithInstall<typeof SpinnerHourglass>\nexport const VcSpinnerIos = SpinnerIos as SFCWithInstall<typeof SpinnerIos>\nexport const VcSpinnerOrbit = SpinnerOrbit as SFCWithInstall<typeof SpinnerOrbit>\nexport const VcSpinnerOval = SpinnerOval as SFCWithInstall<typeof SpinnerOval>\nexport const VcSpinnerPuff = SpinnerPuff as SFCWithInstall<typeof SpinnerPuff>\nexport const VcSpinnerRings = SpinnerRings as SFCWithInstall<typeof SpinnerRings>\nexport const VcSpinnerTail = SpinnerTail as SFCWithInstall<typeof SpinnerTail>\nexport const VcSpinner = Spinner as SFCWithInstall<typeof Spinner>\nexport const VcTooltip = Tooltip as SFCWithInstall<typeof Tooltip>\nexport const VcAjaxBar = AjaxBar as SFCWithInstall<typeof AjaxBar>\nexport const VcSkeleton = Skeleton as SFCWithInstall<typeof Skeleton>\nexport const VcFab = Fab as SFCWithInstall<typeof Fab>\nexport const VcFabAction = FabAction as SFCWithInstall<typeof FabAction>\n\nexport * from './ajax-bar'\nexport * from './btn'\nexport * from './fab/fab'\nexport * from './fab/fab-action'\nexport * from './icon'\nexport * from './skeleton'\nexport * from './tooltip'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-12 14:34:05\n * @LastEditTime: 2022-02-13 23:22:22\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\emits.ts\n */\nimport { VcDrawingActiveEvt, VcDrawingDrawEvt, VcDrawingEditorEvt, VcDrawingMouseEvt } from './drawing-types'\nimport type {\n  VcPickEvent,\n  VcReadyObject,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcImageryProvider,\n  VcPrimitive,\n  VcTerrainProvider,\n  VcDatasource\n} from './types'\nexport const commonEmits = {\n  beforeLoad: (instance: VcComponentInternalInstance) => true,\n  ready: (readyObj: VcReadyObject) => readyObj.viewer instanceof Cesium.Viewer,\n  destroyed: (instance: VcComponentInternalInstance) => true\n}\n\nexport const pickEventEmits = {\n  mousedown: (evt: VcPickEvent) => true,\n  mouseup: (evt: VcPickEvent) => true,\n  click: (evt: VcPickEvent) => true,\n  clickout: (evt: VcPickEvent) => true,\n  dblclick: (evt: VcPickEvent) => true,\n  mousemove: (evt: VcPickEvent) => true,\n  mouseover: (evt: VcPickEvent) => true,\n  mouseout: (evt: VcPickEvent) => true\n}\n\nexport const graphicsEmits = {\n  ...commonEmits,\n  definitionChanged: (property: Cesium.Property) => true\n}\n\nexport const providerEmits = {\n  ...commonEmits,\n  errorEvent: (evt: Cesium.TileProviderError) => true,\n  readyPromise: (provider: VcTerrainProvider | VcImageryProvider, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => true\n}\n\nexport const primitiveEmits = {\n  ...commonEmits,\n  ...pickEventEmits,\n  readyPromise: (primitive: VcPrimitive, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => true,\n  'update:geometryInstances': (instances: Array<Cesium.GeometryInstance>) => true\n}\n\nexport const primitiveCollectionEmits = {\n  ...commonEmits,\n  ...pickEventEmits\n}\n\nexport const datasourceEmits = {\n  ...commonEmits,\n  definitionChanged: (property: Cesium.Property) => true,\n  clusterEvent: (entities: Array<Cesium.Entity>, cluster: { billboard: Cesium.Billboard; label: Cesium.Label; point: Cesium.PointPrimitive }) => true,\n  collectionChanged: (\n    collection: Cesium.EntityCollection,\n    addedArray: Array<Cesium.Entity>,\n    removedArray: Array<Cesium.Entity>,\n    changedArray: Array<Cesium.Entity>\n  ) => true,\n  changedEvent: (datasource: VcDatasource) => true,\n  errorEvent: (datasource: VcDatasource, error: any) => true,\n  loadingEvent: (datasource: VcDatasource, isLoading: boolean) => true,\n  refreshEvent: (datasource: Cesium.KmlDataSource, url: string) => true,\n  unsupportedNodeEvent: (\n    datasource: Cesium.KmlDataSource,\n    parentEntity: any,\n    node: any,\n    entityCollection: any,\n    styleCollection: any,\n    sourceResource: any,\n    uriResolver: any\n  ) => true\n}\n\nexport const drawingEmit = {\n  ...commonEmits,\n  activeEvt: (evt: VcDrawingActiveEvt, viewer: Cesium.Viewer) => true,\n  drawEvt: (evt: VcDrawingDrawEvt, viewer: Cesium.Viewer) => true,\n  editorEvt: (evt: VcDrawingEditorEvt, viewer: Cesium.Viewer) => true,\n  mouseEvt: (evt: VcDrawingMouseEvt, viewer: Cesium.Viewer) => true\n}\n\nexport type CommonEmits = typeof commonEmits\nexport type PickEventEmits = typeof pickEventEmits\nexport type ProviderEmits = typeof providerEmits\nexport type PrimitiveEmits = typeof primitiveEmits\nexport type PrimitiveCollectionEmits = typeof primitiveCollectionEmits\nexport type DatasourceEmits = typeof primitiveCollectionEmits\nexport type DrawingEmit = typeof drawingEmit\nexport type GraphicsEmits = typeof graphicsEmits\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-15 09:09:35\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\viewer\\src\\index.ts\n */\nimport { defineComponent, provide, getCurrentInstance, h, createCommentVNode } from 'vue'\nimport type { VNode } from 'vue'\nimport useViewer, { viewerProps } from './useViewer'\nimport type { VcViewerProps } from './useViewer'\nimport type { VcComponentInternalInstance, VcDatasource, VcTerrainProvider, ViewerWidgetResizedEvent } from '@vue-cesium/utils/types'\nimport { vcKey } from '@vue-cesium/utils/config'\nimport { viewerEvents } from './events'\nimport { VcSkeleton } from '@vue-cesium/components/ui'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { isPlainObject, kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  cesiumReady: (payload: typeof Cesium) => true,\n  viewerWidgetResized: (payload: ViewerWidgetResizedEvent) => true,\n  selectedEntityChanged: (entity: Cesium.Entity) => true,\n  trackedEntityChanged: (entity: Cesium.Entity) => true,\n  layerAdded: (imageryLayer: Cesium.ImageryLayer, index: number) => true,\n  layerMoved: (imageryLayer: Cesium.ImageryLayer, newIndex: number, oldIndex: number) => true,\n  layerRemoved: (imageryLayer: Cesium.ImageryLayer, index: number) => true,\n  layerShownOrHidden: (imageryLayer: Cesium.ImageryLayer, index: number, show: boolean) => true,\n  dataSourceAdded: (collection: Cesium.DataSourceCollection, dataSource: VcDatasource) => true,\n  dataSourceMoved: (dataSource: VcDatasource, newIndex: number, oldIndex: number) => true,\n  dataSourceRemoved: (collection: Cesium.DataSourceCollection, dataSource: VcDatasource) => true,\n  collectionChanged: (\n    collection: Cesium.EntityCollection,\n    addedArray: Array<Cesium.Entity>,\n    removedArray: Array<Cesium.Entity>,\n    changedArray: Array<Cesium.Entity>\n  ) => true,\n  morphComplete: (transitioner: any, preceneModeMode: Cesium.SceneMode, sceneMode: Cesium.SceneMode, wasMorphing: boolean) => true,\n  morphStart: (transitioner: any, preceneModeMode: Cesium.SceneMode, sceneMode: Cesium.SceneMode, wasMorphing: boolean) => true,\n  postRender: (scene: Cesium.Scene, time: Cesium.JulianDate) => true,\n  preRender: (scene: Cesium.Scene, time: Cesium.JulianDate) => true,\n  postUpdate: (scene: Cesium.Scene, time: Cesium.JulianDate) => true,\n  preUpdate: (scene: Cesium.Scene, time: Cesium.JulianDate) => true,\n  renderError: (scene: Cesium.Scene, error: any) => true,\n  terrainProviderChanged: (provider: VcTerrainProvider) => true,\n  changed: (percent: number) => true,\n  moveEnd: () => true,\n  moveStart: () => true,\n  onStop: (clock: Cesium.Clock) => true,\n  onTick: (clock: Cesium.Clock) => true,\n  errorEvent: (tileProviderError: any) => true,\n  cameraClicked: (viewModel: Cesium.InfoBoxViewModel) => true,\n  closeClicked: (viewModel: Cesium.InfoBoxViewModel) => true,\n  leftClick: (mouseClickEvent: { position: Cesium.Cartesian2 }) => true,\n  leftDoubleClick: (mouseClickEvent: { position: Cesium.Cartesian2 }) => true,\n  leftDown: (mouseClickEvent: { position: Cesium.Cartesian2 }) => true,\n  leftUp: (mouseClickEvent: { position: Cesium.Cartesian2 }) => true,\n  middleClick: (mouseClickEvent: { position: Cesium.Cartesian2 }) => true,\n  middleDown: (mouseClickEvent: { position: Cesium.Cartesian2 }) => true,\n  middleUp: (mouseClickEvent: { position: Cesium.Cartesian2 }) => true,\n  mouseMove: (mouseClickEvent: { startPosition: Cesium.Cartesian2; endPosition: Cesium.Cartesian2 }) => true,\n  pinchStart: (touch2StartEvent: { position1: Cesium.Cartesian2; position2: Cesium.Cartesian2 }) => true,\n  pinchMove: (touchPinchMovementEvent: {\n    distance: {\n      startPosition: Cesium.Cartesian2\n      endPosition: Cesium.Cartesian2\n    }\n    angleAndHeight: {\n      startPosition: Cesium.Cartesian2\n      endPosition: Cesium.Cartesian2\n    }\n  }) => true,\n  pinchEnd: () => true,\n  rightClick: (mouseClickEvent: { position: Cesium.Cartesian2 }) => true,\n  rightDown: (mouseClickEvent: { position: Cesium.Cartesian2 }) => true,\n  rightUp: (mouseClickEvent: { position: Cesium.Cartesian2 }) => true,\n  wheel: (delta: number) => true,\n  imageryLayersUpdatedEvent: () => true,\n  tileLoadProgressEvent: (length: number) => true\n}\nexport default defineComponent({\n  name: 'VcViewer',\n  props: viewerProps,\n  emits: emits,\n  setup(props: VcViewerProps, ctx) {\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumEvents = ['selectedEntityChanged', 'trackedEntityChanged']\n    instance.cesiumMembersEvents = viewerEvents\n    const viewerStates = useViewer(props, ctx, instance)\n\n    // provide\n    provide(vcKey, viewerStates.getServices())\n    instance.appContext.config.globalProperties.$VueCesium = viewerStates.getServices()\n    // expose public methods\n    Object.assign(instance.proxy, {\n      createPromise: viewerStates.createPromise,\n      load: viewerStates.load,\n      unload: viewerStates.unload,\n      reload: viewerStates.reload,\n      cesiumObject: instance.cesiumObject,\n      getCesiumObject: () => instance.cesiumObject\n    })\n\n    return () => {\n      const children: Array<VNode> = []\n      if (isPlainObject(props.skeleton) && !viewerStates.isReady.value) {\n        children.push(\n          h(VcSkeleton, {\n            ...props.skeleton,\n            style: { background: props.skeleton.color, width: '100%', height: '100%' }\n          })\n        )\n      } else {\n        children.push(createCommentVNode('v-if'))\n      }\n      children.push(\n        createCommentVNode('vc-viewer'),\n        h(\n          'div',\n          {\n            ref: viewerStates.viewerRef,\n            class: kebabCase(instance.proxy?.$options.name || ''),\n            id: ctx.attrs.id || 'cesiumContainer',\n            style: ctx.attrs.style || { width: '100%', height: '100%' }\n          },\n          hSlot(ctx.slots.default)\n        )\n      )\n      return children\n    }\n  }\n})\n\nexport type VcViewerEmits = typeof emits\nexport * from './useViewer'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-10 10:25:17\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\viewer\\index.ts\n */\nimport { App } from 'vue'\nimport { ConfigProviderContext } from '@vue-cesium/utils/config'\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\nimport Viewer from './src'\n\nViewer.install = (app: App, opts: ConfigProviderContext): void => {\n  app.component(Viewer.name, Viewer)\n}\n\nconst _Viewer = Viewer as SFCWithInstall<typeof Viewer>\n\nexport default _Viewer\nexport const VcViewer = _Viewer\n\nexport * from './src'\n","import { computed, CSSProperties, PropType, ref } from 'vue'\nimport { hasOwn, isArray, isPlainObject } from '@vue-cesium/utils/util'\nimport { VcViewerProvider, AnyObject } from '@vue-cesium/utils/types'\n\nexport const positionProps = {\n  position: {\n    type: String as PropType<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'>,\n    default: 'top-right',\n    validator: (v: string) => ['top-right', 'top-left', 'bottom-right', 'bottom-left', 'top', 'right', 'bottom', 'left'].includes(v)\n  },\n  offset: {\n    type: Array as PropType<number[]>,\n    validator: v => v.length === 2\n  }\n}\n\nexport default function (props, $services: VcViewerProvider) {\n  const attach = computed(() => {\n    const pos = props.position\n\n    return {\n      top: pos.indexOf('top') > -1,\n      right: pos.indexOf('right') > -1,\n      bottom: pos.indexOf('bottom') > -1,\n      left: pos.indexOf('left') > -1,\n      vertical: pos === 'top' || pos === 'bottom',\n      horizontal: pos === 'left' || pos === 'right'\n    }\n  })\n\n  // Todo 自动调整位置\n  // const { layout } = $services\n  // const top = computed(() => {\n  //   let value = 0\n  //   if (layout.toolbarContainerRC) {\n  //     value += layout.toolbarContainerRC.height\n  //   }\n  //   return value\n  // })\n\n  // const bottom = computed(() => {\n  //   let value = 0\n  //   if (layout.bottomContainerRC) {\n  //     value += layout.bottomContainerRC.height\n  //   }\n  //   if (layout.timelineContainerRC) {\n  //     value += layout.timelineContainerRC.height\n  //   }\n  //   return value\n  // })\n\n  const top = ref(0)\n  const right = ref(0)\n  const left = ref(0)\n  const bottom = ref(0)\n\n  const style = computed(() => {\n    let posX: number | string = 0\n    let posY: number | string = 0\n\n    const side = attach.value\n    const dir = 1\n\n    if (side.top === true && top.value !== 0) {\n      posY = `${top.value}px`\n    } else if (side.bottom === true && bottom.value !== 0) {\n      posY = `${-bottom.value}px`\n    }\n\n    if (side.left === true && left.value !== 0) {\n      posX = `${dir * left.value}px`\n    } else if (side.right === true && right.value !== 0) {\n      posX = `${-dir * right.value}px`\n    }\n\n    const css: CSSProperties = {\n      transform: `translate(${posX}, ${posY})`\n    }\n\n    if (props.offset) {\n      css.margin = `${props.offset[1]}px ${props.offset[0]}px`\n    }\n\n    if (side.vertical === true) {\n      if (left.value !== 0) {\n        css['right'] = `${left.value}px`\n      }\n      if (right.value !== 0) {\n        css['left'] = `${right.value}px`\n      }\n    } else if (side.horizontal === true) {\n      if (top.value !== 0) {\n        css.top = `${top.value}px`\n      }\n      if (bottom.value !== 0) {\n        css.bottom = `${bottom.value}px`\n      }\n    }\n\n    return css\n  })\n\n  const classes = computed(() => `absolute absolute-${props.position}`)\n\n  return {\n    attach,\n    style,\n    classes\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-01-21 22:52:44\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\compass\\defaultProps.ts\n */\nimport { positionProps } from '@vue-cesium/composables/private/use-position'\nimport type { VcBtnTooltipProps } from '@vue-cesium/utils/types'\nimport { getDefaultOptionByProps } from '@vue-cesium/utils/util'\nimport type { PropType } from 'vue'\n\nconst defaultProps = {\n  enableCompassOuterRing: {\n    type: Boolean,\n    default: true\n  },\n  duration: {\n    type: Number,\n    default: 1.5\n  },\n  ...positionProps,\n  outerOptions: {\n    type: Object as PropType<VcBtnTooltipProps>,\n    default: () =>\n      ({\n        icon: 'vc-icons-compass-outer',\n        size: '96px',\n        color: '#3f4854',\n        background: 'transparent',\n        tooltip: {\n          delay: 1000,\n          anchor: 'bottom middle',\n          offset: [0, 20],\n          tip: void 0\n        }\n      } as VcBtnTooltipProps)\n  },\n  innerOptions: {\n    type: Object as PropType<VcBtnTooltipProps>,\n    default: () =>\n      ({\n        icon: 'vc-icons-compass-inner',\n        size: '24px',\n        color: '#3f4854',\n        background: '#fff',\n        tooltip: {\n          delay: 1000,\n          anchor: 'bottom middle',\n          offset: [0, 20],\n          tip: void 0\n        }\n      } as VcBtnTooltipProps)\n  },\n  markerOptions: {\n    type: Object as PropType<VcBtnTooltipProps>,\n    default: () =>\n      ({\n        icon: 'vc-icons-compass-rotation-marker',\n        size: '96px',\n        color: '#1976D2'\n      } as VcBtnTooltipProps)\n  }\n}\nconst defaultOptions = getDefaultOptionByProps<typeof defaultProps>(defaultProps)\nexport { defaultProps, defaultOptions }\n","import { AnyFunction } from '@vue-cesium/utils/types'\n/**\n * Creates tweens for camera flights.\n * <br /><br />\n * Mouse interaction is disabled during flights.\n *\n * @private\n */\nclass CameraFlightPath {\n  static createTween(scene, options) {\n    const { Cartesian2, Cartesian3, defaultValue, defined, DeveloperError, EasingFunction, Math: CesiumMath, SceneMode } = Cesium\n    options = defaultValue(options, {})\n    let destination = options.destination\n\n    // >>includeStart('debug', pragmas.debug);\n    if (!defined(scene)) {\n      throw new DeveloperError('scene is required.')\n    }\n    if (!defined(destination)) {\n      throw new DeveloperError('destination is required.')\n    }\n    // >>includeEnd('debug');\n    const mode = scene.mode\n\n    if (mode === SceneMode.MORPHING) {\n      return emptyFlight()\n    }\n\n    const convert = defaultValue(options.convert, true)\n    const projection = scene.mapProjection\n    const ellipsoid = projection.ellipsoid\n    const maximumHeight = options.maximumHeight\n    const flyOverLongitude = options.flyOverLongitude\n    const flyOverLongitudeWeight = options.flyOverLongitudeWeight\n    const pitchAdjustHeight = options.pitchAdjustHeight\n    let easingFunction = options.easingFunction\n\n    if (convert && mode !== SceneMode.SCENE3D) {\n      ellipsoid.cartesianToCartographic(destination, scratchCartographic)\n      destination = projection.project(scratchCartographic, scratchDestination)\n    }\n\n    const camera = scene.camera\n    const transform = options.endTransform\n    if (defined(transform)) {\n      camera._setTransform(transform)\n    }\n\n    let duration = options.duration\n    if (!defined(duration)) {\n      duration = Math.ceil(Cartesian3.distance(camera.position, destination) / 1000000.0) + 2.0\n      duration = Math.min(duration, 3.0)\n    }\n\n    const heading = defaultValue(options.heading, 0.0)\n    const pitch = defaultValue(options.pitch, -CesiumMath.PI_OVER_TWO)\n    const roll = defaultValue(options.roll, 0.0)\n\n    const controller = scene.screenSpaceCameraController\n    controller.enableInputs = false\n\n    const complete = wrapCallback(controller, options.complete)\n    const cancel = wrapCallback(controller, options.cancel)\n\n    const frustum = camera.frustum\n\n    let empty = scene.mode === SceneMode.SCENE2D\n    empty = empty && Cartesian2.equalsEpsilon(camera.position, destination, CesiumMath.EPSILON6)\n    empty =\n      empty && CesiumMath.equalsEpsilon(Math.max(frustum.right - frustum.left, frustum.top - frustum.bottom), destination.z, CesiumMath.EPSILON6)\n\n    empty = empty || (scene.mode !== SceneMode.SCENE2D && Cartesian3.equalsEpsilon(destination, camera.position, CesiumMath.EPSILON10))\n\n    empty =\n      empty &&\n      CesiumMath.equalsEpsilon(CesiumMath.negativePiToPi(heading), CesiumMath.negativePiToPi(camera.heading), CesiumMath.EPSILON10) &&\n      CesiumMath.equalsEpsilon(CesiumMath.negativePiToPi(pitch), CesiumMath.negativePiToPi(camera.pitch), CesiumMath.EPSILON10) &&\n      CesiumMath.equalsEpsilon(CesiumMath.negativePiToPi(roll), CesiumMath.negativePiToPi(camera.roll), CesiumMath.EPSILON10)\n\n    if (empty) {\n      return emptyFlight(complete, cancel)\n    }\n\n    const updateFunctions = new Array(4)\n    updateFunctions[SceneMode.SCENE2D] = createUpdate2D\n    updateFunctions[SceneMode.SCENE3D] = createUpdate3D\n    updateFunctions[SceneMode.COLUMBUS_VIEW] = createUpdateCV\n\n    if (duration <= 0.0) {\n      const newOnComplete = function () {\n        const update = updateFunctions[mode](\n          scene,\n          1.0,\n          destination,\n          heading,\n          pitch,\n          roll,\n          maximumHeight,\n          flyOverLongitude,\n          flyOverLongitudeWeight,\n          pitchAdjustHeight\n        )\n        update({ time: 1.0 })\n\n        if (typeof complete === 'function') {\n          complete()\n        }\n      }\n      return emptyFlight(newOnComplete, cancel)\n    }\n\n    const update = updateFunctions[mode](\n      scene,\n      duration,\n      destination,\n      heading,\n      pitch,\n      roll,\n      maximumHeight,\n      flyOverLongitude,\n      flyOverLongitudeWeight,\n      pitchAdjustHeight\n    )\n\n    if (!defined(easingFunction)) {\n      const startHeight = camera.positionCartographic.height\n      const endHeight = mode === SceneMode.SCENE3D ? ellipsoid.cartesianToCartographic(destination).height : destination.z\n\n      if (startHeight > endHeight && startHeight > 11500.0) {\n        easingFunction = EasingFunction.CUBIC_OUT\n      } else {\n        easingFunction = EasingFunction.QUINTIC_IN_OUT\n      }\n    }\n\n    return {\n      duration: duration,\n      easingFunction: easingFunction,\n      startObject: {\n        time: 0.0\n      },\n      stopObject: {\n        time: duration\n      },\n      update: update,\n      complete: complete,\n      cancel: cancel\n    }\n  }\n}\n\nfunction getAltitude(frustum, dx, dy) {\n  const { PerspectiveFrustum, PerspectiveOffCenterFrustum } = Cesium\n  let near\n  let top\n  let right\n  if (frustum instanceof PerspectiveFrustum) {\n    const tanTheta = Math.tan(0.5 * frustum.fovy)\n    near = frustum.near\n    top = frustum.near * tanTheta\n    right = frustum.aspectRatio * top\n    return Math.max((dx * near) / right, (dy * near) / top)\n  } else if (frustum instanceof PerspectiveOffCenterFrustum) {\n    near = frustum.near\n    top = frustum.top\n    right = frustum.right\n    return Math.max((dx * near) / right, (dy * near) / top)\n  }\n\n  return Math.max(dx, dy)\n}\n\nconst scratchCart: any = {}\nconst scratchCart2: any = {}\n\nfunction createPitchFunction(startPitch, endPitch, heightFunction, pitchAdjustHeight) {\n  const { defined, Math: CesiumMath } = Cesium\n  if (defined(pitchAdjustHeight) && heightFunction(0.5) > pitchAdjustHeight) {\n    const startHeight = heightFunction(0.0)\n    const endHeight = heightFunction(1.0)\n    const middleHeight = heightFunction(0.5)\n\n    const d1 = middleHeight - startHeight\n    const d2 = middleHeight - endHeight\n\n    return function (time) {\n      const altitude = heightFunction(time)\n      if (time <= 0.5) {\n        const t1 = (altitude - startHeight) / d1\n        return CesiumMath.lerp(startPitch, -CesiumMath.PI_OVER_TWO, t1)\n      }\n\n      const t2 = (altitude - endHeight) / d2\n      return CesiumMath.lerp(-CesiumMath.PI_OVER_TWO, endPitch, 1 - t2)\n    }\n  }\n  return function (time) {\n    return CesiumMath.lerp(startPitch, endPitch, time)\n  }\n}\n\nfunction createHeightFunction(\n  camera: Cesium.Camera,\n  destination: Cesium.Cartesian3,\n  startHeight: number,\n  endHeight: number,\n  optionAltitude\n): AnyFunction<any> {\n  const { Cartesian3, defined, Math: CesiumMath } = Cesium\n  let altitude = optionAltitude\n  const maxHeight = Math.max(startHeight, endHeight)\n\n  if (!defined(altitude)) {\n    const start = camera.position\n    const end = destination\n    const up = camera.up\n    const right = camera.right\n    const frustum = camera.frustum\n\n    const diff = Cartesian3.subtract(start, end, scratchCart)\n    const verticalDistance = Cartesian3.magnitude(Cartesian3.multiplyByScalar(up, Cartesian3.dot(diff, up), scratchCart2))\n    const horizontalDistance = Cartesian3.magnitude(Cartesian3.multiplyByScalar(right, Cartesian3.dot(diff, right), scratchCart2))\n\n    altitude = Math.min(getAltitude(frustum, verticalDistance, horizontalDistance) * 0.2, 1000000000.0)\n  }\n\n  if (maxHeight < altitude) {\n    const power = 8.0\n    const factor = 1000000.0\n\n    const s = -Math.pow((altitude - startHeight) * factor, 1.0 / power)\n    const e = Math.pow((altitude - endHeight) * factor, 1.0 / power)\n\n    return function (t) {\n      const x = t * (e - s) + s\n      return -Math.pow(x, power) / factor + altitude\n    }\n  }\n\n  return function (t) {\n    return CesiumMath.lerp(startHeight, endHeight, t)\n  }\n}\n\nfunction adjustAngleForLERP(startAngle: number, endAngle: number) {\n  const { Math: CesiumMath } = Cesium\n  if (CesiumMath.equalsEpsilon(startAngle, CesiumMath.TWO_PI, CesiumMath.EPSILON11)) {\n    startAngle = 0.0\n  }\n\n  if (endAngle > startAngle + Math.PI) {\n    startAngle += CesiumMath.TWO_PI\n  } else if (endAngle < startAngle - Math.PI) {\n    startAngle -= CesiumMath.TWO_PI\n  }\n\n  return startAngle\n}\n\nconst scratchStart: any = {}\n\nfunction createUpdateCV(\n  scene: Cesium.Scene,\n  duration: number,\n  destination: Cesium.Cartesian3,\n  heading: number,\n  pitch: number,\n  roll: number,\n  optionAltitude\n) {\n  const { Cartesian2, Cartesian3, Math: CesiumMath } = Cesium\n  const camera = scene.camera\n\n  const start = Cartesian3.clone(camera.position, scratchStart)\n  const startPitch = camera.pitch\n  const startHeading = adjustAngleForLERP(camera.heading, heading)\n  const startRoll = adjustAngleForLERP(camera.roll, roll)\n\n  const heightFunction = createHeightFunction(camera, destination, start.z, destination.z, optionAltitude)\n\n  function update(value) {\n    const time = value.time / duration\n\n    camera.setView({\n      orientation: {\n        heading: CesiumMath.lerp(startHeading, heading, time),\n        pitch: CesiumMath.lerp(startPitch, pitch, time),\n        roll: CesiumMath.lerp(startRoll, roll, time)\n      }\n    })\n\n    Cartesian2.lerp(start, destination, time, camera.position)\n    camera.position.z = heightFunction(time)\n  }\n  return update\n}\n\nfunction useLongestFlight(startCart, destCart) {\n  const { Math: CesiumMath } = Cesium\n  if (startCart.longitude < destCart.longitude) {\n    startCart.longitude += CesiumMath.TWO_PI\n  } else {\n    destCart.longitude += CesiumMath.TWO_PI\n  }\n}\n\nfunction useShortestFlight(startCart, destCart) {\n  const { Math: CesiumMath } = Cesium\n  const diff = startCart.longitude - destCart.longitude\n  if (diff < -CesiumMath.PI) {\n    startCart.longitude += CesiumMath.TWO_PI\n  } else if (diff > CesiumMath.PI) {\n    destCart.longitude += CesiumMath.TWO_PI\n  }\n}\n\nconst scratchStartCart: any = {}\nconst scratchEndCart: any = {}\n\nfunction createUpdate3D(\n  scene: Cesium.Scene,\n  duration,\n  destination,\n  heading,\n  pitch,\n  roll,\n  optionAltitude,\n  optionFlyOverLongitude,\n  optionFlyOverLongitudeWeight,\n  optionPitchAdjustHeight\n) {\n  const { Cartesian3, Cartographic, defined, Math: CesiumMath } = Cesium\n  const camera = scene.camera\n  const projection = scene.mapProjection\n  const ellipsoid = projection.ellipsoid\n\n  const startCart = Cartographic.clone(camera.positionCartographic, scratchStartCart)\n  const startPitch = camera.pitch\n  const startHeading = adjustAngleForLERP(camera.heading, heading)\n  const startRoll = adjustAngleForLERP(camera.roll, roll)\n\n  const destCart = ellipsoid.cartesianToCartographic(destination, scratchEndCart)\n  startCart.longitude = CesiumMath.zeroToTwoPi(startCart.longitude)\n  destCart.longitude = CesiumMath.zeroToTwoPi(destCart.longitude)\n\n  let useLongFlight = false\n\n  if (defined(optionFlyOverLongitude)) {\n    const hitLon = CesiumMath.zeroToTwoPi(optionFlyOverLongitude)\n\n    const lonMin = Math.min(startCart.longitude, destCart.longitude)\n    const lonMax = Math.max(startCart.longitude, destCart.longitude)\n\n    const hitInside = hitLon >= lonMin && hitLon <= lonMax\n\n    if (defined(optionFlyOverLongitudeWeight)) {\n      // Distance inside  (0...2Pi)\n      const din = Math.abs(startCart.longitude - destCart.longitude)\n      // Distance outside (0...2Pi)\n      const dot = CesiumMath.TWO_PI - din\n\n      const hitDistance = hitInside ? din : dot\n      const offDistance = hitInside ? dot : din\n\n      if (hitDistance < offDistance * optionFlyOverLongitudeWeight && !hitInside) {\n        useLongFlight = true\n      }\n    } else if (!hitInside) {\n      useLongFlight = true\n    }\n  }\n\n  if (useLongFlight) {\n    useLongestFlight(startCart, destCart)\n  } else {\n    useShortestFlight(startCart, destCart)\n  }\n\n  const heightFunction = createHeightFunction(camera, destination, startCart.height, destCart.height, optionAltitude)\n  const pitchFunction = createPitchFunction(startPitch, pitch, heightFunction, optionPitchAdjustHeight)\n\n  // Isolate scope for update function.\n  // to have local copies of vars used in lerp\n  // Othervise, if you call nex\n  // createUpdate3D (createAnimationTween)\n  // before you played animation, variables will be overwriten.\n  function isolateUpdateFunction() {\n    const startLongitude = startCart.longitude\n    const destLongitude = destCart.longitude\n    const startLatitude = startCart.latitude\n    const destLatitude = destCart.latitude\n\n    return function update(value) {\n      const time = value.time / duration\n\n      const position = Cartesian3.fromRadians(\n        CesiumMath.lerp(startLongitude, destLongitude, time),\n        CesiumMath.lerp(startLatitude, destLatitude, time),\n        heightFunction(time),\n        scene.globe.ellipsoid\n      )\n\n      camera.setView({\n        destination: position,\n        orientation: {\n          heading: CesiumMath.lerp(startHeading, heading, time),\n          pitch: pitchFunction(time),\n          roll: CesiumMath.lerp(startRoll, roll, time)\n        }\n      })\n    }\n  }\n  return isolateUpdateFunction()\n}\n\nfunction createUpdate2D(scene, duration, destination, heading, pitch, roll, optionAltitude) {\n  const { Cartesian2, Cartesian3, Math: CesiumMath } = Cesium\n  const camera = scene.camera\n\n  const start = Cartesian3.clone(camera.position, scratchStart)\n  const startHeading = adjustAngleForLERP(camera.heading, heading)\n\n  const startHeight = camera.frustum.right - camera.frustum.left\n  const heightFunction = createHeightFunction(camera, destination, startHeight, destination.z, optionAltitude)\n\n  function update(value) {\n    const time = value.time / duration\n\n    camera.setView({\n      orientation: {\n        heading: CesiumMath.lerp(startHeading, heading, time)\n      }\n    })\n\n    Cartesian2.lerp(start, destination, time, camera.position)\n\n    const zoom = heightFunction(time)\n\n    const frustum = camera.frustum\n    const ratio = frustum.top / frustum.right\n\n    const incrementAmount = (zoom - (frustum.right - frustum.left)) * 0.5\n    frustum.right += incrementAmount\n    frustum.left -= incrementAmount\n    frustum.top = ratio * frustum.right\n    frustum.bottom = -frustum.top\n  }\n  return update\n}\n\nconst scratchCartographic = {}\nconst scratchDestination = {}\n\nfunction emptyFlight(complete?, cancel?) {\n  return {\n    startObject: {},\n    stopObject: {},\n    duration: 0.0,\n    complete: complete,\n    cancel: cancel\n  }\n}\n\nfunction wrapCallback(controller, cb) {\n  function wrapped() {\n    if (typeof cb === 'function') {\n      cb()\n    }\n\n    controller.enableInputs = true\n  }\n  return wrapped\n}\n\nexport default CameraFlightPath\n","import { ref } from 'vue'\nimport { AnyFunction, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport CameraFlightPath from './CameraFlightPath'\nimport { getInstanceListener, $ } from '@vue-cesium/utils/private/vm'\nimport { VcTooltip } from '@vue-cesium/components/ui'\nimport { isObject } from '@vue-cesium/utils/util'\n\nexport default function (props, { emit }, vcInstance: VcComponentInternalInstance) {\n  // state\n  const vectorScratch: any = {}\n  const oldTransformScratch: any = {}\n  const newTransformScratch: any = {}\n  const centerScratch: any = {}\n\n  let unsubscribeFromPostRender: AnyFunction<void>\n  let unsubscribeFromClockTick: AnyFunction<void>\n\n  let orbitMouseMoveFunction: EventListener\n  let orbitMouseUpFunction: EventListener\n  let orbitTickFunction: EventListener\n\n  const heading = ref(0)\n  const orbitCursorAngle = ref(0)\n  const orbitCursorOpacity = ref(0)\n\n  let isOrbiting = false\n  let orbitLastTimestamp = 0\n  let orbitFrame: any = {}\n  let orbitIsLook = false\n\n  let rotateMouseUpFunction: AnyFunction<void>\n  let rotateMouseMoveFunction: AnyFunction<void>\n  let isRotating = false\n  let rotateInitialCursorAngle = 0\n  let rotateFrame: any = {}\n  let rotateIsLook = false\n  let rotateInitialCameraAngle = 0\n  let rotateInitialCameraDistance: any = {}\n\n  const iconOuterTooltipRef = ref<typeof VcTooltip | null>(null)\n  const iconInnerTooltipRef = ref<typeof VcTooltip | null>(null)\n\n  // methods\n  const handleMouseDown = (e: MouseEvent | TouchEvent) => {\n    if (e.stopPropagation) e.stopPropagation()\n    if (e.preventDefault) e.preventDefault()\n\n    $(iconOuterTooltipRef)?.hide()\n    $(iconInnerTooltipRef)?.hide()\n\n    const { SceneMode, Cartesian2 } = Cesium\n    const scene = vcInstance.viewer.scene\n    if (scene.mode === SceneMode.MORPHING) {\n      return true\n    }\n\n    const compassElement = e.currentTarget as HTMLElement\n    const compassRectangle = compassElement.getBoundingClientRect()\n    const maxDistance = compassRectangle.width / 2.0\n    const center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2.0, (compassRectangle.bottom - compassRectangle.top) / 2.0)\n    let clickLocation\n    if (e instanceof MouseEvent) {\n      clickLocation = new Cartesian2(e.clientX - compassRectangle.left, e.clientY - compassRectangle.top)\n    } else if (e instanceof TouchEvent) {\n      clickLocation = new Cartesian2(e.changedTouches[0].clientX - compassRectangle.left, e.changedTouches[0].clientY - compassRectangle.top)\n    }\n    const vector = Cartesian2.subtract(clickLocation, center, vectorScratch)\n    const distanceFromCenter = Cartesian2.magnitude(vector)\n    const distanceFraction = distanceFromCenter / maxDistance\n    const nominalTotalRadius = 145\n    const norminalGyroRadius = 50\n\n    if (distanceFraction < norminalGyroRadius / nominalTotalRadius) {\n      orbit(compassElement, vector)\n    } else if (distanceFraction < 1.0) {\n      rotate(compassElement, vector)\n    } else {\n      return true\n    }\n  }\n  const handleDoubleClick = e => {\n    const { Cartesian2, Cartesian3, defined, Ellipsoid, Matrix4, Ray, SceneMode, Transforms } = Cesium\n    const { viewer } = vcInstance\n    const scene = viewer.scene\n    const camera = scene.camera\n    const sscc = scene.screenSpaceCameraController\n\n    if (scene.mode === SceneMode.MORPHING || !sscc.enableInputs) {\n      return true\n    }\n    if (scene.mode === SceneMode.COLUMBUS_VIEW && !sscc.enableTranslate) {\n      return\n    }\n    if (scene.mode === SceneMode.SCENE3D || scene.mode === SceneMode.COLUMBUS_VIEW) {\n      if (!sscc.enableLook) {\n        return\n      }\n\n      if (scene.mode === SceneMode.SCENE3D) {\n        if (!sscc.enableRotate) {\n          return\n        }\n      }\n    }\n\n    const windowPosition = new Cartesian2()\n    windowPosition.x = scene.canvas.clientWidth / 2\n    windowPosition.y = scene.canvas.clientHeight / 2\n    const pickRayScratch = new Ray()\n    const ray = camera.getPickRay(windowPosition, pickRayScratch)\n\n    const center = scene.globe.pick(ray, scene, centerScratch)\n    if (!isObject(center) || !defined(center)) {\n      // Globe is barely visible, so reset to home view.\n      viewer.camera.flyHome()\n      return\n    }\n\n    const listener = getInstanceListener(vcInstance, 'compassEvt')\n    listener &&\n      emit('compassEvt', {\n        type: 'reset',\n        camera: viewer.camera,\n        status: 'start',\n        target: e.currentTarget\n      })\n    const rotateFrame = Transforms.eastNorthUpToFixedFrame(center, viewer.scene.globe.ellipsoid)\n    const lookVector = Cartesian3.subtract(center, camera.position, new Cartesian3())\n    const flight = CameraFlightPath.createTween(scene, {\n      destination: Matrix4.multiplyByPoint(rotateFrame, new Cartesian3(0.0, 0.0, Cartesian3.magnitude(lookVector)), new Cartesian3()),\n      direction: Matrix4.multiplyByPointAsVector(rotateFrame, new Cartesian3(0.0, 0.0, -1.0), new Cartesian3()),\n      up: Matrix4.multiplyByPointAsVector(rotateFrame, new Cartesian3(0.0, 1.0, 0.0), new Cartesian3()),\n      duration: props.duration,\n      complete: () => {\n        listener &&\n          emit('compassEvt', {\n            type: 'reset',\n            camera: viewer.camera,\n            status: 'end',\n            target: e.currentTarget\n          })\n      },\n      cancel: () => {\n        listener &&\n          emit('compassEvt', {\n            type: 'reset',\n            camera: viewer.camera,\n            status: 'cancel',\n            target: e.currentTarget\n          })\n      }\n    })\n    ;(scene as any).tweens.add(flight)\n  }\n  const resetRotater = () => {\n    orbitCursorOpacity.value = 0\n    orbitCursorAngle.value = 0\n  }\n  // state methods\n  const viewerChange = () => {\n    const { defined } = Cesium\n    if (defined(vcInstance.viewer)) {\n      if (unsubscribeFromPostRender) {\n        unsubscribeFromPostRender()\n        ;(unsubscribeFromPostRender as any) = undefined\n      }\n\n      unsubscribeFromPostRender = vcInstance.viewer.scene.postRender.addEventListener(function () {\n        if (heading.value !== vcInstance.viewer.scene.camera.heading) {\n          heading.value = vcInstance.viewer.scene.camera.heading\n        }\n      })\n    } else {\n      if (unsubscribeFromPostRender) {\n        unsubscribeFromPostRender()\n        ;(unsubscribeFromPostRender as any) = undefined\n      }\n    }\n  }\n\n  const orbit = (compassElement: HTMLElement, cursorVector: Cesium.Cartesian2) => {\n    const { Cartesian2, Cartesian3, defined, getTimestamp, Math: CesiumMath, Matrix4, Ray, SceneMode, Transforms } = Cesium\n    let scene = vcInstance.viewer.scene\n    let camera = scene.camera\n    const sscc = scene.screenSpaceCameraController\n    // do not orbit if it is disabled\n    if (scene.mode === SceneMode.MORPHING || !sscc.enableInputs) {\n      return\n    }\n\n    switch (scene.mode) {\n      case SceneMode.COLUMBUS_VIEW:\n        if (sscc.enableLook) {\n          break\n        }\n        if (!sscc.enableTranslate || !sscc.enableTilt) {\n          return\n        }\n        break\n      case SceneMode.SCENE3D:\n        if (sscc.enableLook) {\n          break\n        }\n        if (!sscc.enableTilt || !sscc.enableRotate) {\n          return\n        }\n        break\n      case Cesium.SceneMode.SCENE2D:\n        if (!sscc.enableTranslate) {\n          return\n        }\n        break\n    }\n    const listener = getInstanceListener(vcInstance, 'compassEvt')\n    listener &&\n      emit('compassEvt', {\n        type: 'orbit',\n        camera: scene.camera,\n        status: 'start',\n        target: compassElement\n      })\n\n    // Remove existing event handlers, if any.\n    document.removeEventListener('mousemove', orbitMouseMoveFunction, false)\n    document.removeEventListener('mouseup', orbitMouseUpFunction, false)\n    document.removeEventListener('touchmove', orbitMouseMoveFunction, false)\n    document.removeEventListener('touchend', orbitMouseUpFunction, false)\n\n    if (defined(orbitTickFunction)) {\n      vcInstance.viewer.clock.onTick.removeEventListener(orbitTickFunction)\n    }\n\n    ;(orbitMouseMoveFunction as any) = undefined\n    ;(orbitMouseUpFunction as any) = undefined\n    ;(orbitTickFunction as any) = undefined\n\n    isOrbiting = true\n    orbitLastTimestamp = getTimestamp()\n\n    const windowPosition = new Cartesian2()\n    windowPosition.x = scene.canvas.clientWidth / 2\n    windowPosition.y = scene.canvas.clientHeight / 2\n    const pickRayScratch = new Ray()\n    const ray = camera.getPickRay(windowPosition, pickRayScratch)\n\n    const center = scene.globe.pick(ray, scene, centerScratch)\n    if (!defined(center)) {\n      orbitFrame = Transforms.eastNorthUpToFixedFrame(camera.positionWC, scene.globe.ellipsoid, newTransformScratch)\n      orbitIsLook = true\n    } else {\n      orbitFrame = Transforms.eastNorthUpToFixedFrame(center || new Cesium.Cartesian3(), scene.globe.ellipsoid, newTransformScratch)\n      orbitIsLook = false\n    }\n\n    orbitTickFunction = function (e) {\n      const timestamp = getTimestamp()\n      const deltaT = timestamp - orbitLastTimestamp\n      const rate = ((orbitCursorOpacity.value - 0.5) * 2.5) / 1000\n      const distance = deltaT * rate\n\n      const angle = orbitCursorAngle.value + CesiumMath.PI_OVER_TWO\n      const x = Math.cos(angle) * distance\n      const y = Math.sin(angle) * distance\n\n      scene = vcInstance.viewer.scene\n      camera = scene.camera\n\n      const oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)\n      camera.lookAtTransform(orbitFrame)\n      if (orbitIsLook) {\n        camera.look(Cartesian3.UNIT_Z, -x)\n        camera.look(camera.right, -y)\n      } else {\n        camera.rotateLeft(x)\n        camera.rotateUp(y)\n      }\n\n      camera.lookAtTransform(oldTransform)\n      orbitLastTimestamp = timestamp\n    }\n\n    function updateAngleAndOpacity(vector, compassWidth) {\n      const angle = Math.atan2(-vector.y, vector.x)\n      orbitCursorAngle.value = CesiumMath.zeroToTwoPi(angle - CesiumMath.PI_OVER_TWO)\n      const distance = Cartesian2.magnitude(vector)\n      const maxDistance = compassWidth / 2.0\n      const distanceFraction = Math.min(distance / maxDistance, 1.0)\n      const easedOpacity = 0.5 * distanceFraction * distanceFraction + 0.5\n      orbitCursorOpacity.value = easedOpacity\n    }\n\n    orbitMouseMoveFunction = function (e: Event) {\n      const compassRectangle = compassElement.getBoundingClientRect()\n      const center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2.0, (compassRectangle.bottom - compassRectangle.top) / 2.0)\n      let clickLocation\n      if (e instanceof MouseEvent) {\n        clickLocation = new Cartesian2(e.clientX - compassRectangle.left, e.clientY - compassRectangle.top)\n      } else if (e instanceof TouchEvent) {\n        clickLocation = new Cartesian2(e.changedTouches[0].clientX - compassRectangle.left, e.changedTouches[0].clientY - compassRectangle.top)\n      }\n      const vector = Cartesian2.subtract(clickLocation, center, vectorScratch)\n      updateAngleAndOpacity(vector, compassRectangle.width)\n      listener &&\n        emit('compassEvt', {\n          type: 'orbit',\n          camera: scene.camera,\n          status: 'changing',\n          target: compassElement\n        })\n    }\n\n    orbitMouseUpFunction = function (e) {\n      // TODO: if mouse didn't move, reset view to looking down, north is up?\n\n      isOrbiting = false\n      document.removeEventListener('mousemove', orbitMouseMoveFunction, false)\n      document.removeEventListener('mouseup', orbitMouseUpFunction, false)\n      document.removeEventListener('touchmove', orbitMouseMoveFunction, false)\n      document.removeEventListener('touchend', orbitMouseUpFunction, false)\n\n      if (defined(orbitTickFunction)) {\n        vcInstance.viewer.clock.onTick.removeEventListener(orbitTickFunction)\n      }\n\n      ;(orbitMouseMoveFunction as any) = undefined\n      ;(orbitMouseUpFunction as any) = undefined\n      ;(orbitTickFunction as any) = undefined\n\n      resetRotater()\n\n      listener &&\n        emit('compassEvt', {\n          type: 'orbit',\n          camera: scene.camera,\n          status: 'end',\n          target: compassElement\n        })\n    }\n\n    document.addEventListener('mousemove', orbitMouseMoveFunction, false)\n    document.addEventListener('mouseup', orbitMouseUpFunction, false)\n    document.addEventListener('touchmove', orbitMouseMoveFunction, false)\n    document.addEventListener('touchend', orbitMouseUpFunction, false)\n    unsubscribeFromClockTick = vcInstance.viewer.clock.onTick.addEventListener(orbitTickFunction)\n    updateAngleAndOpacity(cursorVector, compassElement.getBoundingClientRect().width)\n  }\n\n  const rotate = (compassElement: HTMLElement, cursorVector: Cesium.Cartesian2) => {\n    if (!props.enableCompassOuterRing) {\n      return\n    }\n\n    const scene = vcInstance.viewer.scene\n    let camera = scene.camera\n    const sscc = scene.screenSpaceCameraController\n    // do not rotate in 2D mode or if rotating is disabled\n    if (scene.mode === Cesium.SceneMode.MORPHING || scene.mode === Cesium.SceneMode.SCENE2D || !sscc.enableInputs) {\n      return\n    }\n    if (!sscc.enableLook && (scene.mode === Cesium.SceneMode.COLUMBUS_VIEW || (scene.mode === Cesium.SceneMode.SCENE3D && !sscc.enableRotate))) {\n      return\n    }\n    // Remove existing event handlers, if any.\n    document.removeEventListener('mousemove', rotateMouseMoveFunction, false)\n    document.removeEventListener('touchmove', rotateMouseMoveFunction, false)\n    document.removeEventListener('mouseup', rotateMouseUpFunction, false)\n    document.removeEventListener('touchend', rotateMouseUpFunction, false)\n    const { Cartesian2, Cartesian3, defined, Math: CesiumMath, Matrix4, Ray, Transforms } = Cesium\n    ;(rotateMouseMoveFunction as any) = undefined\n    ;(rotateMouseUpFunction as any) = undefined\n\n    const listener = getInstanceListener(vcInstance, 'compassEvt')\n    listener &&\n      emit('compassEvt', {\n        type: 'rotate',\n        camera: scene.camera,\n        status: 'start',\n        target: compassElement\n      })\n\n    isRotating = true\n    rotateInitialCursorAngle = Math.atan2(-cursorVector.y, cursorVector.x)\n\n    const windowPosition = new Cartesian2()\n    windowPosition.x = scene.canvas.clientWidth / 2\n    windowPosition.y = scene.canvas.clientHeight / 2\n    const pickRayScratch = new Ray()\n    const ray = camera.getPickRay(windowPosition, pickRayScratch)\n\n    const viewCenter = scene.globe.pick(ray, scene, centerScratch)\n    if (!defined(viewCenter)) {\n      rotateFrame = Transforms.eastNorthUpToFixedFrame(camera.positionWC, scene.globe.ellipsoid, newTransformScratch)\n      rotateIsLook = true\n    } else {\n      rotateFrame = Transforms.eastNorthUpToFixedFrame(viewCenter || new Cartesian3(), scene.globe.ellipsoid, newTransformScratch)\n      rotateIsLook = false\n    }\n\n    let oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)\n    camera.lookAtTransform(rotateFrame)\n    rotateInitialCameraAngle = Math.atan2(camera.position.y, camera.position.x)\n    rotateInitialCameraDistance = Cartesian3.magnitude(new Cartesian3(camera.position.x, camera.position.y, 0.0))\n    camera.lookAtTransform(oldTransform)\n\n    rotateMouseMoveFunction = function (e: MouseEvent | TouchEvent) {\n      const compassRectangle = compassElement.getBoundingClientRect()\n      const center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2.0, (compassRectangle.bottom - compassRectangle.top) / 2.0)\n      let clickLocation\n      if (e instanceof MouseEvent) {\n        clickLocation = new Cartesian2(e.clientX - compassRectangle.left, e.clientY - compassRectangle.top)\n      } else if (e instanceof TouchEvent) {\n        clickLocation = new Cartesian2(e.changedTouches[0].clientX - compassRectangle.left, e.changedTouches[0].clientY - compassRectangle.top)\n      }\n      const vector = Cartesian2.subtract(clickLocation, center, vectorScratch)\n      const angle = Math.atan2(-vector.y, vector.x)\n\n      const angleDifference = angle - rotateInitialCursorAngle\n      const newCameraAngle = CesiumMath.zeroToTwoPi(rotateInitialCameraAngle - angleDifference)\n\n      camera = vcInstance.viewer.scene.camera\n\n      oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)\n      camera.lookAtTransform(rotateFrame)\n      const currentCameraAngle = Math.atan2(camera.position.y, camera.position.x)\n      camera.rotateRight(newCameraAngle - currentCameraAngle)\n      camera.lookAtTransform(oldTransform)\n      listener &&\n        emit('compassEvt', {\n          type: 'rotate',\n          camera: scene.camera,\n          status: 'changing',\n          target: compassElement\n        })\n    }\n\n    rotateMouseUpFunction = function (e) {\n      isRotating = false\n      document.removeEventListener('mousemove', rotateMouseMoveFunction, false)\n      document.removeEventListener('touchmove', rotateMouseMoveFunction, false)\n      document.removeEventListener('mouseup', rotateMouseUpFunction, false)\n      document.removeEventListener('touchend', rotateMouseUpFunction, false)\n      ;(rotateMouseMoveFunction as any) = undefined\n      ;(rotateMouseUpFunction as any) = undefined\n\n      listener &&\n        emit('compassEvt', {\n          type: 'rotate',\n          camera: scene.camera,\n          status: 'end',\n          target: compassElement\n        })\n    }\n\n    document.addEventListener('mousemove', rotateMouseMoveFunction, false)\n    document.addEventListener('touchmove', rotateMouseMoveFunction, false)\n    document.addEventListener('mouseup', rotateMouseUpFunction, false)\n    document.addEventListener('touchend', rotateMouseUpFunction, false)\n  }\n\n  const onTooltipBeforeShow = e => {\n    if (rotateMouseMoveFunction !== undefined || orbitMouseMoveFunction !== undefined) {\n      e.cancel = true\n    }\n  }\n\n  const load = async viewer => {\n    vcInstance.viewer = viewer\n    viewerChange()\n    return true\n  }\n\n  const unload = async () => {\n    document.removeEventListener('mousemove', orbitMouseMoveFunction, false)\n    document.removeEventListener('mouseup', orbitMouseUpFunction, false)\n    document.removeEventListener('touchmove', orbitMouseMoveFunction, false)\n    document.removeEventListener('touchend', orbitMouseUpFunction, false)\n    unsubscribeFromClockTick && unsubscribeFromClockTick()\n    unsubscribeFromPostRender && unsubscribeFromPostRender()\n    return true\n  }\n\n  return {\n    heading,\n    orbitCursorAngle,\n    orbitCursorOpacity,\n    handleDoubleClick,\n    handleMouseDown,\n    resetRotater,\n    onTooltipBeforeShow,\n    viewerChange,\n    load,\n    unload,\n    iconOuterTooltipRef,\n    iconInnerTooltipRef\n  }\n}\n","import type { ExtractPropTypes, VNode } from 'vue'\nimport { defineComponent, getCurrentInstance, ref, computed, nextTick, CSSProperties, watch, reactive, createCommentVNode, h } from 'vue'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport type { VcCompassEvt, VcBtnTooltipProps, VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { $, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport { defaultProps, defaultOptions } from './defaultProps'\nimport { hMergeSlot } from '@vue-cesium/utils/private/render'\nimport { VcBtn, VcIcon, VcTooltip } from '@vue-cesium/components/ui'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport useCompass from './use-compass'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  compassEvt: (evt: VcCompassEvt) => true\n}\nexport const compassProps = defaultProps\nexport default defineComponent({\n  name: 'VcCompass',\n  props: compassProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcCompass'\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { t } = useLocale()\n    const parentInstance = getVcParentInstance(instance)\n    const { $services } = commonState\n    const compassState = useCompass(props, ctx, instance)\n    const positionState = usePosition(props, $services)\n    const rootRef = ref<HTMLElement>(null)\n    const outerRingRef = ref<typeof VcBtn>(null)\n    const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n    const canRender = ref(hasVcNavigation)\n    const rootStyle = reactive<CSSProperties>({})\n    // watch\n    watch(\n      () => props,\n      val => {\n        nextTick(() => {\n          if (!instance.mounted) {\n            return\n          }\n          updateRootStyle()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n    // computed\n    const innerOptions = computed(() => {\n      return Object.assign({}, defaultOptions.innerOptions, props.innerOptions)\n    })\n    const outerOptions = computed(() => {\n      return Object.assign({}, defaultOptions.outerOptions, props.outerOptions)\n    })\n    const markerOptions = computed(() => {\n      return Object.assign({}, defaultOptions.markerOptions, props.markerOptions)\n    })\n    const outerCircleStyle = computed(() => {\n      return {\n        transform: 'translate(-50%,-50%) rotate(-' + compassState.heading.value + 'rad)',\n        WebkitTransform: 'translate(-50%,-50%) rotate(-' + compassState.heading.value + 'rad)',\n        // transform: 'rotate(-' + heading.value + 'rad)',\n        // WebkitTransform: 'rotate(-' + heading.value + 'rad)',\n        opacity: undefined,\n        background: outerOptions.value.background,\n        color: outerOptions.value.color\n      }\n    })\n    const rotationMarkerStyle = computed(() => {\n      return {\n        transform: 'rotate(-' + compassState.orbitCursorAngle.value + 'rad)',\n        WebkitTransform: 'rotate(-' + compassState.orbitCursorAngle.value + 'rad)',\n        opacity: compassState.orbitCursorOpacity.value,\n        color: markerOptions.value.color\n      }\n    })\n    const innerRingStyle = computed(() => {\n      const css: CSSProperties = {\n        background: innerOptions.value.background,\n        color: innerOptions.value.color\n      }\n      return css\n    })\n\n    // methods\n    instance.createCesiumObject = async () => {\n      canRender.value = true\n      const { viewer } = $services\n      return new Promise((resolve, reject) => {\n        nextTick(() => {\n          if (!hasVcNavigation) {\n            const viewerElement = (viewer as any)._element\n            viewerElement.appendChild($(rootRef))\n            resolve($(rootRef))\n          } else {\n            resolve($(rootRef))\n          }\n        })\n      })\n    }\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)\n      })\n      return compassState.load($services.viewer)\n    }\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element\n      if (!hasVcNavigation) {\n        viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n      }\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)\n      })\n      return compassState.unload()\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n      const side = positionState.attach.value\n      const outerRingTarget = $(outerRingRef)?.$el as HTMLElement\n      if (outerRingTarget !== void 0) {\n        const clientRect = outerRingTarget.getBoundingClientRect()\n        css.width = `${clientRect.width}px`\n        css.height = `${clientRect.height}px`\n\n        if ((side.bottom || side.top) && !side.left && !side.right) {\n          css.left = '50%'\n          css.transform = 'translate(-50%, 0)'\n        }\n\n        if ((side.left || side.right) && !side.top && !side.bottom) {\n          css.top = '50%'\n          css.transform = 'translate(0, -50%)'\n        }\n      }\n\n      Object.assign(rootStyle, css)\n    }\n\n    return () => {\n      if (canRender.value) {\n        let children: Array<VNode> = []\n        children = hMergeSlot(ctx.slots.default, children)\n        children.push(\n          h(\n            VcBtn,\n            {\n              ref: outerRingRef,\n              class: 'vc-compass-outerRing absolute-center',\n              style: outerCircleStyle.value,\n              size: outerOptions.value.size,\n              dense: true,\n              round: true,\n              disabled: !props.enableCompassOuterRing\n            },\n            () => [\n              h(VcIcon, {\n                size: outerOptions.value.size,\n                name: outerOptions.value.icon\n              }),\n              outerOptions.value.tooltip\n                ? h(\n                    VcTooltip,\n                    {\n                      ref: compassState.iconOuterTooltipRef,\n                      ...outerOptions.value.tooltip,\n                      onBeforeShow: compassState.onTooltipBeforeShow\n                    },\n                    () => h('strong', {}, outerOptions.value.tooltip.tip || t('vc.navigation.compass.outerTip'))\n                  )\n                : createCommentVNode('v-if')\n            ]\n          )\n        )\n\n        children.push(\n          h(\n            VcBtn,\n            {\n              class: 'vc-compass-innerRing absolute-center',\n              style: innerRingStyle.value,\n              size: innerOptions.value.size,\n              dense: true,\n              round: true\n            },\n            () => [\n              h(VcIcon, {\n                size: innerOptions.value.size,\n                name: innerOptions.value.icon\n              }),\n              innerOptions.value.tooltip\n                ? h(\n                    VcTooltip,\n                    {\n                      ref: compassState.iconInnerTooltipRef,\n                      ...innerOptions.value.tooltip,\n                      onBeforeShow: compassState.onTooltipBeforeShow\n                    },\n                    () => h('strong', {}, innerOptions.value.tooltip.tip || t('vc.navigation.compass.innerTip'))\n                  )\n                : createCommentVNode('v-if')\n            ]\n          )\n        )\n\n        children.push(\n          rotationMarkerStyle.value.opacity\n            ? h(\n                VcBtn,\n                {\n                  class: 'vc-compass-rotation-marker absolute-center',\n                  dense: true,\n                  round: true\n                },\n                () => [\n                  h(VcIcon, {\n                    size: markerOptions.value.size,\n                    name: markerOptions.value.icon,\n                    style: rotationMarkerStyle.value\n                  })\n                ]\n              )\n            : createCommentVNode('v-if')\n        )\n\n        return h(\n          'div',\n          {\n            ref: rootRef,\n            class: 'vc-compass ' + positionState.classes.value,\n            style: rootStyle,\n            onDblclick: compassState.handleDoubleClick,\n            onMousedown: compassState.handleMouseDown,\n            onMouseup: compassState.resetRotater,\n            onTouchend: compassState.resetRotater,\n            onTouchstart: compassState.handleMouseDown\n          },\n          children\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\n// export type VcCompassProps = ExtractPropTypes<typeof compassProps>\nexport type VcCompassEmits = typeof emits\nexport type VcCompassProps = {\n  /**\n   * Specify the position of the VcCompass.\n   * Default value: top-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcCompass horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify whether the outer ring of the compass can be operated.\n   */\n  enableCompassOuterRing?: boolean\n  /**\n   * Specify the flight time to restore the camera, in seconds.\n   */\n  duration?: number\n  /**\n   * Specify the parameters of the compass outer ring.\n   */\n  outerOptions?: VcBtnTooltipProps\n  /**\n   * Specify the parameters of the inner ring.\n   */\n  innerOptions?: VcBtnTooltipProps\n  /**\n   * Specify the parameters of the maker when the compass rotates.\n   */\n  markerOptions?: VcBtnTooltipProps\n  /**\n   * Triggers before the VcCompass is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCompass is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcCompass is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCompass is operated.\n   */\n  onCompassEvt?: (evt: VcCompassEvt) => void\n}\n","import { positionProps } from '@vue-cesium/composables/private/use-position'\nimport type { VcBtnTooltipProps, VcCamera } from '@vue-cesium/utils/types'\nimport { getDefaultOptionByProps } from '@vue-cesium/utils/util'\nimport type { PropType } from 'vue'\n\nconst defaultProps = {\n  enableResetButton: {\n    type: Boolean,\n    default: true\n  },\n  zoomAmount: {\n    type: Number,\n    default: 2\n  },\n  duration: {\n    type: Number,\n    default: 0.5\n  },\n  durationReset: {\n    type: Number\n  },\n  defaultResetView: {\n    type: Object as PropType<VcCamera>,\n    default: () => {\n      return {\n        position: {\n          lng: 105,\n          lat: 30,\n          height: 19059568.5\n        }\n      } as VcCamera\n    }\n  },\n  overrideViewerCamera: {\n    type: Boolean,\n    default: false\n  },\n  ...positionProps,\n  background: {\n    type: String,\n    default: '#3f4854'\n  },\n  border: {\n    type: String,\n    default: 'solid 1px rgba(255, 255, 255, 0.2)'\n  },\n  borderRadius: {\n    type: String,\n    default: '100px'\n  },\n  direction: {\n    type: String,\n    default: 'vertical',\n    validator: (v: string) => ['vertical', 'horizontal'].includes(v)\n  },\n  zoomInOptions: {\n    type: Object as PropType<VcBtnTooltipProps>,\n    default: () =>\n      ({\n        icon: 'vc-icons-zoom-in',\n        size: '24px',\n        color: '#fff',\n        background: 'transparent',\n        round: true,\n        flat: true,\n        label: undefined,\n        stack: false,\n        tooltip: {\n          delay: 500,\n          anchor: 'bottom middle',\n          offset: [0, 20],\n          tip: void 0\n        }\n      } as VcBtnTooltipProps)\n  },\n  zoomOutOptions: {\n    type: Object as PropType<VcBtnTooltipProps>,\n    default: () =>\n      ({\n        icon: 'vc-icons-zoom-out',\n        size: '24px',\n        color: '#fff',\n        background: 'transparent',\n        round: true,\n        flat: true,\n        label: undefined,\n        stack: false,\n        tooltip: {\n          delay: 500,\n          anchor: 'bottom middle',\n          offset: [0, 20],\n          tip: void 0\n        }\n      } as VcBtnTooltipProps)\n  },\n  zoomResetOptions: {\n    type: Object as PropType<VcBtnTooltipProps>,\n    default: () =>\n      ({\n        icon: 'vc-icons-reset',\n        size: '24px',\n        color: '#fff',\n        background: 'transparent',\n        round: true,\n        flat: true,\n        label: undefined,\n        stack: false,\n        tooltip: {\n          delay: 500,\n          anchor: 'bottom middle',\n          offset: [0, 20],\n          tip: void 0\n        }\n      } as VcBtnTooltipProps)\n  }\n}\n\nconst defaultOptions = getDefaultOptionByProps<typeof defaultProps>(defaultProps)\n\nexport { defaultProps, defaultOptions }\n","import { VcCamera, VcComponentInternalInstance, VcViewerProvider } from '@vue-cesium/utils/types'\nimport { flyToCamera, heightToLevel } from '@vue-cesium/utils/cesium-helpers'\nimport { $, getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { ref } from 'vue'\nimport { VcTooltip } from '@vue-cesium/components/ui'\n\nexport default function (props, { emit }, vcInstance: VcComponentInternalInstance, $services: VcViewerProvider) {\n  // state\n  const zoomInTooltipRef = ref<typeof VcTooltip | null>(null)\n  const zoomOutTooltipRef = ref<typeof VcTooltip | null>(null)\n  const resetTooltipRef = ref<typeof VcTooltip | null>(null)\n\n  const zoomIn = e => {\n    zoom(1 / props.zoomAmount, e)\n  }\n\n  const zoomOut = e => {\n    zoom(props.zoomAmount, e)\n  }\n\n  const zoom = (relativeAmount, e) => {\n    $(zoomInTooltipRef)?.hide()\n    $(zoomOutTooltipRef)?.hide()\n\n    const { Cartesian3, defined, IntersectionTests, Ray, SceneMode } = Cesium\n    const { viewer } = $services\n    if (defined(viewer)) {\n      const scene = viewer.scene\n      const sscc = scene.screenSpaceCameraController\n      // do not zoom if it is disabled\n      if (!sscc.enableInputs || !sscc.enableZoom) {\n        return\n      }\n      // TODO\n      if (scene.mode === SceneMode.COLUMBUS_VIEW && !sscc.enableTranslate) {\n        return\n      }\n\n      const camera = scene.camera\n      let orientation\n\n      switch (scene.mode) {\n        case SceneMode.MORPHING: {\n          break\n        }\n        case SceneMode.SCENE2D: {\n          camera.zoomIn(camera.positionCartographic.height * (1 - relativeAmount))\n          break\n        }\n        default: {\n          let focus\n\n          if (defined(viewer.trackedEntity)) {\n            focus = new Cesium.Cartesian3()\n          } else {\n            focus = getCameraFocus(viewer.scene)\n          }\n\n          if (!Cesium.defined(focus)) {\n            // Camera direction is not pointing at the globe, so use the ellipsoid horizon point as\n            // the focal point.\n            const ray = new Ray(\n              camera.worldToCameraCoordinatesPoint(scene.globe.ellipsoid.cartographicToCartesian(camera.positionCartographic)),\n              camera.directionWC\n            )\n            focus = IntersectionTests.grazingAltitudeLocation(ray, scene.globe.ellipsoid)\n\n            orientation = {\n              heading: camera.heading,\n              pitch: camera.pitch,\n              roll: camera.roll\n            }\n          } else {\n            orientation = {\n              direction: camera.direction,\n              up: camera.up\n            }\n          }\n          const cartesian3Scratch = new Cartesian3()\n          const direction = Cartesian3.subtract(camera.position, focus, cartesian3Scratch)\n          const movementVector = Cartesian3.multiplyByScalar(direction, relativeAmount, direction)\n          const endPosition = Cartesian3.add(focus, movementVector, focus)\n          const type = relativeAmount < 1 ? 'zoomIn' : 'zoomOut'\n          const target = e.currentTarget\n          const level = heightToLevel(camera.positionCartographic.height).toFixed(0)\n          const listener = getInstanceListener(vcInstance, 'zoomEvt')\n          listener &&\n            emit('zoomEvt', {\n              type: type,\n              camera: viewer.camera,\n              status: 'start',\n              target: target,\n              level\n            })\n          if (Cesium.defined(viewer.trackedEntity) || scene.mode === SceneMode.COLUMBUS_VIEW) {\n            // sometimes flyTo does not work (jumps to wrong position) so just set the position without any animation\n            // do not use flyTo when tracking an entity because during animatiuon the position of the entity may change\n            camera.position = endPosition\n          } else {\n            camera.flyTo({\n              destination: endPosition,\n              orientation: orientation,\n              duration: props.duration,\n              convert: false,\n              complete: () => {\n                listener &&\n                  emit('zoomEvt', {\n                    type: type,\n                    camera: viewer.camera,\n                    status: 'end',\n                    target,\n                    level\n                  })\n              },\n              cancel: () => {\n                listener &&\n                  emit('zoomEvt', {\n                    type: type,\n                    camera: viewer.camera,\n                    status: 'cancel',\n                    target,\n                    level\n                  })\n              }\n            })\n          }\n        }\n      }\n    }\n  }\n\n  const zoomReset = e => {\n    $(resetTooltipRef)?.hide()\n    const { viewer } = $services\n    const scene = viewer.scene\n    const sscc = scene.screenSpaceCameraController\n    if (!sscc.enableInputs) {\n      return\n    }\n\n    if (Cesium.defined(viewer.trackedEntity)) {\n      // when tracking do not reset to default view but to default view of tracked entity\n      const trackedEntity = viewer.trackedEntity\n      viewer.trackedEntity = undefined\n      viewer.trackedEntity = trackedEntity\n    } else {\n      const listener = getInstanceListener(vcInstance, 'zoomEvt')\n      const target = e.currentTarget\n      const level = heightToLevel(viewer.camera.positionCartographic.height).toFixed(0)\n      // reset to a default position or view defined in the options\n      listener &&\n        emit('zoomEvt', {\n          type: 'zoomReset',\n          camera: viewer.camera,\n          status: 'start',\n          target,\n          level\n        })\n\n      const complete = () => {\n        listener &&\n          emit('zoomEvt', {\n            type: 'zoomReset',\n            camera: viewer.camera,\n            status: 'end',\n            target,\n            level\n          })\n      }\n      const cancel = () => {\n        listener &&\n          emit('zoomEvt', {\n            type: 'zoomReset',\n            camera: viewer.camera,\n            status: 'cancel',\n            target,\n            level\n          })\n      }\n\n      const resetView: VcCamera = props.defaultResetView\n      const options = {\n        duration: props.durationReset,\n        complete: complete,\n        cancel: cancel\n      }\n      flyToCamera(viewer, resetView, options)\n    }\n  }\n\n  const getCameraFocus = (scene: Cesium.Scene) => {\n    const { defined, IntersectionTests, Ray } = Cesium\n    const ray = new Ray(scene.camera.positionWC, scene.camera.directionWC)\n    const intersections = IntersectionTests.rayEllipsoid(ray, scene.globe.ellipsoid)\n    if (defined(intersections)) {\n      return Ray.getPoint(ray, intersections.start)\n    }\n    // Camera direction is not pointing at the globe, so use the ellipsoid horizon point as\n    // the focal point.\n    return IntersectionTests.grazingAltitudeLocation(ray, scene.globe.ellipsoid)\n  }\n\n  return {\n    zoomIn,\n    zoomOut,\n    zoomReset,\n    zoomInTooltipRef,\n    zoomOutTooltipRef,\n    resetTooltipRef\n  }\n}\n","import type { ExtractPropTypes, CSSProperties, VNode } from 'vue'\nimport { computed, defineComponent, getCurrentInstance, nextTick, ref, createCommentVNode, h, reactive, watch } from 'vue'\nimport type { VcCamera, VcComponentInternalInstance, VcZoomEvt, VcBtnTooltipProps, VcReadyObject } from '@vue-cesium/utils/types'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport { $, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport { setViewerCamera } from '@vue-cesium/utils/cesium-helpers'\nimport { hMergeSlot } from '@vue-cesium/utils/private/render'\nimport { defaultProps, defaultOptions } from './defaultProps'\nimport { VcBtn, VcIcon, VcTooltip } from '@vue-cesium/components/ui'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport useZoomControl from './use-zoom-control'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  zoomEvt: (evt: VcZoomEvt) => true\n}\nexport const zoomControlProps = defaultProps\nexport default defineComponent({\n  name: 'VcZoomControl',\n  props: zoomControlProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcZoomControl'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === undefined) {\n      return\n    }\n    const { t } = useLocale()\n    const { $services } = commonState\n    const zoomControlState = useZoomControl(props, ctx, instance, $services)\n    const positionState = usePosition(props, $services)\n    const rootRef = ref<HTMLElement | null>(null)\n    const zoomInRef = ref<typeof VcBtn | null>(null)\n    const zoomResetRef = ref<typeof VcBtn | null>(null)\n    const zoomOutRef = ref<typeof VcBtn | null>(null)\n    const parentInstance = getVcParentInstance(instance)\n    const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n    const canRender = ref(hasVcNavigation)\n    const rootStyle = reactive<CSSProperties>({})\n\n    // watch\n    watch(\n      () => props,\n      val => {\n        nextTick(() => {\n          if (!instance.mounted) {\n            return\n          }\n          updateRootStyle()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n    // computed\n    const zoomOutOptions = computed(() => Object.assign({}, defaultOptions.zoomOutOptions, props.zoomOutOptions))\n    const zoomInOptions = computed(() => Object.assign({}, defaultOptions.zoomInOptions, props.zoomInOptions))\n    const zoomResetOptions = computed(() => Object.assign({}, defaultOptions.zoomResetOptions, props.zoomResetOptions))\n    // methods\n    instance.createCesiumObject = async () => {\n      return new Promise((resolve, reject) => {\n        canRender.value = true\n        nextTick(() => {\n          const { viewer } = $services\n          if (props.overrideViewerCamera) {\n            const resetView: VcCamera = props.defaultResetView\n            setViewerCamera(viewer, resetView)\n          }\n\n          if (!hasVcNavigation) {\n            const viewerElement = (viewer as any)._element\n            viewerElement.appendChild($(rootRef))\n            resolve($(rootRef))\n          } else {\n            resolve($(rootRef))\n          }\n        })\n      })\n    }\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)\n      })\n      return true\n    }\n    instance.unmount = async () => {\n      const { viewer } = $services\n      if (!hasVcNavigation) {\n        const viewerElement = (viewer as any)._element\n        viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n      }\n\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)\n      })\n\n      return true\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n\n      css.flexDirection = props.direction === 'vertical' ? 'column' : 'row'\n      css.background = props.background\n      css.borderRadius = props.borderRadius\n      css.border = props.border\n\n      if (!hasVcNavigation) {\n        const zoomInTarget = $(zoomInRef)?.$el as HTMLElement\n        const zoomResetTarget = $(zoomResetRef)?.$el as HTMLElement\n        const zoomOutTarget = $(zoomOutRef)?.$el as HTMLElement\n        let width = 0\n        let height = 0\n\n        if (zoomInTarget !== void 0) {\n          const zoomInClientRect = zoomInTarget.getBoundingClientRect()\n          if (props.direction === 'horizontal') {\n            width += zoomInClientRect.width\n            height = zoomInClientRect.height > height ? zoomInClientRect.height : height\n          } else {\n            height += zoomInClientRect.height\n            width = zoomInClientRect.width > width ? zoomInClientRect.width : width\n          }\n        }\n\n        if (zoomResetTarget !== void 0) {\n          const zoomResetClientRect = zoomResetTarget.getBoundingClientRect()\n          if (props.direction === 'horizontal') {\n            width += zoomResetClientRect.width\n            height = zoomResetClientRect.height > height ? zoomResetClientRect.height : height\n          } else {\n            height += zoomResetClientRect.height\n            width = zoomResetClientRect.width > width ? zoomResetClientRect.width : width\n          }\n        }\n\n        if (zoomOutTarget !== void 0) {\n          const zoomOutClientRect = zoomOutTarget.getBoundingClientRect()\n          if (props.direction === 'horizontal') {\n            width += zoomOutClientRect.width\n            height = zoomOutClientRect.height > height ? zoomOutClientRect.height : height\n          } else {\n            height += zoomOutClientRect.height\n            width = zoomOutClientRect.width > width ? zoomOutClientRect.width : width\n          }\n        }\n\n        css.width = `${width + 4}px`\n        css.height = `${height + 4}px`\n\n        const side = positionState.attach.value\n        if ((side.bottom || side.top) && !side.left && !side.right) {\n          css.left = '50%'\n          css.transform = 'translate(-50%, 0)'\n        }\n\n        if ((side.left || side.right) && !side.top && !side.bottom) {\n          css.top = '50%'\n          css.transform = 'translate(0, -50%)'\n        }\n      }\n      Object.assign(rootStyle, css)\n    }\n\n    const getContent = (options: VcBtnTooltipProps, type) => {\n      let btnRef\n      let tooltipRef\n      let tip\n      let onClick\n      if (type === 'zoomIn') {\n        btnRef = zoomInRef\n        tooltipRef = zoomControlState.zoomInTooltipRef\n        tip = options.tooltip?.tip || t('vc.navigation.zoomCotrol.zoomInTip')\n        onClick = zoomControlState.zoomIn\n      } else if (type === 'zoomOut') {\n        btnRef = zoomOutRef\n        tooltipRef = zoomControlState.zoomOutTooltipRef\n        tip = options.tooltip?.tip || t('vc.navigation.zoomCotrol.zoomOutTip')\n        onClick = zoomControlState.zoomOut\n      } else if (type === 'zoomReset') {\n        btnRef = zoomResetRef\n        tooltipRef = zoomControlState.resetTooltipRef\n        tip = options.tooltip?.tip || t('vc.navigation.zoomCotrol.zoomResetTip')\n        onClick = zoomControlState.zoomReset\n      }\n      const inner: Array<VNode> = []\n\n      inner.push(\n        h(VcIcon, {\n          name: options.icon,\n          size: options.size\n        })\n      )\n      inner.push(h('div', null, options.label))\n      if (options.tooltip) {\n        inner.push(\n          h(\n            VcTooltip,\n            {\n              ref: tooltipRef,\n              ...(options.tooltip as any)\n            },\n            () => h('strong', null, tip)\n          )\n        )\n      } else {\n        inner.push(createCommentVNode('v-if'))\n      }\n\n      const content = h(\n        VcBtn,\n        {\n          class: `vc-${kebabCase(type)}`,\n          ref: btnRef,\n          size: options.size,\n          flat: options.flat,\n          stack: options.stack,\n          round: options.round,\n          dense: true,\n          style: { color: options.color, background: options.background },\n          onClick: onClick\n        },\n        () => hMergeSlot(ctx.slots.default, inner)\n      )\n\n      return content\n    }\n\n    return () => {\n      if (canRender.value) {\n        const children: Array<VNode> = []\n        children.push(h('li', null, getContent(zoomInOptions.value, 'zoomIn')))\n        if (props.enableResetButton) {\n          children.push(h('li', null, getContent(zoomResetOptions.value, 'zoomReset')))\n        } else {\n          children.push(createCommentVNode('v-if'))\n        }\n        children.push(h('li', null, getContent(zoomOutOptions.value, 'zoomOut')))\n\n        return h(\n          'div',\n          {\n            ref: rootRef,\n            class: 'vc-zoom-control ' + positionState.classes.value,\n            style: rootStyle\n          },\n          h(\n            'ul',\n            {\n              class: 'vc-list'\n            },\n            children\n          )\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\n// export type VcZoomControlProps = ExtractPropTypes<typeof zoomControlProps>\nexport type VcZoomControlEmits = typeof emits\n\nexport type VcZoomControlProps = {\n  /**\n   * Specify the position of the VcZoomControl.\n   * Default value: top-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcZoomControl horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify whether to enable the reset button.\n   * Default value: true\n   */\n  enableResetButton?: boolean\n  /**\n   * Specify the zoom amount of zoom in and zoom out.\n   * Default value: 2\n   */\n  zoomAmount?: number\n  /**\n   * Specify the time of the zoom-in and zoom-out process, in seconds.\n   * Default value: 0.5\n   */\n  duration?: number\n  /**\n   * Specify the time to reset to the default camera position, in seconds.\n   * Default value: 1.5\n   */\n  durationReset?: number\n  /**\n   * Specify the reset camera view.\n   * Default value:\n   * {\n   *    position: {\n   *      lng: 105,\n   *      lat: 30,\n   *      height: 19059568.5\n   *    }\n   * }\n   */\n  defaultResetView?: VcCamera\n  /**\n   * Specify whether to override the camera attribute on the vc-viewer during initialization.\n   * Default value: false\n   */\n  overrideViewerCamera?: boolean\n  /**\n   * Specifies the css background of the VcZoomControl.\n   * Default value: #3f4854\n   */\n  background?: string\n  /**\n   * Specifies the css border of the VcZoomControl.\n   * Default value: solid 1px rgba(255, 255, 255, 0.2)\n   */\n  border?: string\n  /**\n   * Specifies the css border radius of the VcZoomControl.\n   * Default value: 100px\n   */\n  borderRadius?: string\n  /**\n   * Specify the direction of the VcZoomControl.\n   * Default value: vertical\n   */\n  direction?: 'vertical' | 'horizontal'\n  /**\n   * Specify the zoom in parameters.\n   */\n  zoomInOptions?: VcBtnTooltipProps\n  /**\n   * Specify the zoom out parameters.\n   */\n  zoomOutOptions?: VcBtnTooltipProps\n  /**\n   * Specify the reset button parameters.\n   */\n  zoomResetOptions?: VcBtnTooltipProps\n  /**\n   * Triggers before the VcZoomControl is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcZoomControl is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcZoomControl is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when the VcZoomControl is operated.\n   */\n  onZoomEvt?: (evt: VcZoomEvt) => void\n}\n","import { defineComponent, getCurrentInstance, onMounted, onUnmounted, ref, h, createCommentVNode, VNode } from 'vue'\nimport { AnyFunction, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useLocale } from '@vue-cesium/composables'\n\nconst VcPrintView = defineComponent({\n  name: 'VcPrintView',\n  props: {\n    options: Object\n  },\n  setup(props) {\n    // state\n    const ready = ref(false)\n    const printingStarted = ref(false)\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcPrintView'\n    const { t } = useLocale()\n    // methods\n    const checkForImagesReady = () => {\n      if (ready.value) {\n        return\n      }\n\n      const imageTags = props.options?.printWindow.document.getElementsByTagName('img')\n      if (imageTags.length === 0) {\n        return\n      }\n\n      let allImagesReady = true\n      for (let i = 0; allImagesReady && i < imageTags.length; ++i) {\n        allImagesReady = imageTags[i].complete\n      }\n\n      if (allImagesReady) {\n        stopCheckingForImages()\n        ready.value = allImagesReady\n\n        if (ready.value && !printingStarted.value) {\n          if (props.options?.readyCallback) {\n            props.options.readyCallback(props.options.printWindow)\n          }\n          printingStarted.value = true\n        }\n      }\n    }\n\n    let _stopCheckingForImages: AnyFunction<void>\n\n    const stopCheckingForImages = () => {\n      if (_stopCheckingForImages) {\n        _stopCheckingForImages()\n      }\n    }\n\n    onMounted(() => {\n      const printWindow = props.options?.printWindow\n      const mainWindow = window\n\n      const printWindowIntervalId = printWindow?.setInterval(checkForImagesReady, 200)\n      const mainWindowIntervalId = mainWindow.setInterval(checkForImagesReady, 200)\n\n      _stopCheckingForImages = () => {\n        printWindow.clearInterval(printWindowIntervalId)\n        mainWindow.clearInterval(mainWindowIntervalId)\n        ;(_stopCheckingForImages as any) = undefined\n      }\n    })\n\n    onUnmounted(() => {\n      stopCheckingForImages()\n    })\n\n    return () => {\n      const child: Array<VNode> = []\n      child.push(\n        h(\n          'p',\n          {},\n          h('img', {\n            src: props.options?.image,\n            alt: t('vc.navigation.screenshot'),\n            class: 'vc-map-image'\n          })\n        )\n      )\n      if (props.options?.credits.length && props.options?.showCredit) {\n        child.push(h('h1', {}, t('vc.navigation.credit')))\n      } else {\n        child.push(createCommentVNode('v-if'))\n      }\n      if (props.options?.credits.length && props.options?.showCredit) {\n        const inner: Array<VNode> = []\n        props.options?.credits.forEach(credit => {\n          inner.push(\n            h('li', {\n              innerHTML: credit\n            })\n          )\n        })\n        child.push(h('ul', {}, inner))\n      } else {\n        child.push(createCommentVNode('v-if'))\n      }\n      return h('div', {}, child)\n    }\n  }\n})\n\nexport default VcPrintView\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-02-09 16:40:15\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\print\\createPrintView.ts\n */\nimport { createApp } from 'vue'\nimport VcPrintView from './print-view'\n\nconst styles = `\n  .background {\n    width: 100%;\n    fill: rgba(255, 255, 255, 1.0);\n  }\n\n  .map-image {\n    max-width: 95vw;\n    max-height: 95vh;\n  }\n\n  .layer-legends {\n    display: inline;\n    float: left;\n    padding-left: 20px;\n    padding-right: 20px;\n  }\n\n  .layer-title {\n    font-weight: bold;\n  }\n\n  h1, h2, h3 {\n    clear: both;\n  }\n`\n\nconst createPrintView = options => {\n  const { printWindow = window.open(), closeCallback, title } = options\n  if (closeCallback) {\n    printWindow.addEventListener('unload', () => {\n      closeCallback(printWindow)\n    })\n  }\n\n  // Open and immediately close the document. This works around a problem in Firefox that is\n  // captured here: https://bugzilla.mozilla.org/show_bug.cgi?id=667227.\n  // Essentially, when we first create an iframe, it has no document loaded and asynchronously\n  // starts a load of \"about:blank\". If we access the document object and start manipulating it\n  // before that async load completes, a new document will be automatically created. But then\n  // when the async load completes, the original, automatically-created document gets unloaded\n  // and the new \"about:blank\" gets swapped in. End result: everything we add to the DOM before\n  // the async load complete gets lost and Firefox ends up printing a blank page.\n  // Explicitly opening and then closing a new document _seems_ to avoid this.\n  printWindow.document.open()\n  printWindow.document.close()\n  printWindow.document.head.innerHTML = `\n    <meta charset=\"UTF-8\">\n    <title>${options.title}</title>\n    <style>${styles}</style>\n    `\n  printWindow.document.body.innerHTML = '<div id=\"print\"></div>'\n\n  options.printWindow = options.printWindow || printWindow\n\n  const printViewProps = {\n    options\n  }\n\n  const app = createApp(VcPrintView, printViewProps)\n  app.mount(printWindow.document.getElementById('print'))\n}\n\nexport default createPrintView\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-01-22 09:31:31\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\print\\defaultProps.ts\n */\nimport { positionProps } from '@vue-cesium/composables/private/use-position'\nimport type { PropType } from 'vue'\nimport { VcTooltipProps } from '../../ui'\n\nexport default {\n  showCredit: {\n    type: Boolean,\n    default: true\n  },\n  printAutomatically: {\n    type: Boolean,\n    default: false\n  },\n  showPrintView: {\n    type: Boolean,\n    default: true\n  },\n  downloadAutomatically: {\n    type: Boolean,\n    default: false\n  },\n  ...positionProps,\n  icon: {\n    type: String,\n    default: 'vc-icons-capture'\n  },\n  size: {\n    type: String,\n    default: '24px'\n  },\n  color: {\n    type: String,\n    default: '#3f4854'\n  },\n  background: {\n    type: String,\n    default: '#fff'\n  },\n  round: {\n    type: Boolean,\n    default: true\n  },\n  flat: {\n    type: Boolean,\n    default: false\n  },\n  label: String,\n  stack: {\n    type: Boolean,\n    default: false\n  },\n  tooltip: {\n    type: [Boolean, Object] as PropType<false | VcTooltipProps>,\n    default: () =>\n      ({\n        delay: 500,\n        anchor: 'bottom middle',\n        offset: [0, 20],\n        tip: void 0\n      } as VcTooltipProps | false)\n  }\n}\n","/**\n * Tells the web browser to print a given window, which my be an iframe window, and\n * returns a promise that resolves when printing is safely over so that, for example\n * the window can be removed.\n * @param {Window} windowToPrint The window to print.\n * @returns {Promise} A promise that resolves when printing is safely over. The prommise is rejected if\n *                    there is no indication that the browser's print\n */\nfunction printWindow(windowToPrint) {\n  const { when } = Cesium\n  const deferred = when.defer()\n  let printInProgressCount = 0\n\n  const timeout = setTimeout(function () {\n    deferred.reject(false)\n  }, 10000)\n\n  function cancelTimeout() {\n    clearTimeout(timeout)\n  }\n\n  function resolveIfZero() {\n    if (printInProgressCount <= 0) {\n      deferred.resolve()\n    }\n  }\n\n  if (windowToPrint.matchMedia) {\n    windowToPrint.matchMedia('print').addListener(function (evt) {\n      cancelTimeout()\n      if (evt.matches) {\n        ++printInProgressCount\n      } else {\n        --printInProgressCount\n        resolveIfZero()\n      }\n    })\n  }\n\n  windowToPrint.onbeforeprint = function () {\n    cancelTimeout()\n    ++printInProgressCount\n  }\n  windowToPrint.onafterprint = function () {\n    cancelTimeout()\n    --printInProgressCount\n    resolveIfZero()\n  }\n\n  // First try printing with execCommand, because, in IE11, `printWindow.print()`\n  // prints the entire page instead of just the embedded iframe (if the window\n  // is an iframe, anyway).\n  const result = windowToPrint.document.execCommand('print', true, null)\n  if (!result) {\n    windowToPrint.print()\n  }\n\n  return deferred.promise\n}\n\nexport default printWindow\n","import type { ExtractPropTypes, CSSProperties, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, nextTick, ref, h, watch, reactive } from 'vue'\nimport type { VcPrintEvt, VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { $, getVcParentInstance, getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport { captureScreenshot } from '@vue-cesium/utils/cesium-helpers'\nimport { VcBtn, VcTooltip, VcIcon, VcTooltipProps } from '@vue-cesium/components/ui'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport createPrintView from './createPrintView'\nimport defaultProps from './defaultProps'\nimport printWindow from './printWindow'\nimport { isPlainObject } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  printEvt: (evt: VcPrintEvt) => true\n}\nexport const printProps = defaultProps\nexport default defineComponent({\n  name: 'VcPrint',\n  props: printProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcPrint'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { t } = useLocale()\n    const { $services } = commonState\n    const rootRef = ref<HTMLElement | null>(null)\n    const tooltipRef = ref<typeof VcTooltip | null>(null)\n    const btnRef = ref<typeof VcBtn | null>(null)\n    const positionState = usePosition(props, $services)\n    const creatingPrintView = ref(false)\n    const parentInstance = getVcParentInstance(instance)\n    const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n    const canRender = ref(hasVcNavigation)\n    const rootStyle = reactive<CSSProperties>({})\n    // watch\n    watch(\n      () => props,\n      val => {\n        nextTick(() => {\n          if (!instance.mounted) {\n            return\n          }\n          updateRootStyle()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n    // methods\n    instance.createCesiumObject = async () => {\n      return new Promise((resolve, reject) => {\n        canRender.value = true\n        nextTick(() => {\n          const { viewer } = $services\n          if (!hasVcNavigation) {\n            const viewerElement = (viewer as any)._element\n            viewerElement.appendChild($(rootRef))\n            resolve($(rootRef))\n          } else {\n            resolve($(rootRef))\n          }\n        })\n      })\n    }\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)\n      })\n      return true\n    }\n    instance.unmount = async () => {\n      const viewerElement = ($services.viewer as any)._element\n      if (!hasVcNavigation) {\n        viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n      }\n\n      const { viewer } = $services\n\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)\n      })\n      return true\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n\n      if (!hasVcNavigation) {\n        const side = positionState.attach.value\n        const btnTarget = $(btnRef)?.$el\n        if (btnTarget !== void 0) {\n          // const clientRect = btnTarget.getBoundingClientRect()\n          // css.width = `${clientRect.width}px`\n          // css.height = `${clientRect.height}px`\n\n          if ((side.bottom || side.top) && !side.left && !side.right) {\n            css.left = '50%'\n            css.transform = 'translate(-50%, 0)'\n          }\n\n          if ((side.left || side.right) && !side.top && !side.bottom) {\n            css.top = '50%'\n            css.transform = 'translate(0, -50%)'\n          }\n        }\n      }\n\n      Object.assign(rootStyle, css)\n    }\n\n    const onHandleClick = () => {\n      $(tooltipRef)?.hide()\n\n      const { viewer } = $services\n      captureScreenshot(viewer).then(imgSrc => {\n        if (props.downloadAutomatically) {\n          const link = document.createElement('a')\n          link.download = t('vc.navigation.screenshot') || '场景截图'\n          link.style.display = 'none'\n          link.href = imgSrc\n          document.body.appendChild(link)\n          link.click()\n          document.body.removeChild(link)\n        }\n\n        if (props.printAutomatically || props.showPrintView) {\n          if (props.showPrintView) {\n            showPrintView(imgSrc)\n          } else if (props.printAutomatically) {\n            print(imgSrc)\n          }\n        }\n\n        const listener = getInstanceListener(instance, 'printEvt')\n        listener &&\n          ctx.emit('printEvt', {\n            type: 'capture',\n            image: imgSrc,\n            status: 'end'\n          })\n      })\n    }\n\n    const print = image => {\n      create(true, true, image)\n    }\n\n    const showPrintView = image => {\n      create(false, false, image)\n    }\n\n    const create = (hidden, printAutomatically, image) => {\n      creatingPrintView.value = true\n      let iframe\n      if (hidden) {\n        iframe = document.createElement('iframe')\n        document.body.appendChild(iframe)\n      }\n\n      const { viewer } = $services\n\n      createPrintView({\n        image,\n        showCredit: props.showCredit,\n        credits: getCredits(viewer),\n        printWindow: iframe ? iframe.contentWindow : undefined,\n        title: t('vc.navigation.print.printViewTitle'),\n        readyCallback: windowToPrint => {\n          if (printAutomatically) {\n            printWindow(windowToPrint)\n              .otherwise(e => {\n                commonState.logger.warn(e)\n              })\n              .always(() => {\n                if (iframe) {\n                  document.body.removeChild(iframe)\n                }\n                if (hidden) {\n                  creatingPrintView.value = false\n                }\n              })\n          }\n        },\n        closeCallback: windowToPrint => {\n          if (hidden) {\n            creatingPrintView.value = false\n          }\n        }\n      })\n\n      if (!hidden) {\n        creatingPrintView.value = false\n      }\n    }\n\n    const getCredits = viewer => {\n      const credits = viewer.scene.frameState.creditDisplay._currentFrameCredits.screenCredits.values.concat(\n        viewer.scene.frameState.creditDisplay._currentFrameCredits.lightboxCredits.values\n      )\n      return credits.map(credit => credit.html)\n    }\n\n    const onTooltipBeforeShow = e => {\n      if (creatingPrintView.value) {\n        e.cancel = true\n      }\n    }\n\n    return () => {\n      if (canRender.value) {\n        const inner: Array<VNode> = []\n        inner.push(\n          h(VcIcon, {\n            name: props.icon,\n            size: props.size\n          })\n        )\n\n        inner.push(h('div', null, props.label))\n        if (isPlainObject(props.tooltip)) {\n          inner.push(\n            h(\n              VcTooltip,\n              {\n                ref: tooltipRef,\n                onBeforeShow: onTooltipBeforeShow,\n                ...props.tooltip\n              },\n              () => h('strong', null, (isPlainObject(props.tooltip) && props.tooltip.tip) || t('vc.navigation.print.printTip'))\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        const child = [\n          h(\n            VcBtn,\n            {\n              ref: btnRef,\n              size: props.size,\n              disabled: creatingPrintView.value,\n              flat: props.flat,\n              stack: props.stack,\n              round: props.round,\n              style: { color: props.color, background: props.background },\n              dense: true,\n              onClick: onHandleClick\n            },\n            () => inner\n          )\n        ]\n\n        return h(\n          'div',\n          {\n            ref: rootRef,\n            class: 'vc-print ' + positionState.classes.value,\n            style: rootStyle\n          },\n          child\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\n// export type VcPrintProps = ExtractPropTypes<typeof printProps>\nexport type VcPrintEmits = typeof emits\nexport type VcPrintProps = {\n  /**\n   * Specify the position of the VcPrint.\n   * Default value: top-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcPrint horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify whether to display the copyright information of the loaded data when printing pictures.\n   * Default value: true\n   */\n  showCredit?: boolean\n  /**\n   * Specify whether to print automatically. Need to set showPrintView to false.\n   * Default value: false\n   */\n  printAutomatically?: boolean\n  /**\n   * Specify whether to display the print preview.\n   * Default value: true\n   */\n  showPrintView?: boolean\n  /**\n   * Specify whether to download the printed pictures.\n   * Default value: false\n   */\n  downloadAutomatically?: boolean\n  /**\n   * Specify the icon of the VcPrint.\n   * Default value: vc-icons-geolocation\n   */\n  icon?: string\n  /**\n   * Specify the size of the VcPrint.\n   * Default value: 24px\n   */\n  size?: string\n  /**\n   * Specify the css color of the VcPrint.\n   * Default value: #3f4854\n   */\n  color?: string\n  /**\n   * Specify the css background of the VcPrint.\n   * Default value: #fff\n   */\n  background?: string\n  /**\n   * Makes a circle shaped VcPrint.\n   */\n  round?: boolean\n  /**\n   * Use 'flat' design.\n   */\n  flat?: boolean\n  /**\n   * The text that will be shown on the VcPrint.\n   */\n  label?: string\n  /**\n   * Stack icon and label vertically instead of on same line.\n   */\n  stack?: boolean\n  /**\n   * The tooltip parameter.\n   */\n  tooltip?: false | VcTooltipProps\n  /**\n   * Triggers before the VcPrint is loaded.\n   * @param instance\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcPrint is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcPrint is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the print button is clicked.\n   */\n  onPrintEvt?: (evt: VcPrintEvt) => void\n}\n","'use strict';(function(m,p){\"object\"===typeof exports&&\"undefined\"!==typeof module?module.exports=p():\"function\"===typeof define&&define.amd?define(p):(m=m||self,m.AMapLoader=p())})(this,function(){function m(a){var b=[];a.AMapUI&&b.push(p(a.AMapUI));a.Loca&&b.push(r(a.Loca));return Promise.all(b)}function p(a){return new Promise(function(h,c){var f=[];if(a.plugins)for(var e=0;e<a.plugins.length;e+=1)-1==d.AMapUI.plugins.indexOf(a.plugins[e])&&f.push(a.plugins[e]);if(g.AMapUI===b.failed)c(\"\\u524d\\u6b21\\u8bf7\\u6c42 AMapUI \\u5931\\u8d25\");\nelse if(g.AMapUI===b.notload){g.AMapUI=b.loading;d.AMapUI.version=a.version||d.AMapUI.version;e=d.AMapUI.version;var l=document.body||document.head,k=document.createElement(\"script\");k.type=\"text/javascript\";k.src=\"https://webapi.amap.com/ui/\"+e+\"/main.js\";k.onerror=function(a){g.AMapUI=b.failed;c(\"\\u8bf7\\u6c42 AMapUI \\u5931\\u8d25\")};k.onload=function(){g.AMapUI=b.loaded;if(f.length)window.AMapUI.loadUI(f,function(){for(var a=0,b=f.length;a<b;a++){var c=f[a].split(\"/\").slice(-1)[0];window.AMapUI[c]=\narguments[a]}for(h();n.AMapUI.length;)n.AMapUI.splice(0,1)[0]()});else for(h();n.AMapUI.length;)n.AMapUI.splice(0,1)[0]()};l.appendChild(k)}else g.AMapUI===b.loaded?a.version&&a.version!==d.AMapUI.version?c(\"\\u4e0d\\u5141\\u8bb8\\u591a\\u4e2a\\u7248\\u672c AMapUI \\u6df7\\u7528\"):f.length?window.AMapUI.loadUI(f,function(){for(var a=0,b=f.length;a<b;a++){var c=f[a].split(\"/\").slice(-1)[0];window.AMapUI[c]=arguments[a]}h()}):h():a.version&&a.version!==d.AMapUI.version?c(\"\\u4e0d\\u5141\\u8bb8\\u591a\\u4e2a\\u7248\\u672c AMapUI \\u6df7\\u7528\"):\nn.AMapUI.push(function(a){a?c(a):f.length?window.AMapUI.loadUI(f,function(){for(var a=0,b=f.length;a<b;a++){var c=f[a].split(\"/\").slice(-1)[0];window.AMapUI[c]=arguments[a]}h()}):h()})})}function r(a){return new Promise(function(h,c){if(g.Loca===b.failed)c(\"\\u524d\\u6b21\\u8bf7\\u6c42 Loca \\u5931\\u8d25\");else if(g.Loca===b.notload){g.Loca=b.loading;d.Loca.version=a.version||d.Loca.version;var f=d.Loca.version,e=d.AMap.version.startsWith(\"2\"),l=f.startsWith(\"2\");if(e&&!l||!e&&l)c(\"JSAPI \\u4e0e Loca \\u7248\\u672c\\u4e0d\\u5bf9\\u5e94\\uff01\\uff01\");\nelse{e=d.key;l=document.body||document.head;var k=document.createElement(\"script\");k.type=\"text/javascript\";k.src=\"https://webapi.amap.com/loca?v=\"+f+\"&key=\"+e;k.onerror=function(a){g.Loca=b.failed;c(\"\\u8bf7\\u6c42 AMapUI \\u5931\\u8d25\")};k.onload=function(){g.Loca=b.loaded;for(h();n.Loca.length;)n.Loca.splice(0,1)[0]()};l.appendChild(k)}}else g.Loca===b.loaded?a.version&&a.version!==d.Loca.version?c(\"\\u4e0d\\u5141\\u8bb8\\u591a\\u4e2a\\u7248\\u672c Loca \\u6df7\\u7528\"):h():a.version&&a.version!==d.Loca.version?\nc(\"\\u4e0d\\u5141\\u8bb8\\u591a\\u4e2a\\u7248\\u672c Loca \\u6df7\\u7528\"):n.Loca.push(function(a){a?c(a):c()})})}if(!window)throw Error(\"AMap JSAPI can only be used in Browser.\");var b;(function(a){a.notload=\"notload\";a.loading=\"loading\";a.loaded=\"loaded\";a.failed=\"failed\"})(b||(b={}));var d={key:\"\",AMap:{version:\"1.4.15\",plugins:[]},AMapUI:{version:\"1.1\",plugins:[]},Loca:{version:\"1.3.2\"}},g={AMap:b.notload,AMapUI:b.notload,Loca:b.notload},n={AMap:[],AMapUI:[],Loca:[]},q=[],t=function(a){\"function\"==typeof a&&\n(g.AMap===b.loaded?a(window.AMap):q.push(a))};return{load:function(a){return new Promise(function(h,c){if(g.AMap==b.failed)c(\"\");else if(g.AMap==b.notload){var f=a.key,e=a.version,l=a.plugins;f?(window.AMap&&\"lbs.amap.com\"!==location.host&&c(\"\\u7981\\u6b62\\u591a\\u79cdAPI\\u52a0\\u8f7d\\u65b9\\u5f0f\\u6df7\\u7528\"),d.key=f,d.AMap.version=e||d.AMap.version,d.AMap.plugins=l||d.AMap.plugins,g.AMap=b.loading,e=document.body||document.head,window.___onAPILoaded=function(d){delete window.___onAPILoaded;if(d)g.AMap=\nb.failed,c(d);else for(g.AMap=b.loaded,m(a).then(function(){h(window.AMap)})[\"catch\"](c);q.length;)q.splice(0,1)[0]()},l=document.createElement(\"script\"),l.type=\"text/javascript\",l.src=\"https://webapi.amap.com/maps?callback=___onAPILoaded&v=\"+d.AMap.version+\"&key=\"+f+\"&plugin=\"+d.AMap.plugins.join(\",\"),l.onerror=function(a){g.AMap=b.failed;c(a)},e.appendChild(l)):c(\"\\u8bf7\\u586b\\u5199key\")}else if(g.AMap==b.loaded)if(a.key&&a.key!==d.key)c(\"\\u591a\\u4e2a\\u4e0d\\u4e00\\u81f4\\u7684 key\");else if(a.version&&\na.version!==d.AMap.version)c(\"\\u4e0d\\u5141\\u8bb8\\u591a\\u4e2a\\u7248\\u672c JSAPI \\u6df7\\u7528\");else{f=[];if(a.plugins)for(e=0;e<a.plugins.length;e+=1)-1==d.AMap.plugins.indexOf(a.plugins[e])&&f.push(a.plugins[e]);if(f.length)window.AMap.plugin(f,function(){m(a).then(function(){h(window.AMap)})[\"catch\"](c)});else m(a).then(function(){h(window.AMap)})[\"catch\"](c)}else if(a.key&&a.key!==d.key)c(\"\\u591a\\u4e2a\\u4e0d\\u4e00\\u81f4\\u7684 key\");else if(a.version&&a.version!==d.AMap.version)c(\"\\u4e0d\\u5141\\u8bb8\\u591a\\u4e2a\\u7248\\u672c JSAPI \\u6df7\\u7528\");\nelse{var k=[];if(a.plugins)for(e=0;e<a.plugins.length;e+=1)-1==d.AMap.plugins.indexOf(a.plugins[e])&&k.push(a.plugins[e]);t(function(){if(k.length)window.AMap.plugin(k,function(){m(a).then(function(){h(window.AMap)})[\"catch\"](c)});else m(a).then(function(){h(window.AMap)})[\"catch\"](c)})}})},reset:function(){delete window.AMap;delete window.AMapUI;delete window.Loca;d={key:\"\",AMap:{version:\"1.4.15\",plugins:[]},AMapUI:{version:\"1.1\",plugins:[]},Loca:{version:\"1.3.2\"}};g={AMap:b.notload,AMapUI:b.notload,\nLoca:b.notload};n={AMap:[],AMapUI:[],Loca:[]}}}})\n","import { positionProps } from '@vue-cesium/composables/private/use-position'\nimport type { VcColor } from '@vue-cesium/utils/types'\nimport type { PropType } from 'vue'\nimport { VcTooltipProps } from '../../ui/tooltip'\n\nexport default {\n  geolocation: {\n    type: Object as PropType<PositionOptions>,\n    default: () =>\n      ({\n        enableHighAccuracy: true,\n        timeout: 5000,\n        maximumAge: 0\n      } as PositionOptions)\n  },\n  /**\n   *  refer https://developer.amap.com/api/jsapi-v2/documentation#geolocation\n   *  {\n   *    key: '',\n   *    version: '2.0',\n   *    options: {\n   *      timeout: 5000,\n   *      convert: false,\n   *      noGeoLocation: 3,\n   *      needAddress: true\n   *      extensions: 'all'\n   *    },\n   *    transformToWGS84: true\n   *  }\n   */\n  amap: Object as PropType<{\n    key: string\n    version: string\n    options: {\n      timeout?: number\n      convert?: false\n      noGeoLocation?: 0 | 1 | 2 | 3\n      needAddress?: boolean\n      extensions?: 'all' | 'base'\n    }\n    transformToWGS84?: boolean\n  }>,\n  id: {\n    type: String,\n    default: 'My Location'\n  },\n  pointColor: {\n    type: [Array, Object, String] as PropType<VcColor>,\n    default: '#08ABD5'\n  },\n  pixelSize: {\n    type: Number,\n    default: 25 / 2\n  },\n  outlineWidth: {\n    type: Number,\n    default: 3\n  },\n  outlineColor: {\n    type: [Array, Object, String] as PropType<VcColor>,\n    default: '#ffffff'\n  },\n  level: {\n    type: Number,\n    default: 6\n  },\n  duration: {\n    type: Number,\n    default: 3\n  },\n  factor: {\n    type: Number,\n    default: 0.01\n  },\n  maximumHeight: Number,\n  hpr: {\n    type: Array as PropType<Array<number>>,\n    default: () => [0, 0, 3000]\n  },\n  customAPI: Function,\n  description: Function,\n  ...positionProps,\n  icon: {\n    type: String,\n    default: 'vc-icons-geolocation'\n  },\n  size: {\n    type: String,\n    default: '24px'\n  },\n  color: {\n    type: String,\n    default: '#3f4854'\n  },\n  background: {\n    type: String,\n    default: '#fff'\n  },\n  round: {\n    type: Boolean,\n    default: true\n  },\n  flat: {\n    type: Boolean,\n    default: false\n  },\n  label: String,\n  stack: {\n    type: Boolean,\n    default: false\n  },\n  tooltip: {\n    type: [Boolean, Object] as PropType<false | VcTooltipProps>,\n    default: () =>\n      ({\n        delay: 500,\n        anchor: 'bottom middle',\n        offset: [0, 20],\n        tip: void 0\n      } as VcTooltipProps | false)\n  },\n  loadingType: {\n    type: String,\n    default: 'puff'\n  }\n}\n","import AMapLoader from '@amap/amap-jsapi-loader'\nimport type { ExtractPropTypes, CSSProperties, VNode } from 'vue'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, h, nextTick, reactive, ref, watch } from 'vue'\nimport {\n  VcBtn,\n  VcTooltip,\n  VcIcon,\n  VcSpinnerPuff,\n  VcSpinnerOval,\n  VcSpinnerTail,\n  VcSpinnerIos,\n  VcSpinnerOrbit,\n  VcSpinnerBars,\n  VcTooltipProps\n} from '@vue-cesium/components/ui'\nimport type { VcLocationEvt, VcColor, VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { $, getVcParentInstance, getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport { gcj02towgs84 } from '@vue-cesium/utils/coordtransform'\nimport { makeColor, makeCartesian3 } from '@vue-cesium/utils/cesium-helpers'\nimport { isArray, isFunction, isPlainObject } from '@vue-cesium/utils/util'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport defaultProps from './defaultProps'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  locationEvt: (evt: VcLocationEvt) => true\n}\nexport const myLocationProps = defaultProps\nexport default defineComponent({\n  name: 'VcMyLocation',\n  props: myLocationProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcMyLocation'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const { t } = useLocale()\n    const rootRef = ref<HTMLElement | null>(null)\n    const tooltipRef = ref<typeof VcTooltip | null>(null)\n    const btnRef = ref<typeof VcBtn | null>(null)\n    const positioning = ref(false)\n    const positionState = usePosition(props, $services)\n    const parentInstance = getVcParentInstance(instance)\n    const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n    const canRender = ref(hasVcNavigation)\n    const rootStyle = reactive<CSSProperties>({})\n    let datasource: Cesium.CustomDataSource\n    let amapGeolocation: any = undefined\n    // watch\n    watch(\n      () => props,\n      val => {\n        nextTick(() => {\n          if (!instance.mounted) {\n            return\n          }\n          updateRootStyle()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n    // computed\n    const myLocationTip = computed(() => {\n      return positioning.value\n        ? t('vc.navigation.myLocation.positioning')\n        : (isPlainObject(props.tooltip) && props.tooltip.tip) || t('vc.navigation.myLocation.myLocationTip')\n    })\n    // methods\n    instance.createCesiumObject = async () => {\n      canRender.value = true\n      const { viewer } = $services\n      const { CustomDataSource } = Cesium\n      const locationDsArray = viewer.dataSources.getByName('__vc-myLocation__')\n      if (locationDsArray.length) {\n        datasource = locationDsArray[0]\n      } else {\n        viewer.dataSources.add(new CustomDataSource('__vc-myLocation__')).then(ds => {\n          datasource = ds\n        })\n      }\n\n      let promiseLoadAmap: Promise<unknown> | undefined = undefined\n      if (props.amap && props.amap.key) {\n        const options = props.amap.options\n        promiseLoadAmap = new Promise((resolve, reject) => {\n          AMapLoader.load({\n            key: props.amap?.key,\n            version: props.amap?.version,\n            plugins: ['AMap.Geolocation']\n          })\n            .then(Amap => {\n              amapGeolocation = new Amap.Geolocation(options)\n              resolve(amapGeolocation)\n            })\n            .catch(e => {\n              commonState.logger.error(e)\n              reject(e)\n            })\n        })\n      }\n\n      const promiseAppend = new Promise((resolve, reject) => {\n        nextTick(() => {\n          if (!hasVcNavigation) {\n            const viewerElement = ($services.viewer as any)._element\n            viewerElement.appendChild($(rootRef))\n            resolve($(rootRef))\n          } else {\n            resolve($(rootRef))\n          }\n        })\n      })\n      return Promise.all([promiseAppend, promiseLoadAmap]).then(e => {\n        return e[0]\n      })\n    }\n\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)\n      })\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      if (amapGeolocation) {\n        const scripts = document.getElementsByTagName('script')\n        const removeScripts: HTMLScriptElement[] = []\n        for (const script of scripts) {\n          if (script.src.indexOf('/webapi.amap.com/maps') > -1) {\n            removeScripts.push(script)\n          }\n        }\n        removeScripts.forEach(script => {\n          document.getElementsByTagName('body')[0].removeChild(script)\n        })\n      }\n\n      const viewerElement = ($services.viewer as any)._element\n      if (!hasVcNavigation) {\n        viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n      }\n\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)\n      })\n      return viewer.dataSources.remove(datasource, true)\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n\n      if (!hasVcNavigation) {\n        const side = positionState.attach.value\n        const btnTarget = $(btnRef)?.$el\n        if (btnTarget !== void 0) {\n          const clientRect = btnTarget.getBoundingClientRect()\n          // css.width = `${clientRect.width}px`\n          // css.height = `${clientRect.height}px`\n\n          if ((side.bottom || side.top) && !side.left && !side.right) {\n            css.left = '50%'\n            css.transform = 'translate(-50%, 0)'\n          }\n\n          if ((side.left || side.right) && !side.top && !side.bottom) {\n            css.top = '50%'\n            css.transform = 'translate(0, -50%)'\n          }\n        }\n      }\n\n      Object.assign(rootStyle, css)\n    }\n\n    const onHandleClick = () => {\n      $(tooltipRef)?.hide()\n      positioning.value = true\n      if (isFunction(props.customAPI)) {\n        const position = props.customAPI(handleLocationError)\n        zoomToMyLocation(position)\n      } else if (amapGeolocation && props.amap && props.amap.key) {\n        amapGeolocation.getCurrentPosition((status, result) => {\n          if (status === 'complete') {\n            let position: number[] = [result.position.lng, result.position.lat]\n            if (props.amap?.transformToWGS84) {\n              position = gcj02towgs84(position[0], position[1])\n            }\n            zoomToMyLocation(\n              {\n                lng: position[0],\n                lat: position[1],\n                address: result.formattedAddress\n              },\n              result\n            )\n          } else {\n            handleLocationError(t('vc.navigation.myLocation.fail'), result.message)\n          }\n        })\n      } else if (props.geolocation) {\n        navigator.geolocation.getCurrentPosition(\n          position => {\n            zoomToMyLocation(\n              {\n                lng: position.coords.longitude,\n                lat: position.coords.latitude\n              },\n              position\n            )\n          },\n          handleLocationError,\n          {\n            enableHighAccuracy: props.geolocation.enableHighAccuracy,\n            timeout: props.geolocation.timeout,\n            maximumAge: props.geolocation.maximumAge\n          }\n        )\n      } else {\n        handleLocationError(t('vc.navigation.myLocation.fail'))\n      }\n    }\n\n    const zoomToMyLocation = (position, detail?) => {\n      const longitude = position.lng\n      const latitude = position.lat\n      const address = position.address\n      const { Rectangle, sampleTerrain, defined, SceneMode } = Cesium\n      const { viewer } = $services\n      datasource.entities.removeAll()\n      const myPositionEntity = datasource.entities.add({\n        id: props.id,\n        position: makeCartesian3([longitude, latitude], viewer.scene.globe.ellipsoid) as Cesium.Cartesian3,\n        point: {\n          color: makeColor(props.pointColor),\n          pixelSize: props.pixelSize,\n          outlineWidth: props.outlineWidth,\n          outlineColor: makeColor(props.outlineColor)\n        },\n        properties: {\n          ...detail\n        },\n        description:\n          props.description?.call(position, detail) ||\n          describeWithoutUnderscores({\n            [t('vc.navigation.myLocation.lng')]: longitude,\n            [t('vc.navigation.myLocation.lat')]: latitude,\n            [t('vc.navigation.myLocation.address')]: address\n          })\n      })\n\n      const listener = getInstanceListener(instance, 'locationEvt')\n      listener &&\n        ctx.emit('locationEvt', {\n          type: 'location',\n          position,\n          detail,\n          entity: myPositionEntity\n        })\n\n      const options: any = {\n        duration: props.duration\n      }\n\n      defined(props.maximumHeight) && (options.maximumHeight = props.maximumHeight)\n      defined(props.hpr) && isArray(props.hpr) && (options.offset = new Cesium.HeadingPitchRange(props.hpr[0], props.hpr[1], props.hpr[2]))\n\n      if (viewer.scene.mode === SceneMode.SCENE2D || viewer.scene.mode === SceneMode.COLUMBUS_VIEW) {\n        return viewer.flyTo(myPositionEntity, options).then(() => {\n          positioning.value = false\n          listener &&\n            ctx.emit('locationEvt', {\n              type: 'zoomIn',\n              camera: viewer.camera,\n              status: 'end'\n            })\n        })\n      }\n\n      // west, south, east, north, result\n      const factor = props.factor\n      const rectangle = Rectangle.fromDegrees(longitude - factor, latitude - factor, longitude + factor, latitude + factor)\n      const camera = viewer.scene.camera\n      // Work out the destination that the camera would naturally fly to\n      const destinationCartesian = camera.getRectangleCameraCoordinates(rectangle)\n      const destination = viewer.scene.globe.ellipsoid.cartesianToCartographic(destinationCartesian)\n      const terrainProvider = viewer.scene.globe.terrainProvider\n      const level = props.level // A sufficiently coarse tile level that still has approximately accurate height\n      const positions = [Rectangle.center(rectangle)]\n\n      // Perform an elevation query at the centre of the rectangle\n      return sampleTerrain(terrainProvider, level, positions).then(function (results) {\n        // Add terrain elevation to camera altitude\n        const finalDestinationCartographic: any = {\n          longitude: destination.longitude,\n          latitude: destination.latitude,\n          height: destination.height + results[0].height\n        }\n        const finalDestination = viewer.scene.globe.ellipsoid.cartographicToCartesian(finalDestinationCartographic)\n        listener &&\n          ctx.emit('locationEvt', {\n            type: 'zoomIn',\n            camera: viewer.camera,\n            status: 'start'\n          })\n\n        camera.flyTo({\n          duration: props.duration,\n          destination: finalDestination,\n          complete: () => {\n            positioning.value = false\n            listener &&\n              ctx.emit('locationEvt', {\n                type: 'zoomIn',\n                camera: viewer.camera,\n                status: 'end'\n              })\n          },\n          cancel: () => {\n            positioning.value = false\n            listener &&\n              ctx.emit('locationEvt', {\n                type: 'zoomIn',\n                camera: viewer.camera,\n                status: 'cancel'\n              })\n          }\n        })\n      })\n    }\n\n    const describeWithoutUnderscores = (properties, nameProperty?) => {\n      let html = ''\n      if (properties instanceof Cesium.PropertyBag) {\n        // unwrap the properties from the PropertyBag\n        properties = properties.getValue(Cesium.JulianDate.now())\n      }\n      for (let key in properties) {\n        if (Object.prototype.hasOwnProperty.call(properties, key)) {\n          if (key === nameProperty) {\n            continue\n          }\n          let value = properties[key]\n          if (typeof value === 'object') {\n            value = describeWithoutUnderscores(value)\n          } else {\n            // value = formatPropertyValue(value)\n          }\n          key = key.replace(/_/g, ' ')\n          if (Cesium.defined(value)) {\n            html += '<tr><th>' + key + '</th><td>' + value + '</td></tr>'\n          }\n        }\n      }\n      if (html.length > 0) {\n        html = '<table class=\"cesium-infoBox-defaultTable\"><tbody>' + html + '</tbody></table>'\n      }\n      return html\n    }\n\n    const handleLocationError = (...args) => {\n      positioning.value = false\n      commonState.logger.error(...args)\n    }\n\n    const getLoadingCmp = () => {\n      switch (props.loadingType) {\n        case 'bars':\n          return VcSpinnerBars\n        case 'ios':\n          return VcSpinnerIos\n        case 'orbit':\n          return VcSpinnerOrbit\n        case 'oval':\n          return VcSpinnerOval\n        case 'puff':\n          return VcSpinnerPuff\n        case 'tail':\n          return VcSpinnerTail\n        default:\n          return VcSpinnerBars\n      }\n    }\n\n    const onTooltipBeforeShow = e => {\n      if (positioning.value) {\n        e.cancel = true\n      }\n    }\n\n    return () => {\n      if (canRender.value) {\n        const inner: VNode[] = []\n        inner.push(\n          h(VcIcon, {\n            name: props.icon,\n            size: props.size\n          })\n        )\n\n        inner.push(h('div', null, props.label))\n\n        if (isPlainObject(props.tooltip)) {\n          inner.push(\n            h(\n              VcTooltip,\n              {\n                ref: tooltipRef,\n                onBeforeShow: onTooltipBeforeShow,\n                ...props.tooltip\n              },\n              () => h('strong', null, myLocationTip.value)\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        return h(\n          'div',\n          {\n            ref: rootRef,\n            class: 'vc-my-location ' + positionState.classes.value,\n            style: rootStyle\n          },\n          [\n            h(\n              VcBtn,\n              {\n                ref: btnRef,\n                size: props.size,\n                flat: props.flat,\n                stack: props.stack,\n                round: props.round,\n                loading: positioning.value,\n                dense: true,\n                style: { color: props.color, background: props.background },\n                onClick: onHandleClick\n              },\n              {\n                default: () => inner,\n                loading: () => h(getLoadingCmp())\n              }\n            )\n          ]\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\n// export type VcMyLocationProps = ExtractPropTypes<typeof myLocationProps>\nexport type VcMyLocationEmits = typeof emits\nexport type VcMyLocationProps = {\n  /**\n   * Specify the position of the VcDistanceLegend.\n   * Default value: top-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcDistanceLegend horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify the browser geolocation positioning parameters.\n   * Default value:\n   * {\n   *    enableHighAccuracy: true,\n   *    timeout: 5000,\n   *    maximumAge: 0\n   * }\n   */\n  geolocation?: PositionOptions\n  /**\n   * Specify the AMap positioning parameters. If set, use AMap api positioning first.\n   */\n  amap?: {\n    key: string\n    version: string\n    options: {\n      timeout?: number\n      convert?: false\n      noGeoLocation?: 0 | 1 | 2 | 3\n      needAddress?: boolean\n      extensions?: 'all' | 'base'\n    }\n    transformToWGS84?: boolean\n  }\n  /**\n   * Specify the id of the location point after the positioning is successful.\n   */\n  id?: string\n  /**\n   * Specify the color of the location point after the positioning is successful.\n   * Default value: #08ABD5\n   */\n  pointColor?: VcColor\n  /**\n   * Specify the pixel size of the location point after the positioning is successful.\n   * Default value: 12\n   */\n  pixelSize?: number\n  /**\n   * Specify the outline width of the location point after the positioning is successful.\n   * Default value: 3\n   */\n  outlineWidth?: number\n  /**\n   * Specify the outline color of the location point after the positioning is successful.\n   * Default value: #fff\n   */\n  outlineColor?: VcColor\n  /**\n   * Specify the sampling level when the altitude is automatically recognized based on the terrain after the positioning is successful.\n   * Default value: 6\n   */\n  level?: number\n  /**\n   * Specify the time to fly to the location point.\n   * Default value: 3\n   */\n  duration?: number\n  /**\n   * Specify the factor by which the anchor point is converted to a rectangle.\n   * Default: 0.01\n   */\n  factor?: number\n  /**\n   * The maximum height at the peak of the flight.\n   */\n  maximumHeight?: number\n  /**\n   * The offset from the target in the local east-north-up reference frame centered at the target. 2D or Columbus view works.\n   */\n  hpr?: [number, number, number]\n  /**\n   * Specify a custom API for positioning.\n   */\n  customAPI?: (errorCallback) => { lng: number; lat: number }\n  /**\n   * Specify the description of the location point\n   */\n  description?: (position, detail) => string\n  /**\n   * Specify the icon of the VcMyLocation.\n   * Default value: vc-icons-geolocation\n   */\n  icon?: string\n  /**\n   * Specify the size of the VcMyLocation.\n   * Default value: 24px\n   */\n  size?: string\n  /**\n   * Specify the css color of the VcMyLocation.\n   * Default value: #3f4854\n   */\n  color?: string\n  /**\n   * Specify the css background of the VcMyLocation.\n   * Default value: #fff\n   */\n  background?: string\n  /**\n   * Makes a circle shaped VcMyLocation.\n   */\n  round?: boolean\n  /**\n   * Use 'flat' design.\n   */\n  flat?: boolean\n  /**\n   * The text that will be shown on the VcMyLocation.\n   */\n  label?: string\n  /**\n   * Stack icon and label vertically instead of on same line.\n   */\n  stack?: boolean\n  /**\n   * The tooltip parameter.\n   */\n  tooltip?: false | VcTooltipProps\n  loadingType?: string\n  /**\n   * Triggers before the VcCompass is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCompass is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcCompass is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the positioning button is clicked.\n   */\n  onLocationEvt?: (evt: VcLocationEvt) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2021-09-23 11:15:41\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\status-bar\\prettifyCoordinates.ts\n */\n/**\n * Turns the longitude / latitude in degrees into a human readable pretty strings.\n *\n * @param {Number} longitude The longitude to format.\n * @param {Number} latitude The latitude to format.\n * @param {Object} options Object with the following properties:\n * @param {Number} options.height The height.\n * @param {Number} options.errorBar The error +/- for the height.\n * @param {Number} options.digits The number of digits to fix the lat / lon to.\n */\nfunction prettifyCoordinates(longitude, latitude, options) {\n  const result = {\n    latitude: '',\n    longitude: '',\n    elevation: ''\n  }\n  const { defaultValue, defined } = Cesium\n  const optionsDefaulted = defaultValue(options, {})\n  const digits = defaultValue(optionsDefaulted.digits, 5)\n\n  result.latitude = Math.abs(latitude).toFixed(digits) + '°' + (latitude < 0.0 ? 'S' : 'N')\n  result.longitude = Math.abs(longitude).toFixed(digits) + '°' + (longitude < 0.0 ? 'W' : 'E')\n\n  if (defined(optionsDefaulted.height)) {\n    result.elevation =\n      Math.round(optionsDefaulted.height) + (defined(optionsDefaulted.errorBar) ? '±' + Math.round(optionsDefaulted.errorBar) : '') + 'm'\n  } else {\n    result.elevation = ''\n  }\n\n  return result\n}\n\nexport default prettifyCoordinates\n","export default function(defs) {\n  defs('EPSG:4326', \"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\");\n  defs('EPSG:4269', \"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\");\n  defs('EPSG:3857', \"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\");\n\n  defs.WGS84 = defs['EPSG:4326'];\n  defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857\n  defs.GOOGLE = defs['EPSG:3857'];\n  defs['EPSG:900913'] = defs['EPSG:3857'];\n  defs['EPSG:102113'] = defs['EPSG:3857'];\n}\n","export var PJD_3PARAM = 1;\nexport var PJD_7PARAM = 2;\nexport var PJD_GRIDSHIFT = 3;\nexport var PJD_WGS84 = 4; // WGS84 or equivalent\nexport var PJD_NODATUM = 5; // WGS84 or equivalent\nexport var SRS_WGS84_SEMIMAJOR = 6378137.0;  // only used in grid shift transforms\nexport var SRS_WGS84_SEMIMINOR = 6356752.314;  // only used in grid shift transforms\nexport var SRS_WGS84_ESQUARED = 0.0066943799901413165; // only used in grid shift transforms\nexport var SEC_TO_RAD = 4.84813681109535993589914102357e-6;\nexport var HALF_PI = Math.PI/2;\n// ellipoid pj_set_ell.c\nexport var SIXTH = 0.1666666666666666667;\n/* 1/6 */\nexport var RA4 = 0.04722222222222222222;\n/* 17/360 */\nexport var RA6 = 0.02215608465608465608;\nexport var EPSLN = 1.0e-10;\n// you'd think you could use Number.EPSILON above but that makes\n// Mollweide get into an infinate loop.\n\nexport var D2R = 0.01745329251994329577;\nexport var R2D = 57.29577951308232088;\nexport var FORTPI = Math.PI/4;\nexport var TWO_PI = Math.PI * 2;\n// SPI is slightly greater than Math.PI, so values that exceed the -180..180\n// degree range by a tiny amount don't get wrapped. This prevents points that\n// have drifted from their original location along the 180th meridian (due to\n// floating point error) from changing their sign.\nexport var SPI = 3.14159265359;\n","var exports = {};\nexport {exports as default};\n\nexports.greenwich = 0.0; //\"0dE\",\nexports.lisbon = -9.131906111111; //\"9d07'54.862\\\"W\",\nexports.paris = 2.337229166667; //\"2d20'14.025\\\"E\",\nexports.bogota = -74.080916666667; //\"74d04'51.3\\\"W\",\nexports.madrid = -3.687938888889; //\"3d41'16.58\\\"W\",\nexports.rome = 12.452333333333; //\"12d27'8.4\\\"E\",\nexports.bern = 7.439583333333; //\"7d26'22.5\\\"E\",\nexports.jakarta = 106.807719444444; //\"106d48'27.79\\\"E\",\nexports.ferro = -17.666666666667; //\"17d40'W\",\nexports.brussels = 4.367975; //\"4d22'4.71\\\"E\",\nexports.stockholm = 18.058277777778; //\"18d3'29.8\\\"E\",\nexports.athens = 23.7163375; //\"23d42'58.815\\\"E\",\nexports.oslo = 10.722916666667; //\"10d43'22.5\\\"E\"\n","export default {\n  ft: {to_meter: 0.3048},\n  'us-ft': {to_meter: 1200 / 3937}\n};\n","var ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nexport default function match(obj, key) {\n  if (obj[key]) {\n    return obj[key];\n  }\n  var keys = Object.keys(obj);\n  var lkey = key.toLowerCase().replace(ignoredChar, '');\n  var i = -1;\n  var testkey, processedKey;\n  while (++i < keys.length) {\n    testkey = keys[i];\n    processedKey = testkey.toLowerCase().replace(ignoredChar, '');\n    if (processedKey === lkey) {\n      return obj[testkey];\n    }\n  }\n}\n","import {D2R} from './constants/values';\nimport PrimeMeridian from './constants/PrimeMeridian';\nimport units from './constants/units';\nimport match from './match';\n\nexport default function(defData) {\n  var self = {};\n  var paramObj = defData.split('+').map(function(v) {\n    return v.trim();\n  }).filter(function(a) {\n    return a;\n  }).reduce(function(p, a) {\n    var split = a.split('=');\n    split.push(true);\n    p[split[0].toLowerCase()] = split[1];\n    return p;\n  }, {});\n  var paramName, paramVal, paramOutname;\n  var params = {\n    proj: 'projName',\n    datum: 'datumCode',\n    rf: function(v) {\n      self.rf = parseFloat(v);\n    },\n    lat_0: function(v) {\n      self.lat0 = v * D2R;\n    },\n    lat_1: function(v) {\n      self.lat1 = v * D2R;\n    },\n    lat_2: function(v) {\n      self.lat2 = v * D2R;\n    },\n    lat_ts: function(v) {\n      self.lat_ts = v * D2R;\n    },\n    lon_0: function(v) {\n      self.long0 = v * D2R;\n    },\n    lon_1: function(v) {\n      self.long1 = v * D2R;\n    },\n    lon_2: function(v) {\n      self.long2 = v * D2R;\n    },\n    alpha: function(v) {\n      self.alpha = parseFloat(v) * D2R;\n    },\n    gamma: function(v) {\n      self.rectified_grid_angle = parseFloat(v);\n    },\n    lonc: function(v) {\n      self.longc = v * D2R;\n    },\n    x_0: function(v) {\n      self.x0 = parseFloat(v);\n    },\n    y_0: function(v) {\n      self.y0 = parseFloat(v);\n    },\n    k_0: function(v) {\n      self.k0 = parseFloat(v);\n    },\n    k: function(v) {\n      self.k0 = parseFloat(v);\n    },\n    a: function(v) {\n      self.a = parseFloat(v);\n    },\n    b: function(v) {\n      self.b = parseFloat(v);\n    },\n    r_a: function() {\n      self.R_A = true;\n    },\n    zone: function(v) {\n      self.zone = parseInt(v, 10);\n    },\n    south: function() {\n      self.utmSouth = true;\n    },\n    towgs84: function(v) {\n      self.datum_params = v.split(\",\").map(function(a) {\n        return parseFloat(a);\n      });\n    },\n    to_meter: function(v) {\n      self.to_meter = parseFloat(v);\n    },\n    units: function(v) {\n      self.units = v;\n      var unit = match(units, v);\n      if (unit) {\n        self.to_meter = unit.to_meter;\n      }\n    },\n    from_greenwich: function(v) {\n      self.from_greenwich = v * D2R;\n    },\n    pm: function(v) {\n      var pm = match(PrimeMeridian, v);\n      self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R;\n    },\n    nadgrids: function(v) {\n      if (v === '@null') {\n        self.datumCode = 'none';\n      }\n      else {\n        self.nadgrids = v;\n      }\n    },\n    axis: function(v) {\n      var legalAxis = \"ewnsud\";\n      if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {\n        self.axis = v;\n      }\n    },\n    approx: function() {\n      self.approx = true;\n    }\n  };\n  for (paramName in paramObj) {\n    paramVal = paramObj[paramName];\n    if (paramName in params) {\n      paramOutname = params[paramName];\n      if (typeof paramOutname === 'function') {\n        paramOutname(paramVal);\n      }\n      else {\n        self[paramOutname] = paramVal;\n      }\n    }\n    else {\n      self[paramName] = paramVal;\n    }\n  }\n  if(typeof self.datumCode === 'string' && self.datumCode !== \"WGS84\"){\n    self.datumCode = self.datumCode.toLowerCase();\n  }\n  return self;\n}\n","export default parseString;\n\nvar NEUTRAL = 1;\nvar KEYWORD = 2;\nvar NUMBER = 3;\nvar QUOTED = 4;\nvar AFTERQUOTE = 5;\nvar ENDED = -1;\nvar whitespace = /\\s/;\nvar latin = /[A-Za-z]/;\nvar keyword = /[A-Za-z84]/;\nvar endThings = /[,\\]]/;\nvar digets = /[\\d\\.E\\-\\+]/;\n// const ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nfunction Parser(text) {\n  if (typeof text !== 'string') {\n    throw new Error('not a string');\n  }\n  this.text = text.trim();\n  this.level = 0;\n  this.place = 0;\n  this.root = null;\n  this.stack = [];\n  this.currentObject = null;\n  this.state = NEUTRAL;\n}\nParser.prototype.readCharicter = function() {\n  var char = this.text[this.place++];\n  if (this.state !== QUOTED) {\n    while (whitespace.test(char)) {\n      if (this.place >= this.text.length) {\n        return;\n      }\n      char = this.text[this.place++];\n    }\n  }\n  switch (this.state) {\n    case NEUTRAL:\n      return this.neutral(char);\n    case KEYWORD:\n      return this.keyword(char)\n    case QUOTED:\n      return this.quoted(char);\n    case AFTERQUOTE:\n      return this.afterquote(char);\n    case NUMBER:\n      return this.number(char);\n    case ENDED:\n      return;\n  }\n};\nParser.prototype.afterquote = function(char) {\n  if (char === '\"') {\n    this.word += '\"';\n    this.state = QUOTED;\n    return;\n  }\n  if (endThings.test(char)) {\n    this.word = this.word.trim();\n    this.afterItem(char);\n    return;\n  }\n  throw new Error('havn\\'t handled \"' +char + '\" in afterquote yet, index ' + this.place);\n};\nParser.prototype.afterItem = function(char) {\n  if (char === ',') {\n    if (this.word !== null) {\n      this.currentObject.push(this.word);\n    }\n    this.word = null;\n    this.state = NEUTRAL;\n    return;\n  }\n  if (char === ']') {\n    this.level--;\n    if (this.word !== null) {\n      this.currentObject.push(this.word);\n      this.word = null;\n    }\n    this.state = NEUTRAL;\n    this.currentObject = this.stack.pop();\n    if (!this.currentObject) {\n      this.state = ENDED;\n    }\n\n    return;\n  }\n};\nParser.prototype.number = function(char) {\n  if (digets.test(char)) {\n    this.word += char;\n    return;\n  }\n  if (endThings.test(char)) {\n    this.word = parseFloat(this.word);\n    this.afterItem(char);\n    return;\n  }\n  throw new Error('havn\\'t handled \"' +char + '\" in number yet, index ' + this.place);\n};\nParser.prototype.quoted = function(char) {\n  if (char === '\"') {\n    this.state = AFTERQUOTE;\n    return;\n  }\n  this.word += char;\n  return;\n};\nParser.prototype.keyword = function(char) {\n  if (keyword.test(char)) {\n    this.word += char;\n    return;\n  }\n  if (char === '[') {\n    var newObjects = [];\n    newObjects.push(this.word);\n    this.level++;\n    if (this.root === null) {\n      this.root = newObjects;\n    } else {\n      this.currentObject.push(newObjects);\n    }\n    this.stack.push(this.currentObject);\n    this.currentObject = newObjects;\n    this.state = NEUTRAL;\n    return;\n  }\n  if (endThings.test(char)) {\n    this.afterItem(char);\n    return;\n  }\n  throw new Error('havn\\'t handled \"' +char + '\" in keyword yet, index ' + this.place);\n};\nParser.prototype.neutral = function(char) {\n  if (latin.test(char)) {\n    this.word = char;\n    this.state = KEYWORD;\n    return;\n  }\n  if (char === '\"') {\n    this.word = '';\n    this.state = QUOTED;\n    return;\n  }\n  if (digets.test(char)) {\n    this.word = char;\n    this.state = NUMBER;\n    return;\n  }\n  if (endThings.test(char)) {\n    this.afterItem(char);\n    return;\n  }\n  throw new Error('havn\\'t handled \"' +char + '\" in neutral yet, index ' + this.place);\n};\nParser.prototype.output = function() {\n  while (this.place < this.text.length) {\n    this.readCharicter();\n  }\n  if (this.state === ENDED) {\n    return this.root;\n  }\n  throw new Error('unable to parse string \"' +this.text + '\". State is ' + this.state);\n};\n\nfunction parseString(txt) {\n  var parser = new Parser(txt);\n  return parser.output();\n}\n","\n\nfunction mapit(obj, key, value) {\n  if (Array.isArray(key)) {\n    value.unshift(key);\n    key = null;\n  }\n  var thing = key ? {} : obj;\n\n  var out = value.reduce(function(newObj, item) {\n    sExpr(item, newObj);\n    return newObj\n  }, thing);\n  if (key) {\n    obj[key] = out;\n  }\n}\n\nexport function sExpr(v, obj) {\n  if (!Array.isArray(v)) {\n    obj[v] = true;\n    return;\n  }\n  var key = v.shift();\n  if (key === 'PARAMETER') {\n    key = v.shift();\n  }\n  if (v.length === 1) {\n    if (Array.isArray(v[0])) {\n      obj[key] = {};\n      sExpr(v[0], obj[key]);\n      return;\n    }\n    obj[key] = v[0];\n    return;\n  }\n  if (!v.length) {\n    obj[key] = true;\n    return;\n  }\n  if (key === 'TOWGS84') {\n    obj[key] = v;\n    return;\n  }\n  if (key === 'AXIS') {\n    if (!(key in obj)) {\n      obj[key] = [];\n    }\n    obj[key].push(v);\n    return;\n  }\n  if (!Array.isArray(key)) {\n    obj[key] = {};\n  }\n\n  var i;\n  switch (key) {\n    case 'UNIT':\n    case 'PRIMEM':\n    case 'VERT_DATUM':\n      obj[key] = {\n        name: v[0].toLowerCase(),\n        convert: v[1]\n      };\n      if (v.length === 3) {\n        sExpr(v[2], obj[key]);\n      }\n      return;\n    case 'SPHEROID':\n    case 'ELLIPSOID':\n      obj[key] = {\n        name: v[0],\n        a: v[1],\n        rf: v[2]\n      };\n      if (v.length === 4) {\n        sExpr(v[3], obj[key]);\n      }\n      return;\n    case 'PROJECTEDCRS':\n    case 'PROJCRS':\n    case 'GEOGCS':\n    case 'GEOCCS':\n    case 'PROJCS':\n    case 'LOCAL_CS':\n    case 'GEODCRS':\n    case 'GEODETICCRS':\n    case 'GEODETICDATUM':\n    case 'EDATUM':\n    case 'ENGINEERINGDATUM':\n    case 'VERT_CS':\n    case 'VERTCRS':\n    case 'VERTICALCRS':\n    case 'COMPD_CS':\n    case 'COMPOUNDCRS':\n    case 'ENGINEERINGCRS':\n    case 'ENGCRS':\n    case 'FITTED_CS':\n    case 'LOCAL_DATUM':\n    case 'DATUM':\n      v[0] = ['name', v[0]];\n      mapit(obj, key, v);\n      return;\n    default:\n      i = -1;\n      while (++i < v.length) {\n        if (!Array.isArray(v[i])) {\n          return sExpr(v, obj[key]);\n        }\n      }\n      return mapit(obj, key, v);\n  }\n}\n","var D2R = 0.01745329251994329577;\nimport parser from './parser';\nimport {sExpr} from './process';\n\n\n\nfunction rename(obj, params) {\n  var outName = params[0];\n  var inName = params[1];\n  if (!(outName in obj) && (inName in obj)) {\n    obj[outName] = obj[inName];\n    if (params.length === 3) {\n      obj[outName] = params[2](obj[outName]);\n    }\n  }\n}\n\nfunction d2r(input) {\n  return input * D2R;\n}\n\nfunction cleanWKT(wkt) {\n  if (wkt.type === 'GEOGCS') {\n    wkt.projName = 'longlat';\n  } else if (wkt.type === 'LOCAL_CS') {\n    wkt.projName = 'identity';\n    wkt.local = true;\n  } else {\n    if (typeof wkt.PROJECTION === 'object') {\n      wkt.projName = Object.keys(wkt.PROJECTION)[0];\n    } else {\n      wkt.projName = wkt.PROJECTION;\n    }\n  }\n  if (wkt.AXIS) {\n    var axisOrder = '';\n    for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) {\n      var axis = [wkt.AXIS[i][0].toLowerCase(), wkt.AXIS[i][1].toLowerCase()];\n      if (axis[0].indexOf('north') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'north')) {\n        axisOrder += 'n';\n      } else if (axis[0].indexOf('south') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'south')) {\n        axisOrder += 's';\n      } else if (axis[0].indexOf('east') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'east')) {\n        axisOrder += 'e';\n      } else if (axis[0].indexOf('west') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'west')) {\n        axisOrder += 'w';\n      }\n    }\n    if (axisOrder.length === 2) {\n      axisOrder += 'u';\n    }\n    if (axisOrder.length === 3) {\n      wkt.axis = axisOrder;\n    }\n  }\n  if (wkt.UNIT) {\n    wkt.units = wkt.UNIT.name.toLowerCase();\n    if (wkt.units === 'metre') {\n      wkt.units = 'meter';\n    }\n    if (wkt.UNIT.convert) {\n      if (wkt.type === 'GEOGCS') {\n        if (wkt.DATUM && wkt.DATUM.SPHEROID) {\n          wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;\n        }\n      } else {\n        wkt.to_meter = wkt.UNIT.convert;\n      }\n    }\n  }\n  var geogcs = wkt.GEOGCS;\n  if (wkt.type === 'GEOGCS') {\n    geogcs = wkt;\n  }\n  if (geogcs) {\n    //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){\n    //  wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;\n    //}\n    if (geogcs.DATUM) {\n      wkt.datumCode = geogcs.DATUM.name.toLowerCase();\n    } else {\n      wkt.datumCode = geogcs.name.toLowerCase();\n    }\n    if (wkt.datumCode.slice(0, 2) === 'd_') {\n      wkt.datumCode = wkt.datumCode.slice(2);\n    }\n    if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {\n      wkt.datumCode = 'nzgd49';\n    }\n    if (wkt.datumCode === 'wgs_1984' || wkt.datumCode === 'world_geodetic_system_1984') {\n      if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {\n        wkt.sphere = true;\n      }\n      wkt.datumCode = 'wgs84';\n    }\n    if (wkt.datumCode.slice(-6) === '_ferro') {\n      wkt.datumCode = wkt.datumCode.slice(0, - 6);\n    }\n    if (wkt.datumCode.slice(-8) === '_jakarta') {\n      wkt.datumCode = wkt.datumCode.slice(0, - 8);\n    }\n    if (~wkt.datumCode.indexOf('belge')) {\n      wkt.datumCode = 'rnb72';\n    }\n    if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {\n      wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\\_18/, 'clrk');\n      if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {\n        wkt.ellps = 'intl';\n      }\n\n      wkt.a = geogcs.DATUM.SPHEROID.a;\n      wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);\n    }\n\n    if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {\n      wkt.datum_params = geogcs.DATUM.TOWGS84;\n    }\n    if (~wkt.datumCode.indexOf('osgb_1936')) {\n      wkt.datumCode = 'osgb36';\n    }\n    if (~wkt.datumCode.indexOf('osni_1952')) {\n      wkt.datumCode = 'osni52';\n    }\n    if (~wkt.datumCode.indexOf('tm65')\n      || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {\n      wkt.datumCode = 'ire65';\n    }\n    if (wkt.datumCode === 'ch1903+') {\n      wkt.datumCode = 'ch1903';\n    }\n    if (~wkt.datumCode.indexOf('israel')) {\n      wkt.datumCode = 'isr93';\n    }\n  }\n  if (wkt.b && !isFinite(wkt.b)) {\n    wkt.b = wkt.a;\n  }\n\n  function toMeter(input) {\n    var ratio = wkt.to_meter || 1;\n    return input * ratio;\n  }\n  var renamer = function(a) {\n    return rename(wkt, a);\n  };\n  var list = [\n    ['standard_parallel_1', 'Standard_Parallel_1'],\n    ['standard_parallel_1', 'Latitude of 1st standard parallel'],\n    ['standard_parallel_2', 'Standard_Parallel_2'],\n    ['standard_parallel_2', 'Latitude of 2nd standard parallel'],\n    ['false_easting', 'False_Easting'],\n    ['false_easting', 'False easting'],\n    ['false-easting', 'Easting at false origin'],\n    ['false_northing', 'False_Northing'],\n    ['false_northing', 'False northing'],\n    ['false_northing', 'Northing at false origin'],\n    ['central_meridian', 'Central_Meridian'],\n    ['central_meridian', 'Longitude of natural origin'],\n    ['central_meridian', 'Longitude of false origin'],\n    ['latitude_of_origin', 'Latitude_Of_Origin'],\n    ['latitude_of_origin', 'Central_Parallel'],\n    ['latitude_of_origin', 'Latitude of natural origin'],\n    ['latitude_of_origin', 'Latitude of false origin'],\n    ['scale_factor', 'Scale_Factor'],\n    ['k0', 'scale_factor'],\n    ['latitude_of_center', 'Latitude_Of_Center'],\n    ['latitude_of_center', 'Latitude_of_center'],\n    ['lat0', 'latitude_of_center', d2r],\n    ['longitude_of_center', 'Longitude_Of_Center'],\n    ['longitude_of_center', 'Longitude_of_center'],\n    ['longc', 'longitude_of_center', d2r],\n    ['x0', 'false_easting', toMeter],\n    ['y0', 'false_northing', toMeter],\n    ['long0', 'central_meridian', d2r],\n    ['lat0', 'latitude_of_origin', d2r],\n    ['lat0', 'standard_parallel_1', d2r],\n    ['lat1', 'standard_parallel_1', d2r],\n    ['lat2', 'standard_parallel_2', d2r],\n    ['azimuth', 'Azimuth'],\n    ['alpha', 'azimuth', d2r],\n    ['srsCode', 'name']\n  ];\n  list.forEach(renamer);\n  if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {\n    wkt.long0 = wkt.longc;\n  }\n  if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {\n    wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);\n    wkt.lat_ts = wkt.lat1;\n  }\n}\nexport default function(wkt) {\n  var lisp = parser(wkt);\n  var type = lisp.shift();\n  var name = lisp.shift();\n  lisp.unshift(['name', name]);\n  lisp.unshift(['type', type]);\n  var obj = {};\n  sExpr(lisp, obj);\n  cleanWKT(obj);\n  return obj;\n}\n","import globals from './global';\nimport parseProj from './projString';\nimport wkt from 'wkt-parser';\n\nfunction defs(name) {\n  /*global console*/\n  var that = this;\n  if (arguments.length === 2) {\n    var def = arguments[1];\n    if (typeof def === 'string') {\n      if (def.charAt(0) === '+') {\n        defs[name] = parseProj(arguments[1]);\n      }\n      else {\n        defs[name] = wkt(arguments[1]);\n      }\n    } else {\n      defs[name] = def;\n    }\n  }\n  else if (arguments.length === 1) {\n    if (Array.isArray(name)) {\n      return name.map(function(v) {\n        if (Array.isArray(v)) {\n          defs.apply(that, v);\n        }\n        else {\n          defs(v);\n        }\n      });\n    }\n    else if (typeof name === 'string') {\n      if (name in defs) {\n        return defs[name];\n      }\n    }\n    else if ('EPSG' in name) {\n      defs['EPSG:' + name.EPSG] = name;\n    }\n    else if ('ESRI' in name) {\n      defs['ESRI:' + name.ESRI] = name;\n    }\n    else if ('IAU2000' in name) {\n      defs['IAU2000:' + name.IAU2000] = name;\n    }\n    else {\n      console.log(name);\n    }\n    return;\n  }\n\n\n}\nglobals(defs);\nexport default defs;\n","import defs from './defs';\nimport wkt from 'wkt-parser';\nimport projStr from './projString';\nimport match from './match';\nfunction testObj(code){\n  return typeof code === 'string';\n}\nfunction testDef(code){\n  return code in defs;\n}\nvar codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];\nfunction testWKT(code){\n  return codeWords.some(function (word) {\n    return code.indexOf(word) > -1;\n  });\n}\nvar codes = ['3857', '900913', '3785', '102113'];\nfunction checkMercator(item) {\n  var auth = match(item, 'authority');\n  if (!auth) {\n    return;\n  }\n  var code = match(auth, 'epsg');\n  return code && codes.indexOf(code) > -1;\n}\nfunction checkProjStr(item) {\n  var ext = match(item, 'extension');\n  if (!ext) {\n    return;\n  }\n  return match(ext, 'proj4');\n}\nfunction testProj(code){\n  return code[0] === '+';\n}\nfunction parse(code){\n  if (testObj(code)) {\n    //check to see if this is a WKT string\n    if (testDef(code)) {\n      return defs[code];\n    }\n    if (testWKT(code)) {\n      var out = wkt(code);\n      // test of spetial case, due to this being a very common and often malformed\n      if (checkMercator(out)) {\n        return defs['EPSG:3857'];\n      }\n      var maybeProjStr = checkProjStr(out);\n      if (maybeProjStr) {\n        return projStr(maybeProjStr);\n      }\n      return out;\n    }\n    if (testProj(code)) {\n      return projStr(code);\n    }\n  }else{\n    return code;\n  }\n}\n\nexport default parse;\n","export default function(destination, source) {\n  destination = destination || {};\n  var value, property;\n  if (!source) {\n    return destination;\n  }\n  for (property in source) {\n    value = source[property];\n    if (value !== undefined) {\n      destination[property] = value;\n    }\n  }\n  return destination;\n}\n","export default function(eccent, sinphi, cosphi) {\n  var con = eccent * sinphi;\n  return cosphi / (Math.sqrt(1 - con * con));\n}","export default function(x) {\n  return x<0 ? -1 : 1;\n}","\nimport {TWO_PI, SPI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n  return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, phi, sinphi) {\n  var con = eccent * sinphi;\n  var com = 0.5 * eccent;\n  con = Math.pow(((1 - con) / (1 + con)), com);\n  return (Math.tan(0.5 * (HALF_PI - phi)) / con);\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, ts) {\n  var eccnth = 0.5 * eccent;\n  var con, dphi;\n  var phi = HALF_PI - 2 * Math.atan(ts);\n  for (var i = 0; i <= 15; i++) {\n    con = eccent * Math.sin(phi);\n    dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;\n    phi += dphi;\n    if (Math.abs(dphi) <= 0.0000000001) {\n      return phi;\n    }\n  }\n  //console.log(\"phi2z has NoConvergence\");\n  return -9999;\n}\n","import msfnz from '../common/msfnz';\n\nimport adjust_lon from '../common/adjust_lon';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport {FORTPI, R2D, EPSLN, HALF_PI} from '../constants/values';\nexport function init() {\n  var con = this.b / this.a;\n  this.es = 1 - con * con;\n  if(!('x0' in this)){\n    this.x0 = 0;\n  }\n  if(!('y0' in this)){\n    this.y0 = 0;\n  }\n  this.e = Math.sqrt(this.es);\n  if (this.lat_ts) {\n    if (this.sphere) {\n      this.k0 = Math.cos(this.lat_ts);\n    }\n    else {\n      this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n    }\n  }\n  else {\n    if (!this.k0) {\n      if (this.k) {\n        this.k0 = this.k;\n      }\n      else {\n        this.k0 = 1;\n      }\n    }\n  }\n}\n\n/* Mercator forward equations--mapping lat,long to x,y\n  --------------------------------------------------*/\n\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  // convert to radians\n  if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {\n    return null;\n  }\n\n  var x, y;\n  if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n    return null;\n  }\n  else {\n    if (this.sphere) {\n      x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n      y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));\n    }\n    else {\n      var sinphi = Math.sin(lat);\n      var ts = tsfnz(this.e, lat, sinphi);\n      x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n      y = this.y0 - this.a * this.k0 * Math.log(ts);\n    }\n    p.x = x;\n    p.y = y;\n    return p;\n  }\n}\n\n/* Mercator inverse equations--mapping x,y to lat/long\n  --------------------------------------------------*/\nexport function inverse(p) {\n\n  var x = p.x - this.x0;\n  var y = p.y - this.y0;\n  var lon, lat;\n\n  if (this.sphere) {\n    lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));\n  }\n  else {\n    var ts = Math.exp(-y / (this.a * this.k0));\n    lat = phi2z(this.e, ts);\n    if (lat === -9999) {\n      return null;\n    }\n  }\n  lon = adjust_lon(this.long0 + x / (this.a * this.k0));\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"Mercator\", \"Popular Visualisation Pseudo Mercator\", \"Mercator_1SP\", \"Mercator_Auxiliary_Sphere\", \"merc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","export function init() {\n  //no-op for longlat\n}\n\nfunction identity(pt) {\n  return pt;\n}\nexport {identity as forward};\nexport {identity as inverse};\nexport var names = [\"longlat\", \"identity\"];\nexport default {\n  init: init,\n  forward: identity,\n  inverse: identity,\n  names: names\n};\n","import merc from \"./projections/merc\";\nimport longlat from \"./projections/longlat\";\nvar projs = [merc, longlat];\nvar names = {};\nvar projStore = [];\n\nfunction add(proj, i) {\n  var len = projStore.length;\n  if (!proj.names) {\n    console.log(i);\n    return true;\n  }\n  projStore[len] = proj;\n  proj.names.forEach(function(n) {\n    names[n.toLowerCase()] = len;\n  });\n  return this;\n}\n\nexport {add};\n\nexport function get(name) {\n  if (!name) {\n    return false;\n  }\n  var n = name.toLowerCase();\n  if (typeof names[n] !== 'undefined' && projStore[names[n]]) {\n    return projStore[names[n]];\n  }\n}\n\nexport function start() {\n  projs.forEach(add);\n}\nexport default {\n  start: start,\n  add: add,\n  get: get\n};\n","var exports = {};\nexport {exports as default};\nexports.MERIT = {\n  a: 6378137.0,\n  rf: 298.257,\n  ellipseName: \"MERIT 1983\"\n};\n\nexports.SGS85 = {\n  a: 6378136.0,\n  rf: 298.257,\n  ellipseName: \"Soviet Geodetic System 85\"\n};\n\nexports.GRS80 = {\n  a: 6378137.0,\n  rf: 298.257222101,\n  ellipseName: \"GRS 1980(IUGG, 1980)\"\n};\n\nexports.IAU76 = {\n  a: 6378140.0,\n  rf: 298.257,\n  ellipseName: \"IAU 1976\"\n};\n\nexports.airy = {\n  a: 6377563.396,\n  b: 6356256.910,\n  ellipseName: \"Airy 1830\"\n};\n\nexports.APL4 = {\n  a: 6378137,\n  rf: 298.25,\n  ellipseName: \"Appl. Physics. 1965\"\n};\n\nexports.NWL9D = {\n  a: 6378145.0,\n  rf: 298.25,\n  ellipseName: \"Naval Weapons Lab., 1965\"\n};\n\nexports.mod_airy = {\n  a: 6377340.189,\n  b: 6356034.446,\n  ellipseName: \"Modified Airy\"\n};\n\nexports.andrae = {\n  a: 6377104.43,\n  rf: 300.0,\n  ellipseName: \"Andrae 1876 (Den., Iclnd.)\"\n};\n\nexports.aust_SA = {\n  a: 6378160.0,\n  rf: 298.25,\n  ellipseName: \"Australian Natl & S. Amer. 1969\"\n};\n\nexports.GRS67 = {\n  a: 6378160.0,\n  rf: 298.2471674270,\n  ellipseName: \"GRS 67(IUGG 1967)\"\n};\n\nexports.bessel = {\n  a: 6377397.155,\n  rf: 299.1528128,\n  ellipseName: \"Bessel 1841\"\n};\n\nexports.bess_nam = {\n  a: 6377483.865,\n  rf: 299.1528128,\n  ellipseName: \"Bessel 1841 (Namibia)\"\n};\n\nexports.clrk66 = {\n  a: 6378206.4,\n  b: 6356583.8,\n  ellipseName: \"Clarke 1866\"\n};\n\nexports.clrk80 = {\n  a: 6378249.145,\n  rf: 293.4663,\n  ellipseName: \"Clarke 1880 mod.\"\n};\n\nexports.clrk58 = {\n  a: 6378293.645208759,\n  rf: 294.2606763692654,\n  ellipseName: \"Clarke 1858\"\n};\n\nexports.CPM = {\n  a: 6375738.7,\n  rf: 334.29,\n  ellipseName: \"Comm. des Poids et Mesures 1799\"\n};\n\nexports.delmbr = {\n  a: 6376428.0,\n  rf: 311.5,\n  ellipseName: \"Delambre 1810 (Belgium)\"\n};\n\nexports.engelis = {\n  a: 6378136.05,\n  rf: 298.2566,\n  ellipseName: \"Engelis 1985\"\n};\n\nexports.evrst30 = {\n  a: 6377276.345,\n  rf: 300.8017,\n  ellipseName: \"Everest 1830\"\n};\n\nexports.evrst48 = {\n  a: 6377304.063,\n  rf: 300.8017,\n  ellipseName: \"Everest 1948\"\n};\n\nexports.evrst56 = {\n  a: 6377301.243,\n  rf: 300.8017,\n  ellipseName: \"Everest 1956\"\n};\n\nexports.evrst69 = {\n  a: 6377295.664,\n  rf: 300.8017,\n  ellipseName: \"Everest 1969\"\n};\n\nexports.evrstSS = {\n  a: 6377298.556,\n  rf: 300.8017,\n  ellipseName: \"Everest (Sabah & Sarawak)\"\n};\n\nexports.fschr60 = {\n  a: 6378166.0,\n  rf: 298.3,\n  ellipseName: \"Fischer (Mercury Datum) 1960\"\n};\n\nexports.fschr60m = {\n  a: 6378155.0,\n  rf: 298.3,\n  ellipseName: \"Fischer 1960\"\n};\n\nexports.fschr68 = {\n  a: 6378150.0,\n  rf: 298.3,\n  ellipseName: \"Fischer 1968\"\n};\n\nexports.helmert = {\n  a: 6378200.0,\n  rf: 298.3,\n  ellipseName: \"Helmert 1906\"\n};\n\nexports.hough = {\n  a: 6378270.0,\n  rf: 297.0,\n  ellipseName: \"Hough\"\n};\n\nexports.intl = {\n  a: 6378388.0,\n  rf: 297.0,\n  ellipseName: \"International 1909 (Hayford)\"\n};\n\nexports.kaula = {\n  a: 6378163.0,\n  rf: 298.24,\n  ellipseName: \"Kaula 1961\"\n};\n\nexports.lerch = {\n  a: 6378139.0,\n  rf: 298.257,\n  ellipseName: \"Lerch 1979\"\n};\n\nexports.mprts = {\n  a: 6397300.0,\n  rf: 191.0,\n  ellipseName: \"Maupertius 1738\"\n};\n\nexports.new_intl = {\n  a: 6378157.5,\n  b: 6356772.2,\n  ellipseName: \"New International 1967\"\n};\n\nexports.plessis = {\n  a: 6376523.0,\n  rf: 6355863.0,\n  ellipseName: \"Plessis 1817 (France)\"\n};\n\nexports.krass = {\n  a: 6378245.0,\n  rf: 298.3,\n  ellipseName: \"Krassovsky, 1942\"\n};\n\nexports.SEasia = {\n  a: 6378155.0,\n  b: 6356773.3205,\n  ellipseName: \"Southeast Asia\"\n};\n\nexports.walbeck = {\n  a: 6376896.0,\n  b: 6355834.8467,\n  ellipseName: \"Walbeck\"\n};\n\nexports.WGS60 = {\n  a: 6378165.0,\n  rf: 298.3,\n  ellipseName: \"WGS 60\"\n};\n\nexports.WGS66 = {\n  a: 6378145.0,\n  rf: 298.25,\n  ellipseName: \"WGS 66\"\n};\n\nexports.WGS7 = {\n  a: 6378135.0,\n  rf: 298.26,\n  ellipseName: \"WGS 72\"\n};\n\nexport var WGS84 = exports.WGS84 = {\n  a: 6378137.0,\n  rf: 298.257223563,\n  ellipseName: \"WGS 84\"\n};\n\nexports.sphere = {\n  a: 6370997.0,\n  b: 6370997.0,\n  ellipseName: \"Normal Sphere (r=6370997)\"\n};\n","import {SIXTH, RA4, RA6, EPSLN} from './constants/values';\nimport {default as Ellipsoid, WGS84} from './constants/Ellipsoid';\nimport match from './match';\n\nexport function eccentricity(a, b, rf, R_A) {\n  var a2 = a * a; // used in geocentric\n  var b2 = b * b; // used in geocentric\n  var es = (a2 - b2) / a2; // e ^ 2\n  var e = 0;\n  if (R_A) {\n    a *= 1 - es * (SIXTH + es * (RA4 + es * RA6));\n    a2 = a * a;\n    es = 0;\n  } else {\n    e = Math.sqrt(es); // eccentricity\n  }\n  var ep2 = (a2 - b2) / b2; // used in geocentric\n  return {\n    es: es,\n    e: e,\n    ep2: ep2\n  };\n}\nexport function sphere(a, b, rf, ellps, sphere) {\n  if (!a) { // do we have an ellipsoid?\n    var ellipse = match(Ellipsoid, ellps);\n    if (!ellipse) {\n      ellipse = WGS84;\n    }\n    a = ellipse.a;\n    b = ellipse.b;\n    rf = ellipse.rf;\n  }\n\n  if (rf && !b) {\n    b = (1.0 - 1.0 / rf) * a;\n  }\n  if (rf === 0 || Math.abs(a - b) < EPSLN) {\n    sphere = true;\n    b = a;\n  }\n  return {\n    a: a,\n    b: b,\n    rf: rf,\n    sphere: sphere\n  };\n}\n","var exports = {};\nexport {exports as default};\nexports.wgs84 = {\n  towgs84: \"0,0,0\",\n  ellipse: \"WGS84\",\n  datumName: \"WGS84\"\n};\n\nexports.ch1903 = {\n  towgs84: \"674.374,15.056,405.346\",\n  ellipse: \"bessel\",\n  datumName: \"swiss\"\n};\n\nexports.ggrs87 = {\n  towgs84: \"-199.87,74.79,246.62\",\n  ellipse: \"GRS80\",\n  datumName: \"Greek_Geodetic_Reference_System_1987\"\n};\n\nexports.nad83 = {\n  towgs84: \"0,0,0\",\n  ellipse: \"GRS80\",\n  datumName: \"North_American_Datum_1983\"\n};\n\nexports.nad27 = {\n  nadgrids: \"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\",\n  ellipse: \"clrk66\",\n  datumName: \"North_American_Datum_1927\"\n};\n\nexports.potsdam = {\n  towgs84: \"598.1,73.7,418.2,0.202,0.045,-2.455,6.7\",\n  ellipse: \"bessel\",\n  datumName: \"Potsdam Rauenberg 1950 DHDN\"\n};\n\nexports.carthage = {\n  towgs84: \"-263.0,6.0,431.0\",\n  ellipse: \"clark80\",\n  datumName: \"Carthage 1934 Tunisia\"\n};\n\nexports.hermannskogel = {\n  towgs84: \"577.326,90.129,463.919,5.137,1.474,5.297,2.4232\",\n  ellipse: \"bessel\",\n  datumName: \"Hermannskogel\"\n};\n\nexports.osni52 = {\n  towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n  ellipse: \"airy\",\n  datumName: \"Irish National\"\n};\n\nexports.ire65 = {\n  towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n  ellipse: \"mod_airy\",\n  datumName: \"Ireland 1965\"\n};\n\nexports.rassadiran = {\n  towgs84: \"-133.63,-157.5,-158.62\",\n  ellipse: \"intl\",\n  datumName: \"Rassadiran\"\n};\n\nexports.nzgd49 = {\n  towgs84: \"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\",\n  ellipse: \"intl\",\n  datumName: \"New Zealand Geodetic Datum 1949\"\n};\n\nexports.osgb36 = {\n  towgs84: \"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\",\n  ellipse: \"airy\",\n  datumName: \"Airy 1830\"\n};\n\nexports.s_jtsk = {\n  towgs84: \"589,76,480\",\n  ellipse: 'bessel',\n  datumName: 'S-JTSK (Ferro)'\n};\n\nexports.beduaram = {\n  towgs84: '-106,-87,188',\n  ellipse: 'clrk80',\n  datumName: 'Beduaram'\n};\n\nexports.gunung_segara = {\n  towgs84: '-403,684,41',\n  ellipse: 'bessel',\n  datumName: 'Gunung Segara Jakarta'\n};\n\nexports.rnb72 = {\n  towgs84: \"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\",\n  ellipse: \"intl\",\n  datumName: \"Reseau National Belge 1972\"\n};\n","import {PJD_3PARAM, PJD_7PARAM, PJD_GRIDSHIFT, PJD_WGS84, PJD_NODATUM, SEC_TO_RAD} from './constants/values';\n\nfunction datum(datumCode, datum_params, a, b, es, ep2, nadgrids) {\n  var out = {};\n\n  if (datumCode === undefined || datumCode === 'none') {\n    out.datum_type = PJD_NODATUM;\n  } else {\n    out.datum_type = PJD_WGS84;\n  }\n\n  if (datum_params) {\n    out.datum_params = datum_params.map(parseFloat);\n    if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {\n      out.datum_type = PJD_3PARAM;\n    }\n    if (out.datum_params.length > 3) {\n      if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {\n        out.datum_type = PJD_7PARAM;\n        out.datum_params[3] *= SEC_TO_RAD;\n        out.datum_params[4] *= SEC_TO_RAD;\n        out.datum_params[5] *= SEC_TO_RAD;\n        out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0;\n      }\n    }\n  }\n\n  if (nadgrids) {\n    out.datum_type = PJD_GRIDSHIFT;\n    out.grids = nadgrids;\n  }\n  out.a = a; //datum object also uses these values\n  out.b = b;\n  out.es = es;\n  out.ep2 = ep2;\n  return out;\n}\n\nexport default datum;\n","/**\n * Resources for details of NTv2 file formats:\n * - https://web.archive.org/web/20140127204822if_/http://www.mgs.gov.on.ca:80/stdprodconsume/groups/content/@mgs/@iandit/documents/resourcelist/stel02_047447.pdf\n * - http://mimaka.com/help/gs/html/004_NTV2%20Data%20Format.htm\n */\n\nvar loadedNadgrids = {};\n\n/**\n * Load a binary NTv2 file (.gsb) to a key that can be used in a proj string like +nadgrids=<key>. Pass the NTv2 file\n * as an ArrayBuffer.\n */\nexport default function nadgrid(key, data) {\n  var view = new DataView(data);\n  var isLittleEndian = detectLittleEndian(view);\n  var header = readHeader(view, isLittleEndian);\n  if (header.nSubgrids > 1) {\n    console.log('Only single NTv2 subgrids are currently supported, subsequent sub grids are ignored');\n  }\n  var subgrids = readSubgrids(view, header, isLittleEndian);\n  var nadgrid = {header: header, subgrids: subgrids};\n  loadedNadgrids[key] = nadgrid;\n  return nadgrid;\n}\n\n/**\n * Given a proj4 value for nadgrids, return an array of loaded grids\n */\nexport function getNadgrids(nadgrids) {\n  // Format details: http://proj.maptools.org/gen_parms.html\n  if (nadgrids === undefined) { return null; }\n  var grids = nadgrids.split(',');\n  return grids.map(parseNadgridString);\n}\n\nfunction parseNadgridString(value) {\n  if (value.length === 0) {\n    return null;\n  }\n  var optional = value[0] === '@';\n  if (optional) {\n    value = value.slice(1);\n  }\n  if (value === 'null') {\n    return {name: 'null', mandatory: !optional, grid: null, isNull: true};\n  }\n  return {\n    name: value,\n    mandatory: !optional,\n    grid: loadedNadgrids[value] || null,\n    isNull: false\n  };\n}\n\nfunction secondsToRadians(seconds) {\n  return (seconds / 3600) * Math.PI / 180;\n}\n\nfunction detectLittleEndian(view) {\n  var nFields = view.getInt32(8, false);\n  if (nFields === 11) {\n    return false;\n  }\n  nFields = view.getInt32(8, true);\n  if (nFields !== 11) {\n    console.warn('Failed to detect nadgrid endian-ness, defaulting to little-endian');\n  }\n  return true;\n}\n\nfunction readHeader(view, isLittleEndian) {\n  return {\n    nFields: view.getInt32(8, isLittleEndian),\n    nSubgridFields: view.getInt32(24, isLittleEndian),\n    nSubgrids: view.getInt32(40, isLittleEndian),\n    shiftType: decodeString(view, 56, 56 + 8).trim(),\n    fromSemiMajorAxis: view.getFloat64(120, isLittleEndian),\n    fromSemiMinorAxis: view.getFloat64(136, isLittleEndian),\n    toSemiMajorAxis: view.getFloat64(152, isLittleEndian),\n    toSemiMinorAxis: view.getFloat64(168, isLittleEndian),\n  };\n}\n\nfunction decodeString(view, start, end) {\n  return String.fromCharCode.apply(null, new Uint8Array(view.buffer.slice(start, end)));\n}\n\nfunction readSubgrids(view, header, isLittleEndian) {\n  var gridOffset = 176;\n  var grids = [];\n  for (var i = 0; i < header.nSubgrids; i++) {\n    var subHeader = readGridHeader(view, gridOffset, isLittleEndian);\n    var nodes = readGridNodes(view, gridOffset, subHeader, isLittleEndian);\n    var lngColumnCount = Math.round(\n      1 + (subHeader.upperLongitude - subHeader.lowerLongitude) / subHeader.longitudeInterval);\n    var latColumnCount = Math.round(\n      1 + (subHeader.upperLatitude - subHeader.lowerLatitude) / subHeader.latitudeInterval);\n    // Proj4 operates on radians whereas the coordinates are in seconds in the grid\n    grids.push({\n      ll: [secondsToRadians(subHeader.lowerLongitude), secondsToRadians(subHeader.lowerLatitude)],\n      del: [secondsToRadians(subHeader.longitudeInterval), secondsToRadians(subHeader.latitudeInterval)],\n      lim: [lngColumnCount, latColumnCount],\n      count: subHeader.gridNodeCount,\n      cvs: mapNodes(nodes)\n    });\n  }\n  return grids;\n}\n\nfunction mapNodes(nodes) {\n  return nodes.map(function (r) {return [secondsToRadians(r.longitudeShift), secondsToRadians(r.latitudeShift)];});\n}\n\nfunction readGridHeader(view, offset, isLittleEndian) {\n  return {\n    name: decodeString(view, offset + 8, offset + 16).trim(),\n    parent: decodeString(view, offset + 24, offset + 24 + 8).trim(),\n    lowerLatitude: view.getFloat64(offset + 72, isLittleEndian),\n    upperLatitude: view.getFloat64(offset + 88, isLittleEndian),\n    lowerLongitude: view.getFloat64(offset + 104, isLittleEndian),\n    upperLongitude: view.getFloat64(offset + 120, isLittleEndian),\n    latitudeInterval: view.getFloat64(offset + 136, isLittleEndian),\n    longitudeInterval: view.getFloat64(offset + 152, isLittleEndian),\n    gridNodeCount: view.getInt32(offset + 168, isLittleEndian)\n  };\n}\n\nfunction readGridNodes(view, offset, gridHeader, isLittleEndian) {\n  var nodesOffset = offset + 176;\n  var gridRecordLength = 16;\n  var gridShiftRecords = [];\n  for (var i = 0; i < gridHeader.gridNodeCount; i++) {\n    var record = {\n      latitudeShift: view.getFloat32(nodesOffset + i * gridRecordLength, isLittleEndian),\n      longitudeShift: view.getFloat32(nodesOffset + i * gridRecordLength + 4, isLittleEndian),\n      latitudeAccuracy: view.getFloat32(nodesOffset + i * gridRecordLength + 8, isLittleEndian),\n      longitudeAccuracy: view.getFloat32(nodesOffset + i * gridRecordLength + 12, isLittleEndian),\n    };\n    gridShiftRecords.push(record);\n  }\n  return gridShiftRecords;\n}\n","import parseCode from './parseCode';\nimport extend from './extend';\nimport projections from './projections';\nimport {sphere as dc_sphere, eccentricity as dc_eccentricity} from './deriveConstants';\nimport Datum from './constants/Datum';\nimport datum from './datum';\nimport match from './match';\nimport {getNadgrids} from \"./nadgrid\";\n\nfunction Projection(srsCode,callback) {\n  if (!(this instanceof Projection)) {\n    return new Projection(srsCode);\n  }\n  callback = callback || function(error){\n    if(error){\n      throw error;\n    }\n  };\n  var json = parseCode(srsCode);\n  if(typeof json !== 'object'){\n    callback(srsCode);\n    return;\n  }\n  var ourProj = Projection.projections.get(json.projName);\n  if(!ourProj){\n    callback(srsCode);\n    return;\n  }\n  if (json.datumCode && json.datumCode !== 'none') {\n    var datumDef = match(Datum, json.datumCode);\n    if (datumDef) {\n      json.datum_params = json.datum_params || (datumDef.towgs84 ? datumDef.towgs84.split(',') : null);\n      json.ellps = datumDef.ellipse;\n      json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;\n    }\n  }\n  json.k0 = json.k0 || 1.0;\n  json.axis = json.axis || 'enu';\n  json.ellps = json.ellps || 'wgs84';\n  json.lat1 = json.lat1 || json.lat0; // Lambert_Conformal_Conic_1SP, for example, needs this\n\n  var sphere_ = dc_sphere(json.a, json.b, json.rf, json.ellps, json.sphere);\n  var ecc = dc_eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);\n  var nadgrids = getNadgrids(json.nadgrids);\n  var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2,\n    nadgrids);\n\n  extend(this, json); // transfer everything over from the projection because we don't know what we'll need\n  extend(this, ourProj); // transfer all the methods from the projection\n\n  // copy the 4 things over we calulated in deriveConstants.sphere\n  this.a = sphere_.a;\n  this.b = sphere_.b;\n  this.rf = sphere_.rf;\n  this.sphere = sphere_.sphere;\n\n  // copy the 3 things we calculated in deriveConstants.eccentricity\n  this.es = ecc.es;\n  this.e = ecc.e;\n  this.ep2 = ecc.ep2;\n\n  // add in the datum object\n  this.datum = datumObj;\n\n  // init the projection\n  this.init();\n\n  // legecy callback from back in the day when it went to spatialreference.org\n  callback(null, this);\n\n}\nProjection.projections = projections;\nProjection.projections.start();\nexport default Projection;\n","'use strict';\nimport {PJD_3PARAM, PJD_7PARAM, HALF_PI} from './constants/values';\nexport function compareDatums(source, dest) {\n  if (source.datum_type !== dest.datum_type) {\n    return false; // false, datums are not equal\n  } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) {\n    // the tolerance for es is to ensure that GRS80 and WGS84\n    // are considered identical\n    return false;\n  } else if (source.datum_type === PJD_3PARAM) {\n    return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]);\n  } else if (source.datum_type === PJD_7PARAM) {\n    return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]);\n  } else {\n    return true; // datums are equal\n  }\n} // cs_compare_datums()\n\n/*\n * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates\n * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),\n * according to the current ellipsoid parameters.\n *\n *    Latitude  : Geodetic latitude in radians                     (input)\n *    Longitude : Geodetic longitude in radians                    (input)\n *    Height    : Geodetic height, in meters                       (input)\n *    X         : Calculated Geocentric X coordinate, in meters    (output)\n *    Y         : Calculated Geocentric Y coordinate, in meters    (output)\n *    Z         : Calculated Geocentric Z coordinate, in meters    (output)\n *\n */\nexport function geodeticToGeocentric(p, es, a) {\n  var Longitude = p.x;\n  var Latitude = p.y;\n  var Height = p.z ? p.z : 0; //Z value not always supplied\n\n  var Rn; /*  Earth radius at location  */\n  var Sin_Lat; /*  Math.sin(Latitude)  */\n  var Sin2_Lat; /*  Square of Math.sin(Latitude)  */\n  var Cos_Lat; /*  Math.cos(Latitude)  */\n\n  /*\n   ** Don't blow up if Latitude is just a little out of the value\n   ** range as it may just be a rounding issue.  Also removed longitude\n   ** test, it should be wrapped by Math.cos() and Math.sin().  NFW for PROJ.4, Sep/2001.\n   */\n  if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {\n    Latitude = -HALF_PI;\n  } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {\n    Latitude = HALF_PI;\n  } else if (Latitude < -HALF_PI) {\n    /* Latitude out of range */\n    //..reportError('geocent:lat out of range:' + Latitude);\n    return { x: -Infinity, y: -Infinity, z: p.z };\n  } else if (Latitude > HALF_PI) {\n    /* Latitude out of range */\n    return { x: Infinity, y: Infinity, z: p.z };\n  }\n\n  if (Longitude > Math.PI) {\n    Longitude -= (2 * Math.PI);\n  }\n  Sin_Lat = Math.sin(Latitude);\n  Cos_Lat = Math.cos(Latitude);\n  Sin2_Lat = Sin_Lat * Sin_Lat;\n  Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat));\n  return {\n    x: (Rn + Height) * Cos_Lat * Math.cos(Longitude),\n    y: (Rn + Height) * Cos_Lat * Math.sin(Longitude),\n    z: ((Rn * (1 - es)) + Height) * Sin_Lat\n  };\n} // cs_geodetic_to_geocentric()\n\nexport function geocentricToGeodetic(p, es, a, b) {\n  /* local defintions and variables */\n  /* end-criterium of loop, accuracy of sin(Latitude) */\n  var genau = 1e-12;\n  var genau2 = (genau * genau);\n  var maxiter = 30;\n\n  var P; /* distance between semi-minor axis and location */\n  var RR; /* distance between center and location */\n  var CT; /* sin of geocentric latitude */\n  var ST; /* cos of geocentric latitude */\n  var RX;\n  var RK;\n  var RN; /* Earth radius at location */\n  var CPHI0; /* cos of start or old geodetic latitude in iterations */\n  var SPHI0; /* sin of start or old geodetic latitude in iterations */\n  var CPHI; /* cos of searched geodetic latitude */\n  var SPHI; /* sin of searched geodetic latitude */\n  var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */\n  var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */\n\n  var X = p.x;\n  var Y = p.y;\n  var Z = p.z ? p.z : 0.0; //Z value not always supplied\n  var Longitude;\n  var Latitude;\n  var Height;\n\n  P = Math.sqrt(X * X + Y * Y);\n  RR = Math.sqrt(X * X + Y * Y + Z * Z);\n\n  /*      special cases for latitude and longitude */\n  if (P / a < genau) {\n\n    /*  special case, if P=0. (X=0., Y=0.) */\n    Longitude = 0.0;\n\n    /*  if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis\n     *  of ellipsoid (=center of mass), Latitude becomes PI/2 */\n    if (RR / a < genau) {\n      Latitude = HALF_PI;\n      Height = -b;\n      return {\n        x: p.x,\n        y: p.y,\n        z: p.z\n      };\n    }\n  } else {\n    /*  ellipsoidal (geodetic) longitude\n     *  interval: -PI < Longitude <= +PI */\n    Longitude = Math.atan2(Y, X);\n  }\n\n  /* --------------------------------------------------------------\n   * Following iterative algorithm was developped by\n   * \"Institut for Erdmessung\", University of Hannover, July 1988.\n   * Internet: www.ife.uni-hannover.de\n   * Iterative computation of CPHI,SPHI and Height.\n   * Iteration of CPHI and SPHI to 10**-12 radian resp.\n   * 2*10**-7 arcsec.\n   * --------------------------------------------------------------\n   */\n  CT = Z / RR;\n  ST = P / RR;\n  RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST);\n  CPHI0 = ST * (1.0 - es) * RX;\n  SPHI0 = CT * RX;\n  iter = 0;\n\n  /* loop to find sin(Latitude) resp. Latitude\n   * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */\n  do {\n    iter++;\n    RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0);\n\n    /*  ellipsoidal (geodetic) height */\n    Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0);\n\n    RK = es * RN / (RN + Height);\n    RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);\n    CPHI = ST * (1.0 - RK) * RX;\n    SPHI = CT * RX;\n    SDPHI = SPHI * CPHI0 - CPHI * SPHI0;\n    CPHI0 = CPHI;\n    SPHI0 = SPHI;\n  }\n  while (SDPHI * SDPHI > genau2 && iter < maxiter);\n\n  /*      ellipsoidal (geodetic) latitude */\n  Latitude = Math.atan(SPHI / Math.abs(CPHI));\n  return {\n    x: Longitude,\n    y: Latitude,\n    z: Height\n  };\n} // cs_geocentric_to_geodetic()\n\n/****************************************************************/\n// pj_geocentic_to_wgs84( p )\n//  p = point to transform in geocentric coordinates (x,y,z)\n\n\n/** point object, nothing fancy, just allows values to be\n    passed back and forth by reference rather than by value.\n    Other point classes may be used as long as they have\n    x and y properties, which will get modified in the transform method.\n*/\nexport function geocentricToWgs84(p, datum_type, datum_params) {\n\n  if (datum_type === PJD_3PARAM) {\n    // if( x[io] === HUGE_VAL )\n    //    continue;\n    return {\n      x: p.x + datum_params[0],\n      y: p.y + datum_params[1],\n      z: p.z + datum_params[2],\n    };\n  } else if (datum_type === PJD_7PARAM) {\n    var Dx_BF = datum_params[0];\n    var Dy_BF = datum_params[1];\n    var Dz_BF = datum_params[2];\n    var Rx_BF = datum_params[3];\n    var Ry_BF = datum_params[4];\n    var Rz_BF = datum_params[5];\n    var M_BF = datum_params[6];\n    // if( x[io] === HUGE_VAL )\n    //    continue;\n    return {\n      x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF,\n      y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF,\n      z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF\n    };\n  }\n} // cs_geocentric_to_wgs84\n\n/****************************************************************/\n// pj_geocentic_from_wgs84()\n//  coordinate system definition,\n//  point to transform in geocentric coordinates (x,y,z)\nexport function geocentricFromWgs84(p, datum_type, datum_params) {\n\n  if (datum_type === PJD_3PARAM) {\n    //if( x[io] === HUGE_VAL )\n    //    continue;\n    return {\n      x: p.x - datum_params[0],\n      y: p.y - datum_params[1],\n      z: p.z - datum_params[2],\n    };\n\n  } else if (datum_type === PJD_7PARAM) {\n    var Dx_BF = datum_params[0];\n    var Dy_BF = datum_params[1];\n    var Dz_BF = datum_params[2];\n    var Rx_BF = datum_params[3];\n    var Ry_BF = datum_params[4];\n    var Rz_BF = datum_params[5];\n    var M_BF = datum_params[6];\n    var x_tmp = (p.x - Dx_BF) / M_BF;\n    var y_tmp = (p.y - Dy_BF) / M_BF;\n    var z_tmp = (p.z - Dz_BF) / M_BF;\n    //if( x[io] === HUGE_VAL )\n    //    continue;\n\n    return {\n      x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp,\n      y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp,\n      z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp\n    };\n  } //cs_geocentric_from_wgs84()\n}\n","import {\n  PJD_3PARAM,\n  PJD_7PARAM,\n  PJD_GRIDSHIFT,\n  PJD_NODATUM,\n  R2D,\n  SRS_WGS84_ESQUARED,\n  SRS_WGS84_SEMIMAJOR, SRS_WGS84_SEMIMINOR\n} from './constants/values';\n\nimport {geodeticToGeocentric, geocentricToGeodetic, geocentricToWgs84, geocentricFromWgs84, compareDatums} from './datumUtils';\nimport adjust_lon from \"./common/adjust_lon\";\nfunction checkParams(type) {\n  return (type === PJD_3PARAM || type === PJD_7PARAM);\n}\n\nexport default function(source, dest, point) {\n  // Short cut if the datums are identical.\n  if (compareDatums(source, dest)) {\n    return point; // in this case, zero is sucess,\n    // whereas cs_compare_datums returns 1 to indicate TRUE\n    // confusing, should fix this\n  }\n\n  // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest\n  if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {\n    return point;\n  }\n\n  // If this datum requires grid shifts, then apply it to geodetic coordinates.\n  var source_a = source.a;\n  var source_es = source.es;\n  if (source.datum_type === PJD_GRIDSHIFT) {\n    var gridShiftCode = applyGridShift(source, false, point);\n    if (gridShiftCode !== 0) {\n      return undefined;\n    }\n    source_a = SRS_WGS84_SEMIMAJOR;\n    source_es = SRS_WGS84_ESQUARED;\n  }\n\n  var dest_a = dest.a;\n  var dest_b = dest.b;\n  var dest_es = dest.es;\n  if (dest.datum_type === PJD_GRIDSHIFT) {\n    dest_a = SRS_WGS84_SEMIMAJOR;\n    dest_b = SRS_WGS84_SEMIMINOR;\n    dest_es = SRS_WGS84_ESQUARED;\n  }\n\n  // Do we need to go through geocentric coordinates?\n  if (source_es === dest_es && source_a === dest_a && !checkParams(source.datum_type) &&  !checkParams(dest.datum_type)) {\n    return point;\n  }\n\n  // Convert to geocentric coordinates.\n  point = geodeticToGeocentric(point, source_es, source_a);\n  // Convert between datums\n  if (checkParams(source.datum_type)) {\n    point = geocentricToWgs84(point, source.datum_type, source.datum_params);\n  }\n  if (checkParams(dest.datum_type)) {\n    point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params);\n  }\n  point = geocentricToGeodetic(point, dest_es, dest_a, dest_b);\n\n  if (dest.datum_type === PJD_GRIDSHIFT) {\n    var destGridShiftResult = applyGridShift(dest, true, point);\n    if (destGridShiftResult !== 0) {\n      return undefined;\n    }\n  }\n\n  return point;\n}\n\nexport function applyGridShift(source, inverse, point) {\n  if (source.grids === null || source.grids.length === 0) {\n    console.log('Grid shift grids not found');\n    return -1;\n  }\n  var input = {x: -point.x, y: point.y};\n  var output = {x: Number.NaN, y: Number.NaN};\n  var onlyMandatoryGrids = false;\n  var attemptedGrids = [];\n  for (var i = 0; i < source.grids.length; i++) {\n    var grid = source.grids[i];\n    attemptedGrids.push(grid.name);\n    if (grid.isNull) {\n      output = input;\n      break;\n    }\n    onlyMandatoryGrids = grid.mandatory;\n    if (grid.grid === null) {\n      if (grid.mandatory) {\n        console.log(\"Unable to find mandatory grid '\" + grid.name + \"'\");\n        return -1;\n      }\n      continue;\n    }\n    var subgrid = grid.grid.subgrids[0];\n    // skip tables that don't match our point at all\n    var epsilon = (Math.abs(subgrid.del[1]) + Math.abs(subgrid.del[0])) / 10000.0;\n    var minX = subgrid.ll[0] - epsilon;\n    var minY = subgrid.ll[1] - epsilon;\n    var maxX = subgrid.ll[0] + (subgrid.lim[0] - 1) * subgrid.del[0] + epsilon;\n    var maxY = subgrid.ll[1] + (subgrid.lim[1] - 1) * subgrid.del[1] + epsilon;\n    if (minY > input.y || minX > input.x || maxY < input.y || maxX < input.x ) {\n      continue;\n    }\n    output = applySubgridShift(input, inverse, subgrid);\n    if (!isNaN(output.x)) {\n      break;\n    }\n  }\n  if (isNaN(output.x)) {\n    console.log(\"Failed to find a grid shift table for location '\"+\n      -input.x * R2D + \" \" + input.y * R2D + \" tried: '\" + attemptedGrids + \"'\");\n    return -1;\n  }\n  point.x = -output.x;\n  point.y = output.y;\n  return 0;\n}\n\nfunction applySubgridShift(pin, inverse, ct) {\n  var val = {x: Number.NaN, y: Number.NaN};\n  if (isNaN(pin.x)) { return val; }\n  var tb = {x: pin.x, y: pin.y};\n  tb.x -= ct.ll[0];\n  tb.y -= ct.ll[1];\n  tb.x = adjust_lon(tb.x - Math.PI) + Math.PI;\n  var t = nadInterpolate(tb, ct);\n  if (inverse) {\n    if (isNaN(t.x)) {\n      return val;\n    }\n    t.x = tb.x - t.x;\n    t.y = tb.y - t.y;\n    var i = 9, tol = 1e-12;\n    var dif, del;\n    do {\n      del = nadInterpolate(t, ct);\n      if (isNaN(del.x)) {\n        console.log(\"Inverse grid shift iteration failed, presumably at grid edge.  Using first approximation.\");\n        break;\n      }\n      dif = {x: tb.x - (del.x + t.x), y: tb.y - (del.y + t.y)};\n      t.x += dif.x;\n      t.y += dif.y;\n    } while (i-- && Math.abs(dif.x) > tol && Math.abs(dif.y) > tol);\n    if (i < 0) {\n      console.log(\"Inverse grid shift iterator failed to converge.\");\n      return val;\n    }\n    val.x = adjust_lon(t.x + ct.ll[0]);\n    val.y = t.y + ct.ll[1];\n  } else {\n    if (!isNaN(t.x)) {\n      val.x = pin.x + t.x;\n      val.y = pin.y + t.y;\n    }\n  }\n  return val;\n}\n\nfunction nadInterpolate(pin, ct) {\n  var t = {x: pin.x / ct.del[0], y: pin.y / ct.del[1]};\n  var indx = {x: Math.floor(t.x), y: Math.floor(t.y)};\n  var frct = {x: t.x - 1.0 * indx.x, y: t.y - 1.0 * indx.y};\n  var val= {x: Number.NaN, y: Number.NaN};\n  var inx;\n  if (indx.x < 0 || indx.x >= ct.lim[0]) {\n    return val;\n  }\n  if (indx.y < 0 || indx.y >= ct.lim[1]) {\n    return val;\n  }\n  inx = (indx.y * ct.lim[0]) + indx.x;\n  var f00 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n  inx++;\n  var f10= {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n  inx += ct.lim[0];\n  var f11 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n  inx--;\n  var f01 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n  var m11 = frct.x * frct.y, m10 = frct.x * (1.0 - frct.y),\n    m00 = (1.0 - frct.x) * (1.0 - frct.y), m01 = (1.0 - frct.x) * frct.y;\n  val.x = (m00 * f00.x + m10 * f10.x + m01 * f01.x + m11 * f11.x);\n  val.y = (m00 * f00.y + m10 * f10.y + m01 * f01.y + m11 * f11.y);\n  return val;\n}\n","export default function(crs, denorm, point) {\n  var xin = point.x,\n    yin = point.y,\n    zin = point.z || 0.0;\n  var v, t, i;\n  var out = {};\n  for (i = 0; i < 3; i++) {\n    if (denorm && i === 2 && point.z === undefined) {\n      continue;\n    }\n    if (i === 0) {\n      v = xin;\n      if (\"ew\".indexOf(crs.axis[i]) !== -1) {\n        t = 'x';\n      } else {\n        t = 'y';\n      }\n\n    }\n    else if (i === 1) {\n      v = yin;\n      if (\"ns\".indexOf(crs.axis[i]) !== -1) {\n        t = 'y';\n      } else {\n        t = 'x';\n      }\n    }\n    else {\n      v = zin;\n      t = 'z';\n    }\n    switch (crs.axis[i]) {\n    case 'e':\n      out[t] = v;\n      break;\n    case 'w':\n      out[t] = -v;\n      break;\n    case 'n':\n      out[t] = v;\n      break;\n    case 's':\n      out[t] = -v;\n      break;\n    case 'u':\n      if (point[t] !== undefined) {\n        out.z = v;\n      }\n      break;\n    case 'd':\n      if (point[t] !== undefined) {\n        out.z = -v;\n      }\n      break;\n    default:\n      //console.log(\"ERROR: unknow axis (\"+crs.axis[i]+\") - check definition of \"+crs.projName);\n      return null;\n    }\n  }\n  return out;\n}\n","export default function (array){\n  var out = {\n    x: array[0],\n    y: array[1]\n  };\n  if (array.length>2) {\n    out.z = array[2];\n  }\n  if (array.length>3) {\n    out.m = array[3];\n  }\n  return out;\n}","export default function (point) {\n  checkCoord(point.x);\n  checkCoord(point.y);\n}\nfunction checkCoord(num) {\n  if (typeof Number.isFinite === 'function') {\n    if (Number.isFinite(num)) {\n      return;\n    }\n    throw new TypeError('coordinates must be finite numbers');\n  }\n  if (typeof num !== 'number' || num !== num || !isFinite(num)) {\n    throw new TypeError('coordinates must be finite numbers');\n  }\n}\n","import {D2R, R2D, PJD_3PARAM, PJD_7PARAM} from './constants/values';\nimport datum_transform from './datum_transform';\nimport adjust_axis from './adjust_axis';\nimport proj from './Proj';\nimport toPoint from './common/toPoint';\nimport checkSanity from './checkSanity';\n\nfunction checkNotWGS(source, dest) {\n  return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84');\n}\n\nexport default function transform(source, dest, point, enforceAxis) {\n  var wgs84;\n  if (Array.isArray(point)) {\n    point = toPoint(point);\n  }\n  checkSanity(point);\n  // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84\n  if (source.datum && dest.datum && checkNotWGS(source, dest)) {\n    wgs84 = new proj('WGS84');\n    point = transform(source, wgs84, point, enforceAxis);\n    source = wgs84;\n  }\n  // DGR, 2010/11/12\n  if (enforceAxis && source.axis !== 'enu') {\n    point = adjust_axis(source, false, point);\n  }\n  // Transform source points to long/lat, if they aren't already.\n  if (source.projName === 'longlat') {\n    point = {\n      x: point.x * D2R,\n      y: point.y * D2R,\n      z: point.z || 0\n    };\n  } else {\n    if (source.to_meter) {\n      point = {\n        x: point.x * source.to_meter,\n        y: point.y * source.to_meter,\n        z: point.z || 0\n      };\n    }\n    point = source.inverse(point); // Convert Cartesian to longlat\n    if (!point) {\n      return;\n    }\n  }\n  // Adjust for the prime meridian if necessary\n  if (source.from_greenwich) {\n    point.x += source.from_greenwich;\n  }\n\n  // Convert datums if needed, and if possible.\n  point = datum_transform(source.datum, dest.datum, point);\n  if (!point) {\n    return;\n  }\n\n  // Adjust for the prime meridian if necessary\n  if (dest.from_greenwich) {\n    point = {\n      x: point.x - dest.from_greenwich,\n      y: point.y,\n      z: point.z || 0\n    };\n  }\n\n  if (dest.projName === 'longlat') {\n    // convert radians to decimal degrees\n    point = {\n      x: point.x * R2D,\n      y: point.y * R2D,\n      z: point.z || 0\n    };\n  } else { // else project\n    point = dest.forward(point);\n    if (dest.to_meter) {\n      point = {\n        x: point.x / dest.to_meter,\n        y: point.y / dest.to_meter,\n        z: point.z || 0\n      };\n    }\n  }\n\n  // DGR, 2010/11/12\n  if (enforceAxis && dest.axis !== 'enu') {\n    return adjust_axis(dest, true, point);\n  }\n\n  return point;\n}\n","import proj from './Proj';\nimport transform from './transform';\nvar wgs84 = proj('WGS84');\n\nfunction transformer(from, to, coords, enforceAxis) {\n  var transformedArray, out, keys;\n  if (Array.isArray(coords)) {\n    transformedArray = transform(from, to, coords, enforceAxis) || {x: NaN, y: NaN};\n    if (coords.length > 2) {\n      if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n        if (typeof transformedArray.z === 'number') {\n          return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.splice(3));\n        } else {\n          return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.splice(3));\n        }\n      } else {\n        return [transformedArray.x, transformedArray.y].concat(coords.splice(2));\n      }\n    } else {\n      return [transformedArray.x, transformedArray.y];\n    }\n  } else {\n    out = transform(from, to, coords, enforceAxis);\n    keys = Object.keys(coords);\n    if (keys.length === 2) {\n      return out;\n    }\n    keys.forEach(function (key) {\n      if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n        if (key === 'x' || key === 'y' || key === 'z') {\n          return;\n        }\n      } else {\n        if (key === 'x' || key === 'y') {\n          return;\n        }\n      }\n      out[key] = coords[key];\n    });\n    return out;\n  }\n}\n\nfunction checkProj(item) {\n  if (item instanceof proj) {\n    return item;\n  }\n  if (item.oProj) {\n    return item.oProj;\n  }\n  return proj(item);\n}\n\nfunction proj4(fromProj, toProj, coord) {\n  fromProj = checkProj(fromProj);\n  var single = false;\n  var obj;\n  if (typeof toProj === 'undefined') {\n    toProj = fromProj;\n    fromProj = wgs84;\n    single = true;\n  } else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {\n    coord = toProj;\n    toProj = fromProj;\n    fromProj = wgs84;\n    single = true;\n  }\n  toProj = checkProj(toProj);\n  if (coord) {\n    return transformer(fromProj, toProj, coord);\n  } else {\n    obj = {\n      forward: function (coords, enforceAxis) {\n        return transformer(fromProj, toProj, coords, enforceAxis);\n      },\n      inverse: function (coords, enforceAxis) {\n        return transformer(toProj, fromProj, coords, enforceAxis);\n      }\n    };\n    if (single) {\n      obj.oProj = toProj;\n    }\n    return obj;\n  }\n}\nexport default proj4;","\n\n\n/**\n * UTM zones are grouped, and assigned to one of a group of 6\n * sets.\n *\n * {int} @private\n */\nvar NUM_100K_SETS = 6;\n\n/**\n * The column letters (for easting) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';\n\n/**\n * The row letters (for northing) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_ROW_LETTERS = 'AFAFAF';\n\nvar A = 65; // A\nvar I = 73; // I\nvar O = 79; // O\nvar V = 86; // V\nvar Z = 90; // Z\nexport default {\n  forward: forward,\n  inverse: inverse,\n  toPoint: toPoint\n};\n/**\n * Conversion of lat/lon to MGRS.\n *\n * @param {object} ll Object literal with lat and lon properties on a\n *     WGS84 ellipsoid.\n * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for\n *      100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.\n * @return {string} the MGRS string for the given location and accuracy.\n */\nexport function forward(ll, accuracy) {\n  accuracy = accuracy || 5; // default accuracy 1m\n  return encode(LLtoUTM({\n    lat: ll[1],\n    lon: ll[0]\n  }), accuracy);\n};\n\n/**\n * Conversion of MGRS to lat/lon.\n *\n * @param {string} mgrs MGRS string.\n * @return {array} An array with left (longitude), bottom (latitude), right\n *     (longitude) and top (latitude) values in WGS84, representing the\n *     bounding box for the provided MGRS reference.\n */\nexport function inverse(mgrs) {\n  var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n  if (bbox.lat && bbox.lon) {\n    return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];\n  }\n  return [bbox.left, bbox.bottom, bbox.right, bbox.top];\n};\n\nexport function toPoint(mgrs) {\n  var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n  if (bbox.lat && bbox.lon) {\n    return [bbox.lon, bbox.lat];\n  }\n  return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];\n};\n/**\n * Conversion from degrees to radians.\n *\n * @private\n * @param {number} deg the angle in degrees.\n * @return {number} the angle in radians.\n */\nfunction degToRad(deg) {\n  return (deg * (Math.PI / 180.0));\n}\n\n/**\n * Conversion from radians to degrees.\n *\n * @private\n * @param {number} rad the angle in radians.\n * @return {number} the angle in degrees.\n */\nfunction radToDeg(rad) {\n  return (180.0 * (rad / Math.PI));\n}\n\n/**\n * Converts a set of Longitude and Latitude co-ordinates to UTM\n * using the WGS84 ellipsoid.\n *\n * @private\n * @param {object} ll Object literal with lat and lon properties\n *     representing the WGS84 coordinate to be converted.\n * @return {object} Object literal containing the UTM value with easting,\n *     northing, zoneNumber and zoneLetter properties, and an optional\n *     accuracy property in digits. Returns null if the conversion failed.\n */\nfunction LLtoUTM(ll) {\n  var Lat = ll.lat;\n  var Long = ll.lon;\n  var a = 6378137.0; //ellip.radius;\n  var eccSquared = 0.00669438; //ellip.eccsq;\n  var k0 = 0.9996;\n  var LongOrigin;\n  var eccPrimeSquared;\n  var N, T, C, A, M;\n  var LatRad = degToRad(Lat);\n  var LongRad = degToRad(Long);\n  var LongOriginRad;\n  var ZoneNumber;\n  // (int)\n  ZoneNumber = Math.floor((Long + 180) / 6) + 1;\n\n  //Make sure the longitude 180.00 is in Zone 60\n  if (Long === 180) {\n    ZoneNumber = 60;\n  }\n\n  // Special zone for Norway\n  if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {\n    ZoneNumber = 32;\n  }\n\n  // Special zones for Svalbard\n  if (Lat >= 72.0 && Lat < 84.0) {\n    if (Long >= 0.0 && Long < 9.0) {\n      ZoneNumber = 31;\n    }\n    else if (Long >= 9.0 && Long < 21.0) {\n      ZoneNumber = 33;\n    }\n    else if (Long >= 21.0 && Long < 33.0) {\n      ZoneNumber = 35;\n    }\n    else if (Long >= 33.0 && Long < 42.0) {\n      ZoneNumber = 37;\n    }\n  }\n\n  LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin\n  // in middle of\n  // zone\n  LongOriginRad = degToRad(LongOrigin);\n\n  eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n  N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));\n  T = Math.tan(LatRad) * Math.tan(LatRad);\n  C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);\n  A = Math.cos(LatRad) * (LongRad - LongOriginRad);\n\n  M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));\n\n  var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);\n\n  var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));\n  if (Lat < 0.0) {\n    UTMNorthing += 10000000.0; //10000000 meter offset for\n    // southern hemisphere\n  }\n\n  return {\n    northing: Math.round(UTMNorthing),\n    easting: Math.round(UTMEasting),\n    zoneNumber: ZoneNumber,\n    zoneLetter: getLetterDesignator(Lat)\n  };\n}\n\n/**\n * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience\n * class where the Zone can be specified as a single string eg.\"60N\" which\n * is then broken down into the ZoneNumber and ZoneLetter.\n *\n * @private\n * @param {object} utm An object literal with northing, easting, zoneNumber\n *     and zoneLetter properties. If an optional accuracy property is\n *     provided (in meters), a bounding box will be returned instead of\n *     latitude and longitude.\n * @return {object} An object literal containing either lat and lon values\n *     (if no accuracy was provided), or top, right, bottom and left values\n *     for the bounding box calculated according to the provided accuracy.\n *     Returns null if the conversion failed.\n */\nfunction UTMtoLL(utm) {\n\n  var UTMNorthing = utm.northing;\n  var UTMEasting = utm.easting;\n  var zoneLetter = utm.zoneLetter;\n  var zoneNumber = utm.zoneNumber;\n  // check the ZoneNummber is valid\n  if (zoneNumber < 0 || zoneNumber > 60) {\n    return null;\n  }\n\n  var k0 = 0.9996;\n  var a = 6378137.0; //ellip.radius;\n  var eccSquared = 0.00669438; //ellip.eccsq;\n  var eccPrimeSquared;\n  var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));\n  var N1, T1, C1, R1, D, M;\n  var LongOrigin;\n  var mu, phi1Rad;\n\n  // remove 500,000 meter offset for longitude\n  var x = UTMEasting - 500000.0;\n  var y = UTMNorthing;\n\n  // We must know somehow if we are in the Northern or Southern\n  // hemisphere, this is the only time we use the letter So even\n  // if the Zone letter isn't exactly correct it should indicate\n  // the hemisphere correctly\n  if (zoneLetter < 'N') {\n    y -= 10000000.0; // remove 10,000,000 meter offset used\n    // for southern hemisphere\n  }\n\n  // There are 60 zones with zone 1 being at West -180 to -174\n  LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin\n  // in middle of\n  // zone\n\n  eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n  M = y / k0;\n  mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));\n\n  phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);\n  // double phi1 = ProjMath.radToDeg(phi1Rad);\n\n  N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));\n  T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);\n  C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);\n  R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);\n  D = x / (N1 * k0);\n\n  var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);\n  lat = radToDeg(lat);\n\n  var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);\n  lon = LongOrigin + radToDeg(lon);\n\n  var result;\n  if (utm.accuracy) {\n    var topRight = UTMtoLL({\n      northing: utm.northing + utm.accuracy,\n      easting: utm.easting + utm.accuracy,\n      zoneLetter: utm.zoneLetter,\n      zoneNumber: utm.zoneNumber\n    });\n    result = {\n      top: topRight.lat,\n      right: topRight.lon,\n      bottom: lat,\n      left: lon\n    };\n  }\n  else {\n    result = {\n      lat: lat,\n      lon: lon\n    };\n  }\n  return result;\n}\n\n/**\n * Calculates the MGRS letter designator for the given latitude.\n *\n * @private\n * @param {number} lat The latitude in WGS84 to get the letter designator\n *     for.\n * @return {char} The letter designator.\n */\nfunction getLetterDesignator(lat) {\n  //This is here as an error flag to show that the Latitude is\n  //outside MGRS limits\n  var LetterDesignator = 'Z';\n\n  if ((84 >= lat) && (lat >= 72)) {\n    LetterDesignator = 'X';\n  }\n  else if ((72 > lat) && (lat >= 64)) {\n    LetterDesignator = 'W';\n  }\n  else if ((64 > lat) && (lat >= 56)) {\n    LetterDesignator = 'V';\n  }\n  else if ((56 > lat) && (lat >= 48)) {\n    LetterDesignator = 'U';\n  }\n  else if ((48 > lat) && (lat >= 40)) {\n    LetterDesignator = 'T';\n  }\n  else if ((40 > lat) && (lat >= 32)) {\n    LetterDesignator = 'S';\n  }\n  else if ((32 > lat) && (lat >= 24)) {\n    LetterDesignator = 'R';\n  }\n  else if ((24 > lat) && (lat >= 16)) {\n    LetterDesignator = 'Q';\n  }\n  else if ((16 > lat) && (lat >= 8)) {\n    LetterDesignator = 'P';\n  }\n  else if ((8 > lat) && (lat >= 0)) {\n    LetterDesignator = 'N';\n  }\n  else if ((0 > lat) && (lat >= -8)) {\n    LetterDesignator = 'M';\n  }\n  else if ((-8 > lat) && (lat >= -16)) {\n    LetterDesignator = 'L';\n  }\n  else if ((-16 > lat) && (lat >= -24)) {\n    LetterDesignator = 'K';\n  }\n  else if ((-24 > lat) && (lat >= -32)) {\n    LetterDesignator = 'J';\n  }\n  else if ((-32 > lat) && (lat >= -40)) {\n    LetterDesignator = 'H';\n  }\n  else if ((-40 > lat) && (lat >= -48)) {\n    LetterDesignator = 'G';\n  }\n  else if ((-48 > lat) && (lat >= -56)) {\n    LetterDesignator = 'F';\n  }\n  else if ((-56 > lat) && (lat >= -64)) {\n    LetterDesignator = 'E';\n  }\n  else if ((-64 > lat) && (lat >= -72)) {\n    LetterDesignator = 'D';\n  }\n  else if ((-72 > lat) && (lat >= -80)) {\n    LetterDesignator = 'C';\n  }\n  return LetterDesignator;\n}\n\n/**\n * Encodes a UTM location as MGRS string.\n *\n * @private\n * @param {object} utm An object literal with easting, northing,\n *     zoneLetter, zoneNumber\n * @param {number} accuracy Accuracy in digits (1-5).\n * @return {string} MGRS string for the given UTM location.\n */\nfunction encode(utm, accuracy) {\n  // prepend with leading zeroes\n  var seasting = \"00000\" + utm.easting,\n    snorthing = \"00000\" + utm.northing;\n\n  return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);\n}\n\n/**\n * Get the two letter 100k designator for a given UTM easting,\n * northing and zone number value.\n *\n * @private\n * @param {number} easting\n * @param {number} northing\n * @param {number} zoneNumber\n * @return the two letter 100k designator for the given UTM location.\n */\nfunction get100kID(easting, northing, zoneNumber) {\n  var setParm = get100kSetForZone(zoneNumber);\n  var setColumn = Math.floor(easting / 100000);\n  var setRow = Math.floor(northing / 100000) % 20;\n  return getLetter100kID(setColumn, setRow, setParm);\n}\n\n/**\n * Given a UTM zone number, figure out the MGRS 100K set it is in.\n *\n * @private\n * @param {number} i An UTM zone number.\n * @return {number} the 100k set the UTM zone is in.\n */\nfunction get100kSetForZone(i) {\n  var setParm = i % NUM_100K_SETS;\n  if (setParm === 0) {\n    setParm = NUM_100K_SETS;\n  }\n\n  return setParm;\n}\n\n/**\n * Get the two-letter MGRS 100k designator given information\n * translated from the UTM northing, easting and zone number.\n *\n * @private\n * @param {number} column the column index as it relates to the MGRS\n *        100k set spreadsheet, created from the UTM easting.\n *        Values are 1-8.\n * @param {number} row the row index as it relates to the MGRS 100k set\n *        spreadsheet, created from the UTM northing value. Values\n *        are from 0-19.\n * @param {number} parm the set block, as it relates to the MGRS 100k set\n *        spreadsheet, created from the UTM zone. Values are from\n *        1-60.\n * @return two letter MGRS 100k code.\n */\nfunction getLetter100kID(column, row, parm) {\n  // colOrigin and rowOrigin are the letters at the origin of the set\n  var index = parm - 1;\n  var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);\n  var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);\n\n  // colInt and rowInt are the letters to build to return\n  var colInt = colOrigin + column - 1;\n  var rowInt = rowOrigin + row;\n  var rollover = false;\n\n  if (colInt > Z) {\n    colInt = colInt - Z + A - 1;\n    rollover = true;\n  }\n\n  if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {\n    colInt++;\n  }\n\n  if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {\n    colInt++;\n\n    if (colInt === I) {\n      colInt++;\n    }\n  }\n\n  if (colInt > Z) {\n    colInt = colInt - Z + A - 1;\n  }\n\n  if (rowInt > V) {\n    rowInt = rowInt - V + A - 1;\n    rollover = true;\n  }\n  else {\n    rollover = false;\n  }\n\n  if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {\n    rowInt++;\n  }\n\n  if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {\n    rowInt++;\n\n    if (rowInt === I) {\n      rowInt++;\n    }\n  }\n\n  if (rowInt > V) {\n    rowInt = rowInt - V + A - 1;\n  }\n\n  var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);\n  return twoLetter;\n}\n\n/**\n * Decode the UTM parameters from a MGRS string.\n *\n * @private\n * @param {string} mgrsString an UPPERCASE coordinate string is expected.\n * @return {object} An object literal with easting, northing, zoneLetter,\n *     zoneNumber and accuracy (in meters) properties.\n */\nfunction decode(mgrsString) {\n\n  if (mgrsString && mgrsString.length === 0) {\n    throw (\"MGRSPoint coverting from nothing\");\n  }\n\n  var length = mgrsString.length;\n\n  var hunK = null;\n  var sb = \"\";\n  var testChar;\n  var i = 0;\n\n  // get Zone number\n  while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {\n    if (i >= 2) {\n      throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n    }\n    sb += testChar;\n    i++;\n  }\n\n  var zoneNumber = parseInt(sb, 10);\n\n  if (i === 0 || i + 3 > length) {\n    // A good MGRS string has to be 4-5 digits long,\n    // ##AAA/#AAA at least.\n    throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n  }\n\n  var zoneLetter = mgrsString.charAt(i++);\n\n  // Should we check the zone letter here? Why not.\n  if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {\n    throw (\"MGRSPoint zone letter \" + zoneLetter + \" not handled: \" + mgrsString);\n  }\n\n  hunK = mgrsString.substring(i, i += 2);\n\n  var set = get100kSetForZone(zoneNumber);\n\n  var east100k = getEastingFromChar(hunK.charAt(0), set);\n  var north100k = getNorthingFromChar(hunK.charAt(1), set);\n\n  // We have a bug where the northing may be 2000000 too low.\n  // How\n  // do we know when to roll over?\n\n  while (north100k < getMinNorthing(zoneLetter)) {\n    north100k += 2000000;\n  }\n\n  // calculate the char index for easting/northing separator\n  var remainder = length - i;\n\n  if (remainder % 2 !== 0) {\n    throw (\"MGRSPoint has to have an even number \\nof digits after the zone letter and two 100km letters - front \\nhalf for easting meters, second half for \\nnorthing meters\" + mgrsString);\n  }\n\n  var sep = remainder / 2;\n\n  var sepEasting = 0.0;\n  var sepNorthing = 0.0;\n  var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;\n  if (sep > 0) {\n    accuracyBonus = 100000.0 / Math.pow(10, sep);\n    sepEastingString = mgrsString.substring(i, i + sep);\n    sepEasting = parseFloat(sepEastingString) * accuracyBonus;\n    sepNorthingString = mgrsString.substring(i + sep);\n    sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;\n  }\n\n  easting = sepEasting + east100k;\n  northing = sepNorthing + north100k;\n\n  return {\n    easting: easting,\n    northing: northing,\n    zoneLetter: zoneLetter,\n    zoneNumber: zoneNumber,\n    accuracy: accuracyBonus\n  };\n}\n\n/**\n * Given the first letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the easting value that\n * should be added to the other, secondary easting value.\n *\n * @private\n * @param {char} e The first letter from a two-letter MGRS 100´k zone.\n * @param {number} set The MGRS table set for the zone number.\n * @return {number} The easting value for the given letter and set.\n */\nfunction getEastingFromChar(e, set) {\n  // colOrigin is the letter at the origin of the set for the\n  // column\n  var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);\n  var eastingValue = 100000.0;\n  var rewindMarker = false;\n\n  while (curCol !== e.charCodeAt(0)) {\n    curCol++;\n    if (curCol === I) {\n      curCol++;\n    }\n    if (curCol === O) {\n      curCol++;\n    }\n    if (curCol > Z) {\n      if (rewindMarker) {\n        throw (\"Bad character: \" + e);\n      }\n      curCol = A;\n      rewindMarker = true;\n    }\n    eastingValue += 100000.0;\n  }\n\n  return eastingValue;\n}\n\n/**\n * Given the second letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the northing value that\n * should be added to the other, secondary northing value. You have to\n * remember that Northings are determined from the equator, and the vertical\n * cycle of letters mean a 2000000 additional northing meters. This happens\n * approx. every 18 degrees of latitude. This method does *NOT* count any\n * additional northings. You have to figure out how many 2000000 meters need\n * to be added for the zone letter of the MGRS coordinate.\n *\n * @private\n * @param {char} n Second letter of the MGRS 100k zone\n * @param {number} set The MGRS table set number, which is dependent on the\n *     UTM zone number.\n * @return {number} The northing value for the given letter and set.\n */\nfunction getNorthingFromChar(n, set) {\n\n  if (n > 'V') {\n    throw (\"MGRSPoint given invalid Northing \" + n);\n  }\n\n  // rowOrigin is the letter at the origin of the set for the\n  // column\n  var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);\n  var northingValue = 0.0;\n  var rewindMarker = false;\n\n  while (curRow !== n.charCodeAt(0)) {\n    curRow++;\n    if (curRow === I) {\n      curRow++;\n    }\n    if (curRow === O) {\n      curRow++;\n    }\n    // fixing a bug making whole application hang in this loop\n    // when 'n' is a wrong character\n    if (curRow > V) {\n      if (rewindMarker) { // making sure that this loop ends\n        throw (\"Bad character: \" + n);\n      }\n      curRow = A;\n      rewindMarker = true;\n    }\n    northingValue += 100000.0;\n  }\n\n  return northingValue;\n}\n\n/**\n * The function getMinNorthing returns the minimum northing value of a MGRS\n * zone.\n *\n * Ported from Geotrans' c Lattitude_Band_Value structure table.\n *\n * @private\n * @param {char} zoneLetter The MGRS zone to get the min northing for.\n * @return {number}\n */\nfunction getMinNorthing(zoneLetter) {\n  var northing;\n  switch (zoneLetter) {\n  case 'C':\n    northing = 1100000.0;\n    break;\n  case 'D':\n    northing = 2000000.0;\n    break;\n  case 'E':\n    northing = 2800000.0;\n    break;\n  case 'F':\n    northing = 3700000.0;\n    break;\n  case 'G':\n    northing = 4600000.0;\n    break;\n  case 'H':\n    northing = 5500000.0;\n    break;\n  case 'J':\n    northing = 6400000.0;\n    break;\n  case 'K':\n    northing = 7300000.0;\n    break;\n  case 'L':\n    northing = 8200000.0;\n    break;\n  case 'M':\n    northing = 9100000.0;\n    break;\n  case 'N':\n    northing = 0.0;\n    break;\n  case 'P':\n    northing = 800000.0;\n    break;\n  case 'Q':\n    northing = 1700000.0;\n    break;\n  case 'R':\n    northing = 2600000.0;\n    break;\n  case 'S':\n    northing = 3500000.0;\n    break;\n  case 'T':\n    northing = 4400000.0;\n    break;\n  case 'U':\n    northing = 5300000.0;\n    break;\n  case 'V':\n    northing = 6200000.0;\n    break;\n  case 'W':\n    northing = 7000000.0;\n    break;\n  case 'X':\n    northing = 7900000.0;\n    break;\n  default:\n    northing = -1.0;\n  }\n  if (northing >= 0.0) {\n    return northing;\n  }\n  else {\n    throw (\"Invalid zone letter: \" + zoneLetter);\n  }\n\n}\n","import {toPoint, forward} from 'mgrs';\n\nfunction Point(x, y, z) {\n  if (!(this instanceof Point)) {\n    return new Point(x, y, z);\n  }\n  if (Array.isArray(x)) {\n    this.x = x[0];\n    this.y = x[1];\n    this.z = x[2] || 0.0;\n  } else if(typeof x === 'object') {\n    this.x = x.x;\n    this.y = x.y;\n    this.z = x.z || 0.0;\n  } else if (typeof x === 'string' && typeof y === 'undefined') {\n    var coords = x.split(',');\n    this.x = parseFloat(coords[0], 10);\n    this.y = parseFloat(coords[1], 10);\n    this.z = parseFloat(coords[2], 10) || 0.0;\n  } else {\n    this.x = x;\n    this.y = y;\n    this.z = z || 0.0;\n  }\n  console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');\n}\n\nPoint.fromMGRS = function(mgrsStr) {\n  return new Point(toPoint(mgrsStr));\n};\nPoint.prototype.toMGRS = function(accuracy) {\n  return forward([this.x, this.y], accuracy);\n};\nexport default Point;\n","var C00 = 1;\nvar C02 = 0.25;\nvar C04 = 0.046875;\nvar C06 = 0.01953125;\nvar C08 = 0.01068115234375;\nvar C22 = 0.75;\nvar C44 = 0.46875;\nvar C46 = 0.01302083333333333333;\nvar C48 = 0.00712076822916666666;\nvar C66 = 0.36458333333333333333;\nvar C68 = 0.00569661458333333333;\nvar C88 = 0.3076171875;\n\nexport default function(es) {\n  var en = [];\n  en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));\n  en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));\n  var t = es * es;\n  en[2] = t * (C44 - es * (C46 + es * C48));\n  t *= es;\n  en[3] = t * (C66 - es * C68);\n  en[4] = t * es * C88;\n  return en;\n}","export default function(phi, sphi, cphi, en) {\n  cphi *= sphi;\n  sphi *= sphi;\n  return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));\n}","import pj_mlfn from \"./pj_mlfn\";\nimport {EPSLN} from '../constants/values';\n\nvar MAX_ITER = 20;\n\nexport default function(arg, es, en) {\n  var k = 1 / (1 - es);\n  var phi = arg;\n  for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */\n    var s = Math.sin(phi);\n    var t = 1 - es * s * s;\n    //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;\n    //phi -= t * (t * Math.sqrt(t)) * k;\n    t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;\n    phi -= t;\n    if (Math.abs(t) < EPSLN) {\n      return phi;\n    }\n  }\n  //..reportError(\"cass:pj_inv_mlfn: Convergence error\");\n  return phi;\n}\n","// Heavily based on this tmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js\n\nimport pj_enfn from '../common/pj_enfn';\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport adjust_lon from '../common/adjust_lon';\n\nimport {EPSLN, HALF_PI} from '../constants/values';\nimport sign from '../common/sign';\n\nexport function init() {\n  this.x0 = this.x0 !== undefined ? this.x0 : 0;\n  this.y0 = this.y0 !== undefined ? this.y0 : 0;\n  this.long0 = this.long0 !== undefined ? this.long0 : 0;\n  this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n  if (this.es) {\n    this.en = pj_enfn(this.es);\n    this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en);\n  }\n}\n\n/**\n    Transverse Mercator Forward  - long/lat to x/y\n    long/lat in radians\n  */\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n\n  var delta_lon = adjust_lon(lon - this.long0);\n  var con;\n  var x, y;\n  var sin_phi = Math.sin(lat);\n  var cos_phi = Math.cos(lat);\n\n  if (!this.es) {\n    var b = cos_phi * Math.sin(delta_lon);\n\n    if ((Math.abs(Math.abs(b) - 1)) < EPSLN) {\n      return (93);\n    }\n    else {\n      x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0;\n      y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2));\n      b = Math.abs(y);\n\n      if (b >= 1) {\n        if ((b - 1) > EPSLN) {\n          return (93);\n        }\n        else {\n          y = 0;\n        }\n      }\n      else {\n        y = Math.acos(y);\n      }\n\n      if (lat < 0) {\n        y = -y;\n      }\n\n      y = this.a * this.k0 * (y - this.lat0) + this.y0;\n    }\n  }\n  else {\n    var al = cos_phi * delta_lon;\n    var als = Math.pow(al, 2);\n    var c = this.ep2 * Math.pow(cos_phi, 2);\n    var cs = Math.pow(c, 2);\n    var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0;\n    var t = Math.pow(tq, 2);\n    var ts = Math.pow(t, 2);\n    con = 1 - this.es * Math.pow(sin_phi, 2);\n    al = al / Math.sqrt(con);\n    var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en);\n\n    x = this.a * (this.k0 * al * (1 +\n      als / 6 * (1 - t + c +\n      als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c +\n      als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) +\n      this.x0;\n\n    y = this.a * (this.k0 * (ml - this.ml0 +\n      sin_phi * delta_lon * al / 2 * (1 +\n      als / 12 * (5 - t + 9 * c + 4 * cs +\n      als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c +\n      als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) +\n      this.y0;\n  }\n\n  p.x = x;\n  p.y = y;\n\n  return p;\n}\n\n/**\n    Transverse Mercator Inverse  -  x/y to long/lat\n  */\nexport function inverse(p) {\n  var con, phi;\n  var lat, lon;\n  var x = (p.x - this.x0) * (1 / this.a);\n  var y = (p.y - this.y0) * (1 / this.a);\n\n  if (!this.es) {\n    var f = Math.exp(x / this.k0);\n    var g = 0.5 * (f - 1 / f);\n    var temp = this.lat0 + y / this.k0;\n    var h = Math.cos(temp);\n    con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2)));\n    lat = Math.asin(con);\n\n    if (y < 0) {\n      lat = -lat;\n    }\n\n    if ((g === 0) && (h === 0)) {\n      lon = 0;\n    }\n    else {\n      lon = adjust_lon(Math.atan2(g, h) + this.long0);\n    }\n  }\n  else { // ellipsoidal form\n    con = this.ml0 + y / this.k0;\n    phi = pj_inv_mlfn(con, this.es, this.en);\n\n    if (Math.abs(phi) < HALF_PI) {\n      var sin_phi = Math.sin(phi);\n      var cos_phi = Math.cos(phi);\n      var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0;\n      var c = this.ep2 * Math.pow(cos_phi, 2);\n      var cs = Math.pow(c, 2);\n      var t = Math.pow(tan_phi, 2);\n      var ts = Math.pow(t, 2);\n      con = 1 - this.es * Math.pow(sin_phi, 2);\n      var d = x * Math.sqrt(con) / this.k0;\n      var ds = Math.pow(d, 2);\n      con = con * tan_phi;\n\n      lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 -\n        ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs -\n        ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c -\n        ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t))));\n\n      lon = adjust_lon(this.long0 + (d * (1 -\n        ds / 6 * (1 + 2 * t + c -\n        ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c -\n        ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi));\n    }\n    else {\n      lat = HALF_PI * sign(y);\n      lon = 0;\n    }\n  }\n\n  p.x = lon;\n  p.y = lat;\n\n  return p;\n}\n\nexport var names = [\"Fast_Transverse_Mercator\", \"Fast Transverse Mercator\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","export default function(x) {\n  var r = Math.exp(x);\n  r = (r - 1 / r) / 2;\n  return r;\n}","export default function(x, y) {\n  x = Math.abs(x);\n  y = Math.abs(y);\n  var a = Math.max(x, y);\n  var b = Math.min(x, y) / (a ? a : 1);\n\n  return a * Math.sqrt(1 + Math.pow(b, 2));\n}\n","export default function(x) {\n  var y = 1 + x;\n  var z = y - 1;\n\n  return z === 0 ? x : x * Math.log(y) / z;\n}\n","import hypot from './hypot';\nimport log1py from './log1py';\n\nexport default function(x) {\n  var y = Math.abs(x);\n  y = log1py(y * (1 + y / (hypot(1, y) + 1)));\n\n  return x < 0 ? -y : y;\n}\n","export default function(pp, B) {\n  var cos_2B = 2 * Math.cos(2 * B);\n  var i = pp.length - 1;\n  var h1 = pp[i];\n  var h2 = 0;\n  var h;\n\n  while (--i >= 0) {\n    h = -h2 + cos_2B * h1 + pp[i];\n    h2 = h1;\n    h1 = h;\n  }\n\n  return (B + h * Math.sin(2 * B));\n}\n","export default function(pp, arg_r) {\n  var r = 2 * Math.cos(arg_r);\n  var i = pp.length - 1;\n  var hr1 = pp[i];\n  var hr2 = 0;\n  var hr;\n\n  while (--i >= 0) {\n    hr = -hr2 + r * hr1 + pp[i];\n    hr2 = hr1;\n    hr1 = hr;\n  }\n\n  return Math.sin(arg_r) * hr;\n}\n","export default function(x) {\n  var r = Math.exp(x);\n  r = (r + 1 / r) / 2;\n  return r;\n}","import sinh from './sinh';\nimport cosh from './cosh';\n\nexport default function(pp, arg_r, arg_i) {\n  var sin_arg_r = Math.sin(arg_r);\n  var cos_arg_r = Math.cos(arg_r);\n  var sinh_arg_i = sinh(arg_i);\n  var cosh_arg_i = cosh(arg_i);\n  var r = 2 * cos_arg_r * cosh_arg_i;\n  var i = -2 * sin_arg_r * sinh_arg_i;\n  var j = pp.length - 1;\n  var hr = pp[j];\n  var hi1 = 0;\n  var hr1 = 0;\n  var hi = 0;\n  var hr2;\n  var hi2;\n\n  while (--j >= 0) {\n    hr2 = hr1;\n    hi2 = hi1;\n    hr1 = hr;\n    hi1 = hi;\n    hr = -hr2 + r * hr1 - i * hi1 + pp[j];\n    hi = -hi2 + i * hr1 + r * hi1;\n  }\n\n  r = sin_arg_r * cosh_arg_i;\n  i = cos_arg_r * sinh_arg_i;\n\n  return [r * hr - i * hi, r * hi + i * hr];\n}\n","// Heavily based on this etmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js\n\nimport tmerc from '../projections/tmerc';\nimport sinh from '../common/sinh';\nimport hypot from '../common/hypot';\nimport asinhy from '../common/asinhy';\nimport gatg from '../common/gatg';\nimport clens from '../common/clens';\nimport clens_cmplx from '../common/clens_cmplx';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n  if (!this.approx && (isNaN(this.es) || this.es <= 0)) {\n    throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION[\"Fast_Transverse_Mercator\"] in the WKT.');\n  }\n  if (this.approx) {\n    // When '+approx' is set, use tmerc instead\n    tmerc.init.apply(this);\n    this.forward = tmerc.forward;\n    this.inverse = tmerc.inverse;\n  }\n\n  this.x0 = this.x0 !== undefined ? this.x0 : 0;\n  this.y0 = this.y0 !== undefined ? this.y0 : 0;\n  this.long0 = this.long0 !== undefined ? this.long0 : 0;\n  this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n  this.cgb = [];\n  this.cbg = [];\n  this.utg = [];\n  this.gtu = [];\n\n  var f = this.es / (1 + Math.sqrt(1 - this.es));\n  var n = f / (2 - f);\n  var np = n;\n\n  this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 ))))));\n  this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725))))));\n\n  np = np * n;\n  this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945)))));\n  this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945)))));\n\n  np = np * n;\n  this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835))));\n  this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835))));\n\n  np = np * n;\n  this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175)));\n  this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175)));\n\n  np = np * n;\n  this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237));\n  this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185));\n\n  np = np * n;\n  this.cgb[5] = np * (601676 / 22275);\n  this.cbg[5] = np * (444337 / 155925);\n\n  np = Math.pow(n, 2);\n  this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256)));\n\n  this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800))))));\n  this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800))))));\n\n  this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720)))));\n  this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360)))));\n\n  np = np * n;\n  this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 ))));\n  this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440))));\n\n  np = np * n;\n  this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600)));\n  this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600)));\n\n  np = np * n;\n  this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680));\n  this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840));\n\n  np = np * n;\n  this.utg[5] = np * (-20648693 / 638668800);\n  this.gtu[5] = np * (212378941 / 319334400);\n\n  var Z = gatg(this.cbg, this.lat0);\n  this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z));\n}\n\nexport function forward(p) {\n  var Ce = adjust_lon(p.x - this.long0);\n  var Cn = p.y;\n\n  Cn = gatg(this.cbg, Cn);\n  var sin_Cn = Math.sin(Cn);\n  var cos_Cn = Math.cos(Cn);\n  var sin_Ce = Math.sin(Ce);\n  var cos_Ce = Math.cos(Ce);\n\n  Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn);\n  Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce));\n  Ce = asinhy(Math.tan(Ce));\n\n  var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce);\n\n  Cn = Cn + tmp[0];\n  Ce = Ce + tmp[1];\n\n  var x;\n  var y;\n\n  if (Math.abs(Ce) <= 2.623395162778) {\n    x = this.a * (this.Qn * Ce) + this.x0;\n    y = this.a * (this.Qn * Cn + this.Zb) + this.y0;\n  }\n  else {\n    x = Infinity;\n    y = Infinity;\n  }\n\n  p.x = x;\n  p.y = y;\n\n  return p;\n}\n\nexport function inverse(p) {\n  var Ce = (p.x - this.x0) * (1 / this.a);\n  var Cn = (p.y - this.y0) * (1 / this.a);\n\n  Cn = (Cn - this.Zb) / this.Qn;\n  Ce = Ce / this.Qn;\n\n  var lon;\n  var lat;\n\n  if (Math.abs(Ce) <= 2.623395162778) {\n    var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce);\n\n    Cn = Cn + tmp[0];\n    Ce = Ce + tmp[1];\n    Ce = Math.atan(sinh(Ce));\n\n    var sin_Cn = Math.sin(Cn);\n    var cos_Cn = Math.cos(Cn);\n    var sin_Ce = Math.sin(Ce);\n    var cos_Ce = Math.cos(Ce);\n\n    Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn));\n    Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn);\n\n    lon = adjust_lon(Ce + this.long0);\n    lat = gatg(this.cgb, Cn);\n  }\n  else {\n    lon = Infinity;\n    lat = Infinity;\n  }\n\n  p.x = lon;\n  p.y = lat;\n\n  return p;\n}\n\nexport var names = [\"Extended_Transverse_Mercator\", \"Extended Transverse Mercator\", \"etmerc\", \"Transverse_Mercator\", \"Transverse Mercator\", \"tmerc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from './adjust_lon';\n\nexport default function(zone, lon) {\n  if (zone === undefined) {\n    zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1;\n\n    if (zone < 0) {\n      return 0;\n    } else if (zone > 60) {\n      return 60;\n    }\n  }\n  return zone;\n}\n","import adjust_zone from '../common/adjust_zone';\nimport etmerc from './etmerc';\nexport var dependsOn = 'etmerc';\nimport {D2R} from '../constants/values';\n\n\nexport function init() {\n  var zone = adjust_zone(this.zone, this.long0);\n  if (zone === undefined) {\n    throw new Error('unknown utm zone');\n  }\n  this.lat0 = 0;\n  this.long0 =  ((6 * Math.abs(zone)) - 183) * D2R;\n  this.x0 = 500000;\n  this.y0 = this.utmSouth ? 10000000 : 0;\n  this.k0 = 0.9996;\n\n  etmerc.init.apply(this);\n  this.forward = etmerc.forward;\n  this.inverse = etmerc.inverse;\n}\n\nexport var names = [\"Universal Transverse Mercator System\", \"utm\"];\nexport default {\n  init: init,\n  names: names,\n  dependsOn: dependsOn\n};\n","export default function(esinp, exp) {\n  return (Math.pow((1 - esinp) / (1 + esinp), exp));\n}","import srat from '../common/srat';\nvar MAX_ITER = 20;\nimport {HALF_PI, FORTPI} from '../constants/values';\n\nexport function init() {\n  var sphi = Math.sin(this.lat0);\n  var cphi = Math.cos(this.lat0);\n  cphi *= cphi;\n  this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);\n  this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));\n  this.phic0 = Math.asin(sphi / this.C);\n  this.ratexp = 0.5 * this.C * this.e;\n  this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));\n}\n\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n\n  p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;\n  p.x = this.C * lon;\n  return p;\n}\n\nexport function inverse(p) {\n  var DEL_TOL = 1e-14;\n  var lon = p.x / this.C;\n  var lat = p.y;\n  var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);\n  for (var i = MAX_ITER; i > 0; --i) {\n    lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;\n    if (Math.abs(lat - p.y) < DEL_TOL) {\n      break;\n    }\n    p.y = lat;\n  }\n  /* convergence failed */\n  if (!i) {\n    return null;\n  }\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"gauss\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import gauss from './gauss';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n  gauss.init.apply(this);\n  if (!this.rc) {\n    return;\n  }\n  this.sinc0 = Math.sin(this.phic0);\n  this.cosc0 = Math.cos(this.phic0);\n  this.R2 = 2 * this.rc;\n  if (!this.title) {\n    this.title = \"Oblique Stereographic Alternative\";\n  }\n}\n\nexport function forward(p) {\n  var sinc, cosc, cosl, k;\n  p.x = adjust_lon(p.x - this.long0);\n  gauss.forward.apply(this, [p]);\n  sinc = Math.sin(p.y);\n  cosc = Math.cos(p.y);\n  cosl = Math.cos(p.x);\n  k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);\n  p.x = k * cosc * Math.sin(p.x);\n  p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);\n  p.x = this.a * p.x + this.x0;\n  p.y = this.a * p.y + this.y0;\n  return p;\n}\n\nexport function inverse(p) {\n  var sinc, cosc, lon, lat, rho;\n  p.x = (p.x - this.x0) / this.a;\n  p.y = (p.y - this.y0) / this.a;\n\n  p.x /= this.k0;\n  p.y /= this.k0;\n  if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {\n    var c = 2 * Math.atan2(rho, this.R2);\n    sinc = Math.sin(c);\n    cosc = Math.cos(c);\n    lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);\n    lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);\n  }\n  else {\n    lat = this.phic0;\n    lon = 0;\n  }\n\n  p.x = lon;\n  p.y = lat;\n  gauss.inverse.apply(this, [p]);\n  p.x = adjust_lon(p.x + this.long0);\n  return p;\n}\n\nexport var names = [\"Stereographic_North_Pole\", \"Oblique_Stereographic\", \"Polar_Stereographic\", \"sterea\",\"Oblique Stereographic Alternative\",\"Double_Stereographic\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import {EPSLN, HALF_PI} from '../constants/values';\n\nimport sign from '../common/sign';\nimport msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function ssfn_(phit, sinphi, eccen) {\n  sinphi *= eccen;\n  return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));\n}\n\nexport function init() {\n  this.coslat0 = Math.cos(this.lat0);\n  this.sinlat0 = Math.sin(this.lat0);\n  if (this.sphere) {\n    if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n      this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));\n    }\n  }\n  else {\n    if (Math.abs(this.coslat0) <= EPSLN) {\n      if (this.lat0 > 0) {\n        //North pole\n        //trace('stere:north pole');\n        this.con = 1;\n      }\n      else {\n        //South pole\n        //trace('stere:south pole');\n        this.con = -1;\n      }\n    }\n    this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));\n    if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n      this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));\n    }\n    this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);\n    this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;\n    this.cosX0 = Math.cos(this.X0);\n    this.sinX0 = Math.sin(this.X0);\n  }\n}\n\n// Stereographic forward equations--mapping lat,long to x,y\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  var sinlat = Math.sin(lat);\n  var coslat = Math.cos(lat);\n  var A, X, sinX, cosX, ts, rh;\n  var dlon = adjust_lon(lon - this.long0);\n\n  if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {\n    //case of the origine point\n    //trace('stere:this is the origin point');\n    p.x = NaN;\n    p.y = NaN;\n    return p;\n  }\n  if (this.sphere) {\n    //trace('stere:sphere case');\n    A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));\n    p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;\n    p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;\n    return p;\n  }\n  else {\n    X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;\n    cosX = Math.cos(X);\n    sinX = Math.sin(X);\n    if (Math.abs(this.coslat0) <= EPSLN) {\n      ts = tsfnz(this.e, lat * this.con, this.con * sinlat);\n      rh = 2 * this.a * this.k0 * ts / this.cons;\n      p.x = this.x0 + rh * Math.sin(lon - this.long0);\n      p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);\n      //trace(p.toString());\n      return p;\n    }\n    else if (Math.abs(this.sinlat0) < EPSLN) {\n      //Eq\n      //trace('stere:equateur');\n      A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));\n      p.y = A * sinX;\n    }\n    else {\n      //other case\n      //trace('stere:normal case');\n      A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));\n      p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;\n    }\n    p.x = A * cosX * Math.sin(dlon) + this.x0;\n  }\n  //trace(p.toString());\n  return p;\n}\n\n//* Stereographic inverse equations--mapping x,y to lat/long\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y -= this.y0;\n  var lon, lat, ts, ce, Chi;\n  var rh = Math.sqrt(p.x * p.x + p.y * p.y);\n  if (this.sphere) {\n    var c = 2 * Math.atan(rh / (2 * this.a * this.k0));\n    lon = this.long0;\n    lat = this.lat0;\n    if (rh <= EPSLN) {\n      p.x = lon;\n      p.y = lat;\n      return p;\n    }\n    lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);\n    if (Math.abs(this.coslat0) < EPSLN) {\n      if (this.lat0 > 0) {\n        lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n      }\n      else {\n        lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n      }\n    }\n    else {\n      lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));\n    }\n    p.x = lon;\n    p.y = lat;\n    return p;\n  }\n  else {\n    if (Math.abs(this.coslat0) <= EPSLN) {\n      if (rh <= EPSLN) {\n        lat = this.lat0;\n        lon = this.long0;\n        p.x = lon;\n        p.y = lat;\n        //trace(p.toString());\n        return p;\n      }\n      p.x *= this.con;\n      p.y *= this.con;\n      ts = rh * this.cons / (2 * this.a * this.k0);\n      lat = this.con * phi2z(this.e, ts);\n      lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));\n    }\n    else {\n      ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));\n      lon = this.long0;\n      if (rh <= EPSLN) {\n        Chi = this.X0;\n      }\n      else {\n        Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);\n        lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));\n      }\n      lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));\n    }\n  }\n  p.x = lon;\n  p.y = lat;\n\n  //trace(p.toString());\n  return p;\n\n}\n\nexport var names = [\"stere\", \"Stereographic_South_Pole\", \"Polar Stereographic (variant B)\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names,\n  ssfn_: ssfn_\n};\n","/*\n  references:\n    Formules et constantes pour le Calcul pour la\n    projection cylindrique conforme à axe oblique et pour la transformation entre\n    des systèmes de référence.\n    http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf\n  */\n\nexport function init() {\n  var phy0 = this.lat0;\n  this.lambda0 = this.long0;\n  var sinPhy0 = Math.sin(phy0);\n  var semiMajorAxis = this.a;\n  var invF = this.rf;\n  var flattening = 1 / invF;\n  var e2 = 2 * flattening - Math.pow(flattening, 2);\n  var e = this.e = Math.sqrt(e2);\n  this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));\n  this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));\n  this.b0 = Math.asin(sinPhy0 / this.alpha);\n  var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));\n  var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));\n  var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));\n  this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;\n}\n\nexport function forward(p) {\n  var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));\n  var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));\n  var S = -this.alpha * (Sa1 + Sa2) + this.K;\n\n  // spheric latitude\n  var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);\n\n  // spheric longitude\n  var I = this.alpha * (p.x - this.lambda0);\n\n  // psoeudo equatorial rotation\n  var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));\n\n  var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));\n\n  p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;\n  p.x = this.R * rotI + this.x0;\n  return p;\n}\n\nexport function inverse(p) {\n  var Y = p.x - this.x0;\n  var X = p.y - this.y0;\n\n  var rotI = Y / this.R;\n  var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);\n\n  var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));\n  var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));\n\n  var lambda = this.lambda0 + I / this.alpha;\n\n  var S = 0;\n  var phy = b;\n  var prevPhy = -1000;\n  var iteration = 0;\n  while (Math.abs(phy - prevPhy) > 0.0000001) {\n    if (++iteration > 20) {\n      //...reportError(\"omercFwdInfinity\");\n      return;\n    }\n    //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));\n    S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));\n    prevPhy = phy;\n    phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;\n  }\n\n  p.x = lambda;\n  p.y = phy;\n  return p;\n}\n\nexport var names = [\"somerc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import tsfnz from '../common/tsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport { D2R, EPSLN, HALF_PI, TWO_PI, FORTPI } from '../constants/values';\n\nvar TOL = 1e-7;\n\nfunction isTypeA(P) {\n  var typeAProjections = ['Hotine_Oblique_Mercator','Hotine_Oblique_Mercator_Azimuth_Natural_Origin'];\n  var projectionName = typeof P.PROJECTION === \"object\" ? Object.keys(P.PROJECTION)[0] : P.PROJECTION;\n  \n  return 'no_uoff' in P || 'no_off' in P || typeAProjections.indexOf(projectionName) !== -1;\n}\n\n\n/* Initialize the Oblique Mercator  projection\n    ------------------------------------------*/\nexport function init() {  \n  var con, com, cosph0, D, F, H, L, sinph0, p, J, gamma = 0,\n    gamma0, lamc = 0, lam1 = 0, lam2 = 0, phi1 = 0, phi2 = 0, alpha_c = 0, AB;\n  \n  // only Type A uses the no_off or no_uoff property\n  // https://github.com/OSGeo/proj.4/issues/104\n  this.no_off = isTypeA(this);\n  this.no_rot = 'no_rot' in this;\n  \n  var alp = false;\n  if (\"alpha\" in this) {\n    alp = true;\n  }\n\n  var gam = false;\n  if (\"rectified_grid_angle\" in this) {\n    gam = true;\n  }\n\n  if (alp) {\n    alpha_c = this.alpha;\n  }\n  \n  if (gam) {\n    gamma = (this.rectified_grid_angle * D2R);\n  }\n  \n  if (alp || gam) {\n    lamc = this.longc;\n  } else {\n    lam1 = this.long1;\n    phi1 = this.lat1;\n    lam2 = this.long2;\n    phi2 = this.lat2;\n    \n    if (Math.abs(phi1 - phi2) <= TOL || (con = Math.abs(phi1)) <= TOL ||\n        Math.abs(con - HALF_PI) <= TOL || Math.abs(Math.abs(this.lat0) - HALF_PI) <= TOL ||\n        Math.abs(Math.abs(phi2) - HALF_PI) <= TOL) {\n      throw new Error();\n    }\n  }\n  \n  var one_es = 1.0 - this.es;\n  com = Math.sqrt(one_es);\n  \n  if (Math.abs(this.lat0) > EPSLN) {\n    sinph0 = Math.sin(this.lat0);\n    cosph0 = Math.cos(this.lat0);\n    con = 1 - this.es * sinph0 * sinph0;\n    this.B = cosph0 * cosph0;\n    this.B = Math.sqrt(1 + this.es * this.B * this.B / one_es);\n    this.A = this.B * this.k0 * com / con;\n    D = this.B * com / (cosph0 * Math.sqrt(con));\n    F = D * D -1;\n    \n    if (F <= 0) {\n      F = 0;\n    } else {\n      F = Math.sqrt(F);\n      if (this.lat0 < 0) {\n        F = -F;\n      }\n    }\n    \n    this.E = F += D;\n    this.E *= Math.pow(tsfnz(this.e, this.lat0, sinph0), this.B);\n  } else {\n    this.B = 1 / com;\n    this.A = this.k0;\n    this.E = D = F = 1;\n  }\n  \n  if (alp || gam) {\n    if (alp) {\n      gamma0 = Math.asin(Math.sin(alpha_c) / D);\n      if (!gam) {\n        gamma = alpha_c;\n      }\n    } else {\n      gamma0 = gamma;\n      alpha_c = Math.asin(D * Math.sin(gamma0));\n    }\n    this.lam0 = lamc - Math.asin(0.5 * (F - 1 / F) * Math.tan(gamma0)) / this.B;\n  } else {\n    H = Math.pow(tsfnz(this.e, phi1, Math.sin(phi1)), this.B);\n    L = Math.pow(tsfnz(this.e, phi2, Math.sin(phi2)), this.B);\n    F = this.E / H;\n    p = (L - H) / (L + H);\n    J = this.E * this.E;\n    J = (J - L * H) / (J + L * H);\n    con = lam1 - lam2;\n    \n    if (con < -Math.pi) {\n      lam2 -=TWO_PI;\n    } else if (con > Math.pi) {\n      lam2 += TWO_PI;\n    }\n    \n    this.lam0 = adjust_lon(0.5 * (lam1 + lam2) - Math.atan(J * Math.tan(0.5 * this.B * (lam1 - lam2)) / p) / this.B);\n    gamma0 = Math.atan(2 * Math.sin(this.B * adjust_lon(lam1 - this.lam0)) / (F - 1 / F));\n    gamma = alpha_c = Math.asin(D * Math.sin(gamma0));\n  }\n  \n  this.singam = Math.sin(gamma0);\n  this.cosgam = Math.cos(gamma0);\n  this.sinrot = Math.sin(gamma);\n  this.cosrot = Math.cos(gamma);\n  \n  this.rB = 1 / this.B;\n  this.ArB = this.A * this.rB;\n  this.BrA = 1 / this.ArB;\n  AB = this.A * this.B;\n  \n  if (this.no_off) {\n    this.u_0 = 0;\n  } else {\n    this.u_0 = Math.abs(this.ArB * Math.atan(Math.sqrt(D * D - 1) / Math.cos(alpha_c)));\n    \n    if (this.lat0 < 0) {\n      this.u_0 = - this.u_0;\n    }  \n  }\n    \n  F = 0.5 * gamma0;\n  this.v_pole_n = this.ArB * Math.log(Math.tan(FORTPI - F));\n  this.v_pole_s = this.ArB * Math.log(Math.tan(FORTPI + F));\n}\n\n\n/* Oblique Mercator forward equations--mapping lat,long to x,y\n    ----------------------------------------------------------*/\nexport function forward(p) {\n  var coords = {};\n  var S, T, U, V, W, temp, u, v;\n  p.x = p.x - this.lam0;\n  \n  if (Math.abs(Math.abs(p.y) - HALF_PI) > EPSLN) {\n    W = this.E / Math.pow(tsfnz(this.e, p.y, Math.sin(p.y)), this.B);\n    \n    temp = 1 / W;\n    S = 0.5 * (W - temp);\n    T = 0.5 * (W + temp);\n    V = Math.sin(this.B * p.x);\n    U = (S * this.singam - V * this.cosgam) / T;\n        \n    if (Math.abs(Math.abs(U) - 1.0) < EPSLN) {\n      throw new Error();\n    }\n    \n    v = 0.5 * this.ArB * Math.log((1 - U)/(1 + U));\n    temp = Math.cos(this.B * p.x);\n    \n    if (Math.abs(temp) < TOL) {\n      u = this.A * p.x;\n    } else {\n      u = this.ArB * Math.atan2((S * this.cosgam + V * this.singam), temp);\n    }    \n  } else {\n    v = p.y > 0 ? this.v_pole_n : this.v_pole_s;\n    u = this.ArB * p.y;\n  }\n     \n  if (this.no_rot) {\n    coords.x = u;\n    coords.y = v;\n  } else {\n    u -= this.u_0;\n    coords.x = v * this.cosrot + u * this.sinrot;\n    coords.y = u * this.cosrot - v * this.sinrot;\n  }\n  \n  coords.x = (this.a * coords.x + this.x0);\n  coords.y = (this.a * coords.y + this.y0);\n  \n  return coords;\n}\n\nexport function inverse(p) {\n  var u, v, Qp, Sp, Tp, Vp, Up;\n  var coords = {};\n  \n  p.x = (p.x - this.x0) * (1.0 / this.a);\n  p.y = (p.y - this.y0) * (1.0 / this.a);\n\n  if (this.no_rot) {\n    v = p.y;\n    u = p.x;\n  } else {\n    v = p.x * this.cosrot - p.y * this.sinrot;\n    u = p.y * this.cosrot + p.x * this.sinrot + this.u_0;\n  }\n  \n  Qp = Math.exp(-this.BrA * v);\n  Sp = 0.5 * (Qp - 1 / Qp);\n  Tp = 0.5 * (Qp + 1 / Qp);\n  Vp = Math.sin(this.BrA * u);\n  Up = (Vp * this.cosgam + Sp * this.singam) / Tp;\n  \n  if (Math.abs(Math.abs(Up) - 1) < EPSLN) {\n    coords.x = 0;\n    coords.y = Up < 0 ? -HALF_PI : HALF_PI;\n  } else {\n    coords.y = this.E / Math.sqrt((1 + Up) / (1 - Up));\n    coords.y = phi2z(this.e, Math.pow(coords.y, 1 / this.B));\n    \n    if (coords.y === Infinity) {\n      throw new Error();\n    }\n        \n    coords.x = -this.rB * Math.atan2((Sp * this.cosgam - Vp * this.singam), Math.cos(this.BrA * u));\n  }\n  \n  coords.x += this.lam0;\n  \n  return coords;\n}\n\nexport var names = [\"Hotine_Oblique_Mercator\", \"Hotine Oblique Mercator\", \"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\", \"Hotine_Oblique_Mercator_Two_Point_Natural_Origin\", \"Hotine_Oblique_Mercator_Azimuth_Center\", \"Oblique_Mercator\", \"omerc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport sign from '../common/sign';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {HALF_PI, EPSLN} from '../constants/values';\nexport function init() {\n  \n  //double lat0;                    /* the reference latitude               */\n  //double long0;                   /* the reference longitude              */\n  //double lat1;                    /* first standard parallel              */\n  //double lat2;                    /* second standard parallel             */\n  //double r_maj;                   /* major axis                           */\n  //double r_min;                   /* minor axis                           */\n  //double false_east;              /* x offset in meters                   */\n  //double false_north;             /* y offset in meters                   */\n  \n  //the above value can be set with proj4.defs\n  //example: proj4.defs(\"EPSG:2154\",\"+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\");\n\n  if (!this.lat2) {\n    this.lat2 = this.lat1;\n  } //if lat2 is not defined\n  if (!this.k0) {\n    this.k0 = 1;\n  }\n  this.x0 = this.x0 || 0;\n  this.y0 = this.y0 || 0;\n  // Standard Parallels cannot be equal and on opposite sides of the equator\n  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n    return;\n  }\n\n  var temp = this.b / this.a;\n  this.e = Math.sqrt(1 - temp * temp);\n\n  var sin1 = Math.sin(this.lat1);\n  var cos1 = Math.cos(this.lat1);\n  var ms1 = msfnz(this.e, sin1, cos1);\n  var ts1 = tsfnz(this.e, this.lat1, sin1);\n\n  var sin2 = Math.sin(this.lat2);\n  var cos2 = Math.cos(this.lat2);\n  var ms2 = msfnz(this.e, sin2, cos2);\n  var ts2 = tsfnz(this.e, this.lat2, sin2);\n\n  var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));\n\n  if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n    this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);\n  }\n  else {\n    this.ns = sin1;\n  }\n  if (isNaN(this.ns)) {\n    this.ns = sin1;\n  }\n  this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));\n  this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);\n  if (!this.title) {\n    this.title = \"Lambert Conformal Conic\";\n  }\n}\n\n// Lambert Conformal conic forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n  var lon = p.x;\n  var lat = p.y;\n\n  // singular cases :\n  if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {\n    lat = sign(lat) * (HALF_PI - 2 * EPSLN);\n  }\n\n  var con = Math.abs(Math.abs(lat) - HALF_PI);\n  var ts, rh1;\n  if (con > EPSLN) {\n    ts = tsfnz(this.e, lat, Math.sin(lat));\n    rh1 = this.a * this.f0 * Math.pow(ts, this.ns);\n  }\n  else {\n    con = lat * this.ns;\n    if (con <= 0) {\n      return null;\n    }\n    rh1 = 0;\n  }\n  var theta = this.ns * adjust_lon(lon - this.long0);\n  p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;\n  p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;\n\n  return p;\n}\n\n// Lambert Conformal Conic inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n  var rh1, con, ts;\n  var lat, lon;\n  var x = (p.x - this.x0) / this.k0;\n  var y = (this.rh - (p.y - this.y0) / this.k0);\n  if (this.ns > 0) {\n    rh1 = Math.sqrt(x * x + y * y);\n    con = 1;\n  }\n  else {\n    rh1 = -Math.sqrt(x * x + y * y);\n    con = -1;\n  }\n  var theta = 0;\n  if (rh1 !== 0) {\n    theta = Math.atan2((con * x), (con * y));\n  }\n  if ((rh1 !== 0) || (this.ns > 0)) {\n    con = 1 / this.ns;\n    ts = Math.pow((rh1 / (this.a * this.f0)), con);\n    lat = phi2z(this.e, ts);\n    if (lat === -9999) {\n      return null;\n    }\n  }\n  else {\n    lat = -HALF_PI;\n  }\n  lon = adjust_lon(theta / this.ns + this.long0);\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\n  \"Lambert Tangential Conformal Conic Projection\",\n  \"Lambert_Conformal_Conic\",\n  \"Lambert_Conformal_Conic_1SP\",\n  \"Lambert_Conformal_Conic_2SP\",\n  \"lcc\"\n];\n\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n  this.a = 6377397.155;\n  this.es = 0.006674372230614;\n  this.e = Math.sqrt(this.es);\n  if (!this.lat0) {\n    this.lat0 = 0.863937979737193;\n  }\n  if (!this.long0) {\n    this.long0 = 0.7417649320975901 - 0.308341501185665;\n  }\n  /* if scale not set default to 0.9999 */\n  if (!this.k0) {\n    this.k0 = 0.9999;\n  }\n  this.s45 = 0.785398163397448; /* 45 */\n  this.s90 = 2 * this.s45;\n  this.fi0 = this.lat0;\n  this.e2 = this.es;\n  this.e = Math.sqrt(this.e2);\n  this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));\n  this.uq = 1.04216856380474;\n  this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);\n  this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);\n  this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;\n  this.k1 = this.k0;\n  this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));\n  this.s0 = 1.37008346281555;\n  this.n = Math.sin(this.s0);\n  this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);\n  this.ad = this.s90 - this.uq;\n}\n\n/* ellipsoid */\n/* calculate xy from lat/lon */\n/* Constants, identical to inverse transform function */\nexport function forward(p) {\n  var gfi, u, deltav, s, d, eps, ro;\n  var lon = p.x;\n  var lat = p.y;\n  var delta_lon = adjust_lon(lon - this.long0);\n  /* Transformation */\n  gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));\n  u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);\n  deltav = -delta_lon * this.alfa;\n  s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));\n  d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));\n  eps = this.n * d;\n  ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);\n  p.y = ro * Math.cos(eps) / 1;\n  p.x = ro * Math.sin(eps) / 1;\n\n  if (!this.czech) {\n    p.y *= -1;\n    p.x *= -1;\n  }\n  return (p);\n}\n\n/* calculate lat/lon from xy */\nexport function inverse(p) {\n  var u, deltav, s, d, eps, ro, fi1;\n  var ok;\n\n  /* Transformation */\n  /* revert y, x*/\n  var tmp = p.x;\n  p.x = p.y;\n  p.y = tmp;\n  if (!this.czech) {\n    p.y *= -1;\n    p.x *= -1;\n  }\n  ro = Math.sqrt(p.x * p.x + p.y * p.y);\n  eps = Math.atan2(p.y, p.x);\n  d = eps / Math.sin(this.s0);\n  s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);\n  u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));\n  deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));\n  p.x = this.long0 - deltav / this.alfa;\n  fi1 = u;\n  ok = 0;\n  var iter = 0;\n  do {\n    p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);\n    if (Math.abs(fi1 - p.y) < 0.0000000001) {\n      ok = 1;\n    }\n    fi1 = p.y;\n    iter += 1;\n  } while (ok === 0 && iter < 15);\n  if (iter >= 15) {\n    return null;\n  }\n\n  return (p);\n}\n\nexport var names = [\"Krovak\", \"krovak\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","export default function(e0, e1, e2, e3, phi) {\n  return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));\n}","export default function(x) {\n  return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));\n}","export default function(x) {\n  return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));\n}","export default function(x) {\n  return (0.05859375 * x * x * (1 + 0.75 * x));\n}","export default function(x) {\n  return (x * x * x * (35 / 3072));\n}","export default function(a, e, sinphi) {\n  var temp = e * sinphi;\n  return a / Math.sqrt(1 - temp * temp);\n}","import {HALF_PI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n  return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));\n}\n","export default function(ml, e0, e1, e2, e3) {\n  var phi;\n  var dphi;\n\n  phi = ml / e0;\n  for (var i = 0; i < 15; i++) {\n    dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));\n    phi += dphi;\n    if (Math.abs(dphi) <= 0.0000000001) {\n      return phi;\n    }\n  }\n\n  //..reportError(\"IMLFN-CONV:Latitude failed to converge after 15 iterations\");\n  return NaN;\n}","import mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nexport function init() {\n  if (!this.sphere) {\n    this.e0 = e0fn(this.es);\n    this.e1 = e1fn(this.es);\n    this.e2 = e2fn(this.es);\n    this.e3 = e3fn(this.es);\n    this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n  }\n}\n\n/* Cassini forward equations--mapping lat,long to x,y\n  -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n  /* Forward equations\n      -----------------*/\n  var x, y;\n  var lam = p.x;\n  var phi = p.y;\n  lam = adjust_lon(lam - this.long0);\n\n  if (this.sphere) {\n    x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));\n    y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);\n  }\n  else {\n    //ellipsoid\n    var sinphi = Math.sin(phi);\n    var cosphi = Math.cos(phi);\n    var nl = gN(this.a, this.e, sinphi);\n    var tl = Math.tan(phi) * Math.tan(phi);\n    var al = lam * Math.cos(phi);\n    var asq = al * al;\n    var cl = this.es * cosphi * cosphi / (1 - this.es);\n    var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n\n    x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));\n    y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);\n\n\n  }\n\n  p.x = x + this.x0;\n  p.y = y + this.y0;\n  return p;\n}\n\n/* Inverse equations\n  -----------------*/\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y -= this.y0;\n  var x = p.x / this.a;\n  var y = p.y / this.a;\n  var phi, lam;\n\n  if (this.sphere) {\n    var dd = y + this.lat0;\n    phi = Math.asin(Math.sin(dd) * Math.cos(x));\n    lam = Math.atan2(Math.tan(x), Math.cos(dd));\n  }\n  else {\n    /* ellipsoid */\n    var ml1 = this.ml0 / this.a + y;\n    var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);\n    if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {\n      p.x = this.long0;\n      p.y = HALF_PI;\n      if (y < 0) {\n        p.y *= -1;\n      }\n      return p;\n    }\n    var nl1 = gN(this.a, this.e, Math.sin(phi1));\n\n    var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);\n    var tl1 = Math.pow(Math.tan(phi1), 2);\n    var dl = x * this.a / nl1;\n    var dsq = dl * dl;\n    phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);\n    lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);\n\n  }\n\n  p.x = adjust_lon(lam + this.long0);\n  p.y = adjust_lat(phi);\n  return p;\n\n}\n\nexport var names = [\"Cassini\", \"Cassini_Soldner\", \"cass\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","export default function(eccent, sinphi) {\n  var con;\n  if (eccent > 1.0e-7) {\n    con = eccent * sinphi;\n    return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));\n  }\n  else {\n    return (2 * sinphi);\n  }\n}","\nimport {HALF_PI, EPSLN, FORTPI} from '../constants/values';\n\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\n\n/*\n  reference\n    \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n    The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n  */\n\nexport var S_POLE = 1;\n\nexport var N_POLE = 2;\nexport var EQUIT = 3;\nexport var OBLIQ = 4;\n\n/* Initialize the Lambert Azimuthal Equal Area projection\n  ------------------------------------------------------*/\nexport function init() {\n  var t = Math.abs(this.lat0);\n  if (Math.abs(t - HALF_PI) < EPSLN) {\n    this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;\n  }\n  else if (Math.abs(t) < EPSLN) {\n    this.mode = this.EQUIT;\n  }\n  else {\n    this.mode = this.OBLIQ;\n  }\n  if (this.es > 0) {\n    var sinphi;\n\n    this.qp = qsfnz(this.e, 1);\n    this.mmf = 0.5 / (1 - this.es);\n    this.apa = authset(this.es);\n    switch (this.mode) {\n    case this.N_POLE:\n      this.dd = 1;\n      break;\n    case this.S_POLE:\n      this.dd = 1;\n      break;\n    case this.EQUIT:\n      this.rq = Math.sqrt(0.5 * this.qp);\n      this.dd = 1 / this.rq;\n      this.xmf = 1;\n      this.ymf = 0.5 * this.qp;\n      break;\n    case this.OBLIQ:\n      this.rq = Math.sqrt(0.5 * this.qp);\n      sinphi = Math.sin(this.lat0);\n      this.sinb1 = qsfnz(this.e, sinphi) / this.qp;\n      this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);\n      this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);\n      this.ymf = (this.xmf = this.rq) / this.dd;\n      this.xmf *= this.dd;\n      break;\n    }\n  }\n  else {\n    if (this.mode === this.OBLIQ) {\n      this.sinph0 = Math.sin(this.lat0);\n      this.cosph0 = Math.cos(this.lat0);\n    }\n  }\n}\n\n/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y\n  -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n  /* Forward equations\n      -----------------*/\n  var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;\n  var lam = p.x;\n  var phi = p.y;\n\n  lam = adjust_lon(lam - this.long0);\n  if (this.sphere) {\n    sinphi = Math.sin(phi);\n    cosphi = Math.cos(phi);\n    coslam = Math.cos(lam);\n    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n      y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n      if (y <= EPSLN) {\n        return null;\n      }\n      y = Math.sqrt(2 / y);\n      x = y * cosphi * Math.sin(lam);\n      y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n    }\n    else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n      if (this.mode === this.N_POLE) {\n        coslam = -coslam;\n      }\n      if (Math.abs(phi + this.lat0) < EPSLN) {\n        return null;\n      }\n      y = FORTPI - phi * 0.5;\n      y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));\n      x = y * Math.sin(lam);\n      y *= coslam;\n    }\n  }\n  else {\n    sinb = 0;\n    cosb = 0;\n    b = 0;\n    coslam = Math.cos(lam);\n    sinlam = Math.sin(lam);\n    sinphi = Math.sin(phi);\n    q = qsfnz(this.e, sinphi);\n    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n      sinb = q / this.qp;\n      cosb = Math.sqrt(1 - sinb * sinb);\n    }\n    switch (this.mode) {\n    case this.OBLIQ:\n      b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;\n      break;\n    case this.EQUIT:\n      b = 1 + cosb * coslam;\n      break;\n    case this.N_POLE:\n      b = HALF_PI + phi;\n      q = this.qp - q;\n      break;\n    case this.S_POLE:\n      b = phi - HALF_PI;\n      q = this.qp + q;\n      break;\n    }\n    if (Math.abs(b) < EPSLN) {\n      return null;\n    }\n    switch (this.mode) {\n    case this.OBLIQ:\n    case this.EQUIT:\n      b = Math.sqrt(2 / b);\n      if (this.mode === this.OBLIQ) {\n        y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);\n      }\n      else {\n        y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;\n      }\n      x = this.xmf * b * cosb * sinlam;\n      break;\n    case this.N_POLE:\n    case this.S_POLE:\n      if (q >= 0) {\n        x = (b = Math.sqrt(q)) * sinlam;\n        y = coslam * ((this.mode === this.S_POLE) ? b : -b);\n      }\n      else {\n        x = y = 0;\n      }\n      break;\n    }\n  }\n\n  p.x = this.a * x + this.x0;\n  p.y = this.a * y + this.y0;\n  return p;\n}\n\n/* Inverse equations\n  -----------------*/\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y -= this.y0;\n  var x = p.x / this.a;\n  var y = p.y / this.a;\n  var lam, phi, cCe, sCe, q, rho, ab;\n  if (this.sphere) {\n    var cosz = 0,\n      rh, sinz = 0;\n\n    rh = Math.sqrt(x * x + y * y);\n    phi = rh * 0.5;\n    if (phi > 1) {\n      return null;\n    }\n    phi = 2 * Math.asin(phi);\n    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n      sinz = Math.sin(phi);\n      cosz = Math.cos(phi);\n    }\n    switch (this.mode) {\n    case this.EQUIT:\n      phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);\n      x *= sinz;\n      y = cosz * rh;\n      break;\n    case this.OBLIQ:\n      phi = (Math.abs(rh) <= EPSLN) ? this.lat0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);\n      x *= sinz * this.cosph0;\n      y = (cosz - Math.sin(phi) * this.sinph0) * rh;\n      break;\n    case this.N_POLE:\n      y = -y;\n      phi = HALF_PI - phi;\n      break;\n    case this.S_POLE:\n      phi -= HALF_PI;\n      break;\n    }\n    lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);\n  }\n  else {\n    ab = 0;\n    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n      x /= this.dd;\n      y *= this.dd;\n      rho = Math.sqrt(x * x + y * y);\n      if (rho < EPSLN) {\n        p.x = this.long0;\n        p.y = this.lat0;\n        return p;\n      }\n      sCe = 2 * Math.asin(0.5 * rho / this.rq);\n      cCe = Math.cos(sCe);\n      x *= (sCe = Math.sin(sCe));\n      if (this.mode === this.OBLIQ) {\n        ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;\n        q = this.qp * ab;\n        y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;\n      }\n      else {\n        ab = y * sCe / rho;\n        q = this.qp * ab;\n        y = rho * cCe;\n      }\n    }\n    else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n      if (this.mode === this.N_POLE) {\n        y = -y;\n      }\n      q = (x * x + y * y);\n      if (!q) {\n        p.x = this.long0;\n        p.y = this.lat0;\n        return p;\n      }\n      ab = 1 - q / this.qp;\n      if (this.mode === this.S_POLE) {\n        ab = -ab;\n      }\n    }\n    lam = Math.atan2(x, y);\n    phi = authlat(Math.asin(ab), this.apa);\n  }\n\n  p.x = adjust_lon(this.long0 + lam);\n  p.y = phi;\n  return p;\n}\n\n/* determine latitude from authalic latitude */\nvar P00 = 0.33333333333333333333;\n\nvar P01 = 0.17222222222222222222;\nvar P02 = 0.10257936507936507936;\nvar P10 = 0.06388888888888888888;\nvar P11 = 0.06640211640211640211;\nvar P20 = 0.01641501294219154443;\n\nfunction authset(es) {\n  var t;\n  var APA = [];\n  APA[0] = es * P00;\n  t = es * es;\n  APA[0] += t * P01;\n  APA[1] = t * P10;\n  t *= es;\n  APA[0] += t * P02;\n  APA[1] += t * P11;\n  APA[2] = t * P20;\n  return APA;\n}\n\nfunction authlat(beta, APA) {\n  var t = beta + beta;\n  return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));\n}\n\nexport var names = [\"Lambert Azimuthal Equal Area\", \"Lambert_Azimuthal_Equal_Area\", \"laea\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names,\n  S_POLE: S_POLE,\n  N_POLE: N_POLE,\n  EQUIT: EQUIT,\n  OBLIQ: OBLIQ\n};\n","export default function(x) {\n  if (Math.abs(x) > 1) {\n    x = (x > 1) ? 1 : -1;\n  }\n  return Math.asin(x);\n}","import msfnz from '../common/msfnz';\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n    return;\n  }\n  this.temp = this.b / this.a;\n  this.es = 1 - Math.pow(this.temp, 2);\n  this.e3 = Math.sqrt(this.es);\n\n  this.sin_po = Math.sin(this.lat1);\n  this.cos_po = Math.cos(this.lat1);\n  this.t1 = this.sin_po;\n  this.con = this.sin_po;\n  this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);\n  this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n  this.sin_po = Math.sin(this.lat2);\n  this.cos_po = Math.cos(this.lat2);\n  this.t2 = this.sin_po;\n  this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);\n  this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n  this.sin_po = Math.sin(this.lat0);\n  this.cos_po = Math.cos(this.lat0);\n  this.t3 = this.sin_po;\n  this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n  if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n    this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);\n  }\n  else {\n    this.ns0 = this.con;\n  }\n  this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;\n  this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;\n}\n\n/* Albers Conical Equal Area forward equations--mapping lat,long to x,y\n  -------------------------------------------------------------------*/\nexport function forward(p) {\n\n  var lon = p.x;\n  var lat = p.y;\n\n  this.sin_phi = Math.sin(lat);\n  this.cos_phi = Math.cos(lat);\n\n  var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);\n  var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;\n  var theta = this.ns0 * adjust_lon(lon - this.long0);\n  var x = rh1 * Math.sin(theta) + this.x0;\n  var y = this.rh - rh1 * Math.cos(theta) + this.y0;\n\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\nexport function inverse(p) {\n  var rh1, qs, con, theta, lon, lat;\n\n  p.x -= this.x0;\n  p.y = this.rh - p.y + this.y0;\n  if (this.ns0 >= 0) {\n    rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n    con = 1;\n  }\n  else {\n    rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n    con = -1;\n  }\n  theta = 0;\n  if (rh1 !== 0) {\n    theta = Math.atan2(con * p.x, con * p.y);\n  }\n  con = rh1 * this.ns0 / this.a;\n  if (this.sphere) {\n    lat = Math.asin((this.c - con * con) / (2 * this.ns0));\n  }\n  else {\n    qs = (this.c - con * con) / this.ns0;\n    lat = this.phi1z(this.e3, qs);\n  }\n\n  lon = adjust_lon(theta / this.ns0 + this.long0);\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\n/* Function to compute phi1, the latitude for the inverse of the\n   Albers Conical Equal-Area projection.\n-------------------------------------------*/\nexport function phi1z(eccent, qs) {\n  var sinphi, cosphi, con, com, dphi;\n  var phi = asinz(0.5 * qs);\n  if (eccent < EPSLN) {\n    return phi;\n  }\n\n  var eccnts = eccent * eccent;\n  for (var i = 1; i <= 25; i++) {\n    sinphi = Math.sin(phi);\n    cosphi = Math.cos(phi);\n    con = eccent * sinphi;\n    com = 1 - con * con;\n    dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n    phi = phi + dphi;\n    if (Math.abs(dphi) <= 1e-7) {\n      return phi;\n    }\n  }\n  return null;\n}\n\nexport var names = [\"Albers_Conic_Equal_Area\", \"Albers\", \"aea\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names,\n  phi1z: phi1z\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\n/*\n  reference:\n    Wolfram Mathworld \"Gnomonic Projection\"\n    http://mathworld.wolfram.com/GnomonicProjection.html\n    Accessed: 12th November 2009\n  */\nexport function init() {\n\n  /* Place parameters in static storage for common use\n      -------------------------------------------------*/\n  this.sin_p14 = Math.sin(this.lat0);\n  this.cos_p14 = Math.cos(this.lat0);\n  // Approximation for projecting points to the horizon (infinity)\n  this.infinity_dist = 1000 * this.a;\n  this.rc = 1;\n}\n\n/* Gnomonic forward equations--mapping lat,long to x,y\n    ---------------------------------------------------*/\nexport function forward(p) {\n  var sinphi, cosphi; /* sin and cos value        */\n  var dlon; /* delta longitude value      */\n  var coslon; /* cos of longitude        */\n  var ksp; /* scale factor          */\n  var g;\n  var x, y;\n  var lon = p.x;\n  var lat = p.y;\n  /* Forward equations\n      -----------------*/\n  dlon = adjust_lon(lon - this.long0);\n\n  sinphi = Math.sin(lat);\n  cosphi = Math.cos(lat);\n\n  coslon = Math.cos(dlon);\n  g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n  ksp = 1;\n  if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n    x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;\n    y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;\n  }\n  else {\n\n    // Point is in the opposing hemisphere and is unprojectable\n    // We still need to return a reasonable point, so we project\n    // to infinity, on a bearing\n    // equivalent to the northern hemisphere equivalent\n    // This is a reasonable approximation for short shapes and lines that\n    // straddle the horizon.\n\n    x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);\n    y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n\n  }\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\nexport function inverse(p) {\n  var rh; /* Rho */\n  var sinc, cosc;\n  var c;\n  var lon, lat;\n\n  /* Inverse equations\n      -----------------*/\n  p.x = (p.x - this.x0) / this.a;\n  p.y = (p.y - this.y0) / this.a;\n\n  p.x /= this.k0;\n  p.y /= this.k0;\n\n  if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {\n    c = Math.atan2(rh, this.rc);\n    sinc = Math.sin(c);\n    cosc = Math.cos(c);\n\n    lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);\n    lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);\n    lon = adjust_lon(this.long0 + lon);\n  }\n  else {\n    lat = this.phic0;\n    lon = 0;\n  }\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"gnom\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, q) {\n  var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));\n  if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {\n    if (q < 0) {\n      return (-1 * HALF_PI);\n    }\n    else {\n      return HALF_PI;\n    }\n  }\n  //var phi = 0.5* q/(1-eccent*eccent);\n  var phi = Math.asin(0.5 * q);\n  var dphi;\n  var sin_phi;\n  var cos_phi;\n  var con;\n  for (var i = 0; i < 30; i++) {\n    sin_phi = Math.sin(phi);\n    cos_phi = Math.cos(phi);\n    con = eccent * sin_phi;\n    dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n    phi += dphi;\n    if (Math.abs(dphi) <= 0.0000000001) {\n      return phi;\n    }\n  }\n\n  //console.log(\"IQSFN-CONV:Latitude failed to converge after 30 iterations\");\n  return NaN;\n}\n","import adjust_lon from '../common/adjust_lon';\nimport qsfnz from '../common/qsfnz';\nimport msfnz from '../common/msfnz';\nimport iqsfnz from '../common/iqsfnz';\n\n/*\n  reference:\n    \"Cartographic Projection Procedures for the UNIX Environment-\n    A User's Manual\" by Gerald I. Evenden,\n    USGS Open File Report 90-284and Release 4 Interim Reports (2003)\n*/\nexport function init() {\n  //no-op\n  if (!this.sphere) {\n    this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n  }\n}\n\n/* Cylindrical Equal Area forward equations--mapping lat,long to x,y\n    ------------------------------------------------------------*/\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  var x, y;\n  /* Forward equations\n      -----------------*/\n  var dlon = adjust_lon(lon - this.long0);\n  if (this.sphere) {\n    x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);\n    y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);\n  }\n  else {\n    var qs = qsfnz(this.e, Math.sin(lat));\n    x = this.x0 + this.a * this.k0 * dlon;\n    y = this.y0 + this.a * qs * 0.5 / this.k0;\n  }\n\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\n/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long\n    ------------------------------------------------------------*/\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y -= this.y0;\n  var lon, lat;\n\n  if (this.sphere) {\n    lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));\n    lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));\n  }\n  else {\n    lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);\n    lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));\n  }\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"cea\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\n\nexport function init() {\n\n  this.x0 = this.x0 || 0;\n  this.y0 = this.y0 || 0;\n  this.lat0 = this.lat0 || 0;\n  this.long0 = this.long0 || 0;\n  this.lat_ts = this.lat_ts || 0;\n  this.title = this.title || \"Equidistant Cylindrical (Plate Carre)\";\n\n  this.rc = Math.cos(this.lat_ts);\n}\n\n// forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n  var lon = p.x;\n  var lat = p.y;\n\n  var dlon = adjust_lon(lon - this.long0);\n  var dlat = adjust_lat(lat - this.lat0);\n  p.x = this.x0 + (this.a * dlon * this.rc);\n  p.y = this.y0 + (this.a * dlat);\n  return p;\n}\n\n// inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n  var x = p.x;\n  var y = p.y;\n\n  p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));\n  p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));\n  return p;\n}\n\nexport var names = [\"Equirectangular\", \"Equidistant_Cylindrical\", \"eqc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport mlfn from '../common/mlfn';\nimport {EPSLN} from '../constants/values';\n\nimport gN from '../common/gN';\nvar MAX_ITER = 20;\n\nexport function init() {\n  /* Place parameters in static storage for common use\n      -------------------------------------------------*/\n  this.temp = this.b / this.a;\n  this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles\n  this.e = Math.sqrt(this.es);\n  this.e0 = e0fn(this.es);\n  this.e1 = e1fn(this.es);\n  this.e2 = e2fn(this.es);\n  this.e3 = e3fn(this.es);\n  this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas\n}\n\n/* Polyconic forward equations--mapping lat,long to x,y\n    ---------------------------------------------------*/\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  var x, y, el;\n  var dlon = adjust_lon(lon - this.long0);\n  el = dlon * Math.sin(lat);\n  if (this.sphere) {\n    if (Math.abs(lat) <= EPSLN) {\n      x = this.a * dlon;\n      y = -1 * this.a * this.lat0;\n    }\n    else {\n      x = this.a * Math.sin(el) / Math.tan(lat);\n      y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));\n    }\n  }\n  else {\n    if (Math.abs(lat) <= EPSLN) {\n      x = this.a * dlon;\n      y = -1 * this.ml0;\n    }\n    else {\n      var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);\n      x = nl * Math.sin(el);\n      y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));\n    }\n\n  }\n  p.x = x + this.x0;\n  p.y = y + this.y0;\n  return p;\n}\n\n/* Inverse equations\n  -----------------*/\nexport function inverse(p) {\n  var lon, lat, x, y, i;\n  var al, bl;\n  var phi, dphi;\n  x = p.x - this.x0;\n  y = p.y - this.y0;\n\n  if (this.sphere) {\n    if (Math.abs(y + this.a * this.lat0) <= EPSLN) {\n      lon = adjust_lon(x / this.a + this.long0);\n      lat = 0;\n    }\n    else {\n      al = this.lat0 + y / this.a;\n      bl = x * x / this.a / this.a + al * al;\n      phi = al;\n      var tanphi;\n      for (i = MAX_ITER; i; --i) {\n        tanphi = Math.tan(phi);\n        dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);\n        phi += dphi;\n        if (Math.abs(dphi) <= EPSLN) {\n          lat = phi;\n          break;\n        }\n      }\n      lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));\n    }\n  }\n  else {\n    if (Math.abs(y + this.ml0) <= EPSLN) {\n      lat = 0;\n      lon = adjust_lon(this.long0 + x / this.a);\n    }\n    else {\n\n      al = (this.ml0 + y) / this.a;\n      bl = x * x / this.a / this.a + al * al;\n      phi = al;\n      var cl, mln, mlnp, ma;\n      var con;\n      for (i = MAX_ITER; i; --i) {\n        con = this.e * Math.sin(phi);\n        cl = Math.sqrt(1 - con * con) * Math.tan(phi);\n        mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n        mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);\n        ma = mln / this.a;\n        dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);\n        phi -= dphi;\n        if (Math.abs(dphi) <= EPSLN) {\n          lat = phi;\n          break;\n        }\n      }\n\n      //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);\n      cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);\n      lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));\n    }\n  }\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"Polyconic\", \"poly\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import {SEC_TO_RAD} from '../constants/values';\n\n/*\n  reference\n    Department of Land and Survey Technical Circular 1973/32\n      http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf\n    OSG Technical Report 4.1\n      http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf\n  */\n\n/**\n * iterations: Number of iterations to refine inverse transform.\n *     0 -> km accuracy\n *     1 -> m accuracy -- suitable for most mapping applications\n *     2 -> mm accuracy\n */\nexport var iterations = 1;\n\nexport function init() {\n  this.A = [];\n  this.A[1] = 0.6399175073;\n  this.A[2] = -0.1358797613;\n  this.A[3] = 0.063294409;\n  this.A[4] = -0.02526853;\n  this.A[5] = 0.0117879;\n  this.A[6] = -0.0055161;\n  this.A[7] = 0.0026906;\n  this.A[8] = -0.001333;\n  this.A[9] = 0.00067;\n  this.A[10] = -0.00034;\n\n  this.B_re = [];\n  this.B_im = [];\n  this.B_re[1] = 0.7557853228;\n  this.B_im[1] = 0;\n  this.B_re[2] = 0.249204646;\n  this.B_im[2] = 0.003371507;\n  this.B_re[3] = -0.001541739;\n  this.B_im[3] = 0.041058560;\n  this.B_re[4] = -0.10162907;\n  this.B_im[4] = 0.01727609;\n  this.B_re[5] = -0.26623489;\n  this.B_im[5] = -0.36249218;\n  this.B_re[6] = -0.6870983;\n  this.B_im[6] = -1.1651967;\n\n  this.C_re = [];\n  this.C_im = [];\n  this.C_re[1] = 1.3231270439;\n  this.C_im[1] = 0;\n  this.C_re[2] = -0.577245789;\n  this.C_im[2] = -0.007809598;\n  this.C_re[3] = 0.508307513;\n  this.C_im[3] = -0.112208952;\n  this.C_re[4] = -0.15094762;\n  this.C_im[4] = 0.18200602;\n  this.C_re[5] = 1.01418179;\n  this.C_im[5] = 1.64497696;\n  this.C_re[6] = 1.9660549;\n  this.C_im[6] = 2.5127645;\n\n  this.D = [];\n  this.D[1] = 1.5627014243;\n  this.D[2] = 0.5185406398;\n  this.D[3] = -0.03333098;\n  this.D[4] = -0.1052906;\n  this.D[5] = -0.0368594;\n  this.D[6] = 0.007317;\n  this.D[7] = 0.01220;\n  this.D[8] = 0.00394;\n  this.D[9] = -0.0013;\n}\n\n/**\n    New Zealand Map Grid Forward  - long/lat to x/y\n    long/lat in radians\n  */\nexport function forward(p) {\n  var n;\n  var lon = p.x;\n  var lat = p.y;\n\n  var delta_lat = lat - this.lat0;\n  var delta_lon = lon - this.long0;\n\n  // 1. Calculate d_phi and d_psi    ...                          // and d_lambda\n  // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.\n  var d_phi = delta_lat / SEC_TO_RAD * 1E-5;\n  var d_lambda = delta_lon;\n  var d_phi_n = 1; // d_phi^0\n\n  var d_psi = 0;\n  for (n = 1; n <= 10; n++) {\n    d_phi_n = d_phi_n * d_phi;\n    d_psi = d_psi + this.A[n] * d_phi_n;\n  }\n\n  // 2. Calculate theta\n  var th_re = d_psi;\n  var th_im = d_lambda;\n\n  // 3. Calculate z\n  var th_n_re = 1;\n  var th_n_im = 0; // theta^0\n  var th_n_re1;\n  var th_n_im1;\n\n  var z_re = 0;\n  var z_im = 0;\n  for (n = 1; n <= 6; n++) {\n    th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n    th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n    th_n_re = th_n_re1;\n    th_n_im = th_n_im1;\n    z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;\n    z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;\n  }\n\n  // 4. Calculate easting and northing\n  p.x = (z_im * this.a) + this.x0;\n  p.y = (z_re * this.a) + this.y0;\n\n  return p;\n}\n\n/**\n    New Zealand Map Grid Inverse  -  x/y to long/lat\n  */\nexport function inverse(p) {\n  var n;\n  var x = p.x;\n  var y = p.y;\n\n  var delta_x = x - this.x0;\n  var delta_y = y - this.y0;\n\n  // 1. Calculate z\n  var z_re = delta_y / this.a;\n  var z_im = delta_x / this.a;\n\n  // 2a. Calculate theta - first approximation gives km accuracy\n  var z_n_re = 1;\n  var z_n_im = 0; // z^0\n  var z_n_re1;\n  var z_n_im1;\n\n  var th_re = 0;\n  var th_im = 0;\n  for (n = 1; n <= 6; n++) {\n    z_n_re1 = z_n_re * z_re - z_n_im * z_im;\n    z_n_im1 = z_n_im * z_re + z_n_re * z_im;\n    z_n_re = z_n_re1;\n    z_n_im = z_n_im1;\n    th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;\n    th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;\n  }\n\n  // 2b. Iterate to refine the accuracy of the calculation\n  //        0 iterations gives km accuracy\n  //        1 iteration gives m accuracy -- good enough for most mapping applications\n  //        2 iterations bives mm accuracy\n  for (var i = 0; i < this.iterations; i++) {\n    var th_n_re = th_re;\n    var th_n_im = th_im;\n    var th_n_re1;\n    var th_n_im1;\n\n    var num_re = z_re;\n    var num_im = z_im;\n    for (n = 2; n <= 6; n++) {\n      th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n      th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n      th_n_re = th_n_re1;\n      th_n_im = th_n_im1;\n      num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n      num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n    }\n\n    th_n_re = 1;\n    th_n_im = 0;\n    var den_re = this.B_re[1];\n    var den_im = this.B_im[1];\n    for (n = 2; n <= 6; n++) {\n      th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n      th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n      th_n_re = th_n_re1;\n      th_n_im = th_n_im1;\n      den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n      den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n    }\n\n    // Complex division\n    var den2 = den_re * den_re + den_im * den_im;\n    th_re = (num_re * den_re + num_im * den_im) / den2;\n    th_im = (num_im * den_re - num_re * den_im) / den2;\n  }\n\n  // 3. Calculate d_phi              ...                                    // and d_lambda\n  var d_psi = th_re;\n  var d_lambda = th_im;\n  var d_psi_n = 1; // d_psi^0\n\n  var d_phi = 0;\n  for (n = 1; n <= 9; n++) {\n    d_psi_n = d_psi_n * d_psi;\n    d_phi = d_phi + this.D[n] * d_psi_n;\n  }\n\n  // 4. Calculate latitude and longitude\n  // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.\n  var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);\n  var lon = this.long0 + d_lambda;\n\n  p.x = lon;\n  p.y = lat;\n\n  return p;\n}\n\nexport var names = [\"New_Zealand_Map_Grid\", \"nzmg\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\n/*\n  reference\n    \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n    The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n  */\n\n\n/* Initialize the Miller Cylindrical projection\n  -------------------------------------------*/\nexport function init() {\n  //no-op\n}\n\n/* Miller Cylindrical forward equations--mapping lat,long to x,y\n    ------------------------------------------------------------*/\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  /* Forward equations\n      -----------------*/\n  var dlon = adjust_lon(lon - this.long0);\n  var x = this.x0 + this.a * dlon;\n  var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;\n\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\n/* Miller Cylindrical inverse equations--mapping x,y to lat/long\n    ------------------------------------------------------------*/\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y -= this.y0;\n\n  var lon = adjust_lon(this.long0 + p.x / this.a);\n  var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"Miller_Cylindrical\", \"mill\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport pj_enfn from '../common/pj_enfn';\nvar MAX_ITER = 20;\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n\nexport function init() {\n  /* Place parameters in static storage for common use\n    -------------------------------------------------*/\n\n\n  if (!this.sphere) {\n    this.en = pj_enfn(this.es);\n  }\n  else {\n    this.n = 1;\n    this.m = 0;\n    this.es = 0;\n    this.C_y = Math.sqrt((this.m + 1) / this.n);\n    this.C_x = this.C_y / (this.m + 1);\n  }\n\n}\n\n/* Sinusoidal forward equations--mapping lat,long to x,y\n  -----------------------------------------------------*/\nexport function forward(p) {\n  var x, y;\n  var lon = p.x;\n  var lat = p.y;\n  /* Forward equations\n    -----------------*/\n  lon = adjust_lon(lon - this.long0);\n\n  if (this.sphere) {\n    if (!this.m) {\n      lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;\n    }\n    else {\n      var k = this.n * Math.sin(lat);\n      for (var i = MAX_ITER; i; --i) {\n        var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));\n        lat -= V;\n        if (Math.abs(V) < EPSLN) {\n          break;\n        }\n      }\n    }\n    x = this.a * this.C_x * lon * (this.m + Math.cos(lat));\n    y = this.a * this.C_y * lat;\n\n  }\n  else {\n\n    var s = Math.sin(lat);\n    var c = Math.cos(lat);\n    y = this.a * pj_mlfn(lat, s, c, this.en);\n    x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);\n  }\n\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\nexport function inverse(p) {\n  var lat, temp, lon, s;\n\n  p.x -= this.x0;\n  lon = p.x / this.a;\n  p.y -= this.y0;\n  lat = p.y / this.a;\n\n  if (this.sphere) {\n    lat /= this.C_y;\n    lon = lon / (this.C_x * (this.m + Math.cos(lat)));\n    if (this.m) {\n      lat = asinz((this.m * lat + Math.sin(lat)) / this.n);\n    }\n    else if (this.n !== 1) {\n      lat = asinz(Math.sin(lat) / this.n);\n    }\n    lon = adjust_lon(lon + this.long0);\n    lat = adjust_lat(lat);\n  }\n  else {\n    lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);\n    s = Math.abs(lat);\n    if (s < HALF_PI) {\n      s = Math.sin(lat);\n      temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));\n      //temp = this.long0 + p.x / (this.a * Math.cos(lat));\n      lon = adjust_lon(temp);\n    }\n    else if ((s - EPSLN) < HALF_PI) {\n      lon = this.long0;\n    }\n  }\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"Sinusoidal\", \"sinu\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nexport function init() {}\nimport {EPSLN} from '../constants/values';\n/* Mollweide forward equations--mapping lat,long to x,y\n    ----------------------------------------------------*/\nexport function forward(p) {\n\n  /* Forward equations\n      -----------------*/\n  var lon = p.x;\n  var lat = p.y;\n\n  var delta_lon = adjust_lon(lon - this.long0);\n  var theta = lat;\n  var con = Math.PI * Math.sin(lat);\n\n  /* Iterate using the Newton-Raphson method to find theta\n      -----------------------------------------------------*/\n  while (true) {\n    var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));\n    theta += delta_theta;\n    if (Math.abs(delta_theta) < EPSLN) {\n      break;\n    }\n  }\n  theta /= 2;\n\n  /* If the latitude is 90 deg, force the x coordinate to be \"0 + false easting\"\n       this is done here because of precision problems with \"cos(theta)\"\n       --------------------------------------------------------------------------*/\n  if (Math.PI / 2 - Math.abs(lat) < EPSLN) {\n    delta_lon = 0;\n  }\n  var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;\n  var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;\n\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\nexport function inverse(p) {\n  var theta;\n  var arg;\n\n  /* Inverse equations\n      -----------------*/\n  p.x -= this.x0;\n  p.y -= this.y0;\n  arg = p.y / (1.4142135623731 * this.a);\n\n  /* Because of division by zero problems, 'arg' can not be 1.  Therefore\n       a number very close to one is used instead.\n       -------------------------------------------------------------------*/\n  if (Math.abs(arg) > 0.999999999999) {\n    arg = 0.999999999999;\n  }\n  theta = Math.asin(arg);\n  var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));\n  if (lon < (-Math.PI)) {\n    lon = -Math.PI;\n  }\n  if (lon > Math.PI) {\n    lon = Math.PI;\n  }\n  arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;\n  if (Math.abs(arg) > 1) {\n    arg = 1;\n  }\n  var lat = Math.asin(arg);\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"Mollweide\", \"moll\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport msfnz from '../common/msfnz';\nimport mlfn from '../common/mlfn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n  /* Place parameters in static storage for common use\n      -------------------------------------------------*/\n  // Standard Parallels cannot be equal and on opposite sides of the equator\n  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n    return;\n  }\n  this.lat2 = this.lat2 || this.lat1;\n  this.temp = this.b / this.a;\n  this.es = 1 - Math.pow(this.temp, 2);\n  this.e = Math.sqrt(this.es);\n  this.e0 = e0fn(this.es);\n  this.e1 = e1fn(this.es);\n  this.e2 = e2fn(this.es);\n  this.e3 = e3fn(this.es);\n\n  this.sinphi = Math.sin(this.lat1);\n  this.cosphi = Math.cos(this.lat1);\n\n  this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);\n  this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);\n\n  if (Math.abs(this.lat1 - this.lat2) < EPSLN) {\n    this.ns = this.sinphi;\n  }\n  else {\n    this.sinphi = Math.sin(this.lat2);\n    this.cosphi = Math.cos(this.lat2);\n    this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);\n    this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);\n    this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);\n  }\n  this.g = this.ml1 + this.ms1 / this.ns;\n  this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n  this.rh = this.a * (this.g - this.ml0);\n}\n\n/* Equidistant Conic forward equations--mapping lat,long to x,y\n  -----------------------------------------------------------*/\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  var rh1;\n\n  /* Forward equations\n      -----------------*/\n  if (this.sphere) {\n    rh1 = this.a * (this.g - lat);\n  }\n  else {\n    var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);\n    rh1 = this.a * (this.g - ml);\n  }\n  var theta = this.ns * adjust_lon(lon - this.long0);\n  var x = this.x0 + rh1 * Math.sin(theta);\n  var y = this.y0 + this.rh - rh1 * Math.cos(theta);\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\n/* Inverse equations\n  -----------------*/\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y = this.rh - p.y + this.y0;\n  var con, rh1, lat, lon;\n  if (this.ns >= 0) {\n    rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n    con = 1;\n  }\n  else {\n    rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n    con = -1;\n  }\n  var theta = 0;\n  if (rh1 !== 0) {\n    theta = Math.atan2(con * p.x, con * p.y);\n  }\n\n  if (this.sphere) {\n    lon = adjust_lon(this.long0 + theta / this.ns);\n    lat = adjust_lat(this.g - rh1 / this.a);\n    p.x = lon;\n    p.y = lat;\n    return p;\n  }\n  else {\n    var ml = this.g - rh1 / this.a;\n    lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);\n    lon = adjust_lon(this.long0 + theta / this.ns);\n    p.x = lon;\n    p.y = lat;\n    return p;\n  }\n\n}\n\nexport var names = [\"Equidistant_Conic\", \"eqdc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n/* Initialize the Van Der Grinten projection\n  ----------------------------------------*/\nexport function init() {\n  //this.R = 6370997; //Radius of earth\n  this.R = this.a;\n}\n\nexport function forward(p) {\n\n  var lon = p.x;\n  var lat = p.y;\n\n  /* Forward equations\n    -----------------*/\n  var dlon = adjust_lon(lon - this.long0);\n  var x, y;\n\n  if (Math.abs(lat) <= EPSLN) {\n    x = this.x0 + this.R * dlon;\n    y = this.y0;\n  }\n  var theta = asinz(2 * Math.abs(lat / Math.PI));\n  if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {\n    x = this.x0;\n    if (lat >= 0) {\n      y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);\n    }\n    else {\n      y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);\n    }\n    //  return(OK);\n  }\n  var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));\n  var asq = al * al;\n  var sinth = Math.sin(theta);\n  var costh = Math.cos(theta);\n\n  var g = costh / (sinth + costh - 1);\n  var gsq = g * g;\n  var m = g * (2 / sinth - 1);\n  var msq = m * m;\n  var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);\n  if (dlon < 0) {\n    con = -con;\n  }\n  x = this.x0 + con;\n  //con = Math.abs(con / (Math.PI * this.R));\n  var q = asq + g;\n  con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);\n  if (lat >= 0) {\n    //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n    y = this.y0 + con;\n  }\n  else {\n    //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n    y = this.y0 - con;\n  }\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\n/* Van Der Grinten inverse equations--mapping x,y to lat/long\n  ---------------------------------------------------------*/\nexport function inverse(p) {\n  var lon, lat;\n  var xx, yy, xys, c1, c2, c3;\n  var a1;\n  var m1;\n  var con;\n  var th1;\n  var d;\n\n  /* inverse equations\n    -----------------*/\n  p.x -= this.x0;\n  p.y -= this.y0;\n  con = Math.PI * this.R;\n  xx = p.x / con;\n  yy = p.y / con;\n  xys = xx * xx + yy * yy;\n  c1 = -Math.abs(yy) * (1 + xys);\n  c2 = c1 - 2 * yy * yy + xx * xx;\n  c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;\n  d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;\n  a1 = (c1 - c2 * c2 / 3 / c3) / c3;\n  m1 = 2 * Math.sqrt(-a1 / 3);\n  con = ((3 * d) / a1) / m1;\n  if (Math.abs(con) > 1) {\n    if (con >= 0) {\n      con = 1;\n    }\n    else {\n      con = -1;\n    }\n  }\n  th1 = Math.acos(con) / 3;\n  if (p.y >= 0) {\n    lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n  }\n  else {\n    lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n  }\n\n  if (Math.abs(xx) < EPSLN) {\n    lon = this.long0;\n  }\n  else {\n    lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);\n  }\n\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"Van_der_Grinten_I\", \"VanDerGrinten\", \"vandg\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport asinz from '../common/asinz';\nimport imlfn from '../common/imlfn';\n\n\n\nexport function init() {\n  this.sin_p12 = Math.sin(this.lat0);\n  this.cos_p12 = Math.cos(this.lat0);\n}\n\nexport function forward(p) {\n  var lon = p.x;\n  var lat = p.y;\n  var sinphi = Math.sin(p.y);\n  var cosphi = Math.cos(p.y);\n  var dlon = adjust_lon(lon - this.long0);\n  var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;\n  if (this.sphere) {\n    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n      //North Pole case\n      p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);\n      p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);\n      return p;\n    }\n    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n      //South Pole case\n      p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);\n      p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);\n      return p;\n    }\n    else {\n      //default case\n      cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);\n      c = Math.acos(cos_c);\n      kp = c ? c / Math.sin(c) : 1;\n      p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);\n      p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));\n      return p;\n    }\n  }\n  else {\n    e0 = e0fn(this.es);\n    e1 = e1fn(this.es);\n    e2 = e2fn(this.es);\n    e3 = e3fn(this.es);\n    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n      //North Pole case\n      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n      Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n      p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);\n      p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);\n      return p;\n    }\n    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n      //South Pole case\n      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n      Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n      p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);\n      p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);\n      return p;\n    }\n    else {\n      //Default case\n      tanphi = sinphi / cosphi;\n      Nl1 = gN(this.a, this.e, this.sin_p12);\n      Nl = gN(this.a, this.e, sinphi);\n      psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));\n      Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));\n      if (Az === 0) {\n        s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n      }\n      else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {\n        s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n      }\n      else {\n        s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));\n      }\n      G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);\n      H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);\n      GH = G * H;\n      Hs = H * H;\n      s2 = s * s;\n      s3 = s2 * s;\n      s4 = s3 * s;\n      s5 = s4 * s;\n      c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);\n      p.x = this.x0 + c * Math.sin(Az);\n      p.y = this.y0 + c * Math.cos(Az);\n      return p;\n    }\n  }\n\n\n}\n\nexport function inverse(p) {\n  p.x -= this.x0;\n  p.y -= this.y0;\n  var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F, sinpsi;\n  if (this.sphere) {\n    rh = Math.sqrt(p.x * p.x + p.y * p.y);\n    if (rh > (2 * HALF_PI * this.a)) {\n      return;\n    }\n    z = rh / this.a;\n\n    sinz = Math.sin(z);\n    cosz = Math.cos(z);\n\n    lon = this.long0;\n    if (Math.abs(rh) <= EPSLN) {\n      lat = this.lat0;\n    }\n    else {\n      lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);\n      con = Math.abs(this.lat0) - HALF_PI;\n      if (Math.abs(con) <= EPSLN) {\n        if (this.lat0 >= 0) {\n          lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n        }\n        else {\n          lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n        }\n      }\n      else {\n        /*con = cosz - this.sin_p12 * Math.sin(lat);\n        if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {\n          //no-op, just keep the lon value as is\n        } else {\n          var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));\n          lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));\n        }*/\n        lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));\n      }\n    }\n\n    p.x = lon;\n    p.y = lat;\n    return p;\n  }\n  else {\n    e0 = e0fn(this.es);\n    e1 = e1fn(this.es);\n    e2 = e2fn(this.es);\n    e3 = e3fn(this.es);\n    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n      //North pole case\n      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n      rh = Math.sqrt(p.x * p.x + p.y * p.y);\n      M = Mlp - rh;\n      lat = imlfn(M / this.a, e0, e1, e2, e3);\n      lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n      p.x = lon;\n      p.y = lat;\n      return p;\n    }\n    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n      //South pole case\n      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n      rh = Math.sqrt(p.x * p.x + p.y * p.y);\n      M = rh - Mlp;\n\n      lat = imlfn(M / this.a, e0, e1, e2, e3);\n      lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n      p.x = lon;\n      p.y = lat;\n      return p;\n    }\n    else {\n      //default case\n      rh = Math.sqrt(p.x * p.x + p.y * p.y);\n      Az = Math.atan2(p.x, p.y);\n      N1 = gN(this.a, this.e, this.sin_p12);\n      cosAz = Math.cos(Az);\n      tmp = this.e * this.cos_p12 * cosAz;\n      A = -tmp * tmp / (1 - this.es);\n      B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);\n      D = rh / N1;\n      Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;\n      F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;\n      psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);\n      lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));\n      sinpsi = Math.sin(psi);\n      lat = Math.atan2((sinpsi - this.es * F * this.sin_p12) * Math.tan(psi), sinpsi * (1 - this.es));\n      p.x = lon;\n      p.y = lat;\n      return p;\n    }\n  }\n\n}\n\nexport var names = [\"Azimuthal_Equidistant\", \"aeqd\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nexport function init() {\n  //double temp;      /* temporary variable    */\n\n  /* Place parameters in static storage for common use\n      -------------------------------------------------*/\n  this.sin_p14 = Math.sin(this.lat0);\n  this.cos_p14 = Math.cos(this.lat0);\n}\n\n/* Orthographic forward equations--mapping lat,long to x,y\n    ---------------------------------------------------*/\nexport function forward(p) {\n  var sinphi, cosphi; /* sin and cos value        */\n  var dlon; /* delta longitude value      */\n  var coslon; /* cos of longitude        */\n  var ksp; /* scale factor          */\n  var g, x, y;\n  var lon = p.x;\n  var lat = p.y;\n  /* Forward equations\n      -----------------*/\n  dlon = adjust_lon(lon - this.long0);\n\n  sinphi = Math.sin(lat);\n  cosphi = Math.cos(lat);\n\n  coslon = Math.cos(dlon);\n  g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n  ksp = 1;\n  if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n    x = this.a * ksp * cosphi * Math.sin(dlon);\n    y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n  }\n  p.x = x;\n  p.y = y;\n  return p;\n}\n\nexport function inverse(p) {\n  var rh; /* height above ellipsoid      */\n  var z; /* angle          */\n  var sinz, cosz; /* sin of z and cos of z      */\n  var con;\n  var lon, lat;\n  /* Inverse equations\n      -----------------*/\n  p.x -= this.x0;\n  p.y -= this.y0;\n  rh = Math.sqrt(p.x * p.x + p.y * p.y);\n  z = asinz(rh / this.a);\n\n  sinz = Math.sin(z);\n  cosz = Math.cos(z);\n\n  lon = this.long0;\n  if (Math.abs(rh) <= EPSLN) {\n    lat = this.lat0;\n    p.x = lon;\n    p.y = lat;\n    return p;\n  }\n  lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh);\n  con = Math.abs(this.lat0) - HALF_PI;\n  if (Math.abs(con) <= EPSLN) {\n    if (this.lat0 >= 0) {\n      lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n    }\n    else {\n      lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n    }\n    p.x = lon;\n    p.y = lat;\n    return p;\n  }\n  lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz));\n  p.x = lon;\n  p.y = lat;\n  return p;\n}\n\nexport var names = [\"ortho\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","// QSC projection rewritten from the original PROJ4\n// https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c\n\nimport {EPSLN, TWO_PI, SPI, HALF_PI, FORTPI} from '../constants/values';\n\n/* constants */\nvar FACE_ENUM = {\n    FRONT: 1,\n    RIGHT: 2,\n    BACK: 3,\n    LEFT: 4,\n    TOP: 5,\n    BOTTOM: 6\n};\n\nvar AREA_ENUM = {\n    AREA_0: 1,\n    AREA_1: 2,\n    AREA_2: 3,\n    AREA_3: 4\n};\n\nexport function init() {\n\n  this.x0 = this.x0 || 0;\n  this.y0 = this.y0 || 0;\n  this.lat0 = this.lat0 || 0;\n  this.long0 = this.long0 || 0;\n  this.lat_ts = this.lat_ts || 0;\n  this.title = this.title || \"Quadrilateralized Spherical Cube\";\n\n  /* Determine the cube face from the center of projection. */\n  if (this.lat0 >= HALF_PI - FORTPI / 2.0) {\n    this.face = FACE_ENUM.TOP;\n  } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) {\n    this.face = FACE_ENUM.BOTTOM;\n  } else if (Math.abs(this.long0) <= FORTPI) {\n    this.face = FACE_ENUM.FRONT;\n  } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) {\n    this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT;\n  } else {\n    this.face = FACE_ENUM.BACK;\n  }\n\n  /* Fill in useful values for the ellipsoid <-> sphere shift\n   * described in [LK12]. */\n  if (this.es !== 0) {\n    this.one_minus_f = 1 - (this.a - this.b) / this.a;\n    this.one_minus_f_squared = this.one_minus_f * this.one_minus_f;\n  }\n}\n\n// QSC forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n  var xy = {x: 0, y: 0};\n  var lat, lon;\n  var theta, phi;\n  var t, mu;\n  /* nu; */\n  var area = {value: 0};\n\n  // move lon according to projection's lon\n  p.x -= this.long0;\n\n  /* Convert the geodetic latitude to a geocentric latitude.\n   * This corresponds to the shift from the ellipsoid to the sphere\n   * described in [LK12]. */\n  if (this.es !== 0) {//if (P->es != 0) {\n    lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y));\n  } else {\n    lat = p.y;\n  }\n\n  /* Convert the input lat, lon into theta, phi as used by QSC.\n   * This depends on the cube face and the area on it.\n   * For the top and bottom face, we can compute theta and phi\n   * directly from phi, lam. For the other faces, we must use\n   * unit sphere cartesian coordinates as an intermediate step. */\n  lon = p.x; //lon = lp.lam;\n  if (this.face === FACE_ENUM.TOP) {\n    phi = HALF_PI - lat;\n    if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n      area.value = AREA_ENUM.AREA_0;\n      theta = lon - HALF_PI;\n    } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) {\n      area.value = AREA_ENUM.AREA_1;\n      theta = (lon > 0.0 ? lon - SPI : lon + SPI);\n    } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) {\n      area.value = AREA_ENUM.AREA_2;\n      theta = lon + HALF_PI;\n    } else {\n      area.value = AREA_ENUM.AREA_3;\n      theta = lon;\n    }\n  } else if (this.face === FACE_ENUM.BOTTOM) {\n    phi = HALF_PI + lat;\n    if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n      area.value = AREA_ENUM.AREA_0;\n      theta = -lon + HALF_PI;\n    } else if (lon < FORTPI && lon >= -FORTPI) {\n      area.value = AREA_ENUM.AREA_1;\n      theta = -lon;\n    } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) {\n      area.value = AREA_ENUM.AREA_2;\n      theta = -lon - HALF_PI;\n    } else {\n      area.value = AREA_ENUM.AREA_3;\n      theta = (lon > 0.0 ? -lon + SPI : -lon - SPI);\n    }\n  } else {\n    var q, r, s;\n    var sinlat, coslat;\n    var sinlon, coslon;\n\n    if (this.face === FACE_ENUM.RIGHT) {\n      lon = qsc_shift_lon_origin(lon, +HALF_PI);\n    } else if (this.face === FACE_ENUM.BACK) {\n      lon = qsc_shift_lon_origin(lon, +SPI);\n    } else if (this.face === FACE_ENUM.LEFT) {\n      lon = qsc_shift_lon_origin(lon, -HALF_PI);\n    }\n    sinlat = Math.sin(lat);\n    coslat = Math.cos(lat);\n    sinlon = Math.sin(lon);\n    coslon = Math.cos(lon);\n    q = coslat * coslon;\n    r = coslat * sinlon;\n    s = sinlat;\n\n    if (this.face === FACE_ENUM.FRONT) {\n      phi = Math.acos(q);\n      theta = qsc_fwd_equat_face_theta(phi, s, r, area);\n    } else if (this.face === FACE_ENUM.RIGHT) {\n      phi = Math.acos(r);\n      theta = qsc_fwd_equat_face_theta(phi, s, -q, area);\n    } else if (this.face === FACE_ENUM.BACK) {\n      phi = Math.acos(-q);\n      theta = qsc_fwd_equat_face_theta(phi, s, -r, area);\n    } else if (this.face === FACE_ENUM.LEFT) {\n      phi = Math.acos(-r);\n      theta = qsc_fwd_equat_face_theta(phi, s, q, area);\n    } else {\n      /* Impossible */\n      phi = theta = 0;\n      area.value = AREA_ENUM.AREA_0;\n    }\n  }\n\n  /* Compute mu and nu for the area of definition.\n   * For mu, see Eq. (3-21) in [OL76], but note the typos:\n   * compare with Eq. (3-14). For nu, see Eq. (3-38). */\n  mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI));\n  t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta)))));\n\n  /* Apply the result to the real area. */\n  if (area.value === AREA_ENUM.AREA_1) {\n    mu += HALF_PI;\n  } else if (area.value === AREA_ENUM.AREA_2) {\n    mu += SPI;\n  } else if (area.value === AREA_ENUM.AREA_3) {\n    mu += 1.5 * SPI;\n  }\n\n  /* Now compute x, y from mu and nu */\n  xy.x = t * Math.cos(mu);\n  xy.y = t * Math.sin(mu);\n  xy.x = xy.x * this.a + this.x0;\n  xy.y = xy.y * this.a + this.y0;\n\n  p.x = xy.x;\n  p.y = xy.y;\n  return p;\n}\n\n// QSC inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n  var lp = {lam: 0, phi: 0};\n  var mu, nu, cosmu, tannu;\n  var tantheta, theta, cosphi, phi;\n  var t;\n  var area = {value: 0};\n\n  /* de-offset */\n  p.x = (p.x - this.x0) / this.a;\n  p.y = (p.y - this.y0) / this.a;\n\n  /* Convert the input x, y to the mu and nu angles as used by QSC.\n   * This depends on the area of the cube face. */\n  nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y));\n  mu = Math.atan2(p.y, p.x);\n  if (p.x >= 0.0 && p.x >= Math.abs(p.y)) {\n    area.value = AREA_ENUM.AREA_0;\n  } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) {\n    area.value = AREA_ENUM.AREA_1;\n    mu -= HALF_PI;\n  } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) {\n    area.value = AREA_ENUM.AREA_2;\n    mu = (mu < 0.0 ? mu + SPI : mu - SPI);\n  } else {\n    area.value = AREA_ENUM.AREA_3;\n    mu += HALF_PI;\n  }\n\n  /* Compute phi and theta for the area of definition.\n   * The inverse projection is not described in the original paper, but some\n   * good hints can be found here (as of 2011-12-14):\n   * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302\n   * (search for \"Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>\") */\n  t = (SPI / 12) * Math.tan(mu);\n  tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2)));\n  theta = Math.atan(tantheta);\n  cosmu = Math.cos(mu);\n  tannu = Math.tan(nu);\n  cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta))));\n  if (cosphi < -1) {\n    cosphi = -1;\n  } else if (cosphi > +1) {\n    cosphi = +1;\n  }\n\n  /* Apply the result to the real area on the cube face.\n   * For the top and bottom face, we can compute phi and lam directly.\n   * For the other faces, we must use unit sphere cartesian coordinates\n   * as an intermediate step. */\n  if (this.face === FACE_ENUM.TOP) {\n    phi = Math.acos(cosphi);\n    lp.phi = HALF_PI - phi;\n    if (area.value === AREA_ENUM.AREA_0) {\n      lp.lam = theta + HALF_PI;\n    } else if (area.value === AREA_ENUM.AREA_1) {\n      lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI);\n    } else if (area.value === AREA_ENUM.AREA_2) {\n      lp.lam = theta - HALF_PI;\n    } else /* area.value == AREA_ENUM.AREA_3 */ {\n      lp.lam = theta;\n    }\n  } else if (this.face === FACE_ENUM.BOTTOM) {\n    phi = Math.acos(cosphi);\n    lp.phi = phi - HALF_PI;\n    if (area.value === AREA_ENUM.AREA_0) {\n      lp.lam = -theta + HALF_PI;\n    } else if (area.value === AREA_ENUM.AREA_1) {\n      lp.lam = -theta;\n    } else if (area.value === AREA_ENUM.AREA_2) {\n      lp.lam = -theta - HALF_PI;\n    } else /* area.value == AREA_ENUM.AREA_3 */ {\n      lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI);\n    }\n  } else {\n    /* Compute phi and lam via cartesian unit sphere coordinates. */\n    var q, r, s;\n    q = cosphi;\n    t = q * q;\n    if (t >= 1) {\n      s = 0;\n    } else {\n      s = Math.sqrt(1 - t) * Math.sin(theta);\n    }\n    t += s * s;\n    if (t >= 1) {\n      r = 0;\n    } else {\n      r = Math.sqrt(1 - t);\n    }\n    /* Rotate q,r,s into the correct area. */\n    if (area.value === AREA_ENUM.AREA_1) {\n      t = r;\n      r = -s;\n      s = t;\n    } else if (area.value === AREA_ENUM.AREA_2) {\n      r = -r;\n      s = -s;\n    } else if (area.value === AREA_ENUM.AREA_3) {\n      t = r;\n      r = s;\n      s = -t;\n    }\n    /* Rotate q,r,s into the correct cube face. */\n    if (this.face === FACE_ENUM.RIGHT) {\n      t = q;\n      q = -r;\n      r = t;\n    } else if (this.face === FACE_ENUM.BACK) {\n      q = -q;\n      r = -r;\n    } else if (this.face === FACE_ENUM.LEFT) {\n      t = q;\n      q = r;\n      r = -t;\n    }\n    /* Now compute phi and lam from the unit sphere coordinates. */\n    lp.phi = Math.acos(-s) - HALF_PI;\n    lp.lam = Math.atan2(r, q);\n    if (this.face === FACE_ENUM.RIGHT) {\n      lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI);\n    } else if (this.face === FACE_ENUM.BACK) {\n      lp.lam = qsc_shift_lon_origin(lp.lam, -SPI);\n    } else if (this.face === FACE_ENUM.LEFT) {\n      lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI);\n    }\n  }\n\n  /* Apply the shift from the sphere to the ellipsoid as described\n   * in [LK12]. */\n  if (this.es !== 0) {\n    var invert_sign;\n    var tanphi, xa;\n    invert_sign = (lp.phi < 0 ? 1 : 0);\n    tanphi = Math.tan(lp.phi);\n    xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared);\n    lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa));\n    if (invert_sign) {\n      lp.phi = -lp.phi;\n    }\n  }\n\n  lp.lam += this.long0;\n  p.x = lp.lam;\n  p.y = lp.phi;\n  return p;\n}\n\n/* Helper function for forward projection: compute the theta angle\n * and determine the area number. */\nfunction qsc_fwd_equat_face_theta(phi, y, x, area) {\n  var theta;\n  if (phi < EPSLN) {\n    area.value = AREA_ENUM.AREA_0;\n    theta = 0.0;\n  } else {\n    theta = Math.atan2(y, x);\n    if (Math.abs(theta) <= FORTPI) {\n      area.value = AREA_ENUM.AREA_0;\n    } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) {\n      area.value = AREA_ENUM.AREA_1;\n      theta -= HALF_PI;\n    } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) {\n      area.value = AREA_ENUM.AREA_2;\n      theta = (theta >= 0.0 ? theta - SPI : theta + SPI);\n    } else {\n      area.value = AREA_ENUM.AREA_3;\n      theta += HALF_PI;\n    }\n  }\n  return theta;\n}\n\n/* Helper function: shift the longitude. */\nfunction qsc_shift_lon_origin(lon, offset) {\n  var slon = lon + offset;\n  if (slon < -SPI) {\n    slon += TWO_PI;\n  } else if (slon > +SPI) {\n    slon -= TWO_PI;\n  }\n  return slon;\n}\n\nexport var names = [\"Quadrilateralized Spherical Cube\", \"Quadrilateralized_Spherical_Cube\", \"qsc\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n\n","// Robinson projection\n// Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c\n// Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039\n\nimport {HALF_PI, D2R, R2D, EPSLN} from '../constants/values';\nimport adjust_lon from '../common/adjust_lon';\n\nvar COEFS_X = [\n    [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06],\n    [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06],\n    [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07],\n    [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06],\n    [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06],\n    [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08],\n    [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06],\n    [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06],\n    [0.9216, -0.00467746, -0.00010457, 4.81243e-06],\n    [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06],\n    [0.8679, -0.00609363, -0.000113898, 3.32484e-06],\n    [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07],\n    [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07],\n    [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06],\n    [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06],\n    [0.6732, -0.00986209, -0.000199569, 1.91974e-05],\n    [0.6213, -0.010418, 8.83923e-05, 6.24051e-06],\n    [0.5722, -0.00906601, 0.000182, 6.24051e-06],\n    [0.5322, -0.00677797, 0.000275608, 6.24051e-06]\n];\n\nvar COEFS_Y = [\n    [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11],\n    [0.0620, 0.0124, -1.26793e-09, 4.22642e-10],\n    [0.1240, 0.0124, 5.07171e-09, -1.60604e-09],\n    [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09],\n    [0.2480, 0.0124002, 7.10039e-08, -2.24e-08],\n    [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08],\n    [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07],\n    [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07],\n    [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07],\n    [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07],\n    [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07],\n    [0.6769, 0.011713, -3.20223e-05, -5.16405e-07],\n    [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07],\n    [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06],\n    [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09],\n    [0.8936, 0.00969686, -6.4636e-05, -8.547e-06],\n    [0.9394, 0.00840947, -0.000192841, -4.2106e-06],\n    [0.9761, 0.00616527, -0.000256, -4.2106e-06],\n    [1.0000, 0.00328947, -0.000319159, -4.2106e-06]\n];\n\nvar FXC = 0.8487;\nvar FYC = 1.3523;\nvar C1 = R2D/5; // rad to 5-degree interval\nvar RC1 = 1/C1;\nvar NODES = 18;\n\nvar poly3_val = function(coefs, x) {\n    return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3]));\n};\n\nvar poly3_der = function(coefs, x) {\n    return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]);\n};\n\nfunction newton_rapshon(f_df, start, max_err, iters) {\n    var x = start;\n    for (; iters; --iters) {\n        var upd = f_df(x);\n        x -= upd;\n        if (Math.abs(upd) < max_err) {\n            break;\n        }\n    }\n    return x;\n}\n\nexport function init() {\n    this.x0 = this.x0 || 0;\n    this.y0 = this.y0 || 0;\n    this.long0 = this.long0 || 0;\n    this.es = 0;\n    this.title = this.title || \"Robinson\";\n}\n\nexport function forward(ll) {\n    var lon = adjust_lon(ll.x - this.long0);\n\n    var dphi = Math.abs(ll.y);\n    var i = Math.floor(dphi * C1);\n    if (i < 0) {\n        i = 0;\n    } else if (i >= NODES) {\n        i = NODES - 1;\n    }\n    dphi = R2D * (dphi - RC1 * i);\n    var xy = {\n        x: poly3_val(COEFS_X[i], dphi) * lon,\n        y: poly3_val(COEFS_Y[i], dphi)\n    };\n    if (ll.y < 0) {\n        xy.y = -xy.y;\n    }\n\n    xy.x = xy.x * this.a * FXC + this.x0;\n    xy.y = xy.y * this.a * FYC + this.y0;\n    return xy;\n}\n\nexport function inverse(xy) {\n    var ll = {\n        x: (xy.x - this.x0) / (this.a * FXC),\n        y: Math.abs(xy.y - this.y0) / (this.a * FYC)\n    };\n\n    if (ll.y >= 1) { // pathologic case\n        ll.x /= COEFS_X[NODES][0];\n        ll.y = xy.y < 0 ? -HALF_PI : HALF_PI;\n    } else {\n        // find table interval\n        var i = Math.floor(ll.y * NODES);\n        if (i < 0) {\n            i = 0;\n        } else if (i >= NODES) {\n            i = NODES - 1;\n        }\n        for (;;) {\n            if (COEFS_Y[i][0] > ll.y) {\n                --i;\n            } else if (COEFS_Y[i+1][0] <= ll.y) {\n                ++i;\n            } else {\n                break;\n            }\n        }\n        // linear interpolation in 5 degree interval\n        var coefs = COEFS_Y[i];\n        var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]);\n        // find t so that poly3_val(coefs, t) = ll.y\n        t = newton_rapshon(function(x) {\n            return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x);\n        }, t, EPSLN, 100);\n\n        ll.x /= poly3_val(COEFS_X[i], t);\n        ll.y = (5 * i + t) * D2R;\n        if (xy.y < 0) {\n            ll.y = -ll.y;\n        }\n    }\n\n    ll.x = adjust_lon(ll.x + this.long0);\n    return ll;\n}\n\nexport var names = [\"Robinson\", \"robin\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import {\n    geodeticToGeocentric,\n    geocentricToGeodetic\n} from '../datumUtils';\n\nexport function init() {\n    this.name = 'geocent';\n\n}\n\nexport function forward(p) {\n    var point = geodeticToGeocentric(p, this.es, this.a);\n    return point;\n}\n\nexport function inverse(p) {\n    var point = geocentricToGeodetic(p, this.es, this.a, this.b);\n    return point;\n}\n\nexport var names = [\"Geocentric\", 'geocentric', \"geocent\", \"Geocent\"];\nexport default {\n    init: init,\n    forward: forward,\n    inverse: inverse,\n    names: names\n};","\nvar mode = {\n  N_POLE: 0,\n  S_POLE: 1,\n  EQUIT: 2,\n  OBLIQ: 3\n};\n\nimport { D2R, HALF_PI, EPSLN } from \"../constants/values\";\nimport hypot from \"../common/hypot\";\n\nvar params = {\n  h:     { def: 100000, num: true },           // default is Karman line, no default in PROJ.7\n  azi:   { def: 0, num: true, degrees: true }, // default is North\n  tilt:  { def: 0, num: true, degrees: true }, // default is Nadir\n  long0: { def: 0, num: true },                // default is Greenwich, conversion to rad is automatic\n  lat0:  { def: 0, num: true }                 // default is Equator, conversion to rad is automatic\n};\n\nexport function init() {\n  Object.keys(params).forEach(function (p) {\n    if (typeof this[p] === \"undefined\") {\n      this[p] = params[p].def;\n    } else if (params[p].num && isNaN(this[p])) {\n      throw new Error(\"Invalid parameter value, must be numeric \" + p + \" = \" + this[p]);\n    } else if (params[p].num) {\n      this[p] = parseFloat(this[p]);\n    }\n    if (params[p].degrees) {\n      this[p] = this[p] * D2R;\n    }\n  }.bind(this));\n\n  if (Math.abs((Math.abs(this.lat0) - HALF_PI)) < EPSLN) {\n    this.mode = this.lat0 < 0 ? mode.S_POLE : mode.N_POLE;\n  } else if (Math.abs(this.lat0) < EPSLN) {\n    this.mode = mode.EQUIT;\n  } else {\n    this.mode = mode.OBLIQ;\n    this.sinph0 = Math.sin(this.lat0);\n    this.cosph0 = Math.cos(this.lat0);\n  }\n\n  this.pn1 = this.h / this.a;  // Normalize relative to the Earth's radius\n\n  if (this.pn1 <= 0 || this.pn1 > 1e10) {\n    throw new Error(\"Invalid height\");\n  }\n  \n  this.p = 1 + this.pn1;\n  this.rp = 1 / this.p;\n  this.h1 = 1 / this.pn1;\n  this.pfact = (this.p + 1) * this.h1;\n  this.es = 0;\n\n  var omega = this.tilt;\n  var gamma = this.azi;\n  this.cg = Math.cos(gamma);\n  this.sg = Math.sin(gamma);\n  this.cw = Math.cos(omega);\n  this.sw = Math.sin(omega);\n}\n\nexport function forward(p) {\n  p.x -= this.long0;\n  var sinphi = Math.sin(p.y);\n  var cosphi = Math.cos(p.y);\n  var coslam = Math.cos(p.x);\n  var x, y;\n  switch (this.mode) {\n    case mode.OBLIQ:\n      y = this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n      break;\n    case mode.EQUIT:\n      y = cosphi * coslam;\n      break;\n    case mode.S_POLE:\n      y = -sinphi;\n      break;\n    case mode.N_POLE:\n      y = sinphi;\n      break;\n  }\n  y = this.pn1 / (this.p - y);\n  x = y * cosphi * Math.sin(p.x);\n\n  switch (this.mode) {\n    case mode.OBLIQ:\n      y *= this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n      break;\n    case mode.EQUIT:\n      y *= sinphi;\n      break;\n    case mode.N_POLE:\n      y *= -(cosphi * coslam);\n      break;\n    case mode.S_POLE:\n      y *= cosphi * coslam;\n      break;\n  }\n\n  // Tilt \n  var yt, ba;\n  yt = y * this.cg + x * this.sg;\n  ba = 1 / (yt * this.sw * this.h1 + this.cw);\n  x = (x * this.cg - y * this.sg) * this.cw * ba;\n  y = yt * ba;\n\n  p.x = x * this.a;\n  p.y = y * this.a;\n  return p;\n}\n\nexport function inverse(p) {\n  p.x /= this.a;\n  p.y /= this.a;\n  var r = { x: p.x, y: p.y };\n\n  // Un-Tilt\n  var bm, bq, yt;\n  yt = 1 / (this.pn1 - p.y * this.sw);\n  bm = this.pn1 * p.x * yt;\n  bq = this.pn1 * p.y * this.cw * yt;\n  p.x = bm * this.cg + bq * this.sg;\n  p.y = bq * this.cg - bm * this.sg;\n\n  var rh = hypot(p.x, p.y);\n  if (Math.abs(rh) < EPSLN) {\n    r.x = 0;\n    r.y = p.y;\n  } else {\n    var cosz, sinz;\n    sinz = 1 - rh * rh * this.pfact;\n    sinz = (this.p - Math.sqrt(sinz)) / (this.pn1 / rh + rh / this.pn1);\n    cosz = Math.sqrt(1 - sinz * sinz);\n    switch (this.mode) {\n      case mode.OBLIQ:\n        r.y = Math.asin(cosz * this.sinph0 + p.y * sinz * this.cosph0 / rh);\n        p.y = (cosz - this.sinph0 * Math.sin(r.y)) * rh;\n        p.x *= sinz * this.cosph0;\n        break;\n      case mode.EQUIT:\n        r.y = Math.asin(p.y * sinz / rh);\n        p.y = cosz * rh;\n        p.x *= sinz;\n        break;\n      case mode.N_POLE:\n        r.y = Math.asin(cosz);\n        p.y = -p.y;\n        break;\n      case mode.S_POLE:\n        r.y = -Math.asin(cosz);\n        break;\n    }\n    r.x = Math.atan2(p.x, p.y);\n  }\n\n  p.x = r.x + this.long0;\n  p.y = r.y;\n  return p;\n}\n\nexport var names = [\"Tilted_Perspective\", \"tpers\"];\nexport default {\n  init: init,\n  forward: forward,\n  inverse: inverse,\n  names: names\n};\n","import tmerc from './lib/projections/tmerc';\nimport etmerc from './lib/projections/etmerc';\nimport utm from './lib/projections/utm';\nimport sterea from './lib/projections/sterea';\nimport stere from './lib/projections/stere';\nimport somerc from './lib/projections/somerc';\nimport omerc from './lib/projections/omerc';\nimport lcc from './lib/projections/lcc';\nimport krovak from './lib/projections/krovak';\nimport cass from './lib/projections/cass';\nimport laea from './lib/projections/laea';\nimport aea from './lib/projections/aea';\nimport gnom from './lib/projections/gnom';\nimport cea from './lib/projections/cea';\nimport eqc from './lib/projections/eqc';\nimport poly from './lib/projections/poly';\nimport nzmg from './lib/projections/nzmg';\nimport mill from './lib/projections/mill';\nimport sinu from './lib/projections/sinu';\nimport moll from './lib/projections/moll';\nimport eqdc from './lib/projections/eqdc';\nimport vandg from './lib/projections/vandg';\nimport aeqd from './lib/projections/aeqd';\nimport ortho from './lib/projections/ortho';\nimport qsc from './lib/projections/qsc';\nimport robin from './lib/projections/robin';\nimport geocent from './lib/projections/geocent';\nimport tpers from './lib/projections/tpers';\nexport default function(proj4){\n  proj4.Proj.projections.add(tmerc);\n  proj4.Proj.projections.add(etmerc);\n  proj4.Proj.projections.add(utm);\n  proj4.Proj.projections.add(sterea);\n  proj4.Proj.projections.add(stere);\n  proj4.Proj.projections.add(somerc);\n  proj4.Proj.projections.add(omerc);\n  proj4.Proj.projections.add(lcc);\n  proj4.Proj.projections.add(krovak);\n  proj4.Proj.projections.add(cass);\n  proj4.Proj.projections.add(laea);\n  proj4.Proj.projections.add(aea);\n  proj4.Proj.projections.add(gnom);\n  proj4.Proj.projections.add(cea);\n  proj4.Proj.projections.add(eqc);\n  proj4.Proj.projections.add(poly);\n  proj4.Proj.projections.add(nzmg);\n  proj4.Proj.projections.add(mill);\n  proj4.Proj.projections.add(sinu);\n  proj4.Proj.projections.add(moll);\n  proj4.Proj.projections.add(eqdc);\n  proj4.Proj.projections.add(vandg);\n  proj4.Proj.projections.add(aeqd);\n  proj4.Proj.projections.add(ortho);\n  proj4.Proj.projections.add(qsc);\n  proj4.Proj.projections.add(robin);\n  proj4.Proj.projections.add(geocent);\n  proj4.Proj.projections.add(tpers);\n}","import proj4 from './core';\nimport Proj from \"./Proj\";\nimport Point from \"./Point\";\nimport common from \"./common/toPoint\";\nimport defs from \"./defs\";\nimport nadgrid from \"./nadgrid\";\nimport transform from \"./transform\";\nimport mgrs from \"mgrs\";\nimport includedProjections from \"../projs\";\n\nproj4.defaultDatum = 'WGS84'; //default datum\nproj4.Proj = Proj;\nproj4.WGS84 = new proj4.Proj('WGS84');\nproj4.Point = Point;\nproj4.toPoint = common;\nproj4.defs = defs;\nproj4.nadgrid = nadgrid;\nproj4.transform = transform;\nproj4.mgrs = mgrs;\nproj4.version = '__VERSION__';\nincludedProjections(proj4);\nexport default proj4;\n","import proj4 from 'proj4'\n\n/**\n * Turns the longitude / latitude in degrees into a human readable pretty UTM zone representation.\n */\nfunction prettifyProjection(longitude, latitude, proj4Projection, proj4longlat, projectionUnits) {\n  const zone = 1 + Math.floor((longitude + 180) / 6)\n\n  const projection = proj4Projection + ' +zone=' + zone + (latitude < 0 ? ' +south' : '')\n\n  const projPoint = proj4(proj4longlat, projection, [longitude, latitude])\n\n  return {\n    utmZone: zone + (latitude < 0.0 ? 'S' : 'N'),\n    north: projPoint[1].toFixed(2) + projectionUnits,\n    east: projPoint[0].toFixed(2) + projectionUnits\n  }\n}\n\nexport default prettifyProjection\n","interface EarthGravityModel1996 {\n  gridFileUrl: string\n  data: unknown\n  minimumHeight: number\n  maximumHeight: number\n}\n\nclass EarthGravityModel1996 {\n  /**\n   * The Earth Gravity Model 1996 (EGM96) geoid.\n   * @param {String} gridFileUrl The URL of the WW15MGH.DAC file.\n   */\n  constructor(gridFileUrl) {\n    this.gridFileUrl = gridFileUrl\n    this.data = undefined\n\n    // These values were determined by inspecting the WW15MGH.DAC file.  We hard-code them here because\n    // we need them available before that file finishes loading.\n    this.minimumHeight = -106.99\n    this.maximumHeight = 85.39\n  }\n\n  /**\n   * Determines if this class will work in the current environment.  It will return false on older browsers without support\n   * for typed arrays.\n   * @return {Boolean} True if this class may be used in this environment; otherwise, false.\n   */\n  isSupported() {\n    return typeof Int16Array !== 'undefined' && typeof Uint8Array !== 'undefined'\n  }\n\n  /**\n   * Gets the height of EGM96 above the surface of the ellipsoid.\n   * @param {String} baseUrl The base URL for TerriaJS resources.\n   * @param {Number} longitude The longitude.\n   * @param {Number} latitude The latitude\n   * @return {Promise|Number} A promise, that, when it results The height of mean sea level above the ellipsoid at the specified location.  Negative numbers indicate that mean sea level\n   *                  is below the ellipsoid.\n   */\n  getHeight(longitude, latitude) {\n    return getHeightData(this).then(function (data) {\n      return getHeightFromData(data, longitude, latitude)\n    })\n  }\n\n  getHeights(cartographicArray) {\n    return getHeightData(this).then(function (data) {\n      for (let i = 0; i < cartographicArray.length; ++i) {\n        const cartographic = cartographicArray[i]\n        cartographic.height = getHeightFromData(data, cartographic.longitude, cartographic.latitude)\n      }\n      return cartographicArray\n    })\n  }\n}\n\nfunction getHeightData(model) {\n  const { defined, when } = Cesium\n  if (!defined(model.data)) {\n    model.data = loadArrayBuffer(model.gridFileUrl)\n  }\n\n  return when(model.data, function (data) {\n    if (!(model.data instanceof Int16Array)) {\n      // Data file is big-endian, all relevant platforms are little endian, so swap the byte order.\n      const byteView = new Uint8Array(data)\n      for (let k = 0; k < byteView.length; k += 2) {\n        const tmp = byteView[k]\n        byteView[k] = byteView[k + 1]\n        byteView[k + 1] = tmp\n      }\n      model.data = new Int16Array(data)\n    }\n\n    return model.data\n  })\n}\n\nfunction getHeightFromData(data, longitude, latitude) {\n  const { Math: CesiumMath } = Cesium\n  let recordIndex = (720 * (CesiumMath.PI_OVER_TWO - latitude)) / Math.PI\n  if (recordIndex < 0) {\n    recordIndex = 0\n  } else if (recordIndex > 720) {\n    recordIndex = 720\n  }\n\n  longitude = CesiumMath.zeroToTwoPi(longitude)\n  let heightIndex = (1440 * longitude) / CesiumMath.TWO_PI\n  if (heightIndex < 0) {\n    heightIndex = 0\n  } else if (heightIndex > 1440) {\n    heightIndex = 1440\n  }\n\n  const i = heightIndex | 0\n  const j = recordIndex | 0\n\n  const xMinusX1 = heightIndex - i\n  const yMinusY1 = recordIndex - j\n  const x2MinusX = 1.0 - xMinusX1\n  const y2MinusY = 1.0 - yMinusY1\n\n  const f11 = getHeightValue(data, j, i)\n  const f21 = getHeightValue(data, j, i + 1)\n  const f12 = getHeightValue(data, j + 1, i)\n  const f22 = getHeightValue(data, j + 1, i + 1)\n\n  return (f11 * x2MinusX * y2MinusY + f21 * xMinusX1 * y2MinusY + f12 * x2MinusX * yMinusY1 + f22 * xMinusX1 * yMinusY1) / 100.0\n}\n\n// Heights returned by this function are in centimeters.\nfunction getHeightValue(data, recordIndex, heightIndex) {\n  if (recordIndex > 720) {\n    recordIndex = 720\n  } else if (recordIndex < 0) {\n    recordIndex = 0\n  }\n\n  if (heightIndex > 1439) {\n    heightIndex -= 1440\n  } else if (heightIndex < 0) {\n    heightIndex += 1440\n  }\n\n  return data[recordIndex * 1440 + heightIndex]\n}\n\nfunction loadArrayBuffer(urlOrResource) {\n  const { Resource } = Cesium\n  const resource = (Resource as any).createIfNeeded(urlOrResource)\n  return resource.fetchArrayBuffer()\n}\n\nexport default EarthGravityModel1996\n","import { debounce } from 'lodash-unified'\nimport prettifyCoordinates from './prettifyCoordinates'\nimport prettifyProjection from './prettifyProjection'\nimport EarthGravityModel1996 from './EarthGravityModel1996'\ninterface MouseCoords {\n  proj4Projection: string\n  projectionUnits: string\n  proj4longlat: string\n  lastHeightSamplePosition: Cesium.Cartographic\n  accurateSamplingDebounceTime: number\n  tileRequestInFlight: any\n  elevation: string\n  utmZone: string\n  latitude: string\n  longitude: string\n  north: string\n  east: string\n  geoidModel: EarthGravityModel1996\n  useProjection: boolean\n  debounceSampleAccurateHeight: any\n}\ninterface MouseCoordsOption {\n  gridFileUrl: string\n  proj4Projection: string\n  projectionUnits: string\n  proj4longlat: string\n}\nclass MouseCoords {\n  constructor(options: MouseCoordsOption) {\n    const { Cartographic, knockout } = Cesium\n    const gridFileUrl = options.gridFileUrl\n    gridFileUrl && (this.geoidModel = new EarthGravityModel1996(gridFileUrl))\n\n    this.proj4Projection = options.proj4Projection\n    this.projectionUnits = options.projectionUnits\n    this.proj4longlat = options.proj4longlat\n\n    this.lastHeightSamplePosition = new Cartographic()\n    this.accurateSamplingDebounceTime = 250\n    this.tileRequestInFlight = undefined\n\n    this.elevation = ''\n    this.utmZone = ''\n    this.latitude = ''\n    this.longitude = ''\n    this.north = ''\n    this.east = ''\n    this.useProjection = false\n    this.debounceSampleAccurateHeight = debounce(this.sampleAccurateHeight, this.accurateSamplingDebounceTime)\n\n    knockout.track(this, ['elevation', 'utmZone', 'latitude', 'longitude', 'north', 'east', 'useProjection'])\n  }\n\n  toggleUseProjection() {\n    this.useProjection = !this.useProjection\n  }\n\n  updateCoordinatesFromCesium(viewer, position) {\n    const { Cartographic, defined, EllipsoidTerrainProvider, Intersections2D, SceneMode } = Cesium\n    const scene = viewer.scene\n    const camera = scene.camera\n    const pickRay = camera.getPickRay(position)\n    const globe = scene.globe\n    const pickedTriangle = globe.pickTriangle(pickRay, scene)\n    if (defined(pickedTriangle)) {\n      // Get a fast, accurate-ish height every time the mouse moves.\n      const ellipsoid = globe.ellipsoid\n\n      const v0 = ellipsoid.cartesianToCartographic(pickedTriangle.v0)\n      const v1 = ellipsoid.cartesianToCartographic(pickedTriangle.v1)\n      const v2 = ellipsoid.cartesianToCartographic(pickedTriangle.v2)\n      const intersection = ellipsoid.cartesianToCartographic(\n        scene.mode === SceneMode.SCENE3D ? pickedTriangle.intersection : scene.globe.pick(pickRay, scene)\n      )\n      let errorBar\n\n      if (globe.terrainProvider instanceof EllipsoidTerrainProvider) {\n        intersection.height = undefined\n      } else {\n        const barycentric = Intersections2D.computeBarycentricCoordinates(\n          intersection.longitude,\n          intersection.latitude,\n          v0.longitude,\n          v0.latitude,\n          v1.longitude,\n          v1.latitude,\n          v2.longitude,\n          v2.latitude\n        )\n\n        if (barycentric.x >= -1e-15 && barycentric.y >= -1e-15 && barycentric.z >= -1e-15) {\n          const height = barycentric.x * v0.height + barycentric.y * v1.height + barycentric.z * v2.height\n          intersection.height = height\n        }\n        const geometricError = globe.terrainProvider.getLevelMaximumGeometricError(pickedTriangle.tile.level)\n        const approximateHeight = intersection.height\n        const minHeight = Math.max(pickedTriangle.tile.data.tileBoundingRegion.minimumHeight, approximateHeight - geometricError)\n        const maxHeight = Math.min(pickedTriangle.tile.data.tileBoundingRegion.maximumHeight, approximateHeight + geometricError)\n        const minHeightGeoid = minHeight - (this.geoidModel ? this.geoidModel.minimumHeight : 0.0)\n        const maxHeightGeoid = maxHeight + (this.geoidModel ? this.geoidModel.maximumHeight : 0.0)\n        errorBar = Math.max(Math.abs(approximateHeight - minHeightGeoid), Math.abs(maxHeightGeoid - approximateHeight))\n      }\n      Cartographic.clone(intersection, this.lastHeightSamplePosition)\n      const terrainProvider = globe.terrainProvider\n\n      this.cartographicToFields(intersection, errorBar)\n      if (!(terrainProvider instanceof EllipsoidTerrainProvider)) {\n        this.debounceSampleAccurateHeight(terrainProvider, intersection)\n      }\n    } else {\n      this.elevation = ''\n      this.utmZone = ''\n      this.latitude = ''\n      this.longitude = ''\n      this.north = ''\n      this.east = ''\n    }\n  }\n\n  cartographicToFields(coordinates, errorBar?) {\n    const { Math: CesiumMath } = Cesium\n    const latitude = CesiumMath.toDegrees(coordinates.latitude)\n    const longitude = CesiumMath.toDegrees(coordinates.longitude)\n\n    if (this.useProjection) {\n      const prettyProjection = prettifyProjection(longitude, latitude, this.proj4Projection, this.proj4longlat, this.projectionUnits)\n      this.utmZone = prettyProjection.utmZone\n      this.north = prettyProjection.north\n      this.east = prettyProjection.east\n    }\n\n    const prettyCoordinate = prettifyCoordinates(longitude, latitude, {\n      height: coordinates.height,\n      errorBar: errorBar\n    })\n\n    this.latitude = prettyCoordinate.latitude\n    this.longitude = prettyCoordinate.longitude\n    this.elevation = prettyCoordinate.elevation\n  }\n\n  sampleAccurateHeight(terrainProvider, position) {\n    const { Cartographic, sampleTerrainMostDetailed, when } = Cesium\n    if (this.tileRequestInFlight) {\n      // A tile request is already in flight, so reschedule for later.\n      this.debounceSampleAccurateHeight.cancel()\n      this.debounceSampleAccurateHeight(terrainProvider, position)\n      return\n    }\n\n    const positionWithHeight = Cartographic.clone(position)\n\n    const geoidHeightPromise = this.geoidModel ? this.geoidModel.getHeight(position.longitude, position.latitude) : undefined\n    const terrainPromise = sampleTerrainMostDetailed(terrainProvider, [positionWithHeight])\n    this.tileRequestInFlight = when.all(\n      [geoidHeightPromise, terrainPromise],\n      result => {\n        const geoidHeight = result[0] || 0.0\n        this.tileRequestInFlight = undefined\n        if (Cartographic.equals(position, this.lastHeightSamplePosition)) {\n          position.height = positionWithHeight.height - geoidHeight\n          this.cartographicToFields(position)\n        } else {\n          // Mouse moved since we started this request, so the result isn't useful.  Try again next time.\n        }\n      },\n      () => {\n        this.tileRequestInFlight = undefined\n      }\n    )\n  }\n}\n\nconst scratchArray: Array<any> = []\nconst scratchSphereIntersectionResult = {\n  start: 0.0,\n  stop: 0.0\n}\nconst scratchV0 = {}\nconst scratchV1 = {}\nconst scratchV2 = {}\n\nexport function extendForMouseCoords() {\n  const { Globe, GlobeSurfaceTile, BoundingSphere, defaultValue, Cartesian3, defined, DeveloperError, IntersectionTests, SceneMode } = Cesium\n  Globe.prototype.pickTriangle =\n    Globe.prototype.pickTriangle ||\n    function (this, ray, scene, cullBackFaces, result) {\n      // >>includeStart('debug', pragmas.debug);\n      if (!defined(ray)) {\n        throw new DeveloperError('ray is required')\n      }\n      if (!defined(scene)) {\n        throw new DeveloperError('scene is required')\n      }\n      // >>includeEnd('debug');\n\n      cullBackFaces = defaultValue(cullBackFaces, true)\n\n      const mode = scene.mode\n      const projection = scene.mapProjection\n\n      const sphereIntersections = scratchArray\n      sphereIntersections.length = 0\n\n      const tilesToRender = this._surface._tilesToRender\n      let length = tilesToRender.length\n\n      let tile\n      let i\n\n      for (i = 0; i < length; ++i) {\n        tile = tilesToRender[i]\n        const surfaceTile = tile.data\n\n        if (!defined(surfaceTile)) {\n          continue\n        }\n\n        const boundingVolume = surfaceTile.pickBoundingSphere\n        if (mode !== SceneMode.SCENE3D) {\n          BoundingSphere.fromRectangleWithHeights2D(tile.rectangle, projection, surfaceTile.minimumHeight, surfaceTile.maximumHeight, boundingVolume)\n          Cartesian3.fromElements(boundingVolume.center.z, boundingVolume.center.x, boundingVolume.center.y, boundingVolume.center)\n        } else {\n          BoundingSphere.clone(surfaceTile.boundingSphere3D, boundingVolume)\n        }\n\n        const boundingSphereIntersection = IntersectionTests.raySphere(ray, boundingVolume, scratchSphereIntersectionResult)\n        if (defined(boundingSphereIntersection)) {\n          sphereIntersections.push(tile)\n        }\n      }\n\n      sphereIntersections.sort(createComparePickTileFunction(ray.origin))\n\n      let intersection\n      length = sphereIntersections.length\n      for (i = 0; i < length; ++i) {\n        intersection = sphereIntersections[i].data.pickTriangle(ray, scene.mode, scene.mapProjection, cullBackFaces, result)\n        if (defined(intersection)) {\n          intersection.tile = sphereIntersections[i]\n          break\n        }\n      }\n\n      return intersection\n    }\n\n  GlobeSurfaceTile.prototype.pickTriangle =\n    GlobeSurfaceTile.prototype.pickTriangle ||\n    function (this: any, ray, mode, projection, cullBackFaces) {\n      const mesh = this.renderedMesh\n      if (!defined(mesh)) {\n        return undefined\n      }\n\n      const vertices = mesh.vertices\n      const indices = mesh.indices\n      const encoding = mesh.encoding\n\n      const length = indices.length\n      for (let i = 0; i < length; i += 3) {\n        const i0 = indices[i]\n        const i1 = indices[i + 1]\n        const i2 = indices[i + 2]\n\n        const v0 = getPosition(encoding, mode, projection, vertices, i0, scratchV0)\n        const v1 = getPosition(encoding, mode, projection, vertices, i1, scratchV1)\n        const v2 = getPosition(encoding, mode, projection, vertices, i2, scratchV2)\n\n        const intersection = IntersectionTests.rayTriangle(ray, v0, v1, v2, cullBackFaces, new Cartesian3())\n        if (defined(intersection)) {\n          return {\n            intersection: intersection,\n            v0: v0,\n            v1: v1,\n            v2: v2\n          }\n        }\n      }\n\n      return undefined\n    }\n}\n\nfunction createComparePickTileFunction(rayOrigin) {\n  const { BoundingSphere } = Cesium\n  return function (a, b) {\n    const aDist = BoundingSphere.distanceSquaredTo(a.data.pickBoundingSphere, rayOrigin)\n    const bDist = BoundingSphere.distanceSquaredTo(b.data.pickBoundingSphere, rayOrigin)\n\n    return aDist - bDist\n  }\n}\n\nfunction getPosition(encoding, mode, projection, vertices, index, result) {\n  encoding.decodePosition(vertices, index, result)\n  const { Cartesian3, defined, SceneMode } = Cesium\n  if (defined(mode) && mode !== SceneMode.SCENE3D) {\n    const ellipsoid = projection.ellipsoid\n    const positionCart = ellipsoid.cartesianToCartographic(result)\n    projection.project(positionCart, result)\n    Cartesian3.fromElements(result.z, result.x, result.y, result)\n  }\n\n  return result\n}\n\nexport default MouseCoords\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-02-17 14:47:06\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\status-bar\\defaultProps.ts\n */\nimport { PropType } from 'vue'\nimport { VcTooltipProps } from '../../ui'\n\nexport default {\n  gridFileUrl: {\n    type: String,\n    default: 'https://zouyaoji.top/vue-cesium/SampleData/WW15MGH.DAC'\n  },\n  proj4Projection: {\n    type: String,\n    default: '+proj=utm +ellps=GRS80 +units=m +no_defs'\n  },\n  projectionUnits: {\n    type: String,\n    default: 'm'\n  },\n  proj4longlat: {\n    type: String,\n    default: '+proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees +no_defs'\n  },\n  position: {\n    type: String,\n    default: 'bottom-right',\n    validator: (v: string) => ['top-right', 'top-left', 'bottom-right', 'bottom-left', 'top', 'right', 'bottom', 'left'].includes(v)\n  },\n  offset: {\n    type: Array,\n    validator: v => v.length === 2\n  },\n  color: {\n    type: String,\n    default: '#fff'\n  },\n  background: {\n    type: String,\n    default: '#3f4854'\n  },\n  showCameraInfo: {\n    type: Boolean as PropType<boolean>,\n    default: true\n  },\n  showMouseInfo: {\n    type: Boolean as PropType<boolean>,\n    default: true\n  },\n  showPerformanceInfo: {\n    type: Boolean as PropType<boolean>,\n    default: true\n  },\n  useProjection: {\n    type: Boolean as PropType<boolean>,\n    default: true\n  },\n  tooltip: {\n    type: [Boolean, Object] as PropType<false | VcTooltipProps>,\n    default: () =>\n      ({\n        delay: 500,\n        anchor: 'bottom middle',\n        offset: [0, 20],\n        tip: void 0\n      } as VcTooltipProps | false)\n  }\n}\n","import type { ExtractPropTypes, VNode, CSSProperties } from 'vue'\nimport { defineComponent, getCurrentInstance, nextTick, ref, reactive, h, createCommentVNode, watch } from 'vue'\nimport { $, getInstanceListener, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport type { VcStatusBarEvt, VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport MouseCoords, { extendForMouseCoords } from './MouseCoords'\nimport throttle from '@vue-cesium/utils/private/throttle'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport { VcBtn, VcTooltip, VcTooltipProps } from '@vue-cesium/components/ui'\nimport defaultProps from './defaultProps'\nimport { isPlainObject } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport { heightToLevel } from '@vue-cesium/utils/cesium-helpers'\n\nconst emits = {\n  ...commonEmits,\n  statusBarEvt: (evt: VcStatusBarEvt) => true\n}\nexport const statusBarProps = defaultProps\nexport default defineComponent({\n  name: 'VcStatusBar',\n  props: statusBarProps,\n  emits: emits,\n  setup(props: ExtractPropTypes<typeof defaultProps>, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcStatusBar'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const parentInstance = getVcParentInstance(instance)\n    const { $services } = commonState\n    const rootRef = ref<typeof VcBtn | null>(null)\n    const tooltipRef = ref<typeof VcTooltip | null>(null)\n    const { t } = useLocale()\n\n    let lastMouseX = -1\n    let lastMouseY = -1\n    const cameraInfo = reactive({\n      heading: 'NaN',\n      pitch: 'NaN',\n      roll: 'NaN',\n      height: 'NaN',\n      level: 'NaN'\n    })\n    const performanceInfo = reactive({\n      fps: 'NaN',\n      ms: 'NaN'\n    })\n    const mouseCoordsInfo = ref<MouseCoords>()\n    const positionState = usePosition(props, $services)\n    const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n    const canRender = ref(hasVcNavigation)\n    const rootStyle = reactive<CSSProperties>({})\n    // watch\n    watch(\n      () => props,\n      val => {\n        nextTick(() => {\n          if (!instance.mounted) {\n            return\n          }\n          updateRootStyle()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n    // methods\n    instance.createCesiumObject = async () => {\n      canRender.value = true\n      const { viewer } = $services\n\n      const viewerElement = (viewer as any)._element as HTMLElement\n\n      if (props.showMouseInfo) {\n        mouseCoordsInfo.value = new MouseCoords({\n          gridFileUrl: props.gridFileUrl,\n          proj4Projection: props.proj4Projection,\n          projectionUnits: props.projectionUnits,\n          proj4longlat: props.proj4longlat\n        })\n\n        viewerElement.addEventListener('wheel', onMouseMove, false)\n        viewerElement.addEventListener('mousemove', onMouseMove, false)\n        viewerElement.addEventListener('touchmove', onMouseMove, false)\n        extendForMouseCoords()\n      }\n\n      if (props.showCameraInfo) {\n        viewer.camera.changed.addEventListener(onCameraChanged)\n        onCameraChanged()\n      }\n\n      if (props.showPerformanceInfo) {\n        viewer.scene.debugShowFramesPerSecond = true\n        viewer.scene.postRender.addEventListener(onScenePostRender)\n      }\n\n      return new Promise((resolve, reject) => {\n        nextTick(() => {\n          if (!hasVcNavigation) {\n            const viewerElement = (viewer as any)._element\n            viewerElement.appendChild($(rootRef)?.$el)\n            resolve($(rootRef)?.$el)\n          } else {\n            resolve($(rootRef)?.$el)\n          }\n        })\n      })\n    }\n\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)?.$el\n      })\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element as HTMLElement\n      if (props.showMouseInfo) {\n        mouseCoordsInfo.value = undefined\n        viewerElement.removeEventListener('wheel', onMouseMove)\n        viewerElement.removeEventListener('mousemove', onMouseMove)\n        viewerElement.removeEventListener('touchmove', onMouseMove)\n      }\n\n      if (props.showCameraInfo) {\n        viewer.camera.changed.removeEventListener(onCameraChanged)\n      }\n\n      if (props.showPerformanceInfo) {\n        if (viewer.scene._performanceDisplay) {\n          viewer.scene._performanceDisplay._container.style.display = 'block'\n        }\n\n        viewer.scene.postRender.removeEventListener(onScenePostRender)\n      }\n\n      if (!hasVcNavigation) {\n        viewerElement.contains($(rootRef)?.$el) && viewerElement.removeChild($(rootRef)?.$el)\n      }\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)?.$el\n      })\n\n      return true\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n\n      css.background = props.background\n      css.color = props.color\n      const side = positionState.attach.value\n\n      if ((side.bottom || side.top) && !side.left && !side.right) {\n        css.left = '50%'\n        css.transform = 'translate(-50%, 0)'\n      }\n\n      if ((side.left || side.right) && !side.top && !side.bottom) {\n        css.top = '50%'\n        css.transform = 'translate(0, -50%)'\n      }\n\n      Object.assign(rootStyle, css)\n    }\n\n    const onScenePostRender = throttle(scene => {\n      performanceInfo.fps = scene._performanceDisplay?._fpsText.nodeValue\n      performanceInfo.ms = scene._performanceDisplay?._msText.nodeValue\n      scene._performanceDisplay._container.style.display = 'none'\n    }, 500)\n\n    const onCameraChanged = () => {\n      const { viewer } = $services\n      const { Math: CesiumMath } = Cesium\n      cameraInfo.heading = CesiumMath.toDegrees(viewer.camera.heading).toFixed(1)\n      cameraInfo.pitch = CesiumMath.toDegrees(viewer.camera.pitch).toFixed(1)\n      cameraInfo.roll = CesiumMath.toDegrees(viewer.camera.roll).toFixed(1)\n      cameraInfo.height = viewer.camera.positionCartographic.height.toFixed(2)\n      cameraInfo.level = heightToLevel(Number(cameraInfo.height)).toFixed(0)\n    }\n\n    const onMouseMove = e => {\n      const { Cartesian2 } = Cesium\n      const { viewer } = $services\n\n      const clientX = e.type === 'mousemove' || e.type === 'wheel' ? e.clientX : e.changedTouches[0].clientX\n      const clientY = e.type === 'mousemove' || e.type === 'wheel' ? e.clientY : e.changedTouches[0].clientY\n\n      if (clientX === lastMouseX && clientY === lastMouseY) {\n        return\n      }\n\n      lastMouseX = clientX\n      lastMouseY = clientY\n\n      const viewerElement = (viewer as any)._element as HTMLElement\n\n      if (viewer) {\n        if (props.showMouseInfo) {\n          const rect = viewerElement.getBoundingClientRect()\n          const position = new Cartesian2(clientX - rect.left, clientY - rect.top)\n          mouseCoordsInfo.value?.updateCoordinatesFromCesium(viewer, position)\n        }\n        const listener = getInstanceListener(instance, 'statusBarEvt')\n        listener &&\n          ctx.emit('statusBarEvt', {\n            type: 'statusBar',\n            mouseCoordsInfo: mouseCoordsInfo.value,\n            cameraInfo: cameraInfo,\n            performanceInfo: performanceInfo\n          })\n      }\n    }\n\n    const toggleUseProjection = () => {\n      if (!props.useProjection) {\n        return\n      }\n      $(tooltipRef)?.hide()\n      if (props.showMouseInfo) {\n        mouseCoordsInfo.value?.toggleUseProjection()\n      }\n    }\n\n    // expose public methods\n    Object.assign(instance.proxy, { mouseCoordsInfo, cameraInfo, performanceInfo })\n\n    return () => {\n      if (canRender.value) {\n        const inner: Array<VNode> = []\n        if (props.showMouseInfo) {\n          if (!mouseCoordsInfo.value?.useProjection) {\n            inner.push(\n              h(\n                'div',\n                {\n                  class: 'vc-section ellipsis'\n                },\n                [\n                  h(\n                    'span',\n                    {\n                      ...ctx.attrs\n                    },\n                    t('vc.navigation.statusBar.lng')\n                  ),\n                  h('span', {}, mouseCoordsInfo.value?.longitude)\n                ]\n              ),\n              h(\n                'div',\n                {\n                  class: 'vc-section ellipsis'\n                },\n                [h('span', {}, t('vc.navigation.statusBar.lat')), h('span', {}, mouseCoordsInfo.value?.latitude)]\n              )\n            )\n          } else {\n            inner.push(\n              h(\n                'div',\n                {\n                  class: 'vc-section-short ellipsis'\n                },\n                [\n                  h(\n                    'span',\n                    {\n                      ...ctx.attrs\n                    },\n                    t('vc.navigation.statusBar.zone')\n                  ),\n                  h('span', null, mouseCoordsInfo.value?.utmZone)\n                ]\n              ),\n              h(\n                'div',\n                {\n                  class: 'vc-section ellipsis'\n                },\n                [\n                  h(\n                    'span',\n                    {\n                      ...ctx.attrs\n                    },\n                    t('vc.navigation.statusBar.e')\n                  ),\n                  h('span', null, mouseCoordsInfo.value?.east)\n                ]\n              ),\n              h(\n                'div',\n                {\n                  class: 'vc-section ellipsis'\n                },\n                [\n                  h(\n                    'span',\n                    {\n                      ...ctx.attrs\n                    },\n                    t('vc.navigation.statusBar.n')\n                  ),\n                  h('span', null, mouseCoordsInfo.value?.north)\n                ]\n              )\n            )\n          }\n\n          if (mouseCoordsInfo.value?.elevation) {\n            inner.push(\n              h(\n                'div',\n                {\n                  class: 'vc-section ellipsis'\n                },\n                [\n                  h(\n                    'span',\n                    {\n                      ...ctx.attrs\n                    },\n                    t('vc.navigation.statusBar.elev')\n                  ),\n                  h('span', {}, mouseCoordsInfo.value?.elevation)\n                ]\n              )\n            )\n          } else {\n            inner.push(createCommentVNode('v-if'))\n          }\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        if (props.showCameraInfo) {\n          inner.push(\n            h(\n              'div',\n              {\n                class: 'vc-section-short-mini ellipsis'\n              },\n              [\n                h(\n                  'span',\n                  {\n                    ...ctx.attrs\n                  },\n                  t('vc.navigation.statusBar.level')\n                ),\n                h('span', null, cameraInfo.level)\n              ]\n            ),\n            h(\n              'div',\n              {\n                class: 'vc-section-short ellipsis'\n              },\n              [\n                h(\n                  'span',\n                  {\n                    ...ctx.attrs\n                  },\n                  t('vc.navigation.statusBar.heading')\n                ),\n                h('span', null, `${cameraInfo.heading}°`)\n              ]\n            ),\n            h(\n              'div',\n              {\n                class: 'vc-section-short ellipsis'\n              },\n              [\n                h(\n                  'span',\n                  {\n                    ...ctx.attrs\n                  },\n                  t('vc.navigation.statusBar.pitch')\n                ),\n                h('span', null, `${cameraInfo.pitch}°`)\n              ]\n            ),\n            h(\n              'div',\n              {\n                class: 'vc-section-short ellipsis'\n              },\n              [\n                h(\n                  'span',\n                  {\n                    ...ctx.attrs\n                  },\n                  t('vc.navigation.statusBar.roll')\n                ),\n                h('span', null, `${cameraInfo.roll}°`)\n              ]\n            ),\n            h(\n              'div',\n              {\n                class: 'vc-section ellipsis'\n              },\n              [\n                h(\n                  'span',\n                  {\n                    ...ctx.attrs\n                  },\n                  t('vc.navigation.statusBar.cameraHeight')\n                ),\n                h('span', null, `${cameraInfo.height}m`)\n              ]\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        if (props.showPerformanceInfo) {\n          inner.push(\n            h(\n              'div',\n              {\n                class: 'vc-section-short-mini ellipsis'\n              },\n              [h('span', null, performanceInfo.ms)]\n            ),\n            h(\n              'div',\n              {\n                class: 'vc-section-short-mini ellipsis'\n              },\n              [h('span', null, performanceInfo.fps)]\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        if (isPlainObject(props.tooltip) && props.showMouseInfo && props.useProjection) {\n          inner.push(\n            h(\n              VcTooltip,\n              {\n                ref: tooltipRef,\n                ...props.tooltip\n              },\n              () => h('strong', null, (isPlainObject(props.tooltip) && props.tooltip.tip) || t('vc.navigation.statusBar.tip'))\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        return h(\n          VcBtn,\n          {\n            ref: rootRef,\n            class: 'vc-status-bar ' + positionState.classes.value,\n            style: rootStyle,\n            noCaps: true,\n            onClick: toggleUseProjection\n          },\n          () => inner\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\n// export type VcStatusBarProps = ExtractPropTypes<typeof statusBarProps>\nexport type VcStatusBarEmits = typeof emits\n\nexport type VcStatusBarProps = {\n  /**\n   * Specify the position of the VcStatusBar.\n   * Default value: bottom-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcStatusBar horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify the mouse to pick up the height model, use this to improve the accuracy of the height obtained.\n   * Default value: https://zouyaoji.top/vue-cesium/statics/SampleData/WW15MGH.DAC\n   */\n  gridFileUrl?: string\n  /**\n   * Specify the proj4 projection.\n   * Default value: +proj=utm +ellps=GRS80 +units=m +no_defs\n   */\n  proj4Projection?: string\n  /**\n   * Specify the projection units.\n   * Default value: m\n   */\n  projectionUnits?: string\n  /**\n   * Specify the proj4 longlat.\n   * Default value: +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees +no_defs\n   */\n  proj4longlat?: string\n  /**\n   * Specify the css color of the information bar.\n   * Default value: #fff\n   */\n  color?: string\n  /**\n   * Specify the background of the information bar.\n   * Default value: #3f4854\n   */\n  background?: string\n  /**\n   * Specify whether to display camera information in the information bar.\n   * Default value: true\n   */\n  showCameraInfo?: boolean\n  /**\n   * Specify whether to display mouse coords information in the information bar.\n   * Default value: true\n   */\n  showMouseInfo?: boolean\n  /**\n   * Specify whether to display frame rate information in the information bar.\n   * Default value: true\n   */\n  showPerformanceInfo?: boolean\n  /**\n   * Specify whether the latitude and longitude coordinates on the information bar can be switched to UTM projected coordinates.\n   * Default value: true\n   */\n  useProjection?: boolean\n  /**\n   * The tooltip parameter.\n   */\n  tooltip?: false | VcTooltipProps\n  /**\n   * Triggers before the VcStatusBar is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcStatusBar is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcStatusBar is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the information changed.\n   */\n  onStatusBarEvt?: (evt: VcStatusBarEvt) => void\n}\n","export default {\n  position: {\n    type: String,\n    default: 'bottom-right',\n    validator: (v: string) => ['top-right', 'top-left', 'bottom-right', 'bottom-left', 'top', 'right', 'bottom', 'left'].includes(v)\n  },\n  offset: {\n    type: Array,\n    validator: v => v.length === 2\n  },\n  color: {\n    type: String,\n    default: '#fff'\n  },\n  background: {\n    type: String,\n    default: '#3f4854'\n  },\n  width: {\n    type: Number,\n    default: 100\n  },\n  barBackground: {\n    type: String,\n    default: '#fff'\n  }\n}\n","import type { CSSProperties, ExtractPropTypes } from 'vue'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, h, nextTick, reactive, ref, watch } from 'vue'\nimport { $, getInstanceListener, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport type { VcDistanceLegendEvt, VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport throttle from '@vue-cesium/utils/private/throttle'\nimport { useCommon } from '@vue-cesium/composables'\nimport defaultProps from './defaultProps'\nimport { VcBtn } from '@vue-cesium/components/ui'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  distanceLegendEvt: (evt: VcDistanceLegendEvt) => true\n}\nexport const distanceLegendProps = defaultProps\nexport default defineComponent({\n  name: 'VcDistanceLegend',\n  props: distanceLegendProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcDistanceLegend'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const parentInstance = getVcParentInstance(instance)\n    const { $services } = commonState\n    const rootRef = ref<typeof VcBtn>(null)\n    const distanceLabel = ref<string>('')\n    const positionState = usePosition(props, $services)\n    const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n    const canRender = ref(hasVcNavigation)\n    const rootStyle = reactive<CSSProperties>({})\n    let lastLegendUpdate = 0\n    const barWidth = ref(0)\n    let distance = 0\n    // watch\n    watch(\n      () => props,\n      val => {\n        nextTick(() => {\n          if (!instance.mounted) {\n            return\n          }\n          updateRootStyle()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n    const barStyle = computed(() => {\n      return {\n        width: `${barWidth.value}px`,\n        left: `${5 + (props.width + 15 - barWidth.value) / 2}px`,\n        height: '2px',\n        background: props.barBackground\n      }\n    })\n    // methods\n    instance.createCesiumObject = async () => {\n      canRender.value = true\n      distanceLabel.value = ''\n      return new Promise((resolve, reject) => {\n        nextTick(() => {\n          const { viewer } = $services\n          // const viewerElement = (viewer as any)._element as HTMLElement\n          // viewerElement.appendChild($(rootRef)?.$el)\n          // resolve($(rootRef)?.$el)\n          if (!hasVcNavigation) {\n            const viewerElement = (viewer as any)._element\n            viewerElement.appendChild($(rootRef)?.$el)\n            resolve($(rootRef)?.$el)\n          } else {\n            resolve($(rootRef)?.$el)\n          }\n\n          viewer.scene.postRender.addEventListener(onScenePostRender)\n        })\n      })\n    }\n\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)?.$el\n      })\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      viewer.scene.postRender.removeEventListener(onScenePostRender)\n      const viewerElement = (viewer as any)._element as HTMLElement\n\n      if (!hasVcNavigation) {\n        viewerElement.contains($(rootRef)?.$el) && viewerElement.removeChild($(rootRef)?.$el)\n      }\n\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)?.$el\n      })\n\n      return true\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n\n      css.background = props.background\n      css.color = props.color\n\n      const side = positionState.attach.value\n\n      if ((side.bottom || side.top) && !side.left && !side.right) {\n        css.left = '50%'\n        css.transform = 'translate(-50%, 0)'\n      }\n\n      if ((side.left || side.right) && !side.top && !side.bottom) {\n        css.top = '50%'\n        css.transform = 'translate(0, -50%)'\n      }\n      css.width = `${props.width}px`\n\n      Object.assign(rootStyle, css)\n    }\n\n    const onScenePostRender = throttle(scene => {\n      const { Cartesian2, defined, getTimestamp, EllipsoidGeodesic } = Cesium\n      const now = getTimestamp()\n      if (now < lastLegendUpdate + 250) {\n        return\n      }\n\n      lastLegendUpdate = now\n      const geodesic = new EllipsoidGeodesic()\n      // Find the distance between two pixels at the bottom center of the screen.\n      const width = scene.canvas.clientWidth\n      const height = scene.canvas.clientHeight\n\n      const left = scene.camera.getPickRay(new Cartesian2((width / 2) | 0, height - 1))\n      const right = scene.camera.getPickRay(new Cartesian2((1 + width / 2) | 0, height - 1))\n\n      const globe = scene.globe\n      const leftPosition = globe.pick(left, scene)\n      const rightPosition = globe.pick(right, scene)\n\n      if (!defined(leftPosition) || !defined(rightPosition)) {\n        barWidth.value = 0\n        distanceLabel.value = ''\n        return\n      }\n\n      const leftCartographic = globe.ellipsoid.cartesianToCartographic(leftPosition)\n      const rightCartographic = globe.ellipsoid.cartesianToCartographic(rightPosition)\n\n      geodesic.setEndPoints(leftCartographic, rightCartographic)\n      const pixelDistance = geodesic.surfaceDistance\n\n      // Find the first distance that makes the scale bar less than 100 pixels.\n      const maxBarWidth = props.width - 10\n      let _distance\n      for (let i = distances.length - 1; !defined(_distance) && i >= 0; --i) {\n        if (distances[i] / pixelDistance < maxBarWidth) {\n          _distance = distances[i]\n          if (distance !== _distance) {\n            distance = _distance\n            const listener = getInstanceListener(instance, 'distanceLegendEvt')\n            listener &&\n              ctx.emit('distanceLegendEvt', {\n                type: 'distanceLegend',\n                distance,\n                status: 'changed'\n              })\n          }\n        }\n      }\n\n      if (defined(_distance)) {\n        let label\n        if (distance >= 1000) {\n          label = (_distance / 1000).toString() + ' km'\n        } else {\n          label = _distance.toString() + ' m'\n        }\n\n        barWidth.value = (_distance / pixelDistance) | 0\n        distanceLabel.value = label\n      } else {\n        barWidth.value = 0\n        distanceLabel.value = ''\n      }\n    }, 500)\n\n    return () => {\n      if (canRender.value && distanceLabel.value !== void 0) {\n        return h(\n          VcBtn,\n          {\n            ref: rootRef,\n            class: 'vc-distance-legend ' + positionState.classes.value,\n            style: rootStyle,\n            stack: true,\n            noCaps: true\n          },\n          () => [\n            h('label', null, distanceLabel.value),\n            h('div', {\n              style: barStyle.value,\n              class: 'vc-bar'\n            })\n          ]\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\nconst distances = [\n  1, 2, 3, 5, 10, 20, 30, 50, 100, 200, 300, 500, 1000, 2000, 3000, 5000, 10000, 20000, 30000, 50000, 100000, 200000, 300000, 500000, 1000000,\n  2000000, 3000000, 5000000, 10000000, 20000000, 30000000, 50000000\n]\n\n// export type VcDistanceLegendProps = ExtractPropTypes<typeof distanceLegendProps>\nexport type VcDistanceLegendEmits = typeof emits\nexport type VcDistanceLegendProps = {\n  /**\n   * Specify the position of the VcDistanceLegend.\n   * Default value: bottom-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcDistanceLegend horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify the css color of the VcDistanceLegend.\n   * Default value: #fff\n   */\n  color?: string\n  /**\n   * Specify the css background of the VcDistanceLegend.\n   * Default value: #3f4854\n   */\n  background?: string\n  /**\n   * Specify the width of the VcDistanceLegend.\n   * Default value: 100\n   */\n  width?: number\n  /**\n   * Specify the css color of the horizontal line on the VcDistanceLegend.\n   * Default value: #fff\n   */\n  barBackground?: string\n  /**\n   * Triggers before the VcCompass is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCompass is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcCompass is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the distance scale changed.\n   */\n  onDistanceLegendEvt?: (evt: VcDistanceLegendEvt) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-01-22 09:32:32\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\navigation\\defaultProps.ts\n */\nimport { positionProps } from '@vue-cesium/composables/private/use-position'\nimport { getDefaultOptionByProps } from '@vue-cesium/utils/util'\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { defaultProps as compassDefaultProps } from '../compass/defaultProps'\nimport { defaultProps as zoomDefaultProps } from '../zoom-control/defaultProps'\nimport printDefaultProps from '../print/defaultProps'\nimport locationDefaultProps from '../my-location/defaultProps'\nimport statusBarDefaultProps from '../status-bar/defaultProps'\nimport distancelegendDefaultProps from '../distance-legend/defaultProps'\nimport { VcCompassProps } from '../compass'\nimport { VcZoomControlProps } from '../zoom-control'\nimport { VcPrintProps } from '../print'\nimport { VcMyLocationProps } from '../my-location'\nimport { VcStatusBarProps } from '../status-bar'\nimport { VcDistanceLegendProps } from '../distance-legend'\n\nexport interface VcNavigationOtherOpts {\n  position?: string\n  offset?: Array<number>\n  statusBarOpts?: VcStatusBarProps\n  distancelegendOpts?: VcDistanceLegendProps\n}\n\nconst defaultProps = {\n  ...positionProps,\n  compassOpts: {\n    // compassOptions\n    type: [Object, Boolean] as PropType<false | VcCompassProps>,\n    default: () => getDefaultOptionByProps<VcCompassProps>(compassDefaultProps, ['position', 'offset'])\n  },\n  zoomOpts: {\n    type: [Object, Boolean] as PropType<false | VcZoomControlProps>,\n    default: () => getDefaultOptionByProps<VcZoomControlProps>(zoomDefaultProps, ['position', 'offset'])\n  },\n  printOpts: {\n    type: [Object, Boolean] as PropType<false | VcPrintProps>,\n    default: () => getDefaultOptionByProps<VcPrintProps>(printDefaultProps, ['position', 'offset'])\n  },\n  locationOpts: {\n    type: [Object, Boolean] as PropType<false | VcMyLocationProps>,\n    default: () => getDefaultOptionByProps<VcMyLocationProps>(locationDefaultProps, ['position', 'offset'])\n  },\n  otherOpts: {\n    // otherControlOptions\n    type: [Object, Boolean] as PropType<false | VcNavigationOtherOpts>,\n    default: () =>\n      ({\n        position: 'bottom-right',\n        offset: [2, 3],\n        statusBarOpts: getDefaultOptionByProps(statusBarDefaultProps, ['position', 'offset']) as VcStatusBarProps,\n        distancelegendOpts: getDefaultOptionByProps(distancelegendDefaultProps, ['position', 'offset']) as VcDistanceLegendProps\n      } as VcNavigationOtherOpts)\n  }\n}\nexport type VcNavigationProps = ExtractPropTypes<typeof defaultProps>\nconst defaultOptions = getDefaultOptionByProps<VcNavigationProps>(defaultProps)\nexport { defaultProps, defaultOptions }\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-02-18 17:30:25\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\navigation\\index.ts\n */\nimport type { ExtractPropTypes, VNode, CSSProperties } from 'vue'\nimport { defineComponent, getCurrentInstance, watch, nextTick, ref, reactive, h, createCommentVNode, computed } from 'vue'\nimport type {\n  VcCompassEvt,\n  VcDistanceLegendEvt,\n  VcLocationEvt,\n  VcPrintEvt,\n  VcStatusBarEvt,\n  VcComponentInternalInstance,\n  VcZoomEvt,\n  VcReadyObject\n} from '@vue-cesium/utils/types'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport { $, getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { hMergeSlot } from '@vue-cesium/utils/private/render'\nimport { defaultProps, defaultOptions, VcNavigationOtherOpts } from './defaultProps'\nimport { useCommon } from '@vue-cesium/composables'\nimport VcDistanceLegend from '../distance-legend'\nimport VcStatusBar from '../status-bar'\nimport VcZoomControl, { VcZoomControlProps } from '../zoom-control'\nimport VcMyLocation, { VcMyLocationProps } from '../my-location'\nimport VcCompass, { VcCompassProps } from '../compass'\nimport VcPrint, { VcPrintProps } from '../print'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  zoomEvt: (evt: VcZoomEvt) => true,\n  compassEvt: (evt: VcCompassEvt) => true,\n  locationEvt: (evt: VcLocationEvt) => true,\n  printEvt: (evt: VcPrintEvt) => true,\n  statusBarEvt: (evt: VcStatusBarEvt) => true,\n  distanceLegendEvt: (evt: VcDistanceLegendEvt) => true\n}\nexport const navigationProps = defaultProps\nexport default defineComponent({\n  name: 'VcNavigation',\n  inheritAttrs: false,\n  props: navigationProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcNavigation'\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n\n    const canRender = ref(false)\n    const { $services } = commonState\n    const positionState = usePosition(props, $services)\n    const positionStateOther = usePosition(props.otherOpts || { position: 'bottom-right' }, $services)\n    const rootRef = ref<HTMLElement>(null)\n    const secondRootRef = ref<HTMLElement>(null)\n    const compassRef = ref<typeof VcCompass>(null)\n    const zoomControlRef = ref<typeof VcZoomControl>(null)\n    const printRef = ref<typeof VcPrint>(null)\n    const myLocationRef = ref<typeof VcMyLocation>(null)\n    const statusBarRef = ref<typeof VcStatusBar>(null)\n    const distanceLegendRef = ref<typeof VcDistanceLegend>(null)\n    const rootStyle = reactive<CSSProperties>({})\n    const secondRootStyle = reactive<CSSProperties>({})\n    const { emit } = ctx\n    // watch\n    watch(\n      () => props,\n      () => {\n        nextTick(() => {\n          updateRootStyle()\n          $(compassRef)?.reload()\n          $(zoomControlRef)?.reload()\n          $(myLocationRef)?.reload()\n          $(printRef)?.reload()\n          $(statusBarRef)?.reload()\n          $(distanceLegendRef)?.reload()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n\n    const compassOptions = computed(() => Object.assign({}, defaultOptions.compassOpts, props.compassOpts))\n    const zoomControlOptions = computed<VcZoomControlProps>(() => Object.assign({}, defaultOptions.zoomOpts, props.zoomOpts))\n    const printViewOptions = computed<VcPrintProps>(() => Object.assign({}, defaultOptions.printOpts, props.printOpts))\n    const myLocationOptions = computed<false | VcMyLocationProps>(() => Object.assign({}, defaultOptions.locationOpts, props.locationOpts))\n    const otherControlOptions = computed(() => Object.assign({}, defaultOptions.otherOpts, props.otherOpts))\n\n    // methods\n    const onCompassEvt = (evt: VcCompassEvt) => {\n      const listener = getInstanceListener(instance, 'compassEvt')\n      listener && emit('compassEvt', evt)\n    }\n    const onZoomEvt = (evt: VcZoomEvt) => {\n      const listener = getInstanceListener(instance, 'zoomEvt')\n      listener && emit('zoomEvt', evt)\n    }\n    const onPrintEvt = (evt: VcPrintEvt) => {\n      const listener = getInstanceListener(instance, 'printEvt')\n      listener && emit('printEvt', evt)\n    }\n    const onLocationEvt = (evt: VcLocationEvt) => {\n      const listener = getInstanceListener(instance, 'locationEvt')\n      listener && emit('locationEvt', evt)\n    }\n    const onStatusBarEvt = (evt: VcStatusBarEvt) => {\n      const listener = getInstanceListener(instance, 'statusBarEvt')\n      listener && emit('statusBarEvt', evt)\n    }\n    const onDistanceLegendEvt = (evt: VcDistanceLegendEvt) => {\n      const listener = getInstanceListener(instance, 'distanceLegendEvt')\n      listener && emit('distanceLegendEvt', evt)\n    }\n\n    instance.createCesiumObject = async () => {\n      canRender.value = true\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.addEventListener(onViewerWidgetResized)\n      return new Promise((resolve, reject) => {\n        nextTick(() => {\n          const viewerElement = (viewer as any)._element\n          viewerElement.appendChild($(rootRef))\n          $(secondRootRef) && viewerElement.appendChild($(secondRootRef))\n          resolve([$(rootRef), $(secondRootRef)])\n        })\n      })\n    }\n\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)\n      })\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element\n      viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n      viewerElement.contains($(secondRootRef)) && viewerElement.removeChild($(secondRootRef))\n      viewer.viewerWidgetResized?.removeEventListener(onViewerWidgetResized)\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)\n      })\n      return true\n    }\n\n    const onViewerWidgetResized = () => {\n      nextTick(() => {\n        updateRootStyle()\n      })\n    }\n\n    const updateRootStyle = () => {\n      const compassTarget = $(compassRef)?.$el as HTMLElement\n      let height = 0\n      let marginX = 0\n      if (compassTarget !== void 0) {\n        const margin = getComputedStyle(compassTarget.parentNode as Element).margin\n        marginX = parseInt(margin)\n        height += compassTarget.getBoundingClientRect().height + marginX * 2\n      }\n      const zoomControlTarget = $(zoomControlRef)?.$el as HTMLElement\n      if (zoomControlTarget !== void 0) {\n        height += zoomControlTarget.getBoundingClientRect().height + marginX * 2\n      }\n      const printTarget = $(printRef)?.$el as HTMLElement\n      if (printTarget !== void 0) {\n        height += printTarget.getBoundingClientRect().height + marginX * 2\n      }\n      const myLocationTarget = $(myLocationRef)?.$el as HTMLElement\n      if (myLocationTarget !== void 0) {\n        height += myLocationTarget.getBoundingClientRect().height + marginX * 2\n      }\n\n      const css: CSSProperties = positionState.style.value\n      const side = positionState.attach.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n\n      if ((side.bottom || side.top) && !side.left && !side.right) {\n        css.left = '50%'\n        css.transform = 'translate(-50%, 0)'\n      }\n\n      if ((side.left || side.right) && !side.top && !side.bottom) {\n        css.top = '50%'\n        css.transform = 'translate(0, -50%)'\n      }\n\n      Object.assign(rootStyle, css, { height: `${height}px` })\n\n      const cssSecondRoot: CSSProperties = positionStateOther.style.value\n      const sideSecondRoot = positionStateOther.attach.value\n      secondRootStyle.left = cssSecondRoot.left\n      secondRootStyle.top = cssSecondRoot.top\n      secondRootStyle.transform = cssSecondRoot.transform\n\n      if ((sideSecondRoot.bottom || sideSecondRoot.top) && !sideSecondRoot.left && !sideSecondRoot.right) {\n        cssSecondRoot.left = '50%'\n        cssSecondRoot.transform = 'translate(-50%, 0)'\n      }\n\n      if ((sideSecondRoot.left || sideSecondRoot.right) && !sideSecondRoot.top && !sideSecondRoot.bottom) {\n        cssSecondRoot.top = '50%'\n        cssSecondRoot.transform = 'translate(0, -50%)'\n      }\n\n      let height2 = 0\n      const statusBarRefTarget = $(statusBarRef)?.$el as HTMLElement\n      if (statusBarRefTarget !== void 0) {\n        height2 += statusBarRefTarget.getBoundingClientRect().height\n      }\n      Object.assign(secondRootStyle, cssSecondRoot, { height: `${height2}px` })\n    }\n\n    return () => {\n      if (canRender.value) {\n        const inner: VNode[] = []\n        if (compassOptions.value && props.compassOpts !== false) {\n          inner.push(\n            h(\n              'div',\n              {\n                class: 'vc-navigation-control'\n              },\n              [\n                h(VcCompass, {\n                  ref: compassRef,\n                  ...compassOptions.value,\n                  onCompassEvt\n                })\n              ]\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n        if (zoomControlOptions.value && props.zoomOpts !== false) {\n          inner.push(\n            h(\n              'div',\n              {\n                class: 'vc-navigation-control'\n              },\n              [\n                h(VcZoomControl, {\n                  ref: zoomControlRef,\n                  ...zoomControlOptions.value,\n                  onZoomEvt\n                })\n              ]\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n        if (printViewOptions.value && props.printOpts !== false) {\n          inner.push(\n            h(\n              'div',\n              {\n                class: 'vc-navigation-control'\n              },\n              [\n                h(VcPrint, {\n                  ref: printRef,\n                  ...printViewOptions.value,\n                  onPrintEvt\n                })\n              ]\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        if (myLocationOptions.value && props.locationOpts !== false) {\n          inner.push(\n            h(\n              'div',\n              {\n                class: 'vc-navigation-control'\n              },\n              [\n                h(VcMyLocation, {\n                  ref: myLocationRef,\n                  ...myLocationOptions.value,\n                  onLocationEvt\n                })\n              ]\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        let children = [h('div', { class: 'vc-navigation-controls' }, inner)]\n        children = hMergeSlot(ctx.slots.default, children)\n\n        const root: VNode[] = []\n        root.push(\n          h(\n            'div',\n            {\n              ref: rootRef,\n              class: 'vc-navigation ' + positionState.classes.value,\n              style: rootStyle\n            },\n            children\n          )\n        )\n        if (props.otherOpts !== false) {\n          root.push(\n            h(\n              'div',\n              {\n                ref: secondRootRef,\n                class: 'vc-location-other-controls ' + positionStateOther.classes.value,\n                style: secondRootStyle\n              },\n              [\n                h(VcStatusBar, {\n                  ref: statusBarRef,\n                  ...otherControlOptions.value.statusBarOpts,\n                  onStatusBarEvt\n                }),\n                h(VcDistanceLegend, {\n                  ref: distanceLegendRef,\n                  ...otherControlOptions.value.distancelegendOpts,\n                  onDistanceLegendEvt\n                })\n              ]\n            )\n          )\n        }\n        return root\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\nexport type VcNavigationEmits = typeof emits\n// export type { VcNavigationOtherOpts, VcNavigationProps } from './defaultProps'\nexport type VcNavigationProps = {\n  /**\n   * Specify the position of the VcNavigation.\n   * Default value: top-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcNavigation horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify the compass options of the component. false means no display.\n   */\n  compassOpts?: false | VcCompassProps\n  /**\n   * Specify the zoom control options of the component. false means no display.\n   */\n  zoomOpts?: false | VcZoomControlProps\n  /**\n   * Specify the print button options of the component. false means no display.\n   */\n  printOpts?: false | VcPrintProps\n  /**\n   * Specify the location button options of the component. false means no display.\n   */\n  locationOpts?: false | VcMyLocationProps\n  /**\n   * Specify the other controls(status bar & distance legend) options of the component. false means no display.\n   */\n  otherOpts?: false | VcNavigationOtherOpts\n  /**\n   * Triggers before the VcNavigation is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcNavigation is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcNavigation is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the zoom control is operated.\n   */\n  onZoomEvt?: (evt: VcZoomEvt) => void\n  /**\n   * Triggers when the compass control is operated.\n   */\n  onCompassEvt?: (evt: VcCompassEvt) => void\n  /**\n   * Triggers when the positioning button is clicked.\n   */\n  onLocationEvt?: (evt: VcLocationEvt) => void\n  /**\n   * Triggers when the print button is clicked.\n   */\n  onPrintEvt?: (evt: VcPrintEvt) => void\n  /**\n   * Triggers when the information changed.\n   */\n  onStatusBarEvt?: (evt: VcStatusBarEvt) => void\n  /**\n   * Triggers when the distance scale changed.\n   */\n  onDistanceLegendEvt?: (evt: VcDistanceLegendEvt) => void\n}\n\nexport interface VcNavigationSlots {\n  /**\n   * Suggestion: VcCompass, VcZoomControl, VcPrint, VcMyLocation, VcStatusBar, VcDistanceLegend\n   */\n  default: () => VNode[]\n}\n","import { ref } from 'vue'\nimport { AnyFunction, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport CameraFlightPath from '../compass/CameraFlightPath'\nimport { getInstanceListener, $ } from '@vue-cesium/utils/private/vm'\nimport { VcTooltip } from '@vue-cesium/components/ui'\nimport { isObject } from '@vue-cesium/utils/util'\n\nexport default function (props, { emit }, vcInstance: VcComponentInternalInstance) {\n  // state\n  const vectorScratch: any = {}\n  const oldTransformScratch: any = {}\n  const newTransformScratch: any = {}\n  const centerScratch: any = {}\n\n  let unsubscribeFromPostRender: AnyFunction<void>\n  let unsubscribeFromClockTick: AnyFunction<void>\n\n  let rotateEastMouseUpFunction: AnyFunction<void>\n  let rotateEastTickFunction: AnyFunction<void>\n\n  const heading = ref(0)\n\n  let isrotateEasting = false\n  let rotateEastLastTimestamp = 0\n\n  let rotateMouseUpFunction: AnyFunction<void>\n  let rotateMouseMoveFunction: AnyFunction<void>\n  let isRotating = false\n  let rotateInitialCursorAngle = 0\n  let rotateFrame: any = {}\n  let rotateIsLook = false\n  let rotateInitialCameraAngle = 0\n  let rotateInitialCameraDistance: any = {}\n\n  let screenSpaceEventHandler: Cesium.ScreenSpaceEventHandler\n\n  let tiltMouseMoveFunction: AnyFunction<void>\n  let tiltMouseUpFunction: AnyFunction<void>\n  let isTilting = false\n  let tiltFrame: any = {}\n  let tiltInitialCursorAngle = 0\n  const tiltbarLeft = ref(56)\n  const tiltbarTop = ref(3)\n  let clickStartPosition\n\n  const tooltipRef = ref<typeof VcTooltip | null>(null)\n\n  // methods\n  const handleMouseDown = (e: Event) => {\n    if (e.stopPropagation) e.stopPropagation()\n    if (e.preventDefault) e.preventDefault()\n\n    $(tooltipRef)?.hide()\n\n    const { Cartesian2, SceneMode, Math: CesiumMath } = Cesium\n    const scene = vcInstance.viewer.scene\n    if (scene.mode === SceneMode.MORPHING) {\n      return true\n    }\n    const compassElement = e.currentTarget as HTMLElement\n    const compassRectangle = (e.currentTarget as HTMLElement).getBoundingClientRect()\n    const center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2.0, (compassRectangle.bottom - compassRectangle.top) / 2.0)\n    let clickLocation\n    if (e instanceof MouseEvent) {\n      clickLocation = new Cartesian2(e.clientX - compassRectangle.left, e.clientY - compassRectangle.top)\n      clickStartPosition = new Cartesian2(e.clientX, e.clientY)\n    } else if (e instanceof TouchEvent) {\n      clickLocation = new Cartesian2(e.changedTouches[0].clientX - compassRectangle.left, e.changedTouches[0].clientY - compassRectangle.top)\n      clickStartPosition = new Cartesian2(e.changedTouches[0].clientX, e.changedTouches[0].clientY)\n    }\n    const vector = Cartesian2.subtract(clickLocation, center, vectorScratch)\n\n    const distanceFromCenter = Cartesian2.magnitude(vector)\n\n    if (distanceFromCenter > 30 && distanceFromCenter < 45) {\n      rotate(compassElement, vector)\n    } else if (!(distanceFromCenter > 50 && distanceFromCenter < 70)) {\n      rotateEast(compassElement, vector)\n    } else {\n      const angle = CesiumMath.PI_OVER_TWO - Math.atan2(-vector.y, vector.x)\n      angle >= 0 && angle <= CesiumMath.PI_OVER_TWO && tilt(compassElement, vector)\n    }\n  }\n\n  const handleMouseUp = event => {\n    const { Cartesian2, Math: CesiumMath } = Cesium\n    const compassRectangle = event.currentTarget.getBoundingClientRect()\n    const center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2.0, (compassRectangle.bottom - compassRectangle.top) / 2.0)\n    const clickLocation =\n      event.type === 'mouseup'\n        ? new Cartesian2(event.clientX - compassRectangle.left, event.clientY - compassRectangle.top)\n        : new Cartesian2(event.changedTouches[0].clientX - compassRectangle.left, event.changedTouches[0].clientY - compassRectangle.top)\n    const vector = Cartesian2.subtract(clickLocation, center, vectorScratch)\n    const magnitude = Cartesian2.magnitude(vector)\n    if (magnitude > 30 && magnitude < 45) {\n      const angle = CesiumMath.toDegrees(Math.atan2(-vector.y, vector.x))\n      const clickStartPositionUp =\n        event.type === 'mouseup'\n          ? new Cartesian2(event.clientX, event.clientY)\n          : new Cartesian2(event.changedTouches[0].clientX, event.changedTouches[0].clientY)\n      const dX = clickStartPositionUp.x - clickStartPosition.x\n      const dY = clickStartPositionUp.y - clickStartPosition.y\n      const distance = Math.sqrt(dX * dX + dY * dY)\n      if (distance > 5) {\n        return\n      }\n      const headingDegree = CesiumMath.toDegrees(heading.value)\n      const m = Math.abs(angle - headingDegree)\n      const scene = vcInstance.viewer.scene\n      if ((angle > 0 && headingDegree > 0 && headingDegree < 90 && m > 80 && m < 100) || (m > 260 && m < 280)) {\n        scene.camera.flyTo({\n          destination: scene.camera.position,\n          orientation: {\n            heading: 0,\n            pitch: scene.camera.pitch\n          }\n        })\n      }\n    }\n  }\n  const handleDoubleClick = e => {\n    const { Cartesian2, Cartesian3, defined, Matrix4, Ray, SceneMode, Transforms } = Cesium\n    const { viewer } = vcInstance\n    const scene = viewer.scene\n    const camera = scene.camera\n    const sscc = scene.screenSpaceCameraController\n\n    if (scene.mode === SceneMode.MORPHING || !sscc.enableInputs) {\n      return true\n    }\n    if (scene.mode === SceneMode.COLUMBUS_VIEW && !sscc.enableTranslate) {\n      return\n    }\n    if (scene.mode === SceneMode.SCENE3D || scene.mode === SceneMode.COLUMBUS_VIEW) {\n      if (!sscc.enableLook) {\n        return\n      }\n\n      if (scene.mode === SceneMode.SCENE3D) {\n        if (!sscc.enableRotate) {\n          return\n        }\n      }\n    }\n\n    const windowPosition = new Cartesian2()\n    windowPosition.x = scene.canvas.clientWidth / 2\n    windowPosition.y = scene.canvas.clientHeight / 2\n    const pickRayScratch = new Ray()\n    const ray = camera.getPickRay(windowPosition, pickRayScratch)\n\n    const center = scene.globe.pick(ray, scene, centerScratch)\n    if (!defined(center)) {\n      // Globe is barely visible, so reset to home view.\n      viewer.camera.flyHome()\n      return\n    }\n\n    const listener = getInstanceListener(vcInstance, 'compassEvt')\n    listener &&\n      emit('compassEvt', {\n        type: 'reset',\n        camera: viewer.camera,\n        status: 'start',\n        target: e.currentTarget\n      })\n    const rotateFrame = Transforms.eastNorthUpToFixedFrame(center || new Cartesian3(), viewer.scene.globe.ellipsoid)\n    const lookVector = Cartesian3.subtract(center || new Cartesian3(), camera.position, new Cartesian3())\n    const flight = CameraFlightPath.createTween(scene, {\n      destination: Matrix4.multiplyByPoint(rotateFrame, new Cartesian3(0.0, 0.0, Cartesian3.magnitude(lookVector)), new Cartesian3()),\n      direction: Matrix4.multiplyByPointAsVector(rotateFrame, new Cartesian3(0.0, 0.0, -1.0), new Cartesian3()),\n      up: Matrix4.multiplyByPointAsVector(rotateFrame, new Cartesian3(0.0, 1.0, 0.0), new Cartesian3()),\n      duration: props.duration,\n      complete: () => {\n        listener &&\n          emit('compassEvt', {\n            type: 'reset',\n            camera: viewer.camera,\n            status: 'end',\n            target: e.currentTarget\n          })\n      },\n      cancel: () => {\n        listener &&\n          emit('compassEvt', {\n            type: 'reset',\n            camera: viewer.camera,\n            status: 'cancel',\n            target: e.currentTarget\n          })\n      }\n    })\n    ;(scene as any).tweens.add(flight)\n  }\n\n  // methods\n  const viewerChange = () => {\n    const { defined } = Cesium\n    if (defined(vcInstance.viewer)) {\n      if (unsubscribeFromPostRender) {\n        unsubscribeFromPostRender()\n        ;(unsubscribeFromPostRender as any) = undefined\n      }\n\n      unsubscribeFromPostRender = vcInstance.viewer.scene.postRender.addEventListener(function () {\n        if (heading.value !== vcInstance.viewer.scene.camera.heading) {\n          heading.value = vcInstance.viewer.scene.camera.heading\n        }\n      })\n    } else {\n      if (unsubscribeFromPostRender) {\n        unsubscribeFromPostRender()\n        ;(unsubscribeFromPostRender as any) = undefined\n      }\n    }\n  }\n\n  const rotateEast = (compassElement: HTMLElement, cursorVector: Cesium.Cartesian2) => {\n    const { defined, getTimestamp, SceneMode, Math: CesiumMath, ScreenSpaceEventType } = Cesium\n    const scene = vcInstance.viewer.scene\n    const sscc = scene.screenSpaceCameraController\n    // do not orbit if it is disabled\n    if (scene.mode === SceneMode.MORPHING || !sscc.enableInputs) {\n      return\n    }\n\n    switch (scene.mode) {\n      case SceneMode.COLUMBUS_VIEW:\n        if (sscc.enableLook) {\n          break\n        }\n        if (!sscc.enableTranslate || !sscc.enableTilt) {\n          return\n        }\n        break\n      case SceneMode.SCENE3D:\n        if (sscc.enableLook) {\n          break\n        }\n        if (!sscc.enableTilt || !sscc.enableRotate) {\n          return\n        }\n        break\n      case Cesium.SceneMode.SCENE2D:\n        if (!sscc.enableTranslate) {\n          return\n        }\n        break\n    }\n\n    screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n    if (defined(rotateEastTickFunction)) {\n      vcInstance.viewer.clock.onTick.removeEventListener(rotateEastTickFunction)\n    }\n\n    ;(rotateEastMouseUpFunction as any) = undefined\n    ;(rotateEastTickFunction as any) = undefined\n\n    isrotateEasting = true\n    rotateEastLastTimestamp = getTimestamp()\n\n    let angle = CesiumMath.PI_OVER_TWO - Math.atan2(-cursorVector.y, cursorVector.x)\n    const quarterPI = Math.PI / 4\n    let roateDirection = 0\n    const roateType = {\n      LEFT: 1,\n      RIGHT: 2,\n      UP: 3,\n      DOWN: 4\n    }\n    roateDirection =\n      angle >= -quarterPI && quarterPI >= angle\n        ? roateType.DOWN\n        : angle >= quarterPI && 3 * quarterPI >= angle\n        ? roateType.RIGHT\n        : angle >= 3 * quarterPI && 5 * quarterPI >= angle\n        ? roateType.UP\n        : roateType.LEFT\n\n    const listener = getInstanceListener(vcInstance, 'compassEvt')\n    let type = `rotateEast`\n    switch (roateDirection) {\n      case roateType.LEFT:\n        type = 'rotateWest'\n        break\n      case roateType.RIGHT:\n        type = 'rotateEast'\n        break\n      case roateType.UP:\n        type = 'rotateNorth'\n        break\n      case roateType.DOWN:\n        type = 'rotateSouth'\n    }\n\n    listener &&\n      emit('compassEvt', {\n        type: type,\n        camera: scene.camera,\n        status: 'start',\n        target: compassElement\n      })\n\n    rotateEastTickFunction = function (e) {\n      const scene = vcInstance.viewer.scene\n      const camera = scene.camera\n      const timestamp = getTimestamp()\n      angle = 20 * Math.abs(camera.positionCartographic.height / 6378317) * 0.0005\n      switch (roateDirection) {\n        case roateType.LEFT:\n          camera.rotateLeft(angle)\n          break\n        case roateType.RIGHT:\n          camera.rotateRight(angle)\n          break\n        case roateType.UP:\n          camera.rotate(camera.right, -angle)\n          break\n        case roateType.DOWN:\n          camera.rotate(camera.right, angle)\n      }\n      rotateEastLastTimestamp = timestamp\n      listener &&\n        emit('compassEvt', {\n          type: type,\n          camera: scene.camera,\n          status: 'changing',\n          target: compassElement\n        })\n    }\n\n    rotateEastMouseUpFunction = function (e) {\n      // TODO: if mouse didn't move, reset view to looking down, north is up?\n\n      isrotateEasting = false\n      screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n      defined(rotateEastTickFunction) && vcInstance.viewer.clock.onTick.removeEventListener(rotateEastTickFunction)\n      ;(rotateEastMouseUpFunction as any) = undefined\n      ;(rotateEastTickFunction as any) = undefined\n\n      listener &&\n        emit('compassEvt', {\n          type: type,\n          camera: scene.camera,\n          status: 'end',\n          target: compassElement\n        })\n    }\n\n    screenSpaceEventHandler.setInputAction(rotateEastMouseUpFunction, ScreenSpaceEventType.LEFT_UP)\n    unsubscribeFromClockTick = vcInstance.viewer.clock.onTick.addEventListener(rotateEastTickFunction)\n  }\n\n  const rotate = (compassElement: HTMLElement, cursorVector: Cesium.Cartesian2) => {\n    if (!props.enableCompassOuterRing) {\n      return\n    }\n\n    const scene = vcInstance.viewer.scene\n    let camera = scene.camera\n    const sscc = scene.screenSpaceCameraController\n    // do not rotate in 2D mode or if rotating is disabled\n    if (scene.mode === Cesium.SceneMode.MORPHING || scene.mode === Cesium.SceneMode.SCENE2D || !sscc.enableInputs) {\n      return\n    }\n    if (!sscc.enableLook && (scene.mode === Cesium.SceneMode.COLUMBUS_VIEW || (scene.mode === Cesium.SceneMode.SCENE3D && !sscc.enableRotate))) {\n      return\n    }\n    // Remove existing event handlers, if any.\n    document.removeEventListener('mousemove', rotateMouseMoveFunction, false)\n    document.removeEventListener('touchmove', rotateMouseMoveFunction, false)\n    document.removeEventListener('mouseup', rotateMouseUpFunction, false)\n    document.removeEventListener('touchend', rotateMouseUpFunction, false)\n    const { Cartesian2, Cartesian3, defined, Math: CesiumMath, Matrix4, Ray, Transforms } = Cesium\n    ;(rotateMouseMoveFunction as any) = undefined\n    ;(rotateMouseUpFunction as any) = undefined\n\n    const listener = getInstanceListener(vcInstance, 'compassEvt')\n    listener &&\n      emit('compassEvt', {\n        type: 'rotate',\n        camera: scene.camera,\n        status: 'start',\n        target: compassElement\n      })\n\n    isRotating = true\n    rotateInitialCursorAngle = Math.atan2(-cursorVector.y, cursorVector.x)\n\n    const windowPosition = new Cartesian2()\n    windowPosition.x = scene.canvas.clientWidth / 2\n    windowPosition.y = scene.canvas.clientHeight / 2\n    const pickRayScratch = new Ray()\n    const ray = camera.getPickRay(windowPosition, pickRayScratch)\n\n    const viewCenter = scene.globe.pick(ray, scene, centerScratch)\n    if (!defined(viewCenter)) {\n      rotateFrame = Transforms.eastNorthUpToFixedFrame(camera.positionWC, scene.globe.ellipsoid, newTransformScratch)\n      rotateIsLook = true\n    } else {\n      rotateFrame = Transforms.eastNorthUpToFixedFrame(viewCenter || new Cartesian3(), scene.globe.ellipsoid, newTransformScratch)\n      rotateIsLook = false\n    }\n\n    let oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)\n    camera.lookAtTransform(rotateFrame)\n    rotateInitialCameraAngle = Math.atan2(camera.position.y, camera.position.x)\n    rotateInitialCameraDistance = Cartesian3.magnitude(new Cartesian3(camera.position.x, camera.position.y, 0.0))\n    camera.lookAtTransform(oldTransform)\n\n    rotateMouseMoveFunction = function (e: MouseEvent | TouchEvent) {\n      const compassRectangle = compassElement.getBoundingClientRect()\n      const center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2.0, (compassRectangle.bottom - compassRectangle.top) / 2.0)\n      let clickLocation\n      if (e instanceof MouseEvent) {\n        clickLocation = new Cartesian2(e.clientX - compassRectangle.left, e.clientY - compassRectangle.top)\n      } else if (e instanceof TouchEvent) {\n        clickLocation = new Cartesian2(e.changedTouches[0].clientX - compassRectangle.left, e.changedTouches[0].clientY - compassRectangle.top)\n      }\n      const vector = Cartesian2.subtract(clickLocation, center, vectorScratch)\n      const angle = Math.atan2(-vector.y, vector.x)\n\n      const angleDifference = angle - rotateInitialCursorAngle\n      const newCameraAngle = CesiumMath.zeroToTwoPi(rotateInitialCameraAngle - angleDifference)\n\n      camera = vcInstance.viewer.scene.camera\n\n      oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)\n      camera.lookAtTransform(rotateFrame)\n      const currentCameraAngle = Math.atan2(camera.position.y, camera.position.x)\n      camera.rotateRight(newCameraAngle - currentCameraAngle)\n      camera.lookAtTransform(oldTransform)\n      listener &&\n        emit('compassEvt', {\n          type: 'rotate',\n          camera: scene.camera,\n          status: 'changing',\n          target: compassElement\n        })\n    }\n\n    rotateMouseUpFunction = function (e) {\n      isRotating = false\n      document.removeEventListener('mousemove', rotateMouseMoveFunction, false)\n      document.removeEventListener('touchmove', rotateMouseMoveFunction, false)\n      document.removeEventListener('mouseup', rotateMouseUpFunction, false)\n      document.removeEventListener('touchend', rotateMouseUpFunction, false)\n      ;(rotateMouseMoveFunction as any) = undefined\n      ;(rotateMouseUpFunction as any) = undefined\n\n      listener &&\n        emit('compassEvt', {\n          type: 'rotate',\n          camera: scene.camera,\n          status: 'end',\n          target: compassElement\n        })\n    }\n\n    document.addEventListener('mousemove', rotateMouseMoveFunction, false)\n    document.addEventListener('touchmove', rotateMouseMoveFunction, false)\n    document.addEventListener('mouseup', rotateMouseUpFunction, false)\n    document.addEventListener('touchend', rotateMouseUpFunction, false)\n  }\n\n  const tilt = (compassElement: HTMLElement, cursorVector: Cesium.Cartesian2) => {\n    const { Cartesian2, defined, Math: CesiumMath, Matrix4, ScreenSpaceEventType, Transforms } = Cesium\n    // Remove existing event handlers, if any.\n    screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.MOUSE_MOVE)\n    screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n    ;(tiltMouseMoveFunction as any) = undefined\n    ;(tiltMouseUpFunction as any) = undefined\n    tiltInitialCursorAngle = CesiumMath.PI_OVER_TWO - Math.atan2(-cursorVector.y, cursorVector.x)\n    tiltInitialCursorAngle = tiltInitialCursorAngle < 0 ? 0 : tiltInitialCursorAngle\n    tiltInitialCursorAngle = tiltInitialCursorAngle > CesiumMath.PI_OVER_TWO ? CesiumMath.PI_OVER_TWO : tiltInitialCursorAngle\n    isTilting = true\n    const scene = vcInstance.viewer.scene\n    const camera = scene.camera\n    const windowPosition = new Cartesian2()\n    windowPosition.x = scene.canvas.clientWidth / 2\n    windowPosition.y = scene.canvas.clientHeight / 2\n    let pickPosition = camera.pickEllipsoid(windowPosition, scene.globe.ellipsoid)\n    if (!defined(pickPosition)) {\n      for (; windowPosition.y < scene.canvas.clientHeight; ) {\n        windowPosition.y += 5\n        pickPosition = camera.pickEllipsoid(windowPosition, scene.globe.ellipsoid)\n      }\n    }\n\n    const listener = getInstanceListener(vcInstance, 'compassEvt')\n    listener &&\n      emit('compassEvt', {\n        type: 'tilt',\n        camera: scene.camera,\n        status: 'start',\n        target: compassElement\n      })\n\n    isObject(pickPosition) && defined(pickPosition) && (tiltFrame = Transforms.eastNorthUpToFixedFrame(pickPosition, scene.globe.ellipsoid))\n    tiltMouseMoveFunction = e => {\n      isTilting = true\n      const compassRectangle = compassElement.getBoundingClientRect()\n      const center = new Cesium.Cartesian2(\n        (compassRectangle.right - compassRectangle.left) / 2.0,\n        (compassRectangle.bottom - compassRectangle.top) / 2.0\n      )\n      const endPosition = Cartesian2.clone(e.endPosition)\n      const vector = Cartesian2.subtract(endPosition, center, vectorScratch)\n      let angle = CesiumMath.PI_OVER_TWO - Math.atan2(-vector.y, vector.x)\n      angle = angle < 0 ? 0 : angle\n      angle = angle > CesiumMath.PI_OVER_TWO ? CesiumMath.PI_OVER_TWO : angle\n      const camera = vcInstance.viewer.scene.camera\n      const oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)\n      camera.lookAtTransform(tiltFrame)\n      const rotateUpAngle = angle - tiltInitialCursorAngle\n      camera.rotateUp(rotateUpAngle)\n      tiltInitialCursorAngle = angle\n      camera.lookAtTransform(oldTransform)\n      let level = Math.ceil(angle / (Math.PI / 40))\n      level = level > 19 ? 19 : level\n      const position = getPoints()[level]\n      tiltbarLeft.value = position.x\n      tiltbarTop.value = position.y\n      listener &&\n        emit('compassEvt', {\n          type: 'tilt',\n          camera: scene.camera,\n          status: 'changing',\n          target: compassElement\n        })\n    }\n\n    tiltMouseUpFunction = function (e) {\n      isTilting = false\n      screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.MOUSE_MOVE)\n      screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n      ;(tiltMouseMoveFunction as any) = undefined\n      ;(tiltMouseUpFunction as any) = undefined\n      listener &&\n        emit('compassEvt', {\n          type: 'tilt',\n          camera: scene.camera,\n          status: 'end',\n          target: compassElement\n        })\n    }\n\n    screenSpaceEventHandler.setInputAction(tiltMouseMoveFunction, ScreenSpaceEventType.MOUSE_MOVE)\n    screenSpaceEventHandler.setInputAction(tiltMouseUpFunction, ScreenSpaceEventType.LEFT_UP)\n  }\n\n  const onTooltipBeforeShow = e => {\n    if (rotateMouseMoveFunction !== undefined) {\n      e.cancel = true\n    }\n  }\n\n  const getTiltbarPosition = () => {\n    const { Math: CesiumMath } = Cesium\n    const pitch = CesiumMath.PI_OVER_TWO + vcInstance.viewer.scene.camera.pitch\n    const length = Math.PI / 2 / 20\n    let level = Math.floor(pitch / length)\n    level = level > 19 ? 19 : level\n    level = level < 0 ? 0 : level\n    tiltbarLeft.value = getPoints()[level].x\n    tiltbarTop.value = getPoints()[level].y\n  }\n\n  const load = async (viewer: Cesium.Viewer, el) => {\n    vcInstance.viewer = viewer\n    heading.value = viewer.scene.camera.heading\n    viewerChange()\n    screenSpaceEventHandler = new Cesium.ScreenSpaceEventHandler(el)\n    getTiltbarPosition()\n    return true\n  }\n\n  const unload = async () => {\n    document.removeEventListener('mousemove', rotateMouseMoveFunction, false)\n    document.removeEventListener('touchmove', rotateMouseMoveFunction, false)\n    document.removeEventListener('mouseup', rotateMouseUpFunction, false)\n    document.removeEventListener('touchend', rotateMouseUpFunction, false)\n\n    unsubscribeFromClockTick && unsubscribeFromClockTick()\n    unsubscribeFromPostRender && unsubscribeFromPostRender()\n    screenSpaceEventHandler?.destroy()\n    return true\n  }\n\n  return {\n    heading,\n    handleDoubleClick,\n    handleMouseDown,\n    handleMouseUp,\n    onTooltipBeforeShow,\n    viewerChange,\n    load,\n    unload,\n    tiltbarLeft,\n    tiltbarTop,\n    tooltipRef\n  }\n}\n\nfunction getPoints() {\n  return [\n    {\n      x: 56,\n      y: 3\n    },\n    {\n      x: 59,\n      y: 4\n    },\n    {\n      x: 64,\n      y: 5\n    },\n    {\n      x: 69,\n      y: 6\n    },\n    {\n      x: 74,\n      y: 7\n    },\n    {\n      x: 79,\n      y: 9\n    },\n    {\n      x: 84,\n      y: 12\n    },\n    {\n      x: 89,\n      y: 15\n    },\n    {\n      x: 92,\n      y: 19\n    },\n    {\n      x: 94,\n      y: 20\n    },\n    {\n      x: 99,\n      y: 25\n    },\n    {\n      x: 104,\n      y: 34\n    },\n    {\n      x: 106,\n      y: 40\n    },\n    {\n      x: 107,\n      y: 44\n    },\n    {\n      x: 107,\n      y: 46\n    },\n    {\n      x: 107,\n      y: 48\n    },\n    {\n      x: 107,\n      y: 50\n    },\n    {\n      x: 107,\n      y: 52\n    },\n    {\n      x: 107,\n      y: 54\n    },\n    {\n      x: 107,\n      y: 56\n    }\n  ]\n}\n","import type { ExtractPropTypes, VNode, CSSProperties, PropType } from 'vue'\nimport { defineComponent, getCurrentInstance, ref, computed, nextTick, watch, reactive, createCommentVNode, h } from 'vue'\nimport usePosition, { positionProps } from '@vue-cesium/composables/private/use-position'\nimport type { VcCompassEvt, VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { $, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport { hMergeSlot } from '@vue-cesium/utils/private/render'\nimport { VcTooltip, VcTooltipProps } from '@vue-cesium/components/ui'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport useCompass from './use-compass'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const compassSmProps = {\n  enableCompassOuterRing: {\n    type: Boolean,\n    default: true\n  },\n  duration: {\n    type: Number,\n    default: 1.5\n  },\n  tooltip: {\n    type: [Boolean, Object] as PropType<false | VcTooltipProps>,\n    default: () =>\n      ({\n        delay: 500,\n        anchor: 'bottom middle',\n        offset: [0, 20],\n        tip: void 0\n      } as VcTooltipProps | false)\n  },\n  autoHidden: {\n    type: Boolean,\n    default: true\n  },\n  ...positionProps\n}\nconst emits = {\n  ...commonEmits,\n  compassEvt: (evt: VcCompassEvt) => true\n}\nexport default defineComponent({\n  name: 'VcCompassSm',\n  props: compassSmProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcCompassSm'\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { t } = useLocale()\n    const parentInstance = getVcParentInstance(instance)\n    const { $services } = commonState\n    const compassState = useCompass(props, ctx, instance)\n    const positionState = usePosition(props, $services)\n    const rootRef = ref<HTMLElement | null>(null)\n    const outerRingRef = ref<HTMLElement | null>(null)\n    const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigationSm'\n    const canRender = ref(hasVcNavigation)\n    const rootStyle = reactive<CSSProperties>({})\n    // watch\n    watch(\n      () => props,\n      val => {\n        nextTick(() => {\n          if (!instance.mounted) {\n            return\n          }\n          updateRootStyle()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n    // computed\n    const tiltbarStyle = computed<CSSProperties>(() => {\n      return {\n        left: compassState.tiltbarLeft.value + 'px',\n        top: compassState.tiltbarTop.value + 'px',\n        visibility: props.autoHidden ? 'hidden' : 'visible'\n      }\n    })\n    const visibilityStyle = computed<CSSProperties>(() => {\n      return {\n        visibility: props.autoHidden ? 'hidden' : 'visible'\n      }\n    })\n    const outerRingStyle = computed<CSSProperties>(() => {\n      return {\n        transform: 'rotate(-' + compassState.heading.value + 'rad)',\n        WebkitTransform: 'rotate(-' + compassState.heading.value + 'rad)'\n      }\n    })\n    // methods\n    instance.createCesiumObject = async () => {\n      canRender.value = true\n      const { viewer } = $services\n      return new Promise((resolve, reject) => {\n        nextTick(() => {\n          if (!hasVcNavigation) {\n            const viewerElement = (viewer as any)._element\n            viewerElement.appendChild($(rootRef))\n            resolve($(rootRef))\n          } else {\n            resolve($(rootRef))\n          }\n        })\n      })\n    }\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)\n      })\n      return compassState.load($services.viewer, $(rootRef))\n    }\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element\n      if (!hasVcNavigation) {\n        viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n      }\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)\n      })\n      return compassState.unload()\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n      const side = positionState.attach.value\n      const outerRingTarget = $(outerRingRef)\n      if (outerRingTarget !== void 0) {\n        const clientRect = outerRingTarget?.getBoundingClientRect()\n        css.width = `${clientRect?.width}px`\n        css.height = `${clientRect?.height}px`\n\n        if ((side.bottom || side.top) && !side.left && !side.right) {\n          css.left = '50%'\n          css.transform = 'translate(-50%, 0)'\n        }\n\n        if ((side.left || side.right) && !side.top && !side.bottom) {\n          css.top = '50%'\n          css.transform = 'translate(0, -50%)'\n        }\n      }\n\n      Object.assign(rootStyle, css)\n    }\n\n    return () => {\n      if (canRender.value) {\n        let children: Array<VNode> = []\n        children = hMergeSlot(ctx.slots.default, children)\n        children.push(\n          h('div', {\n            class: 'vc-compass-tilt-sm',\n            style: visibilityStyle.value\n          })\n        )\n        children.push(\n          h('div', {\n            class: 'vc-compass-tiltbar-sm',\n            style: tiltbarStyle.value\n          })\n        )\n        children.push(\n          h('div', {\n            class: 'vc-compass-arrows-sm',\n            style: visibilityStyle.value\n          })\n        )\n        children.push(\n          h(\n            'div',\n            {\n              ref: outerRingRef,\n              class: 'vc-compass-outer-ring-sm',\n              style: outerRingStyle.value\n            },\n            props.tooltip\n              ? h(\n                  VcTooltip,\n                  {\n                    ref: compassState.tooltipRef,\n                    ...props.tooltip,\n                    onBeforeShow: compassState.onTooltipBeforeShow\n                  },\n                  () => h('strong', {}, (props.tooltip as any).tip || t('vc.navigationSm.compass.outerTip'))\n                )\n              : createCommentVNode('v-if')\n          )\n        )\n        children.push(\n          h('div', {\n            class: 'vc-arrows-e-sm',\n            style: visibilityStyle.value\n          })\n        )\n        children.push(\n          h('div', {\n            class: 'vc-arrows-n-sm',\n            style: visibilityStyle.value\n          })\n        )\n        children.push(\n          h('div', {\n            class: 'vc-arrows-s-sm',\n            style: visibilityStyle.value\n          })\n        )\n        children.push(\n          h('div', {\n            class: 'vc-arrows-w-sm',\n            style: visibilityStyle.value\n          })\n        )\n\n        return h(\n          'div',\n          {\n            ref: rootRef,\n            class: 'vc-compass-sm ' + positionState.classes.value,\n            style: rootStyle,\n            onDblclick: compassState.handleDoubleClick,\n            onMousedown: compassState.handleMouseDown,\n            onMouseup: compassState.handleMouseUp,\n            onTouchend: compassState.handleMouseUp,\n            onTouchstart: compassState.handleMouseDown\n          },\n          children\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\n// export type VcCompassSmProps = ExtractPropTypes<typeof compassSmProps>\nexport type VcCompassSmEmits = typeof emits\nexport type VcCompassSmProps = {\n  /**\n   * Specify the position of the VcCompassSm.\n   * Default value: top-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcCompassSm horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify whether the outer ring of the compass can be operated.\n   * Default value: true\n   */\n  enableCompassOuterRing?: boolean\n  /**\n   * Specify the flight time of double-clicking the compass to restore the pitch angle, in seconds.\n   * Default value: 1.5\n   */\n  duration?: number\n  /**\n   * Specify the compass prompt information.\n   */\n  tooltip?: false | VcTooltipProps\n  /**\n   * Specify whether to automatically hide parts of the compass controls.\n   * Default value: true\n   */\n  autoHidden?: boolean\n  /**\n   * Triggers before the VcNavigationSm is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcNavigationSm is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcNavigationSm is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the compass control is operated.\n   */\n  compassEvt?: (evt: VcCompassEvt) => void\n}\n","import { AnyFunction, VcComponentInternalInstance, VcViewerProvider } from '@vue-cesium/utils/types'\nimport { $, getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { ref } from 'vue'\nimport { VcTooltip } from '@vue-cesium/components/ui'\nimport { isObject } from '@vue-cesium/utils/util'\n\nexport default function (props, { emit }, vcInstance: VcComponentInternalInstance, $services: VcViewerProvider) {\n  // state\n  const zoombarTop = ref(65)\n  const zoomInTooltipRef = ref<typeof VcTooltip | null>(null)\n  const zoomOutTooltipRef = ref<typeof VcTooltip | null>(null)\n  const zoomBarTooltipRef = ref<typeof VcTooltip | null>(null)\n  let screenSpaceEventHandler: Cesium.ScreenSpaceEventHandler\n\n  let zoominTickFunction: AnyFunction<void>\n  let zoominMouseUpFunction: AnyFunction<void>\n  let isZoomin = false\n  let zoominLastTimestamp = 0\n  let unsubscribeFromClockTickZoomin: AnyFunction<void>\n\n  let zoomoutTickFunction: AnyFunction<void>\n  let zoomoutMouseUpFunction: AnyFunction<void>\n  let iszoomout = false\n  let zoomoutLastTimestamp = 0\n  let unsubscribeFromClockTickZoomout: AnyFunction<void>\n\n  let zoomBarScrollMouseMoveFunction: AnyFunction<void>\n  let zoomBarScrollMouseUpFunction: AnyFunction<void>\n  let zoombarTickFunction: AnyFunction<void>\n  let isZoomBarScrolling = false\n  let unsubscribeFromClockTickZoomBar: AnyFunction<void>\n  let container: HTMLElement\n\n  // methods\n  const handleZoomInMouseDown = e => {\n    const { defined, getTimestamp, SceneMode, ScreenSpaceEventType } = Cesium\n    const { viewer } = $services\n    $(zoomInTooltipRef)?.hide()\n    $(zoomOutTooltipRef)?.hide()\n    $(zoomBarTooltipRef)?.hide()\n    screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n    defined(zoominTickFunction) && viewer.clock.onTick.removeEventListener(zoominTickFunction)\n    ;(zoominMouseUpFunction as any) = undefined\n    ;(zoominTickFunction as any) = undefined\n    isZoomin = true\n    zoominLastTimestamp = getTimestamp()\n    const scene = viewer.scene\n    const camera = scene.camera\n    zoominTickFunction = () => {\n      viewer.scene.mode === SceneMode.COLUMBUS_VIEW ? camera.zoomIn() : handlezoom(1)\n    }\n\n    zoominMouseUpFunction = () => {\n      isZoomin = false\n      screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n      defined(zoominTickFunction) && viewer.clock.onTick.removeEventListener(zoominTickFunction)\n      ;(zoominMouseUpFunction as any) = undefined\n      ;(zoominTickFunction as any) = undefined\n    }\n\n    screenSpaceEventHandler.setInputAction(zoominMouseUpFunction, ScreenSpaceEventType.LEFT_UP)\n    unsubscribeFromClockTickZoomin = viewer.clock.onTick.addEventListener(zoominTickFunction)\n  }\n\n  const handleZoomOutMouseDown = event => {\n    $(zoomInTooltipRef)?.hide()\n    $(zoomOutTooltipRef)?.hide()\n    $(zoomBarTooltipRef)?.hide()\n    const { defined, getTimestamp, SceneMode, ScreenSpaceEventType } = Cesium\n    const { viewer } = $services\n    screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n    defined(zoomoutTickFunction) && viewer.clock.onTick.removeEventListener(zoomoutTickFunction)\n    ;(zoomoutMouseUpFunction as any) = undefined\n    ;(zoomoutTickFunction as any) = undefined\n    iszoomout = false\n    zoomoutLastTimestamp = getTimestamp()\n    const scene = viewer.scene\n    const camera = scene.camera\n    zoomoutTickFunction = () => {\n      viewer.scene.mode === SceneMode.COLUMBUS_VIEW ? camera.zoomOut() : handlezoom(-1)\n    }\n\n    zoomoutMouseUpFunction = () => {\n      iszoomout = false\n      screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n      defined(zoomoutTickFunction) && viewer.clock.onTick.removeEventListener(zoomoutTickFunction)\n      ;(zoomoutMouseUpFunction as any) = undefined\n      ;(zoomoutTickFunction as any) = undefined\n    }\n\n    screenSpaceEventHandler.setInputAction(zoomoutMouseUpFunction, ScreenSpaceEventType.LEFT_UP)\n    unsubscribeFromClockTickZoomout = viewer.clock.onTick.addEventListener(zoomoutTickFunction)\n  }\n\n  const handleZoomBarScrollMouseDown = event => {\n    $(zoomInTooltipRef)?.hide()\n    $(zoomOutTooltipRef)?.hide()\n    $(zoomBarTooltipRef)?.hide()\n    const { Cartesian2, defined, SceneMode } = Cesium\n    const { viewer } = $services\n    document.removeEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n    document.removeEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n    document.removeEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n    document.removeEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n    defined(zoombarTickFunction) && viewer.clock.onTick.removeEventListener(zoombarTickFunction)\n    ;(zoomBarScrollMouseUpFunction as any) = undefined\n    ;(zoombarTickFunction as any) = undefined\n    isZoomBarScrolling = true\n    const scene = viewer.scene\n    const camera = scene.camera\n\n    zoombarTickFunction = () => {\n      const zoomOffset = zoombarTop.value - 65\n      if (zoomOffset > 0) {\n        if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW) {\n          camera.zoomOut()\n        } else {\n          handlezoom(-1)\n        }\n      } else if (zoomOffset < 0) {\n        if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW) {\n          camera.zoomIn()\n        } else {\n          handlezoom(1)\n        }\n      }\n    }\n    zoomBarScrollMouseMoveFunction = e => {\n      const zoombarTopMove = zoombarTop.value\n      const clientRect = e.target.parentElement.getBoundingClientRect()\n      const rectNavigation = container.getBoundingClientRect()\n      const endPosition = new Cesium.Cartesian2()\n      endPosition.x = e.type === 'touchmove' ? e.changedTouches[0].clientX - rectNavigation.left : e.clientX - rectNavigation.left\n      endPosition.y = e.type === 'touchmove' ? e.changedTouches[0].clientY - rectNavigation.top : e.clientY - rectNavigation.top\n      const padding = new Cartesian2(clientRect.width - endPosition.x, clientRect.height - endPosition.y)\n      let offset = padding.y - 16\n      offset = offset < 0 ? 0 : offset\n      offset = offset > 120 ? 120 : offset\n      zoombarTop.value = 120 - offset\n\n      const zoomFlag = zoombarTop.value - zoombarTopMove\n      if (zoomFlag > 0) {\n        if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW) {\n          camera.zoomOut()\n        } else {\n          handlezoom(-1)\n        }\n      } else {\n        if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW) {\n          camera.zoomIn()\n        } else {\n          handlezoom(1)\n        }\n      }\n    }\n\n    zoomBarScrollMouseUpFunction = () => {\n      isZoomBarScrolling = false\n      document.removeEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n      document.removeEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n      document.removeEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n      document.removeEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n      defined(zoombarTickFunction) && viewer.clock.onTick.removeEventListener(zoombarTickFunction)\n      ;(zoomBarScrollMouseUpFunction as any) = undefined\n      ;(zoomBarScrollMouseMoveFunction as any) = undefined\n      ;(zoombarTickFunction as any) = undefined\n      zoombarTop.value = 65\n    }\n    document.addEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n    document.addEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n    document.addEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n    document.addEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n    unsubscribeFromClockTickZoomBar = viewer.clock.onTick.addEventListener(zoombarTickFunction)\n  }\n\n  const handlezoom = i => {\n    const { Cartesian2, Cartesian3, defined, Ellipsoid, Math } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const camera = scene.camera\n    const canvas = scene.canvas\n    const centerPixel = new Cartesian2()\n    centerPixel.x = canvas.clientWidth / 2\n    centerPixel.y = canvas.clientHeight / 2\n    const centerPosition = pickGlobe(centerPixel)\n    if (defined(centerPosition)) {\n      const distance = Cartesian3.distance(camera.position, centerPosition)\n      let factor = 0.0618 * i * 0.2\n      factor = distance > 300 ? factor : 2 * factor\n      const amount = distance * factor\n      const direction = new Cartesian3()\n      Cartesian3.subtract(centerPosition, camera.position, direction)\n      const cameraRight = Cartesian3.clone(camera.right)\n      const dot = Cartesian3.dot(direction, cameraRight)\n      const movementVector = new Cartesian3()\n      Cartesian3.multiplyByScalar(cameraRight, dot, movementVector)\n      Cartesian3.subtract(direction, movementVector, direction)\n      Cartesian3.normalize(direction, direction)\n      camera.move(direction, amount)\n      const centerPositionNormal = new Cartesian3()\n      Cartesian3.normalize(centerPosition, centerPositionNormal)\n\n      const pickPosition = camera.pickEllipsoid(centerPixel, viewer.scene.globe.ellipsoid)\n      if (\n        isObject(pickPosition) &&\n        defined(pickPosition) &&\n        !isNaN(pickPosition.x) &&\n        !isNaN(pickPosition.y) &&\n        !isNaN(pickPosition.z) &&\n        !(camera.positionCartographic.height < 0)\n      ) {\n        Cartesian3.normalize(pickPosition, pickPosition)\n        const angle = Cartesian3.angleBetween(centerPositionNormal, pickPosition)\n        if (!Math.equalsEpsilon(angle, 0, Math.EPSILON10)) {\n          const axis = Cartesian3.cross(centerPositionNormal, pickPosition, new Cartesian3())\n          camera.rotate(axis, angle)\n          const listener = getInstanceListener(vcInstance, 'zoomEvt')\n          listener &&\n            emit('zoomEvt', {\n              type: i === 1 ? 'zoomIn' : 'zoomOut',\n              camera: viewer.camera,\n              status: 'end'\n            })\n        }\n      }\n    }\n  }\n\n  const pickGlobe = mousePosition => {\n    const { defined, Cartesian3 } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const globe = scene.globe\n    const camera = scene.camera\n    if (defined(globe)) {\n      let depthIntersection\n      if (scene.pickPositionSupported) {\n        depthIntersection = scene.pickPositionWorldCoordinates(mousePosition)\n      }\n      const ray = camera.getPickRay(mousePosition)\n      const rayIntersection = globe.pick(ray, scene)\n      const pickDistance = defined(depthIntersection) ? Cartesian3.distance(depthIntersection, camera.positionWC) : Number.POSITIVE_INFINITY\n      const rayDistance =\n        isObject(rayIntersection) && defined(rayIntersection) ? Cartesian3.distance(rayIntersection, camera.positionWC) : Number.POSITIVE_INFINITY\n      return rayDistance > pickDistance ? depthIntersection : rayIntersection\n    }\n  }\n\n  const onTooltipBeforeShow = e => {\n    if (zoomBarScrollMouseMoveFunction !== undefined || zoominTickFunction !== undefined || zoomoutTickFunction !== undefined) {\n      e.cancel = true\n    }\n  }\n\n  const load = el => {\n    container = el\n    screenSpaceEventHandler = new Cesium.ScreenSpaceEventHandler(el)\n    return true\n  }\n\n  const unload = () => {\n    document.removeEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n    document.removeEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n    document.removeEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n    document.removeEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n    unsubscribeFromClockTickZoomin?.()\n    unsubscribeFromClockTickZoomout?.()\n    unsubscribeFromClockTickZoomBar?.()\n    screenSpaceEventHandler?.destroy()\n    return true\n  }\n\n  return {\n    handleZoomInMouseDown,\n    handleZoomOutMouseDown,\n    handleZoomBarScrollMouseDown,\n    load,\n    unload,\n    zoombarTop,\n    zoomInTooltipRef,\n    zoomOutTooltipRef,\n    zoomBarTooltipRef,\n    onTooltipBeforeShow\n  }\n}\n","import type { ExtractPropTypes, VNode, CSSProperties } from 'vue'\nimport { computed, defineComponent, getCurrentInstance, nextTick, ref, createCommentVNode, h, reactive, watch } from 'vue'\nimport type { VcComponentInternalInstance, VcZoomEvt } from '@vue-cesium/utils/types'\nimport usePosition, { positionProps } from '@vue-cesium/composables/private/use-position'\nimport { $, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport { hMergeSlot } from '@vue-cesium/utils/private/render'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport useZoomControl from './use-zoom-control'\nimport { VcTooltip, VcTooltipProps } from '@vue-cesium/components/ui'\nimport { isObject } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const zoomControlSmProps = {\n  ...positionProps,\n  autoHidden: {\n    type: Boolean,\n    default: false\n  },\n  tooltip: {\n    type: Object,\n    default: () => ({\n      delay: 1000,\n      anchor: 'bottom middle',\n      offset: [0, 20],\n      zoomInTip: void 0,\n      zoomOutTip: void 0,\n      zoomBarTip: void 0\n    })\n  }\n}\nconst emits = {\n  ...commonEmits,\n  zoomEvt: (evt: VcZoomEvt) => true\n}\nexport default defineComponent({\n  name: 'VcZoomControlSm',\n  props: zoomControlSmProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcZoomControlSm'\n    instance.cesiumEvents = []\n    const rootRef = ref<HTMLElement | null>(null)\n    const zoomInRef = ref<HTMLElement | null>(null)\n    const zoomBarRef = ref<HTMLElement | null>(null)\n    const zoomOutRef = ref<HTMLElement | null>(null)\n    const parentInstance = getVcParentInstance(instance)\n    const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigationSm'\n    const canRender = ref(hasVcNavigation)\n    const rootStyle = reactive<CSSProperties>({})\n    const commonState = useCommon(props, ctx, instance)\n\n    if (commonState === void 0) {\n      return\n    }\n    const { t } = useLocale()\n    const { $services } = commonState\n    const positionState = usePosition(props, $services)\n    const zoomControlState = useZoomControl(props, ctx, instance, $services)\n\n    // watch\n    watch(\n      () => props,\n      val => {\n        nextTick(() => {\n          if (!instance.mounted) {\n            return\n          }\n          updateRootStyle()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n    // computed\n    const zoombarStyle = computed(() => ({ top: zoomControlState.zoombarTop.value + 'px' }))\n    // methods\n    instance.createCesiumObject = async () => {\n      return new Promise((resolve, reject) => {\n        canRender.value = true\n        nextTick(() => {\n          const rootEl = $(rootRef)\n          const { viewer } = $services\n          if (!hasVcNavigation) {\n            const viewerElement = viewer._element\n            isObject(rootEl) && viewerElement?.appendChild(rootEl)\n            resolve(rootEl)\n          } else {\n            resolve(rootEl)\n          }\n        })\n      })\n    }\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)\n      })\n      return zoomControlState.load($(rootRef))\n    }\n    instance.unmount = async () => {\n      const { viewer } = $services\n      if (!hasVcNavigation) {\n        const viewerElement = viewer._element\n        const rootEl = $(rootRef)\n        isObject(rootEl) && viewerElement?.contains(rootEl) && viewerElement.removeChild(rootEl)\n      }\n\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)\n      })\n\n      return zoomControlState.unload()\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n      rootStyle.visibility = props.autoHidden ? 'hidden' : 'visible'\n\n      if (!hasVcNavigation) {\n        const side = positionState.attach.value\n        if ((side.bottom || side.top) && !side.left && !side.right) {\n          css.left = '50%'\n          css.transform = 'translate(-50%, 0)'\n        }\n\n        if ((side.left || side.right) && !side.top && !side.bottom) {\n          css.top = '50%'\n          css.transform = 'translate(0, -50%)'\n        }\n      }\n      Object.assign(rootStyle, css)\n    }\n\n    return () => {\n      if (canRender.value) {\n        let children: Array<VNode> = []\n        children = hMergeSlot(ctx.slots.default, children)\n        children.push(\n          h(\n            'div',\n            {\n              ref: zoomInRef,\n              class: 'vc-zoomin-sm',\n              onMousedown: zoomControlState.handleZoomInMouseDown,\n              onTouchstart: zoomControlState.handleZoomInMouseDown\n            },\n            props.tooltip\n              ? h(\n                  VcTooltip,\n                  {\n                    ref: zoomControlState.zoomInTooltipRef,\n                    ...props.tooltip,\n                    onBeforeShow: zoomControlState.onTooltipBeforeShow\n                  },\n                  () => h('strong', {}, props.tooltip.zoomInTip || t('vc.navigationSm.zoomCotrol.zoomInTip'))\n                )\n              : createCommentVNode('v-if')\n          )\n        )\n\n        children.push(\n          h(\n            'div',\n            {\n              ref: zoomOutRef,\n              class: 'vc-zoomout-sm',\n              onMousedown: zoomControlState.handleZoomOutMouseDown,\n              onTouchstart: zoomControlState.handleZoomOutMouseDown\n            },\n            props.tooltip\n              ? h(\n                  VcTooltip,\n                  {\n                    ref: zoomControlState.zoomInTooltipRef,\n                    ...props.tooltip,\n                    onBeforeShow: zoomControlState.onTooltipBeforeShow\n                  },\n                  () => h('strong', {}, props.tooltip.zoomOutTip || t('vc.navigationSm.zoomCotrol.zoomOutTip'))\n                )\n              : createCommentVNode('v-if')\n          )\n        )\n\n        children.push(\n          h(\n            'div',\n            {\n              ref: zoomBarRef,\n              class: 'vc-zoombar-sm',\n              style: zoombarStyle.value,\n              onMousedown: zoomControlState.handleZoomBarScrollMouseDown,\n              onTouchstart: zoomControlState.handleZoomBarScrollMouseDown\n            },\n            props.tooltip\n              ? h(\n                  VcTooltip,\n                  {\n                    ref: zoomControlState.zoomInTooltipRef,\n                    ...props.tooltip,\n                    onBeforeShow: zoomControlState.onTooltipBeforeShow\n                  },\n                  () => h('strong', {}, props.tooltip.zoomBarTip || t('vc.navigationSm.zoomCotrol.zoomBarTip'))\n                )\n              : createCommentVNode('v-if')\n          )\n        )\n\n        return h(\n          'div',\n          {\n            ref: rootRef,\n            class: 'vc-zoom-control-sm ' + positionState.classes.value,\n            style: rootStyle\n          },\n          children\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\n// export type VcZoomControlSmProps = ExtractPropTypes<typeof zoomControlSmProps>\nexport type VcZoomControlSmEmits = typeof emits\nexport type VcZoomControlSmProps = {\n  /**\n   * Specify the position of the VcZoomControlSm.\n   * Default value: top-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcZoomControlSm horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify whether the outer ring of the compass can be operated.\n   * Default value: true\n   */\n  /**\n   * Specify whether to automatically hide the zoom control.\n   * Default value: true\n   */\n  autoHidden?: boolean\n  /**\n   * Specify the compass prompt information.\n   */\n  tooltip?: false | (VcTooltipProps & { zoomInTip: string; zoomOutTip: string; zoomBarTip: string })\n}\n","import type { ExtractPropTypes, CSSProperties, VNode, PropType } from 'vue'\nimport { defineComponent, getCurrentInstance, watch, nextTick, ref, reactive, h, createCommentVNode, computed } from 'vue'\nimport type { VcCompassEvt, VcComponentInternalInstance, VcReadyObject, VcZoomEvt } from '@vue-cesium/utils/types'\nimport usePosition, { positionProps } from '@vue-cesium/composables/private/use-position'\nimport { $, getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { hMergeSlot } from '@vue-cesium/utils/private/render'\nimport { useCommon } from '@vue-cesium/composables'\nimport VcCompassSm, { VcCompassSmProps } from './compass-sm'\nimport VcZoomControlSm, { VcZoomControlSmProps } from './zoom-control-sm'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst compassOptsDefault = {\n  enableCompassOuterRing: true,\n  duration: 1.5,\n  autoHidden: true,\n  tooltip: {\n    delay: 1000,\n    anchor: 'bottom middle',\n    offset: [0, 20],\n    tip: void 0\n  }\n}\n\nconst zoomOptsDefault = {\n  autoHidden: true,\n  tooltip: {\n    delay: 1000,\n    anchor: 'bottom middle',\n    offset: [0, 20],\n    tip: void 0\n  }\n}\n\nexport const navigationSmProps = {\n  ...positionProps,\n  compassOpts: {\n    type: [Boolean, Object] as PropType<false | VcCompassSmProps>,\n    default: () => compassOptsDefault as VcCompassSmProps\n  },\n  zoomOpts: {\n    type: [Boolean, Object] as PropType<false | VcZoomControlSmProps>,\n    default: () => zoomOptsDefault as VcZoomControlSmProps\n  }\n}\nconst emits = {\n  ...commonEmits,\n  zoomEvt: (evt: VcZoomEvt) => true,\n  compassEvt: (evt: VcCompassEvt) => true\n}\nexport default defineComponent({\n  name: 'VcNavigationSm',\n  inheritAttrs: false,\n  props: navigationSmProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcNavigationSm'\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n\n    const canRender = ref(false)\n    const { $services } = commonState\n    const positionState = usePosition(props, $services)\n    const rootRef = ref<HTMLElement | null>(null)\n    const compassRef = ref<typeof VcCompassSm | null>(null)\n    const zoomControlRef = ref<typeof VcZoomControlSm | null>(null)\n    const rootStyle = reactive<CSSProperties>({})\n    const { emit } = ctx\n    // watch\n    watch(\n      () => props,\n      () => {\n        nextTick(() => {\n          updateRootStyle()\n          $(compassRef)?.reload()\n          $(zoomControlRef)?.reload()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n    // computed\n    const compassOptions = computed(() => Object.assign({}, compassOptsDefault, props.compassOpts))\n    const zoomControlOptions = computed(() => Object.assign({}, zoomOptsDefault, props.zoomOpts))\n\n    // methods\n    const onCompassEvt = e => {\n      const listener = getInstanceListener(instance, 'compassEvt')\n      listener && emit('compassEvt', e)\n    }\n    const onZoomEvt = e => {\n      const listener = getInstanceListener(instance, 'zoomEvt')\n      listener && emit('zoomEvt', e)\n    }\n\n    instance.createCesiumObject = async () => {\n      canRender.value = true\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.addEventListener(onViewerWidgetResized)\n      return new Promise((resolve, reject) => {\n        nextTick(() => {\n          const viewerElement = (viewer as any)._element\n          viewerElement.appendChild($(rootRef))\n          resolve($(rootRef))\n        })\n      })\n    }\n\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)\n      })\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element\n      viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n      viewer.viewerWidgetResized?.removeEventListener(onViewerWidgetResized)\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)\n      })\n      return true\n    }\n\n    const onViewerWidgetResized = () => {\n      nextTick(() => {\n        updateRootStyle()\n      })\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      const side = positionState.attach.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n\n      if ((side.bottom || side.top) && !side.left && !side.right) {\n        css.left = '50%'\n        css.transform = 'translate(-50%, 0)'\n      }\n\n      if ((side.left || side.right) && !side.top && !side.bottom) {\n        css.top = '50%'\n        css.transform = 'translate(0, -50%)'\n      }\n\n      Object.assign(rootStyle, css)\n    }\n\n    return () => {\n      if (canRender.value) {\n        let children: Array<VNode> = []\n        children = hMergeSlot(ctx.slots.default, children)\n        if (compassOptions.value && props.compassOpts !== false) {\n          children.push(\n            h(VcCompassSm, {\n              ref: compassRef,\n              onCompassEvt: onCompassEvt,\n              ...compassOptions.value\n            })\n          )\n        }\n        if (zoomControlOptions.value && props.zoomOpts !== false) {\n          children.push(\n            h(VcZoomControlSm, {\n              ref: zoomControlRef,\n              onZoomEvt: onZoomEvt,\n              ...zoomControlOptions.value\n            })\n          )\n        }\n        return h(\n          'div',\n          {\n            ref: rootRef,\n            class: 'vc-navigation-sm ' + positionState.classes.value,\n            style: rootStyle\n          },\n          children\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\n// export type VcNavigationSmProps = ExtractPropTypes<typeof navigationSmProps>\nexport type VcNavigationSmEmits = typeof emits\nexport type VcNavigationSmProps = {\n  /**\n   * Specify the position of the VcNavigationSm.\n   * Default value: top-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcNavigationSm horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify the compass options of the component. false means no display.\n   */\n  compassOpts?: false | VcCompassSmProps\n  /**\n   * Specify the zoom control options of the component. false means no display.\n   */\n  zoomOpts?: false | VcZoomControlSmProps\n  /**\n   * Triggers before the VcNavigationSm is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcNavigationSm is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcNavigationSm is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the zoom control is operated.\n   */\n  onZoomEvt?: (evt: VcZoomEvt) => void\n  /**\n   * Triggers when the compass control is operated.\n   */\n  onCompassEvt?: (evt: VcCompassEvt) => void\n}\n\nexport interface VcNavigationSmSlots {\n  /**\n   * Suggestion: VcCompassSm, VcZoomControlSm\n   */\n  default: () => VNode[]\n}\n","import type { ExtractPropTypes, VNode, WatchStopHandle, CSSProperties, PropType } from 'vue'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport { VcBtn, VcTooltip } from '@vue-cesium/components/ui'\nimport { $ } from '@vue-cesium/utils/private/vm'\nimport type { VcBtnTooltipProps, VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, reactive, ref } from 'vue'\nimport VcViewer, { VcViewerProps } from '@vue-cesium/components/viewer'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const overviewProps = {\n  position: {\n    type: String as PropType<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'>,\n    default: 'bottom-right',\n    validator: (v: string) => ['top-right', 'top-left', 'bottom-right', 'bottom-left'].includes(v)\n  },\n  offset: {\n    type: Array,\n    validator: (v: Array<string>) => v.length === 2\n  },\n  width: {\n    type: String,\n    default: '150px'\n  },\n  height: {\n    type: String,\n    default: '150px'\n  },\n  border: {\n    type: String,\n    default: 'solid 4px rgb(255, 255, 255)'\n  },\n  borderRadius: {\n    type: String\n  },\n  toggleOpts: {\n    type: Object as PropType<VcBtnTooltipProps & { show: boolean }>\n  },\n  viewerOpts: {\n    type: Object as PropType<VcViewerProps>\n  }\n}\nexport default defineComponent({\n  name: 'VcOverviewMap',\n  props: overviewProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverviewMap'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { t } = useLocale()\n    const { $services } = commonState\n    const rootRef = ref<HTMLElement | null>(null)\n    const rootStyle = reactive<CSSProperties>({})\n    const toggleBtnRef = ref<typeof VcBtn | null>(null)\n    const tooltipRef = ref<typeof VcTooltip | null>(null)\n    const viewerRef = ref<typeof VcViewer | null>(null)\n    const positionState = usePosition(props, $services)\n    let minimized = false\n    let unwatchFns: Array<WatchStopHandle> = []\n    let overviewViewer: Cesium.Viewer\n\n    // computed\n    const toggleOpts = computed(() => {\n      return Object.assign(\n        {},\n        {\n          show: true,\n          color: '#fff',\n          background: '#3f4854',\n          icon: 'vc-icons-overview-toggle',\n          size: '15px',\n          tooltip: {\n            delay: 500,\n            anchor: 'bottom middle',\n            offset: [0, 20],\n            tip: void 0\n          }\n        },\n        props.toggleOpts\n      )\n    })\n\n    const viewerOpts = computed(() => {\n      return Object.assign(\n        {},\n        {\n          removeCesiumScript: false,\n          showCredit: false,\n          sceneMode: 2\n        },\n        props.viewerOpts\n      )\n    })\n    // watch\n\n    // methods\n    instance.createCesiumObject = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element\n      viewerElement.appendChild($(rootRef))\n      return [$(rootRef), $(viewerRef)]\n    }\n\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.clock.onTick.addEventListener(onClockTick)\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element\n      viewer.clock.onTick.removeEventListener(onClockTick)\n      viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n      return true\n    }\n\n    const onClockTick = () => {\n      const { viewer } = $services\n      overviewViewer &&\n        overviewViewer.camera.flyTo({\n          destination: viewer.camera.position,\n          orientation: {\n            heading: viewer.camera.heading,\n            pitch: viewer.camera.pitch,\n            roll: viewer.camera.roll\n          },\n          duration: 0.0\n        })\n    }\n\n    const onViewerReady = ({ viewer }) => {\n      overviewViewer = viewer\n      const control = viewer.scene.screenSpaceCameraController\n      control.enableRotate = false\n      control.enableTranslate = false\n      control.enableZoom = false\n      control.enableTilt = false\n      control.enableLook = false\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n\n      css.borderRadius = props.borderRadius\n      css.border = props.border\n      css.width = props.width\n      css.height = props.height\n      minimized = false\n\n      Object.assign(rootStyle, css)\n    }\n\n    // const onTooltipBeforeShow = () => {\n\n    // }\n\n    const onToggle = () => {\n      if (!minimized) {\n        minimize()\n      } else {\n        restore()\n      }\n\n      minimized = !minimized\n    }\n\n    const minimize = () => {\n      if (toggleOpts.value.show) {\n        const reg = /(\\d+)/g\n        const regResult = reg.exec(props.border)\n        const boder = regResult?.length ? parseFloat(regResult[0]) : 0\n        const toggleBtnRefStyle = getComputedStyle($(toggleBtnRef)?.$el)\n        rootStyle.width = `${parseFloat(toggleBtnRefStyle.width) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n        rootStyle.height = `${parseFloat(toggleBtnRefStyle.height) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n      } else {\n        rootStyle.display = 'block'\n      }\n    }\n\n    const restore = () => {\n      if (toggleOpts.value.show) {\n        rootStyle.width = props.width\n        rootStyle.height = props.height\n      } else {\n        rootStyle.display = 'none'\n      }\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    return () => {\n      const children: Array<VNode> = []\n      children.push(\n        h(\n          VcBtn,\n          {\n            ref: toggleBtnRef,\n            class: 'toggle toggle-' + props.position + (minimized ? ' minimized ' : ''),\n            flat: true,\n            dense: true,\n            icon: toggleOpts.value.icon,\n            size: toggleOpts.value.size,\n            style: { color: toggleOpts.value.color, background: toggleOpts.value.background },\n            onClick: onToggle\n          },\n          () =>\n            toggleOpts.value.tooltip\n              ? h(\n                  VcTooltip,\n                  {\n                    ref: tooltipRef,\n                    ...toggleOpts.value.tooltip\n                    // onBeforeShow: onTooltipBeforeShow\n                  },\n                  () => h('strong', {}, toggleOpts.value.tooltip.tip || t(`vc.overview.${minimized ? 'show' : 'hidden'}`))\n                )\n              : createCommentVNode('v-if')\n        )\n      )\n      children.push(\n        h(\n          VcViewer,\n          {\n            ref: viewerRef,\n            ...viewerOpts.value,\n            onReady: onViewerReady\n          },\n          () => hSlot(ctx.slots.default)\n        )\n      )\n      return h(\n        'div',\n        {\n          ref: rootRef,\n          class: 'vc-overview-map ' + positionState.classes.value,\n          style: rootStyle\n        },\n        children\n      )\n    }\n  }\n})\n\n// export type VcOverviewMapProps = ExtractPropTypes<typeof overviewProps>\n// export type VcOverviewMapEmits = typeof emits\nexport type VcOverviewMapProps = {\n  /**\n   * Specify the position of the VcOverviewMap.\n   * Default value: bottom-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcOverviewMap horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify the width of the overviewmap component.\n   * Default value: 150px\n   */\n  width?: string\n  /**\n   * Specify the height of the overviewmap component.\n   * Default value: 150px\n   */\n  height?: string\n  /**\n   * Specify the border of the overviewmap component.\n   * Default value: solid 4px rgb(255, 255, 255)\n   */\n  border?: string\n  /**\n   * Specify the border radius of the overviewmap component.\n   */\n  borderRadius?: string\n  /**\n   * Specify the toggle button options of the overviewmap component.\n   */\n  toggleOpts?: VcBtnTooltipProps & { show: boolean }\n  /**\n   * Specify the vc-viewer component options in the overviewmap component.\n   */\n  viewerOpts?: VcViewerProps\n  /**\n   * Triggers before the VcOverviewMap is loaded.\n   * @param instance\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcOverviewMap is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcOverviewMap is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport interface VcOverviewMapSlots {\n  /**\n   * Default slot content of the component\n   */\n  default: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-01-19 10:03:30\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\selection-indicator\\Feature.ts\n */\n\nimport type { VcCesiumObject } from '@vue-cesium/utils/types'\n\nclass Feature {\n  id: string\n  cesiumObject: VcCesiumObject\n  pickedFeature: any\n  name: any\n  description: any\n  properties: any\n  data: any\n  imageryLayer: Cesium.ImageryLayer\n  position: Cesium.Cartesian3\n  coords: any\n  windowPosition: Cesium.Cartesian2\n  constructor(options) {\n    this.id = options.id || Cesium.createGuid()\n  }\n\n  static getBoundingSphere(cesiumObject, viewer: Cesium.Viewer) {\n    const { Primitive, ClassificationPrimitive, GroundPolylinePrimitive, GroundPrimitive, Polyline } = Cesium\n    let boundingSphere\n    if (cesiumObject instanceof ClassificationPrimitive || cesiumObject instanceof GroundPolylinePrimitive) {\n      boundingSphere = (cesiumObject as any)._primitive?._boundingSphereWC?.[0]\n    } else if (cesiumObject instanceof Primitive) {\n      boundingSphere = (cesiumObject as any)._boundingSphereWC?.[0]\n    } else if (cesiumObject instanceof GroundPrimitive) {\n      boundingSphere = (cesiumObject as any)._boundingVolumes?.[0]\n    } else if (cesiumObject instanceof Polyline) {\n      boundingSphere = (cesiumObject as any)._boundingVolumeWC\n    } else if (cesiumObject instanceof Cesium.Entity) {\n      boundingSphere = new Cesium.BoundingSphere()\n      ;(viewer.dataSourceDisplay as any).getBoundingSphere(cesiumObject, true, boundingSphere)\n    }\n\n    return boundingSphere\n  }\n  static fromPickedFeature(cesiumObject, pickedFeature, viewer, screenPosition) {\n    const feature = new Feature({ id: cesiumObject.id })\n\n    if (cesiumObject.position) {\n      feature.position = cesiumObject.position\n    } else if (cesiumObject instanceof Cesium.Model) {\n      feature.position = Cesium.Matrix4.getTranslation(cesiumObject.modelMatrix, new Cesium.Cartesian3())\n    } else if (cesiumObject instanceof Cesium.Cesium3DTileset) {\n      feature.position = Cesium.Matrix4.getTranslation(pickedFeature.content._contentModelMatrix, new Cesium.Cartesian3())\n    } else {\n      feature.position = Feature.getBoundingSphere(cesiumObject, viewer)?.center\n    }\n\n    feature.cesiumObject = cesiumObject\n    feature.pickedFeature = pickedFeature\n    feature.windowPosition = screenPosition\n    return feature\n  }\n\n  static fromImageryLayerFeature(imageryFeature, viewer: Cesium.Viewer) {\n    const feature = new Feature({\n      id: imageryFeature.name\n    })\n    feature.name = imageryFeature.name\n    feature.description = imageryFeature.description // already defined by the new Entity\n    feature.properties = imageryFeature.properties\n    feature.data = imageryFeature.data\n\n    feature.imageryLayer = imageryFeature.imageryLayer\n    feature.position = viewer.scene.globe.ellipsoid.cartographicToCartesian(imageryFeature.position)\n    feature.coords = imageryFeature.coords\n\n    return feature\n  }\n}\n\n// function addCustomFeatureProperties (entity) {\n//   for (let i = 0; i < customProperties.length; i++) {\n//     if (entity.propertyNames.indexOf(customProperties[i]) === -1) {\n//       entity.addProperty(customProperties[i])\n//     }\n//   }\n// }\n\nexport default Feature\n","class PickedFeatures {\n  allFeaturesAvailablePromise: any\n  isLoading: boolean\n  pickPosition: any\n  features: any[]\n  error: any\n  providerCoords: any\n  constructor() {\n    const { knockout } = Cesium\n    /**\n     * Gets or sets a promise that indicates, when it resolves, that all picked features are available in the\n     * {@see PickedFeatures#features} array.\n     * @type {Promise}\n     */\n    this.allFeaturesAvailablePromise = undefined\n\n    /**\n     * Gets or sets a value indicating whether the list of picked features is still loading.\n     * @type {Boolean}\n     */\n    this.isLoading = true\n\n    /**\n     * Gets or sets the ground position that was picked, if any.\n     * @type {Cartesian3}\n     */\n    this.pickPosition = undefined\n\n    /**\n     * Gets or sets the array of picked features.  The array is observable and may be updated up until the point that\n     * {@see PickedFeatures#allFeaturesAvailablePromise} resolves.\n     * @type {Entity[]}\n     */\n    this.features = []\n\n    /**\n     * Gets or sets a message describing an error that occurred while picking features.\n     * If this property is undefined, no error occurred.\n     * @type {String}\n     */\n    this.error = undefined\n\n    this.providerCoords = undefined\n\n    knockout.track(this, ['isLoading', 'features', 'error'])\n  }\n}\n\nexport default PickedFeatures\n","import { VcComponentInternalInstance, VcViewerProvider } from '@vue-cesium/utils/types'\nimport { CSSProperties, nextTick, onUnmounted, reactive, ref, watch, WatchStopHandle } from 'vue'\nimport Feature from './Feature'\nimport PickedFeatures from './PickedFeatures'\nimport { isArray } from '@vue-cesium/utils/util'\n\nexport default function (instance: VcComponentInternalInstance, props, $services: VcViewerProvider) {\n  // state\n  const offScreen = '-1000px'\n  const screenPositionX = ref(offScreen)\n  const screenPositionY = ref(offScreen)\n  const transform = ''\n  const opacity = 1.0\n  const position = ref<Cesium.Cartesian3>()\n  const rootRef = ref<HTMLElement | null>()\n  let selectionIndicatorTween\n  let selectionIndicatorIsAppearing\n  const pickedFeatures = ref<any>(null)\n  const selectedFeature = ref<any>(null)\n  let unwatchFns: Array<WatchStopHandle> = []\n  // computed\n  const rootStyle = reactive<CSSProperties>({\n    top: screenPositionY.value,\n    left: screenPositionX.value,\n    transform,\n    opacity: opacity\n  })\n  // watch\n  unwatchFns.push(\n    watch(selectedFeature, val => {\n      const selectedFeature: any = val\n      const { defined } = Cesium\n      if (defined(selectedFeature) && defined(selectedFeature?.position)) {\n        const { viewer } = $services\n        // Todo 高亮逻辑\n        position.value =\n          selectedFeature?.position instanceof Cesium.Cartesian3\n            ? selectedFeature?.position\n            : selectedFeature?.position?.getValue(viewer.clock.currentTime)\n        animateAppear()\n        instance.proxy?.$emit('pickEvt', selectedFeature)\n      } else {\n        animateDepart()\n        instance.proxy?.$emit('pickEvt', selectedFeature)\n      }\n\n      update()\n    })\n  )\n\n  unwatchFns.push(\n    watch(pickedFeatures, val => {\n      const { defined, Entity } = Cesium\n      const pickedFeatures = val\n      if (!defined(pickedFeatures)) {\n        selectedFeature.value = undefined\n      } else {\n        const fakeFeature = new Entity({\n          id: '__Vc__Pick__Location__'\n        })\n        fakeFeature.position = pickedFeatures.pickPosition\n        selectedFeature.value = fakeFeature\n      }\n\n      nextTick(() => {\n        if (defined(pickedFeatures.allFeaturesAvailablePromise)) {\n          pickedFeatures.allFeaturesAvailablePromise.then(() => {\n            // We only show features that are associated with a catalog item, so make sure the one we select to be\n            // open initially is one we're actually going to show.\n            const featuresShownAtAll = pickedFeatures.features.filter(x => defined(x))\n            selectedFeature.value = featuresShownAtAll.filter(featureHasInfo)[0]\n            if (!defined(selectedFeature.value) && featuresShownAtAll.length > 0) {\n              // Handles the case when no features have info - still want something to be open.\n              selectedFeature.value = featuresShownAtAll[0]\n            }\n          })\n        }\n      })\n    })\n  )\n  // methods\n  const featureHasInfo = feature => {\n    const { defined } = Cesium\n    return defined(feature.properties) || defined(feature.description)\n  }\n\n  const pickFromScreenPosition = (screenPosition: Cesium.Cartesian2) => {\n    const { defined } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const pickRay = scene.camera.getPickRay(screenPosition)\n    let pickPosition = scene.globe.pick(pickRay, scene)\n    if (!defined(pickPosition)) {\n      pickPosition = scene.pickPosition(screenPosition)\n      if (!defined(pickPosition)) {\n        return\n      }\n    }\n    const pickPositionCartographic = scene.globe.ellipsoid.cartesianToCartographic(pickPosition || new Cesium.Cartesian3())\n\n    const vectorFeatures = pickVectorFeatures(screenPosition)\n\n    const providerCoords = attachProviderCoordHooks()\n\n    const pickRasterPromise = props.allowFeatureInfoRequests ? scene.imageryLayers.pickImageryLayerFeatures(pickRay, scene) : Promise.resolve()\n\n    const result = buildPickedFeatures(\n      providerCoords,\n      pickPosition,\n      vectorFeatures,\n      [pickRasterPromise],\n      undefined,\n      pickPositionCartographic.height,\n      false,\n      viewer\n    )\n    pickedFeatures.value = result\n  }\n\n  const buildPickedFeatures = (\n    providerCoords,\n    pickPosition,\n    existingFeatures,\n    featurePromises,\n    imageryLayers,\n    defaultHeight,\n    ignoreSplitter,\n    viewer\n  ) => {\n    const { defined, defaultValue, when } = Cesium\n    ignoreSplitter = defaultValue(ignoreSplitter, false)\n    const result = new PickedFeatures()\n\n    result.providerCoords = providerCoords\n    result.pickPosition = pickPosition\n\n    result.allFeaturesAvailablePromise = when\n      .all(featurePromises)\n      .then(function (this, allFeatures) {\n        result.isLoading = false\n\n        result.features = allFeatures.reduce(\n          function (this, resultFeaturesSoFar, imageryLayerFeatures, i) {\n            if (!defined(imageryLayerFeatures)) {\n              return resultFeaturesSoFar\n            }\n\n            const features = imageryLayerFeatures.map(\n              function (feature) {\n                if (defined(imageryLayers)) {\n                  feature.imageryLayer = imageryLayers[i]\n                }\n\n                if (!defined(feature.position)) {\n                  feature.position = viewer.scene.globe.ellipsoid.cartesianToCartographic(pickPosition)\n                }\n\n                // If the picked feature does not have a height, use the height of the picked location.\n                // This at least avoids major parallax effects on the selection indicator.\n                if (!defined(feature.position.height) || feature.position.height === 0.0) {\n                  feature.position.height = defaultHeight\n                }\n                return Feature.fromImageryLayerFeature(feature, viewer)\n              }.bind(this)\n            )\n\n            return resultFeaturesSoFar.concat(features)\n          }.bind(this),\n          defaultValue(existingFeatures, [])\n        )\n      })\n      .otherwise(function () {\n        result.isLoading = false\n        result.error = 'An unknown error occurred while picking features.'\n      })\n\n    return result\n  }\n\n  const pickVectorFeatures = (screenPosition: Cesium.Cartesian2) => {\n    // Pick vector features\n    const vectorFeatures: Array<any> = []\n    const { defined } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const pickedList = scene.drillPick(screenPosition, props.limit)\n    for (let i = 0; i < pickedList.length; ++i) {\n      const picked = pickedList[i]\n      let id = picked.id\n\n      // if (\n      //   id &&\n      // id.entityCollection &&\n      // id.entityCollection.owner &&\n      // id.entityCollection.owner.name === featureHighlightName\n      // ) {\n      //   continue\n      // }\n      if (!defined(id) && defined(picked.primitive)) {\n        id = picked.primitive\n      }\n\n      const catalogItem = picked?.primitive?._catalogItem ?? id?._catalogItem\n\n      if (typeof catalogItem?.getFeaturesFromPickResult === 'function') {\n        const result = catalogItem.getFeaturesFromPickResult.bind(catalogItem)(screenPosition, picked)\n        if (result) {\n          if (Array.isArray(result)) {\n            vectorFeatures.push(...result)\n          } else {\n            vectorFeatures.push(result)\n          }\n        }\n      } else {\n        const pickedFeature = picked\n        if (pickedFeature.id) {\n          if (isArray(pickedFeature.id) && pickedFeature.id[0] instanceof Cesium.Entity) {\n            // 数据源集合（集群）\n            pickedFeature.id.forEach(entity => {\n              const feature = Feature.fromPickedFeature(entity, pickedFeature, viewer, screenPosition)\n              vectorFeatures.push(feature)\n            })\n            continue\n          } else if (pickedFeature.id instanceof Cesium.Entity) {\n            // 实体 or 数据源\n            const feature = Feature.fromPickedFeature(pickedFeature.id, pickedFeature, viewer, screenPosition)\n            vectorFeatures.push(feature)\n            continue\n          }\n        }\n        // 图元\n        if (pickedFeature.primitive) {\n          const feature = Feature.fromPickedFeature(pickedFeature.primitive, pickedFeature, viewer, screenPosition)\n          vectorFeatures.push(feature)\n        } else if (pickedFeature.collection) {\n          // 图元集合\n          const feature = Feature.fromPickedFeature(pickedFeature.collection, pickedFeature, viewer, screenPosition)\n          vectorFeatures.push(feature)\n        }\n      }\n    }\n\n    return vectorFeatures\n  }\n\n  const attachProviderCoordHooks = () => {\n    const providerCoords = {}\n    const { viewer } = $services\n    const scene = viewer.scene\n\n    const pickFeaturesHook = function (imageryProvider, oldPick, x, y, level, longitude, latitude) {\n      if (oldPick) {\n        const featuresPromise = oldPick.call(imageryProvider, x, y, level, longitude, latitude)\n\n        // Use url to uniquely identify providers because what else can we do?\n        if (imageryProvider.url) {\n          providerCoords[imageryProvider.url] = {\n            x: x,\n            y: y,\n            level: level\n          }\n        }\n\n        imageryProvider.pickFeatures = oldPick\n        return featuresPromise\n      }\n\n      return Promise.reject(false)\n    }\n\n    for (let j = 0; j < scene.imageryLayers.length; j++) {\n      const imageryProvider = scene.imageryLayers.get(j).imageryProvider\n      imageryProvider.pickFeatures = pickFeaturesHook.bind(undefined, imageryProvider, imageryProvider.pickFeatures)\n    }\n\n    return providerCoords\n  }\n\n  const computeScreenSpacePosition = (position, result) => {\n    const { viewer } = $services\n    return Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, position, result)\n  }\n\n  const update = () => {\n    const { defined, Cartesian2 } = Cesium\n    if (props.show && defined(position.value)) {\n      const screenPosition = computeScreenSpacePosition(position.value, new Cartesian2())\n      if (!defined(screenPosition)) {\n        // rootStyle.left = offScreen\n        // rootStyle.right = offScreen\n      } else {\n        const { viewer } = $services\n        const container = viewer.container\n        const containerWidth = container.clientWidth\n        const containerHeight = container.clientHeight\n        // const selectionIndicatorElement = $(rootRef)\n        // const indicatorSize = selectionIndicatorElement?.clientWidth || 0\n        const indicatorSize = props.width\n        const halfSize = indicatorSize * 0.5\n\n        screenPosition.x = Math.min(Math.max(screenPosition.x, -indicatorSize), containerWidth + indicatorSize) - halfSize\n        screenPosition.y = Math.min(Math.max(screenPosition.y, -indicatorSize), containerHeight + indicatorSize) - halfSize\n\n        rootStyle.left = Math.floor(screenPosition.x + 0.25) + 'px'\n        rootStyle.top = Math.floor(screenPosition.y + 0.25) + 'px'\n      }\n    }\n  }\n\n  const animateAppear = () => {\n    const { viewer } = $services\n    const { defined, EasingFunction } = Cesium\n    if (defined(selectionIndicatorTween)) {\n      if (selectionIndicatorIsAppearing) {\n        // Already appearing; don't restart the animation.\n        return\n      }\n      selectionIndicatorTween.cancelTween()\n      selectionIndicatorTween = undefined\n    }\n\n    selectionIndicatorIsAppearing = true\n\n    selectionIndicatorTween = viewer.scene.tweens.add({\n      startObject: {\n        scale: 2.0,\n        opacity: 0.0,\n        rotate: -180\n      },\n      stopObject: {\n        scale: 1.0,\n        opacity: 1.0,\n        rotate: 0\n      },\n      duration: 0.8,\n      easingFunction: EasingFunction.EXPONENTIAL_OUT,\n      update: function (value) {\n        rootStyle.opacity = value.opacity\n        rootStyle.transform = 'scale(' + value.scale + ') rotate(' + value.rotate + 'deg)'\n      },\n      complete: function () {\n        selectionIndicatorTween = undefined\n      },\n      cancel: function () {\n        selectionIndicatorTween = undefined\n      }\n    })\n  }\n\n  const animateDepart = () => {\n    const { viewer } = $services\n    const { defined, EasingFunction } = Cesium\n    if (defined(selectionIndicatorTween)) {\n      if (!selectionIndicatorIsAppearing) {\n        // Already disappearing, don't restart the animation.\n        return\n      }\n      selectionIndicatorTween.cancelTween()\n      selectionIndicatorTween = undefined\n    }\n\n    selectionIndicatorIsAppearing = false\n    selectionIndicatorTween = viewer.scene.tweens.add({\n      startObject: {\n        scale: 1.0,\n        opacity: 1.0\n      },\n      stopObject: {\n        scale: 1.5,\n        opacity: 0.0\n      },\n      duration: 0.8,\n      easingFunction: EasingFunction.EXPONENTIAL_OUT,\n      update: function (value) {\n        rootStyle.opacity = value.opacity\n        rootStyle.transform = 'scale(' + value.scale + ') rotate(0deg)'\n      },\n      complete: function () {\n        selectionIndicatorTween = undefined\n      },\n      cancel: function () {\n        selectionIndicatorTween = undefined\n      }\n    })\n  }\n\n  const onPostRender = () => {\n    update()\n  }\n\n  // life cycle\n  onUnmounted(() => {\n    unwatchFns.forEach(item => item())\n    unwatchFns = []\n  })\n\n  // expose public methods\n  Object.assign(instance.proxy, {\n    selectedFeature,\n    pickedFeatures,\n    position,\n    computeScreenSpacePosition,\n    update,\n    animateAppear,\n    animateDepart\n  })\n\n  return {\n    pickFromScreenPosition,\n    rootRef,\n    rootStyle,\n    onPostRender\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-02-17 16:15:27\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\selection-indicator\\index.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { useCommon } from '@vue-cesium/composables'\nimport { $ } from '@vue-cesium/utils/private/vm'\nimport type { VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, h } from 'vue'\nimport useSelectionIndicatior from './use-selection-indicatior'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport type Feature from './Feature'\n\nexport const selectionIndicatorProps = {\n  show: {\n    type: Boolean,\n    default: true\n  },\n  width: {\n    type: Number,\n    default: 50\n  },\n  height: {\n    type: Number,\n    default: 50\n  },\n  allowFeatureInfoRequests: {\n    type: Boolean,\n    default: true\n  },\n  limit: {\n    type: Number,\n    default: 25\n  }\n}\nconst emits = {\n  ...commonEmits,\n  pickEvt: (evt: Feature) => true\n}\nexport default defineComponent({\n  name: 'VcSelectionIndicator',\n  props: selectionIndicatorProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcSelectionIndicator'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n\n    let pickScreenSpaceEventHandler: Cesium.ScreenSpaceEventHandler\n    const useSelectionIndicatiorState = useSelectionIndicatior(instance, props, $services)\n\n    // methods\n    instance.createCesiumObject = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element\n      viewerElement.appendChild($(useSelectionIndicatiorState.rootRef))\n      return $(useSelectionIndicatiorState.rootRef)\n    }\n\n    instance.mount = async () => {\n      const { viewer } = $services\n      const { ScreenSpaceEventHandler, ScreenSpaceEventType } = Cesium\n\n      pickScreenSpaceEventHandler = new ScreenSpaceEventHandler(viewer.canvas)\n      pickScreenSpaceEventHandler.setInputAction(movement => {\n        useSelectionIndicatiorState.pickFromScreenPosition(movement.position)\n      }, ScreenSpaceEventType.LEFT_CLICK)\n\n      viewer.scene.postRender.addEventListener(useSelectionIndicatiorState.onPostRender)\n\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element\n      viewerElement.contains($(useSelectionIndicatiorState.rootRef)) && viewerElement.removeChild($(useSelectionIndicatiorState.rootRef))\n\n      viewer.scene.postRender.removeEventListener(useSelectionIndicatiorState.onPostRender)\n\n      pickScreenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)\n      pickScreenSpaceEventHandler.destroy()\n      ;(pickScreenSpaceEventHandler as any) = undefined\n\n      return true\n    }\n\n    return () => {\n      return h(\n        'div',\n        {\n          ref: useSelectionIndicatiorState.rootRef,\n          class: 'vc-selection-indicator',\n          style: useSelectionIndicatiorState.rootStyle\n        },\n        h('img', {\n          src: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHdpZHRoPSIxNzZweCIgaGVpZ2h0PSIxNzZweCIgdmlld0JveD0iMCAwIDE3NiAxNzYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6c2tldGNoPSJodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2gvbnMiPg0KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggMy4xLjEgKDg3NjEpIC0gaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoIC0tPg0KICAgIDx0aXRsZT5Mb2NhdGlvblRhcmdldCArIFBhdGg8L3RpdGxlPg0KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPg0KICAgIDxkZWZzPg0KICAgICAgICA8ZmlsdGVyIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIyMDAlIiBoZWlnaHQ9IjIwMCUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0xIj4NCiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjAiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiPjwvZmVPZmZzZXQ+DQogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+DQogICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgMCAwIDAgMC41MjY0NDY0NDUgMCIgaW49InNoYWRvd0JsdXJPdXRlcjEiIHR5cGU9Im1hdHJpeCIgcmVzdWx0PSJzaGFkb3dNYXRyaXhPdXRlcjEiPjwvZmVDb2xvck1hdHJpeD4NCiAgICAgICAgICAgIDxmZU1lcmdlPg0KICAgICAgICAgICAgICAgIDxmZU1lcmdlTm9kZSBpbj0ic2hhZG93TWF0cml4T3V0ZXIxIj48L2ZlTWVyZ2VOb2RlPg0KICAgICAgICAgICAgICAgIDxmZU1lcmdlTm9kZSBpbj0iU291cmNlR3JhcGhpYyI+PC9mZU1lcmdlTm9kZT4NCiAgICAgICAgICAgIDwvZmVNZXJnZT4NCiAgICAgICAgPC9maWx0ZXI+DQogICAgICAgIDxmaWx0ZXIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjIwMCUiIGhlaWdodD0iMjAwJSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBpZD0iZmlsdGVyLTIiPg0KICAgICAgICAgICAgPGZlT2Zmc2V0IGR4PSIwIiBkeT0iMCIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSI+PC9mZU9mZnNldD4NCiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIiIGluPSJzaGFkb3dPZmZzZXRPdXRlcjEiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUdhdXNzaWFuQmx1cj4NCiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwICAgMCAwIDAgMCAwICAgMCAwIDAgMCAwICAwIDAgMCAwLjUyNjQ0NjQ0NSAwIiBpbj0ic2hhZG93Qmx1ck91dGVyMSIgdHlwZT0ibWF0cml4IiByZXN1bHQ9InNoYWRvd01hdHJpeE91dGVyMSI+PC9mZUNvbG9yTWF0cml4Pg0KICAgICAgICAgICAgPGZlTWVyZ2U+DQogICAgICAgICAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJzaGFkb3dNYXRyaXhPdXRlcjEiPjwvZmVNZXJnZU5vZGU+DQogICAgICAgICAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJTb3VyY2VHcmFwaGljIj48L2ZlTWVyZ2VOb2RlPg0KICAgICAgICAgICAgPC9mZU1lcmdlPg0KICAgICAgICA8L2ZpbHRlcj4NCiAgICA8L2RlZnM+DQogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+DQogICAgICAgIDxnIGlkPSJBcnRib2FyZC0xIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNjkxLjAwMDAwMCwgLTQ5OC4wMDAwMDApIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZT0iI0ZGRkZGRiI+DQogICAgICAgICAgICA8ZyBpZD0iTG9jYXRpb25UYXJnZXQtKy1QYXRoIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2OTkuMDAwMDAwLCA1MDYuMDAwMDAwKSI+DQogICAgICAgICAgICAgICAgPHBhdGggZD0iTTgwLDE0NCBDMTE1LjM0NjIyNCwxNDQgMTQ0LDExNS4zNDYyMjQgMTQ0LDgwIEMxNDQsNDQuNjUzNzc2IDExNS4zNDYyMjQsMTYgODAsMTYgQzQ0LjY1Mzc3NiwxNiAxNiw0NC42NTM3NzYgMTYsODAgQzE2LDExNS4zNDYyMjQgNDQuNjUzNzc2LDE0NCA4MCwxNDQgWiBNMTYwLDgwIEwxNDQsODAgTTE2LDgwIEwwLDgwIE03OS42LC0wLjQgTDc5LjYsMTUuNiBNNzguOCwxNDQgTDc4LjgsMTYwIiBpZD0iTG9jYXRpb25UYXJnZXQiIHN0cm9rZS13aWR0aD0iNyIgZmlsdGVyPSJ1cmwoI2ZpbHRlci0xKSI+PC9wYXRoPg0KICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9IlBhdGgiIHN0cm9rZS13aWR0aD0iMiIgb3BhY2l0eT0iMC4yNTIyMTU0ODUiIGZpbHRlcj0idXJsKCNmaWx0ZXItMikiIGN4PSI4MCIgY3k9IjgwIiByPSI2Ij48L2NpcmNsZT4NCiAgICAgICAgICAgIDwvZz4NCiAgICAgICAgPC9nPg0KICAgIDwvZz4NCjwvc3ZnPg==',\n          width: props.width,\n          height: props.height\n        })\n      )\n    }\n  }\n})\n\n// export type VcSelectionIndicatorProps = ExtractPropTypes<typeof selectionIndicatorProps>\nexport type VcSelectionIndicatorEmits = typeof emits\nexport type VcSelectionIndicatorProps = {\n  /**\n   * Specify whether the selection indicator is visible.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify the width of the selection indicator.\n   * Default value: 50\n   */\n  width?: number\n  /**\n   * Specify the height of the selection indicator.\n   * Default value: 50\n   */\n  height?: number\n  /**\n   * Asynchronously determines the imagery layer features that are intersected by a pick ray.\n   * Default value: true\n   */\n  allowFeatureInfoRequests?: boolean\n  /**\n   * Specify the maximum number of picked objects.\n   * Default value: 25\n   */\n  limit?: number\n  /**\n   * Triggers before the VcSelectionIndicator is loaded.\n   * @param instance\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcSelectionIndicator is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcSelectionIndicator is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-23 00:54:00\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\index.ts\n */\nimport { App } from 'vue'\nimport Compass from './compass'\nimport ZoomControl from './zoom-control'\nimport Print from './print'\nimport MyLocation from './my-location'\nimport StatusBar from './status-bar'\nimport DistanceLegend from './distance-legend'\nimport Navigation from './navigation'\nimport CompassSm from './navigation-sm/compass-sm'\nimport ZoomControlSm from './navigation-sm/zoom-control-sm'\nimport NavigationSm from './navigation-sm'\nimport OverviewMap from './vc-overview-map'\nimport SelectionIndicator from './selection-indicator'\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\n\nconst components = [\n  Compass,\n  ZoomControl,\n  Print,\n  MyLocation,\n  StatusBar,\n  DistanceLegend,\n  Navigation,\n  CompassSm,\n  ZoomControlSm,\n  NavigationSm,\n  OverviewMap,\n  SelectionIndicator\n]\n\nconst install = (app: App): void => {\n  components.forEach(cmp => {\n    app.component(cmp.name, cmp)\n  })\n}\n\nexport default {\n  install\n}\n\ncomponents.forEach(cmp => {\n  cmp['install'] = (app: App): void => {\n    app.component(cmp.name, cmp)\n  }\n})\n\nexport const VcCompass = Compass as SFCWithInstall<typeof Compass>\nexport const VcZoomControl = ZoomControl as SFCWithInstall<typeof ZoomControl>\nexport const VcPrint = Print as SFCWithInstall<typeof Print>\nexport const VcMyLocation = MyLocation as SFCWithInstall<typeof MyLocation>\nexport const VcStatusBar = StatusBar as SFCWithInstall<typeof StatusBar>\nexport const VcDistanceLegend = DistanceLegend as SFCWithInstall<typeof DistanceLegend>\nexport const VcNavigation = Navigation as SFCWithInstall<typeof Navigation>\nexport const VcCompassSm = CompassSm as SFCWithInstall<typeof CompassSm>\nexport const VcZoomControlSm = ZoomControlSm as SFCWithInstall<typeof ZoomControlSm>\nexport const VcNavigationSm = NavigationSm as SFCWithInstall<typeof NavigationSm>\nexport const VcOverviewMap = OverviewMap as SFCWithInstall<typeof OverviewMap>\nexport const VcSelectionIndicator = SelectionIndicator as SFCWithInstall<typeof SelectionIndicator>\n\nexport * from './compass'\nexport * from './distance-legend'\nexport * from './my-location'\nexport * from './navigation'\nexport * from './navigation-sm'\nexport * from './print'\nexport * from './selection-indicator'\nexport * from './status-bar'\nexport * from './vc-overview-map'\nexport * from './zoom-control'\n","class VisibilityState {\n  states: any\n  count: number\n  constructor() {\n    this.states = new Cesium.ManagedArray()\n    this.count = 0\n  }\n\n  hidePrimitiveCollection(primitiveCollection: Cesium.PrimitiveCollection) {\n    const { PrimitiveCollection, Cesium3DTileset, Model } = Cesium\n    const length = primitiveCollection.length\n    for (let i = 0; i < length; i++) {\n      const primitive = primitiveCollection.get(i)\n      if (primitive instanceof PrimitiveCollection) {\n        this.hidePrimitiveCollection(primitive)\n      } else {\n        this.states.push(primitive.show)\n        primitive instanceof Cesium3DTileset || primitive instanceof Model || (primitive.show = false)\n      }\n    }\n  }\n\n  restorePrimitiveCollection(primitiveCollection: Cesium.PrimitiveCollection) {\n    const { PrimitiveCollection } = Cesium\n    const length = primitiveCollection.length\n    for (let i = 0; i < length; i++) {\n      const primitive = primitiveCollection.get(i)\n      if (primitive instanceof PrimitiveCollection) {\n        this.restorePrimitiveCollection(primitive)\n      } else {\n        primitive.show = this.states.get(this.count++)\n      }\n    }\n  }\n\n  hide(scene: Cesium.Scene) {\n    this.states.length = 0\n    this.hidePrimitiveCollection(scene.primitives)\n    this.hidePrimitiveCollection(scene.groundPrimitives)\n  }\n\n  restore(scene: Cesium.Scene) {\n    this.count = 0\n    this.restorePrimitiveCollection(scene.primitives)\n    this.restorePrimitiveCollection(scene.groundPrimitives)\n  }\n}\n\nexport default VisibilityState\n","export default {\n  BeforeDraw: 0,\n  Drawing: 1,\n  AfterDraw: 2\n}\n","import { defaultValue } from '@vue-cesium/utils/util'\n\nconst DistanceUnits = Object.freeze({\n  METERS: 'METERS',\n  CENTIMETERS: 'CENTIMETERS',\n  KILOMETERS: 'KILOMETERS',\n  FEET: 'FEET',\n  US_SURVEY_FEET: 'US_SURVEY_FEET',\n  INCHES: 'INCHES',\n  YARDS: 'YARDS',\n  MILES: 'MILES'\n})\n\nconst AreaUnits = Object.freeze({\n  SQUARE_METERS: 'SQUARE_METERS',\n  SQUARE_CENTIMETERS: 'SQUARE_CENTIMETERS',\n  SQUARE_KILOMETERS: 'SQUARE_KILOMETERS',\n  SQUARE_FEET: 'SQUARE_FEET',\n  SQUARE_INCHES: 'SQUARE_INCHES',\n  SQUARE_YARDS: 'SQUARE_YARDS',\n  SQUARE_MILES: 'SQUARE_MILES',\n  ACRES: 'ACRES',\n  HECTARES: 'HECTARES'\n})\n\nconst VolumeUnits = Object.freeze({\n  CUBIC_METERS: 'CUBIC_METERS',\n  CUBIC_CENTIMETERS: 'CUBIC_CENTIMETERS',\n  CUBIC_KILOMETERS: 'CUBIC_KILOMETERS',\n  CUBIC_FEET: 'CUBIC_FEET',\n  CUBIC_INCHES: 'CUBIC_INCHES',\n  CUBIC_YARDS: 'CUBIC_YARDS',\n  CUBIC_MILES: 'CUBIC_MILES'\n})\n\nconst AngleUnits = Object.freeze({\n  DEGREES: 'DEGREES',\n  RADIANS: 'RADIANS',\n  DEGREES_MINUTES_SECONDS: 'DEGREES_MINUTES_SECONDS',\n  GRADE: 'GRADE',\n  RATIO: 'RATIO'\n})\n\nclass MeasureUnits {\n  distanceUnits: string\n  areaUnits: string\n  volumeUnits: string\n  angleUnits: string\n  slopeUnits: string\n\n  constructor(options?) {\n    options = defaultValue(options, {})\n    this.distanceUnits = defaultValue(options.distanceUnits, DistanceUnits.METERS)\n    this.areaUnits = defaultValue(options.areaUnits, AreaUnits.SQUARE_METERS)\n    this.volumeUnits = defaultValue(options.volumeUnits, VolumeUnits.CUBIC_METERS)\n    this.angleUnits = defaultValue(options.angleUnits, AngleUnits.DEGREES)\n    this.slopeUnits = defaultValue(options.slopeUnits, AngleUnits.DEGREES)\n  }\n\n  static numberToString = function (number, locale, decimals) {\n    return numberToFormattedString(number, locale, decimals)\n  }\n\n  static distanceToString(distance: number, distanceUnits: string, locale?, decimals?) {\n    distance = MeasureUnits.convertDistance(distance, DistanceUnits.METERS, distanceUnits)\n    return (\n      numberToFormattedString(distance, locale, decimals) +\n      MeasureUnits.getDistanceUnitSpacing(distanceUnits) +\n      MeasureUnits.getDistanceUnitSymbol(distanceUnits)\n    )\n  }\n\n  static areaToString(area: number, areaUnits: string, locale?, decimals?) {\n    area = MeasureUnits.convertArea(area, AreaUnits.SQUARE_METERS, areaUnits)\n    return numberToFormattedString(area, locale, decimals) + MeasureUnits.getAreaUnitSpacing(areaUnits) + MeasureUnits.getAreaUnitSymbol(areaUnits)\n  }\n\n  static angleToString(angle: number, angleUnits: string, locale?, decimals?) {\n    const { Math: CesiumMath } = Cesium\n    if (angleUnits === AngleUnits.DEGREES || angleUnits === AngleUnits.RADIANS || angleUnits === AngleUnits.GRADE) {\n      angle = convertAngleFromRadians(angle, angleUnits)\n\n      return (\n        numberToFormattedString(angle, locale, decimals) + MeasureUnits.getAngleUnitSpacing(angleUnits) + MeasureUnits.getAngleUnitSymbol(angleUnits)\n      )\n    }\n\n    if (angleUnits === AngleUnits.DEGREES_MINUTES_SECONDS) {\n      const angleDegrees = CesiumMath.toDegrees(angle)\n      const prefix = angleDegrees < 0 ? '-' : ''\n      const degrees = Math.floor(angleDegrees)\n      const minutes = 60 * (angleDegrees - degrees)\n      const seconds = Math.floor(minutes)\n      return prefix + degrees + '° ' + seconds + \"' \" + numberToFormattedString(60 * (minutes - seconds), void 0, decimals) + '\"'\n    }\n    if (angleUnits === AngleUnits.RATIO) {\n      //\n    }\n  }\n\n  static volumeToString(volume: number, volumeUnits: string, locale?, decimals?) {\n    volume = MeasureUnits.convertArea(volume, VolumeUnits.CUBIC_METERS, volumeUnits)\n    return (\n      numberToFormattedString(volume, locale, decimals) +\n      MeasureUnits.getVolumeUnitSpacing(volumeUnits) +\n      MeasureUnits.getVolumeUnitSymbol(volumeUnits)\n    )\n  }\n\n  static getDistanceUnitSpacing(distanceUnits: string) {\n    return ' '\n  }\n\n  static getAreaUnitSpacing(distanceUnits: string) {\n    return ' '\n  }\n\n  static getAngleUnitSpacing(angleUnits: string) {\n    return angleUnits === AngleUnits.RADIANS ? ' ' : ''\n  }\n\n  static getVolumeUnitSpacing(distanceUnits: string) {\n    return ' '\n  }\n\n  static getDistanceUnitSymbol(distanceUnits: string) {\n    switch (distanceUnits) {\n      case DistanceUnits.METERS:\n        return 'm'\n      case DistanceUnits.CENTIMETERS:\n        return 'cm'\n      case DistanceUnits.KILOMETERS:\n        return 'km'\n      case DistanceUnits.FEET:\n      case DistanceUnits.US_SURVEY_FEET:\n        return 'ft'\n      case DistanceUnits.INCHES:\n        return 'in'\n      case DistanceUnits.YARDS:\n        return 'yd'\n      case DistanceUnits.MILES:\n        return 'mi'\n      default:\n        return void 0\n    }\n  }\n\n  static getAreaUnitSymbol(areaUnits: string) {\n    switch (areaUnits) {\n      case AreaUnits.SQUARE_METERS:\n        return 'm²'\n      case AreaUnits.SQUARE_CENTIMETERS:\n        return 'cm²'\n      case AreaUnits.SQUARE_KILOMETERS:\n        return 'km²'\n      case AreaUnits.SQUARE_FEET:\n        return 'sq ft'\n      case AreaUnits.SQUARE_INCHES:\n        return 'sq in'\n      case AreaUnits.SQUARE_YARDS:\n        return 'sq yd'\n      case AreaUnits.SQUARE_MILES:\n        return 'sq mi'\n      case AreaUnits.ACRES:\n        return 'ac'\n      case AreaUnits.HECTARES:\n        return 'ha'\n      default:\n        return void 0\n    }\n  }\n\n  static getVolumeUnitSymbol(volumeUnits) {\n    switch (volumeUnits) {\n      case VolumeUnits.CUBIC_METERS:\n        return 'm³'\n      case VolumeUnits.CUBIC_CENTIMETERS:\n        return 'cm³'\n      case VolumeUnits.CUBIC_KILOMETERS:\n        return 'km³'\n      case VolumeUnits.CUBIC_FEET:\n        return 'cu ft'\n      case VolumeUnits.CUBIC_INCHES:\n        return 'cu in'\n      case VolumeUnits.CUBIC_YARDS:\n        return 'cu yd'\n      case VolumeUnits.CUBIC_MILES:\n        return 'cu mi'\n      default:\n        return void 0\n    }\n  }\n\n  static getAngleUnitSymbol(angleUnits) {\n    return angleUnits === AngleUnits.DEGREES ? '°' : angleUnits === AngleUnits.RADIANS ? 'rad' : angleUnits === AngleUnits.GRADE ? '%' : void 0\n  }\n\n  static convertDistance(distance: number, distanceUnitsFrom: string, distanceUnitsTo: string) {\n    return distanceUnitsFrom === distanceUnitsTo\n      ? distance\n      : distance * getDistanceUnitConversion(distanceUnitsFrom) * (1 / getDistanceUnitConversion(distanceUnitsTo))\n  }\n\n  static convertArea(area: number, areaUnitsFrom: string, areaUnitsTo: string) {\n    return areaUnitsFrom === areaUnitsTo ? area : area * getAreaUnitConversion(areaUnitsFrom) * (1 / getAreaUnitConversion(areaUnitsTo))\n  }\n\n  static convertVolume(volume: number, volumeUnitsFrom: string, volumeUnitsTo: string) {\n    return volumeUnitsFrom === volumeUnitsTo\n      ? volume\n      : volume * getVolumeUnitConversion(volumeUnitsFrom) * (1 / getVolumeUnitConversion(volumeUnitsTo))\n  }\n\n  static convertAngle(angle: number, angleUnitsFrom: string, angleUnitsTo: string) {\n    return angleUnitsFrom === angleUnitsTo ? angle : convertAngleFromRadians(convertAngleToRadians(angle, angleUnitsFrom), angleUnitsTo)\n  }\n\n  static longitudeToString(longitude, angleUnits, locale, decimals) {\n    return MeasureUnits.angleToString(Math.abs(longitude), angleUnits, locale, decimals) + ' ' + (longitude < 0 ? 'W' : 'E')\n  }\n\n  static latitudeToString(latitude, angleUnits, locale, decimals) {\n    return MeasureUnits.angleToString(Math.abs(latitude), angleUnits, locale, decimals) + ' ' + (latitude < 0 ? 'S' : 'N')\n  }\n}\n\nfunction getDistanceUnitConversion(distanceUnits: string) {\n  switch (distanceUnits) {\n    case DistanceUnits.METERS:\n      return 1\n    case DistanceUnits.CENTIMETERS:\n      return 0.01\n    case DistanceUnits.KILOMETERS:\n      return 1000\n    case DistanceUnits.FEET:\n      return 0.3048\n    case DistanceUnits.US_SURVEY_FEET:\n      return 1200 / 3937\n    case DistanceUnits.INCHES:\n      return 0.254\n    case DistanceUnits.YARDS:\n      return 0.9144\n    case DistanceUnits.MILES:\n      return 1609.344\n    default:\n      return 1\n  }\n}\n\nfunction getAreaUnitConversion(areaUnits: string) {\n  switch (areaUnits) {\n    case AreaUnits.SQUARE_METERS:\n      return 1\n    case AreaUnits.SQUARE_CENTIMETERS:\n      return 0.0001\n    case AreaUnits.SQUARE_KILOMETERS:\n      return 1000000\n    case AreaUnits.SQUARE_FEET:\n      return 0.09290304\n    case AreaUnits.SQUARE_INCHES:\n      return 64516e-8\n    case AreaUnits.SQUARE_YARDS:\n      return 0.83612736\n    case AreaUnits.SQUARE_MILES:\n      return 2589988.110336\n    case AreaUnits.ACRES:\n      return 4046.85642232\n    case AreaUnits.HECTARES:\n      return 10000\n    default:\n      return 1\n  }\n}\n\nfunction getVolumeUnitConversion(volumeUnits: string) {\n  switch (volumeUnits) {\n    case VolumeUnits.CUBIC_METERS:\n      return 1\n    case VolumeUnits.CUBIC_CENTIMETERS:\n      return 1e-6\n    case VolumeUnits.CUBIC_KILOMETERS:\n      return 1e9\n    case VolumeUnits.CUBIC_FEET:\n      return 0.09290304 * 0.3048\n    case VolumeUnits.CUBIC_INCHES:\n      return 16387064e-12\n    case VolumeUnits.CUBIC_YARDS:\n      return 0.764554857984\n    case VolumeUnits.CUBIC_MILES:\n      return 4168181825.44058\n    default:\n      return 1\n  }\n}\n\nfunction convertAngleToRadians(angle, angleUnits) {\n  const { defined, Math: CesiumMath, RuntimeError } = Cesium\n  if (angleUnits === AngleUnits.RADIANS) return angle\n  if (angleUnits === AngleUnits.DEGREES) return CesiumMath.toRadians(angle)\n  if (angleUnits === AngleUnits.GRADE) return angle === Number.POSITIVE_INFINITY ? CesiumMath.PI_OVER_TWO : Math.atan(angle / 100)\n  if (angleUnits === AngleUnits.RATIO) return Math.atan(angle)\n  if (angleUnits === AngleUnits.DEGREES_MINUTES_SECONDS) {\n    const degreesMinutesSecondsRegex = /(-?)(\\d+)\\s*°\\s*(\\d+)\\s*'\\s*([\\d.,]+)\"\\s*([WENS]?)/i\n    const result = degreesMinutesSecondsRegex.exec(angle) || []\n    if (!defined(result)) throw new RuntimeError('Could not convert angle to radians: ' + angle)\n    let r = 0 < result[1].length ? -1 : 1\n    const degrees = parseInt(result[2])\n    const minutes = parseInt(result[3])\n    const seconds = parseFloat(result[4])\n    let s = result[5]\n    1 === s.length && (('W' !== (s = s.toUpperCase()) && 'S' !== s) || (r *= -1))\n    const l = r * (degrees + minutes / 60 + seconds / 3600)\n    return CesiumMath.toRadians(l)\n  }\n}\n\nfunction convertAngleFromRadians(angle, angleUnits) {\n  const { Math: CesiumMath } = Cesium\n  if (angleUnits === AngleUnits.RADIANS) {\n    return angle\n  } else if (angleUnits === AngleUnits.DEGREES) {\n    return CesiumMath.toDegrees(angle)\n  } else if (angleUnits === AngleUnits.GRADE) {\n    if (CesiumMath.clamp(angle, 0, CesiumMath.PI_OVER_TWO) === CesiumMath.PI_OVER_TWO) {\n      return Number.POSITIVE_INFINITY\n    } else {\n      return 100 * Math.tan(angle)\n    }\n  } else if (angleUnits === AngleUnits.RATIO) {\n    return Math.sin(angle) / Math.cos(angle)\n  }\n\n  return void 0\n}\n\nfunction numberToFormattedString(number, locale, decimals) {\n  const options = getLocaleFormatStringOptions(decimals, number, locale)\n  const strLocale = number.toLocaleString(locale, options)\n  const negativeZero = -0\n  const positiveZero = 0\n  return strLocale === negativeZero.toLocaleString(locale, options) ? positiveZero.toLocaleString(locale, options) : strLocale\n}\n\nfunction getLocaleFormatStringOptions(decimals, number?, locale?) {\n  let numberFormatter = {\n    minimumFractionDigits: 0,\n    maximumFractionDigits: 0\n  }\n  decimals = Cesium.defaultValue(decimals, 2)\n  if (typeof decimals === 'number') {\n    numberFormatter.minimumFractionDigits = decimals\n    numberFormatter.maximumFractionDigits = decimals\n  } else {\n    numberFormatter = typeof decimals === 'function' ? decimals(number, locale) : decimals\n  }\n  return numberFormatter\n}\n\nexport default MeasureUnits\n\nexport { DistanceUnits, AreaUnits, VolumeUnits, AngleUnits }\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-19 14:20:47\n * @LastEditTime: 2022-01-07 11:40:33\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\shared\\src\\PolygonPrimitive.ts\n */\n\nclass PolygonPrimitive {\n  show: boolean\n  _id: string\n  _positions: Array<Cesium.Cartesian3>\n  _boundingSphere: Cesium.BoundingSphere\n  _primitive: Cesium.Primitive | Cesium.GroundPrimitive | undefined\n  _update: boolean\n  _ellipsoid: Cesium.Ellipsoid\n  _clampToGround: boolean\n  _classificationType: number\n  _allowPicking: boolean\n  _asynchronous: boolean\n  _polygonHierarchy: Cesium.PolygonHierarchy\n  _appearance: Cesium.Appearance\n  _depthFailAppearance: Cesium.Appearance\n\n  constructor(options) {\n    const { defined, defaultValue, Color, createGuid, BoundingSphere, Ellipsoid, ClassificationType } = Cesium\n    options = defaultValue(options, {})\n    this.show = defaultValue(options.show, true)\n    this._id = defined(options.id) ? options.id : createGuid()\n    this._ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84)\n    this._appearance = defaultValue(options.appearance, new Cesium.MaterialAppearance())\n    this._depthFailAppearance = options.depthFailAppearance\n    this._positions = defaultValue(options.positions, [])\n    this._polygonHierarchy = options.polygonHierarchy\n    this._clampToGround = defaultValue(options.clampToGround, false)\n    this._classificationType = defaultValue(options.classificationType, ClassificationType.BOTH)\n    this._allowPicking = defaultValue(options.allowPicking, true)\n    this._asynchronous = defaultValue(options.asynchronous, false)\n    this._boundingSphere = new BoundingSphere()\n    this._primitive = void 0\n    this._update = true\n  }\n\n  get positions() {\n    return this._positions\n  }\n  set positions(val) {\n    this._positions = val\n    this._update = true\n  }\n\n  get polygonHierarchy() {\n    return this._polygonHierarchy\n  }\n  set polygonHierarchy(val) {\n    this._polygonHierarchy = val\n    this._update = true\n  }\n\n  get appearance() {\n    return this._appearance\n  }\n  set appearance(val) {\n    this._appearance = val\n    if (this._primitive !== undefined) {\n      this._primitive.appearance = val\n    }\n  }\n\n  get depthFailAppearance() {\n    return this._depthFailAppearance\n  }\n  set depthFailAppearance(val) {\n    this._depthFailAppearance = val\n    if (this._primitive !== undefined && this._primitive instanceof Cesium.Primitive) {\n      this._primitive.depthFailAppearance = val\n    }\n  }\n\n  get id() {\n    return this._id\n  }\n  set id(id) {\n    this._id = id\n  }\n\n  get boundingVolume() {\n    return this._boundingSphere\n  }\n\n  get ellipsoid() {\n    return this._ellipsoid\n  }\n\n  get clampToGround() {\n    return this._clampToGround\n  }\n  set clampToGround(val) {\n    this._clampToGround = val\n  }\n\n  get classificationType() {\n    return this._classificationType\n  }\n  set classificationType(e) {\n    this._classificationType = e\n    this._update = true\n  }\n\n  get allowPicking() {\n    return this._allowPicking\n  }\n  set allowPicking(val) {\n    this._allowPicking = val\n  }\n\n  get asynchronous() {\n    return this._asynchronous\n  }\n  set asynchronous(val) {\n    this._asynchronous = val\n  }\n\n  async update(frameState) {\n    if (this.show) {\n      const positions = this._polygonHierarchy ? this._polygonHierarchy.positions : this._positions\n      if (positions.length < 3) {\n        this._primitive && this._primitive.destroy()\n        this._primitive = undefined\n      } else {\n        if (this._update) {\n          this._update = false\n\n          let promise\n          if (this._clampToGround) {\n            promise = this._createGroundPolygon()\n          } else {\n            promise = this._createPolygon()\n          }\n          promise.then(primitive => {\n            this._primitive && this._primitive.destroy()\n            this._primitive = undefined\n            this._primitive = primitive\n            ;(this._primitive as any)._vcParent = this\n            this._boundingSphere = Cesium.BoundingSphere.fromPoints(positions, this._boundingSphere)\n          })\n        }\n        this._primitive && (this._primitive as any).update(frameState)\n      }\n    }\n  }\n\n  async _createPolygon() {\n    const { Primitive, GeometryInstance, CoplanarPolygonGeometry, Cartesian3 } = Cesium\n    return new Primitive({\n      geometryInstances: new GeometryInstance({\n        geometry: this._polygonHierarchy\n          ? new CoplanarPolygonGeometry({\n              polygonHierarchy: this._polygonHierarchy,\n              ellipsoid: this._ellipsoid\n            })\n          : CoplanarPolygonGeometry.fromPositions({\n              positions: this._positions.map(function (e) {\n                return Cartesian3.clone(e)\n              }),\n              ellipsoid: this._ellipsoid\n            }),\n        id: this._id\n      }),\n      appearance: this._appearance,\n      depthFailAppearance: this._depthFailAppearance,\n      allowPicking: this._allowPicking,\n      asynchronous: this._asynchronous\n    })\n  }\n\n  async _createGroundPolygon() {\n    const { GroundPrimitive, GeometryInstance, PolygonGeometry, Cartesian3 } = Cesium\n    await Cesium.GroundPrimitive.initializeTerrainHeights()\n    return new GroundPrimitive({\n      geometryInstances: new GeometryInstance({\n        geometry: this._polygonHierarchy\n          ? new PolygonGeometry({\n              polygonHierarchy: this._polygonHierarchy,\n              ellipsoid: this._ellipsoid\n            })\n          : PolygonGeometry.fromPositions({\n              positions: this._positions.map(function (e) {\n                return Cartesian3.clone(e)\n              }),\n              ellipsoid: this._ellipsoid\n            }),\n        id: this._id\n      }),\n      appearance: this._appearance,\n      allowPicking: this._allowPicking,\n      asynchronous: this._asynchronous,\n      classificationType: this._classificationType\n    })\n  }\n\n  isDestroyed() {\n    return false\n  }\n\n  destroy() {\n    this._primitive && this._primitive.destroy()\n    this._primitive = undefined\n    return Cesium.destroyObject(this)\n  }\n}\n\nexport default PolygonPrimitive\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-24 14:20:28\n * @LastEditTime: 2022-01-23 00:50:50\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\shared\\src\\DynamicOverlay.ts\n */\nimport { makeCartesian3, makeJulianDate } from '@vue-cesium/utils/cesium-helpers'\nimport type { DynamicOverlayOpts, VcPosition } from '@vue-cesium/utils/types'\n\nclass DynamicOverlay {\n  _sampledPosition: Cesium.SampledPositionProperty\n  _entity: Cesium.Entity\n  _cache: Cesium.JulianDate[]\n  _maxCacheSize: number\n  _lastTime: Cesium.JulianDate | undefined\n  _velocityVectorProperty: Cesium.VelocityVectorProperty\n\n  constructor(options: DynamicOverlayOpts) {\n    const { SampledPositionProperty, Entity, ExtrapolationType, VelocityOrientationProperty } = Cesium\n    this._lastTime = undefined\n    this._sampledPosition = new SampledPositionProperty()\n    this._sampledPosition.forwardExtrapolationType = options.forwardExtrapolationType || ExtrapolationType.HOLD\n    this._sampledPosition.backwardExtrapolationType = options.backwardExtrapolationType || ExtrapolationType.HOLD\n    this._cache = []\n    this._maxCacheSize = options.maxCacheSize || 10\n\n    const entity = new Entity(options)\n    entity.position = this._sampledPosition\n    entity.orientation = new VelocityOrientationProperty(this._sampledPosition)\n    this._entity = entity\n    // A velocity vector property will give us the entity's speed and direction at any given time.\n    this._velocityVectorProperty = new Cesium.VelocityVectorProperty(this._sampledPosition, false)\n  }\n\n  get id() {\n    return this._entity.id\n  }\n  set id(id) {\n    this._entity.id = id\n  }\n\n  set maxCacheSize(maxCacheSize) {\n    this._maxCacheSize = maxCacheSize\n  }\n  get maxCacheSize() {\n    return this._maxCacheSize\n  }\n\n  get position() {\n    return this._sampledPosition.getValue(Cesium.JulianDate.now())\n  }\n\n  _removePosition() {\n    if (this._cache.length > this._maxCacheSize) {\n      const start = Cesium.JulianDate.addSeconds(this._cache[0], -0.2, new Cesium.JulianDate())\n      const stop = Cesium.JulianDate.addSeconds(this._cache[this._cache.length - this._maxCacheSize], -0.2, new Cesium.JulianDate())\n      this._sampledPosition.removeSamples(\n        new Cesium.TimeInterval({\n          start: start,\n          stop: stop\n        })\n      )\n      this._cache.splice(0, this._cache.length - this._maxCacheSize)\n    }\n  }\n  /**\n   *\n   * @param position\n   * @param interval\n   * @returns\n   */\n  addPosition(position: VcPosition, timeOrInterval: string | number | Cesium.JulianDate) {\n    this._removePosition()\n    let time\n    if (typeof timeOrInterval === 'number') {\n      const now = Cesium.JulianDate.now()\n      time = Cesium.JulianDate.addSeconds(now, timeOrInterval, new Cesium.JulianDate())\n    } else {\n      time = makeJulianDate(timeOrInterval)\n    }\n\n    this._sampledPosition.addSample(time, makeCartesian3(position) as Cesium.Cartesian3)\n    this._lastTime = time!\n    this._cache.push(this._lastTime!)\n\n    return this\n  }\n}\n\nexport default DynamicOverlay\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-18 13:48:30\n * @LastEditTime: 2022-02-08 11:00:20\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\defaultOpts.ts\n */\n\nimport type { VcGeometryPolylineProps } from '@vue-cesium/components/geometries'\nimport type { VcBillboardProps, VcLabelProps, VcPointProps, VcPolygonProps } from '@vue-cesium/components/primitive-collections'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '@vue-cesium/components/primitives'\nimport type { VcDrawingOpts } from '@vue-cesium/utils/drawing-types'\nimport type { VcActionTooltipProps, VcBtnTooltipProps } from '@vue-cesium/utils/types'\n\nconst actionOptions: VcActionTooltipProps = {\n  externalLabel: false,\n  label: '',\n  labelPosition: 'right',\n  hideLabel: false,\n  tabindex: undefined,\n  disable: false,\n  outline: false,\n  push: false,\n  flat: false,\n  unelevated: false,\n  color: 'primary',\n  textColor: undefined,\n  glossy: false,\n  labelClass: undefined,\n  labelStyle: undefined,\n  square: false,\n  tooltip: {\n    delay: 500,\n    anchor: 'bottom middle',\n    offset: [0, 20],\n    tip: undefined\n  }\n}\n\nconst polylinePrimitiveOptsDefault: VcPrimitiveProps & VcPrimitiveGroundPolylineProps = {\n  show: true,\n  enableMouseEvent: true,\n  asynchronous: false,\n  classificationType: 2,\n  appearance: {\n    type: 'PolylineMaterialAppearance',\n    options: {\n      material: {\n        fabric: {\n          type: 'Color',\n          uniforms: {\n            color: '#51ff00'\n          }\n        }\n      }\n    }\n  },\n  depthFailAppearance: {\n    type: 'PolylineMaterialAppearance',\n    options: {\n      material: {\n        fabric: {\n          type: 'PolylineDash',\n          uniforms: {\n            color: [255, 0, 0, 127]\n          }\n        }\n      }\n    }\n  }\n}\n\nconst pointOptsDefault: VcPointProps = {\n  show: true,\n  color: 'rgb(255,229,0)',\n  pixelSize: 8,\n  outlineColor: 'black',\n  outlineWidth: 1,\n  disableDepthTestDistance: Number.POSITIVE_INFINITY\n}\n\nconst billboardOptsDefault: VcBillboardProps = {\n  show: true,\n  disableDepthTestDistance: Number.POSITIVE_INFINITY,\n  verticalOrigin: 1,\n  image: ''\n}\n\nconst polylineOptsDefault: VcGeometryPolylineProps = {\n  width: 2,\n  arcType: 0,\n  ellipsoid: undefined\n}\n\nconst polygonOptsDefault: VcPolygonProps = {\n  show: true,\n  enableMouseEvent: true,\n  asynchronous: false,\n  classificationType: 2,\n  appearance: {\n    type: 'MaterialAppearance',\n    options: {\n      material: {\n        fabric: {\n          type: 'Color',\n          uniforms: {\n            color: [255, 165, 0, 125]\n          }\n        }\n      },\n      faceForward: true,\n      renderState: {\n        cull: {\n          enabled: false\n        },\n        depthTest: {\n          enabled: false\n        }\n      }\n    }\n  }\n}\n\nconst labelOptsDefault: VcLabelProps = {\n  show: true,\n  font: '16px Arial Microsoft YaHei sans-serif',\n  scale: 1,\n  fillColor: 'white',\n  showBackground: true,\n  backgroundColor: { x: 0.165, y: 0.165, z: 0.165, w: 0.8 },\n  backgroundPadding: [7, 5],\n  horizontalOrigin: 0, // center\n  verticalOrigin: 1, // bottom\n  pixelOffset: [0, -9],\n  disableDepthTestDistance: Number.POSITIVE_INFINITY\n}\n\nconst editorOptsDefault: VcBtnTooltipProps = {\n  icon: 'vc-icons-move',\n  size: '24px',\n  color: '#1296db',\n  background: '#fff',\n  round: true,\n  flat: false,\n  label: undefined,\n  stack: false,\n  dense: true,\n  tooltip: {\n    delay: 1000, // 鼠标悬浮多久显示提示信息\n    anchor: 'bottom middle', // 提示信息锚点\n    offset: [0, 20] // 提示信息位置偏移\n  }\n}\n\nconst pointDrawingDefault: VcDrawingOpts = {\n  show: true,\n  drawtip: {\n    show: true,\n    pixelOffset: [32, 32]\n  },\n  billboardOpts: {},\n  labelOpts: {},\n  pointOpts: pointOptsDefault,\n  editorOpts: {\n    delay: 1000,\n    hideDelay: 1000,\n    pixelOffset: [16, -8],\n    move: Object.assign({}, editorOptsDefault),\n    remove: Object.assign({}, editorOptsDefault, {\n      icon: 'vc-icons-remove'\n    })\n  },\n  heightReference: 1,\n  disableDepthTest: true\n}\n\nconst segmentDrawingDefault: VcDrawingOpts = {\n  show: true,\n  showComponentLines: false,\n  drawtip: {\n    show: true,\n    pixelOffset: [32, 32]\n  },\n  pointOpts: pointOptsDefault,\n  polylineOpts: polylineOptsDefault,\n  primitiveOpts: polylinePrimitiveOptsDefault,\n  editorOpts: {\n    pixelOffset: [16, -8],\n    delay: 1000,\n    hideDelay: 1000,\n    move: Object.assign({}, editorOptsDefault),\n    removeAll: Object.assign({}, editorOptsDefault, {\n      icon: 'vc-icons-delete'\n    })\n  },\n  disableDepthTest: true\n}\n\nconst polylineDrawingDefault: VcDrawingOpts = {\n  show: true,\n  drawtip: {\n    show: true,\n    pixelOffset: [32, 32]\n  },\n  pointOpts: pointOptsDefault,\n  polylineOpts: polylineOptsDefault,\n  primitiveOpts: polylinePrimitiveOptsDefault,\n  editorOpts: {\n    pixelOffset: [16, -8],\n    delay: 1000,\n    hideDelay: 1000,\n    move: Object.assign({}, editorOptsDefault),\n    insert: Object.assign({}, editorOptsDefault, {\n      icon: 'vc-icons-insert'\n    }),\n    remove: Object.assign({}, editorOptsDefault, {\n      icon: 'vc-icons-remove'\n    }),\n    removeAll: Object.assign({}, editorOptsDefault, {\n      icon: 'vc-icons-delete'\n    })\n  },\n  loop: false,\n  disableDepthTest: true\n}\n\nconst polygonDrawingDefault: VcDrawingOpts = {\n  show: true,\n  drawtip: {\n    show: true,\n    pixelOffset: [32, 32]\n  },\n  pointOpts: pointOptsDefault,\n  polylineOpts: polylineOptsDefault,\n  primitiveOpts: Object.assign({}, polylinePrimitiveOptsDefault, {\n    depthFailAppearance: {\n      type: 'PolylineMaterialAppearance',\n      options: {\n        material: {\n          fabric: {\n            type: 'Color',\n            uniforms: {\n              color: '#51ff00'\n            }\n          }\n        }\n      }\n    }\n  }),\n  polygonOpts: polygonOptsDefault,\n  editorOpts: {\n    pixelOffset: [16, -8],\n    delay: 1000,\n    hideDelay: 1000,\n    move: Object.assign({}, editorOptsDefault),\n    insert: Object.assign({}, editorOptsDefault, {\n      icon: 'vc-icons-insert'\n    }),\n    remove: Object.assign({}, editorOptsDefault, {\n      icon: 'vc-icons-remove'\n    }),\n    removeAll: Object.assign({}, editorOptsDefault, {\n      icon: 'vc-icons-delete'\n    })\n  },\n  loop: true,\n  disableDepthTest: true\n}\n\nconst rectangleDrawingDefault: VcDrawingOpts = Object.assign({}, polygonDrawingDefault, {\n  pointOpts: Object.assign({}, pointOptsDefault, {\n    show: false\n  }),\n  editorOpts: {\n    pixelOffset: [16, -8],\n    delay: 1000,\n    hideDelay: 1000,\n    move: Object.assign({}, editorOptsDefault),\n    removeAll: Object.assign({}, editorOptsDefault, {\n      icon: 'vc-icons-delete'\n    })\n  },\n  edge: 4,\n  regular: true,\n  disableDepthTest: true\n})\n\nconst circleDrawingDefault: VcDrawingOpts = Object.assign({}, rectangleDrawingDefault, {\n  edge: 360\n})\n\nconst regularDrawingDefault: VcDrawingOpts = Object.assign({}, rectangleDrawingDefault, {\n  edge: 6\n})\n\nconst clearActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-clear',\n  color: 'red'\n})\n\nconst regularDrawingActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-drawing-regular'\n})\n\nconst circleDrawingActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-drawing-circle'\n})\n\nexport {\n  actionOptions,\n  clearActionDefault,\n  editorOptsDefault,\n  pointOptsDefault,\n  billboardOptsDefault,\n  labelOptsDefault,\n  polylineOptsDefault,\n  pointDrawingDefault,\n  segmentDrawingDefault,\n  polylineDrawingDefault,\n  polygonDrawingDefault,\n  rectangleDrawingDefault,\n  circleDrawingDefault,\n  circleDrawingActionDefault,\n  regularDrawingDefault,\n  regularDrawingActionDefault,\n  polylinePrimitiveOptsDefault\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-25 14:46:48\n * @LastEditTime: 2022-01-26 10:17:24\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\props.ts\n */\n\nimport type { VcPointProps } from '@vue-cesium/components/primitive-collections'\nimport { enableMouseEvent, show } from '@vue-cesium/utils/cesium-props'\nimport type { VcDrawTipOpts, VcEditorOpts, VcDrawingPreRenderDatas } from '@vue-cesium/utils/drawing-types'\nimport type { VcActionTooltipProps } from '@vue-cesium/utils/types'\nimport type { PropType } from 'vue'\nimport { clearActionDefault } from './defaultOpts'\n\nexport const useDrawingActionProps = {\n  ...enableMouseEvent,\n  show: Boolean,\n  editable: Boolean,\n  drawtip: Object as PropType<VcDrawTipOpts>,\n  pointOpts: Object as PropType<VcPointProps>,\n  editorOpts: Object as PropType<VcEditorOpts>,\n  mode: Number,\n  preRenderDatas: Array as PropType<VcDrawingPreRenderDatas>\n}\n\nexport const useDrawingFabProps = {\n  ...show,\n  position: {\n    type: String as PropType<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'>,\n    default: 'bottom-left',\n    validator: (v: string) => ['top-right', 'top-left', 'bottom-right', 'bottom-left', 'top', 'right', 'bottom', 'left'].includes(v)\n  },\n  offset: {\n    type: Array,\n    validator: v => v.length === 2\n  },\n  mode: {\n    type: Number as PropType<0 | 1>,\n    default: 1\n  },\n  activeColor: {\n    type: String,\n    default: 'positive'\n  },\n  editable: {\n    type: Boolean\n  },\n  clampToGround: {\n    type: Boolean\n  },\n  clearActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => clearActionDefault\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-13 09:21:13\n * @LastEditTime: 2022-02-18 23:01:57\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\defaultProps.ts\n */\nimport { getDefaultOptionByProps } from '@vue-cesium/utils/util'\nimport type { PropType, ExtractPropTypes } from 'vue'\nimport { MeasureUnits } from '@vue-cesium/shared'\nimport {\n  actionOptions,\n  circleDrawingActionDefault,\n  editorOptsDefault,\n  labelOptsDefault,\n  pointDrawingDefault,\n  pointOptsDefault,\n  polygonDrawingDefault,\n  polylineDrawingDefault,\n  polylineOptsDefault,\n  polylinePrimitiveOptsDefault,\n  regularDrawingActionDefault,\n  segmentDrawingDefault\n} from '@vue-cesium/composables/use-drawing/defaultOpts'\nimport { useDrawingFabProps } from '@vue-cesium/composables/use-drawing/props'\nimport type { VcFabProps } from '../../ui'\nimport type { VcActionTooltipProps, VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport type { VcLabelProps } from '../../primitive-collections'\nimport type {\n  VcComponentDistanceMeasurementOpts,\n  VcDrawingActiveEvt,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcHorizontalMeasurementOpts,\n  VcMeasurementOpts,\n  VcPolylineMeasurementOpts,\n  VcRegularMeasurementOpts\n} from '@vue-cesium/utils/drawing-types'\n\nconst distanceMeasurementActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-measure-distance'\n})\n\nconst distanceMeasurementDefault: VcMeasurementOpts = Object.assign({}, segmentDrawingDefault, {\n  labelOpts: Object.assign({}, labelOptsDefault, {\n    horizontalOrigin: 1, // left\n    verticalOrigin: -1, // top\n    pixelOffset: [10, 10]\n  }) as VcLabelProps,\n  measureUnits: new MeasureUnits(),\n  decimals: {\n    distance: 2,\n    angle: 2\n  },\n  locale: undefined\n})\n\nconst componentDistanceMeasurementActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-measure-component-distance'\n})\n\nconst componentDistanceMeasurementDefault: VcComponentDistanceMeasurementOpts = Object.assign({}, distanceMeasurementDefault, {\n  showComponentLines: true,\n  xLabelOpts: labelOptsDefault,\n  xAngleLabelOpts: Object.assign({}, labelOptsDefault, {\n    horizontalOrigin: 1, // left\n    verticalOrigin: 0, // center\n    pixelOffset: [9, 0]\n  }),\n  yLabelOpts: Object.assign({}, labelOptsDefault, {\n    horizontalOrigin: -1, // right\n    pixelOffset: [-9, 0]\n  }),\n  yAngleLabelOpts: Object.assign({}, labelOptsDefault, {\n    verticalOrigin: -1, // top\n    pixelOffset: [0, 9]\n  })\n})\n\nconst polylineMeasurementActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-measure-polyline-distance'\n})\n\nconst polylineMeasurementDefault: VcPolylineMeasurementOpts = Object.assign({}, polylineDrawingDefault, {\n  measureUnits: new MeasureUnits(),\n  labelOpts: labelOptsDefault,\n  labelsOpts: Object.assign({}, labelOptsDefault, {\n    scale: 0.8,\n    horizontalOrigin: 1, // left\n    verticalOrigin: -1, // tOP,\n    pixelOffset: [5, 5]\n  }),\n  decimals: {\n    distance: 2,\n    angle: 2\n  },\n  showAngleLabel: true,\n  showDistanceLabel: true,\n  locale: undefined,\n  loop: false\n})\n\nconst horizontalMeasurementActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-measure-horizontal-distance'\n})\n\nconst horizontalMeasurementDefault: VcHorizontalMeasurementOpts = Object.assign({}, polylineMeasurementDefault, {\n  dashLineOpts: {\n    width: 2\n  },\n  dashLinePrimitiveOpts: Object.assign({}, polylinePrimitiveOptsDefault, {\n    appearance: {\n      type: 'PolylineMaterialAppearance',\n      options: {\n        material: {\n          fabric: {\n            type: 'PolylineDash',\n            uniforms: {\n              color: [255, 255, 0, 255]\n            }\n          }\n        }\n      }\n    },\n    depthFailAppearance: {\n      type: 'PolylineMaterialAppearance',\n      options: {\n        material: {\n          fabric: {\n            type: 'PolylineDash',\n            uniforms: {\n              color: [255, 255, 0, 255]\n            }\n          }\n        }\n      }\n    }\n  }),\n  labelOpts: Object.assign({}, labelOptsDefault, {\n    horizontalOrigin: 1,\n    verticalOrigin: 1,\n    pixelOffset: [10, -10]\n  }),\n  labelsOpts: Object.assign({}, labelOptsDefault, {\n    scale: 0.8,\n    horizontalOrigin: 1, // left\n    verticalOrigin: -1, // tOP,\n    pixelOffset: [5, 5]\n  }),\n  showDashedLine: true\n})\n\nconst verticalMeasurementActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-measure-vertical-distance'\n})\n\nconst verticalMeasurementDefault: VcMeasurementOpts = Object.assign({}, segmentDrawingDefault, {\n  labelOpts: Object.assign({}, labelOptsDefault, {\n    horizontalOrigin: 1, // left\n    verticalOrigin: -1, // top\n    pixelOffset: [10, 10]\n  }),\n  measureUnits: new MeasureUnits(),\n  decimals: {\n    distance: 2,\n    angle: 2\n  },\n  locale: undefined\n})\n\nconst heightMeasurementActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-measure-height-from-terrain'\n})\n\nconst heightMeasurementDefault: VcMeasurementOpts = Object.assign({}, pointDrawingDefault, {\n  polylineOpts: polylineOptsDefault,\n  labelOpts: Object.assign({}, labelOptsDefault, {\n    horizontalOrigin: 1, // left\n    verticalOrigin: -1, // top\n    pixelOffset: [10, 10]\n  }),\n  editorOpts: {\n    pixelOffset: [16, -8],\n    delay: 1000,\n    hideDelay: 1000,\n    move: Object.assign({}, editorOptsDefault),\n    removeAll: Object.assign({}, editorOptsDefault, {\n      icon: 'vc-icons-delete'\n    })\n  },\n  measureUnits: new MeasureUnits(),\n  decimals: {\n    distance: 2\n  },\n  locale: undefined,\n  primitiveOpts: polylinePrimitiveOptsDefault\n})\n\nconst areaMeasurementActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-measure-area'\n})\n\nconst areaMeasurementDefault: VcPolylineMeasurementOpts = Object.assign({}, polygonDrawingDefault, {\n  labelOpts: labelOptsDefault,\n  labelsOpts: Object.assign({}, labelOptsDefault, {\n    scale: 0.8,\n    horizontalOrigin: 1, // left\n    verticalOrigin: -1, // tOP,\n    pixelOffset: [5, 5]\n  }),\n  showDistanceLabel: true,\n  showAngleLabel: true,\n  measureUnits: new MeasureUnits(),\n  decimals: {\n    area: 2,\n    distance: 2,\n    angle: 2\n  },\n  loop: true,\n  locale: undefined\n})\n\nconst pointMeasurementActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-measure-point-coordinates'\n})\n\nconst pointMeasurementDefault: VcMeasurementOpts = Object.assign({}, pointDrawingDefault, {\n  heightReference: 1, // 0: NONE, 1: CLAMP_TO_GROUND\n  measureUnits: new MeasureUnits(),\n  drawtip: {\n    show: true,\n    pixelOffset: [32, 48]\n  },\n  labelOpts: Object.assign({}, labelOptsDefault, {\n    horizontalOrigin: 1, // left\n    verticalOrigin: 0, // center\n    pixelOffset: [10, 0]\n  }),\n  decimals: {\n    lng: 6,\n    lat: 6,\n    height: 2,\n    slope: 3\n  },\n  locale: undefined\n})\n\nconst rectangleMeasurementActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-drawing-rectangle'\n})\n\nconst rectangleMeasurementDefault: VcRegularMeasurementOpts = Object.assign({}, areaMeasurementDefault, {\n  pointOpts: Object.assign({}, pointOptsDefault, {\n    show: false\n  }),\n  drawtip: {\n    show: true,\n    pixelOffset: [32, 32]\n  },\n  editorOpts: {\n    pixelOffset: [16, -8],\n    delay: 1000,\n    hideDelay: 1000,\n    move: Object.assign({}, editorOptsDefault),\n    removeAll: Object.assign({}, editorOptsDefault, {\n      icon: 'vc-icons-delete'\n    })\n  },\n  edge: 4,\n  loop: false,\n  showAngleLabel: false\n})\n\nconst regularMeasurementDefault: VcRegularMeasurementOpts = Object.assign({}, rectangleMeasurementDefault, {\n  edge: 6,\n  loop: true\n})\n\nconst circleMeasurementDefault: VcRegularMeasurementOpts = Object.assign({}, rectangleMeasurementDefault, {\n  edge: 360,\n  loop: true,\n  showDistanceLabel: false,\n  showAngleLabel: false\n})\n\nconst mainFabDefault = Object.assign({}, actionOptions, {\n  direction: 'right',\n  icon: 'vc-icons-measurement-button',\n  activeIcon: 'vc-icons-measurement-button',\n  verticalActionsAlign: 'center',\n  hideIcon: false,\n  persistent: false,\n  modelValue: true,\n  hideActionOnClick: false,\n  color: 'info'\n} as VcFabProps)\n\nexport const measurementType = [\n  'distance',\n  'component-distance',\n  'polyline',\n  'horizontal',\n  'vertical',\n  'height',\n  'area',\n  'point',\n  'rectangle',\n  'regular',\n  'circle'\n]\nconst isValidMeasurementType = (measurements: string[]) => {\n  let flag = true\n  measurements.forEach(measurement => {\n    if (!measurementType.includes(measurement)) {\n      console.error(`VueCesium: unknown measurement type: ${measurement}`)\n      flag = false\n    }\n  })\n  return flag\n}\n\nconst measurementsProps = {\n  ...useDrawingFabProps,\n  measurements: {\n    type: Array as PropType<\n      Array<\n        'distance' | 'component-distance' | 'polyline' | 'horizontal' | 'vertical' | 'height' | 'area' | 'point' | 'rectangle' | 'regular' | 'circle'\n      >\n    >,\n    default: () => measurementType,\n    validator: isValidMeasurementType\n  },\n  mainFabOpts: {\n    type: Object as PropType<VcActionTooltipProps & VcFabProps>,\n    default: () => mainFabDefault\n  },\n  distanceActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => distanceMeasurementActionDefault\n  },\n  distanceMeasurementOpts: {\n    type: Object as PropType<VcMeasurementOpts>,\n    default: () => distanceMeasurementDefault\n  },\n  componentDistanceActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => componentDistanceMeasurementActionDefault\n  },\n  componentDistanceMeasurementOpts: {\n    type: Object as PropType<VcComponentDistanceMeasurementOpts>,\n    default: () => componentDistanceMeasurementDefault\n  },\n  polylineActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => polylineMeasurementActionDefault\n  },\n  polylineMeasurementOpts: {\n    type: Object as PropType<VcPolylineMeasurementOpts>,\n    default: () => polylineMeasurementDefault\n  },\n  horizontalActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => horizontalMeasurementActionDefault\n  },\n  horizontalMeasurementOpts: {\n    type: Object as PropType<VcHorizontalMeasurementOpts>,\n    default: () => horizontalMeasurementDefault\n  },\n  verticalActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => verticalMeasurementActionDefault\n  },\n  verticalMeasurementOpts: {\n    type: Object as PropType<VcMeasurementOpts>,\n    default: () => verticalMeasurementDefault\n  },\n  heightActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => heightMeasurementActionDefault\n  },\n  heightMeasurementOpts: {\n    type: Object as PropType<VcMeasurementOpts>,\n    default: () => heightMeasurementDefault\n  },\n  areaActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => areaMeasurementActionDefault\n  },\n  areaMeasurementOpts: {\n    type: Object as PropType<VcPolylineMeasurementOpts>,\n    default: () => areaMeasurementDefault\n  },\n  pointActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => pointMeasurementActionDefault\n  },\n  pointMeasurementOpts: {\n    type: Object as PropType<VcMeasurementOpts>,\n    default: () => pointMeasurementDefault\n  },\n  rectangleActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => rectangleMeasurementActionDefault\n  },\n  rectangleMeasurementOpts: {\n    type: Object as PropType<VcRegularMeasurementOpts>,\n    default: () => rectangleMeasurementDefault\n  },\n  regularActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => regularDrawingActionDefault\n  },\n  regularMeasurementOpts: {\n    type: Object as PropType<VcRegularMeasurementOpts>,\n    default: () => regularMeasurementDefault\n  },\n  circleActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => circleDrawingActionDefault\n  },\n  circleMeasurementOpts: {\n    type: Object as PropType<VcRegularMeasurementOpts>,\n    default: () => circleMeasurementDefault\n  }\n}\n// export type VcMeasurementsProps = ExtractPropTypes<typeof measurementsProps>\nconst defaultOptions = getDefaultOptionByProps<VcMeasurementsProps>(measurementsProps)\n\nexport {\n  measurementsProps,\n  defaultOptions,\n  distanceMeasurementActionDefault,\n  distanceMeasurementDefault,\n  componentDistanceMeasurementActionDefault,\n  componentDistanceMeasurementDefault,\n  polylineMeasurementActionDefault,\n  polylineMeasurementDefault,\n  horizontalMeasurementActionDefault,\n  horizontalMeasurementDefault,\n  verticalMeasurementActionDefault,\n  verticalMeasurementDefault,\n  heightMeasurementActionDefault,\n  heightMeasurementDefault,\n  areaMeasurementActionDefault,\n  areaMeasurementDefault,\n  pointMeasurementActionDefault,\n  pointMeasurementDefault,\n  rectangleMeasurementActionDefault,\n  rectangleMeasurementDefault,\n  regularMeasurementDefault,\n  circleMeasurementDefault,\n  mainFabDefault\n}\n\nexport type VcMeasurementsProps = {\n  /**\n   * Specify the position of the VcMeasurements.\n   * Default value: bottom-left\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcMeasurements horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify whether the measurement result is visible.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify the interactive drawing mode, 0 means continuous drawing, and 1 means drawing ends once.\n   * Default value: 1\n   */\n  mode?: number\n  /**\n   * Specify which measurement instances to load.\n   * Default value: ['distance', 'component-distance', 'polyline', 'horizontal', 'vertical', 'height', 'area', 'point', 'rectangle', 'regular', 'circle']\n   */\n  measurements?: Array<\n    'distance' | 'component-distance' | 'polyline' | 'horizontal' | 'vertical' | 'height' | 'area' | 'point' | 'rectangle' | 'regular' | 'circle'\n  >\n  /**\n   * Specify the color when the measurement instance is activated.\n   * Default value: positive\n   */\n  activeColor?: string\n  /**\n   * Specify whether the measurement result can be edited.\n   * Default value: false\n   */\n  editable?: boolean\n  /**\n   * Specify whether the drawing result object is attached to the ground or 3dtiles. Only polyline and polygon objects work.\n   * Default value: false\n   */\n  clampToGround?: boolean\n  /**\n   * Specify the style options of the floating action button of the VcMeasurements component.\n   */\n  mainFabOpts?: VcActionTooltipProps & VcFabProps\n  /**\n   * Specify the style options of the distance measurement action button.\n   */\n  distanceActionOpts?: VcActionTooltipProps\n  /**\n   * Specify distance measurement options.\n   */\n  distanceMeasurementOpts?: VcMeasurementOpts\n  /**\n   * Specify the style options of the component distance measurement action button.\n   */\n  componentDistanceActionOpts?: VcActionTooltipProps\n  /**\n   * Specify the component distance measurement options.\n   */\n  componentDistanceMeasurementOpts?: VcMeasurementOpts\n  /**\n   * Specify the style options of the polyline distance measurement action button.\n   */\n  polylineActionOpts?: VcActionTooltipProps\n  /**\n   * Specify the polyline distance measurement options.\n   */\n  polylineMeasurementOpts?: VcMeasurementOpts\n  /**\n   * Specify the style options of the horizontal distance measurement action button.\n   */\n  horizontalActionOpts?: VcActionTooltipProps\n  /**\n   * Specify the horizontal distance measurement options.\n   */\n  horizontalMeasurementOpts?: VcMeasurementOpts\n  /**\n   * Specify the style options of the vertical distance measurement action button.\n   */\n  verticalActionOpts?: VcActionTooltipProps\n  /**\n   * Specify the vertical distance measurement options.\n   */\n  verticalMeasurementOpts?: VcMeasurementOpts\n  /**\n   * Specify the style options of the height measurement action button.\n   */\n  heightActionOpts?: VcActionTooltipProps\n  /**\n   * Specify the height measurement options.\n   */\n  heightMeasurementOpts?: VcMeasurementOpts\n  /**\n   * Specify the style options of the area measurement action button.\n   */\n  areaActionOpts?: VcActionTooltipProps\n  /**\n   * Specify the area measurement options.\n   */\n  areaMeasurementOpts?: VcMeasurementOpts\n  /**\n   * Specify the style options of the point measurement action button.\n   */\n  pointActionOpts?: VcActionTooltipProps\n  /**\n   * Specify the point measurement options.\n   */\n  pointMeasurementOpts?: VcMeasurementOpts\n  /**\n   * Specify the style options of the rectangle measurement action button.\n   */\n  rectangleActionOpts?: VcActionTooltipProps\n  /**\n   * Specify the rectangle measurement options.\n   */\n  rectangleMeasurementOpts?: VcMeasurementOpts\n  /**\n   * Specify the style options of the circle measurement action button.\n   */\n  circleActionOpts?: VcActionTooltipProps\n  /**\n   * Specify the circle measurement options.\n   */\n  circleMeasurementOpts?: VcMeasurementOpts\n  /**\n   * Specify the style options of the regular measurement action button.\n   */\n  regularActionOpts?: VcActionTooltipProps\n  /**\n   * Specify the regular measurement options.\n   */\n  regularMeasurementOpts?: VcMeasurementOpts\n  /**\n   * Specify the style options of the clear action button.\n   */\n  clearActionOpts?: VcActionTooltipProps\n  /**\n   * Triggers before the VcMeasurements is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcMeasurements is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcMeasurements is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the measurement action is actived.\n   */\n  onActiveEvt?: (evt: VcDrawingActiveEvt, viewer: Cesium.Viewer) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt, viewer: Cesium.Viewer) => void\n  /**\n   * Triggers when the editor button is clicked.\n   */\n  onEditorEvt?: (evt: VcDrawingEditorEvt, viewer: Cesium.Viewer) => void\n  /**\n   * Triggers when the mouse is over or out on the drawing point.\n   */\n  onMouseEvt?: (evt: VcDrawingMouseEvt, viewer: Cesium.Viewer) => void\n  /**\n   * Triggers when the floating button is expanded or collapsed.\n   */\n  onFabUpdated: (value: boolean) => void\n}\n","import type { ExtractPropTypes, CSSProperties, TeleportProps, PropType, WatchStopHandle } from 'vue'\nimport { defineComponent, getCurrentInstance, ref, h, reactive, createCommentVNode, watch, onUnmounted } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { $ } from '@vue-cesium/utils/private/vm'\nimport { useCommon } from '@vue-cesium/composables'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { position, pixelOffset, show } from '@vue-cesium/utils/cesium-props'\nimport { makeCartesian2, makeCartesian3 } from '@vue-cesium/utils/cesium-helpers'\nimport usePortal from '@vue-cesium/composables/private/use-portal'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const htmlOverlayProps = {\n  ...position,\n  ...pixelOffset,\n  ...show,\n  autoHidden: {\n    type: Boolean,\n    default: true\n  },\n  customClass: String,\n  teleport: Object as PropType<TeleportProps>\n}\nconst emits = {\n  ...commonEmits,\n  mouseenter: (evt: MouseEvent) => true,\n  mouseleave: (evt: MouseEvent) => true,\n  click: (evt: MouseEvent) => true\n}\nexport default defineComponent({\n  name: 'VcOverlayHtml',\n  props: htmlOverlayProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverlayHtml'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const canRender = ref(false)\n    const rootRef = ref<HTMLElement>(null!)\n    const rootStyle = reactive<CSSProperties>({})\n    const offset = ref<Cesium.Cartesian2>(null!)\n    const position = ref<Cesium.Cartesian3>(null!)\n    const lastCanvasPosition = ref<Cesium.Cartesian2>(null!)\n\n    // watcch\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => props.position,\n        val => {\n          position.value = makeCartesian3(val as any, $services.viewer.scene.globe.ellipsoid) as Cesium.Cartesian3\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.pixelOffset,\n        val => {\n          offset.value = makeCartesian2(val) as Cesium.Cartesian2\n        }\n      )\n    )\n    // methods\n    instance.createCesiumObject = async () => {\n      return $(rootRef)\n    }\n    instance.mount = async () => {\n      const { viewer } = $services\n      canRender.value = true\n      showPortal()\n      offset.value = makeCartesian2(props.pixelOffset) as Cesium.Cartesian2\n      position.value = makeCartesian3(props.position!, viewer.scene.globe.ellipsoid) as Cesium.Cartesian3\n      viewer.scene.preRender.addEventListener(onPreRender)\n      return true\n    }\n    instance.unmount = async () => {\n      const { viewer } = $services\n      viewer.scene.preRender.removeEventListener(onPreRender)\n      canRender.value = false\n      hidePortal()\n      return true\n    }\n    const onPreRender = () => {\n      const { viewer } = $services\n      if (position.value) {\n        const canvasPosition = viewer.scene.cartesianToCanvasCoordinates(position.value, {} as any)\n        if (Cesium.defined(canvasPosition) && !Cesium.Cartesian2.equals(lastCanvasPosition.value, canvasPosition)) {\n          rootStyle.left = canvasPosition.x + offset.value.x + 'px'\n          rootStyle.top = canvasPosition.y + offset.value.y + 'px'\n\n          if (props.autoHidden) {\n            const cameraPosition = viewer.camera.position\n            const cartographicPosition = viewer.scene.globe.ellipsoid.cartesianToCartographic(cameraPosition)\n            if (Cesium.defined(cartographicPosition)) {\n              let cameraHeight = cartographicPosition.height\n              cameraHeight += 1 * viewer.scene.globe.ellipsoid.maximumRadius\n              if (Cesium.Cartesian3.distance(cameraPosition, position.value) > cameraHeight || !props.show) {\n                rootStyle.display = 'none'\n              } else {\n                rootStyle.display = 'block'\n              }\n            }\n          } else {\n            rootStyle.display = 'block'\n          }\n        }\n\n        lastCanvasPosition.value = canvasPosition\n      }\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    const renderContent = () => {\n      if (canRender.value) {\n        return h(\n          'div',\n          {\n            ref: rootRef,\n            class: `vc-html-container${props.customClass ? ' ' + props.customClass : ''}`,\n            style: rootStyle,\n            onMouseenter: onMouseenter,\n            onMouseleave: onMouseleave,\n            onClick: onClick\n          },\n          hSlot(ctx.slots.default)\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n\n    const onClick = evt => {\n      ctx.emit('click', evt)\n    }\n\n    const onMouseenter = evt => {\n      ctx.emit('mouseenter', evt)\n    }\n\n    const onMouseleave = evt => {\n      ctx.emit('mouseleave', evt)\n    }\n\n    const renderPortalContent = () => {\n      return renderContent()\n    }\n\n    const { showPortal, hidePortal, renderPortal } = usePortal(instance, rootRef, renderPortalContent)\n    if (props.teleport && props.teleport.to && !props.teleport.disabled) {\n      return renderPortal\n    } else {\n      return () => renderContent()\n    }\n  }\n})\n\nexport type VcOverlayHtmlProps = ExtractPropTypes<typeof htmlOverlayProps>\nexport type VcOverlayHtmlEmits = typeof emits\n","/*\r\n * heatmap.js v2.0.5 | JavaScript Heatmap Library\r\n *\r\n * Copyright 2008-2016 Patrick Wied <heatmapjs@patrick-wied.at> - All rights reserved.\r\n * Dual licensed under MIT and Beerware license\r\n *\r\n * :: 2016-09-05 01:16\r\n */\r\n;(function (name, context, factory) {\r\n\r\n  // Supports UMD. AMD, CommonJS/Node.js and browser context\r\n  if (typeof module !== \"undefined\" && module.exports) {\r\n    module.exports = factory();\r\n  } else if (typeof define === \"function\" && define.amd) {\r\n    define(factory);\r\n  } else {\r\n    context[name] = factory();\r\n  }\r\n\r\n})(\"h337\", this, function () {\r\n\r\n// Heatmap Config stores default values and will be merged with instance config\r\nvar HeatmapConfig = {\r\n  defaultRadius: 40,\r\n  defaultRenderer: 'canvas2d',\r\n  defaultGradient: { 0.25: \"rgb(0,0,255)\", 0.55: \"rgb(0,255,0)\", 0.85: \"yellow\", 1.0: \"rgb(255,0,0)\"},\r\n  defaultMaxOpacity: 1,\r\n  defaultMinOpacity: 0,\r\n  defaultBlur: .85,\r\n  defaultXField: 'x',\r\n  defaultYField: 'y',\r\n  defaultValueField: 'value',\r\n  plugins: {}\r\n};\r\nvar Store = (function StoreClosure() {\r\n\r\n  var Store = function Store(config) {\r\n    this._coordinator = {};\r\n    this._data = [];\r\n    this._radi = [];\r\n    this._min = 10;\r\n    this._max = 1;\r\n    this._xField = config['xField'] || config.defaultXField;\r\n    this._yField = config['yField'] || config.defaultYField;\r\n    this._valueField = config['valueField'] || config.defaultValueField;\r\n\r\n    if (config[\"radius\"]) {\r\n      this._cfgRadius = config[\"radius\"];\r\n    }\r\n  };\r\n\r\n  var defaultRadius = HeatmapConfig.defaultRadius;\r\n\r\n  Store.prototype = {\r\n    // when forceRender = false -> called from setData, omits renderall event\r\n    _organiseData: function(dataPoint, forceRender) {\r\n        var x = dataPoint[this._xField];\r\n        var y = dataPoint[this._yField];\r\n        var radi = this._radi;\r\n        var store = this._data;\r\n        var max = this._max;\r\n        var min = this._min;\r\n        var value = dataPoint[this._valueField] || 1;\r\n        var radius = dataPoint.radius || this._cfgRadius || defaultRadius;\r\n\r\n        if (!store[x]) {\r\n          store[x] = [];\r\n          radi[x] = [];\r\n        }\r\n\r\n        if (!store[x][y]) {\r\n          store[x][y] = value;\r\n          radi[x][y] = radius;\r\n        } else {\r\n          store[x][y] += value;\r\n        }\r\n        var storedVal = store[x][y];\r\n\r\n        if (storedVal > max) {\r\n          if (!forceRender) {\r\n            this._max = storedVal;\r\n          } else {\r\n            this.setDataMax(storedVal);\r\n          }\r\n          return false;\r\n        } else if (storedVal < min) {\r\n          if (!forceRender) {\r\n            this._min = storedVal;\r\n          } else {\r\n            this.setDataMin(storedVal);\r\n          }\r\n          return false;\r\n        } else {\r\n          return {\r\n            x: x,\r\n            y: y,\r\n            value: value,\r\n            radius: radius,\r\n            min: min,\r\n            max: max\r\n          };\r\n        }\r\n    },\r\n    _unOrganizeData: function() {\r\n      var unorganizedData = [];\r\n      var data = this._data;\r\n      var radi = this._radi;\r\n\r\n      for (var x in data) {\r\n        for (var y in data[x]) {\r\n\r\n          unorganizedData.push({\r\n            x: x,\r\n            y: y,\r\n            radius: radi[x][y],\r\n            value: data[x][y]\r\n          });\r\n\r\n        }\r\n      }\r\n      return {\r\n        min: this._min,\r\n        max: this._max,\r\n        data: unorganizedData\r\n      };\r\n    },\r\n    _onExtremaChange: function() {\r\n      this._coordinator.emit('extremachange', {\r\n        min: this._min,\r\n        max: this._max\r\n      });\r\n    },\r\n    addData: function() {\r\n      if (arguments[0].length > 0) {\r\n        var dataArr = arguments[0];\r\n        var dataLen = dataArr.length;\r\n        while (dataLen--) {\r\n          this.addData.call(this, dataArr[dataLen]);\r\n        }\r\n      } else {\r\n        // add to store\r\n        var organisedEntry = this._organiseData(arguments[0], true);\r\n        if (organisedEntry) {\r\n          // if it's the first datapoint initialize the extremas with it\r\n          if (this._data.length === 0) {\r\n            this._min = this._max = organisedEntry.value;\r\n          }\r\n          this._coordinator.emit('renderpartial', {\r\n            min: this._min,\r\n            max: this._max,\r\n            data: [organisedEntry]\r\n          });\r\n        }\r\n      }\r\n      return this;\r\n    },\r\n    setData: function(data) {\r\n      var dataPoints = data.data;\r\n      var pointsLen = dataPoints.length;\r\n\r\n\r\n      // reset data arrays\r\n      this._data = [];\r\n      this._radi = [];\r\n\r\n      for(var i = 0; i < pointsLen; i++) {\r\n        this._organiseData(dataPoints[i], false);\r\n      }\r\n      this._max = data.max;\r\n      this._min = data.min || 0;\r\n\r\n      this._onExtremaChange();\r\n      this._coordinator.emit('renderall', this._getInternalData());\r\n      return this;\r\n    },\r\n    removeData: function() {\r\n      // TODO: implement\r\n    },\r\n    setDataMax: function(max) {\r\n      this._max = max;\r\n      this._onExtremaChange();\r\n      this._coordinator.emit('renderall', this._getInternalData());\r\n      return this;\r\n    },\r\n    setDataMin: function(min) {\r\n      this._min = min;\r\n      this._onExtremaChange();\r\n      this._coordinator.emit('renderall', this._getInternalData());\r\n      return this;\r\n    },\r\n    setCoordinator: function(coordinator) {\r\n      this._coordinator = coordinator;\r\n    },\r\n    _getInternalData: function() {\r\n      return {\r\n        max: this._max,\r\n        min: this._min,\r\n        data: this._data,\r\n        radi: this._radi\r\n      };\r\n    },\r\n    getData: function() {\r\n      return this._unOrganizeData();\r\n    }/*,\r\n\r\n      TODO: rethink.\r\n\r\n    getValueAt: function(point) {\r\n      var value;\r\n      var radius = 100;\r\n      var x = point.x;\r\n      var y = point.y;\r\n      var data = this._data;\r\n\r\n      if (data[x] && data[x][y]) {\r\n        return data[x][y];\r\n      } else {\r\n        var values = [];\r\n        // radial search for datapoints based on default radius\r\n        for(var distance = 1; distance < radius; distance++) {\r\n          var neighbors = distance * 2 +1;\r\n          var startX = x - distance;\r\n          var startY = y - distance;\r\n\r\n          for(var i = 0; i < neighbors; i++) {\r\n            for (var o = 0; o < neighbors; o++) {\r\n              if ((i == 0 || i == neighbors-1) || (o == 0 || o == neighbors-1)) {\r\n                if (data[startY+i] && data[startY+i][startX+o]) {\r\n                  values.push(data[startY+i][startX+o]);\r\n                }\r\n              } else {\r\n                continue;\r\n              }\r\n            }\r\n          }\r\n        }\r\n        if (values.length > 0) {\r\n          return Math.max.apply(Math, values);\r\n        }\r\n      }\r\n      return false;\r\n    }*/\r\n  };\r\n\r\n\r\n  return Store;\r\n})();\r\n\r\nvar Canvas2dRenderer = (function Canvas2dRendererClosure() {\r\n\r\n  var _getColorPalette = function(config) {\r\n    var gradientConfig = config.gradient || config.defaultGradient;\r\n    var paletteCanvas = document.createElement('canvas');\r\n    var paletteCtx = paletteCanvas.getContext('2d');\r\n\r\n    paletteCanvas.width = 256;\r\n    paletteCanvas.height = 1;\r\n\r\n    var gradient = paletteCtx.createLinearGradient(0, 0, 256, 1);\r\n    for (var key in gradientConfig) {\r\n      gradient.addColorStop(key, gradientConfig[key]);\r\n    }\r\n\r\n    paletteCtx.fillStyle = gradient;\r\n    paletteCtx.fillRect(0, 0, 256, 1);\r\n\r\n    return paletteCtx.getImageData(0, 0, 256, 1).data;\r\n  };\r\n\r\n  var _getPointTemplate = function(radius, blurFactor) {\r\n    var tplCanvas = document.createElement('canvas');\r\n    var tplCtx = tplCanvas.getContext('2d');\r\n    var x = radius;\r\n    var y = radius;\r\n    tplCanvas.width = tplCanvas.height = radius*2;\r\n\r\n    if (blurFactor == 1) {\r\n      tplCtx.beginPath();\r\n      tplCtx.arc(x, y, radius, 0, 2 * Math.PI, false);\r\n      tplCtx.fillStyle = 'rgba(0,0,0,1)';\r\n      tplCtx.fill();\r\n    } else {\r\n      var gradient = tplCtx.createRadialGradient(x, y, radius*blurFactor, x, y, radius);\r\n      gradient.addColorStop(0, 'rgba(0,0,0,1)');\r\n      gradient.addColorStop(1, 'rgba(0,0,0,0)');\r\n      tplCtx.fillStyle = gradient;\r\n      tplCtx.fillRect(0, 0, 2*radius, 2*radius);\r\n    }\r\n\r\n\r\n\r\n    return tplCanvas;\r\n  };\r\n\r\n  var _prepareData = function(data) {\r\n    var renderData = [];\r\n    var min = data.min;\r\n    var max = data.max;\r\n    var radi = data.radi;\r\n    var data = data.data;\r\n\r\n    var xValues = Object.keys(data);\r\n    var xValuesLen = xValues.length;\r\n\r\n    while(xValuesLen--) {\r\n      var xValue = xValues[xValuesLen];\r\n      var yValues = Object.keys(data[xValue]);\r\n      var yValuesLen = yValues.length;\r\n      while(yValuesLen--) {\r\n        var yValue = yValues[yValuesLen];\r\n        var value = data[xValue][yValue];\r\n        var radius = radi[xValue][yValue];\r\n        renderData.push({\r\n          x: xValue,\r\n          y: yValue,\r\n          value: value,\r\n          radius: radius\r\n        });\r\n      }\r\n    }\r\n\r\n    return {\r\n      min: min,\r\n      max: max,\r\n      data: renderData\r\n    };\r\n  };\r\n\r\n\r\n  function Canvas2dRenderer(config) {\r\n    var container = config.container;\r\n    var shadowCanvas = this.shadowCanvas = document.createElement('canvas');\r\n    var canvas = this.canvas = config.canvas || document.createElement('canvas');\r\n    var renderBoundaries = this._renderBoundaries = [10000, 10000, 0, 0];\r\n\r\n    var computed = getComputedStyle(config.container) || {};\r\n\r\n    canvas.className = 'heatmap-canvas';\r\n\r\n    this._width = canvas.width = shadowCanvas.width = config.width || +(computed.width.replace(/px/,''));\r\n    this._height = canvas.height = shadowCanvas.height = config.height || +(computed.height.replace(/px/,''));\r\n\r\n    this.shadowCtx = shadowCanvas.getContext('2d');\r\n    this.ctx = canvas.getContext('2d');\r\n\r\n    // @TODO:\r\n    // conditional wrapper\r\n\r\n    canvas.style.cssText = shadowCanvas.style.cssText = 'position:absolute;left:0;top:0;';\r\n\r\n    container.style.position = 'relative';\r\n    container.appendChild(canvas);\r\n\r\n    this._palette = _getColorPalette(config);\r\n    this._templates = {};\r\n\r\n    this._setStyles(config);\r\n  };\r\n\r\n  Canvas2dRenderer.prototype = {\r\n    renderPartial: function(data) {\r\n      if (data.data.length > 0) {\r\n        this._drawAlpha(data);\r\n        this._colorize();\r\n      }\r\n    },\r\n    renderAll: function(data) {\r\n      // reset render boundaries\r\n      this._clear();\r\n      if (data.data.length > 0) {\r\n        this._drawAlpha(_prepareData(data));\r\n        this._colorize();\r\n      }\r\n    },\r\n    _updateGradient: function(config) {\r\n      this._palette = _getColorPalette(config);\r\n    },\r\n    updateConfig: function(config) {\r\n      if (config['gradient']) {\r\n        this._updateGradient(config);\r\n      }\r\n      this._setStyles(config);\r\n    },\r\n    setDimensions: function(width, height) {\r\n      this._width = width;\r\n      this._height = height;\r\n      this.canvas.width = this.shadowCanvas.width = width;\r\n      this.canvas.height = this.shadowCanvas.height = height;\r\n    },\r\n    _clear: function() {\r\n      this.shadowCtx.clearRect(0, 0, this._width, this._height);\r\n      this.ctx.clearRect(0, 0, this._width, this._height);\r\n    },\r\n    _setStyles: function(config) {\r\n      this._blur = (config.blur == 0)?0:(config.blur || config.defaultBlur);\r\n\r\n      if (config.backgroundColor) {\r\n        this.canvas.style.backgroundColor = config.backgroundColor;\r\n      }\r\n\r\n      this._width = this.canvas.width = this.shadowCanvas.width = config.width || this._width;\r\n      this._height = this.canvas.height = this.shadowCanvas.height = config.height || this._height;\r\n\r\n\r\n      this._opacity = (config.opacity || 0) * 255;\r\n      this._maxOpacity = (config.maxOpacity || config.defaultMaxOpacity) * 255;\r\n      this._minOpacity = (config.minOpacity || config.defaultMinOpacity) * 255;\r\n      this._useGradientOpacity = !!config.useGradientOpacity;\r\n    },\r\n    _drawAlpha: function(data) {\r\n      var min = this._min = data.min;\r\n      var max = this._max = data.max;\r\n      var data = data.data || [];\r\n      var dataLen = data.length;\r\n      // on a point basis?\r\n      var blur = 1 - this._blur;\r\n\r\n      while(dataLen--) {\r\n\r\n        var point = data[dataLen];\r\n\r\n        var x = point.x;\r\n        var y = point.y;\r\n        var radius = point.radius;\r\n        // if value is bigger than max\r\n        // use max as value\r\n        var value = Math.min(point.value, max);\r\n        var rectX = x - radius;\r\n        var rectY = y - radius;\r\n        var shadowCtx = this.shadowCtx;\r\n\r\n\r\n\r\n\r\n        var tpl;\r\n        if (!this._templates[radius]) {\r\n          this._templates[radius] = tpl = _getPointTemplate(radius, blur);\r\n        } else {\r\n          tpl = this._templates[radius];\r\n        }\r\n        // value from minimum / value range\r\n        // => [0, 1]\r\n        var templateAlpha = (value-min)/(max-min);\r\n        // this fixes #176: small values are not visible because globalAlpha < .01 cannot be read from imageData\r\n        shadowCtx.globalAlpha = templateAlpha < .01 ? .01 : templateAlpha;\r\n\r\n        shadowCtx.drawImage(tpl, rectX, rectY);\r\n\r\n        // update renderBoundaries\r\n        if (rectX < this._renderBoundaries[0]) {\r\n            this._renderBoundaries[0] = rectX;\r\n          }\r\n          if (rectY < this._renderBoundaries[1]) {\r\n            this._renderBoundaries[1] = rectY;\r\n          }\r\n          if (rectX + 2*radius > this._renderBoundaries[2]) {\r\n            this._renderBoundaries[2] = rectX + 2*radius;\r\n          }\r\n          if (rectY + 2*radius > this._renderBoundaries[3]) {\r\n            this._renderBoundaries[3] = rectY + 2*radius;\r\n          }\r\n\r\n      }\r\n    },\r\n    _colorize: function() {\r\n      var x = this._renderBoundaries[0];\r\n      var y = this._renderBoundaries[1];\r\n      var width = this._renderBoundaries[2] - x;\r\n      var height = this._renderBoundaries[3] - y;\r\n      var maxWidth = this._width;\r\n      var maxHeight = this._height;\r\n      var opacity = this._opacity;\r\n      var maxOpacity = this._maxOpacity;\r\n      var minOpacity = this._minOpacity;\r\n      var useGradientOpacity = this._useGradientOpacity;\r\n\r\n      if (x < 0) {\r\n        x = 0;\r\n      }\r\n      if (y < 0) {\r\n        y = 0;\r\n      }\r\n      if (x + width > maxWidth) {\r\n        width = maxWidth - x;\r\n      }\r\n      if (y + height > maxHeight) {\r\n        height = maxHeight - y;\r\n      }\r\n\r\n      var img = this.shadowCtx.getImageData(x, y, width, height);\r\n      var imgData = img.data;\r\n      var len = imgData.length;\r\n      var palette = this._palette;\r\n\r\n\r\n      for (var i = 3; i < len; i+= 4) {\r\n        var alpha = imgData[i];\r\n        var offset = alpha * 4;\r\n\r\n\r\n        if (!offset) {\r\n          continue;\r\n        }\r\n\r\n        var finalAlpha;\r\n        if (opacity > 0) {\r\n          finalAlpha = opacity;\r\n        } else {\r\n          if (alpha < maxOpacity) {\r\n            if (alpha < minOpacity) {\r\n              finalAlpha = minOpacity;\r\n            } else {\r\n              finalAlpha = alpha;\r\n            }\r\n          } else {\r\n            finalAlpha = maxOpacity;\r\n          }\r\n        }\r\n\r\n        imgData[i-3] = palette[offset];\r\n        imgData[i-2] = palette[offset + 1];\r\n        imgData[i-1] = palette[offset + 2];\r\n        imgData[i] = useGradientOpacity ? palette[offset + 3] : finalAlpha;\r\n\r\n      }\r\n\r\n      this.ctx.putImageData(img, x, y);\r\n\r\n      this._renderBoundaries = [1000, 1000, 0, 0];\r\n\r\n    },\r\n    getValueAt: function(point) {\r\n      var value;\r\n      var shadowCtx = this.shadowCtx;\r\n      var img = shadowCtx.getImageData(point.x, point.y, 1, 1);\r\n      var data = img.data[3];\r\n      var max = this._max;\r\n      var min = this._min;\r\n\r\n      value = (Math.abs(max-min) * (data/255)) >> 0;\r\n\r\n      return value;\r\n    },\r\n    getDataURL: function() {\r\n      return this.canvas.toDataURL();\r\n    }\r\n  };\r\n\r\n\r\n  return Canvas2dRenderer;\r\n})();\r\n\r\n\r\nvar Renderer = (function RendererClosure() {\r\n\r\n  var rendererFn = false;\r\n\r\n  if (HeatmapConfig['defaultRenderer'] === 'canvas2d') {\r\n    rendererFn = Canvas2dRenderer;\r\n  }\r\n\r\n  return rendererFn;\r\n})();\r\n\r\n\r\nvar Util = {\r\n  merge: function() {\r\n    var merged = {};\r\n    var argsLen = arguments.length;\r\n    for (var i = 0; i < argsLen; i++) {\r\n      var obj = arguments[i]\r\n      for (var key in obj) {\r\n        merged[key] = obj[key];\r\n      }\r\n    }\r\n    return merged;\r\n  }\r\n};\r\n// Heatmap Constructor\r\nvar Heatmap = (function HeatmapClosure() {\r\n\r\n  var Coordinator = (function CoordinatorClosure() {\r\n\r\n    function Coordinator() {\r\n      this.cStore = {};\r\n    };\r\n\r\n    Coordinator.prototype = {\r\n      on: function(evtName, callback, scope) {\r\n        var cStore = this.cStore;\r\n\r\n        if (!cStore[evtName]) {\r\n          cStore[evtName] = [];\r\n        }\r\n        cStore[evtName].push((function(data) {\r\n            return callback.call(scope, data);\r\n        }));\r\n      },\r\n      emit: function(evtName, data) {\r\n        var cStore = this.cStore;\r\n        if (cStore[evtName]) {\r\n          var len = cStore[evtName].length;\r\n          for (var i=0; i<len; i++) {\r\n            var callback = cStore[evtName][i];\r\n            callback(data);\r\n          }\r\n        }\r\n      }\r\n    };\r\n\r\n    return Coordinator;\r\n  })();\r\n\r\n\r\n  var _connect = function(scope) {\r\n    var renderer = scope._renderer;\r\n    var coordinator = scope._coordinator;\r\n    var store = scope._store;\r\n\r\n    coordinator.on('renderpartial', renderer.renderPartial, renderer);\r\n    coordinator.on('renderall', renderer.renderAll, renderer);\r\n    coordinator.on('extremachange', function(data) {\r\n      scope._config.onExtremaChange &&\r\n      scope._config.onExtremaChange({\r\n        min: data.min,\r\n        max: data.max,\r\n        gradient: scope._config['gradient'] || scope._config['defaultGradient']\r\n      });\r\n    });\r\n    store.setCoordinator(coordinator);\r\n  };\r\n\r\n\r\n  function Heatmap() {\r\n    var config = this._config = Util.merge(HeatmapConfig, arguments[0] || {});\r\n    this._coordinator = new Coordinator();\r\n    if (config['plugin']) {\r\n      var pluginToLoad = config['plugin'];\r\n      if (!HeatmapConfig.plugins[pluginToLoad]) {\r\n        throw new Error('Plugin \\''+ pluginToLoad + '\\' not found. Maybe it was not registered.');\r\n      } else {\r\n        var plugin = HeatmapConfig.plugins[pluginToLoad];\r\n        // set plugin renderer and store\r\n        this._renderer = new plugin.renderer(config);\r\n        this._store = new plugin.store(config);\r\n      }\r\n    } else {\r\n      this._renderer = new Renderer(config);\r\n      this._store = new Store(config);\r\n    }\r\n    _connect(this);\r\n  };\r\n\r\n  // @TODO:\r\n  // add API documentation\r\n  Heatmap.prototype = {\r\n    addData: function() {\r\n      this._store.addData.apply(this._store, arguments);\r\n      return this;\r\n    },\r\n    removeData: function() {\r\n      this._store.removeData && this._store.removeData.apply(this._store, arguments);\r\n      return this;\r\n    },\r\n    setData: function() {\r\n      this._store.setData.apply(this._store, arguments);\r\n      return this;\r\n    },\r\n    setDataMax: function() {\r\n      this._store.setDataMax.apply(this._store, arguments);\r\n      return this;\r\n    },\r\n    setDataMin: function() {\r\n      this._store.setDataMin.apply(this._store, arguments);\r\n      return this;\r\n    },\r\n    configure: function(config) {\r\n      this._config = Util.merge(this._config, config);\r\n      this._renderer.updateConfig(this._config);\r\n      this._coordinator.emit('renderall', this._store._getInternalData());\r\n      return this;\r\n    },\r\n    repaint: function() {\r\n      this._coordinator.emit('renderall', this._store._getInternalData());\r\n      return this;\r\n    },\r\n    getData: function() {\r\n      return this._store.getData();\r\n    },\r\n    getDataURL: function() {\r\n      return this._renderer.getDataURL();\r\n    },\r\n    getValueAt: function(point) {\r\n\r\n      if (this._store.getValueAt) {\r\n        return this._store.getValueAt(point);\r\n      } else  if (this._renderer.getValueAt) {\r\n        return this._renderer.getValueAt(point);\r\n      } else {\r\n        return null;\r\n      }\r\n    }\r\n  };\r\n\r\n  return Heatmap;\r\n\r\n})();\r\n\r\n\r\n// core\r\nvar heatmapFactory = {\r\n  create: function(config) {\r\n    return new Heatmap(config);\r\n  },\r\n  register: function(pluginKey, plugin) {\r\n    HeatmapConfig.plugins[pluginKey] = plugin;\r\n  }\r\n};\r\n\r\nreturn heatmapFactory;\r\n\r\n\r\n});\r\n","import type { ExtractPropTypes, PropType, ExtractDefaultPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { EntityEmitType, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useCommon } from '@vue-cesium/composables/index'\nimport { position, plane, enableMouseEvent, show, viewFrom } from '@vue-cesium/utils/cesium-props'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits, pickEventEmits } from '@vue-cesium/utils/emits'\nimport { VcGraphicsBillboardProps } from '../../graphics'\n\nexport const entityProps = {\n  id: String,\n  name: String,\n  availability: Object as PropType<Cesium.TimeIntervalCollection>,\n  ...show,\n  description: [String, Object],\n  ...position,\n  orientation: Object,\n  ...viewFrom,\n  parent: Object,\n  billboard: Object as PropType<VcGraphicsBillboardProps>,\n  corridor: Object,\n  cylinder: Object,\n  ellipse: Object,\n  ellipsoid: Object,\n  box: Object,\n  label: Object,\n  model: Object,\n  tileset: Object,\n  path: Object,\n  ...plane,\n  point: Object,\n  polygon: Object,\n  polyline: Object,\n  properties: Object,\n  polylineVolume: Object,\n  rectangle: Object,\n  wall: Object,\n  ...enableMouseEvent\n}\n\nconst emits = {\n  ...commonEmits,\n  ...pickEventEmits,\n  definitionChanged: (property: Cesium.Property) => true,\n  'update:billboard': (payload: Cesium.BillboardGraphics) => true,\n  'update:box': (payload: Cesium.BoxGraphics) => true,\n  'update:corridor': (payload: Cesium.CorridorGraphics) => true,\n  'update:cylinder': (payload: Cesium.CylinderGraphics) => true,\n  'update:ellipse': (payload: Cesium.EllipseGraphics) => true,\n  'update:ellipsoid': (payload: Cesium.EllipsoidGraphics) => true,\n  'update:label': (payload: Cesium.LabelGraphics) => true,\n  'update:model': (payload: Cesium.ModelGraphics) => true,\n  'update:path': (payload: Cesium.PathGraphics) => true,\n  'update:plane': (payload: Cesium.PlaneGraphics) => true,\n  'update:point': (payload: Cesium.PointGraphics) => true,\n  'update:polygon': (payload: Cesium.PolygonGraphics) => true,\n  'update:polyline': (payload: Cesium.PolylineGraphics) => true,\n  'update:polylineVolume': (payload: Cesium.PolylineVolumeGraphics) => true,\n  'update:rectangle': (payload: Cesium.RectangleGraphics) => true,\n  'update:tileset': (payload: any) => true,\n  'update:wall': (payload: Cesium.WallGraphics) => true\n}\n\nexport default defineComponent({\n  name: 'VcEntity',\n  props: entityProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'Entity'\n    instance.cesiumEvents = ['definitionChanged']\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const { emit } = ctx\n\n    // methods\n    instance.mount = async () => {\n      const entity = $services?.entities?.add(instance.cesiumObject as Cesium.Entity)\n      return $services?.entities.contains(entity)\n    }\n\n    instance.unmount = async () => {\n      return $services?.entities?.remove(instance.cesiumObject as Cesium.Entity)\n    }\n\n    const updateGraphics = (graphics, emitType) => {\n      const listener = getInstanceListener(instance, emitType)\n      if (listener) {\n        emit(emitType, graphics)\n      } else {\n        instance.cesiumObject && (instance.cesiumObject[emitType.substring(7)] = graphics)\n      }\n      graphics && (graphics._vcParent = instance.cesiumObject)\n      return true\n    }\n\n    // expose public methods\n    Object.assign(instance.proxy, {\n      // private but needed by VcGraphicsXXX\n      __updateGraphics: updateGraphics\n    })\n\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(instance.proxy?.$options.name || ''),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcEntityProps = ExtractPropTypes<typeof entityProps>\nexport type VcEntityEmits = typeof emits\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-18 14:53:04\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\entity\\index.ts\n */\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\nimport { App } from 'vue'\nimport Entity from './src'\n\nEntity.install = (app: App): void => {\n  app.component(Entity.name, Entity)\n}\n\nconst _Entity = Entity as SFCWithInstall<typeof Entity>\n\nexport default _Entity\nexport const VcEntity = _Entity\n\nexport * from './src'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-02-15 17:45:45\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\imagery-layer\\src\\defaultProps.ts\n */\nimport { rectangle, colorToAlpha, cutoutRectangle, show } from '@vue-cesium/utils/cesium-props'\nimport type { AnyFunction, VcImageryProvider } from '@vue-cesium/utils/types'\nimport type { PropType } from 'vue'\nexport default {\n  imageryProvider: Object as PropType<VcImageryProvider>,\n  ...rectangle,\n  alpha: {\n    type: [Number, Function] as PropType<number | AnyFunction<any>>,\n    default: 1.0\n  },\n  nightAlpha: {\n    type: [Number, Function] as PropType<number | AnyFunction<any>>,\n    default: 1.0\n  },\n  dayAlpha: {\n    type: [Number, Function] as PropType<number | AnyFunction<any>>,\n    default: 1.0\n  },\n  brightness: {\n    type: [Number, Function] as PropType<number | AnyFunction<any>>,\n    default: 1.0\n  },\n  contrast: {\n    type: [Number, Function] as PropType<number | AnyFunction<any>>,\n    default: 1.0\n  },\n  hue: {\n    type: [Number, Function] as PropType<number | AnyFunction<any>>,\n    default: 0.0\n  },\n  saturation: {\n    type: [Number, Function] as PropType<number | AnyFunction<any>>,\n    default: 1.0\n  },\n  gamma: {\n    type: [Number, Function] as PropType<number | AnyFunction<any>>,\n    default: 1.0\n  },\n  splitDirection: {\n    type: [Number, Function] as PropType<number | AnyFunction<any>>,\n    default: 0\n  },\n  minificationFilter: Number,\n  magnificationFilter: Number,\n  ...show,\n  maximumAnisotropy: Number,\n  minimumTerrainLevel: Number,\n  maximumTerrainLevel: Number,\n  ...cutoutRectangle,\n  ...colorToAlpha,\n  colorToAlphaThreshold: {\n    type: Number,\n    default: 0.004\n  },\n  sortOrder: Number\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-18 11:28:17\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\imagery-layer\\src\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, provide } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { AnyFunction, VcColor, VcComponentInternalInstance, VcImageryProvider, VcReadyObject, VcRectangle } from '@vue-cesium/utils/types'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { useCommon } from '@vue-cesium/composables'\nimport defaultProps from './defaultProps'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { isUndefined, kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  'update:imageryProvider': (payload: VcImageryProvider) => true\n}\nexport const imageryLayerProps = defaultProps\nexport default defineComponent({\n  name: 'VcLayerImagery',\n  props: imageryLayerProps,\n  emits: emits,\n  setup(props: VcLayerImageryProps, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'ImageryLayer'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const { emit } = ctx\n    // methods\n    instance.createCesiumObject = async () => {\n      const options = commonState.transformProps(props)\n      const imageryProvider = (props.imageryProvider || {}) as Cesium.ImageryProvider\n      return new Cesium.ImageryLayer(imageryProvider, options as any)\n    }\n    instance.mount = async () => {\n      const { viewer } = $services\n      const imageryLayer = instance.cesiumObject as Cesium.ImageryLayer\n      imageryLayer.sortOrder = props.sortOrder\n      viewer.imageryLayers.add(imageryLayer)\n      return !viewer.isDestroyed() && viewer.imageryLayers.contains(imageryLayer)\n    }\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const imageryLayer = instance.cesiumObject as Cesium.ImageryLayer\n      return !viewer.isDestroyed() && viewer.imageryLayers.remove(imageryLayer)\n    }\n\n    const updateProvider = (provider: VcImageryProvider) => {\n      if (isUndefined(provider)) {\n        return instance.unmount?.()\n      } else {\n        const imageryLayer = instance.cesiumObject as Cesium.ImageryLayer\n        ;(imageryLayer as any)._imageryProvider = provider\n        const listener = getInstanceListener(instance, 'update:imageryProvider')\n        if (listener) emit('update:imageryProvider', provider)\n      }\n\n      return true\n    }\n\n    // expose public methods\n    Object.assign(instance.proxy, {\n      // private but needed by VcProviderXXX\n      __updateProvider: updateProvider\n    })\n\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(instance.proxy?.$options.name || ''),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\n// export type VcLayerImageryProps = ExtractPropTypes<typeof imageryLayerProps>\nexport type VcLayerImageryEmits = typeof emits\nexport type VcLayerImageryProps = {\n  /**\n   * The imagery provider to use.\n   */\n  imageryProvider?: VcImageryProvider\n  /**\n   * The rectangle of the layer. This rectangle can limit the visible portion of the imagery provider.\n   */\n  rectangle?: VcRectangle\n  /**\n   * The alpha blending value of this layer, from 0.0 to 1.0. This can either be a simple number or a function with the signature function(frameState, layer, x, y, level). The function is passed the current frame state, this layer, and the x, y, and level coordinates of the imagery tile for which the alpha is required, and it is expected to return the alpha value to use for the tile.\n   * Default value: 1.0\n   */\n  alpha?: number | AnyFunction<number>\n  /**\n   * The alpha blending value of this layer on the night side of the globe, from 0.0 to 1.0. This can either be a simple number or a function with the signature function(frameState, layer, x, y, level). The function is passed the current frame state, this layer, and the x, y, and level coordinates of the imagery tile for which the alpha is required, and it is expected to return the alpha value to use for the tile. This only takes effect when enableLighting is true.\n   * Default value: 1.0\n   */\n  nightAlpha?: number | AnyFunction<number>\n  /**\n   * The alpha blending value of this layer on the day side of the globe, from 0.0 to 1.0. This can either be a simple number or a function with the signature function(frameState, layer, x, y, level). The function is passed the current frame state, this layer, and the x, y, and level coordinates of the imagery tile for which the alpha is required, and it is expected to return the alpha value to use for the tile. This only takes effect when enableLighting is true.\n   * Default value: 1.0\n   */\n  dayAlpha?: number | AnyFunction<number>\n  /**\n   * The brightness of this layer. 1.0 uses the unmodified imagery color. Less than 1.0 makes the imagery darker while greater than 1.0 makes it brighter. This can either be a simple number or a function with the signature function(frameState, layer, x, y, level). The function is passed the current frame state, this layer, and the x, y, and level coordinates of the imagery tile for which the brightness is required, and it is expected to return the brightness value to use for the tile. The function is executed for every frame and for every tile, so it must be fast.\n   * Default value: 1.0\n   */\n  brightness?: number | AnyFunction<number>\n  /**\n   * The contrast of this layer. 1.0 uses the unmodified imagery color. Less than 1.0 reduces the contrast while greater than 1.0 increases it. This can either be a simple number or a function with the signature function(frameState, layer, x, y, level). The function is passed the current frame state, this layer, and the x, y, and level coordinates of the imagery tile for which the contrast is required, and it is expected to return the contrast value to use for the tile. The function is executed for every frame and for every tile, so it must be fast.\n   * Default value: 1.0\n   */\n  contrast?: number | AnyFunction<number>\n  /**\n   * The hue of this layer. 0.0 uses the unmodified imagery color. This can either be a simple number or a function with the signature function(frameState, layer, x, y, level). The function is passed the current frame state, this layer, and the x, y, and level coordinates of the imagery tile for which the hue is required, and it is expected to return the contrast value to use for the tile. The function is executed for every frame and for every tile, so it must be fast.\n   * Default value: 0.0\n   */\n  hue?: number | AnyFunction<number>\n  /**\n   * The saturation of this layer. 1.0 uses the unmodified imagery color. Less than 1.0 reduces the saturation while greater than 1.0 increases it. This can either be a simple number or a function with the signature function(frameState, layer, x, y, level). The function is passed the current frame state, this layer, and the x, y, and level coordinates of the imagery tile for which the saturation is required, and it is expected to return the contrast value to use for the tile. The function is executed for every frame and for every tile, so it must be fast.\n   * Default value: 1.0\n   */\n  saturation?: number | AnyFunction<number>\n  /**\n   * The gamma correction to apply to this layer. 1.0 uses the unmodified imagery color. This can either be a simple number or a function with the signature function(frameState, layer, x, y, level). The function is passed the current frame state, this layer, and the x, y, and level coordinates of the imagery tile for which the gamma is required, and it is expected to return the gamma value to use for the tile. The function is executed for every frame and for every tile, so it must be fast.\n   * Default value: 1.0\n   */\n  gamma?: number | AnyFunction<number>\n  /**\n   * The ImagerySplitDirection split to apply to this layer.\n   */\n  splitDirection?: number | Cesium.ImagerySplitDirection | AnyFunction<number | Cesium.ImagerySplitDirection>\n  /**\n   * The texture minification filter to apply to this layer. Possible values are TextureMinificationFilter.LINEAR and TextureMinificationFilter.NEAREST.\n   */\n  minificationFilter?: number | Cesium.TextureMinificationFilter\n  /**\n   * The texture minification filter to apply to this layer. Possible values are TextureMagnificationFilter.LINEAR and TextureMagnificationFilter.NEAREST.\n   */\n  magnificationFilter?: number | Cesium.TextureMagnificationFilter\n  /**\n   * True if the layer is shown; otherwise, false.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * The maximum anisotropy level to use for texture filtering. If this parameter is not specified, the maximum anisotropy supported by the WebGL stack will be used. Larger values make the imagery look better in horizon views.\n   */\n  maximumAnisotropy?: number\n  /**\n   * The minimum terrain level-of-detail at which to show this imagery layer, or undefined to show it at all levels. Level zero is the least-detailed level.\n   */\n  minimumTerrainLevel?: number\n  /**\n   * The maximum terrain level-of-detail at which to show this imagery layer, or undefined to show it at all levels. Level zero is the least-detailed level.\n   */\n  maximumTerrainLevel?: number\n  /**\n   * Cartographic rectangle for cutting out a portion of this ImageryLayer.\n   */\n  cutoutRectangle?: VcRectangle\n  /**\n   * Color to be used as alpha.\n   */\n  colorToAlpha?: VcColor\n  /**\n   * Threshold for color-to-alpha.\n   * Default value: 0.004\n   */\n  colorToAlphaThreshold?: number\n  /**\n   * Specify the relative order of the layer.\n   */\n  sortOrder?: number\n  /**\n   * Triggers before the VcLayerImagery is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcLayerImagery is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcLayerImagery is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when imageryProvider is updated.\n   */\n  'onUpdate:imageryProvider'?: (payload: VcImageryProvider) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-18 14:54:37\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\imagery-layer\\index.ts\n */\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\nimport { App } from 'vue'\nimport ImageryLayer from './src'\n\nImageryLayer.install = (app: App): void => {\n  app.component(ImageryLayer.name, ImageryLayer)\n}\n\nconst _ImageryLayer = ImageryLayer as SFCWithInstall<typeof ImageryLayer>\n\nexport default _ImageryLayer\nexport const VcLayerImagery = _ImageryLayer\n\nexport * from './src'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-16 09:43:17\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitives\\classification\\index.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { usePrimitives } from '@vue-cesium/composables'\nimport {\n  geometryInstances,\n  appearance,\n  show,\n  vertexCacheOptimize,\n  interleave,\n  compressVertices,\n  releaseGeometryInstances,\n  allowPicking,\n  asynchronous,\n  classificationType,\n  debugShowBoundingVolume,\n  debugShowShadowVolume,\n  enableMouseEvent\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { primitiveEmits } from '@vue-cesium/utils/emits'\n\nexport const classificationPrimitiveProps = {\n  ...geometryInstances,\n  ...appearance,\n  ...show,\n  ...vertexCacheOptimize,\n  ...interleave,\n  ...compressVertices,\n  ...releaseGeometryInstances,\n  ...allowPicking,\n  ...asynchronous,\n  ...classificationType,\n  ...debugShowBoundingVolume,\n  ...debugShowShadowVolume,\n  ...enableMouseEvent\n}\nexport default defineComponent({\n  name: 'VcPrimitiveClassification',\n  props: classificationPrimitiveProps,\n  emits: primitiveEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'ClassificationPrimitive'\n    usePrimitives(props, ctx, instance)\n    const name = instance.proxy?.$options.name || ''\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(name),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(name))\n  }\n})\n\nexport type VcPrimitiveClassificationProps = ExtractPropTypes<typeof classificationPrimitiveProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-16 10:18:58\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitives\\ground\\index.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { usePrimitives } from '@vue-cesium/composables'\nimport {\n  geometryInstances,\n  appearance,\n  show,\n  vertexCacheOptimize,\n  interleave,\n  compressVertices,\n  releaseGeometryInstances,\n  allowPicking,\n  asynchronous,\n  classificationType,\n  debugShowBoundingVolume,\n  debugShowShadowVolume,\n  enableMouseEvent\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { primitiveEmits } from '@vue-cesium/utils/emits'\n\nexport const groundPrimitiveProps = {\n  ...geometryInstances,\n  ...appearance,\n  ...show,\n  ...vertexCacheOptimize,\n  ...interleave,\n  ...compressVertices,\n  ...releaseGeometryInstances,\n  ...allowPicking,\n  ...asynchronous,\n  ...classificationType,\n  ...debugShowBoundingVolume,\n  ...debugShowShadowVolume,\n  ...enableMouseEvent\n}\nexport default defineComponent({\n  name: 'VcPrimitiveGround',\n  props: groundPrimitiveProps,\n  emits: primitiveEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'GroundPrimitive'\n    usePrimitives(props, ctx, instance)\n    const name = instance.proxy?.$options.name || ''\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(name),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(name))\n  }\n})\n\nexport type VcPrimitiveGroundProps = ExtractPropTypes<typeof groundPrimitiveProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-25 11:38:38\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitives\\ground-polyline\\index.ts\n */\n// import type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { VcAppearance, VcComponentInternalInstance, VcPickEvent, VcReadyObject } from '@vue-cesium/utils/types'\nimport { usePrimitives } from '@vue-cesium/composables'\nimport {\n  geometryInstances,\n  appearance,\n  show,\n  interleave,\n  compressVertices,\n  releaseGeometryInstances,\n  allowPicking,\n  asynchronous,\n  classificationType,\n  debugShowBoundingVolume,\n  debugShowShadowVolume,\n  enableMouseEvent\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { primitiveEmits } from '@vue-cesium/utils/emits'\n\nexport const groundPolylinePrimitiveProps = {\n  ...geometryInstances,\n  ...appearance,\n  ...show,\n  ...interleave,\n  ...compressVertices,\n  ...releaseGeometryInstances,\n  ...allowPicking,\n  ...asynchronous,\n  ...classificationType,\n  ...debugShowBoundingVolume,\n  ...debugShowShadowVolume,\n  ...enableMouseEvent\n}\nexport default defineComponent({\n  name: 'VcPrimitiveGroundPolyline',\n  props: groundPolylinePrimitiveProps,\n  emits: primitiveEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'GroundPolylinePrimitive'\n    usePrimitives(props, ctx, instance)\n\n    const name = instance.proxy?.$options.name || ''\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(name),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(name))\n  }\n})\n\n// export type VcPrimitiveGroundPolylineProps = ExtractPropTypes<typeof groundPolylinePrimitiveProps>\nexport type VcPrimitiveGroundPolylineProps = {\n  /**\n   * GeometryInstances containing GroundPolylineGeometry\n   */\n  geometryInstances?: Cesium.GeometryInstance | Array<Cesium.GeometryInstance>\n  /**\n   * The Appearance used to render the polyline. Defaults to a white color Material on a PolylineMaterialAppearance.\n   */\n  appearance?: VcAppearance\n  /**\n   * Determines if this primitive will be shown.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * When true, geometry vertex attributes are interleaved, which can slightly improve rendering performance but increases load time.\n   * Default value: false\n   */\n  interleave?: boolean\n  /**\n   * When true, the primitive does not keep a reference to the input geometryInstances to save memory.\n   * Default value: true\n   */\n  releaseGeometryInstances?: boolean\n  /**\n   * When true, each geometry instance will only be pickable with Scene#pick. When false, GPU memory is saved.\n   * Default value: true\n   */\n  allowPicking?: boolean\n  /**\n   * Determines if the primitive will be created asynchronously or block until ready.\n   * Default value: true\n   */\n  asynchronous?: boolean\n  /**\n   * Determines whether terrain, 3D Tiles or both will be classified.\n   * Default value: ClassificationType.BOTH(2)\n   */\n  classificationType?: number\n  /**\n   * For debugging only. Determines if this primitive's commands' bounding spheres are shown.\n   * Default value: false\n   */\n  debugShowBoundingVolume?: boolean\n  /**\n   * For debugging only. Determines if the shadow volume for each geometry in the primitive is drawn. Must be true on creation to have effect.\n   * Default value: false\n   */\n  debugShowShadowVolume?: boolean\n  /**\n   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Triggers before the component is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the component is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this primitive.\n   */\n  mousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this primitive.\n   */\n  mouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this primitive.\n   */\n  click?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this primitive.\n   */\n  clickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this primitive.\n   */\n  dblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this primitive.\n   */\n  mousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this primitive.\n   */\n  mouseover?: (evt: VcPickEvent) => void\n  /**\n   * \tTriggers when the mouse moves out of this primitive.\n   */\n  mouseout?: (evt: VcPickEvent) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-17 00:04:10\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitives\\model\\index.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, PropType } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { usePrimitives } from '@vue-cesium/composables'\nimport {\n  url,\n  show,\n  modelMatrix,\n  scale,\n  minimumPixelSize,\n  maximumScale,\n  id,\n  allowPicking,\n  incrementallyLoadTextures,\n  asynchronous,\n  clampAnimations,\n  shadows,\n  debugShowBoundingVolume,\n  debugWireframe,\n  heightReference,\n  scene,\n  distanceDisplayCondition,\n  color,\n  colorBlendMode,\n  colorBlendAmount,\n  silhouetteColor,\n  silhouetteSize,\n  clippingPlanes,\n  imageBasedLightingFactor,\n  lightColor,\n  luminanceAtZenith,\n  sphericalHarmonicCoefficients,\n  specularEnvironmentMaps,\n  credit,\n  backFaceCulling,\n  enableMouseEvent\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { primitiveEmits } from '@vue-cesium/utils/emits'\n\nexport const modelPrimitiveProps = {\n  ...url,\n  basePath: String as PropType<string | Cesium.Resource>,\n  ...show,\n  ...modelMatrix,\n  ...scale,\n  ...minimumPixelSize,\n  ...maximumScale,\n  ...id,\n  ...allowPicking,\n  ...incrementallyLoadTextures,\n  ...asynchronous,\n  ...clampAnimations,\n  ...shadows,\n  ...debugShowBoundingVolume,\n  ...debugWireframe,\n  ...heightReference,\n  ...scene,\n  ...distanceDisplayCondition,\n  ...color,\n  ...colorBlendMode,\n  ...colorBlendAmount,\n  ...silhouetteColor,\n  ...silhouetteSize,\n  ...clippingPlanes,\n  dequantizeInShader: {\n    type: Boolean,\n    default: true\n  },\n  ...imageBasedLightingFactor,\n  ...lightColor,\n  ...luminanceAtZenith,\n  ...sphericalHarmonicCoefficients,\n  ...specularEnvironmentMaps,\n  ...credit,\n  ...backFaceCulling,\n  ...enableMouseEvent\n}\nexport default defineComponent({\n  name: 'VcPrimitiveModel',\n  props: modelPrimitiveProps,\n  emits: primitiveEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'Model'\n    const primitivesState = usePrimitives(props, ctx, instance)\n    // methods\n    instance.createCesiumObject = async () => {\n      const options: any = primitivesState?.transformProps(props)\n      return Cesium.Model.fromGltf(options)\n    }\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcPrimitiveModelProps = ExtractPropTypes<typeof modelPrimitiveProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-25 11:38:17\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitives\\primitive\\index.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { VcAppearance, VcComponentInternalInstance, VcPickEvent, VcReadyObject } from '@vue-cesium/utils/types'\nimport { usePrimitives } from '@vue-cesium/composables'\nimport {\n  geometryInstances,\n  appearance,\n  depthFailAppearance,\n  show,\n  modelMatrix,\n  vertexCacheOptimize,\n  interleave,\n  compressVertices,\n  releaseGeometryInstances,\n  allowPicking,\n  asynchronous,\n  debugShowBoundingVolume,\n  shadows,\n  enableMouseEvent\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { primitiveEmits } from '@vue-cesium/utils/emits'\n\nexport const primitiveProps = {\n  ...geometryInstances,\n  ...appearance,\n  ...depthFailAppearance,\n  ...show,\n  ...modelMatrix,\n  ...vertexCacheOptimize,\n  ...interleave,\n  ...compressVertices,\n  ...releaseGeometryInstances,\n  ...allowPicking,\n  cull: {\n    type: Boolean,\n    default: true\n  },\n  ...asynchronous,\n  ...debugShowBoundingVolume,\n  ...shadows,\n  ...enableMouseEvent\n}\nexport default defineComponent({\n  name: 'VcPrimitive',\n  props: primitiveProps,\n  emits: primitiveEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'Primitive'\n    usePrimitives(props, ctx, instance)\n\n    const name = instance.proxy?.$options.name || ''\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(name),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\n// export type VcPrimitiveProps = ExtractPropTypes<typeof primitiveProps>\nexport type VcPrimitiveProps = {\n  /**\n   * The geometry instances - or a single geometry instance - to render.\n   */\n  geometryInstances?: Cesium.GeometryInstance | Array<Cesium.GeometryInstance>\n  /**\n   * The appearance used to render the primitive.\n   */\n  appearance?: VcAppearance\n  /**\n   * The appearance used to shade this primitive when it fails the depth test.\n   */\n  depthFailAppearance?: VcAppearance\n  /**\n   * Determines if this primitive will be shown.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * The 4x4 transformation matrix that transforms the primitive (all geometry instances) from model to world coordinates.\n   */\n  modelMatrix?: Cesium.Matrix4\n  /**\n   * When true, geometry vertices are optimized for the pre and post-vertex-shader caches.\n   * Default value: false\n   */\n  vertexCacheOptimize?: boolean\n  /**\n   * When true, geometry vertex attributes are interleaved, which can slightly improve rendering performance but increases load time.\n   * Default value: false\n   */\n  interleave?: boolean\n  /**\n   * When true, the geometry vertices are compressed, which will save memory.\n   */\n  compressVertices?: boolean\n  /**\n   * When true, the primitive does not keep a reference to the input geometryInstances to save memory.\n   */\n  releaseGeometryInstances?: boolean\n  /**\n   * When true, each geometry instance will only be pickable with Scene#pick. When false, GPU memory is saved.\n   */\n  allowPicking?: boolean\n  /**\n   * When true, the renderer frustum culls and horizon culls the primitive's commands based on their bounding volume. Set this to false for a small performance gain if you are manually culling the primitive.\n   */\n  cull?: boolean\n  /**\n   * Determines if the primitive will be created asynchronously or block until ready.\n   */\n  asynchronous?: boolean\n  /**\n   * For debugging only. Determines if this primitive's commands' bounding spheres are shown.\n   */\n  debugShowBoundingVolume?: boolean\n  /**\n   * Determines whether this primitive casts or receives shadows from light sources.\n   */\n  shadows?: number\n  /**\n   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Triggers before the component is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the component is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this primitive.\n   */\n  mousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this primitive.\n   */\n  mouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this primitive.\n   */\n  click?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this primitive.\n   */\n  clickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this primitive.\n   */\n  dblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this primitive.\n   */\n  mousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this primitive.\n   */\n  mouseover?: (evt: VcPickEvent) => void\n  /**\n   * \tTriggers when the mouse moves out of this primitive.\n   */\n  mouseout?: (evt: VcPickEvent) => void\n}\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport { usePrimitives } from '@vue-cesium/composables'\nimport {\n  show,\n  modelMatrix,\n  shadows,\n  maximumScreenSpaceError,\n  clippingPlanes,\n  classificationType,\n  ellipsoid,\n  imageBasedLightingFactor,\n  lightColor2,\n  luminanceAtZenith,\n  sphericalHarmonicCoefficients,\n  specularEnvironmentMaps,\n  backFaceCulling,\n  debugWireframe,\n  debugShowBoundingVolume,\n  enableMouseEvent\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { primitiveEmits } from '@vue-cesium/utils/emits'\nconst emits = {\n  ...primitiveEmits,\n  allTilesLoaded: () => true,\n  initialTilesLoaded: () => true,\n  loadProgress: (numberOfPendingRequests: number, numberOfTilesProcessing: number) => true,\n  tileFailed: (url: string, errorMsg: string) => true,\n  tileLoad: (tile: Cesium.Cesium3DTile) => true,\n  tileUnload: (tile: Cesium.Cesium3DTile) => true,\n  tileVisible: (tile: Cesium.Cesium3DTile) => true\n}\n\nexport const tilesetPrimitiveProps = {\n  url: [String, Object] as PropType<string | Promise<string> | Promise<Cesium.Resource> | Cesium.Resource>,\n  ...show,\n  ...modelMatrix,\n  ...shadows,\n  ...maximumScreenSpaceError,\n  maximumMemoryUsage: {\n    type: Number,\n    default: 512\n  },\n  cullWithChildrenBounds: {\n    type: Boolean,\n    default: true\n  },\n  cullRequestsWhileMoving: {\n    type: Boolean,\n    default: true\n  },\n  cullRequestsWhileMovingMultiplier: {\n    type: Number,\n    default: 60.0\n  },\n  preloadWhenHidden: {\n    type: Boolean,\n    default: false\n  },\n  preloadFlightDestinations: {\n    type: Boolean,\n    default: true\n  },\n  preferLeaves: {\n    type: Boolean,\n    default: false\n  },\n  dynamicScreenSpaceError: {\n    type: Boolean,\n    default: false\n  },\n  dynamicScreenSpaceErrorDensity: {\n    type: Number,\n    default: 0.00278\n  },\n  dynamicScreenSpaceErrorFactor: {\n    type: Number,\n    default: 4.0\n  },\n  dynamicScreenSpaceErrorHeightFalloff: {\n    type: Number,\n    default: 0.25\n  },\n  progressiveResolutionHeightFraction: {\n    type: Number,\n    default: 0.3\n  },\n  foveatedScreenSpaceError: {\n    type: Boolean,\n    default: true\n  },\n  foveatedConeSize: {\n    type: Number,\n    default: 0.1\n  },\n  foveatedMinimumScreenSpaceErrorRelaxation: {\n    type: Number,\n    default: 0.0\n  },\n  foveatedInterpolationCallback: Function,\n  foveatedTimeDelay: {\n    type: Number,\n    default: 0.2\n  },\n  skipLevelOfDetail: {\n    type: Boolean,\n    default: false\n  },\n  baseScreenSpaceError: {\n    type: Number,\n    default: 1024\n  },\n  skipScreenSpaceErrorFactor: {\n    type: Number,\n    default: 16\n  },\n  skipLevels: {\n    type: Number,\n    default: 1\n  },\n  immediatelyLoadDesiredLevelOfDetail: {\n    type: Boolean,\n    default: false\n  },\n  loadSiblings: {\n    type: Boolean,\n    default: false\n  },\n  ...clippingPlanes,\n  ...classificationType,\n  ...ellipsoid,\n  pointCloudShading: Object,\n  ...imageBasedLightingFactor,\n  ...lightColor2,\n  ...luminanceAtZenith,\n  ...sphericalHarmonicCoefficients,\n  ...specularEnvironmentMaps,\n  ...backFaceCulling,\n  showOutline: {\n    type: Boolean,\n    default: true\n  },\n  vectorClassificationOnly: {\n    type: Boolean,\n    default: false\n  },\n  vectorKeepDecodedPositions: {\n    type: Boolean,\n    default: false\n  },\n  debugHeatmapTilePropertyName: String,\n  debugFreezeFrame: {\n    type: Boolean,\n    default: false\n  },\n  debugColorizeTiles: {\n    type: Boolean,\n    default: false\n  },\n  ...debugWireframe,\n  ...debugShowBoundingVolume,\n  debugShowContentBoundingVolume: {\n    type: Boolean,\n    default: false\n  },\n  debugShowViewerRequestVolume: {\n    type: Boolean,\n    default: false\n  },\n  debugShowGeometricError: {\n    type: Boolean,\n    default: false\n  },\n  debugShowRenderingStatistics: {\n    type: Boolean,\n    default: false\n  },\n  debugShowMemoryUsage: {\n    type: Boolean,\n    default: false\n  },\n  debugShowUrl: {\n    type: Boolean,\n    default: false\n  },\n  ...enableMouseEvent,\n  enableModelExperimental: {\n    type: Boolean,\n    default: false\n  },\n  customShader: {\n    type: Object as PropType<Cesium.CustomShader>\n  },\n  properties: {\n    type: Array as PropType<\n      Array<{\n        key: string\n        keyValue: any\n        propertyName: string\n        propertyValue: any\n      }>\n    >\n  },\n  fragmentShader: String,\n  replaceFS: Boolean\n}\nexport default defineComponent({\n  name: 'VcPrimitiveTileset',\n  props: tilesetPrimitiveProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'Cesium3DTileset'\n    instance.cesiumEvents = ['allTilesLoaded', 'initialTilesLoaded', 'loadProgress', 'tileFailed', 'tileLoad', 'tileUnload', 'tileVisible']\n    usePrimitives(props, ctx, instance)\n    ;(instance.proxy as VcComponentPublicInstance).createPromise.then(obj => {\n      const tileset = obj.cesiumObject as Cesium.Cesium3DTileset\n      instance.removeCallbacks.push(tileset.tileVisible.addEventListener(updateTile))\n    })\n\n    const updateTile = (tile: Cesium.Cesium3DTile) => {\n      const content = tile.content\n      const model = (content as any)._model\n      // sets properties\n      for (let i = 0; i < content.featuresLength; i++) {\n        const feature = content.getFeature(i)\n        if (props.properties && props.properties.length) {\n          props.properties.forEach(property => {\n            if (feature.hasProperty(property['key']) && feature.getProperty(property['key']) === property['keyValue']) {\n              feature.setProperty(property['propertyName'], property['propertyValue'])\n            }\n          })\n        }\n      }\n      // sets fragmentShader\n      if (props.fragmentShader && model && model._sourcePrograms && model._rendererResources) {\n        Object.keys(model._sourcePrograms).forEach(key => {\n          const program = model._sourcePrograms[key]\n          const sourceShaders = model._rendererResources.sourceShaders\n          if (props.replaceFS) {\n            sourceShaders[program.fragmentShader] = props.fragmentShader\n          } else {\n            const oldFS = sourceShaders[program.fragmentShader]\n            sourceShaders[program.fragmentShader] = oldFS.replace(\n              'gl_FragColor = vec4(color, 1.0);\\n}',\n              `gl_FragColor = vec4(color, 1.0);\n             ${props.fragmentShader}\\n}\n            `\n            )\n          }\n        })\n        model._shouldRegenerateShaders = true\n      }\n    }\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcPrimitiveTilesetProps = ExtractPropTypes<typeof tilesetPrimitiveProps>\nexport type VcPrimitiveTilesetEmits = typeof emits\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-22 00:17:33\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitives\\particle\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { usePrimitives } from '@vue-cesium/composables'\nimport {\n  show,\n  modelMatrix,\n  image,\n  color,\n  startColor,\n  endColor,\n  imageSize,\n  minimumImageSize,\n  maximumImageSize,\n  sizeInMeters,\n  enableMouseEvent\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { primitiveEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...primitiveEmits,\n  complete: (evt: Cesium.ParticleSystem) => true\n}\nexport const particlePrimitiveProps = {\n  ...show,\n  updateCallback: Function,\n  emitter: Object as PropType<Cesium.ParticleEmitter>,\n  ...modelMatrix,\n  emitterModelMatrix: Object as PropType<Cesium.Matrix4>,\n  emissionRate: {\n    type: Number,\n    default: 5\n  },\n  bursts: Array as PropType<Array<Cesium.ParticleBurst>>,\n  loop: {\n    type: Boolean,\n    default: true\n  },\n  scale: {\n    type: Number,\n    default: 1.0\n  },\n  startScale: Number,\n  endScale: Number,\n  ...color,\n  ...startColor,\n  ...endColor,\n  ...image,\n  ...imageSize,\n  ...minimumImageSize,\n  ...maximumImageSize,\n  ...sizeInMeters,\n  speed: {\n    type: Number,\n    default: 1.0\n  },\n  minimumSpeed: Number,\n  maximumSpeed: Number,\n  lifetime: {\n    type: Number,\n    default: Number.MAX_VALUE\n  },\n  particleLife: {\n    type: Number,\n    default: 5.0\n  },\n  minimumParticleLife: Number,\n  maximumParticleLife: Number,\n  mass: {\n    type: Number,\n    default: 1.0\n  },\n  minimumMass: Number,\n  maximumMass: Number,\n  ...enableMouseEvent\n}\nexport default defineComponent({\n  name: 'VcPrimitiveParticle',\n  props: particlePrimitiveProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'ParticleSystem'\n    instance.cesiumEvents = ['complete']\n    usePrimitives(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcPrimitiveParticleProps = ExtractPropTypes<typeof particlePrimitiveProps>\nexport type VcPrimitiveParticleEmits = typeof emits\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-18 14:55:25\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitives\\index.ts\n */\nimport { App } from 'vue'\nimport PrimitiveClassification from './classification'\nimport PrimitiveGround from './ground'\nimport PrimitiveGroundPolyline from './ground-polyline'\nimport PrimitiveModel from './model'\nimport Primitive from './primitive'\nimport PrimitiveTileset from './tileset'\nimport PrimitiveParticle from './particle'\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\n\nconst components = [PrimitiveClassification, PrimitiveGround, PrimitiveGroundPolyline, PrimitiveModel, Primitive, PrimitiveTileset, PrimitiveParticle]\n\nconst install = (app: App): void => {\n  components.forEach(cmp => {\n    app.component(cmp.name, cmp)\n  })\n}\n\nexport default {\n  install\n}\n\ncomponents.forEach(cmp => {\n  cmp['install'] = (app: App): void => {\n    app.component(cmp.name, cmp)\n  }\n})\n\nexport const VcPrimitiveClassification = PrimitiveClassification as SFCWithInstall<typeof PrimitiveClassification>\nexport const VcPrimitiveGround = PrimitiveGround as SFCWithInstall<typeof PrimitiveGround>\nexport const VcPrimitiveGroundPolyline = PrimitiveGroundPolyline as SFCWithInstall<typeof PrimitiveGroundPolyline>\nexport const VcPrimitiveModel = PrimitiveModel as SFCWithInstall<typeof PrimitiveModel>\nexport const VcPrimitive = Primitive as SFCWithInstall<typeof Primitive>\nexport const VcPrimitiveTileset = PrimitiveTileset as SFCWithInstall<typeof PrimitiveTileset>\nexport const VcPrimitiveParticle = PrimitiveParticle as SFCWithInstall<typeof PrimitiveParticle>\n\nexport * from './classification'\nexport * from './ground'\nexport * from './ground-polyline'\nexport * from './model'\nexport * from './particle'\nexport * from './primitive'\nexport * from './tileset'\n","import type { ExtractPropTypes, PropType, VNode, WatchStopHandle } from 'vue'\nimport { defineComponent, getCurrentInstance, ref, h, createCommentVNode, watch, onUnmounted, computed } from 'vue'\nimport type {\n  AppearanceOption,\n  VcColorSegments,\n  HeatmapConfiguration,\n  MaterialOption,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance\n} from '@vue-cesium/utils/types'\nimport { useCommon } from '@vue-cesium/composables'\nimport { show, rectangle } from '@vue-cesium/utils/cesium-props'\nimport { makeColor, makeRectangle } from '@vue-cesium/utils/cesium-helpers'\nimport h337 from '@zouyaoji/heatmap.js'\nimport VcEntity from '@vue-cesium/components/entity'\nimport VcLayerImagery from '@vue-cesium/components/imagery-layer'\nimport { VcPrimitiveGround } from '@vue-cesium/components/primitives'\nimport { getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport type VcHeatMapData = {\n  x: number\n  y: number\n  value: number\n}\n\nexport const heatmapOverlayProps = {\n  ...show,\n  ...rectangle,\n  min: {\n    type: Number,\n    default: 0\n  },\n  max: {\n    type: Number,\n    default: 100\n  },\n  data: Array as PropType<Array<VcHeatMapData>>,\n  options: Object,\n  type: {\n    type: String,\n    default: 'primitive'\n  },\n  segments: {\n    type: Array as PropType<Array<VcColorSegments>>,\n    default: () => []\n  },\n  projection: {\n    type: String,\n    default: '3857' // 4326\n  }\n}\nexport default defineComponent({\n  name: 'VcOverlayHeatmap',\n  props: heatmapOverlayProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverlayHeatmap'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const rootRef = ref<HTMLElement | null>(null)\n    const project = ref<Cesium.WebMercatorProjection | Cesium.GeographicProjection>(null!)\n    const defaultOptions: HeatmapConfiguration = {\n      minCanvasSize: 700, // minimum size (in pixels) for the heatmap canvas\n      maxCanvasSize: 2000, // maximum size (in pixels) for the heatmap canvas\n      radiusFactor: 60, // data point size factor used if no radius is given (the greater of height and width divided by this number yields the used radius)\n      spacingFactor: 1.5, // extra space around the borders (point radius multiplied by this number yields the spacing)\n      maxOpacity: 0.8, // the maximum opacity used if not given in the heatmap options object\n      minOpacity: 0.1, // the minimum opacity used if not given in the heatmap options object\n      blur: 0.85, // the blur used if not given in the heatmap options object\n      gradient: {\n        // the gradient used if not given in the heatmap options object\n        '.3': 'blue',\n        '.65': 'yellow',\n        '.8': 'orange',\n        '.95': 'red'\n      },\n      xField: 'x',\n      yField: 'y',\n      valueField: 'value',\n      container: undefined!\n    }\n    const coordinates = ref<any>(null)\n    const material = ref<MaterialOption>(null!)\n    const image = ref<any>(null)\n    const childRef = ref<typeof VcLayerImagery | typeof VcEntity | typeof VcPrimitiveGround | null>(null)\n    const appearance = ref<AppearanceOption>(null!)\n    const canRender = ref(false)\n    const config = ref<any>(null)\n\n    const vcParent = getVcParentInstance(instance)\n    ;(vcParent.proxy as VcComponentPublicInstance).createPromise?.then(() => {\n      canRender.value = true\n    })\n\n    // computed\n    const options = computed<HeatmapConfiguration>(() => {\n      return Object.assign({}, defaultOptions, props.options)\n    })\n\n    // watcch\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => image,\n        val => {\n          material.value.fabric.uniforms.image = val.value\n          ;(appearance.value.options.material as MaterialOption).fabric.uniforms.image = val.value\n        },\n        {\n          deep: true\n        }\n      )\n    )\n    unwatchFns.push(\n      watch(\n        () => props.data,\n        (newVal, oldVal) => {\n          if (!instance.mounted) {\n            return\n          }\n\n          const heatmapInstance = instance.cesiumObject as h337.Heatmap<string, string, string>\n\n          if (Array.isArray(newVal) && Array.isArray(oldVal)) {\n            setData(newVal, heatmapInstance)\n            image.value = heatmapInstance.getDataURL()\n          } else {\n            commonState.reload()\n          }\n        },\n        {\n          deep: true\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => [props.max, props.min],\n        vals => {\n          const heatmapInstance = instance.cesiumObject as h337.Heatmap<string, string, string>\n          heatmapInstance.setDataMax(vals[0] || 0)\n          heatmapInstance.setDataMin(vals[1] || 0)\n          image.value = heatmapInstance.getDataURL()\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => [props.type, props.projection, props.rectangle],\n        vals => {\n          commonState.reload()\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.options,\n        val => {\n          const heatmapInstance = instance.cesiumObject as h337.Heatmap<string, string, string>\n          heatmapInstance.configure(val as any)\n          image.value = heatmapInstance.getDataURL()\n        },\n        {\n          deep: true\n        }\n      )\n    )\n\n    // methods\n    instance.createCesiumObject = async () => {\n      const { WebMercatorProjection, GeographicProjection } = Cesium\n      project.value = props.projection === '3857' ? new WebMercatorProjection() : new GeographicProjection()\n      const id = getID()\n      config.value = getConfig(props.rectangle)\n      const container = document.createElement('div')\n      if (Cesium.defined(id)) {\n        container.setAttribute('id', id)\n      }\n      container.setAttribute('style', 'width: ' + config.value.width + 'px; height: ' + config.value.height + 'px; margin: 0px; display: none;')\n      document.body.appendChild(container)\n      options.value.container = container\n\n      if (props.segments.length) {\n        options.value.gradient = {}\n        const Δ = props.max - props.min\n\n        for (let i = 0; i < props.segments.length; i++) {\n          options.value.gradient[`${(props.segments[i][0] - props.min) / Δ}`] = (makeColor(props.segments[i][1]) as Cesium.Color).toCssColorString()\n        }\n      }\n\n      const heatmapInstance = h337.create(options.value)\n      container.children[0].setAttribute('id', id + '-hm')\n      if (Array.isArray(props.data)) {\n        setData(props.data, heatmapInstance)\n        material.value = {\n          fabric: {\n            type: 'Image',\n            uniforms: {\n              image: image.value,\n              transparent: true\n            }\n          }\n        }\n        appearance.value = {\n          type: 'MaterialAppearance',\n          options: {\n            material: {\n              fabric: {\n                type: 'Image',\n                uniforms: {\n                  image: image.value\n                }\n              }\n            }\n          }\n        }\n      }\n\n      return heatmapInstance\n    }\n    instance.unmount = async () => {\n      document.body.removeChild((instance.cesiumObject as any)._config.container)\n      return true\n    }\n\n    const getID = (len?: number) => {\n      let id = ''\n      const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n\n      for (let i = 0; i < (len || 8); i++) {\n        id += possible.charAt(Math.floor(Math.random() * possible.length))\n      }\n\n      return id\n    }\n\n    const getConfig = bounds => {\n      const rectangle = makeRectangle(bounds) as Cesium.Rectangle\n      const swmb = project.value.project(new Cesium.Cartographic(rectangle.west, rectangle.south))\n      const nemb = project.value.project(new Cesium.Cartographic(rectangle.east, rectangle.north))\n      const mbb = {\n        north: nemb.y,\n        east: nemb.x,\n        south: swmb.y,\n        west: swmb.x\n      }\n\n      let width = mbb.east > 0 && mbb.west < 0 ? mbb.east + Math.abs(mbb.west) : Math.abs(mbb.east - mbb.west)\n      let height = mbb.north > 0 && mbb.south < 0 ? mbb.north + Math.abs(mbb.south) : Math.abs(mbb.north - mbb.south)\n      let factor = 1\n      if (width > height && width > options.value.maxCanvasSize) {\n        factor = width / options.value.maxCanvasSize\n        if (height / factor < options.value.minCanvasSize) {\n          factor = height / options.value.minCanvasSize\n        }\n      } else if (height > width && height > options.value.maxCanvasSize) {\n        factor = height / options.value.maxCanvasSize\n        if (height / factor < options.value.minCanvasSize) {\n          factor = width / options.value.minCanvasSize\n        }\n      } else if (width < height && width < options.value.minCanvasSize) {\n        factor = width / options.value.minCanvasSize\n        if (height / factor > options.value.maxCanvasSize) {\n          factor = height / options.value.maxCanvasSize\n        }\n      } else if (height < width && height < options.value.minCanvasSize) {\n        factor = height / options.value.minCanvasSize\n        if (width / factor > options.value.maxCanvasSize) {\n          factor = width / options.value.maxCanvasSize\n        }\n      }\n\n      width = width / factor\n      height = height / factor\n\n      if (!Cesium.defined(options.value.radius)) {\n        options.value.radius = width > height ? width / options.value.radiusFactor : height / options.value.radiusFactor\n      }\n\n      const spacing = (options.value.radius || 1) * options.value.spacingFactor\n      const xoffset = mbb.west\n      const yoffset = mbb.south\n      width = Math.round(width + spacing * 2)\n      height = Math.round(height + spacing * 2)\n      mbb.west -= spacing * factor\n      mbb.east += spacing * factor\n      mbb.south -= spacing * factor\n      mbb.north += spacing * factor\n      const swmw = project.value.unproject(new Cesium.Cartesian3(mbb.west, mbb.south))\n      const nemw = project.value.unproject(new Cesium.Cartesian3(mbb.east, mbb.north))\n\n      const mwb = {\n        north: Cesium.Math.toDegrees(nemw.latitude),\n        east: Cesium.Math.toDegrees(nemw.longitude),\n        south: Cesium.Math.toDegrees(swmw.latitude),\n        west: Cesium.Math.toDegrees(swmw.longitude)\n      }\n      coordinates.value = mwb\n      return {\n        height,\n        width,\n        factor,\n        xoffset,\n        yoffset,\n        spacing\n      }\n    }\n\n    const setData = (data, heatmapInstance: h337.Heatmap<string, string, string>) => {\n      if (data) {\n        const { height, xoffset, yoffset, factor, spacing } = config.value\n        const xField = options.value.xField || 'x'\n        const yField = options.value.yField || 'y'\n        const valueField = options.value.valueField || 'value'\n        const datas: Array<VcHeatMapData> = []\n        for (let i = 0; i < data.length; i++) {\n          const gp = data[i]\n          if (!Cesium.defined(gp.id)) {\n            gp.id = i\n          }\n          const mp = project.value.project(Cesium.Cartographic.fromDegrees(gp[xField], gp[yField]))\n          const hp: VcHeatMapData = {\n            x: Math.round((mp.x - xoffset) / factor + spacing),\n            y: Math.round((mp.y - yoffset) / factor + spacing),\n            value: undefined\n          }\n          hp.y = height - hp.y\n          if (gp[valueField] || gp[valueField] === 0) {\n            hp[valueField] = gp[valueField]\n          }\n          if (hp[valueField] > props.max || hp[valueField] < props.min) {\n            continue\n          }\n          datas.push(hp)\n        }\n\n        heatmapInstance.setData({\n          min: props.min,\n          max: props.max,\n          data: datas\n        })\n\n        image.value = heatmapInstance.getDataURL()\n      }\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    // expose public methods\n    Object.assign(instance.proxy, {\n      rootRef: rootRef,\n      childRef: childRef\n    })\n\n    return () => {\n      if (canRender.value) {\n        const child: Array<VNode> = []\n        if (props.type === 'entity' && image.value) {\n          child.push(\n            h(VcEntity, {\n              ref: childRef,\n              show: props.show,\n              rectangle: {\n                coordinates: coordinates.value,\n                material: material.value\n              }\n            })\n          )\n        } else if (props.type === 'primitive') {\n          child.push(\n            h(VcPrimitiveGround, {\n              ref: childRef,\n              show: props.show,\n              appearance: appearance.value,\n              releaseGeometryInstances: false,\n              geometryInstances: new Cesium.GeometryInstance({\n                geometry: new Cesium.RectangleGeometry({\n                  rectangle: makeRectangle(coordinates.value) as Cesium.Rectangle\n                })\n              })\n            })\n          )\n        } else if (props.type === 'imagery-layer' && image.value) {\n          child.push(\n            h(VcLayerImagery, {\n              ref: childRef,\n              show: props.show,\n              imageryProvider: new Cesium.SingleTileImageryProvider({\n                url: image.value,\n                rectangle: makeRectangle(coordinates.value) as Cesium.Rectangle\n              })\n            })\n          )\n        }\n\n        return h(\n          'i',\n          {\n            ref: rootRef,\n            class: 'vc-overlay-heatmap',\n            style: 'display: none !important'\n          },\n          child\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\nexport type VcOverlayHeatmapProps = ExtractPropTypes<typeof heatmapOverlayProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 15:52:55\n * @LastEditTime: 2022-01-19 21:54:55\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\echarts\\index.ts\n */\nimport type { ExtractPropTypes, CSSProperties, WatchStopHandle } from 'vue'\nimport { defineComponent, getCurrentInstance, ref, h, reactive, createCommentVNode, watch, onUnmounted, nextTick } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { $ } from '@vue-cesium/utils/private/vm'\nimport { useCommon } from '@vue-cesium/composables'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport * as echarts from 'echarts'\nimport type { EChartsType } from 'echarts'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const echartsOverlayProps = {\n  options: {\n    type: Object,\n    required: true\n  },\n  autoHidden: {\n    type: Boolean,\n    default: true\n  },\n  customClass: String,\n  coordinateSystem: {\n    type: String,\n    default: 'cesium'\n  }\n}\nconst emits = {\n  ...commonEmits,\n  mouseenter: (evt: MouseEvent) => true,\n  mouseleave: (evt: MouseEvent) => true,\n  click: (evt: MouseEvent) => true\n}\nexport default defineComponent({\n  name: 'VcOverlayEcharts',\n  props: echartsOverlayProps,\n  emits: ['beforeLoad', 'ready', 'destroyed', 'mouseenter', 'mouseleave', 'click'],\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverlayEcharts'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const canRender = ref(false)\n    const rootRef = ref<HTMLElement>(null!)\n    const rootStyle = reactive<CSSProperties>({\n      left: '0px',\n      top: '0px',\n      pointerEvents: 'none',\n      position: 'absolute'\n    })\n    let chart: EChartsType\n    const visible = ref(true)\n    // watcch\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => props.options,\n        val => {\n          commonState.reload()\n        }\n      )\n    )\n\n    // methods\n    instance.createCesiumObject = async () => {\n      return $(rootRef)\n    }\n    instance.mount = async () => {\n      const { viewer } = $services\n      canRender.value = true\n\n      nextTick(() => {\n        echarts.registerCoordinateSystem(props.coordinateSystem, getE3CoordinateSystem(viewer))\n        chart = echarts.init($(rootRef))\n        setCharts()\n        viewer.scene.postRender.addEventListener(onPreRender)\n      })\n\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      viewer.scene.postRender.removeEventListener(onPreRender)\n      canRender.value = false\n      return true\n    }\n\n    const onPreRender = () => {\n      if (visible.value) {\n        const { viewer } = $services\n        chart.resize({\n          width: viewer.canvas.width,\n          height: viewer.canvas.height\n        })\n      }\n    }\n\n    const setCharts = () => {\n      if (visible.value && props.options) {\n        chart.setOption(props.options)\n      }\n    }\n    const getE3CoordinateSystem = (viewer: Cesium.Viewer) => {\n      const CoordSystem = function CoordSystem(this: any, viewer) {\n        this.viewer = viewer\n        this._mapOffset = [0, 0]\n      }\n\n      CoordSystem.create = function (ecModel) {\n        ecModel.eachSeries(function (seriesModel) {\n          if (seriesModel.get('coordinateSystem') === props.coordinateSystem) {\n            seriesModel.coordinateSystem = new CoordSystem(viewer)\n          }\n        })\n        return []\n      }\n\n      CoordSystem.getDimensionsInfo = function () {\n        return ['x', 'y']\n      }\n\n      CoordSystem.dimensions = ['x', 'y']\n      CoordSystem.prototype.dimensions = ['x', 'y']\n      CoordSystem.prototype.setMapOffset = function setMapOffset(mapOffset) {\n        this._mapOffset = mapOffset\n      }\n      CoordSystem.prototype.dataToPoint = function (data) {\n        const result = []\n        const cartesian3 = Cesium.Cartesian3.fromDegrees(data[0], data[1])\n        if (!cartesian3) {\n          return result\n        }\n\n        if (props.autoHidden) {\n          const up = Cesium.Ellipsoid.WGS84.geodeticSurfaceNormal(cartesian3, new Cesium.Cartesian3())\n          const cd = this.viewer.camera.direction\n          if (Cesium.Cartesian3.dot(up, cd) >= 0) {\n            return result\n          }\n        }\n\n        const coords = this.viewer.scene.cartesianToCanvasCoordinates(cartesian3)\n        if (!coords) {\n          return result\n        }\n        return [coords.x - this._mapOffset[0], coords.y - this._mapOffset[1]]\n      }\n      CoordSystem.prototype.pointToData = function (pt) {\n        const mapOffset = this._mapOffset\n        const ellipsoid = viewer.scene.globe.ellipsoid\n        const car3 = new Cesium.Cartesian3(pt[1] + mapOffset[1], pt[2] + mapOffset[2], 0)\n        const cart = ellipsoid.cartesianToCartographic(car3)\n        return cart ? [cart.longitude, cart.latitude] : [0, 0]\n      }\n      CoordSystem.prototype.getviewerRect = function () {\n        const canvas = this.viewer.canvas\n        return new echarts.graphic.BoundingRect(0, 0, canvas.width, canvas.height)\n      }\n      CoordSystem.prototype.getRoamTransform = function () {\n        return echarts.matrix.create()\n      }\n\n      return CoordSystem\n    }\n\n    const renderContent = () => {\n      if (canRender.value) {\n        return h(\n          'div',\n          {\n            ref: rootRef,\n            class: `vc-echart-container${props.customClass ? ' ' + props.customClass : ''}`,\n            style: rootStyle,\n            onMouseenter: onMouseenter,\n            onMouseleave: onMouseleave,\n            onClick: onClick\n          },\n          hSlot(ctx.slots.default)\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n\n    const onClick = evt => {\n      ctx.emit('click', evt)\n    }\n\n    const onMouseenter = evt => {\n      ctx.emit('mouseenter', evt)\n    }\n\n    const onMouseleave = evt => {\n      ctx.emit('mouseleave', evt)\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    return () => renderContent()\n  }\n})\n\nexport type VcOverlayEchartsProps = ExtractPropTypes<typeof echartsOverlayProps>\nexport type VcOverlayEchartsEmits = typeof emits\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 10:11:59\n * @LastEditTime: 2022-01-17 16:21:12\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\wind\\util.ts\n */\n\nexport function getFullscreenQuad() {\n  const GeometryAttributes = Cesium.GeometryAttributes as any\n  const fullscreenQuad = new Cesium.Geometry({\n    attributes: new GeometryAttributes({\n      position: new Cesium.GeometryAttribute({\n        componentDatatype: Cesium.ComponentDatatype.FLOAT,\n        componentsPerAttribute: 3,\n        //  v3----v2\n        //  |     |\n        //  |     |\n        //  v0----v1\n        // prettier-ignore\n        values: new Float32Array([\n          -1, -1, 0, // v0\n          1, -1, 0, // v1\n          1, 1, 0, // v2\n          -1, 1, 0, // v3\n        ])\n      }),\n      st: new Cesium.GeometryAttribute({\n        componentDatatype: Cesium.ComponentDatatype.FLOAT,\n        componentsPerAttribute: 2,\n        values: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1])\n      })\n    }),\n    indices: new Uint32Array([3, 2, 0, 0, 2, 1])\n  })\n  return fullscreenQuad\n}\n\nexport function createTexture(options, typedArray?) {\n  if (Cesium.defined(typedArray)) {\n    // typed array needs to be passed as source option, this is required by Cesium.Texture\n    const source: any = {}\n    source.arrayBufferView = typedArray\n    options.source = source\n  }\n\n  const texture = new Cesium.Texture(options)\n  return texture\n}\n\nexport function createFramebuffer(context, colorTexture, depthTexture) {\n  const framebuffer = new Cesium.Framebuffer({\n    context: context,\n    colorTextures: [colorTexture],\n    depthTexture: depthTexture\n  })\n  return framebuffer\n}\n\nexport function createRawRenderState(options) {\n  const translucent = true\n  const closed = false\n  const existing = {\n    viewport: options.viewport,\n    depthTest: options.depthTest,\n    depthMask: options.depthMask,\n    blending: options.blending\n  }\n\n  const rawRenderState = (Cesium.Appearance as any).getDefaultRenderState(translucent, closed, existing)\n  return rawRenderState\n}\n\nexport function viewRectangleToLonLatRange(viewRectangle) {\n  const range: any = {}\n\n  const postiveWest = Cesium.Math.mod(viewRectangle.west, Cesium.Math.TWO_PI)\n  const postiveEast = Cesium.Math.mod(viewRectangle.east, Cesium.Math.TWO_PI)\n  const width = viewRectangle.width\n\n  let longitudeMin\n  let longitudeMax\n  if (width > Cesium.Math.THREE_PI_OVER_TWO) {\n    longitudeMin = 0.0\n    longitudeMax = Cesium.Math.TWO_PI\n  } else {\n    if (postiveEast - postiveWest < width) {\n      longitudeMin = postiveWest\n      longitudeMax = postiveWest + width\n    } else {\n      longitudeMin = postiveWest\n      longitudeMax = postiveEast\n    }\n  }\n\n  range.lon = {\n    min: Cesium.Math.toDegrees(longitudeMin),\n    max: Cesium.Math.toDegrees(longitudeMax)\n  }\n\n  const south = viewRectangle.south\n  const north = viewRectangle.north\n  const height = viewRectangle.height\n\n  const extendHeight = height > Cesium.Math.PI / 12 ? height / 2 : 0\n  let extendedSouth = Cesium.Math.clampToLatitudeRange(south - extendHeight)\n  let extendedNorth = Cesium.Math.clampToLatitudeRange(north + extendHeight)\n\n  // extend the bound in high latitude area to make sure it can cover all the visible area\n  if (extendedSouth < -Cesium.Math.PI_OVER_THREE) {\n    extendedSouth = -Cesium.Math.PI_OVER_TWO\n  }\n  if (extendedNorth > Cesium.Math.PI_OVER_THREE) {\n    extendedNorth = Cesium.Math.PI_OVER_TWO\n  }\n\n  range.lat = {\n    min: Cesium.Math.toDegrees(extendedSouth),\n    max: Cesium.Math.toDegrees(extendedNorth)\n  }\n\n  return range\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 09:25:03\n * @LastEditTime: 2021-10-28 23:48:08\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\wind\\glsl\\calculateSpeed.frag.ts\n */\nexport default `\n// the size of UV textures: width = lon, height = lat*lev\nuniform sampler2D U; // eastward wind\nuniform sampler2D V; // northward wind\nuniform sampler2D currentParticlesPosition; // (lon, lat, lev)\n\nuniform vec3 dimension; // (lon, lat, lev)\nuniform vec3 minimum; // minimum of each dimension\nuniform vec3 maximum; // maximum of each dimension\nuniform vec3 interval; // interval of each dimension\n\n// used to calculate the wind norm\nuniform vec2 uSpeedRange; // (min, max);\nuniform vec2 vSpeedRange;\nuniform float pixelSize;\nuniform float speedFactor;\n\nfloat speedScaleFactor = speedFactor * pixelSize;\n\nvarying vec2 v_textureCoordinates;\n\nvec2 mapPositionToNormalizedIndex2D(vec3 lonLatLev) {\n  // ensure the range of longitude and latitude\n  lonLatLev.x = mod(lonLatLev.x, 360.0);\n  lonLatLev.y = clamp(lonLatLev.y, -90.0, 90.0);\n\n  vec3 index3D = vec3(0.0);\n  index3D.x = (lonLatLev.x - minimum.x) / interval.x;\n  index3D.y = (lonLatLev.y - minimum.y) / interval.y;\n  index3D.z = (lonLatLev.z - minimum.z) / interval.z;\n\n  // the st texture coordinate corresponding to (col, row) index\n  // example\n  // data array is [0, 1, 2, 3, 4, 5], width = 3, height = 2\n  // the content of texture will be\n  // t 1.0\n  //    |  3 4 5\n  //    |\n  //    |  0 1 2\n  //   0.0------1.0 s\n\n  vec2 index2D = vec2(index3D.x, index3D.z * dimension.y + index3D.y);\n  vec2 normalizedIndex2D = vec2(index2D.x / dimension.x, index2D.y / (dimension.y * dimension.z));\n  return normalizedIndex2D;\n}\n\nfloat getWindComponent(sampler2D componentTexture, vec3 lonLatLev) {\n  vec2 normalizedIndex2D = mapPositionToNormalizedIndex2D(lonLatLev);\n  float result = texture2D(componentTexture, normalizedIndex2D).r;\n  return result;\n}\n\nfloat interpolateTexture(sampler2D componentTexture, vec3 lonLatLev) {\n  float lon = lonLatLev.x;\n  float lat = lonLatLev.y;\n  float lev = lonLatLev.z;\n\n  float lon0 = floor(lon / interval.x) * interval.x;\n  float lon1 = lon0 + 1.0 * interval.x;\n  float lat0 = floor(lat / interval.y) * interval.y;\n  float lat1 = lat0 + 1.0 * interval.y;\n\n  float lon0_lat0 = getWindComponent(componentTexture, vec3(lon0, lat0, lev));\n  float lon1_lat0 = getWindComponent(componentTexture, vec3(lon1, lat0, lev));\n  float lon0_lat1 = getWindComponent(componentTexture, vec3(lon0, lat1, lev));\n  float lon1_lat1 = getWindComponent(componentTexture, vec3(lon1, lat1, lev));\n\n  float lon_lat0 = mix(lon0_lat0, lon1_lat0, lon - lon0);\n  float lon_lat1 = mix(lon0_lat1, lon1_lat1, lon - lon0);\n  float lon_lat = mix(lon_lat0, lon_lat1, lat - lat0);\n  return lon_lat;\n}\n\nvec3 linearInterpolation(vec3 lonLatLev) {\n  // https://en.wikipedia.org/wiki/Bilinear_interpolation\n  float u = interpolateTexture(U, lonLatLev);\n  float v = interpolateTexture(V, lonLatLev);\n  float w = 0.0;\n  return vec3(u, v, w);\n}\n\nvec2 lengthOfLonLat(vec3 lonLatLev) {\n  // unit conversion: meters -> longitude latitude degrees\n  // see https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree for detail\n\n  // Calculate the length of a degree of latitude and longitude in meters\n  float latitude = radians(lonLatLev.y);\n\n  float term1 = 111132.92;\n  float term2 = 559.82 * cos(2.0 * latitude);\n  float term3 = 1.175 * cos(4.0 * latitude);\n  float term4 = 0.0023 * cos(6.0 * latitude);\n  float latLength = term1 - term2 + term3 - term4;\n\n  float term5 = 111412.84 * cos(latitude);\n  float term6 = 93.5 * cos(3.0 * latitude);\n  float term7 = 0.118 * cos(5.0 * latitude);\n  float longLength = term5 - term6 + term7;\n\n  return vec2(longLength, latLength);\n}\n\nvec3 convertSpeedUnitToLonLat(vec3 lonLatLev, vec3 speed) {\n  vec2 lonLatLength = lengthOfLonLat(lonLatLev);\n  float u = speed.x / lonLatLength.x;\n  float v = speed.y / lonLatLength.y;\n  float w = 0.0;\n  vec3 windVectorInLonLatLev = vec3(u, v, w);\n\n  return windVectorInLonLatLev;\n}\n\nvec3 calculateSpeedByRungeKutta2(vec3 lonLatLev) {\n  // see https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages for detail\n  const float h = 0.5;\n\n  vec3 y_n = lonLatLev;\n  vec3 f_n = linearInterpolation(lonLatLev);\n  vec3 midpoint = y_n + 0.5 * h * convertSpeedUnitToLonLat(y_n, f_n) * speedScaleFactor;\n  vec3 speed = h * linearInterpolation(midpoint) * speedScaleFactor;\n\n  return speed;\n}\n\nfloat calculateWindNorm(vec3 speed) {\n  vec3 percent = vec3(0.0);\n  percent.x = (speed.x - uSpeedRange.x) / (uSpeedRange.y - uSpeedRange.x);\n  percent.y = (speed.y - vSpeedRange.x) / (vSpeedRange.y - vSpeedRange.x);\n  float norm = length(percent);\n\n  return norm;\n}\n\nvoid main() {\n  // texture coordinate must be normalized\n  vec3 lonLatLev = texture2D(currentParticlesPosition, v_textureCoordinates).rgb;\n  vec3 speed = calculateSpeedByRungeKutta2(lonLatLev);\n  vec3 speedInLonLat = convertSpeedUnitToLonLat(lonLatLev, speed);\n\n  vec4 particleSpeed = vec4(speedInLonLat, calculateWindNorm(speed / speedScaleFactor));\n  gl_FragColor = particleSpeed;\n}\n`\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 09:20:11\n * @LastEditTime: 2021-10-28 10:05:45\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\wind\\glsl\\updatePosition.ts\n */\nconst text = `\nuniform sampler2D currentParticlesPosition; // (lon, lat, lev)\nuniform sampler2D particlesSpeed; // (u, v, w, norm) Unit converted to degrees of longitude and latitude\n\nvarying vec2 v_textureCoordinates;\n\nvoid main() {\n  // texture coordinate must be normalized\n  vec3 lonLatLev = texture2D(currentParticlesPosition, v_textureCoordinates).rgb;\n  vec3 speed = texture2D(particlesSpeed, v_textureCoordinates).rgb;\n  vec3 nextParticle = lonLatLev + speed;\n\n  gl_FragColor = vec4(nextParticle, 0.0);\n}\n`\nexport default text\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 09:20:11\n * @LastEditTime: 2021-10-28 15:46:30\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\wind\\glsl\\postProcessingPosition.frag.ts\n */\nconst text = `\nuniform sampler2D nextParticlesPosition;\nuniform sampler2D particlesSpeed; // (u, v, w, norm)\n\n// range (min, max)\nuniform vec2 lonRange;\nuniform vec2 latRange;\n\nuniform float randomCoefficient; // use to improve the pseudo-random generator\nuniform float dropRate; // drop rate is a chance a particle will restart at random position to avoid degeneration\nuniform float dropRateBump;\n\nvarying vec2 v_textureCoordinates;\n\n// pseudo-random generator\nconst vec3 randomConstants = vec3(12.9898, 78.233, 4375.85453);\nconst vec2 normalRange = vec2(0.0, 1.0);\nfloat rand(vec2 seed, vec2 range) {\n  vec2 randomSeed = randomCoefficient * seed;\n  float temp = dot(randomConstants.xy, randomSeed);\n  temp = fract(sin(temp) * (randomConstants.z + temp));\n  return temp * (range.y - range.x) + range.x;\n}\n\nvec3 generateRandomParticle(vec2 seed, float lev) {\n  // ensure the longitude is in [0, 360]\n  float randomLon = mod(rand(seed, lonRange), 360.0);\n  float randomLat = rand(-seed, latRange);\n\n  return vec3(randomLon, randomLat, lev);\n}\n\nbool particleOutbound(vec3 particle) {\n  return particle.y < -90.0 || particle.y > 90.0;\n}\n\nvoid main() {\n  vec3 nextParticle = texture2D(nextParticlesPosition, v_textureCoordinates).rgb;\n  vec4 nextSpeed = texture2D(particlesSpeed, v_textureCoordinates);\n  float speedNorm = nextSpeed.a;\n  float particleDropRate = dropRate + dropRateBump * speedNorm;\n\n  vec2 seed1 = nextParticle.xy + v_textureCoordinates;\n  vec2 seed2 = nextSpeed.xy + v_textureCoordinates;\n  vec3 randomParticle = generateRandomParticle(seed1, nextParticle.z);\n  float randomNumber = rand(seed2, normalRange);\n\n  if (randomNumber < particleDropRate || particleOutbound(nextParticle)) {\n    gl_FragColor = vec4(randomParticle, 1.0); // 1.0 means this is a random particle\n  } else {\n    gl_FragColor = vec4(nextParticle, 0.0);\n  }\n}\n`\nexport default text\n","class CustomPrimitive {\n  commandType: string\n  geometry: any\n  attributeLocations: any\n  primitiveType: any\n  uniformMap: any\n  vertexShaderSource: any\n  fragmentShaderSource: any\n  rawRenderState: any\n  framebuffer: any\n  outputTexture: any\n  autoClear: any\n  preExecute: any\n  show: boolean\n  commandToExecute: any\n  clearCommand: any\n  constructor(options) {\n    this.commandType = options.commandType\n\n    this.geometry = options.geometry\n    this.attributeLocations = options.attributeLocations\n    this.primitiveType = options.primitiveType\n\n    this.uniformMap = options.uniformMap\n\n    this.vertexShaderSource = options.vertexShaderSource\n    this.fragmentShaderSource = options.fragmentShaderSource\n\n    this.rawRenderState = options.rawRenderState\n    this.framebuffer = options.framebuffer\n\n    this.outputTexture = options.outputTexture\n\n    this.autoClear = Cesium.defaultValue(options.autoClear, false)\n    this.preExecute = options.preExecute\n\n    this.show = true\n    this.commandToExecute = undefined\n    this.clearCommand = undefined\n    if (this.autoClear) {\n      this.clearCommand = new Cesium.ClearCommand({\n        color: new Cesium.Color(0.0, 0.0, 0.0, 0.0),\n        depth: 1.0,\n        framebuffer: this.framebuffer,\n        pass: Cesium.Pass.OPAQUE\n      })\n    }\n  }\n\n  createCommand(context) {\n    switch (this.commandType) {\n      case 'Draw': {\n        const vertexArray = Cesium.VertexArray.fromGeometry({\n          context: context,\n          geometry: this.geometry,\n          attributeLocations: this.attributeLocations,\n          bufferUsage: Cesium.BufferUsage.STATIC_DRAW\n        })\n\n        const shaderProgram = Cesium.ShaderProgram.fromCache({\n          context: context,\n          attributeLocations: this.attributeLocations,\n          vertexShaderSource: this.vertexShaderSource,\n          fragmentShaderSource: this.fragmentShaderSource\n        })\n\n        const renderState = Cesium.RenderState.fromCache(this.rawRenderState)\n        return new Cesium.DrawCommand({\n          owner: this,\n          vertexArray: vertexArray,\n          primitiveType: this.primitiveType,\n          uniformMap: this.uniformMap,\n          modelMatrix: Cesium.Matrix4.IDENTITY,\n          shaderProgram: shaderProgram,\n          framebuffer: this.framebuffer,\n          renderState: renderState,\n          pass: Cesium.Pass.OPAQUE\n        })\n      }\n      case 'Compute': {\n        return new Cesium.ComputeCommand({\n          owner: this,\n          fragmentShaderSource: this.fragmentShaderSource,\n          uniformMap: this.uniformMap,\n          outputTexture: this.outputTexture,\n          persists: true\n        })\n      }\n    }\n  }\n\n  setGeometry(context, geometry) {\n    this.geometry = geometry\n    const vertexArray = Cesium.VertexArray.fromGeometry({\n      context: context,\n      geometry: this.geometry,\n      attributeLocations: this.attributeLocations,\n      bufferUsage: Cesium.BufferUsage.STATIC_DRAW\n    })\n    this.commandToExecute.vertexArray = vertexArray\n  }\n\n  update(frameState) {\n    if (!this.show) {\n      return\n    }\n\n    if (!Cesium.defined(this.commandToExecute)) {\n      this.commandToExecute = this.createCommand(frameState.context)\n    }\n\n    if (Cesium.defined(this.preExecute)) {\n      this.preExecute()\n    }\n\n    if (Cesium.defined(this.clearCommand)) {\n      frameState.commandList.push(this.clearCommand)\n    }\n    frameState.commandList.push(this.commandToExecute)\n  }\n\n  isDestroyed() {\n    return false\n  }\n\n  destroy() {\n    if (Cesium.defined(this.commandToExecute)) {\n      this.commandToExecute.shaderProgram = this.commandToExecute.shaderProgram && this.commandToExecute.shaderProgram.destroy()\n    }\n    return Cesium.destroyObject(this)\n  }\n}\n\nexport default CustomPrimitive\n","import * as Util from './util'\nimport calculateSpeedFrag from './glsl/calculateSpeed.frag'\nimport updatePositionFrag from './glsl/updatePosition.frag'\nimport postProcessingPositionFrag from './glsl/postProcessingPosition.frag'\nimport CustomPrimitive from './customPrimitive'\n\nclass ParticlesComputing {\n  windTextures: any\n  particlesTextures: any\n  primitives: any\n  data: any\n\n  constructor(context, data, particleSystemOptions, viewerParameters) {\n    this.data = data\n    this.createWindTextures(context, data)\n    this.createParticlesTextures(context, particleSystemOptions, viewerParameters)\n    this.createComputingPrimitives(data, particleSystemOptions, viewerParameters)\n  }\n\n  createWindTextures(context, data) {\n    const windTextureOptions = {\n      context: context,\n      width: data.dimensions.lon,\n      height: data.dimensions.lat * data.dimensions.lev,\n      pixelFormat: Cesium.PixelFormat.LUMINANCE,\n      pixelDatatype: Cesium.PixelDatatype.FLOAT,\n      flipY: false,\n      sampler: new Cesium.Sampler({\n        // the values of texture will not be interpolated\n        minificationFilter: Cesium.TextureMinificationFilter.NEAREST,\n        magnificationFilter: Cesium.TextureMagnificationFilter.NEAREST\n      })\n    }\n\n    this.windTextures = {\n      U: Util.createTexture(windTextureOptions, data.U.array),\n      V: Util.createTexture(windTextureOptions, data.V.array)\n    }\n  }\n\n  createParticlesTextures(context, particleSystemOptions, viewerParameters) {\n    const particlesTextureOptions = {\n      context: context,\n      width: particleSystemOptions.particlesTextureSize,\n      height: particleSystemOptions.particlesTextureSize,\n      pixelFormat: Cesium.PixelFormat.RGBA,\n      pixelDatatype: Cesium.PixelDatatype.FLOAT,\n      flipY: false,\n      sampler: new Cesium.Sampler({\n        // the values of texture will not be interpolated\n        minificationFilter: Cesium.TextureMinificationFilter.NEAREST,\n        magnificationFilter: Cesium.TextureMagnificationFilter.NEAREST\n      })\n    }\n\n    const particlesArray = this.randomizeParticles(particleSystemOptions.maxParticles, viewerParameters)\n    const zeroArray = new Float32Array(4 * particleSystemOptions.maxParticles).fill(0)\n\n    this.particlesTextures = {\n      previousParticlesPosition: Util.createTexture(particlesTextureOptions, particlesArray),\n      currentParticlesPosition: Util.createTexture(particlesTextureOptions, particlesArray),\n      nextParticlesPosition: Util.createTexture(particlesTextureOptions, particlesArray),\n      postProcessingPosition: Util.createTexture(particlesTextureOptions, particlesArray),\n\n      particlesSpeed: Util.createTexture(particlesTextureOptions, zeroArray)\n    }\n  }\n\n  randomizeParticles(maxParticles, viewerParameters) {\n    const array = new Float32Array(4 * maxParticles)\n    for (let i = 0; i < maxParticles; i++) {\n      array[4 * i] = Cesium.Math.randomBetween(viewerParameters.lonRange.x, viewerParameters.lonRange.y)\n      array[4 * i + 1] = Cesium.Math.randomBetween(viewerParameters.latRange.x, viewerParameters.latRange.y)\n      array[4 * i + 2] = Cesium.Math.randomBetween(this.data.lev.min, this.data.lev.max)\n      array[4 * i + 3] = 0.0\n    }\n    return array\n  }\n\n  destroyParticlesTextures() {\n    Object.keys(this.particlesTextures).forEach(key => {\n      this.particlesTextures[key].destroy()\n    })\n  }\n\n  createComputingPrimitives(data, particleSystemOptions, viewerParameters) {\n    const dimension = new Cesium.Cartesian3(data.dimensions.lon, data.dimensions.lat, data.dimensions.lev)\n    const minimum = new Cesium.Cartesian3(data.lon.min, data.lat.min, data.lev.min)\n    const maximum = new Cesium.Cartesian3(data.lon.max, data.lat.max, data.lev.max)\n    const interval = new Cesium.Cartesian3(\n      (maximum.x - minimum.x) / (dimension.x - 1),\n      (maximum.y - minimum.y) / (dimension.y - 1),\n      dimension.z > 1 ? (maximum.z - minimum.z) / (dimension.z - 1) : 1.0\n    )\n    const uSpeedRange = new Cesium.Cartesian2(data.U.min, data.U.max)\n    const vSpeedRange = new Cesium.Cartesian2(data.V.min, data.V.max)\n\n    const that = this\n\n    this.primitives = {\n      calculateSpeed: new CustomPrimitive({\n        commandType: 'Compute',\n        uniformMap: {\n          U: function () {\n            return that.windTextures.U\n          },\n          V: function () {\n            return that.windTextures.V\n          },\n          currentParticlesPosition: function () {\n            return that.particlesTextures.currentParticlesPosition\n          },\n          dimension: function () {\n            return dimension\n          },\n          minimum: function () {\n            return minimum\n          },\n          maximum: function () {\n            return maximum\n          },\n          interval: function () {\n            return interval\n          },\n          uSpeedRange: function () {\n            return uSpeedRange\n          },\n          vSpeedRange: function () {\n            return vSpeedRange\n          },\n          pixelSize: function () {\n            return viewerParameters.pixelSize\n          },\n          speedFactor: function () {\n            return particleSystemOptions.speedFactor\n          }\n        },\n        fragmentShaderSource: new Cesium.ShaderSource({\n          sources: [calculateSpeedFrag]\n        }),\n        outputTexture: this.particlesTextures.particlesSpeed,\n        preExecute: function () {\n          // swap textures before binding\n          const temp = that.particlesTextures.previousParticlesPosition\n          that.particlesTextures.previousParticlesPosition = that.particlesTextures.currentParticlesPosition\n          that.particlesTextures.currentParticlesPosition = that.particlesTextures.postProcessingPosition\n          that.particlesTextures.postProcessingPosition = temp\n\n          // keep the outputTexture up to date\n          that.primitives.calculateSpeed.commandToExecute.outputTexture = that.particlesTextures.particlesSpeed\n        }\n      }),\n\n      updatePosition: new CustomPrimitive({\n        commandType: 'Compute',\n        uniformMap: {\n          currentParticlesPosition: function () {\n            return that.particlesTextures.currentParticlesPosition\n          },\n          particlesSpeed: function () {\n            return that.particlesTextures.particlesSpeed\n          }\n        },\n        fragmentShaderSource: new Cesium.ShaderSource({\n          sources: [updatePositionFrag]\n        }),\n        outputTexture: this.particlesTextures.nextParticlesPosition,\n        preExecute: function () {\n          // keep the outputTexture up to date\n          that.primitives.updatePosition.commandToExecute.outputTexture = that.particlesTextures.nextParticlesPosition\n        }\n      }),\n\n      postProcessingPosition: new CustomPrimitive({\n        commandType: 'Compute',\n        uniformMap: {\n          nextParticlesPosition: function () {\n            return that.particlesTextures.nextParticlesPosition\n          },\n          particlesSpeed: function () {\n            return that.particlesTextures.particlesSpeed\n          },\n          lonRange: function () {\n            return viewerParameters.lonRange\n          },\n          latRange: function () {\n            return viewerParameters.latRange\n          },\n          randomCoefficient: function () {\n            const randomCoefficient = Math.random()\n            return randomCoefficient\n          },\n          dropRate: function () {\n            return particleSystemOptions.dropRate\n          },\n          dropRateBump: function () {\n            return particleSystemOptions.dropRateBump\n          }\n        },\n        fragmentShaderSource: new Cesium.ShaderSource({\n          sources: [postProcessingPositionFrag]\n        }),\n        outputTexture: this.particlesTextures.postProcessingPosition,\n        preExecute: function () {\n          // keep the outputTexture up to date\n          that.primitives.postProcessingPosition.commandToExecute.outputTexture = that.particlesTextures.postProcessingPosition\n        }\n      })\n    }\n  }\n}\nexport default ParticlesComputing\n","const text = `\nattribute vec2 st;\n// it is not normal itself, but used to control lines drawing\nattribute vec3 normal; // (point to use, offset sign, not used component)\n\nuniform sampler2D previousParticlesPosition;\nuniform sampler2D currentParticlesPosition;\nuniform sampler2D postProcessingPosition;\n\nuniform float particleHeight;\n\nuniform float aspect;\nuniform float pixelSize;\nuniform float lineWidth;\n\nstruct adjacentPoints {\n  vec4 previous;\n  vec4 current;\n  vec4 next;\n};\n\nvec3 convertCoordinate(vec3 lonLatLev) {\n  // WGS84 (lon, lat, lev) -> ECEF (x, y, z)\n  // read https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates for detail\n\n  // WGS 84 geometric constants\n  float a = 6378137.0; // Semi-major axis\n  float b = 6356752.3142; // Semi-minor axis\n  float e2 = 6.69437999014e-3; // First eccentricity squared\n\n  float latitude = radians(lonLatLev.y);\n  float longitude = radians(lonLatLev.x);\n\n  float cosLat = cos(latitude);\n  float sinLat = sin(latitude);\n  float cosLon = cos(longitude);\n  float sinLon = sin(longitude);\n\n  float N_Phi = a / sqrt(1.0 - e2 * sinLat * sinLat);\n  float h = particleHeight; // it should be high enough otherwise the particle may not pass the terrain depth test\n\n  vec3 cartesian = vec3(0.0);\n  cartesian.x = (N_Phi + h) * cosLat * cosLon;\n  cartesian.y = (N_Phi + h) * cosLat * sinLon;\n  cartesian.z = ((b * b) / (a * a) * N_Phi + h) * sinLat;\n  return cartesian;\n}\n\nvec4 calculateProjectedCoordinate(vec3 lonLatLev) {\n  // the range of longitude in Cesium is [-180, 180] but the range of longitude in the NetCDF file is [0, 360]\n  // [0, 180] is corresponding to [0, 180] and [180, 360] is corresponding to [-180, 0]\n  lonLatLev.x = mod(lonLatLev.x + 180.0, 360.0) - 180.0;\n  vec3 particlePosition = convertCoordinate(lonLatLev);\n  vec4 projectedCoordinate = czm_modelViewProjection * vec4(particlePosition, 1.0);\n  return projectedCoordinate;\n}\n\nvec4 calculateOffsetOnNormalDirection(vec4 pointA, vec4 pointB, float offsetSign) {\n  vec2 aspectVec2 = vec2(aspect, 1.0);\n  vec2 pointA_XY = (pointA.xy / pointA.w) * aspectVec2;\n  vec2 pointB_XY = (pointB.xy / pointB.w) * aspectVec2;\n\n  float offsetLength = lineWidth / 2.0;\n  vec2 direction = normalize(pointB_XY - pointA_XY);\n  vec2 normalVector = vec2(-direction.y, direction.x);\n  normalVector.x = normalVector.x / aspect;\n  normalVector = offsetLength * normalVector;\n\n  vec4 offset = vec4(offsetSign * normalVector, 0.0, 0.0);\n  return offset;\n}\n\nvec4 calculateOffsetOnMiterDirection(adjacentPoints projectedCoordinates, float offsetSign) {\n  vec2 aspectVec2 = vec2(aspect, 1.0);\n\n  vec4 PointA = projectedCoordinates.previous;\n  vec4 PointB = projectedCoordinates.current;\n  vec4 PointC = projectedCoordinates.next;\n\n  vec2 pointA_XY = (PointA.xy / PointA.w) * aspectVec2;\n  vec2 pointB_XY = (PointB.xy / PointB.w) * aspectVec2;\n  vec2 pointC_XY = (PointC.xy / PointC.w) * aspectVec2;\n\n  vec2 AB = normalize(pointB_XY - pointA_XY);\n  vec2 BC = normalize(pointC_XY - pointB_XY);\n\n  vec2 normalA = vec2(-AB.y, AB.x);\n  vec2 tangent = normalize(AB + BC);\n  vec2 miter = vec2(-tangent.y, tangent.x);\n\n  float offsetLength = lineWidth / 2.0;\n  float projection = dot(miter, normalA);\n  vec4 offset = vec4(0.0);\n  // avoid to use values that are too small\n  if (projection > 0.1) {\n    float miterLength = offsetLength / projection;\n    offset = vec4(offsetSign * miter * miterLength, 0.0, 0.0);\n    offset.x = offset.x / aspect;\n  } else {\n    offset = calculateOffsetOnNormalDirection(PointB, PointC, offsetSign);\n  }\n\n  return offset;\n}\n\nvoid main() {\n  vec2 particleIndex = st;\n\n  vec3 previousPosition = texture2D(previousParticlesPosition, particleIndex).rgb;\n  vec3 currentPosition = texture2D(currentParticlesPosition, particleIndex).rgb;\n  vec3 nextPosition = texture2D(postProcessingPosition, particleIndex).rgb;\n\n  float isAnyRandomPointUsed = texture2D(postProcessingPosition, particleIndex).a +\n    texture2D(currentParticlesPosition, particleIndex).a +\n    texture2D(previousParticlesPosition, particleIndex).a;\n\n  adjacentPoints projectedCoordinates;\n  if (isAnyRandomPointUsed > 0.0) {\n    projectedCoordinates.previous = calculateProjectedCoordinate(previousPosition);\n    projectedCoordinates.current = projectedCoordinates.previous;\n    projectedCoordinates.next = projectedCoordinates.previous;\n  } else {\n    projectedCoordinates.previous = calculateProjectedCoordinate(previousPosition);\n    projectedCoordinates.current = calculateProjectedCoordinate(currentPosition);\n    projectedCoordinates.next = calculateProjectedCoordinate(nextPosition);\n  }\n\n  int pointToUse = int(normal.x);\n  float offsetSign = normal.y;\n  vec4 offset = vec4(0.0);\n  // render lines with triangles and miter joint\n  // read https://blog.scottlogic.com/2019/11/18/drawing-lines-with-webgl.html for detail\n  if (pointToUse == -1) {\n    offset = pixelSize * calculateOffsetOnNormalDirection(projectedCoordinates.previous, projectedCoordinates.current, offsetSign);\n    gl_Position = projectedCoordinates.previous + offset;\n  } else {\n    if (pointToUse == 0) {\n      offset = pixelSize * calculateOffsetOnMiterDirection(projectedCoordinates, offsetSign);\n      gl_Position = projectedCoordinates.current + offset;\n    } else {\n      if (pointToUse == 1) {\n        offset = pixelSize * calculateOffsetOnNormalDirection(projectedCoordinates.current, projectedCoordinates.next, offsetSign);\n        gl_Position = projectedCoordinates.next + offset;\n      } else {\n\n      }\n    }\n  }\n}\n`\nexport default text\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 09:20:11\n * @LastEditTime: 2021-10-28 10:02:43\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\wind\\glsl\\segmentDraw.frag.ts\n */\nconst text = `\nvoid main() {\n  const vec4 white = vec4(1.0);\n  gl_FragColor = white;\n}\n`\nexport default text\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 09:20:11\n * @LastEditTime: 2021-10-28 09:32:24\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\wind\\glsl\\fullscreen.ts\n */\nconst text = `\nattribute vec3 position;\nattribute vec2 st;\n\nvarying vec2 textureCoordinate;\n\nvoid main() {\n    textureCoordinate = st;\n    gl_Position = vec4(position, 1.0);\n}\n`\nexport default text\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 09:20:11\n * @LastEditTime: 2021-10-28 10:05:07\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\wind\\glsl\\trailDraw.ts\n */\nconst text = `\nuniform sampler2D segmentsColorTexture;\nuniform sampler2D segmentsDepthTexture;\n\nuniform sampler2D currentTrailsColor;\nuniform sampler2D trailsDepthTexture;\n\nuniform float fadeOpacity;\n\nvarying vec2 textureCoordinate;\n\nvoid main() {\n  vec4 pointsColor = texture2D(segmentsColorTexture, textureCoordinate);\n  vec4 trailsColor = texture2D(currentTrailsColor, textureCoordinate);\n\n  trailsColor = floor(fadeOpacity * 255.0 * trailsColor) / 255.0; // make sure the trailsColor will be strictly decreased\n\n  float pointsDepth = texture2D(segmentsDepthTexture, textureCoordinate).r;\n  float trailsDepth = texture2D(trailsDepthTexture, textureCoordinate).r;\n  float globeDepth = czm_unpackDepth(texture2D(czm_globeDepthTexture, textureCoordinate));\n\n  gl_FragColor = vec4(0.0);\n  if (pointsDepth < globeDepth) {\n    gl_FragColor = gl_FragColor + pointsColor;\n  }\n  if (trailsDepth < globeDepth) {\n    gl_FragColor = gl_FragColor + trailsColor;\n  }\n  gl_FragDepthEXT = min(pointsDepth, trailsDepth);\n}\n`\nexport default text\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 09:20:11\n * @LastEditTime: 2021-10-28 09:37:17\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\wind\\glsl\\screenDraw.frag.ts\n */\nconst text = `\nuniform sampler2D trailsColorTexture;\nuniform sampler2D trailsDepthTexture;\n\nvarying vec2 textureCoordinate;\n\nvoid main() {\n  vec4 trailsColor = texture2D(trailsColorTexture, textureCoordinate);\n  float trailsDepth = texture2D(trailsDepthTexture, textureCoordinate).r;\n  float globeDepth = czm_unpackDepth(texture2D(czm_globeDepthTexture, textureCoordinate));\n\n  if (trailsDepth < globeDepth) {\n    gl_FragColor = trailsColor;\n  } else {\n    gl_FragColor = vec4(0.0);\n  }\n}\n`\nexport default text\n","import * as Util from './util'\nimport segmentDrawVert from './glsl/segmentDraw.vert'\nimport segmentDrawFrag from './glsl/segmentDraw.frag'\nimport fullscreenVert from './glsl/fullscreen.vert'\nimport trailDrawFrag from './glsl/trailDraw.frag'\nimport screenDrawFrag from './glsl/screenDraw.frag'\nimport CustomPrimitive from './customPrimitive'\n\nclass ParticlesRendering {\n  textures: any\n  framebuffers: any\n  primitives: any\n  constructor(context, data, particleSystemOptions, viewerParameters, particlesComputing) {\n    this.createRenderingTextures(context, data)\n    this.createRenderingFramebuffers(context)\n    this.createRenderingPrimitives(context, particleSystemOptions, viewerParameters, particlesComputing)\n  }\n\n  createRenderingTextures(context, data) {\n    const colorTextureOptions = {\n      context: context,\n      width: context.drawingBufferWidth,\n      height: context.drawingBufferHeight,\n      pixelFormat: Cesium.PixelFormat.RGBA,\n      pixelDatatype: Cesium.PixelDatatype.UNSIGNED_BYTE\n    }\n    const depthTextureOptions = {\n      context: context,\n      width: context.drawingBufferWidth,\n      height: context.drawingBufferHeight,\n      pixelFormat: Cesium.PixelFormat.DEPTH_COMPONENT,\n      pixelDatatype: Cesium.PixelDatatype.UNSIGNED_INT\n    }\n\n    this.textures = {\n      segmentsColor: Util.createTexture(colorTextureOptions),\n      segmentsDepth: Util.createTexture(depthTextureOptions),\n\n      currentTrailsColor: Util.createTexture(colorTextureOptions),\n      currentTrailsDepth: Util.createTexture(depthTextureOptions),\n\n      nextTrailsColor: Util.createTexture(colorTextureOptions),\n      nextTrailsDepth: Util.createTexture(depthTextureOptions)\n    }\n  }\n\n  createRenderingFramebuffers(context) {\n    this.framebuffers = {\n      segments: Util.createFramebuffer(context, this.textures.segmentsColor, this.textures.segmentsDepth),\n      currentTrails: Util.createFramebuffer(context, this.textures.currentTrailsColor, this.textures.currentTrailsDepth),\n      nextTrails: Util.createFramebuffer(context, this.textures.nextTrailsColor, this.textures.nextTrailsDepth)\n    }\n  }\n\n  createSegmentsGeometry(particleSystemOptions) {\n    const repeatVertex = 6\n\n    const typedArray: Array<number> = []\n    for (let s = 0; s < particleSystemOptions.particlesTextureSize; s++) {\n      for (let t = 0; t < particleSystemOptions.particlesTextureSize; t++) {\n        for (let i = 0; i < repeatVertex; i++) {\n          typedArray.push(s / particleSystemOptions.particlesTextureSize)\n          typedArray.push(t / particleSystemOptions.particlesTextureSize)\n        }\n      }\n    }\n    const st = new Float32Array(typedArray)\n\n    const normalArray: number[] = []\n    const pointToUse: number[] = [-1, 0, 1]\n    const offsetSign: number[] = [-1, 1]\n    for (let i = 0; i < particleSystemOptions.maxParticles; i++) {\n      for (let j = 0; j < pointToUse.length; j++) {\n        for (let k = 0; k < offsetSign.length; k++) {\n          normalArray.push(pointToUse[j])\n          normalArray.push(offsetSign[k])\n          normalArray.push(0)\n        }\n      }\n    }\n    const normal = new Float32Array(normalArray)\n\n    const indexSize = 12 * particleSystemOptions.maxParticles\n    const vertexIndexes = new Uint32Array(indexSize)\n    for (let i = 0, j = 0, vertex = 0; i < particleSystemOptions.maxParticles; i++) {\n      vertexIndexes[j++] = vertex + 0\n      vertexIndexes[j++] = vertex + 1\n      vertexIndexes[j++] = vertex + 2\n\n      vertexIndexes[j++] = vertex + 2\n      vertexIndexes[j++] = vertex + 1\n      vertexIndexes[j++] = vertex + 3\n\n      vertexIndexes[j++] = vertex + 2\n      vertexIndexes[j++] = vertex + 4\n      vertexIndexes[j++] = vertex + 3\n\n      vertexIndexes[j++] = vertex + 4\n      vertexIndexes[j++] = vertex + 3\n      vertexIndexes[j++] = vertex + 5\n\n      vertex += repeatVertex\n    }\n    const GeometryAttributes = Cesium.GeometryAttributes as any\n    const geometry = new Cesium.Geometry({\n      attributes: GeometryAttributes({\n        st: new Cesium.GeometryAttribute({\n          componentDatatype: Cesium.ComponentDatatype.FLOAT,\n          componentsPerAttribute: 2,\n          values: st\n        }),\n        normal: new Cesium.GeometryAttribute({\n          componentDatatype: Cesium.ComponentDatatype.FLOAT,\n          componentsPerAttribute: 3,\n          values: normal\n        })\n      }),\n      indices: vertexIndexes\n    })\n\n    return geometry\n  }\n\n  createRenderingPrimitives(context, particleSystemOptions, viewerParameters, particlesComputing) {\n    const that = this\n    this.primitives = {\n      segments: new CustomPrimitive({\n        commandType: 'Draw',\n        attributeLocations: {\n          st: 0,\n          normal: 1\n        },\n        geometry: this.createSegmentsGeometry(particleSystemOptions),\n        primitiveType: Cesium.PrimitiveType.TRIANGLES,\n        uniformMap: {\n          previousParticlesPosition: function () {\n            return particlesComputing.particlesTextures.previousParticlesPosition\n          },\n          currentParticlesPosition: function () {\n            return particlesComputing.particlesTextures.currentParticlesPosition\n          },\n          postProcessingPosition: function () {\n            return particlesComputing.particlesTextures.postProcessingPosition\n          },\n          aspect: function () {\n            return context.drawingBufferWidth / context.drawingBufferHeight\n          },\n          pixelSize: function () {\n            return viewerParameters.pixelSize\n          },\n          lineWidth: function () {\n            return particleSystemOptions.lineWidth\n          },\n          particleHeight: function () {\n            return particleSystemOptions.particleHeight\n          }\n        },\n        vertexShaderSource: new Cesium.ShaderSource({\n          sources: [segmentDrawVert]\n        }),\n        fragmentShaderSource: new Cesium.ShaderSource({\n          sources: [segmentDrawFrag]\n        }),\n        rawRenderState: Util.createRawRenderState({\n          // undefined value means let Cesium deal with it\n          viewport: undefined,\n          depthTest: {\n            enabled: true\n          },\n          depthMask: true\n        }),\n        framebuffer: this.framebuffers.segments,\n        autoClear: true\n      }),\n\n      trails: new CustomPrimitive({\n        commandType: 'Draw',\n        attributeLocations: {\n          position: 0,\n          st: 1\n        },\n        geometry: Util.getFullscreenQuad(),\n        primitiveType: Cesium.PrimitiveType.TRIANGLES,\n        uniformMap: {\n          segmentsColorTexture: function () {\n            return that.textures.segmentsColor\n          },\n          segmentsDepthTexture: function () {\n            return that.textures.segmentsDepth\n          },\n          currentTrailsColor: function () {\n            return that.framebuffers.currentTrails.getColorTexture(0)\n          },\n          trailsDepthTexture: function () {\n            return that.framebuffers.currentTrails.depthTexture\n          },\n          fadeOpacity: function () {\n            return particleSystemOptions.fadeOpacity\n          }\n        },\n        // prevent Cesium from writing depth because the depth here should be written manually\n        vertexShaderSource: new Cesium.ShaderSource({\n          defines: ['DISABLE_GL_POSITION_LOG_DEPTH'],\n          sources: [fullscreenVert]\n        }),\n        fragmentShaderSource: new Cesium.ShaderSource({\n          defines: ['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],\n          sources: [trailDrawFrag]\n        }),\n        rawRenderState: Util.createRawRenderState({\n          viewport: undefined,\n          depthTest: {\n            enabled: true,\n            func: Cesium.DepthFunction.ALWAYS // always pass depth test for full control of depth information\n          },\n          depthMask: true\n        }),\n        framebuffer: this.framebuffers.nextTrails,\n        autoClear: true,\n        preExecute: function () {\n          // swap framebuffers before binding\n          const temp = that.framebuffers.currentTrails\n          that.framebuffers.currentTrails = that.framebuffers.nextTrails\n          that.framebuffers.nextTrails = temp\n\n          // keep the framebuffers up to date\n          that.primitives.trails.commandToExecute.framebuffer = that.framebuffers.nextTrails\n          that.primitives.trails.clearCommand.framebuffer = that.framebuffers.nextTrails\n        }\n      }),\n\n      screen: new CustomPrimitive({\n        commandType: 'Draw',\n        attributeLocations: {\n          position: 0,\n          st: 1\n        },\n        geometry: Util.getFullscreenQuad(),\n        primitiveType: Cesium.PrimitiveType.TRIANGLES,\n        uniformMap: {\n          trailsColorTexture: function () {\n            return that.framebuffers.nextTrails.getColorTexture(0)\n          },\n          trailsDepthTexture: function () {\n            return that.framebuffers.nextTrails.depthTexture\n          }\n        },\n        // prevent Cesium from writing depth because the depth here should be written manually\n        vertexShaderSource: new Cesium.ShaderSource({\n          defines: ['DISABLE_GL_POSITION_LOG_DEPTH'],\n          sources: [fullscreenVert]\n        }),\n        fragmentShaderSource: new Cesium.ShaderSource({\n          defines: ['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],\n          sources: [screenDrawFrag]\n        }),\n        rawRenderState: Util.createRawRenderState({\n          viewport: undefined,\n          depthTest: {\n            enabled: false\n          },\n          depthMask: true,\n          blending: {\n            enabled: true\n          }\n        }),\n        framebuffer: undefined // undefined value means let Cesium deal with it\n      })\n    }\n  }\n}\n\nexport default ParticlesRendering\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 10:10:09\n * @LastEditTime: 2021-11-20 20:02:06\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\wind\\particleSystem.ts\n */\n\nimport ParticlesComputing from './particlesComputing'\nimport ParticlesRendering from './particlesRendering'\nclass ParticleSystem {\n  context: any\n  data: any\n  particleSystemOptions: any\n  viewerParameters: any\n  particlesComputing: any\n  particlesRendering: any\n  constructor(context, data, particleSystemOptions, viewerParameters) {\n    this.context = context\n    this.data = data\n    this.particleSystemOptions = particleSystemOptions\n    this.viewerParameters = viewerParameters\n\n    this.particlesComputing = new ParticlesComputing(this.context, this.data, this.particleSystemOptions, this.viewerParameters)\n    this.particlesRendering = new ParticlesRendering(\n      this.context,\n      this.data,\n      this.particleSystemOptions,\n      this.viewerParameters,\n      this.particlesComputing\n    )\n  }\n\n  canvasResize(context) {\n    this.particlesComputing.destroyParticlesTextures()\n    Object.keys(this.particlesComputing.windTextures).forEach(key => {\n      this.particlesComputing.windTextures[key].destroy()\n    })\n\n    Object.keys(this.particlesRendering.framebuffers).forEach(key => {\n      this.particlesRendering.framebuffers[key].destroy()\n    })\n\n    this.context = context\n    this.particlesComputing = new ParticlesComputing(this.context, this.data, this.particleSystemOptions, this.viewerParameters)\n    this.particlesRendering = new ParticlesRendering(\n      this.context,\n      this.data,\n      this.particleSystemOptions,\n      this.viewerParameters,\n      this.particlesComputing\n    )\n  }\n\n  clearFramebuffers() {\n    const clearCommand = new Cesium.ClearCommand({\n      color: new Cesium.Color(0.0, 0.0, 0.0, 0.0),\n      depth: 1.0,\n      framebuffer: undefined,\n      pass: Cesium.Pass.OPAQUE\n    })\n\n    Object.keys(this.particlesRendering.framebuffers).forEach(key => {\n      clearCommand.framebuffer = this.particlesRendering.framebuffers[key]\n      clearCommand.execute(this.context)\n    })\n  }\n\n  refreshParticles(maxParticlesChanged) {\n    this.clearFramebuffers()\n\n    this.particlesComputing.destroyParticlesTextures()\n    this.particlesComputing.createParticlesTextures(this.context, this.particleSystemOptions, this.viewerParameters)\n\n    if (maxParticlesChanged) {\n      const geometry = this.particlesRendering.createSegmentsGeometry(this.particleSystemOptions)\n      this.particlesRendering.primitives.segments.geometry = geometry\n      const vertexArray = Cesium.VertexArray.fromGeometry({\n        context: this.context,\n        geometry: geometry,\n        attributeLocations: this.particlesRendering.primitives.segments.attributeLocations,\n        bufferUsage: Cesium.BufferUsage.STATIC_DRAW\n      })\n      this.particlesRendering.primitives.segments.commandToExecute.vertexArray = vertexArray\n    }\n  }\n\n  applyParticleSystemOptions(particleSystemOptions) {\n    let maxParticlesChanged = false\n    if (this.particleSystemOptions.maxParticles !== particleSystemOptions.maxParticles) {\n      maxParticlesChanged = true\n    }\n\n    Object.keys(particleSystemOptions).forEach(key => {\n      this.particleSystemOptions[key] = particleSystemOptions[key]\n    })\n    this.refreshParticles(maxParticlesChanged)\n  }\n\n  applyViewerParameters(viewerParameters) {\n    Object.keys(viewerParameters).forEach(key => {\n      this.viewerParameters[key] = viewerParameters[key]\n    })\n    this.refreshParticles(false)\n  }\n}\n\nexport default ParticleSystem\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 13:42:09\n * @LastEditTime: 2022-01-19 23:40:00\n * @LastEditors: zouyaoji\n * @Description: from 3D-Wind-Field - https://github.com/RaymanNg/3D-Wind-Field\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\wind\\index.ts\n */\nimport type { ExtractPropTypes, PropType, WatchStopHandle } from 'vue'\nimport { useCommon } from '@vue-cesium/composables'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, onUnmounted, watch } from 'vue'\nimport ParticleSystem from './particleSystem'\nimport { viewRectangleToLonLatRange } from './util'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport type ParticleSystemOptions = {\n  maxParticles?: number\n  particleHeight?: number\n  fadeOpacity?: number\n  dropRate?: number\n  dropRateBump?: number\n  speedFactor?: number\n  lineWidth?: number\n}\n\nexport const windmapOverlayProps = {\n  show: {\n    type: Boolean,\n    default: true\n  },\n  data: {\n    type: Object,\n    required: true\n  },\n  options: {\n    type: Object as PropType<ParticleSystemOptions>,\n    default: () =>\n      ({\n        maxParticles: 64 * 64,\n        particleHeight: 100.0,\n        fadeOpacity: 0.996,\n        dropRate: 0.003,\n        dropRateBump: 0.01,\n        speedFactor: 1.0,\n        lineWidth: 4.0\n      } as ParticleSystemOptions)\n  }\n}\nexport default defineComponent({\n  name: 'VcOverlayWindmap',\n  props: windmapOverlayProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverlayHtml'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n\n    const { $services } = commonState\n    let viewerParameters\n    let globeBoundingSphere: Cesium.BoundingSphere\n    let primitiveCollection: Cesium.PrimitiveCollection\n\n    // computed\n    const particleSystemOptions = computed<ParticleSystemOptions>(() => {\n      // make sure maxParticles is exactly the square of particlesTextureSize\n      const particlesTextureSize = Math.ceil(Math.sqrt(props.options.maxParticles))\n      const maxParticles = particlesTextureSize * particlesTextureSize\n      return {\n        particlesTextureSize: particlesTextureSize,\n        maxParticles: maxParticles,\n        particleHeight: props.options.particleHeight,\n        fadeOpacity: props.options.fadeOpacity,\n        dropRate: props.options.dropRate,\n        dropRateBump: props.options.dropRateBump,\n        speedFactor: props.options.speedFactor,\n        lineWidth: props.options.lineWidth\n      }\n    })\n\n    // watcch\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => props.show,\n        val => {\n          primitiveCollection.show = val\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.data,\n        val => {\n          ;(instance.proxy as VcComponentPublicInstance).reload()\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => particleSystemOptions.value,\n        val => {\n          const particleSystem = instance.cesiumObject as ParticleSystem\n          if (!particleSystem) return\n          particleSystem.applyParticleSystemOptions(val)\n        },\n        {\n          deep: true\n        }\n      )\n    )\n\n    // methods\n    instance.createCesiumObject = async () => {\n      const { viewer } = $services\n      primitiveCollection = new Cesium.PrimitiveCollection()\n      // use a smaller earth radius to make sure distance to camera > 0\n      globeBoundingSphere = new Cesium.BoundingSphere(Cesium.Cartesian3.ZERO, 0.99 * 6378137.0)\n      viewerParameters = {\n        lonRange: new Cesium.Cartesian2(),\n        latRange: new Cesium.Cartesian2(),\n        pixelSize: 0.0\n      }\n      updateViewerParameters()\n      return new ParticleSystem((viewer.scene as any).context, props.data, particleSystemOptions.value, viewerParameters)\n    }\n\n    instance.mount = async () => {\n      const { viewer } = $services\n      viewer.scene.primitives.add(primitiveCollection)\n      const scene = viewer.scene\n      const camera = scene.camera\n      addPrimitives()\n      camera.moveStart.addEventListener(moveStartListener)\n      camera.moveEnd.addEventListener(moveEndListener)\n      window.addEventListener('resize', resizeListener)\n      scene.preRender.addEventListener(preRenderListener)\n      return true\n    }\n\n    instance.unmount = async () => {\n      removePrimitives()\n      const { viewer } = $services\n      const scene = viewer.scene\n      const camera = scene.camera\n      removePrimitives()\n      viewer.scene.primitives.remove(primitiveCollection)\n      camera.moveStart.removeEventListener(moveStartListener)\n      camera.moveEnd.removeEventListener(moveEndListener)\n      window.removeEventListener('resize', resizeListener)\n      scene.preRender.removeEventListener(preRenderListener)\n      return true\n    }\n\n    const addPrimitives = () => {\n      const particleSystem = instance.cesiumObject as ParticleSystem\n\n      // the order of primitives.add() should respect the dependency of primitives\n      primitiveCollection.add(particleSystem.particlesComputing.primitives.calculateSpeed)\n      primitiveCollection.add(particleSystem.particlesComputing.primitives.updatePosition)\n      primitiveCollection.add(particleSystem.particlesComputing.primitives.postProcessingPosition)\n\n      primitiveCollection.add(particleSystem.particlesRendering.primitives.segments)\n      primitiveCollection.add(particleSystem.particlesRendering.primitives.trails)\n      primitiveCollection.add(particleSystem.particlesRendering.primitives.screen)\n    }\n\n    const removePrimitives = () => {\n      const particleSystem = instance.cesiumObject as ParticleSystem\n      primitiveCollection.remove(particleSystem.particlesComputing.primitives.calculateSpeed)\n      primitiveCollection.remove(particleSystem.particlesComputing.primitives.updatePosition)\n      primitiveCollection.remove(particleSystem.particlesComputing.primitives.postProcessingPosition)\n\n      primitiveCollection.remove(particleSystem.particlesRendering.primitives.segments)\n      primitiveCollection.remove(particleSystem.particlesRendering.primitives.trails)\n      primitiveCollection.remove(particleSystem.particlesRendering.primitives.screen)\n    }\n\n    const moveStartListener = () => {\n      primitiveCollection.show = false\n    }\n\n    const moveEndListener = () => {\n      updateViewerParameters()\n      const particleSystem = instance.cesiumObject as ParticleSystem\n      particleSystem.applyViewerParameters(viewerParameters)\n      primitiveCollection.show = true\n    }\n\n    let resized = false\n    const resizeListener = () => {\n      resized = true\n      primitiveCollection.show = false\n      primitiveCollection.removeAll()\n    }\n\n    const preRenderListener = () => {\n      if (resized) {\n        const { viewer } = $services\n        const scene = viewer.scene\n        const particleSystem = instance.cesiumObject as ParticleSystem\n        particleSystem.canvasResize((scene as any).context)\n        resized = false\n        addPrimitives()\n        primitiveCollection.show = true\n      }\n    }\n\n    const updateViewerParameters = () => {\n      const { viewer } = $services\n      const scene = viewer.scene\n      const camera = scene.camera\n      const viewRectangle = camera.computeViewRectangle(scene.globe.ellipsoid)\n      const lonLatRange = viewRectangleToLonLatRange(viewRectangle)\n      viewerParameters.lonRange.x = lonLatRange.lon.min\n      viewerParameters.lonRange.y = lonLatRange.lon.max\n      viewerParameters.latRange.x = lonLatRange.lat.min\n      viewerParameters.latRange.y = lonLatRange.lat.max\n\n      const pixelSize = camera.getPixelSize(globeBoundingSphere, scene.drawingBufferWidth, scene.drawingBufferHeight)\n\n      if (pixelSize > 0) {\n        viewerParameters.pixelSize = pixelSize\n      }\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcOverlayWindmapProps = ExtractPropTypes<typeof windmapOverlayProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-24 11:38:18\n * @LastEditTime: 2022-02-20 00:53:12\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\dynamic\\index.ts\n */\nimport type { ExtractPropTypes, WatchStopHandle, PropType } from 'vue'\nimport { defineComponent, getCurrentInstance, createCommentVNode, onUnmounted, ref, watch } from 'vue'\nimport { DynamicOverlayOpts, SampledPosition, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useCommon } from '@vue-cesium/composables'\nimport { show } from '@vue-cesium/utils/cesium-props'\nimport { addCustomProperty, isPlainObject, kebabCase } from '@vue-cesium/utils/util'\nimport DynamicOverlay from '@vue-cesium/shared/src/DynamicOverlay'\nimport { makeJulianDate } from '@vue-cesium/utils/cesium-helpers'\nimport { cloneDeep, differenceBy, remove } from 'lodash-unified'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const dynamicOverlayProps = {\n  ...show,\n  name: {\n    type: String,\n    default: '__vc__overlay__dynamic__'\n  },\n  startTime: {\n    type: [Object, String] as PropType<Cesium.JulianDate | string>\n  },\n  stopTime: {\n    type: [Object, String] as PropType<Cesium.JulianDate | string>\n  },\n  currentTime: {\n    type: [Object, String] as PropType<Cesium.JulianDate | string>\n  },\n  clockRange: {\n    type: Number as PropType<number | Cesium.ClockRange>,\n    default: 0\n  },\n  clockStep: {\n    type: Number as PropType<number | Cesium.ClockStep>,\n    default: 1\n  },\n  shouldAnimate: {\n    type: Boolean,\n    default: true\n  },\n  canAnimate: {\n    type: Boolean,\n    default: true\n  },\n  multiplier: {\n    type: Number,\n    default: 1.0\n  },\n  dynamicOverlays: {\n    type: Array as PropType<DynamicOverlayOpts[]>,\n    default: () => []\n  },\n  defaultInterval: {\n    type: Number,\n    default: 3\n  }\n}\nconst emits = {\n  ...commonEmits,\n  'update:currentTime': (currentTime: Cesium.JulianDate) => true,\n  'update:shouldAnimate': (shouldAnimate: boolean) => true,\n  'update:canAnimate': (canAnimate: boolean) => true,\n  'update:clockRange': (clockRange: number | Cesium.ClockRange) => true,\n  'update:clockStep': (clockStep: number | Cesium.ClockStep) => true,\n  'update:multiplier': (multiplier: number) => true,\n  'update:startTime': (startTime: Cesium.JulianDate) => true,\n  'update:stopTime': (stopTime: Cesium.JulianDate) => true,\n  onStop: (clock: Cesium.Clock) => true\n}\nexport default defineComponent({\n  name: 'VcOverlayDynamic',\n  props: dynamicOverlayProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverlayDynamic'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const overlays = ref<Array<DynamicOverlay>>([])\n    const restoreClockOpts = ref<any>({})\n    const { emit } = ctx\n\n    // watcch\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => props.show,\n        val => {\n          const datasource = instance.cesiumObject as Cesium.CustomDataSource\n          datasource && (datasource.show = val)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.name,\n        val => {\n          const datasource = instance.cesiumObject as Cesium.CustomDataSource\n          datasource && (datasource.name = val)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.startTime,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer) && val) {\n            viewer.clock.startTime = makeJulianDate(val)\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.stopTime,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer) && val) {\n            viewer.clock.stopTime = makeJulianDate(val)\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.currentTime,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer) && val) {\n            viewer.clock.currentTime = makeJulianDate(val)\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.multiplier,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.multiplier = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.clockStep,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.clockStep = val\n          }\n        }\n      )\n    )\n    unwatchFns.push(\n      watch(\n        () => props.clockRange,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.clockRange = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.canAnimate,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.canAnimate = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.shouldAnimate,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.shouldAnimate = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => cloneDeep(props.dynamicOverlays),\n        (newVal, oldVal) => {\n          if (!instance.mounted) {\n            return\n          }\n          const datasource = instance.cesiumObject as Cesium.CustomDataSource\n          if (newVal.length === oldVal.length) {\n            // 视为修改操作\n            // Treated as modified\n            const modifies: Array<any> = []\n            for (let i = 0; i < newVal.length; i++) {\n              const options = newVal[i]\n              const oldOptions = oldVal[i]\n\n              // 忽略 model 的 nodeTransformations\n              // 即该属性不支持动态响应\n              const testReplace = (key, value) => {\n                if (key !== 'nodeTransformations') {\n                  return value\n                }\n              }\n\n              if (JSON.stringify(options, testReplace) !== JSON.stringify(oldOptions, testReplace)) {\n                modifies.push({\n                  newOptions: options,\n                  oldOptions: oldOptions\n                })\n              }\n            }\n\n            modifies.forEach(v => {\n              const modifyEntity = datasource.entities.getById(v.oldOptions.id)\n              if (v.oldOptions.id === v.newOptions.id) {\n                modifyEntity &&\n                  Object.keys(v.newOptions).forEach(prop => {\n                    if (v.oldOptions[prop] !== v.newOptions[prop]) {\n                      modifyEntity[prop] = commonState.transformProp(prop, v.newOptions[prop])\n                    }\n                  })\n              } else {\n                // 改了 id\n                if (modifyEntity) {\n                  datasource.entities.remove(modifyEntity)\n                  remove(overlays.value, overlay => overlay.id === modifyEntity.id)\n                  const entityOptions = v.newOptions\n                  addDynamicOverlays(datasource, [entityOptions])\n                }\n              }\n            })\n          } else {\n            const adds: any = differenceBy(newVal, oldVal, 'id')\n            const deletes: any = differenceBy(oldVal, newVal, 'id')\n            const deletedEntities: Array<Cesium.Entity> = []\n            for (let i = 0; i < deletes.length; i++) {\n              const deleteEntity = datasource.entities.getById(deletes[i].id)\n              deletedEntities.push(deleteEntity!)\n            }\n\n            deletedEntities.forEach(v => {\n              datasource.entities.remove(v)\n              remove(overlays.value, overlay => overlay.id === v.id)\n            })\n\n            addDynamicOverlays(datasource, adds)\n          }\n        },\n        {\n          deep: true\n        }\n      )\n    )\n\n    // methods\n    instance.createCesiumObject = async () => {\n      return new Cesium.CustomDataSource(props.name)\n    }\n\n    const onClockTick = (clock: Cesium.Clock) => {\n      let listener = getInstanceListener(instance, 'update:currentTime')\n      listener && emit('update:currentTime', clock.currentTime)\n\n      listener = getInstanceListener(instance, 'update:shouldAnimate')\n      listener && emit('update:shouldAnimate', clock.shouldAnimate)\n\n      listener = getInstanceListener(instance, 'update:canAnimate')\n      listener && emit('update:canAnimate', clock.canAnimate)\n\n      listener = getInstanceListener(instance, 'update:clockRange')\n      listener && emit('update:clockRange', clock.clockRange)\n\n      listener = getInstanceListener(instance, 'update:clockStep')\n      listener && emit('update:clockStep', clock.clockStep)\n\n      listener = getInstanceListener(instance, 'update:multiplier')\n      listener && emit('update:multiplier', clock.multiplier)\n\n      listener = getInstanceListener(instance, 'update:startTime')\n      listener && emit('update:startTime', clock.startTime)\n\n      listener = getInstanceListener(instance, 'update:stopTime')\n      listener && emit('update:stopTime', clock.stopTime)\n    }\n\n    const addDynamicOverlays = (datasource: Cesium.CustomDataSource, dynamicOverlays: Array<DynamicOverlayOpts>) => {\n      for (let i = 0; i < dynamicOverlays.length; i++) {\n        const entityOptions = dynamicOverlays[i] as any\n        const entityOptionsTransform = commonState.transformProps<DynamicOverlayOpts>(entityOptions)\n        const dynamicOverlay = new DynamicOverlay(entityOptionsTransform)\n        overlays.value.push(dynamicOverlay)\n        const entity = datasource.entities.add(dynamicOverlay._entity)\n        entityOptionsTransform.sampledPositions.forEach((sampledPosition: SampledPosition) => {\n          // 如果是数组认为是经纬度数组\n          if (Array.isArray(sampledPosition) || sampledPosition instanceof Cesium.Cartesian3) {\n            dynamicOverlay.addPosition(sampledPosition, props.defaultInterval)\n          } else if (isPlainObject(sampledPosition)) {\n            if (sampledPosition.time) {\n              dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.time)\n            } else if (sampledPosition.interval) {\n              dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.interval)\n            }\n          }\n        })\n        entityOptions.id !== entity.id && (entityOptions.id = entity.id)\n        addCustomProperty(entity, entityOptionsTransform)\n      }\n    }\n\n    instance.mount = async () => {\n      const { viewer } = $services\n      const datasource = instance.cesiumObject as Cesium.CustomDataSource\n      datasource.show = props.show\n      addDynamicOverlays(datasource, props.dynamicOverlays)\n\n      return viewer.dataSources.add(datasource).then(() => {\n        restoreClockOpts.value.startTime = viewer.clock.startTime\n        restoreClockOpts.value.stopTime = viewer.clock.stopTime\n        restoreClockOpts.value.currentTime = viewer.clock.currentTime\n        restoreClockOpts.value.multiplier = viewer.clock.multiplier\n        restoreClockOpts.value.clockStep = viewer.clock.clockStep\n        restoreClockOpts.value.clockRange = viewer.clock.clockRange\n        restoreClockOpts.value.canAnimate = viewer.clock.canAnimate\n        restoreClockOpts.value.shouldAnimate = viewer.clock.shouldAnimate\n\n        if (props.startTime) {\n          viewer.clock.startTime = makeJulianDate(props.startTime)\n        }\n        if (props.stopTime) {\n          viewer.clock.stopTime = makeJulianDate(props.stopTime)\n        }\n        if (props.currentTime) {\n          viewer.clock.currentTime = makeJulianDate(props.currentTime)\n        }\n\n        viewer.clock.multiplier = props.multiplier\n        viewer.clock.clockStep = props.clockStep\n        viewer.clock.clockRange = props.clockRange\n        viewer.clock.canAnimate = false\n        viewer.clock.shouldAnimate = props.shouldAnimate\n\n        viewer.clock.onTick.addEventListener(onClockTick)\n        const listener = getInstanceListener(instance, 'onStop')\n        listener && viewer.clock.onStop.addEventListener(listener)\n        return true\n      })\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const datasource = instance.cesiumObject as Cesium.CustomDataSource\n      viewer.dataSources.remove(datasource, true)\n\n      viewer.clock.startTime = restoreClockOpts.value.startTime\n      viewer.clock.stopTime = restoreClockOpts.value.stopTime\n      viewer.clock.multiplier = restoreClockOpts.value.multiplier\n      viewer.clock.clockStep = restoreClockOpts.value.clockStep\n      viewer.clock.clockRange = restoreClockOpts.value.clockRange\n      viewer.clock.canAnimate = restoreClockOpts.value.canAnimate\n      viewer.clock.shouldAnimate = restoreClockOpts.value.shouldAnimate\n      overlays.value.length = 0\n      viewer.clock.onTick.removeEventListener(onClockTick)\n      const listener = getInstanceListener(instance, 'onStop')\n      listener && viewer.clock.onStop.removeEventListener(listener)\n      return true\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    // expose public methods\n    Object.assign(instance.proxy, { overlays })\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcOverlayDynamicProps = ExtractPropTypes<typeof dynamicOverlayProps>\nexport type VcOverlayDynamicEmits = typeof emits\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-01-19 23:41:32\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\index.ts\n */\nimport { App } from 'vue'\nimport OverlayHtml from './html'\nimport OverlayHeatmap from './heatmap'\nimport OverlayEcharts from './echarts'\nimport OverlayWind from './wind'\nimport OverlayDynamic from './dynamic'\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\n\nconst components = [OverlayHtml, OverlayHeatmap, OverlayEcharts, OverlayWind, OverlayDynamic]\n\nconst install = (app: App): void => {\n  components.forEach(cmp => {\n    app.component(cmp.name, cmp)\n  })\n}\n\nexport default {\n  install\n}\n\ncomponents.forEach(cmp => {\n  cmp['install'] = (app: App): void => {\n    app.component(cmp.name, cmp)\n  }\n})\n\nexport const VcOverlayHtml = OverlayHtml as SFCWithInstall<typeof OverlayHtml>\nexport const VcOverlayHeatmap = OverlayHeatmap as SFCWithInstall<typeof OverlayHeatmap>\nexport const VcOverlayEcharts = OverlayEcharts as SFCWithInstall<typeof OverlayEcharts>\nexport const VcOverlayWind = OverlayWind as SFCWithInstall<typeof OverlayWind>\nexport const VcOverlayDynamic = OverlayDynamic as SFCWithInstall<typeof OverlayDynamic>\n\nexport * from './dynamic'\nexport * from './echarts'\nexport * from './heatmap'\nexport * from './html'\nexport * from './wind'\n","import type { ExtractPropTypes, PropType, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { usePrimitiveCollections } from '@vue-cesium/composables'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { scene, blendOption, show, enableMouseEvent } from '@vue-cesium/utils/cesium-props'\nimport { addCustomProperty, kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport { VcBillboardProps } from '../billboard'\n\nexport const billboardCollectionProps = {\n  ...scene,\n  ...blendOption,\n  ...show,\n  ...enableMouseEvent,\n  billboards: {\n    type: Array as PropType<Array<VcBillboardProps>>,\n    default: () => []\n  }\n}\nexport default defineComponent({\n  name: 'VcCollectionBillboard',\n  props: billboardCollectionProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'BillboardCollection'\n    const primitiveCollectionsState = usePrimitiveCollections(props, ctx, instance)\n\n    // watcher\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => cloneDeep(props.billboards),\n        (newVal, oldVal) => {\n          if (!instance.mounted) {\n            return\n          }\n          const billboardCollection = instance.cesiumObject as Cesium.BillboardCollection\n          if (newVal.length === oldVal.length) {\n            // 视为修改操作\n            // Treated as modified\n            const modifies: Array<any> = []\n            for (let i = 0; i < newVal.length; i++) {\n              const options = newVal[i]\n              const oldOptions = oldVal[i]\n\n              if (JSON.stringify(options) !== JSON.stringify(oldOptions)) {\n                modifies.push({\n                  newOptions: options,\n                  oldOptions: oldOptions\n                })\n              }\n            }\n\n            modifies.forEach(modify => {\n              const modifyBillboard = billboardCollection._billboards.find(v => v.id === modify.oldOptions.id)\n              modifyBillboard &&\n                Object.keys(modify.newOptions).forEach(prop => {\n                  if (modify.oldOptions[prop] !== modify.newOptions[prop]) {\n                    modifyBillboard[prop] = primitiveCollectionsState?.transformProp(prop, modify.newOptions[prop])\n                  }\n                })\n            })\n          } else {\n            const addeds: any = differenceBy(newVal, oldVal, 'id')\n            const deletes: any = differenceBy(oldVal, newVal, 'id')\n            const deleteBillboards: Array<Cesium.Billboard> = []\n            for (let i = 0; i < deletes.length; i++) {\n              const deleteBillboard = billboardCollection._billboards.find(v => v.id === deletes[i].id)\n              deleteBillboard && deleteBillboards.push(deleteBillboard)\n            }\n\n            deleteBillboards.forEach(v => {\n              billboardCollection.remove(v)\n            })\n            addBillboards(billboardCollection, addeds)\n          }\n        },\n        {\n          deep: true\n        }\n      )\n    )\n    instance.alreadyListening.push('billboards')\n    // methods\n    const addBillboards = (billboardCollection: Cesium.BillboardCollection, billboards) => {\n      for (let i = 0; i < billboards.length; i++) {\n        const billboardOptions = billboards[i] as Cesium.Billboard\n        billboardOptions.id = Cesium.defined(billboardOptions.id) ? billboardOptions.id : Cesium.createGuid()\n        const billboardOptionsTransform = primitiveCollectionsState?.transformProps(billboardOptions)\n        const billboard = billboardCollection.add(billboardOptionsTransform)\n        addCustomProperty(billboard, billboardOptionsTransform)\n      }\n    }\n    instance.createCesiumObject = async () => {\n      const options = primitiveCollectionsState?.transformProps(props)\n      const billboardCollection = new Cesium.BillboardCollection(options)\n      addBillboards(billboardCollection, props.billboards)\n      return billboardCollection\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(instance.proxy?.$options.name || ''),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcCollectionBillboardProps = ExtractPropTypes<typeof billboardCollectionProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-25 11:10:21\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\billboard\\index.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type {\n  VcPickEvent,\n  VcCartesian2,\n  VcColor,\n  VcComponentInternalInstance,\n  VcDistanceDisplayCondition,\n  VcNearFarScalar,\n  VcPosition,\n  VcReadyObject\n} from '@vue-cesium/utils/types'\nimport { usePrimitiveCollectionItems } from '@vue-cesium/composables'\nimport {\n  alignedAxis,\n  color,\n  disableDepthTestDistance,\n  distanceDisplayCondition,\n  eyeOffset,\n  height,\n  heightReference,\n  horizontalOrigin,\n  id,\n  image,\n  pixelOffset,\n  pixelOffsetScaleByDistance,\n  position,\n  rotation,\n  scale,\n  scaleByDistance,\n  show,\n  sizeInMeters,\n  translucencyByDistance,\n  verticalOrigin,\n  width,\n  enableMouseEvent\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { primitiveCollectionEmits } from '@vue-cesium/utils/emits'\n\nexport const billboardProps = {\n  ...alignedAxis,\n  ...color,\n  ...disableDepthTestDistance,\n  ...distanceDisplayCondition,\n  ...eyeOffset,\n  ...height,\n  ...heightReference,\n  ...horizontalOrigin,\n  ...id,\n  ...image,\n  ...pixelOffset,\n  ...pixelOffsetScaleByDistance,\n  ...position,\n  ...rotation,\n  ...scale,\n  ...scaleByDistance,\n  ...show,\n  ...sizeInMeters,\n  ...translucencyByDistance,\n  ...verticalOrigin,\n  ...width,\n  ...enableMouseEvent\n}\nexport default defineComponent({\n  name: 'VcBillboard',\n  props: billboardProps,\n  emits: primitiveCollectionEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'Billboard'\n    usePrimitiveCollectionItems(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\n// export type VcBillboardProps = ExtractPropTypes<typeof billboardProps>\nexport type VcBillboardProps = {\n  /**\n   * Specify the aligned axis in world space. The aligned axis is the unit vector that the billboard up vector points towards. The default is the zero vector, which means the billboard is aligned to the screen up vector.\n   */\n  alignedAxis?: VcPosition\n  /**\n   * Specify the color that is multiplied with the billboard's texture. This has two common use cases. First, the same white texture may be used by many different billboards, each with a different color, to create colored billboards. Second, the color's alpha component can be used to make the billboard translucent as shown below. An alpha of 0.0 makes the billboard transparent, and 1.0 makes the billboard opaque.\n   * Default value: white\n   */\n  color?: VcColor\n  /**\n   * Specify the distance from the camera at which to disable the depth test to, for example, prevent clipping against terrain. When set to zero, the depth test is always applied. When set to Number.POSITIVE_INFINITY, the depth test is never applied.\n   */\n  disableDepthTestDistance?: number\n  /**\n   * Specify the condition specifying at what distance from the camera that this billboard will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * Specify the 3D offset applied to this billboard in eye coordinates. Eye coordinates is a left-handed coordinate system, where x points towards the viewer's right, y points up, and z points into the screen. Eye coordinates use the same scale as world and model coordinates, which is typically meters.\n   */\n  eyeOffset?: VcPosition\n  /**\n   * Specify a height for the billboard. If undefined, the image height will be used.\n   */\n  height?: number\n  /**\n   * Specify the height reference of this billboard.\n   */\n  heightReference?: number\n  /**\n   * Specify the horizontal origin of this billboard, which determines if the billboard is to the left, center, or right of its anchor position.\n   * Default value: 0\n   */\n  horizontalOrigin?: number\n  /**\n   * Specify the user-defined object returned when the billboard is picked.\n   */\n  id?: any\n  /**\n   * Specify the image to be used for this billboard. If a texture has already been created for the given image, the existing texture is used.\n   */\n  image?: string\n  /**\n   * Specify the pixel offset in screen space from the origin of this billboard. This is commonly used to align multiple billboards and labels at the same position, e.g., an image and text. The screen space origin is the top, left corner of the canvas; x increases from left to right, and y increases from top to bottom.\n   * Default value: { x:0, y: 0 }\n   */\n  pixelOffset?: VcCartesian2\n  /**\n   * Specify near and far pixel offset scaling properties of a Billboard based on the billboard's distance from the camera. A billboard's pixel offset will be scaled between the NearFarScalar#nearValue and NearFarScalar#farValue while the camera distance falls within the lower and upper bounds of the specified NearFarScalar#near and NearFarScalar#far. Outside of these ranges the billboard's pixel offset scale remains clamped to the nearest bound. If undefined, pixelOffsetScaleByDistance will be disabled.\n   */\n  pixelOffsetScaleByDistance?: VcNearFarScalar\n  /**\n   * Specify the position of this billboard.\n   */\n  position?: VcPosition\n  /**\n   * Specify the rotation angle in radians.\n   */\n  rotation?: number\n  /**\n   * Specify the uniform scale that is multiplied with the billboard's image size in pixels. A scale of 1.0 does not change the size of the billboard; a scale greater than 1.0 enlarges the billboard; a positive scale less than 1.0 shrinks the billboard.\n   */\n  scale?: number\n  /**\n   * Specify near and far scaling properties of a Billboard based on the billboard's distance from the camera. A billboard's scale will interpolate between the NearFarScalar#nearValue and NearFarScalar#farValue while the camera distance falls within the lower and upper bounds of the specified NearFarScalar#near and NearFarScalar#far. Outside of these ranges the billboard's scale remains clamped to the nearest bound. If undefined, scaleByDistance will be disabled.\n   */\n  scaleByDistance?: VcNearFarScalar\n  /**\n   * Determines if this billboard will be shown. Use this to hide or show a billboard, instead of removing it and re-adding it to the collection.\n   */\n  show?: boolean\n  /**\n   *  Determines if the billboard size is in meters or pixels. true to size the billboard in meters; otherwise, the size is in pixels.\n   */\n  sizeInMeters?: boolean\n  /**\n   * Specify near and far translucency properties of a Billboard based on the billboard's distance from the camera. A billboard's translucency will interpolate between the NearFarScalar#nearValue and NearFarScalar#farValue while the camera distance falls within the lower and upper bounds of the specified NearFarScalar#near and NearFarScalar#far. Outside of these ranges the billboard's translucency remains clamped to the nearest bound. If undefined, translucencyByDistance will be disabled.\n   */\n  translucencyByDistance?: VcNearFarScalar\n  /**\n   * Specify the vertical origin of this billboard, which determines if the billboard is to the above, below, or at the center of its anchor position.\n   */\n  verticalOrigin?: number\n  /**\n   * Specify a width for the billboard. If undefined, the image width will be used.\n   */\n  width?: number\n  /**\n   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Triggers before the VcPoint is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcPoint is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcPoint is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this billboard.\n   */\n  mousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this billboard.\n   */\n  mouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this billboard.\n   */\n  click?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this billboard.\n   */\n  clickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this billboard.\n   */\n  dblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this billboard.\n   */\n  mousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this billboard.\n   */\n  mouseover?: (evt: VcPickEvent) => void\n  /**\n   * \tTriggers when the mouse moves out of this billboard.\n   */\n  mouseout?: (evt: VcPickEvent) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-28 11:13:56\n * @LastEditTime: 2022-01-29 10:15:27\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\cloud\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcPickEvent, VcCartesian2, VcColor, VcComponentInternalInstance, VcPosition, VcReadyObject } from '@vue-cesium/utils/types'\nimport { usePrimitiveCollectionItems } from '@vue-cesium/composables'\nimport { color, position, show, enableMouseEvent } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { primitiveCollectionEmits } from '@vue-cesium/utils/emits'\nimport { makeCartesian2, makeCartesian3 } from '@vue-cesium/utils/cesium-helpers'\n\nexport const cumulusCloudProps = {\n  brightness: {\n    type: Number,\n    default: 1.0\n  },\n  ...color,\n  maximumSize: {\n    type: Object as PropType<VcPosition>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian3\n    }\n  },\n  ...position,\n  scale: {\n    type: Object as PropType<VcCartesian2>,\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian2\n    }\n  },\n  ...show,\n  slice: {\n    type: Number,\n    default: -1.0\n  }\n  // ...enableMouseEvent\n}\nexport default defineComponent({\n  name: 'VcCumulusCloud',\n  props: cumulusCloudProps,\n  emits: primitiveCollectionEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CumulusCloud'\n    usePrimitiveCollectionItems(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\n// export type VcCumulusCloudProps = ExtractPropTypes<typeof cumulusCloudProps>\nexport type VcCumulusCloudProps = {\n  /**\n   * Specify the brightness of the cloud. This can be used to give clouds a darker, grayer appearance.\n   */\n  brightness?: number\n  /**\n   * Specify the color of the cloud.\n   * Default Value: white\n   */\n  color?: VcColor\n  /**\n   * Specify the maximum size of the cumulus cloud rendered on the billboard. This defines a maximum ellipsoid volume that the cloud can appear in. Rather than guaranteeing a specific size, this specifies a boundary for the cloud to appear in, and changing it can affect the shape of the cloud.\n   */\n  maximumSize?: VcPosition\n  /**\n   * Specify the Cartesian position of this cumulus cloud.\n   */\n  position?: VcPosition\n  /**\n   * Specify the scale of the cumulus cloud billboard in meters. The scale property will affect the size of the billboard, but not the cloud's actual appearance.\n   */\n  scale?: VcCartesian2\n  /**\n   * Determines if this cumulus cloud will be shown. Use this to hide or show a cloud, instead of removing it and re-adding it to the collection.\n   * Default Value: true\n   */\n  show?: boolean\n  /**\n   * If slice is set to a negative number, the cloud will not render a cross-section. Instead, it will render the outside of the ellipsoid that is visible. For clouds with small values of `maximumSize.z`, this can produce good-looking results, but for larger clouds, this can result in a cloud that is undesirably warped to the ellipsoid volume.\n   * Default Value: -1.0\n   */\n  slice?: number\n  // /**\n  //  * Specify whether to respond to mouse pick events.\n  //  * Default Value: true\n  //  */\n  // enableMouseEvent?: boolean\n  /**\n   * Triggers before the VcCumulusCloud is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCumulusCloud is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcCumulusCloud is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  // /**\n  //  * Triggers when the mouse is pressed on this cumulusCloud.\n  //  */\n  // mousedown?: (evt: VcPickEvent) => void\n  // /**\n  //  * Triggers when the mouse bounces up on this cumulusCloud.\n  //  */\n  // mouseup?: (evt: VcPickEvent) => void\n  // /**\n  //  * Triggers when the mouse clicks on this cumulusCloud.\n  //  */\n  // click?: (evt: VcPickEvent) => void\n  // /**\n  //  * Triggers when the mouse clicks outside this cumulusCloud.\n  //  */\n  // clickout?: (evt: VcPickEvent) => void\n  // /**\n  //  * Triggers when the left mouse button double-clicks this cumulusCloud.\n  //  */\n  // dblclick?: (evt: VcPickEvent) => void\n  // /**\n  //  * Triggers when the mouse moves on this cumulusCloud.\n  //  */\n  // mousemove?: (evt: VcPickEvent) => void\n  // /**\n  //  * Triggers when the mouse moves over to this cumulusCloud.\n  //  */\n  // mouseover?: (evt: VcPickEvent) => void\n  // /**\n  //  * \tTriggers when the mouse moves out of this cumulusCloud.\n  //  */\n  // mouseout?: (evt: VcPickEvent) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-28 10:49:53\n * @LastEditTime: 2022-01-29 10:15:23\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\cloud-collection\\index.ts\n */\nimport type { ExtractPropTypes, PropType, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport type { VcComponentInternalInstance, VcPosition } from '@vue-cesium/utils/types'\nimport { usePrimitiveCollections } from '@vue-cesium/composables'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { show, enableMouseEvent } from '@vue-cesium/utils/cesium-props'\nimport { addCustomProperty, kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { primitiveCollectionEmits } from '@vue-cesium/utils/emits'\nimport type { VcCumulusCloudProps } from '../cloud'\nimport VcCumulusCloud from '../cloud'\n\nexport const cloudCollectionProps = {\n  ...show,\n  // ...enableMouseEvent,\n  noiseDetail: {\n    type: Number,\n    default: 16.0\n  },\n  noiseOffset: {\n    type: Object as PropType<VcPosition>\n  },\n  debugBillboards: {\n    type: Boolean,\n    default: false\n  },\n  debugEllipsoids: {\n    type: Boolean,\n    default: false\n  },\n  clouds: {\n    type: Array as PropType<Array<VcCumulusCloudProps>>,\n    default: () => []\n  }\n}\nexport default defineComponent({\n  name: 'VcCollectionCloud',\n  props: cloudCollectionProps,\n  emits: primitiveCollectionEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CloudCollection'\n    const primitiveCollectionsState = usePrimitiveCollections(props, ctx, instance)\n\n    if (primitiveCollectionsState === void 0) {\n      return\n    }\n\n    // watcher\n    instance.alreadyListening.push('clouds')\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => cloneDeep(props.clouds),\n        (newVal, oldVal) => {\n          if (!instance.mounted) {\n            return\n          }\n\n          const cloudCollection = instance.cesiumObject as Cesium.CloudCollection\n\n          if (newVal.length === oldVal.length) {\n            // 视为修改操作\n            // Treated as modified\n            const modifies: Array<any> = []\n            for (let i = 0; i < newVal.length; i++) {\n              const options = newVal[i]\n              const oldOptions = oldVal[i]\n\n              if (JSON.stringify(options) !== JSON.stringify(oldOptions)) {\n                modifies.push({\n                  newOptions: options,\n                  oldOptions: oldOptions\n                })\n              }\n            }\n\n            modifies.forEach(modify => {\n              const modifyCloud = cloudCollection._clouds.find(v => v.id === modify.oldOptions.id)\n              modifyCloud &&\n                Object.keys(modify.newOptions).forEach(prop => {\n                  if (modify.oldOptions[prop] !== modify.newOptions[prop]) {\n                    modifyCloud[prop] = primitiveCollectionsState.transformProp(prop, modify.newOptions[prop])\n                  }\n                })\n            })\n          } else {\n            const addeds: any = differenceBy(newVal, oldVal, 'id')\n            const deletes: any = differenceBy(oldVal, newVal, 'id')\n            const deleteClouds: Array<Cesium.CumulusCloud> = []\n            for (let i = 0; i < deletes.length; i++) {\n              const deleteCloud = cloudCollection._clouds.find(v => v.id === deletes[i].id)\n              deleteCloud && deleteClouds.push(deleteCloud)\n            }\n\n            deleteClouds.forEach(v => {\n              cloudCollection.remove(v)\n            })\n\n            addClouds(cloudCollection, addeds)\n          }\n        },\n        {\n          deep: true\n        }\n      )\n    )\n    // methods\n    const addClouds = (cloudCollection: Cesium.CloudCollection, clouds) => {\n      for (let i = 0; i < clouds.length; i++) {\n        const cloudOptions = clouds[i] as Cesium.CumulusCloud\n        cloudOptions.id = Cesium.defined(cloudOptions.id) ? cloudOptions.id : Cesium.createGuid()\n        const cloudOptionsTransform = primitiveCollectionsState.transformProps(cloudOptions, VcCumulusCloud.props)\n        const cloud = cloudCollection.add(cloudOptionsTransform)\n        addCustomProperty(cloud, cloudOptionsTransform)\n      }\n    }\n\n    instance.createCesiumObject = async () => {\n      const options = primitiveCollectionsState.transformProps(props, VcCumulusCloud.props)\n      const cloudCollection = new Cesium.CloudCollection(options as any)\n      addClouds(cloudCollection, props.clouds)\n      return cloudCollection\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    const name = instance.proxy?.$options.name || ''\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(name),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(name))\n  }\n})\n\nexport type VcCollectionCloudProps = ExtractPropTypes<typeof cloudCollectionProps>\n","import type { ExtractPropTypes, PropType, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { usePrimitiveCollections } from '@vue-cesium/composables'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { modelMatrix, debugShowBoundingVolume, scene, blendOption, show, enableMouseEvent } from '@vue-cesium/utils/cesium-props'\nimport { addCustomProperty, kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { primitiveCollectionEmits } from '@vue-cesium/utils/emits'\nimport { VcLabelProps } from '../label'\n\nexport const labelCollectionProps = {\n  ...modelMatrix,\n  ...debugShowBoundingVolume,\n  ...scene,\n  ...blendOption,\n  ...show,\n  ...enableMouseEvent,\n  labels: {\n    type: Array as PropType<Array<VcLabelProps>>,\n    default: () => []\n  }\n}\nexport default defineComponent({\n  name: 'VcCollectionLabel',\n  props: labelCollectionProps,\n  emits: primitiveCollectionEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'LabelCollection'\n    const primitiveCollectionsState = usePrimitiveCollections(props, ctx, instance)\n\n    if (primitiveCollectionsState === void 0) {\n      return\n    }\n\n    // watcher\n    instance.alreadyListening.push('labels')\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => cloneDeep(props.labels),\n        (newVal, oldVal) => {\n          if (!instance.mounted) {\n            return\n          }\n          const labelCollection = instance.cesiumObject as Cesium.LabelCollection\n\n          if (newVal.length === oldVal.length) {\n            // 视为修改操作\n            // Treated as modified\n            const modifies: Array<any> = []\n            for (let i = 0; i < newVal.length; i++) {\n              const options = newVal[i]\n              const oldOptions = oldVal[i]\n\n              if (JSON.stringify(options) !== JSON.stringify(oldOptions)) {\n                modifies.push({\n                  newOptions: options,\n                  oldOptions: oldOptions\n                })\n              }\n            }\n\n            modifies.forEach(modify => {\n              const modifyLabel = labelCollection._labels.find(v => v.id === modify.oldOptions.id)\n              modifyLabel &&\n                Object.keys(modify.newOptions).forEach(prop => {\n                  if (modify.oldOptions[prop] !== modify.newOptions[prop]) {\n                    modifyLabel[prop] = primitiveCollectionsState.transformProp(prop, modify.newOptions[prop])\n                  }\n                })\n            })\n          } else {\n            const addeds: any = differenceBy(newVal, oldVal, 'id')\n            const deletes: any = differenceBy(oldVal, newVal, 'id')\n            const deleteLabels: Array<Cesium.Label> = []\n            for (let i = 0; i < deletes.length; i++) {\n              const deleteLabel = labelCollection._labels.find(v => v.id === deletes[i].id)\n              deleteLabel && deleteLabels.push(deleteLabel)\n            }\n\n            deleteLabels.forEach(v => {\n              labelCollection.remove(v)\n            })\n\n            addLabels(labelCollection, addeds)\n          }\n        },\n        {\n          deep: true\n        }\n      )\n    )\n    // methods\n    const addLabels = (labelCollection: Cesium.LabelCollection, labels) => {\n      for (let i = 0; i < labels.length; i++) {\n        const labelOptions = labels[i] as Cesium.Label\n        labelOptions.id = Cesium.defined(labelOptions.id) ? labelOptions.id : Cesium.createGuid()\n        const labelOptionsTransform = primitiveCollectionsState.transformProps(labelOptions)\n        const label = labelCollection.add(labelOptionsTransform)\n        addCustomProperty(label, labelOptionsTransform)\n      }\n    }\n\n    instance.createCesiumObject = async () => {\n      const options = primitiveCollectionsState.transformProps(props)\n      const labelCollection = new Cesium.LabelCollection(options)\n      addLabels(labelCollection, props.labels)\n      return labelCollection\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    const name = instance.proxy?.$options.name || ''\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(name),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(name))\n  }\n})\n\nexport type VcCollectionLabelProps = ExtractPropTypes<typeof labelCollectionProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-25 11:11:45\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\label\\index.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport {\n  VcPickEvent,\n  VcCartesian2,\n  VcColor,\n  VcComponentInternalInstance,\n  VcDistanceDisplayCondition,\n  VcNearFarScalar,\n  VcPosition,\n  VcReadyObject\n} from '@vue-cesium/utils/types'\nimport { usePrimitiveCollectionItems } from '@vue-cesium/composables'\nimport {\n  backgroundColor,\n  backgroundPadding,\n  disableDepthTestDistance,\n  distanceDisplayCondition,\n  eyeOffset,\n  fillColor,\n  font,\n  heightReference,\n  horizontalOrigin,\n  id,\n  outlineColor,\n  outlineWidth,\n  pixelOffset,\n  pixelOffsetScaleByDistance,\n  position,\n  scale,\n  scaleByDistance,\n  show,\n  showBackground,\n  labelStyle,\n  text,\n  translucencyByDistance,\n  verticalOrigin,\n  enableMouseEvent\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { primitiveCollectionEmits } from '@vue-cesium/utils/emits'\n\nexport const labelProps = {\n  ...backgroundColor,\n  ...backgroundPadding,\n  ...disableDepthTestDistance,\n  ...distanceDisplayCondition,\n  ...eyeOffset,\n  ...fillColor,\n  ...font,\n  ...heightReference,\n  ...horizontalOrigin,\n  ...id,\n  ...outlineColor,\n  ...outlineWidth,\n  ...pixelOffset,\n  ...pixelOffsetScaleByDistance,\n  ...position,\n  ...scale,\n  ...scaleByDistance,\n  ...show,\n  ...showBackground,\n  ...labelStyle,\n  ...text,\n  totalScale: {\n    type: Number,\n    default: 1.0\n  },\n  ...translucencyByDistance,\n  ...verticalOrigin,\n  ...enableMouseEvent\n}\nexport default defineComponent({\n  name: 'VcLabel',\n  props: labelProps,\n  emits: primitiveCollectionEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'Label'\n    usePrimitiveCollectionItems(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\n// export type VcLabelProps = ExtractPropTypes<typeof labelProps>\nexport type VcLabelProps = {\n  /**\n   * Specify the background color of this label.\n   * Default value: { x: 0.165, y: 0.165, z: 0.165, w: 0.8 }\n   */\n  backgroundColor?: VcColor\n  /**\n   * Specify the background padding, in pixels, of this label. The x value controls horizontal padding, and the y value controls vertical padding.\n   * Default value: { x: 7, y: 5 }\n   */\n  backgroundPadding?: VcCartesian2\n  /**\n   * Specify the distance from the camera at which to disable the depth test to, for example, prevent clipping against terrain. When set to zero, the depth test is always applied. When set to Number.POSITIVE_INFINITY, the depth test is never applied.\n   */\n  disableDepthTestDistance?: number\n  /**\n   * Specify the condition specifying at what distance from the camera that this label will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * Specify the 3D VcPosition offset applied to this label in eye coordinates. Eye coordinates is a left-handed coordinate system, where x points towards the viewer's right, y points up, and z points into the screen. Eye coordinates use the same scale as world and model coordinates, which is typically meters.\n   * Default value: { x: 0, y: 0, z: 0 }\n   */\n  eyeOffset?: VcPosition\n  /**\n   * Specify the fill color of this label.\n   * Default value: white\n   */\n  fillColor?: VcColor\n  /**\n   * Specify the font used to draw this label. Fonts are specified using the same syntax as the CSS 'font' property.\n   * Default value: 30px sans-serif\n   */\n  font?: string\n  /**\n   * Specify the height reference of this label.\n   */\n  heightReference?: number\n  /**\n   * Specify the horizontal origin of this label, which determines if the label is drawn to the left, center, or right of its anchor position.\n   */\n  horizontalOrigin?: number\n  /**\n   * Specify the user-defined value returned when the label is picked.\n   */\n  id?: any\n  /**\n   * Specify the outline color of this label.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * Specify the outline width of this label.\n   * Default value: 1.0\n   */\n  outlineWidth?: number\n  /**\n   * Specify the pixel offset in screen space from the origin of this label. This is commonly used to align multiple labels and billboards at the same position, e.g., an image and text. The screen space origin is the top, left corner of the canvas; x increases from left to right, and y increases from top to bottom.\n   */\n  pixelOffset?: VcCartesian2\n  /**\n   * Specify near and far pixel offset scaling properties of a Label based on the Label's distance from the camera. A label's pixel offset will be scaled between the NearFarScalar#nearValue and NearFarScalar#farValue while the camera distance falls within the lower and upper bounds of the specified NearFarScalar#near and NearFarScalar#far. Outside of these ranges the label's pixel offset scaling remains clamped to the nearest bound. If undefined, pixelOffsetScaleByDistance will be disabled.\n   */\n  pixelOffsetScaleByDistance?: VcNearFarScalar\n  /**\n   * Specify the VcPosition of this label.\n   */\n  position?: VcPosition\n  /**\n   * Specify the uniform scale that is multiplied with the label's size in pixels. A scale of 1.0 does not change the size of the label; a scale greater than 1.0 enlarges the label; a positive scale less than 1.0 shrinks the label.\n   */\n  scale?: number\n  /**\n   * Specify near and far scaling properties of a Label based on the label's distance from the camera. A label's scale will interpolate between the NearFarScalar#nearValue and NearFarScalar#farValue while the camera distance falls within the lower and upper bounds of the specified NearFarScalar#near and NearFarScalar#far. Outside of these ranges the label's scale remains clamped to the nearest bound. If undefined, scaleByDistance will be disabled.\n   */\n  scaleByDistance?: VcNearFarScalar\n  /**\n   * Determines if this label will be shown. Use this to hide or show a label, instead of removing it and re-adding it to the collection.\n   */\n  show?: boolean\n  /**\n   * Determines if a background behind this label will be shown.\n   * Default value: false\n   */\n  showBackground?: boolean\n  /**\n   * Specify the style of this label.\n   */\n  labelStyle?: number\n  /**\n   * Specify the text of this label.\n   */\n  text?: string\n  /**\n   * Specify near and far translucency properties of a Label based on the Label's distance from the camera. A label's translucency will interpolate between the NearFarScalar#nearValue and NearFarScalar#farValue while the camera distance falls within the lower and upper bounds of the specified NearFarScalar#near and NearFarScalar#far. Outside of these ranges the label's translucency remains clamped to the nearest bound. If undefined, translucencyByDistance will be disabled.\n   */\n  translucencyByDistance?: VcNearFarScalar\n  /**\n   * Specify the vertical origin of this label, which determines if the label is to the above, below, or at the center of its anchor position.\n   */\n  verticalOrigin?: number\n  /**\n   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Triggers before the label is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the label is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the label is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this label.\n   */\n  mousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this label.\n   */\n  mouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this label.\n   */\n  click?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this label.\n   */\n  clickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this label.\n   */\n  dblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this label.\n   */\n  mousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this label.\n   */\n  mouseover?: (evt: VcPickEvent) => void\n  /**\n   * \tTriggers when the mouse moves out of this label.\n   */\n  mouseout?: (evt: VcPickEvent) => void\n}\n","import type { ExtractPropTypes, PropType, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { usePrimitiveCollections } from '@vue-cesium/composables'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { modelMatrix, debugShowBoundingVolume, blendOption, show, enableMouseEvent } from '@vue-cesium/utils/cesium-props'\nimport { addCustomProperty, kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { primitiveCollectionEmits } from '@vue-cesium/utils/emits'\nimport { VcPointProps } from '../point'\n\nexport const pointCollectionProps = {\n  ...modelMatrix,\n  ...debugShowBoundingVolume,\n  ...blendOption,\n  ...show,\n  ...enableMouseEvent,\n  points: {\n    type: Array as PropType<Array<VcPointProps>>,\n    default: () => []\n  }\n}\nexport default defineComponent({\n  name: 'VcCollectionPoint',\n  props: pointCollectionProps,\n  emits: primitiveCollectionEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PointPrimitiveCollection'\n    const primitiveCollectionsState = usePrimitiveCollections(props, ctx, instance)\n    if (primitiveCollectionsState === void 0) {\n      return\n    }\n    // watcher\n    instance.alreadyListening.push('points')\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => cloneDeep(props.points),\n        (newVal, oldVal) => {\n          if (!instance.mounted) {\n            return\n          }\n          const pointCollection = instance.cesiumObject as Cesium.PointPrimitiveCollection\n          if (newVal.length === oldVal.length) {\n            // 视为修改操作\n            // Treated as modified\n            const modifies: Array<{\n              newOptions: any\n              oldOptions: any\n            }> = []\n            for (let i = 0; i < newVal.length; i++) {\n              const options = newVal[i]\n              const oldOptions = oldVal[i]\n\n              if (JSON.stringify(options) !== JSON.stringify(oldOptions)) {\n                modifies.push({\n                  newOptions: options,\n                  oldOptions: oldOptions\n                })\n              }\n            }\n\n            modifies.forEach(modify => {\n              const modifyPoint = pointCollection._pointPrimitives.find(v => v && v.id === modify.oldOptions.id)\n              modifyPoint &&\n                Object.keys(modify.newOptions).forEach(prop => {\n                  if (modify.oldOptions[prop] !== modify.newOptions[prop]) {\n                    modifyPoint[prop] = primitiveCollectionsState.transformProp(prop, modify.newOptions[prop])\n                  }\n                })\n            })\n          } else {\n            const addeds: any = differenceBy(newVal, oldVal, 'id')\n            const deletes: any = differenceBy(oldVal, newVal, 'id')\n            const deletePoints: Array<Cesium.PointPrimitive> = []\n            for (let i = 0; i < deletes.length; i++) {\n              const deletePoint = pointCollection._pointPrimitives.find(v => v.id === deletes[i].id)\n              deletePoint && deletePoints.push(deletePoint)\n            }\n\n            deletePoints.forEach(v => {\n              pointCollection.remove(v)\n            })\n\n            addPoints(pointCollection, addeds)\n          }\n        },\n        {\n          deep: true\n        }\n      )\n    )\n    // methods\n    const addPoints = (pointCollection: Cesium.PointPrimitiveCollection, points) => {\n      for (let i = 0; i < points.length; i++) {\n        const pointOptions = points[i] as Cesium.PointPrimitive\n        pointOptions.id = Cesium.defined(pointOptions.id) ? pointOptions.id : Cesium.createGuid()\n        const pointOptionsTransform = primitiveCollectionsState.transformProps(pointOptions)\n        const point = pointCollection.add(pointOptionsTransform)\n\n        addCustomProperty(point, pointOptionsTransform)\n      }\n    }\n\n    instance.createCesiumObject = async () => {\n      const options = primitiveCollectionsState.transformProps(props)\n      const pointCollection = new Cesium.PointPrimitiveCollection(options)\n      addPoints(pointCollection, props.points)\n      return pointCollection\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(instance.proxy?.$options.name || ''),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcCollectionPointProps = ExtractPropTypes<typeof pointCollectionProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-25 11:12:39\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\point\\index.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type {\n  VcPickEvent,\n  VcColor,\n  VcComponentInternalInstance,\n  VcDistanceDisplayCondition,\n  VcNearFarScalar,\n  VcPosition,\n  VcReadyObject\n} from '@vue-cesium/utils/types'\nimport { usePrimitiveCollectionItems } from '@vue-cesium/composables'\nimport {\n  color,\n  disableDepthTestDistance,\n  distanceDisplayCondition,\n  id,\n  outlineColor,\n  outlineWidth,\n  pixelSize,\n  position,\n  scaleByDistance,\n  show,\n  translucencyByDistance,\n  enableMouseEvent\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { primitiveCollectionEmits } from '@vue-cesium/utils/emits'\n\nexport const pointProps = {\n  ...color,\n  ...disableDepthTestDistance,\n  ...distanceDisplayCondition,\n  ...id,\n  ...outlineColor,\n  ...outlineWidth,\n  ...pixelSize,\n  ...position,\n  ...scaleByDistance,\n  ...show,\n  ...translucencyByDistance,\n  ...enableMouseEvent\n}\nexport default defineComponent({\n  name: 'VcPoint',\n  props: pointProps,\n  emits: primitiveCollectionEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PointPrimitive'\n    usePrimitiveCollectionItems(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\n// export type VcPointProps = ExtractPropTypes<typeof pointProps>\nexport type VcPointProps = {\n  /**\n   * Specify the inner color of the point.\n   * Default value: white\n   */\n  color?: VcColor\n  /**\n   * Specify the distance from the camera at which to disable the depth test to, for example, prevent clipping against terrain. When set to zero, the depth test is always applied. When set to Number.POSITIVE_INFINITY, the depth test is never applied.\n   */\n  disableDepthTestDistance?: number\n  /**\n   * Specify the condition specifying at what distance from the camera that this point will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * Specify the user-defined value returned when the point is picked.\n   */\n  id?: any\n  /**\n   * Specify the outline color of the point.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * Specify the outline width in pixels. This width adds to pixelSize, increasing the total size of the point.\n   * Default value: 1.0\n   */\n  outlineWidth?: number\n  /**\n   * Specify the inner size of the point in pixels.\n   * Default value: 0.0\n   */\n  pixelSize?: number\n  /**\n   * Specify the position of this point.\n   */\n  position?: VcPosition\n  /**\n   * Specify the near and far scaling properties of a point based on the point's distance from the camera. A point's scale will interpolate between the NearFarScalar#nearValue and NearFarScalar#farValue while the camera distance falls within the lower and upper bounds of the specified NearFarScalar#near and NearFarScalar#far. Outside of these ranges the point's scale remains clamped to the nearest bound. This scale multiplies the pixelSize and outlineWidth to affect the total size of the point. If undefined, scaleByDistance will be disabled.\n   */\n  scaleByDistance?: VcNearFarScalar\n  /**\n   * Determines if this point will be shown. Use this to hide or show a point, instead of removing it and re-adding it to the collection.\n   */\n  show?: boolean\n  /**\n   * Specify the near and far translucency properties of a point based on the point's distance from the camera. A point's translucency will interpolate between the NearFarScalar#nearValue and NearFarScalar#farValue while the camera distance falls within the lower and upper bounds of the specified NearFarScalar#near and NearFarScalar#far. Outside of these ranges the point's translucency remains clamped to the nearest bound. If undefined, translucencyByDistance will be disabled.\n   */\n  translucencyByDistance?: VcNearFarScalar\n  /**\n   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Triggers before the VcPoint is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcPoint is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcPoint is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this point.\n   */\n  mousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this point.\n   */\n  mouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this point.\n   */\n  click?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this point.\n   */\n  clickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this point.\n   */\n  dblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this point.\n   */\n  mousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this point.\n   */\n  mouseover?: (evt: VcPickEvent) => void\n  /**\n   * \tTriggers when the mouse moves out of this point.\n   */\n  mouseout?: (evt: VcPickEvent) => void\n}\n","import type { ExtractPropTypes, PropType, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { usePrimitiveCollections } from '@vue-cesium/composables'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { modelMatrix, debugShowBoundingVolume, show, enableMouseEvent } from '@vue-cesium/utils/cesium-props'\nimport { addCustomProperty, kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { primitiveCollectionEmits } from '@vue-cesium/utils/emits'\nimport { VcPolylineProps } from '../polyline'\n\nconst polylineCollectionProps = {\n  ...modelMatrix,\n  ...debugShowBoundingVolume,\n  ...show,\n  ...enableMouseEvent,\n  polylines: {\n    type: Array as PropType<Array<VcPolylineProps>>,\n    default: () => []\n  }\n}\nexport default defineComponent({\n  name: 'VcCollectionPolyline',\n  props: polylineCollectionProps,\n  emits: primitiveCollectionEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PolylineCollection'\n    const primitiveCollectionsState = usePrimitiveCollections(props, ctx, instance)\n\n    if (primitiveCollectionsState === void 0) {\n      return\n    }\n    // watcher\n    instance.alreadyListening.push('polylines')\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => cloneDeep(props.polylines),\n        (newVal, oldVal) => {\n          if (!instance.mounted) {\n            return\n          }\n          const polylineCollection = instance.cesiumObject as Cesium.PolylineCollection\n\n          if (newVal.length === oldVal.length) {\n            // 视为修改操作\n            // Treated as modified\n            const modifies: Array<any> = []\n            for (let i = 0; i < newVal.length; i++) {\n              const options = newVal[i]\n              const oldOptions = oldVal[i]\n\n              if (JSON.stringify(options) !== JSON.stringify(oldOptions)) {\n                modifies.push({\n                  newOptions: options,\n                  oldOptions: oldOptions\n                })\n              }\n            }\n\n            modifies.forEach(modify => {\n              const modifyPolyline = polylineCollection._polylines.find(v => v.id === modify.oldOptions.id)\n              modifyPolyline &&\n                Object.keys(modify.newOptions).forEach(prop => {\n                  if (modify.oldOptions[prop] !== modify.newOptions[prop]) {\n                    modifyPolyline[prop] = primitiveCollectionsState.transformProp(prop, modify.newOptions[prop])\n                  }\n                })\n            })\n          } else {\n            const addeds: any = differenceBy(newVal, oldVal, 'id')\n            const deletes: any = differenceBy(oldVal, newVal, 'id')\n            const deletePolylines: Array<Cesium.Polyline> = []\n            for (let i = 0; i < deletes.length; i++) {\n              const deletePolyline = polylineCollection._polylines.find(v => v.id === deletes[i].id)\n              deletePolyline && deletePolylines.push(deletePolyline)\n            }\n\n            deletePolylines.forEach(v => {\n              polylineCollection.remove(v)\n            })\n\n            addPolylines(polylineCollection, addeds)\n          }\n        },\n        {\n          deep: true\n        }\n      )\n    )\n    // methods\n    const addPolylines = (polylineCollection: Cesium.PolylineCollection, polylines) => {\n      for (let i = 0; i < polylines.length; i++) {\n        const polylineOptions = polylines[i] as Cesium.Polyline\n        polylineOptions.id = Cesium.defined(polylineOptions.id) ? polylineOptions.id : Cesium.createGuid()\n        const polylineOptionsTransform = primitiveCollectionsState.transformProps(polylineOptions)\n        const polyline = polylineCollection.add(polylineOptionsTransform)\n        addCustomProperty(polyline, polylineOptionsTransform)\n      }\n    }\n    instance.createCesiumObject = async () => {\n      const options = primitiveCollectionsState.transformProps(props)\n      const polylineCollection = new Cesium.PolylineCollection(options)\n\n      addPolylines(polylineCollection, props.polylines)\n      return polylineCollection\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    const name = instance.proxy?.$options.name || ''\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(name),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(name))\n  }\n})\n\nexport type VcCollectionPolylineProps = ExtractPropTypes<typeof polylineCollectionProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-16 14:32:48\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\polyline\\index.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { usePrimitiveCollectionItems } from '@vue-cesium/composables'\nimport { distanceDisplayCondition, id, loop, material, positions, show, width, enableMouseEvent } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { primitiveCollectionEmits } from '@vue-cesium/utils/emits'\n\nexport const polylineProps = {\n  ...distanceDisplayCondition,\n  ...id,\n  ...loop,\n  ...material,\n  ...positions,\n  ...show,\n  ...width,\n  ...enableMouseEvent\n}\nexport default defineComponent({\n  name: 'VcPolyline',\n  props: polylineProps,\n  emits: primitiveCollectionEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'Polyline'\n    usePrimitiveCollectionItems(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcPolylineProps = ExtractPropTypes<typeof polylineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-16 14:59:16\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\primitive-collection\\index.ts\n */\nimport type { ExtractPropTypes, PropType, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { usePrimitiveCollections } from '@vue-cesium/composables'\nimport { show, enableMouseEvent } from '@vue-cesium/utils/cesium-props'\nimport { addCustomProperty, kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { PolygonPrimitive } from '@vue-cesium/shared'\nimport { primitiveCollectionEmits } from '@vue-cesium/utils/emits'\nimport { VcPolygonProps } from '../polygon'\n\nexport const primitiveCollectionProps = {\n  ...show,\n  destroyPrimitives: {\n    type: Boolean,\n    default: true\n  },\n  ...enableMouseEvent,\n  polygons: {\n    type: Array as PropType<Array<VcPolygonProps>>,\n    default: () => []\n  }\n}\nexport default defineComponent({\n  name: 'VcCollectionPrimitive',\n  props: primitiveCollectionProps,\n  emits: primitiveCollectionEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PrimitiveCollection'\n    const primitiveCollectionsState = usePrimitiveCollections(props, ctx, instance)\n\n    if (primitiveCollectionsState === void 0) {\n      return\n    }\n\n    // watcher\n    instance.alreadyListening.push('polygons')\n    let unwatchFns: Array<WatchStopHandle> = []\n\n    unwatchFns.push(\n      watch(\n        () => cloneDeep(props.polygons),\n        (newVal, oldVal) => {\n          if (!instance.mounted) {\n            return\n          }\n          const primitiveCollection = instance.cesiumObject as Cesium.PrimitiveCollection\n\n          if (newVal.length === oldVal.length) {\n            // 视为修改操作\n            // Treated as modified\n            const modifies: Array<any> = []\n            for (let i = 0; i < newVal.length; i++) {\n              const options = newVal[i]\n              const oldOptions = oldVal[i]\n\n              if (JSON.stringify(options) !== JSON.stringify(oldOptions)) {\n                modifies.push({\n                  newOptions: options,\n                  oldOptions: oldOptions\n                })\n              }\n            }\n\n            modifies.forEach(modify => {\n              const modifyPolygon = primitiveCollection._primitives.find(v => v._id === modify.oldOptions.id)\n              modifyPolygon &&\n                Object.keys(modify.newOptions).forEach(prop => {\n                  if (modify.oldOptions[prop] !== modify.newOptions[prop]) {\n                    modifyPolygon[prop] = primitiveCollectionsState.transformProp(prop, modify.newOptions[prop])\n                  }\n                })\n            })\n          } else {\n            const addeds: any = differenceBy(newVal, oldVal, 'id')\n            const deletes: any = differenceBy(oldVal, newVal, 'id')\n            const deletePolygons: Array<PolygonPrimitive> = []\n            for (let i = 0; i < deletes.length; i++) {\n              const deletePolygon = primitiveCollection._primitives.find((v: any) => v.id === deletes[i].id)\n              deletePolygon && deletePolygons.push(deletePolygon)\n            }\n\n            deletePolygons.forEach(v => {\n              primitiveCollection.remove(v)\n            })\n\n            addPolygons(primitiveCollection, addeds)\n          }\n        },\n        {\n          deep: true\n        }\n      )\n    )\n\n    // methods\n    const addPolygons = (primitiveCollection: Cesium.PrimitiveCollection, polygons) => {\n      for (let i = 0; i < polygons.length; i++) {\n        const polygonOptions = polygons[i] as PolygonPrimitive\n        polygonOptions.id = Cesium.defined(polygonOptions.id) ? polygonOptions.id : Cesium.createGuid()\n        const polygonOptionsTransform = primitiveCollectionsState.transformProps(polygonOptions)\n        const polygonPrimitive = new PolygonPrimitive(polygonOptionsTransform)\n        ;(polygonPrimitive as any)._vcParent = primitiveCollection\n        addCustomProperty(polygonPrimitive, polygonOptionsTransform)\n        primitiveCollection.add(polygonPrimitive)\n      }\n    }\n\n    instance.createCesiumObject = async () => {\n      const options = primitiveCollectionsState.transformProps(props)\n      const primitiveCollection = new Cesium.PrimitiveCollection(options)\n      addPolygons(primitiveCollection, props.polygons)\n      return primitiveCollection\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    const name = instance.proxy?.$options.name || ''\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(name),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(name))\n  }\n})\n\nexport type VcCollectionPrimitiveProps = ExtractPropTypes<typeof primitiveCollectionProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-19 22:09:27\n * @LastEditTime: 2022-01-25 11:13:43\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\polygon\\index.ts\n */\nimport type { ExtractPropTypes, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, onUnmounted, watch } from 'vue'\nimport type {\n  VcPickEvent,\n  VcAppearance,\n  VcCartesian3Array,\n  VcComponentInternalInstance,\n  VcPolygonHierarchy,\n  VcReadyObject\n} from '@vue-cesium/utils/types'\nimport { usePrimitiveCollectionItems } from '@vue-cesium/composables'\nimport {\n  id,\n  show,\n  enableMouseEvent,\n  positions,\n  classificationType,\n  polygonHierarchy,\n  clampToGround,\n  appearance,\n  depthFailAppearance,\n  ellipsoid,\n  allowPicking,\n  asynchronous\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { PolygonPrimitive } from '@vue-cesium/shared'\nimport { makeAppearance, makeCartesian3Array, makePolygonHierarchy } from '@vue-cesium/utils/cesium-helpers'\nimport { primitiveCollectionEmits } from '@vue-cesium/utils/emits'\n\nexport const polygonProps = {\n  ...positions,\n  ...polygonHierarchy,\n  ...appearance,\n  ...depthFailAppearance,\n  ...show,\n  ...id,\n  ...classificationType,\n  ...clampToGround,\n  ...ellipsoid,\n  ...allowPicking,\n  ...asynchronous,\n  ...enableMouseEvent\n}\nexport default defineComponent({\n  name: 'VcPolygon',\n  props: polygonProps,\n  emits: primitiveCollectionEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PolygonPrimitive'\n    const primitiveCollectionItemsState = usePrimitiveCollectionItems(props, ctx, instance)\n\n    if (primitiveCollectionItemsState === void 0) {\n      return\n    }\n\n    // watcch\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => props.clampToGround,\n        val => {\n          const polygonPrimitive = instance.cesiumObject as PolygonPrimitive\n          polygonPrimitive && (polygonPrimitive.clampToGround = val as boolean)\n        }\n      )\n    )\n    unwatchFns.push(\n      watch(\n        () => props.positions,\n        val => {\n          const polygonPrimitive = instance.cesiumObject as PolygonPrimitive\n          polygonPrimitive && (polygonPrimitive.positions = makeCartesian3Array(val!) as Array<Cesium.Cartesian3>)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.polygonHierarchy,\n        val => {\n          const polygonPrimitive = instance.cesiumObject as PolygonPrimitive\n          polygonPrimitive && (polygonPrimitive.polygonHierarchy = makePolygonHierarchy(val!) as Cesium.PolygonHierarchy)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.appearance,\n        val => {\n          const polygonPrimitive = instance.cesiumObject as PolygonPrimitive\n          polygonPrimitive && (polygonPrimitive.appearance = makeAppearance.call(instance, val!) as Cesium.Appearance)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.depthFailAppearance,\n        val => {\n          const polygonPrimitive = instance.cesiumObject as PolygonPrimitive\n          polygonPrimitive && (polygonPrimitive.depthFailAppearance = makeAppearance.call(instance, val!) as Cesium.Appearance)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.show,\n        val => {\n          const polygonPrimitive = instance.cesiumObject as PolygonPrimitive\n          polygonPrimitive && (polygonPrimitive.show = val)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.classificationType,\n        val => {\n          const polygonPrimitive = instance.cesiumObject as PolygonPrimitive\n          polygonPrimitive && (polygonPrimitive.classificationType = val as number)\n        }\n      )\n    )\n\n    // methods\n    instance.createCesiumObject = async () => {\n      const options = primitiveCollectionItemsState.transformProps(props)\n      return new PolygonPrimitive(options)\n    }\n\n    instance.mount = async () => {\n      const primitives = primitiveCollectionItemsState.$services.primitives\n      const collectionItem = instance.cesiumObject\n      ;(collectionItem as any)._vcParent = primitives\n      return primitives && primitives.add(collectionItem)\n    }\n\n    instance.unmount = async () => {\n      const primitives = primitiveCollectionItemsState.$services.primitives\n      const collectionItem = instance.cesiumObject\n      return primitives && !primitives.isDestroyed() && primitives.remove(collectionItem)\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\n// export type VcPolygonProps = ExtractPropTypes<typeof polygonProps>\nexport type VcPolygonProps = {\n  /**\n   * A user-defined object to return when the instance is picked with Scene#pick or get/set per-instance attributes with Primitive#getGeometryInstanceAttributes.\n   */\n  id?: any\n  /**\n   * Determines if this primitive will be shown.\n   * Default value: true\n   */\n  show?: boolean\n  positions?: VcCartesian3Array\n  classificationType?: number\n  /**\n   * \tA polygon hierarchy that can include holes.\n   */\n  polygonHierarchy?: VcPolygonHierarchy\n  /**\n   * Specify whether the drawing result object is attached to the ground or 3dtiles. Only polyline and polygon objects work.\n   */\n  clampToGround?: boolean\n  /**\n   * The appearance used to render the primitive.\n   */\n  appearance?: VcAppearance\n  /***\n   * The appearance used to shade this primitive when it fails the depth test.\n   */\n  depthFailAppearance?: VcAppearance\n  /**\n   * The ellipsoid to be used as a reference.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * When true, each geometry instance will only be pickable with Scene#pick. When false, GPU memory is saved.\n   */\n  allowPicking?: boolean\n  /**\n   * Determines if the primitive will be created asynchronously or block until ready.\n   */\n  asynchronous?: boolean\n  /**\n   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Triggers before the VcPoint is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcPoint is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcPoint is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this polygon.\n   */\n  mousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this polygon.\n   */\n  mouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this polygon.\n   */\n  click?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this polygon.\n   */\n  clickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this polygon.\n   */\n  dblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this polygon.\n   */\n  mousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this polygon.\n   */\n  mouseover?: (evt: VcPickEvent) => void\n  /**\n   * \tTriggers when the mouse moves out of this polygon.\n   */\n  mouseout?: (evt: VcPickEvent) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-28 16:20:34\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\index.ts\n */\nimport { App } from 'vue'\nimport CollectionBillboard from './billboard-collection'\nimport Billboard from './billboard'\nimport CollectionCloud from './cloud-collection'\nimport CumulusCloud from './cloud'\nimport CollectionLabel from './label-collection'\nimport Label from './label'\nimport CollectionPoint from './point-collection'\nimport Point from './point'\nimport CollectionPolyline from './polyline-collection'\nimport Polyline from './polyline'\nimport CollectionPrimitive from './primitive-collection'\nimport Polygon from './polygon'\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\n\nconst components = [\n  CollectionBillboard,\n  CollectionCloud,\n  CollectionLabel,\n  CollectionPoint,\n  CollectionPolyline,\n  CollectionPrimitive,\n  CumulusCloud,\n  Billboard,\n  Label,\n  Point,\n  Polyline,\n  Polygon\n]\n\nconst install = (app: App): void => {\n  components.forEach(cmp => {\n    app.component(cmp.name, cmp)\n  })\n}\n\nexport default {\n  install\n}\n\ncomponents.forEach(cmp => {\n  cmp['install'] = (app: App): void => {\n    app.component(cmp.name, cmp)\n  }\n})\n\nexport const VcCollectionBillboard = CollectionBillboard as SFCWithInstall<typeof CollectionBillboard>\nexport const VcCollectionCloud = CollectionCloud as SFCWithInstall<typeof CollectionCloud>\nexport const VcCollectionLabel = CollectionLabel as SFCWithInstall<typeof CollectionLabel>\nexport const VcCollectionPoint = CollectionPoint as SFCWithInstall<typeof CollectionPoint>\nexport const VcCollectionPolyline = CollectionPolyline as SFCWithInstall<typeof CollectionPolyline>\nexport const VcCollectionPrimitive = CollectionPrimitive as SFCWithInstall<typeof CollectionPrimitive>\nexport const VcBillboard = Billboard as SFCWithInstall<typeof Billboard>\nexport const VcCumulusCloud = CumulusCloud as SFCWithInstall<typeof CumulusCloud>\nexport const VcLabel = Label as SFCWithInstall<typeof Label>\nexport const VcPoint = Point as SFCWithInstall<typeof Point>\nexport const VcPolyline = Polyline as SFCWithInstall<typeof Polyline>\nexport const VcPolygon = Polygon as SFCWithInstall<typeof Polygon>\n\nexport * from './billboard'\nexport * from './billboard-collection'\nexport * from './cloud'\nexport * from './cloud-collection'\nexport * from './label'\nexport * from './label-collection'\nexport * from './point'\nexport * from './point-collection'\nexport * from './polygon'\nexport * from './polyline'\nexport * from './polyline-collection'\nexport * from './primitive-collection'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-15 09:14:41\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometry-instance\\src\\index.ts\n */\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcGeometry } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode, PropType, ref, h, provide } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useCommon } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { modelMatrix, id } from '@vue-cesium/utils/cesium-props'\nimport { getInstanceListener, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { vcKey } from '@vue-cesium/utils/config'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const geometryInstanceProps = {\n  geometry: Object as PropType<Cesium.Geometry | Cesium.GeometryFactory>,\n  ...modelMatrix,\n  ...id,\n  attributes: Object\n}\nconst emits = {\n  ...commonEmits,\n  'update:geometry': (payload: VcGeometry) => true\n}\nexport default defineComponent({\n  name: 'VcGeometryInstance',\n  props: geometryInstanceProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.renderByParent = true\n    instance.cesiumClass = 'GeometryInstance'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { emit } = ctx\n    const vcIndex = ref(0)\n    // methods\n    instance.createCesiumObject = async () => {\n      const options = commonState.transformProps(props) as any\n      if (!options.geometry) {\n        options.geometry = new Cesium.Geometry({ attributes: new Cesium.GeometryAttributes() })\n      }\n      return new Cesium.GeometryInstance(options)\n    }\n    instance.mount = async () => {\n      const parentVM = getVcParentInstance(instance).proxy as VcComponentPublicInstance\n      if (parentVM.__childCount !== undefined) {\n        vcIndex.value = parentVM.__childCount.value || 0\n        parentVM.__childCount.value += 1\n      }\n\n      const geometryInstance = instance.cesiumObject as Cesium.GeometryInstance\n      parentVM.__updateGeometryInstances?.(geometryInstance, vcIndex.value)\n      return true\n    }\n    instance.unmount = async () => {\n      const geometryInstance = instance.cesiumObject as Cesium.GeometryInstance\n      const parentVM = getVcParentInstance(instance).proxy as VcComponentPublicInstance\n      parentVM.__removeGeometryInstances?.(geometryInstance)\n      return true\n    }\n\n    const updateGeometry = geometry => {\n      const listener = getInstanceListener(instance, 'update:geometry')\n      if (listener) {\n        emit('update:geometry', geometry)\n      } else {\n        const geometryInstance = instance.cesiumObject as Cesium.GeometryInstance\n        geometryInstance.geometry = geometry\n      }\n\n      return true\n    }\n\n    const getServices = () => {\n      return mergeDescriptors(commonState.getServices(), {\n        get geometryInstance() {\n          return instance.cesiumObject as Cesium.GeometryInstance\n        }\n      })\n    }\n\n    // provide\n    provide(vcKey, getServices())\n    instance.appContext.config.globalProperties.$VueCesium = getServices()\n\n    // expose public methods\n    Object.assign(instance.proxy, {\n      // private but needed by VcGeometryXXX\n      __updateGeometry: updateGeometry\n    })\n\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(instance.proxy?.$options.name || ''),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\n// export type VcGeometryInstanceProps = ExtractPropTypes<typeof geometryInstanceProps>\nexport type VcGeometryInstanceEmits = typeof emits\nexport type VcGeometryInstanceProps = {\n  /**\n   * The geometry to instance.\n   */\n  geometry?: Cesium.Geometry | Cesium.GeometryFactory\n  /**\n   * The model matrix that transforms to transform the geometry from model to world coordinates.\n   */\n  modelMatrix?: Cesium.Matrix4\n  /**\n   * A user-defined object to return when the instance is picked with Scene#pick or get/set per-instance attributes with Primitive#getGeometryInstanceAttributes.\n   */\n  id?: any\n  /**\n   * Per-instance attributes like a show or color attribute shown in the example below.\n   */\n  attributes: any\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-18 14:54:23\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometry-instance\\index.ts\n */\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\nimport { App } from 'vue'\nimport GeometryInstance from './src'\n\nGeometryInstance.install = (app: App): void => {\n  app.component(GeometryInstance.name, GeometryInstance)\n}\n\nconst _GeometryInstance = GeometryInstance as SFCWithInstall<typeof GeometryInstance>\n\nexport default _GeometryInstance\nexport const VcGeometryInstance = _GeometryInstance\n\nexport * from './src'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-15 22:40:43\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\box\\index.ts\n */\nimport { VcComponentInternalInstance, VcPosition } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { dimensions, vertexFormat } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const boxGeometryProps = {\n  ...dimensions,\n  ...vertexFormat\n}\nexport default defineComponent({\n  name: 'VcGeometryBox',\n  props: boxGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'BoxGeometry'\n    const geometriesState = useGeometries(props, ctx, instance)\n\n    // methods\n    instance.createCesiumObject = async () => {\n      const options: any = geometriesState?.transformProps(props)\n      return Cesium.BoxGeometry.fromDimensions(options)\n    }\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\n// export type VcGeometryBoxProps = ExtractPropTypes<typeof boxGeometryProps>\nexport type VcGeometryBoxProps = {\n  /**\n   * The width, depth, and height of the box stored in the x, y, and z coordinates of the Cartesian3, respectively.\n   */\n  dimensions: VcPosition\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:23:09\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\box-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { dimensions } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const boxOutlineGeometryProps = {\n  ...dimensions\n}\nexport default defineComponent({\n  name: 'VcGeometryBoxOutline',\n  props: boxOutlineGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'BoxOutlineGeometry'\n    const geometriesState = useGeometries(props, ctx, instance)\n\n    // methods\n    instance.createCesiumObject = async () => {\n      const options: any = geometriesState?.transformProps(props)\n      return Cesium.BoxOutlineGeometry.fromDimensions(options)\n    }\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryBoxOutlineProps = ExtractPropTypes<typeof boxOutlineGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 11:12:05\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\circle\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { center, radius, ellipsoid, height, granularity, vertexFormat, extrudedHeight, stRotation } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const circleGeometryProps = {\n  ...center,\n  ...radius,\n  ...ellipsoid,\n  ...height,\n  ...granularity,\n  ...vertexFormat,\n  ...extrudedHeight,\n  ...stRotation\n}\nexport default defineComponent({\n  name: 'VcGeometryCircle',\n  props: circleGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CircleGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcCircleGeometryProps = ExtractPropTypes<typeof circleGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 11:14:31\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\circle-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { center, radius, ellipsoid, height, granularity, extrudedHeight, numberOfVerticalLines } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const circleOutlineGeometryProps = {\n  ...center,\n  ...radius,\n  ...ellipsoid,\n  ...height,\n  ...granularity,\n  ...extrudedHeight,\n  ...numberOfVerticalLines\n}\nexport default defineComponent({\n  name: 'VcGeometryCircleOutline',\n  props: circleOutlineGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CircleOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryCircleOutlineProps = ExtractPropTypes<typeof circleOutlineGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 11:20:02\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\coplanar-polygon\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { polygonHierarchy, stRotation, vertexFormat, ellipsoid } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const polygonCoplanarProps = {\n  ...polygonHierarchy,\n  ...ellipsoid,\n  ...vertexFormat,\n  ...stRotation\n}\nexport default defineComponent({\n  name: 'VcGeometryPolygonCoplanar',\n  props: polygonCoplanarProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CoplanarPolygonGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryPolygonCoplanarProps = ExtractPropTypes<typeof polygonCoplanarProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 11:22:47\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\coplanar-polygon-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { polygonHierarchy } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const polygonCoplanarOutlineProps = {\n  ...polygonHierarchy\n}\nexport default defineComponent({\n  name: 'VcGeometryPolygonCoplanarOutline',\n  props: polygonCoplanarOutlineProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CoplanarPolygonOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryPolygonCoplanarOutlineProps = ExtractPropTypes<typeof polygonCoplanarOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 11:29:05\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\corridor\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { positions, width, ellipsoid, granularity, height, extrudedHeight, vertexFormat, cornerType } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const corridorGeometryProps = {\n  ...positions,\n  ...width,\n  ...ellipsoid,\n  ...granularity,\n  ...height,\n  ...extrudedHeight,\n  ...vertexFormat,\n  ...cornerType\n}\nexport default defineComponent({\n  name: 'VcGeometryCorridor',\n  props: corridorGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CorridorGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryCorridorProps = ExtractPropTypes<typeof corridorGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 11:37:08\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\corridor-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { positions, width, ellipsoid, granularity, height, extrudedHeight, cornerType } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const corridorOutlineGeometryProps = {\n  ...positions,\n  ...width,\n  ...ellipsoid,\n  ...granularity,\n  ...height,\n  ...extrudedHeight,\n  ...cornerType\n}\nexport default defineComponent({\n  name: 'VcGeometryCorridorOutline',\n  props: corridorOutlineGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CorridorOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryCorridorOutlineProps = ExtractPropTypes<typeof corridorOutlineGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 11:42:29\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\cylinder\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { length, topRadius, bottomRadius, slices, vertexFormat } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const cylinderGeometryProps = {\n  ...length,\n  ...topRadius,\n  ...bottomRadius,\n  ...slices,\n  ...vertexFormat\n}\nexport default defineComponent({\n  name: 'VcGeometryCylinder',\n  props: cylinderGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CylinderGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryCylinderProps = ExtractPropTypes<typeof cylinderGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 11:45:29\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\cylinder-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { length, topRadius, bottomRadius, slices, numberOfVerticalLines } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const cylinderOutlineGeometryProps = {\n  ...length,\n  ...topRadius,\n  ...bottomRadius,\n  ...slices,\n  ...numberOfVerticalLines\n}\nexport default defineComponent({\n  name: 'VcGeometryCylinderOutline',\n  props: cylinderOutlineGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CylinderOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryCylinderOutlineProps = ExtractPropTypes<typeof cylinderOutlineGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 12:26:47\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\ellipse\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport {\n  center,\n  semiMajorAxis,\n  semiMinorAxis,\n  ellipsoid,\n  height,\n  extrudedHeight,\n  rotation,\n  stRotation,\n  granularity,\n  vertexFormat\n} from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const ellipseGeometryProps = {\n  ...center,\n  ...semiMajorAxis,\n  ...semiMinorAxis,\n  ...ellipsoid,\n  ...height,\n  ...extrudedHeight,\n  ...rotation,\n  ...stRotation,\n  ...granularity,\n  ...vertexFormat\n}\nexport default defineComponent({\n  name: 'VcGeometryEllipse',\n  props: ellipseGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'EllipseGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryEllipseProps = ExtractPropTypes<typeof ellipseGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 13:27:45\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\ellipse-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport {\n  center,\n  semiMajorAxis,\n  semiMinorAxis,\n  ellipsoid,\n  height,\n  extrudedHeight,\n  rotation,\n  stRotation,\n  granularity,\n  numberOfVerticalLines\n} from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const ellipseOutlineGeometryProps = {\n  ...center,\n  ...semiMajorAxis,\n  ...semiMinorAxis,\n  ...ellipsoid,\n  ...height,\n  ...extrudedHeight,\n  ...rotation,\n  ...stRotation,\n  ...granularity,\n  ...numberOfVerticalLines\n}\nexport default defineComponent({\n  name: 'VcGeometryEllipseOutline',\n  props: ellipseOutlineGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'EllipseOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryEllipseOutlineProps = ExtractPropTypes<typeof ellipseOutlineGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 13:29:01\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\ellipsoid\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport {\n  radii,\n  innerRadii,\n  minimumClock,\n  maximumClock,\n  minimumCone,\n  maximumCone,\n  stackPartitions,\n  slicePartitions,\n  vertexFormat\n} from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const ellipsoidGeometryProps = {\n  ...radii,\n  ...innerRadii,\n  ...minimumClock,\n  ...maximumClock,\n  ...minimumCone,\n  ...maximumCone,\n  ...stackPartitions,\n  ...slicePartitions,\n  ...vertexFormat\n}\nexport default defineComponent({\n  name: 'VcGeometryEllipsoid',\n  props: ellipsoidGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'EllipsoidGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryEllipsoidProps = ExtractPropTypes<typeof ellipsoidGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 13:31:31\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\ellipsoid-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\n\nimport {\n  radii,\n  innerRadii,\n  minimumClock,\n  maximumClock,\n  minimumCone,\n  maximumCone,\n  stackPartitions,\n  slicePartitions,\n  subdivisions\n} from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nconst ellipsoidOutlineProps = {\n  ...radii,\n  ...innerRadii,\n  ...minimumClock,\n  ...maximumClock,\n  ...minimumCone,\n  ...maximumCone,\n  ...stackPartitions,\n  ...slicePartitions,\n  ...subdivisions\n}\nexport default defineComponent({\n  name: 'VcGeometryEllipsoidOutline',\n  props: ellipsoidOutlineProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'EllipsoidOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryEllipsoidOutlineProps = ExtractPropTypes<typeof ellipsoidOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 13:32:49\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\frustum\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { frustum, origin, orientation, vertexFormat } from '@vue-cesium/utils/cesium-props'\nimport type { ExtractPropTypes } from 'vue'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const frustumGeometryProps = {\n  ...frustum,\n  ...origin,\n  ...orientation,\n  ...vertexFormat\n}\nexport default defineComponent({\n  name: 'VcGeometryFrustum',\n  props: frustumGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'FrustumGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryFrustumProps = ExtractPropTypes<typeof frustumGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 13:36:36\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\frustum-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { frustum, origin, orientation } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const frustumOutlineGeometryProps = {\n  ...frustum,\n  ...origin,\n  ...orientation\n}\nexport default defineComponent({\n  name: 'VcGeometryFrustumOutline',\n  props: frustumOutlineGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'FrustumOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryFrustumOutlineProps = ExtractPropTypes<typeof frustumOutlineGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 13:56:50\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\ground-polyline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { positions, width, granularity, loop, arcType } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const groundPolylineGeometryProps = {\n  ...positions,\n  ...width,\n  ...granularity,\n  ...loop,\n  ...arcType\n}\nexport default defineComponent({\n  name: 'VcGeometryGroundPolyline',\n  props: groundPolylineGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'GroundPolylineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryGroundPolylineProps = ExtractPropTypes<typeof groundPolylineGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:03:14\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\plane\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { vertexFormat } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const planeGeometryProps = {\n  ...vertexFormat\n}\nexport default defineComponent({\n  name: 'VcGeometryPlane',\n  props: planeGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PlaneGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryPlaneProps = ExtractPropTypes<typeof planeGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:05:59\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\plane-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport default defineComponent({\n  name: 'VcGeometryPlaneOutline',\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PlaneOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:07:15\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\polygon\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport {\n  polygonHierarchy,\n  height,\n  extrudedHeight,\n  vertexFormat,\n  stRotation,\n  ellipsoid,\n  granularity,\n  perPositionHeight,\n  closeTop,\n  closeBottom,\n  arcType\n} from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const polygonGeometryProps = {\n  ...polygonHierarchy,\n  ...height,\n  ...extrudedHeight,\n  ...vertexFormat,\n  ...stRotation,\n  ...ellipsoid,\n  ...granularity,\n  ...perPositionHeight,\n  ...closeTop,\n  ...closeBottom,\n  ...arcType\n}\nexport default defineComponent({\n  name: 'VcGeometryPolygon',\n  props: polygonGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PolygonGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryPolygonProps = ExtractPropTypes<typeof polygonGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:08:31\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\polygon-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport {\n  polygonHierarchy,\n  height,\n  extrudedHeight,\n  vertexFormat,\n  ellipsoid,\n  granularity,\n  perPositionHeight,\n  arcType\n} from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const polygonOutlineGeometryProps = {\n  ...polygonHierarchy,\n  ...height,\n  ...extrudedHeight,\n  ...vertexFormat,\n  ...ellipsoid,\n  ...granularity,\n  ...perPositionHeight,\n  ...arcType\n}\nexport default defineComponent({\n  name: 'VcGeometryPolygonOutline',\n  props: polygonOutlineGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PolygonOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryPolygonOutlineProps = ExtractPropTypes<typeof polygonOutlineGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-20 22:48:35\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\polyline\\index.ts\n */\nimport { VcCartesian3Array, VcColor, VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { positions, width, colors, arcType, granularity, vertexFormat, ellipsoid } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const polylineGeometryProps = {\n  ...positions,\n  ...width,\n  ...colors,\n  colorsPerVertex: {\n    type: Boolean,\n    default: false\n  },\n  ...arcType,\n  ...granularity,\n  ...vertexFormat,\n  ...ellipsoid\n}\nexport default defineComponent({\n  name: 'VcGeometryPolyline',\n  props: polylineGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PolylineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\n// export type VcGeometryPolylineProps = ExtractPropTypes<typeof polylineGeometryProps>\nexport type VcGeometryPolylineProps = {\n  /**\n   * An array of VcCartesian3Array defining the positions in the polyline as a line strip\n   */\n  positions?: VcCartesian3Array\n  /**\n   * The width in pixels\n   * Default value: 1.0\n   */\n  width?: number\n  /**\n   * An Array of VcColor defining the per vertex or per segment colors\n   */\n  colors?: Array<VcColor>\n  /**\n   * A boolean that determines whether the colors will be flat across each segment of the line or interpolated across the vertices\n   * Default value: false\n   */\n  colorsPerVertex?: boolean\n  /**\n   * The type of line the polyline segments must follow\n   * Default value: 1 - Cesium.ArcType.GEODESIC\n   */\n  arcType?: Cesium.ArcType | number\n  /**\n   * The distance, in radians, between each latitude and longitude if options.arcType is not ArcType.NONE. Determines the number of positions in the buffer\n   */\n  granularity?: number\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * The ellipsoid to be used as a reference.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * Triggers before the VcPoint is loaded\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcPoint is successfully loaded\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcPoint is destroyed\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:11:12\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\polyline-volume\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { polylinePositions, shapePositions, ellipsoid, granularity, vertexFormat, cornerType } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const polylineVolumeGeometryProps = {\n  ...polylinePositions,\n  ...shapePositions,\n  ...ellipsoid,\n  ...granularity,\n  ...vertexFormat,\n  ...cornerType\n}\nexport default defineComponent({\n  name: 'VcGeometryPolylineVolume',\n  props: polylineVolumeGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PolylineVolumeGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryPolylineVolumeProps = ExtractPropTypes<typeof polylineVolumeGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:12:28\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\polyline-volume-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { polylinePositions, shapePositions, ellipsoid, granularity, cornerType } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const polylineVolumeOutlineGeometryProps = {\n  ...polylinePositions,\n  ...shapePositions,\n  ...ellipsoid,\n  ...granularity,\n  ...cornerType\n}\nexport default defineComponent({\n  name: 'VcGeometryPolylineVolumeOutline',\n  props: polylineVolumeOutlineGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PolylineVolumeOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryPolylineVolumeOutlineProps = ExtractPropTypes<typeof polylineVolumeOutlineGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:13:41\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\rectangle\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { rectangle, vertexFormat, ellipsoid, granularity, height, rotation, stRotation, extrudedHeight } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const rectangleGeometryProps = {\n  ...rectangle,\n  ...vertexFormat,\n  ...ellipsoid,\n  ...granularity,\n  ...height,\n  ...rotation,\n  ...stRotation,\n  ...extrudedHeight\n}\nexport default defineComponent({\n  name: 'VcGeometryRectangle',\n  props: rectangleGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'RectangleGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryRectangleProps = ExtractPropTypes<typeof rectangleGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:15:04\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\rectangle-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'babel-preset-vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { rectangle, ellipsoid, granularity, height, rotation, extrudedHeight } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const rectangleOutlineGeometryProps = {\n  ...rectangle,\n  ...ellipsoid,\n  ...granularity,\n  ...height,\n  ...rotation,\n  ...extrudedHeight\n}\nexport default defineComponent({\n  name: 'VcGeometryRectangleOutline',\n  props: rectangleOutlineGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'RectangleOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryRectangleOutlineProps = ExtractPropTypes<typeof rectangleOutlineGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:16:50\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\simple-polyline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { positions, colors, arcType, granularity, ellipsoid } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const simplePolylineGeometryProps = {\n  ...positions,\n  ...colors,\n  colorsPerVertex: {\n    type: Boolean,\n    default: false\n  },\n  ...arcType,\n  ...granularity,\n  ...ellipsoid\n}\nexport default defineComponent({\n  name: 'VcGeometrySimplePolyline',\n  props: simplePolylineGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'SimplePolylineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometrySimplePolylineProps = ExtractPropTypes<typeof simplePolylineGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:18:02\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\sphere\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { radius, stackPartitions, slicePartitions, vertexFormat } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const sphereGeometryProps = {\n  ...radius,\n  ...stackPartitions,\n  ...slicePartitions,\n  ...vertexFormat\n}\nexport default defineComponent({\n  name: 'VcGeometrySphere',\n  props: sphereGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'SphereGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometrySphereProps = ExtractPropTypes<typeof sphereGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:19:26\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\sphere-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { radius, stackPartitions, slicePartitions, subdivisions } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const sphereGeometryOutlineProps = {\n  ...radius,\n  ...stackPartitions,\n  ...slicePartitions,\n  ...subdivisions\n}\nexport default defineComponent({\n  name: 'VcGeometrySphereOutline',\n  props: sphereGeometryOutlineProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'SphereOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometrySphereOutlineProps = ExtractPropTypes<typeof sphereGeometryOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:20:37\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\wall\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { positions, granularity, maximumHeights, minimumHeights, ellipsoid, vertexFormat } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const wallGeometryProps = {\n  ...positions,\n  ...granularity,\n  ...maximumHeights,\n  ...minimumHeights,\n  ...ellipsoid,\n  ...vertexFormat\n}\nexport default defineComponent({\n  name: 'VcGeometryWall',\n  props: wallGeometryProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'WallGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryWallProps = ExtractPropTypes<typeof wallGeometryProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 14:22:03\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\wall-outline\\index.ts\n */\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { positions, granularity, maximumHeights, minimumHeights, ellipsoid } from '@vue-cesium/utils/cesium-props'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const wallOutlineProps = {\n  ...positions,\n  ...granularity,\n  ...maximumHeights,\n  ...minimumHeights,\n  ...ellipsoid\n}\nexport default defineComponent({\n  name: 'VcGeometryWallOutline',\n  props: wallOutlineProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'WallOutlineGeometry'\n    useGeometries(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGeometryWallOutlineProps = ExtractPropTypes<typeof wallOutlineProps>\n","import { SFCWithInstall } from '@vue-cesium/utils/types'\nimport { App } from 'vue'\nimport GeometryBox from './box'\nimport GeometryBoxOutline from './box-outline'\nimport GeometryCircle from './circle'\nimport GeometryCircleOutline from './circle-outline'\nimport GeometryPolygonCoplanar from './coplanar-polygon'\nimport GeometryPolygonCoplanarOutline from './coplanar-polygon-outline'\nimport GeometryCorridor from './corridor'\nimport GeometryCorridorOutline from './corridor-outline'\nimport GeometryCylinder from './cylinder'\nimport GeometryCylinderOutline from './cylinder-outline'\nimport GeometryEllipse from './ellipse'\nimport GeometryEllipseOutline from './ellipse-outline'\nimport GeometryEllipsoid from './ellipsoid'\nimport GeometryEllipsoidOutline from './ellipsoid-outline'\nimport GeometryFrustum from './frustum'\nimport GeometryFrustumOutline from './frustum-outline'\nimport GeometryGroundPolyline from './ground-polyline'\nimport GeometryPlane from './plane'\nimport GeometryPlaneOutline from './plane-outline'\nimport GeometryPolygon from './polygon'\nimport GeometryPolygonOutline from './polygon-outline'\nimport GeometryPolyline from './polyline'\nimport GeometryPolylineVolume from './polyline-volume'\nimport GeometryPolylineVolumeOutline from './polyline-volume-outline'\nimport GeometryRectangle from './rectangle'\nimport GeometryRectangleOutline from './rectangle-outline'\nimport GeometrySimplePolyline from './simple-polyline'\nimport GeometrySphere from './sphere'\nimport GeometrySphereOutline from './sphere-outline'\nimport GeometryWall from './wall'\nimport GeometryWallOutline from './wall-outline'\n\nconst components = [\n  GeometryBox,\n  GeometryBoxOutline,\n  GeometryCircle,\n  GeometryCircleOutline,\n  GeometryPolygonCoplanar,\n  GeometryPolygonCoplanarOutline,\n  GeometryCorridor,\n  GeometryCorridorOutline,\n  GeometryCylinder,\n  GeometryCylinderOutline,\n  GeometryEllipse,\n  GeometryEllipseOutline,\n  GeometryEllipsoid,\n  GeometryEllipsoidOutline,\n  GeometryFrustum,\n  GeometryFrustumOutline,\n  GeometryGroundPolyline,\n  GeometryPlane,\n  GeometryPlaneOutline,\n  GeometryPolygon,\n  GeometryPolygonOutline,\n  GeometryPolyline,\n  GeometryPolylineVolume,\n  GeometryPolylineVolumeOutline,\n  GeometryRectangle,\n  GeometryRectangleOutline,\n  GeometrySimplePolyline,\n  GeometrySphere,\n  GeometrySphereOutline,\n  GeometryWall,\n  GeometryWallOutline\n]\n\nconst install = (app: App): void => {\n  components.forEach(cmp => {\n    app.component(cmp.name, cmp)\n  })\n}\n\nexport default {\n  install\n}\n\ncomponents.forEach(cmp => {\n  cmp['install'] = (app: App): void => {\n    app.component(cmp.name, cmp)\n  }\n})\n\nexport const VcGeometryBox = GeometryBox as SFCWithInstall<typeof GeometryBox>\nexport const VcGeometryBoxOutline = GeometryBoxOutline as SFCWithInstall<typeof GeometryBoxOutline>\nexport const VcGeometryCircle = GeometryCircle as SFCWithInstall<typeof GeometryCircle>\nexport const VcGeometryCircleOutline = GeometryCircleOutline as SFCWithInstall<typeof GeometryCircleOutline>\nexport const VcGeometryPolygonCoplanar = GeometryPolygonCoplanar as SFCWithInstall<typeof GeometryPolygonCoplanar>\nexport const VcGeometryPolygonCoplanarOutline = GeometryPolygonCoplanarOutline as SFCWithInstall<typeof GeometryPolygonCoplanarOutline>\nexport const VcGeometryCorridor = GeometryCorridor as SFCWithInstall<typeof GeometryCorridor>\nexport const VcGeometryCorridorOutline = GeometryCorridorOutline as SFCWithInstall<typeof GeometryCorridorOutline>\nexport const VcGeometryCylinder = GeometryCylinder as SFCWithInstall<typeof GeometryCylinder>\nexport const VcGeometryCylinderOutline = GeometryCylinderOutline as SFCWithInstall<typeof GeometryCylinderOutline>\nexport const VcGeometryEllipse = GeometryEllipse as SFCWithInstall<typeof GeometryEllipse>\nexport const VcGeometryEllipseOutline = GeometryEllipseOutline as SFCWithInstall<typeof GeometryEllipseOutline>\nexport const VcGeometryEllipsoid = GeometryEllipsoid as SFCWithInstall<typeof GeometryEllipsoid>\nexport const VcGeometryEllipsoidOutline = GeometryEllipsoidOutline as SFCWithInstall<typeof GeometryEllipsoidOutline>\nexport const VcGeometryFrustum = GeometryFrustum as SFCWithInstall<typeof GeometryFrustum>\nexport const VcGeometryFrustumOutline = GeometryFrustumOutline as SFCWithInstall<typeof GeometryFrustumOutline>\nexport const VcGeometryGroundPolyline = GeometryGroundPolyline as SFCWithInstall<typeof GeometryGroundPolyline>\nexport const VcGeometryPlane = GeometryPlane as SFCWithInstall<typeof GeometryPlane>\nexport const VcGeometryPlaneOutline = GeometryPlaneOutline as SFCWithInstall<typeof GeometryPlaneOutline>\nexport const VcGeometryPolygon = GeometryPolygon as SFCWithInstall<typeof GeometryPolygon>\nexport const VcGeometryPolygonOutline = GeometryPolygonOutline as SFCWithInstall<typeof GeometryPolygonOutline>\nexport const VcGeometryPolyline = GeometryPolyline as SFCWithInstall<typeof GeometryPolyline>\nexport const VcGeometryPolylineVolume = GeometryPolylineVolume as SFCWithInstall<typeof GeometryPolylineVolume>\nexport const VcGeometryPolylineVolumeOutline = GeometryPolylineVolumeOutline as SFCWithInstall<typeof GeometryPolylineVolumeOutline>\nexport const VcGeometryRectangle = GeometryRectangle as SFCWithInstall<typeof GeometryRectangle>\nexport const VcGeometryRectangleOutline = GeometryRectangleOutline as SFCWithInstall<typeof GeometryRectangleOutline>\nexport const VcGeometrySimplePolyline = GeometrySimplePolyline as SFCWithInstall<typeof GeometrySimplePolyline>\nexport const VcGeometrySphere = GeometrySphere as SFCWithInstall<typeof GeometrySphere>\nexport const VcGeometrySphereOutline = GeometrySphereOutline as SFCWithInstall<typeof GeometrySphereOutline>\nexport const VcGeometryWall = GeometryWall as SFCWithInstall<typeof GeometryWall>\nexport const VcGeometryWallOutline = GeometryWallOutline as SFCWithInstall<typeof GeometryWallOutline>\n\nexport * from './box'\nexport * from './box-outline'\nexport * from './circle'\nexport * from './circle-outline'\nexport * from './coplanar-polygon'\nexport * from './coplanar-polygon-outline'\nexport * from './corridor'\nexport * from './corridor-outline'\nexport * from './cylinder'\nexport * from './cylinder-outline'\nexport * from './ellipse'\nexport * from './ellipse-outline'\nexport * from './ellipsoid'\nexport * from './ellipsoid-outline'\nexport * from './frustum'\nexport * from './frustum-outline'\nexport * from './ground-polyline'\nexport * from './plane'\nexport * from './plane-outline'\nexport * from './polygon'\nexport * from './polygon-outline'\nexport * from './polyline'\nexport * from './polyline-volume'\nexport * from './polyline-volume-outline'\nexport * from './rectangle'\nexport * from './rectangle-outline'\nexport * from './simple-polyline'\nexport * from './sphere'\nexport * from './sphere-outline'\nexport * from './wall'\nexport * from './wall-outline'\n","import { clearColor, scissorRectangle } from '@vue-cesium/utils/cesium-props'\nimport { PropType } from 'vue'\n\nconst defaultProps = {\n  fragmentShader: String,\n  uniforms: Object,\n  textureScale: {\n    type: Number\n  },\n  forcePowerOfTwo: {\n    type: Boolean,\n    default: false\n  },\n  sampleMode: Number as PropType<Cesium.PostProcessStageSampleMode>,\n  pixelFormat: Number as PropType<Cesium.PixelFormat>,\n  pixelDatatype: Number as PropType<Cesium.PixelDatatype>,\n  ...clearColor,\n  ...scissorRectangle,\n  name: String\n}\n\nexport default defaultProps\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-01-19 23:46:30\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\post-processes\\post-process-stage\\index.ts\n */\n/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2021-09-30 22:09:51\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\post-processes\\post-process-stage\\index.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useCommon } from '@vue-cesium/composables/index'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport defaultProps from './defaultProps'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const postProcessStageProps = defaultProps\nexport default defineComponent({\n  name: 'VcPostProcessStage',\n  props: postProcessStageProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PostProcessStage'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n\n    // methods\n    instance.mount = async () => {\n      const { postProcessStages } = $services\n      const stage = postProcessStages.add(instance.cesiumObject as Cesium.PostProcessStage)\n      return postProcessStages.contains(stage)\n    }\n\n    instance.unmount = async () => {\n      const { postProcessStages } = $services\n      return postProcessStages?.remove(instance.cesiumObject as Cesium.PostProcessStage)\n    }\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcPostProcessStageProps = ExtractPropTypes<typeof postProcessStageProps>\n","export default `\n  uniform sampler2D colorTexture;\n  uniform sampler2D depthTexture;\n  varying vec2 v_textureCoordinates;\n  uniform vec4 u_scanCenterEC;\n  uniform vec3 u_scanPlaneNormalEC;\n  uniform vec3 u_scanLineNormalEC;\n  uniform float u_radius;\n  uniform vec4 u_scanColor;\n  vec4 toEye(in vec2 uv, in float depth)\n  {\n    vec2 xy = vec2((uv.x * 2.0 - 1.0),(uv.y * 2.0 - 1.0));\n    vec4 posInCamera =czm_inverseProjection * vec4(xy, depth, 1.0);\n    posInCamera =posInCamera / posInCamera.w;\n    return posInCamera;\n  }\n  bool isPointOnLineRight(in vec3 ptOnLine, in vec3 lineNormal, in vec3 testPt)\n  {\n    vec3 v01 = testPt - ptOnLine;\n    normalize(v01);\n    vec3 temp = cross(v01, lineNormal);\n    float d = dot(temp, u_scanPlaneNormalEC);\n    return d > 0.5;\n  }\n  vec3 pointProjectOnPlane(in vec3 planeNormal, in vec3 planeOrigin, in vec3 point)\n  {\n    vec3 v01 = point -planeOrigin;\n    float d = dot(planeNormal, v01) ;\n    return (point - planeNormal * d);\n  }\n  float distancePointToLine(in vec3 ptOnLine, in vec3 lineNormal, in vec3 testPt)\n  {\n    vec3 tempPt = pointProjectOnPlane(lineNormal, ptOnLine, testPt);\n    return length(tempPt - ptOnLine);\n  }\n  float getDepth(in vec4 depth)\n  {\n    float z_window = czm_unpackDepth(depth);\n    z_window = czm_reverseLogDepth(z_window);\n    float n_range = czm_depthRange.near;\n    float f_range = czm_depthRange.far;\n    return (2.0 * z_window - n_range - f_range) / (f_range - n_range);\n  }\n  void main()\n  {\n    gl_FragColor = texture2D(colorTexture, v_textureCoordinates);\n    float depth = getDepth( texture2D(depthTexture, v_textureCoordinates));\n    vec4 viewPos = toEye(v_textureCoordinates, depth);\n    vec3 prjOnPlane = pointProjectOnPlane(u_scanPlaneNormalEC.xyz, u_scanCenterEC.xyz, viewPos.xyz);\n    float dis = length(prjOnPlane.xyz - u_scanCenterEC.xyz);\n    float twou_radius = u_radius * 2.0;\n    if(dis < u_radius)\n    {\n      float f0 = 1.0 -abs(u_radius - dis) / u_radius;\n      f0 = pow(f0, 64.0);\n      vec3 lineEndPt = vec3(u_scanCenterEC.xyz) + u_scanLineNormalEC * u_radius;\n      float f = 0.0;\n      if(isPointOnLineRight(u_scanCenterEC.xyz, u_scanLineNormalEC.xyz, prjOnPlane.xyz))\n      {\n        float dis1= length(prjOnPlane.xyz - lineEndPt);\n        f = abs(twou_radius -dis1) / twou_radius;\n        f = pow(f, 3.0);\n      }\n      gl_FragColor = mix(gl_FragColor, u_scanColor, f + f0);\n    }\n  }\n`\n","import { VcViewerProvider } from '@vue-cesium/utils/types'\nimport shaderSource from '@vue-cesium/shared/materials/shaders/RadarScan'\nexport default function ($services: VcViewerProvider) {\n  const webgl = options => {\n    const { viewer } = $services\n    const cartographicCenter = Cesium.Cartographic.fromCartesian(options.position, viewer.scene.globe.ellipsoid)\n    const _Cartesian3Center = Cesium.Cartographic.toCartesian(cartographicCenter, viewer.scene.globe.ellipsoid)\n    const _Cartesian4Center = new Cesium.Cartesian4(_Cartesian3Center.x, _Cartesian3Center.y, _Cartesian3Center.z, 1)\n    const _CartographicCenter1 = new Cesium.Cartographic(cartographicCenter.longitude, cartographicCenter.latitude, cartographicCenter.height + 500)\n    const _Cartesian3Center1 = Cesium.Cartographic.toCartesian(_CartographicCenter1, viewer.scene.globe.ellipsoid)\n    const _Cartesian4Center1 = new Cesium.Cartesian4(_Cartesian3Center1.x, _Cartesian3Center1.y, _Cartesian3Center1.z, 1)\n    const _CartographicCenter2 = new Cesium.Cartographic(\n      cartographicCenter.longitude + Cesium.Math.toRadians(0.001),\n      cartographicCenter.latitude,\n      cartographicCenter.height\n    )\n    const _Cartesian3Center2 = Cesium.Cartographic.toCartesian(_CartographicCenter2, viewer.scene.globe.ellipsoid)\n    const _Cartesian4Center2 = new Cesium.Cartesian4(_Cartesian3Center2.x, _Cartesian3Center2.y, _Cartesian3Center2.z, 1)\n    const _RotateQ = new Cesium.Quaternion()\n    const _RotateM = new Cesium.Matrix3()\n    const _time = new Date().getTime()\n    const _scratchCartesian4Center = new Cesium.Cartesian4()\n    const _scratchCartesian4Center1 = new Cesium.Cartesian4()\n    const _scratchCartesian4Center2 = new Cesium.Cartesian4()\n    const _scratchCartesian3Normal = new Cesium.Cartesian3()\n    const _scratchCartesian3Normal1 = new Cesium.Cartesian3()\n    const uniforms = {\n      u_scanCenterEC: function () {\n        return Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center, _scratchCartesian4Center)\n      },\n      u_scanPlaneNormalEC: function () {\n        const temp = Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center, _scratchCartesian4Center)\n        const temp1 = Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center1, _scratchCartesian4Center1)\n        _scratchCartesian3Normal.x = temp1.x - temp.x\n        _scratchCartesian3Normal.y = temp1.y - temp.y\n        _scratchCartesian3Normal.z = temp1.z - temp.z\n        Cesium.Cartesian3.normalize(_scratchCartesian3Normal, _scratchCartesian3Normal)\n        return _scratchCartesian3Normal\n      },\n      u_radius: options.radius,\n      u_scanLineNormalEC: function () {\n        const temp = Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center, _scratchCartesian4Center)\n        const temp1 = Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center1, _scratchCartesian4Center1)\n        const temp2 = Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center2, _scratchCartesian4Center2)\n        _scratchCartesian3Normal.x = temp1.x - temp.x\n        _scratchCartesian3Normal.y = temp1.y - temp.y\n        _scratchCartesian3Normal.z = temp1.z - temp.z\n        Cesium.Cartesian3.normalize(_scratchCartesian3Normal, _scratchCartesian3Normal)\n        _scratchCartesian3Normal1.x = temp2.x - temp.x\n        _scratchCartesian3Normal1.y = temp2.y - temp.y\n        _scratchCartesian3Normal1.z = temp2.z - temp.z\n        const tempTime = ((new Date().getTime() - _time) % options.interval) / options.interval\n        Cesium.Quaternion.fromAxisAngle(_scratchCartesian3Normal, tempTime * Cesium.Math.PI * 2, _RotateQ)\n        Cesium.Matrix3.fromQuaternion(_RotateQ, _RotateM)\n        Cesium.Matrix3.multiplyByVector(_RotateM, _scratchCartesian3Normal1, _scratchCartesian3Normal1)\n        Cesium.Cartesian3.normalize(_scratchCartesian3Normal1, _scratchCartesian3Normal1)\n        return _scratchCartesian3Normal1\n      },\n      u_scanColor: options.color\n    }\n    return {\n      shaderSource,\n      uniforms\n    }\n  }\n\n  return {\n    webgl\n  }\n}\n","export default `\n  uniform sampler2D colorTexture;\n  uniform sampler2D depthTexture;\n  varying vec2 v_textureCoordinates;\n  uniform vec4 u_scanCenterEC;\n  uniform vec3 u_scanPlaneNormalEC;\n  uniform float u_radius;\n  uniform vec4 u_scanColor;\n  vec4 toEye(in vec2 uv, in float depth)\n  {\n    vec2 xy = vec2((uv.x * 2.0 - 1.0),(uv.y * 2.0 - 1.0));\n    vec4 posInCamera =czm_inverseProjection * vec4(xy, depth, 1.0);\n    posInCamera =posInCamera / posInCamera.w;\n    return posInCamera;\n  }\n  vec3 pointProjectOnPlane(in vec3 planeNormal, in vec3 planeOrigin, in vec3 point)\n  {\n    vec3 v01 = point -planeOrigin;\n    float d = dot(planeNormal, v01) ;\n    return (point - planeNormal * d);\n  }\n  float getDepth(in vec4 depth)\n  {\n    float z_window = czm_unpackDepth(depth);\n    z_window = czm_reverseLogDepth(z_window);\n    float n_range = czm_depthRange.near;\n    float f_range = czm_depthRange.far;\n    return (2.0 * z_window - n_range - f_range) / (f_range - n_range);\n  }\n  void main()\n  {\n    gl_FragColor = texture2D(colorTexture, v_textureCoordinates);\n    float depth = getDepth( texture2D(depthTexture, v_textureCoordinates));\n    vec4 viewPos = toEye(v_textureCoordinates, depth);\n    vec3 prjOnPlane = pointProjectOnPlane(u_scanPlaneNormalEC.xyz, u_scanCenterEC.xyz, viewPos.xyz);\n    float dis = length(prjOnPlane.xyz - u_scanCenterEC.xyz);\n    if(dis < u_radius)\n    {\n      float f = 1.0 -abs(u_radius - dis) / u_radius;\n      f = pow(f, 4.0);\n      gl_FragColor = mix(gl_FragColor, u_scanColor, f);\n    }\n  }\n`\n","import { VcViewerProvider } from '@vue-cesium/utils/types'\nimport shaderSource from '@vue-cesium/shared/materials/shaders/CircleScan'\nexport default function ($services: VcViewerProvider) {\n  const webgl = options => {\n    const { viewer } = $services\n    const cartographicCenter = Cesium.Cartographic.fromCartesian(options.position, viewer.scene.globe.ellipsoid)\n    const _Cartesian3Center = Cesium.Cartographic.toCartesian(cartographicCenter, viewer.scene.globe.ellipsoid)\n    const _Cartesian4Center = new Cesium.Cartesian4(_Cartesian3Center.x, _Cartesian3Center.y, _Cartesian3Center.z, 1)\n    const _CartographicCenter1 = new Cesium.Cartographic(cartographicCenter.longitude, cartographicCenter.latitude, cartographicCenter.height + 500)\n    const _Cartesian3Center1 = Cesium.Cartographic.toCartesian(_CartographicCenter1, viewer.scene.globe.ellipsoid)\n    const _Cartesian4Center1 = new Cesium.Cartesian4(_Cartesian3Center1.x, _Cartesian3Center1.y, _Cartesian3Center1.z, 1)\n    const _time = new Date().getTime()\n    const _scratchCartesian4Center = new Cesium.Cartesian4()\n    const _scratchCartesian4Center1 = new Cesium.Cartesian4()\n    const _scratchCartesian3Normal = new Cesium.Cartesian3()\n    const uniforms = {\n      u_scanCenterEC: function () {\n        return Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center, _scratchCartesian4Center)\n      },\n      u_scanPlaneNormalEC: function () {\n        const temp = Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center, _scratchCartesian4Center)\n        const temp1 = Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center1, _scratchCartesian4Center1)\n        _scratchCartesian3Normal.x = temp1.x - temp.x\n        _scratchCartesian3Normal.y = temp1.y - temp.y\n        _scratchCartesian3Normal.z = temp1.z - temp.z\n        Cesium.Cartesian3.normalize(_scratchCartesian3Normal, _scratchCartesian3Normal)\n        return _scratchCartesian3Normal\n      },\n      u_radius: function () {\n        return (options.radius * ((new Date().getTime() - _time) % options.interval)) / options.interval\n      },\n      u_scanColor: options.color\n    }\n    return {\n      shaderSource,\n      uniforms\n    }\n  }\n\n  return {\n    webgl\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-19 23:58:04\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\post-processes\\post-process-stage-scan\\index.ts\n */\nimport type { ExtractPropTypes, PropType, WatchStopHandle } from 'vue'\nimport { useCommon } from '@vue-cesium/composables'\nimport type { VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcPosition } from '@vue-cesium/utils/types'\nimport { computed, defineComponent, getCurrentInstance, h, onUnmounted, ref, watch } from 'vue'\nimport VcPostProcessStage from '../post-process-stage'\nimport useRadar from './use-radar-scan'\nimport useCircle from './use-circle-scan'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nconst defaultOptions = {\n  position: [0, 0],\n  radius: 1500,\n  interval: 3500,\n  color: [0, 0, 0, 255]\n}\n\nexport type VcPostProcessStageScanOpts = {\n  position?: VcPosition\n  radius: number\n  interval: number\n  color: VcColor\n}\n\nexport const postProcessStageScanProps = {\n  type: {\n    type: String,\n    default: 'radar' // radar, circle\n  },\n  options: Object as PropType<VcPostProcessStageScanOpts>\n}\n\nexport default defineComponent({\n  name: 'VcPostProcessStageScan',\n  props: postProcessStageScanProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcPostProcessStageScan'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const fragmentShader = ref('')\n    const uniforms = ref<any>(null)\n    const { $services } = commonState\n    const useRadarState = useRadar($services)\n    const useCircleState = useCircle($services)\n    let unwatchFns: Array<WatchStopHandle> = []\n    // computed\n    const options = computed(() => {\n      return Object.assign({}, defaultOptions, props.options)\n    })\n    // watch\n    unwatchFns.push(\n      watch(\n        () => options,\n        val => {\n          if (instance.mounted) {\n            ;(instance.proxy as VcComponentPublicInstance).reload()\n          }\n        },\n        { deep: true }\n      )\n    )\n\n    // methods\n    instance.createCesiumObject = async () => {\n      const opts = commonState.transformProps(options.value)\n      let result\n      if (props.type === 'radar') {\n        result = useRadarState.webgl(opts)\n      } else if (props.type === 'circle') {\n        result = useCircleState.webgl(opts)\n      }\n      fragmentShader.value = result.shaderSource\n      uniforms.value = result.uniforms\n      return true\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    return () => {\n      return h(VcPostProcessStage, {\n        fragmentShader: fragmentShader.value,\n        uniforms: uniforms.value\n      })\n    }\n  }\n})\n\nexport type VcPostProcessStageScanProps = ExtractPropTypes<typeof postProcessStageScanProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-19 23:52:30\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\post-processes\\post-process-stage-collection\\index.ts\n */\nimport type { ExtractPropTypes, WatchStopHandle, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport { useCommon } from '@vue-cesium/composables/index'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport type { VcPostProcessStageProps } from '../post-process-stage'\n\nexport const postProcessStageCollectionProps = {\n  postProcesses: {\n    type: Array as PropType<Array<VcPostProcessStageProps>>,\n    default: () => []\n  }\n}\nexport default defineComponent({\n  name: 'VcPostProcessStageCollection',\n  props: postProcessStageCollectionProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PostProcessStageCollection'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const stages: Array<Cesium.PostProcessStage | Cesium.PostProcessStageComposite> = []\n    let unwatchFns: Array<WatchStopHandle> = []\n    // watch\n    unwatchFns.push(\n      watch(\n        () => props.postProcesses,\n        val => {\n          if (instance.mounted) {\n            ;(instance.proxy as VcComponentPublicInstance).reload?.()\n          }\n        },\n        { deep: true }\n      )\n    )\n\n    // methods\n    instance.createCesiumObject = async () => {\n      return stages\n    }\n\n    instance.mount = async () => {\n      const { postProcessStages } = $services\n      props.postProcesses.forEach(postProcess => {\n        const opts = commonState.transformProps(postProcess)\n        stages.push(postProcessStages.add(new Cesium.PostProcessStage(opts as any)))\n      })\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { postProcessStages } = $services\n      stages.forEach(stage => {\n        postProcessStages.remove(stage)\n      })\n      stages.length = 0\n      return true\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(instance.proxy?.$options.name || ''),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcPostProcessStageCollectionProps = ExtractPropTypes<typeof postProcessStageCollectionProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-19 23:58:40\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\post-processes\\index.ts\n */\nimport { App } from 'vue'\nimport PostProcessStage from './post-process-stage'\nimport PostProcessStageScan from './post-process-stage-scan'\nimport PostProcessStageCollection from './post-process-stage-collection'\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\n\nconst components = [PostProcessStage, PostProcessStageScan, PostProcessStageCollection]\n\nconst install = (app: App): void => {\n  components.forEach(cmp => {\n    app.component(cmp.name, cmp)\n  })\n}\n\nexport default {\n  install\n}\n\ncomponents.forEach(cmp => {\n  cmp['install'] = (app: App): void => {\n    app.component(cmp.name, cmp)\n  }\n})\n\nexport const VcPostProcessStage = PostProcessStage as SFCWithInstall<typeof PostProcessStage>\nexport const VcPostProcessStageScan = PostProcessStageScan as SFCWithInstall<typeof PostProcessStageScan>\nexport const VcPostProcessStageCollection = PostProcessStageCollection as SFCWithInstall<typeof PostProcessStageCollection>\n\nexport * from './post-process-stage'\nexport * from './post-process-stage-collection'\nexport * from './post-process-stage-scan'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-15 09:47:36\n * @LastEditTime: 2022-02-08 11:02:50\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\use-drawing-action.ts\n */\n// import { enableMouseEvent } from '@vue-cesium/utils/cesium-props'\nimport type { VcReadyObject, VcComponentInternalInstance, VcComponentPublicInstance, VcViewerProvider, VcPickEvent } from '@vue-cesium/utils/types'\nimport { ref } from 'vue'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus } from '@vue-cesium/shared'\nimport useTimeout from '@vue-cesium/composables/private/use-timeout'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { VcDrawTipOpts } from '@vue-cesium/utils/drawing-types'\n\nexport default function (props, ctx, instance: VcComponentInternalInstance, cmpName: string, $services: VcViewerProvider) {\n  instance.cesiumClass = cmpName\n  instance.cesiumEvents = []\n  const { t } = useLocale()\n  const { emit } = ctx\n  const tips = kebabCase(cmpName).split('-')\n  if (cmpName === 'VcMeasurementDistance' && props.showComponentLines) {\n    tips[2] = 'component-distance'\n  }\n  if (cmpName === 'VcDrawingRegular' || cmpName === 'VcMeasurementRegular') {\n    if (props.edge === 4) {\n      tips[2] = 'rectangle'\n    }\n    if (props.edge === 360) {\n      tips[2] = 'circle'\n    }\n  }\n  let drawingType = tips[2]\n\n  tips[3] && (drawingType = `${tips[2]}-${tips[3]}`)\n\n  const drawTip = ref('')\n  const drawTipOpts = ref<VcDrawTipOpts>({\n    drawingTipStart: props.drawtip.drawingTipStart || t(`${tips[0]}.${tips[1]}.${tips[2]}.drawingTipStart`),\n    drawingTipEnd: props.drawtip.drawingTipEnd || t(`${tips[0]}.${tips[1]}.${tips[2]}.drawingTipEnd`),\n    drawingTipEditing: props.drawtip.drawingTipEditing || t(`${tips[0]}.${tips[1]}.${tips[2]}.drawingTipEditing`)\n  })\n\n  const drawStatus = ref(DrawStatus.BeforeDraw)\n  const canShowDrawTip = ref(false)\n  const drawTipPosition = ref<Array<number> | Cesium.Cartesian3>([0, 0, 0])\n  const showEditor = ref(false)\n  const editorPosition = ref<Array<number> | Cesium.Cartesian3>([0, 0, 0])\n  const mouseoverPoint = ref<any>(null)\n  const editingPoint = ref<any>(null)\n  const primitiveCollectionRef = ref<VcComponentPublicInstance>(null!)\n  const editorType = ref('')\n\n  const { registerTimeout, removeTimeout } = useTimeout()\n\n  // methods\n  instance.createCesiumObject = async () => {\n    return primitiveCollectionRef\n  }\n\n  const onMouseoverPoints = (e: VcPickEvent) => {\n    const { drawingHandlerActive, viewer } = $services\n    if (props.editable && drawStatus.value !== DrawStatus.Drawing && drawingHandlerActive) {\n      e.pickedFeature.primitive.pixelSize = props.pointOpts?.pixelSize * 1.5\n      removeTimeout()\n      registerTimeout(() => {\n        mouseoverPoint.value = e.pickedFeature.primitive\n        editorPosition.value = e.pickedFeature.primitive.position\n        showEditor.value = true\n        canShowDrawTip.value = false\n        drawTipPosition.value = [0, 0, 0]\n      }, props.editorOpts?.delay)\n    }\n\n    emit(\n      'mouseEvt',\n      {\n        type: e.type,\n        name: drawingType,\n        target: e\n      },\n      viewer\n    )\n  }\n\n  const onMouseoutPoints = (e: VcPickEvent) => {\n    const { viewer, selectedDrawingActionInstance } = $services\n    if (props.editable) {\n      e.pickedFeature.primitive.pixelSize = props.pointOpts?.pixelSize * 1.0\n      removeTimeout()\n      registerTimeout(() => {\n        editorPosition.value = [0, 0, 0]\n        mouseoverPoint.value = undefined\n        showEditor.value = false\n      }, props.editorOpts?.hideDelay)\n      selectedDrawingActionInstance && (canShowDrawTip.value = true)\n    }\n\n    emit(\n      'mouseEvt',\n      {\n        type: e.type,\n        name: drawingType,\n        target: e\n      },\n      viewer\n    )\n  }\n\n  const onMouseenterEditor = evt => {\n    removeTimeout()\n  }\n\n  const onMouseleaveEditor = evt => {\n    removeTimeout()\n    registerTimeout(() => {\n      editorPosition.value = [0, 0, 0]\n      mouseoverPoint.value.pixelSize = props.pointOpts?.pixelSize * 1.0\n      mouseoverPoint.value = undefined\n      showEditor.value = false\n    }, props.editorOpts?.hideDelay)\n  }\n\n  const onPrimitiveCollectionReady = (readyObj: VcReadyObject) => {\n    ;(readyObj.cesiumObject as any)._vcId = cmpName\n  }\n\n  const onVcCollectionPointReady = function (e: VcReadyObject) {\n    const { cesiumObject: pointPrimitiveCollection } = e as any\n    const originalUpdate = pointPrimitiveCollection.update\n\n    pointPrimitiveCollection.update = function (frameState) {\n      const originalLength = frameState.commandList.length\n      originalUpdate.call(this, frameState)\n      const endLength = frameState.commandList.length\n      for (let i = originalLength; i < endLength; ++i) {\n        frameState.commandList[i].pass = Cesium['Pass'].TRANSLUCENT\n        frameState.commandList[i].renderState = Cesium['RenderState'].fromCache({\n          depthTest: {\n            enabled: false\n          },\n          depthMask: false\n        })\n      }\n    }\n  }\n\n  const onVcCollectionLabelReady = (e: VcReadyObject) => {\n    if (!props.disableDepthTest) return\n    const labelCollection = e.cesiumObject as any\n    const originalUpdate = labelCollection.update\n\n    labelCollection.update = function (frameState) {\n      const originalLength = frameState.commandList.length\n      originalUpdate.call(this, frameState)\n      const endLength = frameState.commandList.length\n      for (let i = originalLength; i < endLength; ++i) {\n        frameState.commandList[i].pass = Cesium['Pass'].OVERLAY\n        frameState.commandList[i].renderState = Cesium['RenderState'].fromCache({\n          depthTest: {\n            enabled: false\n          },\n          depthMask: false,\n          blending: Cesium.BlendingState.ALPHA_BLEND\n        })\n      }\n    }\n  }\n\n  const onVcPrimitiveReady = (e: VcReadyObject) => {\n    if (!props.disableDepthTest) return\n\n    const primitive = e.cesiumObject as any\n    const originalPrimitiveUpdate = primitive.update\n\n    primitive.update = function (frameState) {\n      const originalLength = frameState.commandList.length\n      originalPrimitiveUpdate.call(this, frameState)\n      const endLength = frameState.commandList.length\n      for (let i = originalLength; i < endLength; ++i) {\n        if (frameState.commandList[i].pass !== Cesium['Pass'].TRANSLUCENT) {\n          continue\n        }\n        frameState.commandList[i].pass = Cesium['Pass'].OPAQUE\n        frameState.commandList[i].renderState = Cesium['RenderState'].fromCache({\n          depthTest: {\n            enabled: false\n          },\n          depthMask: false,\n          blending: Cesium.BlendingState.ALPHA_BLEND\n        })\n      }\n    }\n  }\n\n  return {\n    drawingType,\n    drawTip,\n    drawTipOpts,\n    drawStatus,\n    canShowDrawTip,\n    drawTipPosition,\n    showEditor,\n    editorPosition,\n    mouseoverPoint,\n    editingPoint,\n    primitiveCollectionRef,\n    editorType,\n    onMouseoverPoints,\n    onMouseoutPoints,\n    onMouseenterEditor,\n    onMouseleaveEditor,\n    onPrimitiveCollectionReady,\n    onVcCollectionPointReady,\n    onVcPrimitiveReady,\n    onVcCollectionLabelReady\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-22 14:09:42\n * @LastEditTime: 2022-02-15 16:32:09\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\use-drawing-segment.ts\n */\nimport { VcBtn, VcTooltip } from '@vue-cesium/components/ui'\nimport { VcOverlayHtml } from '@vue-cesium/components/overlays'\nimport { VcCollectionLabel, VcCollectionPoint, VcCollectionPrimitive, VcPolygon } from '@vue-cesium/components/primitive-collections'\nimport { VcPrimitive, VcPrimitiveGroundPolyline } from '@vue-cesium/components/primitives'\nimport { VcGeometryInstance } from '@vue-cesium/components/geometry-instance'\nimport {\n  VcGeometryPolyline,\n  VcGeometryGroundPolyline,\n  VcGeometryEllipsoidOutline,\n  VcGeometryEllipsoidOutlineProps\n} from '@vue-cesium/components/geometries'\nimport { VcPostProcessStage } from '@vue-cesium/components/post-processes'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus, MeasureUnits } from '@vue-cesium/shared'\nimport {\n  calculateAreaByPostions,\n  getGeodesicDistance,\n  getPolylineSegmentHeading,\n  getHeadingPitchRoll,\n  getPolylineSegmentEndpoint,\n  getPolylineSegmentPitch,\n  makeCartesian2,\n  makeCartesian3,\n  makeCartesian3Array,\n  getFirstIntersection\n} from '@vue-cesium/utils/cesium-helpers'\nimport { VcSegmentDrawing } from '@vue-cesium/utils/drawing-types'\nimport type { VcComponentInternalInstance, VcPosition } from '@vue-cesium/utils/types'\nimport { isUndefined } from '@vue-cesium/utils/util'\nimport type { VNode } from 'vue'\nimport { computed, getCurrentInstance, h, nextTick, ref } from 'vue'\nimport useCommon from '../use-common'\nimport useDrawingAction from './use-drawing-action'\n\nexport default function (props, ctx, cmpName: string, fs?: string) {\n  const instance = getCurrentInstance() as VcComponentInternalInstance\n\n  const commonState = useCommon(props, ctx, instance)\n  if (commonState === void 0) {\n    return\n  }\n\n  const { t } = useLocale()\n  const { $services } = commonState\n  const { emit } = ctx\n\n  const innerRadii = ref<VcPosition>({ x: 0.01, y: 0.01, z: 0.01 })\n  let lightCamera: Cesium.Camera, shadowMap: Cesium.ShadowMap\n  if (cmpName === 'VcAnalysisViewshed') {\n    lightCamera = new Cesium.Camera($services.viewer.scene)\n    lightCamera.frustum.near = 1\n    lightCamera.frustum.far = 400\n    ;(lightCamera.frustum as any).fov = Cesium.Math.PI / 3\n    ;(lightCamera.frustum as any).aspectRatio = 3\n\n    shadowMap = new Cesium.ShadowMap({\n      context: ($services.viewer.scene as any).context,\n      lightCamera,\n      enabled: true,\n      isPointLight: true,\n      pointLightRadius: 400,\n      cascadesEnabled: false,\n      size: 2048,\n      softShadows: true,\n      normalOffset: false,\n      fromLightSource: false\n    } as any)\n  }\n\n  const {\n    drawingType,\n    drawTip,\n    drawTipOpts,\n    drawStatus,\n    canShowDrawTip,\n    drawTipPosition,\n    showEditor,\n    editorPosition,\n    mouseoverPoint,\n    editingPoint,\n    primitiveCollectionRef,\n    editorType,\n    onMouseoverPoints,\n    onMouseoutPoints,\n    onMouseenterEditor,\n    onMouseleaveEditor,\n    onPrimitiveCollectionReady,\n    onVcCollectionPointReady,\n    onVcCollectionLabelReady,\n    onVcPrimitiveReady\n  } = useDrawingAction(props, ctx, instance, cmpName, $services)\n\n  const renderDatas = ref<Array<VcSegmentDrawing>>([])\n  if (props.preRenderDatas && props.preRenderDatas.length) {\n    props.preRenderDatas.forEach(preRenderData => {\n      const segmentDrawing: VcSegmentDrawing = {\n        positions: makeCartesian3Array(preRenderData) as Array<Cesium.Cartesian3>,\n        show: true,\n        drawStatus: DrawStatus.AfterDraw,\n        distance: 0,\n        labels: []\n      }\n\n      cmpName === 'VcMeasurementVertical' &&\n        Object.assign(segmentDrawing, {\n          draggingPlane: new Cesium.Plane(Cesium.Cartesian3.UNIT_X, 0),\n          surfaceNormal: new Cesium.Cartesian3()\n        })\n\n      renderDatas.value.push(segmentDrawing)\n    })\n  }\n  let restorePosition\n  const computedRenderDatas = computed<Array<VcSegmentDrawing>>(() => {\n    const polylines: Array<VcSegmentDrawing> = []\n    const { Cartesian3, Cartographic, Rectangle, createGuid, defined, Math: CesiumMath, Ray } = Cesium\n    const { viewer } = $services\n\n    renderDatas.value.forEach(polylineSegment => {\n      const startPosition = polylineSegment.positions[0]\n      const endPosition = polylineSegment.positions[1]\n\n      if (Cartesian3.equals(startPosition, endPosition)) {\n        return\n      }\n\n      const labels: Array<{\n        position: Cesium.Cartesian3\n        id: string\n        text: string\n      }> = []\n      const distances: number[] = []\n      const angles: number[] = []\n\n      const distance =\n        props.polylineOpts?.arcType === 0\n          ? Cartesian3.distance(startPosition, endPosition)\n          : getGeodesicDistance(startPosition, endPosition, $services.viewer.scene.globe.ellipsoid)\n      const labelPosition = Cartesian3.midpoint(startPosition, endPosition, {} as any)\n\n      const heading = getPolylineSegmentHeading(startPosition, endPosition)\n      const pitch = getPolylineSegmentPitch(startPosition, endPosition)\n\n      const polyline: VcSegmentDrawing = {\n        ...polylineSegment,\n        distance,\n        heading,\n        pitch\n      }\n\n      if (cmpName === 'VcDrawingRectangle' || cmpName === 'VcMeasurementRectangle') {\n        const startCartographic = Cartographic.fromCartesian(startPosition, viewer.scene.globe.ellipsoid)\n        const endCartographic = Cartographic.fromCartesian(endPosition, viewer.scene.globe.ellipsoid)\n        const height = startCartographic.height\n        !props.clampToGround && (endCartographic.height = height)\n\n        const rectangle = Rectangle.fromCartesianArray(polylineSegment.positions, viewer.scene.globe.ellipsoid)\n        const rectangleArr = [\n          rectangle.west,\n          rectangle.north,\n          height,\n          rectangle.east,\n          rectangle.north,\n          height,\n          rectangle.east,\n          rectangle.south,\n          height,\n          rectangle.west,\n          rectangle.south,\n          height,\n          rectangle.west,\n          rectangle.north,\n          height\n        ]\n        const polygonPositions = Cartesian3.fromRadiansArrayHeights(rectangleArr, viewer.scene.globe.ellipsoid)\n        Object.assign(polyline, {\n          polygonPositions,\n          height\n        })\n      } else if (cmpName === 'VcDrawingRegular' || cmpName === 'VcMeasurementRegular') {\n        const startPosition = polylineSegment.positions[0]\n        const endPosition = polylineSegment.positions[1]\n\n        const hpr = getHeadingPitchRoll(startPosition, endPosition, viewer.scene)\n        if (!isUndefined(hpr) && defined(hpr)) {\n          const polygonPositions: Array<Cesium.Cartesian3> = []\n          const startCartographic = Cartographic.fromCartesian(startPosition, viewer.scene.globe.ellipsoid)\n          const endCartographic = Cartographic.fromCartesian(endPosition, viewer.scene.globe.ellipsoid)\n\n          !props.clampToGround && (endCartographic.height = startCartographic.height)\n          polygonPositions.push(Cartographic.toCartesian(endCartographic, viewer.scene.globe.ellipsoid))\n          for (let i = 0; i < (props.edge || 4) - 1; i++) {\n            const position = getPolylineSegmentEndpoint(\n              startPosition,\n              (hpr[0] += (Math.PI * 2) / (props.edge || 4)),\n              distance,\n              viewer.scene.globe.ellipsoid\n            )\n            polygonPositions.push(position)\n          }\n\n          Object.assign(polyline, {\n            polygonPositions,\n            height: startCartographic.height\n          })\n        }\n      } else if (cmpName === 'VcAnalysisViewshed') {\n        // lightCamera\n        const viewPosition = makeCartesian3(startPosition) as Cesium.Cartesian3\n        lightCamera.position = viewPosition\n        lightCamera.frustum.near = 0.001 * distance\n        lightCamera.frustum.far = distance\n        const hr = CesiumMath.toRadians(props.ellipsoidOpts.horizontalViewAngle)\n        const vr = CesiumMath.toRadians(props.ellipsoidOpts.verticalViewAngle)\n        const aspectRatio = (polyline.distance * Math.tan(hr / 2) * 2) / (distance * Math.tan(vr / 2) * 2)\n        ;(lightCamera.frustum as any).fov = hr > vr ? hr : vr\n        ;(lightCamera.frustum as any).aspectRatio = aspectRatio\n        lightCamera.setView({\n          destination: viewPosition,\n          orientation: {\n            heading: CesiumMath.toRadians(heading || 0),\n            pitch: CesiumMath.toRadians(pitch || 0),\n            roll: 0\n          }\n        })\n\n        // shadowMap\n        shadowMap._pointLightRadius = distance\n        viewer.scene.shadowMap = shadowMap\n      } else if (cmpName === 'VcAnalysisSightline') {\n        if (props.sightlineType === 'segment') {\n          const positionsNew: Array<Cesium.Cartesian3> = []\n          positionsNew.push(startPosition)\n          const objectsToExclude = []\n          const primitiveCollection: Array<Cesium.PrimitiveCollection> = (primitiveCollectionRef.value.cesiumObject as any)._primitives\n          primitiveCollection.forEach(primitive => {\n            if (primitive instanceof Cesium.PointPrimitiveCollection) {\n              objectsToExclude.push(...primitive._pointPrimitives)\n            }\n            if (primitive instanceof Cesium.Primitive) {\n              objectsToExclude.push(primitive)\n            }\n          })\n          const intersection = getFirstIntersection(startPosition, endPosition, $services.viewer, objectsToExclude)\n          if (defined(intersection)) {\n            positionsNew.push(intersection)\n          }\n          positionsNew.push(endPosition)\n          let distance = 0\n          const distances = []\n          for (let i = 0; i < positionsNew.length - 1; i++) {\n            const s = Cartesian3.distance(positionsNew[i], positionsNew[i + 1])\n            distances.push(s)\n            distance = distance + s\n          }\n          Object.assign(polyline, {\n            positions: positionsNew,\n            distance\n          })\n        } else if (props.sightlineType === 'circle') {\n          // Todo\n        }\n      } else {\n        labels.push({\n          position: labelPosition,\n          id: createGuid(),\n          text: MeasureUnits.distanceToString(distance, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n          ...props.labelOpts\n        })\n      }\n\n      if (polyline.polygonPositions && polyline.polygonPositions.length) {\n        const positions = polyline.polygonPositions.slice()\n        props.loop && positions.length > 2 && positions.push(positions[0])\n        for (let i = 0; i < positions.length - 1; i++) {\n          let s = 0\n          if (props.polylineOpts?.arcType === 0) {\n            s = getGeodesicDistance(positions[i], positions[i + 1], $services.viewer.scene.globe.ellipsoid)\n          } else {\n            s = Cartesian3.distance(positions[i], positions[i + 1])\n          }\n          distances.push(s)\n          if (s > 0 && positions.length > 2 && props.showDistanceLabel) {\n            labels.push({\n              text: MeasureUnits.distanceToString(s, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n              position: Cartesian3.midpoint(positions[i], positions[i + 1], {} as any),\n              id: createGuid(),\n              ...props.labelsOpts\n            })\n          }\n          if (positions.length > 2 && props.showAngleLabel) {\n            if (i > 0 || props.loop) {\n              const point0 = positions[i === 0 ? positions.length - 2 : i - 1]\n              const point1 = positions[i]\n              const point2 = positions[i + 1]\n              const diffrence1 = Cartesian3.subtract(point0, point1, {} as any)\n              const diffrence2 = Cartesian3.subtract(point2, point1, {} as any)\n              let angle = 0\n              if (!(Cartesian3.ZERO.equals(diffrence1) || Cartesian3.ZERO.equals(diffrence2))) {\n                angle = Cartesian3.angleBetween(diffrence1, diffrence2)\n              }\n              angles.push(angle)\n              labels.push({\n                text: MeasureUnits.angleToString(angle, props.measureUnits?.angleUnits, props.locale, props.decimals?.angle),\n                position: point1,\n                id: createGuid(),\n                ...props.labelsOpts\n              })\n            }\n          }\n        }\n\n        const area = calculateAreaByPostions(positions)\n        labels.push({\n          text: MeasureUnits.areaToString(area, props.measureUnits?.areaUnits, props.locale, props.decimals?.area),\n          position: polylineSegment.positions[0],\n          id: createGuid(),\n          ...props.labelOpts\n        })\n      }\n\n      if (props.showComponentLines) {\n        Object.assign(polyline, {\n          xyPolylinePositions: [new Cartesian3(), new Cartesian3(), new Cartesian3()],\n          xyBoxPositions: [new Cartesian3(), new Cartesian3(), new Cartesian3()],\n          xDistance: 0,\n          yDistance: 0,\n          xAngle: 0,\n          yAngle: 0\n        })\n        updateComponents(polyline)\n\n        labels.push({\n          position: polyline.xLabelPosition,\n          id: createGuid(),\n          text: MeasureUnits.distanceToString(polyline.xDistance || 0, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n          ...props.xLabelOpts\n        })\n\n        labels.push({\n          position: polyline.yLabelPosition,\n          id: createGuid(),\n          text: MeasureUnits.distanceToString(polyline.yDistance || 0, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n          ...props.yLabelOpts\n        })\n\n        labels.push({\n          position: polyline.xAnglePosition,\n          id: createGuid(),\n          text: MeasureUnits.angleToString(polyline.xAngle || 0, props.measureUnits?.angleUnits, props.locale, props.decimals?.angle),\n          ...props.xAngleLabelOpts\n        })\n\n        labels.push({\n          position: polyline.yAnglePosition,\n          id: createGuid(),\n          text: MeasureUnits.angleToString(polyline.yAngle || 0, props.measureUnits?.angleUnits, props.locale, props.decimals?.angle),\n          ...props.yAngleLabelOpts\n        })\n      }\n\n      Object.assign(polyline, {\n        labels\n      })\n\n      polylines.push(polyline)\n    })\n    return polylines\n  })\n\n  // methods\n  instance.createCesiumObject = async () => {\n    return primitiveCollectionRef\n  }\n\n  instance.mount = async () => {\n    const { viewer } = $services\n    cmpName === 'VcMeasurementDistance' && viewer.scene.preRender.addEventListener(updateLabelPosition)\n    ;(cmpName === 'VcMeasurementRegular' || cmpName === 'VcMeasurementRectangle') &&\n      viewer.scene.preRender.addEventListener(updateLabelPositionPolygon)\n    return true\n  }\n\n  instance.unmount = async () => {\n    const { viewer } = $services\n    cmpName === 'VcMeasurementDistance' && viewer.scene.preRender.removeEventListener(updateLabelPosition)\n    ;(cmpName === 'VcMeasurementRegular' || cmpName === 'VcMeasurementRectangle') &&\n      viewer.scene.preRender.removeEventListener(updateLabelPositionPolygon)\n    return true\n  }\n\n  const getHeightPosition = (polyline: VcSegmentDrawing, movement: Cesium.Cartesian2) => {\n    const { defined, SceneMode, Cartesian3, IntersectionTests, Plane, SceneTransforms, Ray } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const camera = scene.camera\n    const direction = camera.direction\n    const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n    const positions = polyline.positions\n    const p1 = positions[0]\n    let startPoint = p1\n    let endPoint = positions[1]\n    let draggingPlane = polyline.draggingPlane\n    let surfaceNormal = polyline.surfaceNormal!\n    let normal = surfaceNormal\n\n    if (scene.mode === SceneMode.COLUMBUS_VIEW) {\n      normal = Cartesian3.UNIT_X\n      const startPointCartographic = ellipsoid.cartesianToCartographic(p1, {} as any)\n      startPoint = scene.mapProjection.project(startPointCartographic, {} as any)\n      Cartesian3.fromElements(startPoint.z, startPoint.x, startPoint.y, startPoint)\n    }\n\n    let forward = Cartesian3.cross(normal, direction, {} as any) // m\n    forward = Cartesian3.cross(normal, forward, forward)\n    forward = Cartesian3.normalize(forward, forward)\n    draggingPlane = Plane.fromPointNormal(startPoint, forward, draggingPlane)\n    const ray = camera.getPickRay(movement, new Ray())\n    endPoint = IntersectionTests.rayPlane(ray, draggingPlane, {} as any)\n    if (defined(endPoint)) {\n      if (scene.mode === SceneMode.COLUMBUS_VIEW) {\n        endPoint = Cartesian3.fromElements(endPoint.y, endPoint.z, endPoint.x, endPoint)\n        const endPointCartographic = scene.mapProjection.unproject(endPoint, {} as any)\n        endPoint = ellipsoid.cartographicToCartesian(endPointCartographic, endPoint)\n      }\n\n      if (SceneTransforms.wgs84ToWindowCoordinates(scene, positions[0], {} as any).y < movement.y) {\n        surfaceNormal = Cartesian3.negate(surfaceNormal, {} as any)\n      }\n      let diffrence = Cartesian3.subtract(endPoint, p1, {} as any)\n      diffrence = Cartesian3.projectVector(diffrence, surfaceNormal, diffrence)\n      endPoint = Cartesian3.add(p1, diffrence, endPoint)\n      return endPoint\n    }\n  }\n\n  const updateComponents = (polyline: VcSegmentDrawing) => {\n    const { Cartesian3, Math: CesiumMath, defined } = Cesium\n    const { viewer } = $services\n    const ellipsoid = viewer.scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n    const startPosition = polyline.positions[0]\n    const endPosition = polyline.positions[1]\n    const startCartographic = ellipsoid.cartesianToCartographic(startPosition, {} as any)\n\n    if (!defined(startCartographic)) {\n      return\n    }\n    const endCartographic = ellipsoid.cartesianToCartographic(endPosition, {} as any)\n\n    const startHeight = startCartographic.height\n    const endHeight = endCartographic.height\n\n    let startPoint, endPoint, height1, height2\n\n    if (startHeight < endHeight) {\n      startPoint = startPosition\n      endPoint = endPosition\n      height2 = endHeight\n      height1 = startHeight\n    } else {\n      startPoint = endPosition\n      endPoint = startPosition\n      height2 = startHeight\n      height1 = endHeight\n    }\n\n    const xyPolylinePositions = polyline.xyPolylinePositions\n    if (xyPolylinePositions === undefined) {\n      return\n    }\n    xyPolylinePositions[0] = startPoint\n    xyPolylinePositions[2] = endPoint\n    let normal = ellipsoid.geodeticSurfaceNormal(startPoint, {} as any)\n    normal = Cartesian3.multiplyByScalar(normal, height2 - height1, normal)\n    const xyPoint = Cartesian3.add(startPoint, normal, xyPolylinePositions[1])\n    if (!(Cartesian3.equalsEpsilon(xyPoint, endPoint, CesiumMath.EPSILON10) && Cartesian3.equalsEpsilon(xyPoint, startPoint, CesiumMath.EPSILON10))) {\n      let diffrenceX = Cartesian3.subtract(endPoint, xyPoint, {} as any)\n      let diffrenceY = Cartesian3.subtract(startPoint, xyPoint, {} as any)\n      const distanceMin = Math.min(Cartesian3.magnitude(diffrenceX), Cartesian3.magnitude(diffrenceY))\n      const factor = 15 < distanceMin ? 0.15 * distanceMin : 0.25 * distanceMin\n      diffrenceX = Cartesian3.normalize(diffrenceX, diffrenceX)\n      diffrenceY = Cartesian3.normalize(diffrenceY, diffrenceY)\n      diffrenceX = Cartesian3.multiplyByScalar(diffrenceX, factor, diffrenceX)\n      diffrenceY = Cartesian3.multiplyByScalar(diffrenceY, factor, diffrenceY)\n      const xyBoxPositions = polyline.xyBoxPositions\n      if (xyBoxPositions === undefined) {\n        return\n      }\n      Cartesian3.add(xyPoint, diffrenceX, xyBoxPositions[0])\n      Cartesian3.add(xyBoxPositions[0], diffrenceY, xyBoxPositions[1])\n      Cartesian3.add(xyPoint, diffrenceY, xyBoxPositions[2])\n\n      polyline.xLabelPosition = Cartesian3.midpoint(xyPoint, endPoint, {} as any)\n      polyline.yLabelPosition = Cartesian3.midpoint(startPoint, xyPoint, {} as any)\n      polyline.xAnglePosition = endPoint\n      polyline.yAnglePosition = startPoint\n      const diffrence1 = Cartesian3.subtract(xyPoint, endPoint, {} as any)\n      const diffrence2 = Cartesian3.subtract(xyPoint, startPoint, {} as any)\n      let diffrence3 = Cartesian3.subtract(endPoint, startPoint, {} as any)\n      polyline.yAngle = Cartesian3.angleBetween(diffrence2, diffrence3)\n      diffrence3 = Cartesian3.negate(diffrence3, diffrence3)\n      polyline.xAngle = Cartesian3.angleBetween(diffrence1, diffrence3)\n      polyline.xDistance = Cartesian3.magnitude(diffrence1)\n      polyline.yDistance = Cartesian3.magnitude(diffrence2)\n    }\n  }\n\n  const updateLabelPositionPolygon = () => {\n    computedRenderDatas.value.forEach((polyline, index) => {\n      const positions = polyline.polygonPositions!\n      if (!(positions.length < 2)) {\n        const { defined, SceneTransforms, Cartesian2, HorizontalOrigin } = Cesium\n        const { viewer } = $services\n        const scene = viewer.scene\n\n        let startPosition = polyline.positions[0]\n        const positionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, startPosition, {} as any)\n\n        let startPositionWindow = defined(positionWindow)\n          ? Cartesian2.clone(positionWindow, {} as any)\n          : Cartesian2.fromElements(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY, {} as any)\n        let startY = startPositionWindow.y\n        const primitiveCollection = primitiveCollectionRef.value?.cesiumObject as Cesium.PrimitiveCollection\n        const labelCollection: Array<Cesium.LabelCollection> = (primitiveCollection as any)._primitives.filter(\n          v => v instanceof Cesium.LabelCollection\n        )\n        const labels = labelCollection[index]._labels\n        const labelTotalLength = labels[labels.length - 1]\n        for (let i = 1; i < positions.length; i++) {\n          const positionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, positions[i], {} as any)\n          if (defined(positionWindow)) {\n            const l = (startPositionWindow.y - positionWindow.y) / (positionWindow.x - startPositionWindow.x)\n            const label = labels[i - 1]\n            if (label && label !== labelTotalLength) {\n              label.horizontalOrigin = 0 < l ? HorizontalOrigin.LEFT : HorizontalOrigin.RIGHT\n            }\n\n            if (positionWindow.y < startY) {\n              startY = positionWindow.y\n              startPosition = positions[i]\n            }\n\n            startPositionWindow = Cartesian2.clone(positionWindow, startPositionWindow)\n          }\n\n          polyline.drawStatus === DrawStatus.AfterDraw && (labelTotalLength.position = startPosition)\n        }\n      }\n    })\n  }\n\n  const updateLabelPosition = () => {\n    computedRenderDatas.value.forEach((polyline, index) => {\n      const { defined, SceneTransforms, HorizontalOrigin } = Cesium\n      const { viewer } = $services\n      const scene = viewer.scene\n      const primitiveCollection = primitiveCollectionRef.value?.cesiumObject as Cesium.PrimitiveCollection\n      const positions = polyline.positions\n      const startPosition = positions[0]\n      const endPosition = positions[1]\n      const startPositionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, startPosition, {} as any)\n      const endPositionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, endPosition, {} as any)\n      if (defined(startPositionWindow) && defined(endPositionWindow)) {\n        const labelCollection: Array<Cesium.LabelCollection> = (primitiveCollection as any)._primitives.filter(\n          v => v instanceof Cesium.LabelCollection\n        )\n        if (labelCollection.length) {\n          const label = labelCollection[index].get(0)\n          let yLabel: Cesium.Label | undefined,\n            xAngleLabel: Cesium.Label | undefined,\n            yPixelOffset: Cesium.Cartesian2 | undefined,\n            xPixelOffset: Cesium.Cartesian2 | undefined\n          if (props.showComponentLines) {\n            yLabel = labelCollection[index].get(2)\n            xAngleLabel = labelCollection[index].get(3)\n            yPixelOffset = makeCartesian2(props.yLabelOpts?.pixelOffset) as Cesium.Cartesian2\n            xPixelOffset = makeCartesian2(props.xAngleLabelOpts?.pixelOffset) as Cesium.Cartesian2\n          }\n\n          if ((startPositionWindow.y - endPositionWindow.y) / (endPositionWindow.x - startPositionWindow.x) > 0) {\n            if (!isUndefined(yLabel) && !isUndefined(yPixelOffset)) {\n              yPixelOffset.x = -9\n              yLabel.pixelOffset = yPixelOffset\n              yLabel.horizontalOrigin = HorizontalOrigin.RIGHT\n            }\n\n            if (!isUndefined(xAngleLabel) && !isUndefined(xPixelOffset)) {\n              xPixelOffset.x = 12\n              xAngleLabel.pixelOffset = xPixelOffset\n              xAngleLabel.horizontalOrigin = HorizontalOrigin.LEFT\n            }\n\n            label.horizontalOrigin = HorizontalOrigin.LEFT\n          } else {\n            if (!isUndefined(yLabel) && !isUndefined(yPixelOffset)) {\n              yPixelOffset.x = 9\n              yLabel.pixelOffset = yPixelOffset\n              yLabel.horizontalOrigin = HorizontalOrigin.LEFT\n            }\n\n            if (!isUndefined(xAngleLabel) && !isUndefined(xPixelOffset)) {\n              xPixelOffset.x = -12\n              xAngleLabel.pixelOffset = xPixelOffset\n              xAngleLabel.horizontalOrigin = HorizontalOrigin.RIGHT\n            }\n\n            label.horizontalOrigin = HorizontalOrigin.RIGHT\n          }\n        }\n      }\n    })\n  }\n\n  const makeHeightPositions = (polyline: VcSegmentDrawing, position: Cesium.Cartesian3) => {\n    const { defined, defaultValue, Cartesian3 } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const positions = polyline.positions\n    positions[0] = position\n    const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n    const postionCartographic = ellipsoid.cartesianToCartographic(position, {} as any)\n    const globe = scene.globe\n    postionCartographic.height = defined(globe) ? defaultValue(globe.getHeight(postionCartographic), 0) : 0\n    positions[1] = ellipsoid.cartographicToCartesian(postionCartographic, {} as any)\n    polyline.distance = Cartesian3.distance(positions[0], positions[1])\n    polyline.labelPosition = Cartesian3.midpoint(positions[0], positions[1], {} as any)\n  }\n\n  const startNew = () => {\n    const { Cartesian3, Plane } = Cesium\n    const polyline: VcSegmentDrawing = {\n      positions: [new Cartesian3(), new Cartesian3()],\n      show: false,\n      drawStatus: DrawStatus.BeforeDraw,\n      distance: 0,\n      labels: []\n    }\n    if (cmpName === 'VcAnalysisViewshed') {\n      clear()\n    }\n\n    cmpName === 'VcMeasurementVertical' &&\n      Object.assign(polyline, {\n        draggingPlane: new Plane(Cartesian3.UNIT_X, 0),\n        surfaceNormal: new Cartesian3()\n      })\n\n    renderDatas.value.push(polyline)\n    drawStatus.value = DrawStatus.BeforeDraw\n    canShowDrawTip.value = true\n    drawTip.value = drawTipOpts.value.drawingTipStart\n  }\n\n  const stop = () => {\n    if (drawStatus.value === DrawStatus.Drawing) {\n      renderDatas.value.pop()\n    }\n    drawStatus.value = DrawStatus.BeforeDraw\n    canShowDrawTip.value = false\n    drawTipPosition.value = [0, 0, 0]\n  }\n\n  const handleMouseClick = (movement: Cesium.Cartesian2, options?) => {\n    const { viewer, drawingFabInstance, selectedDrawingActionInstance, getWorldPosition } = $services\n\n    if (options.button === 2 && options.ctrl) {\n      // 取消绘制\n      const drawingsOption = (drawingFabInstance?.proxy as any).drawingActionInstances.find(v => v.name === drawingType)\n      ;(drawingFabInstance?.proxy as any).toggleAction(drawingsOption)\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            name: drawingType,\n            finished: true,\n            windowPoistion: movement,\n            type: 'cancel'\n          },\n          viewer\n        )\n      })\n      return\n    }\n\n    if (drawStatus.value === DrawStatus.AfterDraw) {\n      startNew()\n    }\n\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n    const polyline: VcSegmentDrawing = renderDatas.value[index]\n    const positions = polyline.positions\n\n    if (options.button === 2 && editingPoint.value) {\n      // 放弃编辑\n      ;(drawingFabInstance?.proxy as any).editingActionName = undefined\n      polyline.positions[editingPoint.value._index] = restorePosition\n      drawStatus.value = DrawStatus.AfterDraw\n      polyline.drawStatus = DrawStatus.AfterDraw\n      editingPoint.value = undefined\n      drawTip.value = drawTipOpts.value.drawingTipStart\n      if (cmpName === 'VcMeasurementHeight') {\n        makeHeightPositions(polyline, restorePosition)\n      }\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          Object.assign(\n            {\n              name: drawingType,\n              index,\n              renderDatas,\n              finished: true,\n              windowPoistion: movement,\n              type: 'cancel'\n            },\n            computedRenderDatas.value[index]\n          ),\n          viewer\n        )\n      })\n      return\n    }\n\n    if (options.button !== 0) {\n      return\n    }\n\n    const { defined } = Cesium\n    let type = 'new'\n    let emitPosition\n    let finished = false\n    if (drawStatus.value === DrawStatus.BeforeDraw) {\n      const scene = viewer.scene\n      const position = getWorldPosition(scene, movement, {} as any)\n\n      if (!defined(position)) {\n        return\n      }\n      positions[0] = position\n      positions[1] = position\n      polyline.show = true\n      drawStatus.value = DrawStatus.Drawing\n      polyline.drawStatus = DrawStatus.Drawing\n      drawTip.value = drawTipOpts.value.drawingTipEnd\n      emitPosition = position\n      finished = false\n\n      if (cmpName === 'VcMeasurementVertical') {\n        const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n        polyline.surfaceNormal = ellipsoid.geodeticSurfaceNormal(position, polyline.surfaceNormal)\n      }\n\n      if (cmpName === 'VcMeasurementHeight') {\n        makeHeightPositions(polyline, position)\n        finished = true\n\n        polyline.drawStatus = DrawStatus.AfterDraw\n        drawStatus.value = DrawStatus.AfterDraw\n        drawTip.value = drawTipOpts.value.drawingTipStart\n\n        if (props.mode === 1) {\n          ;(drawingFabInstance?.proxy as any).toggleAction(selectedDrawingActionInstance)\n        }\n      }\n    } else {\n      // if (cmpName !== 'VcMeasurementHeight') {\n\n      // }\n      polyline.drawStatus = DrawStatus.AfterDraw\n      drawStatus.value = DrawStatus.AfterDraw\n\n      if (editingPoint.value) {\n        editingPoint.value = undefined\n        ;(drawingFabInstance?.proxy as any).editingActionName = undefined\n        canShowDrawTip.value = false\n        drawTipPosition.value = [0, 0, 0]\n        type = editorType.value\n\n        if (selectedDrawingActionInstance) {\n          drawTip.value = drawTipOpts.value.drawingTipStart\n          canShowDrawTip.value = true\n        }\n      } else {\n        if (props.mode === 1) {\n          ;(drawingFabInstance?.proxy as any).toggleAction(selectedDrawingActionInstance)\n        }\n      }\n\n      finished = true\n      emitPosition = polyline.positions[1]\n    }\n\n    nextTick(() => {\n      emit(\n        'drawEvt',\n        Object.assign(\n          {\n            index,\n            renderDatas,\n            name: drawingType,\n            finished,\n            position: emitPosition,\n            windowPoistion: movement,\n            type\n          },\n          computedRenderDatas.value[index]\n        ),\n        viewer\n      )\n    })\n  }\n\n  const handleMouseMove = movement => {\n    const { viewer, getWorldPosition } = $services\n    const scene = viewer.scene\n    const position = getWorldPosition(scene, movement, {} as any)\n    const { defined, Cartographic } = Cesium\n    if (!defined(position)) {\n      return\n    }\n\n    drawTipPosition.value = position\n\n    if (drawStatus.value !== DrawStatus.Drawing) {\n      return\n    }\n\n    if (cmpName === 'VcMeasurementVertical' && scene.mode === Cesium.SceneMode.SCENE2D) {\n      return\n    }\n\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n    const polyline: VcSegmentDrawing = renderDatas.value[index]\n\n    if (cmpName === 'VcMeasurementVertical') {\n      const heightPostion = getHeightPosition(polyline, movement)\n\n      if (!isUndefined(heightPostion) && defined(heightPostion)) {\n        const positions = polyline.positions\n        positions[editingPoint.value ? editingPoint.value._index : 1] = heightPostion\n      }\n    } else if (cmpName === 'VcMeasurementHeight') {\n      makeHeightPositions(polyline, position)\n    } else if (\n      cmpName === 'VcDrawingRectangle' ||\n      cmpName === 'VcDrawingRegular' ||\n      cmpName === 'VcMeasurementRegular' ||\n      cmpName === 'VcMeasurementRectangle'\n    ) {\n      const positions = polyline.positions\n      const startPosition = positions[0]\n      const startCartographic = Cartographic.fromCartesian(startPosition, viewer.scene.globe.ellipsoid)\n      const endCartographic = Cartographic.fromCartesian(position, viewer.scene.globe.ellipsoid)\n      !props.clampToGround && (endCartographic.height = startCartographic.height)\n      positions[editingPoint.value ? editingPoint.value._index : 1] = Cartographic.toCartesian(endCartographic, viewer.scene.globe.ellipsoid)\n    } else if (cmpName === 'VcAnalysisSightline') {\n      // if (props.sightlineType === 'segment') {\n\n      // }\n      const positions = polyline.positions\n      if (editingPoint.value) {\n        const index = editingPoint.value._index > 0 ? 1 : 0\n        positions[index] = position\n      } else {\n        positions[1] = position\n      }\n    } else {\n      const positions = polyline.positions\n      positions[editingPoint.value ? editingPoint.value._index : 1] = position\n    }\n\n    nextTick(() => {\n      emit(\n        'drawEvt',\n        Object.assign(\n          {\n            index,\n            renderDatas,\n            name: drawingType,\n            finished: false,\n            position: polyline.positions[1],\n            windowPoistion: movement,\n            type: editingPoint.value ? editorType : 'new'\n          },\n          computedRenderDatas.value[index]\n        ),\n        viewer\n      )\n    })\n  }\n\n  const onEditorClick = e => {\n    editorPosition.value = [0, 0, 0]\n    showEditor.value = false\n\n    if (!props.editable) {\n      return\n    }\n\n    editorType.value = e\n\n    const { viewer, drawingFabInstance } = $services\n    if (e === 'move') {\n      drawTip.value = drawTipOpts.value.drawingTipEditing\n      drawStatus.value = DrawStatus.Drawing\n      editingPoint.value = mouseoverPoint.value\n      restorePosition = renderDatas.value[editingPoint.value._vcPolylineIndx].positions[editingPoint.value._index]\n      canShowDrawTip.value = true\n      ;(drawingFabInstance?.proxy as any).editingActionName = drawingType\n    } else if (e === 'remove') {\n      const index = mouseoverPoint.value._vcPolylineIndx\n      const polyline = renderDatas.value[index]\n      polyline.positions.splice(mouseoverPoint.value._index, 1)\n    } else if (e === 'removeAll') {\n      const index = mouseoverPoint.value._vcPolylineIndx\n      renderDatas.value.splice(index, 1)\n    } else {\n      const index = mouseoverPoint.value._vcPolylineIndx\n      const polyline = renderDatas.value[index]\n      props.editorOpts?.[e]?.callback?.(index, polyline)\n    }\n\n    emit(\n      'editorEvt',\n      {\n        type: e,\n        renderDatas,\n        name: drawingType,\n        index: mouseoverPoint.value._vcPolylineIndx\n      },\n      viewer\n    )\n  }\n\n  const clear = () => {\n    renderDatas.value = []\n    stop()\n  }\n\n  // expose public methods\n  const publicMethods = { renderDatas, startNew, stop, clear, handleMouseClick, handleMouseMove }\n  Object.assign(instance.proxy, publicMethods)\n\n  return () => {\n    const {\n      ColorGeometryInstanceAttribute,\n      PolylineMaterialAppearance,\n      Ellipsoid,\n      createGuid,\n      defaultValue,\n      Math: CesiumMath,\n      Matrix4,\n      Cartesian3,\n      Transforms,\n      HeadingPitchRoll,\n      PerInstanceColorAppearance,\n      Cartesian4,\n      Cartesian2\n    } = Cesium\n\n    const polylineOpts = {\n      ...props.polylineOpts,\n      vertexFormat: PolylineMaterialAppearance.VERTEX_FORMAT,\n      ellipsoid: defaultValue(props.polylineOpts?.ellipsoid, Ellipsoid.WGS84)\n    }\n    props.clampToGround && delete polylineOpts.arcType\n    const children: Array<VNode> = []\n    computedRenderDatas.value.forEach((polyline, index) => {\n      const isRegular =\n        cmpName === 'VcDrawingRectangle' ||\n        cmpName === 'VcDrawingRegular' ||\n        cmpName === 'VcMeasurementRegular' ||\n        cmpName === 'VcMeasurementRectangle'\n      const positions = isRegular ? polyline.polygonPositions?.slice() : polyline.positions\n      isRegular && positions?.push(positions[0])\n      if (positions?.length && positions?.length > 1) {\n        // polyline\n        children.push(\n          h(\n            props.clampToGround ? VcPrimitiveGroundPolyline : VcPrimitive,\n            {\n              ...props.primitiveOpts,\n              show: (polyline.show && props.primitiveOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing\n            },\n            () =>\n              h(\n                VcGeometryInstance,\n                {\n                  id: createGuid()\n                },\n                () =>\n                  h(props.clampToGround ? VcGeometryGroundPolyline : VcGeometryPolyline, {\n                    positions: positions,\n                    ...polylineOpts\n                  })\n              )\n          )\n        )\n        // viewshed\n        if (cmpName === 'VcAnalysisViewshed') {\n          // ellipsoid\n          const { viewer } = $services\n\n          const modelMatrix = Matrix4.fromTranslationQuaternionRotationScale(\n            polyline.positions[0],\n            Transforms.headingPitchRollQuaternion(\n              polyline.positions[0],\n              HeadingPitchRoll.fromDegrees(polyline.heading! - props.ellipsoidOpts.horizontalViewAngle, polyline.pitch!, 0),\n              viewer.scene.globe.ellipsoid\n            ),\n            new Cartesian3(1, 1, 1)\n          )\n          const color = ColorGeometryInstanceAttribute.fromColor(props.ellipsoidOpts.color)\n          children.push(\n            h(VcPostProcessStage, {\n              fragmentShader: fs,\n              uniforms: {\n                shadowMap_textureCube: function () {\n                  shadowMap.update(viewer.scene.frameState)\n                  return shadowMap._shadowMapTexture\n                },\n                shadowMap_matrix: function () {\n                  shadowMap.update(viewer.scene.frameState)\n                  return shadowMap._shadowMapMatrix\n                },\n                shadowMap_lightPositionEC: function () {\n                  shadowMap.update(viewer.scene.frameState)\n                  return shadowMap._lightPositionEC\n                },\n                shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness: function () {\n                  shadowMap.update(viewer.scene.frameState)\n                  const bias = shadowMap._pointBias\n                  return Cartesian4.fromElements(bias.normalOffsetScale, shadowMap._distance, shadowMap.maximumDistance, 0, new Cartesian4())\n                },\n                shadowMap_texelSizeDepthBiasAndNormalShadingSmooth: function () {\n                  shadowMap.update(viewer.scene.frameState)\n                  const bias = shadowMap._pointBias\n                  const scratchTexelStepSize = new Cartesian2()\n                  const texelStepSize = scratchTexelStepSize\n                  texelStepSize.x = 1.0 / shadowMap._textureSize.x\n                  texelStepSize.y = 1.0 / shadowMap._textureSize.y\n                  return Cartesian4.fromElements(texelStepSize.x, texelStepSize.y, bias.depthBias, bias.normalShadingSmooth, new Cartesian4())\n                },\n                camera_projection_matrix: lightCamera.frustum.projectionMatrix,\n                camera_view_matrix: lightCamera.viewMatrix,\n                vc_viewDistance: function () {\n                  return polyline.distance\n                },\n                vc_visibleAreaColor: props.visibleAreaColor || Cesium.Color.LIME,\n                vc_invisibleAreaColor: props.invisibleAreaColor || Cesium.Color.RED\n              }\n            })\n          )\n          const radii: VcPosition = { x: polyline.distance, y: polyline.distance, z: polyline.distance }\n          children.push(\n            h(\n              VcPrimitive,\n              {\n                show: (polyline.show && props.ellipsoidOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing,\n                enableMouseEvent: props.enableMouseEvent,\n                appearance: new PerInstanceColorAppearance({\n                  flat: true\n                }),\n                asynchronous: false\n              },\n              () => [\n                h(\n                  VcGeometryInstance,\n                  {\n                    id: createGuid(),\n                    modelMatrix,\n                    attributes: {\n                      color\n                    }\n                  },\n                  () =>\n                    h(VcGeometryEllipsoidOutline, {\n                      radii: radii,\n                      minimumClock: CesiumMath.toRadians(-props.ellipsoidOpts.horizontalViewAngle / 2),\n                      maximumClock: CesiumMath.toRadians(props.ellipsoidOpts.horizontalViewAngle / 2),\n                      minimumCone: CesiumMath.toRadians(props.ellipsoidOpts.verticalViewAngle + 7.75),\n                      maximumCone: CesiumMath.toRadians(180 - props.ellipsoidOpts.verticalViewAngle - 7.75),\n                      subdivisions: 256,\n                      stackPartitions: 64,\n                      slicePartitions: 64\n                    } as VcGeometryEllipsoidOutlineProps)\n                )\n              ]\n            )\n          )\n          children.push(\n            h(\n              VcPrimitive,\n              {\n                show: (polyline.show && props.ellipsoidOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing,\n                enableMouseEvent: props.enableMouseEvent,\n                appearance: new PerInstanceColorAppearance({\n                  flat: true\n                }),\n                asynchronous: false\n              },\n              () =>\n                h(\n                  VcGeometryInstance,\n                  {\n                    id: createGuid(),\n                    modelMatrix,\n                    attributes: {\n                      color\n                    }\n                  },\n                  () =>\n                    h(VcGeometryEllipsoidOutline, {\n                      radii: radii,\n                      innerRadii: innerRadii.value,\n                      minimumClock: CesiumMath.toRadians(-props.ellipsoidOpts.horizontalViewAngle / 2),\n                      maximumClock: CesiumMath.toRadians(props.ellipsoidOpts.horizontalViewAngle / 2),\n                      minimumCone: CesiumMath.toRadians(props.ellipsoidOpts.verticalViewAngle + 7.75),\n                      maximumCone: CesiumMath.toRadians(180 - props.ellipsoidOpts.verticalViewAngle - 7.75),\n                      subdivisions: 128,\n                      stackPartitions: 10,\n                      slicePartitions: 8\n                    } as VcGeometryEllipsoidOutlineProps)\n                )\n            )\n          )\n        }\n      }\n\n      if (polyline.polygonPositions && polyline.polygonPositions.length > 2) {\n        // polygon\n        children.push(\n          h(VcPolygon, {\n            positions: positions,\n            onReady: onVcPrimitiveReady,\n            ...props.polygonOpts,\n            show: polyline.show && props?.polygonOpts?.show\n          })\n        )\n      }\n      if (polyline.xyPolylinePositions && polyline.xyPolylinePositions.length > 1) {\n        // xyPolyline\n        children.push(\n          h(\n            VcPrimitive,\n            {\n              ...props.primitiveOpts,\n              show: (polyline.show && props.primitiveOpts) || props.editable || polyline.drawStatus === DrawStatus.Drawing\n            },\n            () =>\n              h(\n                VcGeometryInstance,\n                {\n                  id: createGuid()\n                },\n                () =>\n                  h(VcGeometryPolyline, {\n                    positions: polyline.xyPolylinePositions,\n                    ...polylineOpts\n                  })\n              )\n          )\n        )\n      }\n      if (polyline.xyBoxPositions && polyline.xyBoxPositions.length > 1) {\n        // xyBox\n        children.push(\n          h(\n            VcPrimitive,\n            {\n              ...props.primitiveOpts,\n              show: (polyline.show && props.primitiveOpts) || props.editable || polyline.drawStatus === DrawStatus.Drawing\n            },\n            () =>\n              h(\n                VcGeometryInstance,\n                {\n                  id: createGuid()\n                },\n                () =>\n                  h(VcGeometryPolyline, {\n                    positions: polyline.xyBoxPositions,\n                    ...polylineOpts\n                  })\n              )\n          )\n        )\n      }\n      // point\n      children.push(\n        h(VcCollectionPoint, {\n          enableMouseEvent: props.enableMouseEvent,\n          show: polyline.show,\n          points: polyline.positions.map((position, subIndex) => ({\n            position: position,\n            id: createGuid(),\n            _vcPolylineIndx: index, // for editor\n            ...props.pointOpts,\n            show:\n              (props.pointOpts?.show || props.editable || polyline.drawStatus === DrawStatus.Drawing) &&\n              (cmpName === 'VcAnalysisSightline' && polyline.positions.length === 3 ? subIndex !== 1 : true)\n          })),\n          onMouseover: onMouseoverPoints,\n          onMouseout: onMouseoutPoints,\n          onReady: onVcCollectionPointReady\n        })\n      )\n\n      // labels\n      cmpName.includes('VcMeasurement') &&\n        children.push(\n          h(VcCollectionLabel, {\n            enableMouseEvent: props.enableMouseEvent,\n            show: polyline.show,\n            labels: polyline.labels,\n            onReady: onVcCollectionLabelReady\n          })\n        )\n    })\n\n    if (props.drawtip?.show && canShowDrawTip.value) {\n      const { viewer } = $services\n      children.push(\n        h(\n          VcOverlayHtml,\n          {\n            position: drawTipPosition.value,\n            pixelOffset: props.drawtip?.pixelOffset,\n            teleport: {\n              to: viewer.container\n            }\n          },\n          () =>\n            h(\n              'div',\n              {\n                class: 'vc-drawtip vc-tooltip--style'\n              },\n              drawTip.value\n            )\n        )\n      )\n    }\n\n    if (showEditor.value) {\n      const buttons: Array<VNode> = []\n      if (mouseoverPoint.value) {\n        const editorOpts = props.editorOpts\n        for (const key in editorOpts) {\n          if (!Array.isArray(editorOpts[key]) && typeof editorOpts[key] !== 'number') {\n            const opts = {\n              ...editorOpts[key]\n            }\n            delete opts.color\n\n            buttons.push(\n              h(\n                VcBtn,\n                {\n                  style: { color: editorOpts[key].color, background: editorOpts[key].background },\n                  ...opts,\n                  onclick: onEditorClick.bind(undefined, key)\n                },\n                () =>\n                  h(\n                    VcTooltip,\n                    {\n                      ...editorOpts[key].tooltip\n                    },\n                    () => h('strong', null, editorOpts[key].tooltip?.tip || t(`vc.measurement.editor.${key}`))\n                  )\n              )\n            )\n          }\n        }\n      }\n\n      const { viewer } = $services\n      children.push(\n        h(\n          VcOverlayHtml,\n          {\n            position: editorPosition.value,\n            pixelOffset: props.editorOpts?.pixelOffset,\n            teleport: {\n              to: viewer.container\n            },\n            onMouseenter: onMouseenterEditor,\n            onMouseleave: onMouseleaveEditor\n          },\n          () =>\n            h(\n              'div',\n              {\n                class: 'vc-editor'\n              },\n              buttons\n            )\n        )\n      )\n    }\n    return h(\n      VcCollectionPrimitive,\n      {\n        ref: primitiveCollectionRef,\n        show: props.show,\n        onReady: onPrimitiveCollectionReady\n      },\n      () => children\n    )\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-02-13 00:36:35\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\distance\\index.ts\n */\nimport { defineComponent } from 'vue'\nimport useDrawingSegment from '@vue-cesium/composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from '@vue-cesium/shared'\nimport type { VcLabelProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\n\nexport default defineComponent({\n  name: 'VcMeasurementDistance',\n  props: {\n    ...useDrawingActionProps,\n    showComponentLines: {\n      type: Boolean,\n      default: false\n    },\n    measureUnits: Object as PropType<MeasureUnits>,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    labelOpts: Object as PropType<VcLabelProps>,\n    xLabelOpts: Object as PropType<VcLabelProps>,\n    xAngleLabelOpts: Object as PropType<VcLabelProps>,\n    yLabelOpts: Object as PropType<VcLabelProps>,\n    yAngleLabelOpts: Object as PropType<VcLabelProps>,\n    locale: String,\n    decimals: Object,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcMeasurementDistance')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-21 10:43:32\n * @LastEditTime: 2022-02-18 20:39:09\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\use-drawing-polyline.ts\n */\nimport { VcPrimitive, VcPrimitiveGroundPolyline } from '@vue-cesium/components/primitives'\nimport { VcGeometryInstance } from '@vue-cesium/components/geometry-instance'\nimport { VcGeometryPolyline, VcGeometryGroundPolyline, VcGeometryPolylineProps } from '@vue-cesium/components/geometries'\nimport { VcOverlayHtml } from '@vue-cesium/components/overlays'\nimport { VcCollectionLabel, VcCollectionPoint, VcCollectionPrimitive, VcLabelProps, VcPolygon } from '@vue-cesium/components/primitive-collections'\nimport { VcBtn, VcTooltip } from '@vue-cesium/components/ui'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus, MeasureUnits } from '@vue-cesium/shared'\nimport { calculateAreaByPostions, getFirstIntersection, getGeodesicDistance, makeCartesian3Array } from '@vue-cesium/utils/cesium-helpers'\nimport type { VcPolylineDrawing } from '@vue-cesium/utils/drawing-types'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport type { VNode } from 'vue'\nimport { computed, getCurrentInstance, nextTick, ref, h } from 'vue'\nimport useCommon from '../use-common'\nimport useDrawingAction from './use-drawing-action'\n\nexport default function (props, ctx, cmpName: string) {\n  const instance = getCurrentInstance() as VcComponentInternalInstance\n\n  const commonState = useCommon(props, ctx, instance)\n  if (commonState === void 0) {\n    return\n  }\n\n  const { t } = useLocale()\n  const { $services } = commonState\n  const { emit } = ctx\n\n  const {\n    drawingType,\n    drawTip,\n    drawTipOpts,\n    drawStatus,\n    canShowDrawTip,\n    drawTipPosition,\n    showEditor,\n    editorPosition,\n    mouseoverPoint,\n    editingPoint,\n    primitiveCollectionRef,\n    editorType,\n    onMouseoverPoints,\n    onMouseoutPoints,\n    onMouseenterEditor,\n    onMouseleaveEditor,\n    onPrimitiveCollectionReady,\n    onVcCollectionPointReady,\n    onVcCollectionLabelReady,\n    onVcPrimitiveReady\n  } = useDrawingAction(props, ctx, instance, cmpName, $services)\n\n  let lastClickPosition: Cesium.Cartesian2\n  let restorePosition\n  const mouseDelta = 10\n\n  const renderDatas = ref<Array<VcPolylineDrawing>>([])\n\n  if (props.preRenderDatas && props.preRenderDatas.length) {\n    props.preRenderDatas.forEach(preRenderData => {\n      const polylineDrawing: VcPolylineDrawing = {\n        show: true,\n        positions: makeCartesian3Array(preRenderData) as Array<Cesium.Cartesian3>,\n        tempPositions: [],\n        drawStatus: DrawStatus.AfterDraw,\n        loop: props.loop,\n        distance: 0,\n        area: 0,\n        distances: [],\n        labels: [],\n        angles: []\n      }\n\n      renderDatas.value.push(polylineDrawing)\n    })\n  }\n\n  const computedRenderDatas = computed<Array<VcPolylineDrawing>>(() => {\n    const { Cartesian3, createGuid, defined } = Cesium\n    const polylines: Array<VcPolylineDrawing> = []\n    renderDatas.value.forEach((polyline, index) => {\n      const labels: Array<VcLabelProps> = []\n      const distances: number[] = []\n      const angles: number[] = []\n      let distance = 0\n      const dashedLines: Array<{\n        positions: Array<Cesium.Cartesian3>\n      }> = []\n      const positions = polyline.positions.slice()\n      if (cmpName === 'VcAnalysisSightline') {\n        const observationPoint = positions.shift()\n        const destinationPoints = positions\n        observationPoint &&\n          destinationPoints.forEach(destinationPoint => {\n            const positionsNew: Array<Cesium.Cartesian3> = []\n            positionsNew.push(observationPoint)\n\n            const objectsToExclude = []\n            const primitiveCollection: Array<Cesium.PrimitiveCollection> = (primitiveCollectionRef.value.cesiumObject as any)._primitives\n            primitiveCollection.forEach(primitive => {\n              if (primitive instanceof Cesium.PointPrimitiveCollection) {\n                objectsToExclude.push(...primitive._pointPrimitives)\n              }\n              if (primitive instanceof Cesium.Primitive) {\n                objectsToExclude.push(primitive)\n              }\n            })\n            const intersection = getFirstIntersection(observationPoint, destinationPoint, $services.viewer, objectsToExclude)\n            if (defined(intersection)) {\n              positionsNew.push(intersection)\n            }\n            positionsNew.push(destinationPoint)\n            let distance = 0\n            const distances = []\n            for (let i = 0; i < positionsNew.length - 1; i++) {\n              const s = Cartesian3.distance(positionsNew[i], positionsNew[i + 1])\n              distances.push(s)\n              distance = distance + s\n            }\n            polylines.push({\n              ...polyline,\n              positions: positionsNew,\n              distance,\n              distances\n            })\n          })\n      } else {\n        props.loop && positions.length > 2 && positions.push(positions[0])\n        for (let i = 0; i < positions.length - 1; i++) {\n          let s = 0\n          if (props.polylineOpts?.arcType === 0) {\n            s = getGeodesicDistance(positions[i], positions[i + 1], $services.viewer.scene.globe.ellipsoid)\n          } else {\n            s = Cartesian3.distance(positions[i], positions[i + 1])\n          }\n          distances.push(s)\n          distance = distance + s\n          if (s > 0 && positions.length > 2 && props.showDistanceLabel) {\n            labels.push({\n              text: MeasureUnits.distanceToString(s, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n              position: Cartesian3.midpoint(positions[i], positions[i + 1], {} as any),\n              id: createGuid(),\n              ...props.labelsOpts\n            })\n          }\n          if (positions.length > 2 && props.showAngleLabel) {\n            if (i > 0 || props.loop) {\n              const point0 = positions[i === 0 ? positions.length - 2 : i - 1]\n              const point1 = positions[i]\n              const point2 = positions[i + 1]\n              const diffrence1 = Cartesian3.subtract(point0, point1, {} as any)\n              const diffrence2 = Cartesian3.subtract(point2, point1, {} as any)\n              let angle = 0\n              if (!(Cartesian3.ZERO.equals(diffrence1) || Cartesian3.ZERO.equals(diffrence2))) {\n                angle = Cartesian3.angleBetween(diffrence1, diffrence2)\n              }\n              angles.push(angle)\n              labels.push({\n                text: MeasureUnits.angleToString(angle, props.measureUnits?.angleUnits, props.locale, props.decimals?.angle),\n                position: point1,\n                id: createGuid(),\n                ...props.labelsOpts\n              })\n            }\n          }\n\n          if (props.showDashedLine) {\n            dashedLines.push({\n              positions: [positions[i], getEndPostion(positions[i])]\n            })\n\n            if (i === positions.length - 2) {\n              dashedLines.push({\n                positions: [positions[i + 1], getEndPostion(positions[i + 1])]\n              })\n            }\n          }\n        }\n        const area = calculateAreaByPostions(positions)\n\n        if (cmpName.includes('Area')) {\n          labels.push({\n            text: MeasureUnits.areaToString(area, props.measureUnits?.areaUnits, props.locale, props.decimals?.area),\n            position: positions[positions.length - 1],\n            id: createGuid(),\n            ...props.labelOpts\n          })\n        } else {\n          labels.push({\n            text: MeasureUnits.distanceToString(distance, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n            position: positions[positions.length - 1],\n            id: createGuid(),\n            ...props.labelOpts\n          })\n        }\n\n        polylines.push({\n          ...polyline,\n          labels,\n          distance,\n          distances,\n          area,\n          angles,\n          dashedLines\n        })\n      }\n    })\n    return polylines\n  })\n  // methods\n  instance.mount = async () => {\n    const { viewer } = $services\n    cmpName.includes('VcMeasurement') && viewer.scene.preRender.addEventListener(updateLabelPosition)\n    return true\n  }\n  instance.unmount = async () => {\n    const { viewer } = $services\n    cmpName.includes('VcMeasurement') && viewer.scene.preRender.removeEventListener(updateLabelPosition)\n    return true\n  }\n\n  const getEndPostion = (position: Cesium.Cartesian3) => {\n    const { defined, defaultValue } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const globe = scene.globe\n    const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n    const positionCartographic = ellipsoid.cartesianToCartographic(position)\n    positionCartographic.height = defined(globe) ? defaultValue(globe.getHeight(positionCartographic), 0) : 0\n    return ellipsoid.cartographicToCartesian(positionCartographic)\n  }\n\n  const updateLabelPosition = () => {\n    computedRenderDatas.value.forEach((polyline, index) => {\n      const positions = polyline.positions\n      if (!(positions.length < 2)) {\n        const { defined, SceneTransforms, Cartesian2, HorizontalOrigin } = Cesium\n        const { viewer } = $services\n        const scene = viewer.scene\n\n        let startPosition = positions[0]\n        const positionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, startPosition, {} as any)\n\n        let startPositionWindow = defined(positionWindow)\n          ? Cartesian2.clone(positionWindow, {} as any)\n          : Cartesian2.fromElements(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY, {} as any)\n        let startY = startPositionWindow.y\n        const primitiveCollection = primitiveCollectionRef.value?.cesiumObject as Cesium.PrimitiveCollection\n        const labelCollection: Array<Cesium.LabelCollection> = (primitiveCollection as any)._primitives.filter(\n          v => v instanceof Cesium.LabelCollection\n        )\n        const labels = labelCollection[index]._labels\n        const labelTotalLength = labels[labels.length - 1]\n        for (let i = 1; i < positions.length; i++) {\n          const positionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, positions[i], {} as any)\n          if (defined(positionWindow)) {\n            const l = (startPositionWindow.y - positionWindow.y) / (positionWindow.x - startPositionWindow.x)\n            if (labels[i - 1] !== labelTotalLength) {\n              labels[i - 1].horizontalOrigin = 0 < l ? HorizontalOrigin.LEFT : HorizontalOrigin.RIGHT\n            }\n\n            if (positionWindow.y < startY) {\n              startY = positionWindow.y\n              startPosition = positions[i]\n            }\n\n            startPositionWindow = Cartesian2.clone(positionWindow, startPositionWindow)\n          }\n\n          polyline.drawStatus === DrawStatus.AfterDraw && (labelTotalLength.position = startPosition)\n        }\n      }\n    })\n  }\n\n  const startNew = () => {\n    const polyline: VcPolylineDrawing = {\n      show: false,\n      positions: [],\n      tempPositions: [],\n      drawStatus: DrawStatus.BeforeDraw,\n      loop: props.loop,\n      distance: 0,\n      area: 0,\n      distances: [],\n      labels: [],\n      angles: []\n    }\n\n    if (cmpName === 'VcMeasurementHorizontal') {\n      const { Cartesian3, Plane } = Cesium\n      Object.assign(polyline, {\n        dashedLines: [],\n        heightPlane: new Plane(Cartesian3.UNIT_X, 0),\n        heightPlaneCV: new Plane(Cartesian3.UNIT_X, 0),\n        height: 0,\n        firstMove: false,\n        tempNextPos: new Cartesian3()\n      })\n    }\n\n    drawStatus.value = DrawStatus.BeforeDraw\n    renderDatas.value.push(polyline)\n    canShowDrawTip.value = true\n    drawTip.value = drawTipOpts.value.drawingTipStart\n  }\n\n  const stop = () => {\n    if (drawStatus.value === DrawStatus.Drawing) {\n      renderDatas.value.pop()\n    }\n    drawStatus.value = DrawStatus.BeforeDraw\n    canShowDrawTip.value = false\n    drawTipPosition.value = [0, 0, 0]\n  }\n\n  const handleMouseClick = (movement: Cesium.Cartesian2, options?) => {\n    const { viewer, drawingFabInstance, getWorldPosition, selectedDrawingActionInstance } = $services\n    if (options.button === 2 && options.ctrl) {\n      const drawingsOption = (drawingFabInstance?.proxy as any).drawingActionInstances.find(v => v.name === drawingType)\n      ;(drawingFabInstance?.proxy as any).toggleAction(drawingsOption)\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            name: drawingType,\n            finished: true,\n            windowPoistion: movement,\n            type: 'cancel'\n          },\n          viewer\n        )\n      })\n      return\n    }\n\n    if (drawStatus.value === DrawStatus.AfterDraw) {\n      startNew()\n    }\n\n    const { defined, Cartesian2, Plane, Cartesian3 } = Cesium\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndex : renderDatas.value.length - 1\n    const polyline: VcPolylineDrawing = renderDatas.value[index]\n    const tempPositions = polyline.tempPositions\n\n    if (options.button === 2 && editingPoint.value) {\n      if (editorType.value === 'insert') {\n        polyline.positions.splice(editingPoint.value._index, 1)\n      } else {\n        polyline.positions[editingPoint.value._index] = restorePosition\n      }\n      drawStatus.value = DrawStatus.AfterDraw\n      polyline.drawStatus = DrawStatus.AfterDraw\n      editingPoint.value = undefined\n      drawTip.value = drawTipOpts.value.drawingTipStart\n      ;(drawingFabInstance?.proxy as any).editingActionName = undefined\n      canShowDrawTip.value = defined(selectedDrawingActionInstance)\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          Object.assign(\n            {\n              index,\n              name: drawingType,\n              renderDatas,\n              finished: true,\n              windowPoistion: movement,\n              type: 'cancel'\n            },\n            computedRenderDatas.value[index]\n          ),\n          viewer\n        )\n      })\n      return\n    }\n\n    lastClickPosition = lastClickPosition || new Cesium.Cartesian2(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY)\n\n    if (Cartesian2.magnitude(Cartesian2.subtract(lastClickPosition, movement, {} as any)) < mouseDelta) {\n      return\n    }\n\n    if (options.button === 2 && drawStatus.value === DrawStatus.Drawing) {\n      if (tempPositions.length > 1) {\n        tempPositions.pop()\n        handleMouseMove(movement)\n      }\n    }\n\n    if (options.button !== 0) {\n      return\n    }\n\n    const scene = viewer.scene\n    const position = getWorldPosition(scene, movement, {} as any)\n    if (!defined(position)) {\n      return\n    }\n    let finished = false\n    let type = 'new'\n    if (cmpName === 'VcMeasurementHorizontal') {\n      if (editingPoint.value) {\n        drawStatus.value = DrawStatus.AfterDraw\n        editingPoint.value = undefined\n        finished = true\n        type = editorType.value\n        drawTip.value = drawTipOpts.value.drawingTipStart\n      } else if (tempPositions.length === 0) {\n        const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n        tempPositions.push(position)\n        polyline.positions = tempPositions\n        polyline.heightPlane = Plane.fromPointNormal(position, ellipsoid.geodeticSurfaceNormal(position, {} as any), polyline.heightPlane)\n        const positionCartographic = ellipsoid.cartesianToCartographic(position, {} as any)\n        const positionProject = scene.mapProjection.project(positionCartographic, {} as any)\n        const positionCV = Cartesian3.fromElements(positionProject.z, positionProject.x, positionProject.y, positionProject)\n        polyline.heightPlaneCV = Plane.fromPointNormal(positionCV, Cartesian3.UNIT_X, polyline.heightPlaneCV)\n        polyline.height = positionCartographic.height\n        polyline.firstMove = true\n        polyline.drawStatus = DrawStatus.Drawing\n        polyline.show = true\n        drawStatus.value = DrawStatus.Drawing\n      } else {\n        tempPositions.push(polyline.tempNextPos!)\n        polyline.positions = tempPositions\n        polyline.firstMove = true\n      }\n      drawTip.value = drawTipOpts.value.drawingTipEnd\n    } else {\n      if (editingPoint.value) {\n        drawStatus.value = DrawStatus.AfterDraw\n        editingPoint.value = undefined\n        finished = true\n        type = editorType.value\n        drawTip.value = drawTipOpts.value.drawingTipStart\n      } else {\n        tempPositions.push(position)\n\n        polyline.positions = tempPositions\n        polyline.show = true\n        polyline.drawStatus = DrawStatus.Drawing\n        drawStatus.value = DrawStatus.Drawing\n        canShowDrawTip.value = true\n        drawTip.value = drawTipOpts.value.drawingTipEnd\n      }\n\n      if (type !== 'new') {\n        ;(drawingFabInstance?.proxy as any).editingActionName = undefined\n        canShowDrawTip.value = defined(selectedDrawingActionInstance)\n      }\n    }\n\n    Cartesian2.clone(movement, lastClickPosition)\n\n    nextTick(() => {\n      emit(\n        'drawEvt',\n        Object.assign(\n          {\n            index,\n            name: drawingType,\n            renderDatas: renderDatas,\n            finished: finished,\n            position: cmpName === 'VcMeasurementHorizontal' ? polyline.positions[polyline.positions.length - 1] : position,\n            windowPoistion: movement,\n            type: type\n          },\n          computedRenderDatas.value[index]\n        ),\n        viewer\n      )\n    })\n  }\n\n  const handleMouseMove = (movement: Cesium.Cartesian2, options?) => {\n    const { viewer, getWorldPosition } = $services\n    const scene = viewer.scene\n    const position = getWorldPosition(scene, movement, {} as any)\n    const { defined } = Cesium\n\n    if (!defined(position)) {\n      return\n    }\n\n    drawTipPosition.value = position\n\n    if (drawStatus.value !== DrawStatus.Drawing) {\n      return\n    }\n\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndex : renderDatas.value.length - 1\n    const polyline: VcPolylineDrawing = renderDatas.value[index]\n    let type = 'new'\n    if (cmpName === 'VcMeasurementHorizontal') {\n      const { SceneMode, IntersectionTests, Cartesian3 } = Cesium\n      const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n      const positions = polyline.positions\n      const cameraRay = scene.camera.getPickRay(movement)\n      let intersectionPosition, unprojectPosition\n      if (scene.mode === SceneMode.SCENE3D && polyline.heightPlane) {\n        intersectionPosition = IntersectionTests.rayPlane(cameraRay, polyline.heightPlane)\n      } else if (scene.mode === SceneMode.COLUMBUS_VIEW && polyline.heightPlaneCV) {\n        intersectionPosition = IntersectionTests.rayPlane(cameraRay, polyline.heightPlaneCV)\n        intersectionPosition = Cartesian3.fromElements(intersectionPosition.y, intersectionPosition.z, intersectionPosition.x, intersectionPosition)\n        unprojectPosition = scene.mapProjection.unproject(intersectionPosition)\n        intersectionPosition = ellipsoid.cartographicToCartesian(unprojectPosition)\n      } else {\n        intersectionPosition = scene.camera.pickEllipsoid(movement, ellipsoid)\n        if (defined(intersectionPosition)) {\n          const cartographicPosition = ellipsoid.cartesianToCartographic(intersectionPosition)\n          cartographicPosition.height = polyline.height || 0\n          intersectionPosition = ellipsoid.cartographicToCartesian(cartographicPosition, intersectionPosition)\n        }\n      }\n\n      if (!defined(intersectionPosition)) {\n        return\n      }\n\n      if (!polyline.firstMove && options?.shift) {\n        const lastPosition = positions[positions.length - 2]\n        const tempNextPos = polyline.tempNextPos\n        const d1 = Cartesian3.subtract(tempNextPos!, lastPosition, {} as any)\n        let d2 = Cartesian3.subtract(intersectionPosition, lastPosition, {} as any)\n        d2 = Cartesian3.projectVector(d2, d1, d2)\n        intersectionPosition = Cartesian3.add(lastPosition, d2, intersectionPosition)\n      }\n\n      if (editingPoint.value) {\n        const positions = polyline.positions\n        positions.splice(editingPoint.value._index, 1, intersectionPosition)\n        type = editorType.value\n        // drawTip.value = drawTipOpts.value.drawingTipStart\n      } else {\n        const tempPositions = polyline.tempPositions.slice()\n        tempPositions.push(intersectionPosition)\n        polyline.positions = tempPositions\n        polyline.firstMove = false\n        polyline.tempNextPos = Object.assign(intersectionPosition)\n        drawTip.value = drawTipOpts.value.drawingTipEnd\n      }\n    } else {\n      if (editingPoint.value) {\n        const positions = polyline.positions\n        positions.splice(editingPoint.value._index, 1, position)\n        type = editorType.value\n      } else {\n        const tempPositions = polyline.tempPositions.slice()\n\n        tempPositions.push(position)\n        polyline.positions = tempPositions\n      }\n    }\n\n    nextTick(() => {\n      emit(\n        'drawEvt',\n        Object.assign(\n          {\n            index,\n            name: drawingType,\n            renderDatas,\n            finished: false,\n            position: cmpName === 'VcMeasurementHorizontal' ? polyline.positions[polyline.positions.length - 1] : position,\n            windowPoistion: movement,\n            type\n          },\n          computedRenderDatas.value[index]\n        ),\n        viewer\n      )\n    })\n  }\n\n  const handleDoubleClick = movement => {\n    const { drawingFabInstance, selectedDrawingActionInstance, viewer } = $services\n    if (drawStatus.value === DrawStatus.Drawing) {\n      const index = editingPoint.value ? editingPoint.value._vcPolylineIndex : renderDatas.value.length - 1\n      const polyline: VcPolylineDrawing = renderDatas.value[index]\n      polyline.positions = polyline.tempPositions\n      polyline.drawStatus = DrawStatus.AfterDraw\n      drawStatus.value = DrawStatus.AfterDraw\n      drawTip.value = drawTipOpts.value.drawingTipStart\n\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          Object.assign(\n            {\n              index,\n              name: drawingType,\n              renderDatas,\n              finished: true,\n              position: polyline.positions[polyline.positions.length - 1],\n              windowPoistion: movement,\n              type: 'new'\n            },\n            computedRenderDatas.value[index]\n          ),\n          viewer\n        )\n\n        if (props.mode === 1) {\n          ;(drawingFabInstance?.proxy as any).toggleAction(selectedDrawingActionInstance)\n        }\n      })\n    }\n  }\n\n  const getPointIndexes = () => {\n    let polylineIndex = editingPoint.value._vcPolylineIndex\n    let pointIndex = editingPoint.value._index\n\n    if (cmpName === 'VcAnalysisSightline') {\n      for (let i = 0; i < renderDatas.value.length; i++) {\n        const polyline = renderDatas.value[i]\n        for (let j = 0; j < polyline.positions.length; j++) {\n          const position = polyline.positions[j]\n          if (editingPoint.value.position.equals(position)) {\n            polylineIndex = i\n            pointIndex = j\n          }\n        }\n      }\n    }\n\n    return [polylineIndex, pointIndex]\n  }\n\n  const onEditorClick = e => {\n    editorPosition.value = [0, 0, 0]\n    showEditor.value = false\n\n    if (!props.editable) {\n      return\n    }\n\n    const { viewer, drawingFabInstance } = $services\n    editorType.value = e\n    if (e === 'move') {\n      drawTip.value = drawTipOpts.value.drawingTipEditing\n      drawStatus.value = DrawStatus.Drawing\n      editingPoint.value = mouseoverPoint.value\n      canShowDrawTip.value = true\n      const indexes = getPointIndexes()\n      editingPoint.value._vcPolylineIndex = indexes[0]\n      editingPoint.value._index = indexes[1]\n      restorePosition = renderDatas.value[indexes[0]].positions[indexes[1]]\n      ;(drawingFabInstance?.proxy as any).editingActionName = drawingType\n    } else if (e === 'insert') {\n      const index = mouseoverPoint.value._vcPolylineIndex\n      const polyline = renderDatas.value[index]\n      polyline.positions.splice(mouseoverPoint.value._index, 0, mouseoverPoint.value.position)\n      editingPoint.value = mouseoverPoint.value\n      canShowDrawTip.value = true\n      drawStatus.value = DrawStatus.Drawing\n      drawTip.value = drawTipOpts.value.drawingTipEditing\n      ;(drawingFabInstance?.proxy as any).editingActionName = drawingType\n    } else if (e === 'remove') {\n      const index = mouseoverPoint.value._vcPolylineIndex\n      const polyline = renderDatas.value[index]\n      polyline.positions.length > 2 && polyline.positions.splice(mouseoverPoint.value._index, 1)\n    } else if (e === 'removeAll') {\n      const index = mouseoverPoint.value._vcPolylineIndex\n      renderDatas.value.splice(index, 1)\n    } else {\n      const index = mouseoverPoint.value._vcPolylineIndex\n      const polyline = renderDatas.value[index]\n      props.editorOpts?.[e]?.callback?.(index, polyline)\n    }\n\n    emit(\n      'editorEvt',\n      {\n        type: e,\n        renderDatas: renderDatas,\n        name: drawingType,\n        index: mouseoverPoint.value._vcPolylineIndex\n      },\n      viewer\n    )\n  }\n\n  const clear = () => {\n    renderDatas.value = []\n    stop()\n  }\n\n  // expose public methods\n  const publicMethods = {\n    renderDatas,\n    startNew,\n    stop,\n    clear,\n    handleMouseClick,\n    handleMouseMove,\n    handleDoubleClick\n  }\n  Object.assign(instance.proxy, publicMethods)\n\n  return () => {\n    const { PolylineMaterialAppearance, Ellipsoid, createGuid, defaultValue, Cartesian3 } = Cesium\n\n    const polylineOpts: VcGeometryPolylineProps = {\n      ...props.polylineOpts,\n      ellipsoid: defaultValue(props.polylineOpts?.ellipsoid, Ellipsoid.WGS84),\n      vertexFormat: PolylineMaterialAppearance.VERTEX_FORMAT\n    }\n    props.clampToGround && delete polylineOpts.arcType\n    const children: Array<VNode> = []\n\n    const points = []\n    computedRenderDatas.value.forEach((polyline, index) => {\n      const positions = polyline.positions.slice()\n      if (positions.length > 1) {\n        // polyline\n        polyline.loop && positions.push(positions[0])\n        children.push(\n          h(\n            props.clampToGround ? VcPrimitiveGroundPolyline : VcPrimitive,\n            {\n              ...props.primitiveOpts,\n              show: (polyline.show && props.primitiveOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing\n            },\n            () =>\n              h(\n                VcGeometryInstance,\n                {\n                  id: createGuid()\n                },\n                () =>\n                  h(props.clampToGround ? VcGeometryGroundPolyline : VcGeometryPolyline, {\n                    positions: positions,\n                    ...polylineOpts\n                  })\n              )\n          )\n        )\n      }\n      // for VcMeasurementHorizontal\n      const dashLineOpts: VcGeometryPolylineProps = {\n        ...props.dashLineOpts,\n        ellipsoid: defaultValue(props.dashLineOpts?.ellipsoid, Ellipsoid.WGS84),\n        vertexFormat: PolylineMaterialAppearance.VERTEX_FORMAT\n      }\n      polyline.dashedLines?.forEach(dashedLine => {\n        children.push(\n          h(\n            VcPrimitive,\n            {\n              ...props.dashLinePrimitiveOpts,\n              show: (polyline.show && props.dashLinePrimitiveOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing\n            },\n            () =>\n              h(\n                VcGeometryInstance,\n                {\n                  id: createGuid()\n                },\n                () =>\n                  h(VcGeometryPolyline, {\n                    positions: dashedLine.positions,\n                    ...dashLineOpts\n                  })\n              )\n          )\n        )\n      })\n      // points\n      children.push(\n        h(VcCollectionPoint, {\n          enableMouseEvent: props.enableMouseEvent,\n          show: polyline.show,\n          points: polyline.positions.map((position, subIndex) => {\n            let includes = false\n            for (let i = 0; i < points.length; i++) {\n              // 通视分析 的观察点会加载很多个 在这儿过滤下只显示一个\n              Cartesian3.equals(position, points[i]) && (includes = true)\n            }\n            const show =\n              (props.pointOpts?.show || props.editable || polyline.drawStatus === DrawStatus.Drawing) &&\n              (cmpName === 'VcAnalysisSightline' && polyline.positions.length === 3 ? subIndex !== 1 : true) &&\n              !includes\n\n            if (cmpName === 'VcAnalysisSightline') {\n              points.push(position)\n            }\n            return {\n              position,\n              id: createGuid(),\n              _vcPolylineIndex: index, // for editor\n              ...props.pointOpts,\n              show\n            }\n          }),\n          onMouseover: onMouseoverPoints,\n          onMouseout: onMouseoutPoints,\n          onReady: onVcCollectionPointReady\n        })\n      )\n      // labels\n      cmpName.includes('VcMeasurement') &&\n        children.push(\n          h(VcCollectionLabel, {\n            enableMouseEvent: props.enableMouseEvent,\n            show: polyline.show,\n            labels: polyline.labels,\n            onReady: onVcCollectionLabelReady\n          })\n        )\n      // polygon\n      if (positions.length > 2 && (cmpName.includes('Polygon') || cmpName.includes('Area'))) {\n        children.push(\n          h(VcPolygon, {\n            positions: positions,\n            onReady: onVcPrimitiveReady,\n            clampToGround: props.clampToGround,\n            ...props.polygonOpts,\n            show: polyline.show && props.polygonOpts?.show\n          })\n        )\n      }\n    })\n\n    if (props.drawtip?.show && canShowDrawTip.value) {\n      const { viewer } = $services\n      children.push(\n        h(\n          VcOverlayHtml,\n          {\n            position: drawTipPosition.value,\n            pixelOffset: props.drawtip.pixelOffset,\n            teleport: {\n              to: viewer.container\n            }\n          },\n          () =>\n            h(\n              'div',\n              {\n                class: 'vc-drawtip vc-tooltip--style'\n              },\n              drawTip.value\n            )\n        )\n      )\n    }\n\n    if (showEditor.value) {\n      const buttons: Array<VNode> = []\n      if (mouseoverPoint.value) {\n        const editorOpts = props.editorOpts\n        for (const key in editorOpts) {\n          if (!Array.isArray(editorOpts[key]) && typeof editorOpts[key] !== 'number') {\n            const opts = {\n              ...editorOpts[key]\n            }\n            delete opts.color\n\n            buttons.push(\n              h(\n                VcBtn,\n                {\n                  style: { color: editorOpts[key].color, background: editorOpts[key].background },\n                  ...opts,\n                  onclick: onEditorClick.bind('polyline', key)\n                },\n                () =>\n                  h(\n                    VcTooltip,\n                    {\n                      ...editorOpts[key].tooltip\n                    },\n                    () => h('strong', null, editorOpts[key].tooltip?.tip || t(`vc.drawing.editor.${key}`))\n                  )\n              )\n            )\n          }\n        }\n      }\n\n      const { viewer } = $services\n      children.push(\n        h(\n          VcOverlayHtml,\n          {\n            position: editorPosition.value,\n            pixelOffset: props.editorOpts?.pixelOffset,\n            teleport: {\n              to: viewer.container\n            },\n            onMouseenter: onMouseenterEditor,\n            onMouseleave: onMouseleaveEditor\n          },\n          () =>\n            h(\n              'div',\n              {\n                class: 'vc-editor'\n              },\n              buttons\n            )\n        )\n      )\n    }\n    return h(\n      VcCollectionPrimitive,\n      {\n        ref: primitiveCollectionRef,\n        show: props.show,\n        onReady: onPrimitiveCollectionReady\n      },\n      () => children\n    )\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-02-13 00:37:01\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\polyline\\index.ts\n */\nimport { defineComponent } from 'vue'\nimport useDrawingPolyline from '@vue-cesium/composables/use-drawing/use-drawing-polyline'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from '@vue-cesium/shared'\nimport type { VcLabelProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\n\nexport default defineComponent({\n  name: 'VcMeasurementPolyline',\n  props: {\n    ...useDrawingActionProps,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    loop: Boolean,\n    clampToGround: Boolean,\n    measureUnits: Object as PropType<MeasureUnits>,\n    labelOpts: Object as PropType<VcLabelProps>,\n    labelsOpts: Object as PropType<VcLabelProps>,\n    locale: String,\n    decimals: Object,\n    showAngleLabel: Boolean,\n    showDistanceLabel: Boolean,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPolyline(props, ctx, 'VcMeasurementPolyline')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-02-13 00:36:53\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\horizontal\\index.ts\n */\nimport { defineComponent } from 'vue'\nimport useDrawingPolyline from '@vue-cesium/composables/use-drawing/use-drawing-polyline'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from '@vue-cesium/shared'\nimport type { VcLabelProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\n\nexport default defineComponent({\n  name: 'VcMeasurementHorizontal',\n  props: {\n    ...useDrawingActionProps,\n    measureUnits: Object as PropType<MeasureUnits>,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    dashLineOpts: Object as PropType<VcGeometryPolylineProps>,\n    dashLinePrimitiveOpts: Object as PropType<VcPrimitiveProps>,\n    labelOpts: Object as PropType<VcLabelProps>,\n    labelsOpts: Object as PropType<VcLabelProps>,\n    locale: String,\n    decimals: Object,\n    showAngleLabel: Boolean,\n    showDashedLine: Boolean,\n    showDistanceLabel: Boolean,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPolyline(props, ctx, 'VcMeasurementHorizontal')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-02-13 00:37:07\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\vertical\\index.ts\n */\nimport { defineComponent } from 'vue'\nimport useDrawingSegment from '@vue-cesium/composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from '@vue-cesium/shared'\nimport type { VcLabelProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\n\nexport default defineComponent({\n  name: 'VcMeasurementVertical',\n  props: {\n    ...useDrawingActionProps,\n    measureUnits: Object as PropType<MeasureUnits>,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    labelOpts: Object as PropType<VcLabelProps>,\n    locale: String,\n    decimals: Object,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcMeasurementVertical')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-02-13 00:36:49\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\height\\index.ts\n */\nimport { defineComponent } from 'vue'\nimport useDrawingSegment from '@vue-cesium/composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from '@vue-cesium/shared'\nimport type { VcLabelProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\n\nexport default defineComponent({\n  name: 'VcMeasurementHeight',\n  props: {\n    ...useDrawingActionProps,\n    measureUnits: Object as PropType<MeasureUnits>,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    labelOpts: Object as PropType<VcLabelProps>,\n    locale: String,\n    decimals: Object,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcMeasurementHeight')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-19 11:34:26\n * @LastEditTime: 2022-01-22 12:05:06\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\use-drawing-point.ts\n */\n\nimport { VcOverlayHtml } from '@vue-cesium/components/overlays'\nimport { VcCollectionBillboard, VcCollectionLabel, VcCollectionPoint, VcCollectionPrimitive } from '@vue-cesium/components/primitive-collections'\nimport { VcBtn, VcTooltip } from '@vue-cesium/components/ui'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus, MeasureUnits } from '@vue-cesium/shared'\nimport { makeCartesian3 } from '@vue-cesium/utils/cesium-helpers'\nimport { VcPointDrawing } from '@vue-cesium/utils/drawing-types'\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { getCurrentInstance, nextTick, onUnmounted, ref, VNode, watch, WatchStopHandle, h } from 'vue'\nimport useCommon from '../use-common'\nimport useDrawingAction from './use-drawing-action'\nexport default function (props, ctx, cmpName: string) {\n  const instance = getCurrentInstance() as VcComponentInternalInstance\n\n  const commonState = useCommon(props, ctx, instance)\n  if (commonState === void 0) {\n    return\n  }\n\n  const { t } = useLocale()\n  const { $services } = commonState\n  const { emit } = ctx\n\n  const {\n    drawingType,\n    drawTip,\n    drawTipOpts,\n    drawStatus,\n    canShowDrawTip,\n    drawTipPosition,\n    showEditor,\n    editorPosition,\n    mouseoverPoint,\n    editingPoint,\n    primitiveCollectionRef,\n    editorType,\n    onMouseoverPoints,\n    onMouseoutPoints,\n    onMouseenterEditor,\n    onMouseleaveEditor,\n    onPrimitiveCollectionReady,\n    onVcCollectionPointReady,\n    onVcCollectionLabelReady\n  } = useDrawingAction(props, ctx, instance, cmpName, $services)\n\n  const renderDatas = ref<Array<VcPointDrawing>>([])\n  let restorePosition\n  let unwatchFns: Array<WatchStopHandle> = []\n  if (cmpName === 'VcDrawingPin' && props.billboardOpts.image === '') {\n    props.billboardOpts.image = Cesium.buildModuleUrl('Assets/Textures/pin.svg')\n  }\n\n  // watch\n  unwatchFns.push(\n    watch(\n      () => props.editable,\n      val => {\n        const { drawingFabInstance, selectedDrawingActionInstance } = $services\n        if (val && selectedDrawingActionInstance?.name === drawingType) {\n          ;(drawingFabInstance?.proxy as any).toggleAction(selectedDrawingActionInstance)\n        }\n      }\n    )\n  )\n\n  const startNew = () => {\n    const { Cartesian3 } = Cesium\n    const point: VcPointDrawing = {\n      drawStatus: DrawStatus.Drawing,\n      show: false,\n      position: new Cartesian3(),\n      lng: 0,\n      lat: 0,\n      height: 0,\n      slope: 0,\n      billboardOpts: null\n    }\n\n    renderDatas.value.push(point)\n    drawStatus.value = DrawStatus.Drawing\n    canShowDrawTip.value = true\n    drawTip.value = drawTipOpts.value.drawingTipStart\n  }\n\n  const stop = () => {\n    if (drawStatus.value === DrawStatus.Drawing) {\n      renderDatas.value.pop()\n    }\n    drawStatus.value = DrawStatus.BeforeDraw\n    canShowDrawTip.value = false\n    drawTipPosition.value = [0, 0, 0]\n  }\n\n  const handleMouseClick = (movement, options?) => {\n    const { viewer, drawingFabInstance, getWorldPosition, selectedDrawingActionInstance } = $services\n    if (options.button === 2 && options.ctrl) {\n      const drawingsOption = (drawingFabInstance?.proxy as any).drawingActionInstances.find(v => v.name === drawingType)\n      ;(drawingFabInstance?.proxy as any).toggleAction(drawingsOption)\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            name: drawingType,\n            finished: true,\n            windowPoistion: movement,\n            type: 'cancel'\n          },\n          viewer\n        )\n      })\n      return\n    }\n\n    // if (drawStatus.value === DrawStatus.AfterDraw) {\n    //   startNew()\n    // }\n\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n    const point: VcPointDrawing = renderDatas.value[index]\n\n    if (options.button === 2 && editingPoint.value) {\n      ;(drawingFabInstance?.proxy as any).editingActionName = undefined\n      renderDatas.value[index] = restorePosition\n      drawStatus.value = DrawStatus.AfterDraw\n      renderDatas.value[index].drawStatus = DrawStatus.AfterDraw\n      editingPoint.value = undefined\n      drawTip.value = drawTipOpts.value.drawingTipStart\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            name: drawingType,\n            index,\n            renderDatas,\n            finished: true,\n            windowPoistion: movement,\n            type: 'cancel'\n          },\n          viewer\n        )\n      })\n      return\n    }\n\n    if (options.button !== 0) {\n      return\n    }\n    if (selectedDrawingActionInstance) {\n      const { billboardOpts, labelOpts } = selectedDrawingActionInstance.cmpOpts\n      point.billboardOpts = JSON.parse(JSON.stringify(billboardOpts))\n      point.labelOpts = JSON.parse(JSON.stringify(labelOpts))\n    }\n    const { defined } = Cesium\n    let type = 'new'\n    if (drawStatus.value === DrawStatus.BeforeDraw) {\n      const scene = viewer.scene\n      const position = getWorldPosition(scene, movement, {} as any)\n\n      if (!defined(position)) {\n        return\n      }\n\n      point.position = position\n      point.show = true\n      point.drawStatus = DrawStatus.AfterDraw\n\n      drawStatus.value = DrawStatus.AfterDraw\n      drawTip.value = drawTipOpts.value.drawingTipStart\n\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            index,\n            renderDatas,\n            name: drawingType,\n            finished: true,\n            position,\n            windowPoistion: movement,\n            type\n          },\n          viewer\n        )\n      })\n    } else {\n      drawStatus.value = DrawStatus.AfterDraw\n      point.drawStatus = DrawStatus.AfterDraw\n\n      if (editingPoint.value) {\n        editingPoint.value = undefined\n        ;(drawingFabInstance?.proxy as any).editingActionName = undefined\n        canShowDrawTip.value = false\n        type = editorType.value\n      } else {\n        if (props.mode === 1) {\n          ;(drawingFabInstance?.proxy as any).toggleAction(selectedDrawingActionInstance)\n        }\n      }\n\n      if (selectedDrawingActionInstance) {\n        drawTip.value = drawTipOpts.value.drawingTipStart\n        canShowDrawTip.value = true\n      }\n\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            index,\n            renderDatas,\n            name: drawingType,\n            finished: true,\n            position: renderDatas.value[index].position,\n            windowPoistion: movement,\n            type\n          },\n          viewer\n        )\n      })\n    }\n  }\n\n  const handleMouseMove = movement => {\n    const { viewer, getWorldPosition } = $services\n    const scene = viewer.scene\n    const { defined, SceneMode } = Cesium\n\n    if (scene.mode !== SceneMode.MORPHING) {\n      const position = getWorldPosition(scene, movement, {} as any)\n\n      if (!defined(position)) {\n        return\n      }\n\n      drawTipPosition.value = position\n\n      if (drawStatus.value === DrawStatus.AfterDraw) {\n        startNew()\n      }\n\n      if (drawStatus.value !== DrawStatus.Drawing) {\n        return\n      }\n\n      const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n      const point: VcPointDrawing = renderDatas.value[index]\n      point.position = position\n      getMeasurementResult(point, movement)\n      const type = editingPoint.value ? editorType.value : 'new'\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            index,\n            renderDatas,\n            name: drawingType,\n            finished: false,\n            position,\n            windowPoistion: movement,\n            type\n          },\n          viewer\n        )\n      })\n    }\n  }\n\n  const getMeasurementResult = (point: VcPointDrawing, movement?) => {\n    const { viewer } = $services\n    const scene = viewer.scene\n    const { defined, defaultValue, Math: CesiumMath, SceneMode } = Cesium\n    const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n    const positionCartographic = ellipsoid.cartesianToCartographic(point.position, {} as any)\n    const globe = scene.globe\n    let height = defined(globe) ? defaultValue(globe.getHeight(positionCartographic), 0) : 0\n    height = props.heightReference === 0 ? positionCartographic.height : positionCartographic.height - height\n    CesiumMath.equalsEpsilon(height, 0, CesiumMath.EPSILON3) && (height = 0)\n    let slope = 0\n\n    if (scene.mode !== SceneMode.SCENE2D) {\n      if (!movement) {\n        movement = scene.cartesianToCanvasCoordinates(point.position, {} as any)\n      }\n      slope = getSlope(scene, movement)\n    }\n\n    point.show = true\n    point.lng = positionCartographic.longitude\n    point.lat = positionCartographic.latitude\n    point.height = height\n    point.slope = slope\n  }\n\n  const getSlope = (scene: Cesium.Scene, movement: Cesium.Cartesian2) => {\n    const { getWorldPosition } = $services\n    const { defined, Cartesian2, Cartesian3, Math: CesiumMath } = Cesium\n    const position = getWorldPosition(scene, movement, {} as any)\n    if (defined(position)) {\n      const cameraPosition = scene.camera.position\n      const distance = Cartesian3.distance(position, cameraPosition)\n      const scratchCartesian3s = [new Cartesian3(), new Cartesian3(), new Cartesian3(), new Cartesian3(), new Cartesian3()]\n      const normalScratch = new Cartesian3()\n      const surfaceNormalScratch = new Cartesian3()\n      if (!(1e4 < distance)) {\n        const p0 = scratchCartesian3s[0]\n        const p1 = scratchCartesian3s[1]\n        const p2 = scratchCartesian3s[2]\n        const p3 = scratchCartesian3s[3]\n        let surfaceNormal = scene.frameState.mapProjection.ellipsoid.geodeticSurfaceNormal(position, normalScratch)\n        surfaceNormal = Cartesian3.negate(surfaceNormal, surfaceNormal)\n        const u = Cartesian2.clone(movement, scratchCartesian3s[0])\n        u.x -= 2\n        u.y -= 2\n        const d = Cartesian2.clone(movement, scratchCartesian3s[1])\n        d.x -= 2\n        d.y += 2\n        const h = Cartesian2.clone(movement, scratchCartesian3s[2])\n        h.x += 2\n        h.y += 2\n        const p = Cartesian2.clone(movement, scratchCartesian3s[3])\n        p.x += 2\n        p.y -= 2\n\n        const T = getWorldPosition(scene, u, p0)\n        const x = getWorldPosition(scene, d, p1)\n        const b = getWorldPosition(scene, h, p2)\n        const E = getWorldPosition(scene, p, p3)\n        let m, f, g, _, y, C, v, S\n        if (defined(T)) {\n          m = Cartesian3.subtract(T, position, p0)\n          f = Cartesian3.magnitude(m) / distance <= 0.05 ? Cartesian3.normalize(m, p0) : undefined\n        }\n        if (defined(x)) {\n          g = Cartesian3.subtract(x, position, p1)\n          _ = Cartesian3.magnitude(g) / distance <= 0.05 ? Cartesian3.normalize(g, p1) : undefined\n        }\n        if (defined(b)) {\n          y = Cartesian3.subtract(b, position, p2)\n          C = Cartesian3.magnitude(y) / distance <= 0.05 ? Cartesian3.normalize(y, p2) : undefined\n        }\n        if (defined(E)) {\n          v = Cartesian3.subtract(E, position, p3)\n          S = Cartesian3.magnitude(v) / distance <= 0.05 ? Cartesian3.normalize(v, p3) : undefined\n        }\n\n        let P = Cartesian3.clone(Cartesian3.ZERO, surfaceNormalScratch)\n        let A = scratchCartesian3s[4]\n\n        if (defined(f) && defined(_)) {\n          A = Cartesian3.normalize(Cartesian3.cross(f, _, A), A)\n          P = Cartesian3.add(P, A, P)\n        }\n\n        if (defined(_) && defined(C)) {\n          A = Cartesian3.normalize(Cartesian3.cross(_, C, A), A)\n          P = Cartesian3.add(P, A, P)\n        }\n\n        if (defined(C) && defined(S)) {\n          A = Cartesian3.normalize(Cartesian3.cross(C, S, A), A)\n          P = Cartesian3.add(P, A, P)\n        }\n\n        if (defined(S) && defined(f)) {\n          A = Cartesian3.normalize(Cartesian3.cross(S, f, A), A)\n          P = Cartesian3.add(P, A, P)\n        }\n        if (!P.equals(Cartesian3.ZERO)) {\n          P = Cartesian3.normalize(P, P)\n          return CesiumMath.asinClamped(Math.abs(Math.sin(Cartesian3.angleBetween(P, surfaceNormal))))\n        }\n      }\n    }\n    return 0\n  }\n\n  const onEditorClick = e => {\n    editorPosition.value = [0, 0, 0]\n    showEditor.value = false\n\n    if (!props.editable) {\n      return\n    }\n    editorType.value = e\n    const { viewer, drawingFabInstance } = $services\n    if (e === 'move') {\n      drawTip.value = drawTipOpts.value.drawingTipEditing\n      drawStatus.value = DrawStatus.Drawing\n      editingPoint.value = mouseoverPoint.value\n      canShowDrawTip.value = true\n      restorePosition = Object.assign({}, renderDatas.value[editingPoint.value._vcPolylineIndx])\n      ;(drawingFabInstance?.proxy as any).editingActionName = drawingType\n    } else if (e === 'remove') {\n      const index = mouseoverPoint.value._vcPolylineIndx\n      renderDatas.value.splice(index, 1)\n    } else {\n      const index = mouseoverPoint.value._vcPolylineIndx\n      const polyline = renderDatas.value[index]\n      props.editorOpts?.[e]?.callback?.(index, polyline)\n    }\n\n    emit(\n      'editorEvt',\n      {\n        type: e,\n        name: drawingType,\n        renderDatas,\n        index: mouseoverPoint.value._vcPolylineIndx\n      },\n      viewer\n    )\n  }\n\n  const clear = () => {\n    renderDatas.value = []\n    stop()\n  }\n\n  const getLabelText = (point: VcPointDrawing) => {\n    const { viewer } = $services\n    const scene = viewer.scene\n    const positionCartographic = (scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid).cartesianToCartographic(point.position, {} as any)\n    if (!Cesium.defined(positionCartographic)) {\n      return ''\n    }\n\n    return (\n      `${t('vc.measurement.point.lng')}${MeasureUnits.angleToString(\n        positionCartographic.longitude,\n        props.measureUnits?.angleUnits,\n        props.locale,\n        props.decimals?.lng\n      )}\\n` +\n      `${t('vc.measurement.point.lat')}${MeasureUnits.angleToString(\n        positionCartographic.latitude,\n        props.measureUnits?.angleUnits,\n        props.locale,\n        props.decimals?.lat\n      )}\\n` +\n      `${t('vc.measurement.point.height')}${MeasureUnits.distanceToString(\n        point.height,\n        props.measureUnits?.distanceUnits,\n        props.locale,\n        props.decimals?.height\n      )}\\n` +\n      `${t('vc.measurement.point.slope')}${MeasureUnits.angleToString(\n        point.slope,\n        props.measureUnits?.slopeUnits,\n        props.locale,\n        props.decimals?.slope\n      )}`\n    )\n  }\n\n  if (props.preRenderDatas && props.preRenderDatas.length) {\n    props.preRenderDatas.forEach(preRenderData => {\n      const pointDrawing: VcPointDrawing = {\n        drawStatus: DrawStatus.AfterDraw,\n        show: true,\n        position: makeCartesian3(preRenderData) as Cesium.Cartesian3,\n        lng: 0,\n        lat: 0,\n        height: 0,\n        slope: 0,\n        billboardOpts: preRenderData.billboardOpts,\n        labelOpts: preRenderData.billboardOpts\n      }\n\n      getMeasurementResult(pointDrawing)\n\n      renderDatas.value.push(pointDrawing)\n    })\n  }\n\n  // life cycle\n  onUnmounted(() => {\n    unwatchFns.forEach(item => item())\n    unwatchFns = []\n  })\n\n  // expose public methods\n  const publicMethods = { renderDatas, startNew, stop, clear, handleMouseClick, handleMouseMove }\n  Object.assign(instance.proxy, publicMethods)\n\n  return () => {\n    const { createGuid } = Cesium\n    const children: Array<VNode> = []\n    const pointsRender: Array<any> = []\n    const labelsRender: Array<any> = []\n    const billboardsRender: Array<any> = []\n    renderDatas.value.forEach((point, index) => {\n      pointsRender.push({\n        position: point.position,\n        id: createGuid(),\n        _vcPolylineIndx: index, // for editor\n        ...props.pointOpts,\n        show: (point.show && props.pointOpts?.show) || props.editable || point.drawStatus === DrawStatus.Drawing\n      })\n\n      cmpName.includes('VcMeasurement') &&\n        labelsRender.push({\n          position: point.position,\n          id: createGuid(),\n          text: getLabelText(point),\n          ...props.labelOpts\n        })\n\n      if (cmpName === 'VcDrawingPin') {\n        const { billboardOpts, labelOpts } = point\n\n        if (billboardOpts && billboardOpts.image) {\n          const copy = JSON.parse(JSON.stringify(billboardOpts))\n          billboardsRender.push({\n            position: point.position,\n            id: createGuid(),\n            ...copy\n          })\n        }\n        if (labelOpts && labelOpts.text) {\n          const copy = JSON.parse(JSON.stringify(labelOpts))\n          labelsRender.push({\n            position: point.position,\n            id: createGuid(),\n            ...copy\n          })\n        }\n      }\n    })\n    children.push(\n      h(VcCollectionPoint, {\n        enableMouseEvent: props.enableMouseEvent,\n        points: pointsRender,\n        onMouseover: onMouseoverPoints,\n        onMouseout: onMouseoutPoints,\n        onReady: onVcCollectionPointReady\n      })\n    )\n    ;(cmpName.includes('VcMeasurement') || cmpName === 'VcDrawingPin') &&\n      children.push(\n        h(VcCollectionLabel, {\n          enableMouseEvent: props.enableMouseEvent,\n          labels: labelsRender,\n          onReady: onVcCollectionLabelReady\n        })\n      )\n\n    cmpName === 'VcDrawingPin' &&\n      children.push(\n        h(VcCollectionBillboard, {\n          enableMouseEvent: props.enableMouseEvent,\n          billboards: billboardsRender,\n          onReady: onVcCollectionLabelReady\n        })\n      )\n\n    if (props.drawtip?.show && canShowDrawTip.value) {\n      const { viewer } = $services\n      children.push(\n        h(\n          VcOverlayHtml,\n          {\n            position: drawTipPosition.value,\n            pixelOffset: props.drawtip?.pixelOffset,\n            teleport: {\n              to: viewer.container\n            }\n          },\n          () =>\n            h(\n              'div',\n              {\n                class: 'vc-drawtip vc-tooltip--style'\n              },\n              drawTip.value\n            )\n        )\n      )\n    }\n\n    if (showEditor.value) {\n      const buttons: Array<VNode> = []\n      if (mouseoverPoint.value) {\n        const editorOpts = props.editorOpts\n        for (const key in editorOpts) {\n          if (!Array.isArray(editorOpts[key]) && typeof editorOpts[key] !== 'number') {\n            const opts = {\n              ...editorOpts[key]\n            }\n            delete opts.color\n\n            buttons.push(\n              h(\n                VcBtn,\n                {\n                  style: { color: editorOpts[key].color, background: editorOpts[key].background },\n                  ...opts,\n                  onclick: onEditorClick.bind(undefined, key)\n                },\n                () =>\n                  h(\n                    VcTooltip,\n                    {\n                      ...editorOpts[key].tooltip\n                    },\n                    () => h('strong', null, editorOpts[key].tooltip?.tip || t(`vc.drawing.editor.${key}`))\n                  )\n              )\n            )\n          }\n        }\n      }\n\n      const { viewer } = $services\n      children.push(\n        h(\n          VcOverlayHtml,\n          {\n            position: editorPosition.value,\n            pixelOffset: props.editorOpts?.pixelOffset,\n            teleport: {\n              to: viewer.container\n            },\n            onMouseenter: onMouseenterEditor,\n            onMouseleave: onMouseleaveEditor\n          },\n          () =>\n            h(\n              'div',\n              {\n                class: 'vc-editor'\n              },\n              buttons\n            )\n        )\n      )\n    }\n    return h(\n      VcCollectionPrimitive,\n      {\n        ref: primitiveCollectionRef,\n        show: props.show,\n        onReady: onPrimitiveCollectionReady\n      },\n      () => children\n    )\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-02-13 00:36:56\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\point\\index.ts\n */\nimport { defineComponent } from 'vue'\nimport useDrawingPoint from '@vue-cesium/composables/use-drawing/use-drawing-point'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from '@vue-cesium/shared'\nimport type { VcLabelProps } from '../../../primitive-collections'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\n\nexport default defineComponent({\n  name: 'VcMeasurementPoint',\n  props: {\n    ...useDrawingActionProps,\n    measureUnits: Object as PropType<MeasureUnits>,\n    labelOpts: Object as PropType<VcLabelProps>,\n    locale: String,\n    decimals: Object,\n    heightReference: Number,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPoint(props, ctx, 'VcMeasurementPoint')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-02-13 00:36:31\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\area\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { defineComponent } from 'vue'\nimport useDrawingPolyline from '@vue-cesium/composables/use-drawing/use-drawing-polyline'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport { MeasureUnits } from '@vue-cesium/shared'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport type { VcLabelProps, VcPolygonProps } from '../../../primitive-collections'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\n\nexport default defineComponent({\n  name: 'VcMeasurementArea',\n  props: {\n    ...useDrawingActionProps,\n    measureUnits: Object as PropType<MeasureUnits>,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    polygonOpts: Object as PropType<VcPolygonProps>,\n    labelOpts: Object as PropType<VcLabelProps>,\n    labelsOpts: Object as PropType<VcLabelProps>,\n    locale: String,\n    decimals: Object,\n    showDistanceLabel: Boolean,\n    showAngleLabel: Boolean,\n    loop: Boolean,\n    clampToGround: Boolean,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPolyline(props, ctx, 'VcMeasurementArea')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-13 00:37:04\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\rectangle\\index.ts\n */\nimport { defineComponent } from 'vue'\nimport useDrawingSegment from '@vue-cesium/composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from '@vue-cesium/shared'\nimport type { VcLabelProps, VcPolygonProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\n\nexport default defineComponent({\n  name: 'VcMeasurementRectangle',\n  props: {\n    ...useDrawingActionProps,\n    measureUnits: Object as PropType<MeasureUnits>,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    polygonOpts: Object as PropType<VcPolygonProps>,\n    labelOpts: Object as PropType<VcLabelProps>,\n    labelsOpts: Object as PropType<VcLabelProps>,\n    clampToGround: Boolean,\n    edge: Number,\n    locale: String,\n    decimals: Object,\n    showDistanceLabel: Boolean,\n    showAngleLabel: Boolean,\n    loop: Boolean,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcMeasurementRectangle')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-26 11:14:41\n * @LastEditTime: 2022-02-08 16:19:57\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\regular\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { defineComponent } from 'vue'\nimport useDrawingSegment from '@vue-cesium/composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport type { VcLabelProps, VcPolygonProps } from '../../../primitive-collections'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nexport default defineComponent({\n  name: 'VcMeasurementRegular',\n  props: {\n    ...useDrawingActionProps,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    polygonOpts: Object as PropType<VcPolygonProps>,\n    labelOpts: Object as PropType<VcLabelProps>,\n    labelsOpts: Object as PropType<VcLabelProps>,\n    clampToGround: Boolean,\n    edge: Number,\n    measureUnits: Object,\n    locale: String,\n    decimals: Object,\n    showDistanceLabel: Boolean,\n    showAngleLabel: Boolean,\n    loop: Boolean,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcMeasurementRegular')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-13 09:45:59\n * @LastEditTime: 2022-02-17 09:48:10\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\use-drawing-fab.ts\n */\nimport { VcCollectionPrimitive } from '@vue-cesium/components/primitive-collections'\nimport { VcFab, VcFabAction, VcTooltip, VcTooltipProps } from '@vue-cesium/components/ui'\nimport { useCommon, useHandler } from '@vue-cesium/composables'\nimport { VisibilityState } from '@vue-cesium/shared'\nimport { VcDrawingActionInstance } from '@vue-cesium/utils/drawing-types'\nimport { VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { CSSProperties, nextTick, provide, reactive, ref, VNode, h, createCommentVNode } from 'vue'\nimport usePosition from '../private/use-position'\nimport { $ } from '@vue-cesium/utils/private/vm'\nimport { isString } from '@vue-cesium/utils/util'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { vcKey } from '@vue-cesium/utils/config'\nimport { useLocale } from '../use-locale'\nimport { clearActionDefault } from './defaultOpts'\nimport { mainFabDefault } from '@vue-cesium/components/drawings/src/defaultProps'\n\nexport default function (\n  props,\n  ctx,\n  instance: VcComponentInternalInstance,\n  drawingActionInstances: Array<VcDrawingActionInstance>,\n  mainFabOpts: typeof mainFabDefault,\n  clearActionOpts: typeof clearActionDefault,\n  cmpName: string\n) {\n  instance.cesiumEvents = []\n  const commonState = useCommon(props, ctx, instance)\n  if (commonState === void 0) {\n    return\n  }\n\n  const { t } = useLocale()\n  const { $services } = commonState\n  const { emit } = ctx\n\n  const canRender = ref(false)\n  const containerStyle = reactive<CSSProperties>({})\n  const positionState = usePosition(props, $services)\n  const containerRef = ref<HTMLElement | null>(null)\n  const fabRef = ref<typeof VcFab>(null)\n  const mounted = ref(false)\n  const primitiveCollection = ref(null)\n  let visibilityState: VisibilityState\n\n  let selectedDrawingActionInstance: VcDrawingActionInstance = undefined!\n\n  /**\n   *\n   * @param movement 屏幕坐标\n   * @param button 鼠标按键 0 左键, 1 中键, 2 右键\n   * @param shift\n   */\n  const handleMouseClick = (movement: Cesium.ScreenSpaceEventParamsType.LEFT_CLICK, options?) => {\n    const cmp = selectedDrawingActionInstance?.cmpRef.value\n    cmp?.handleMouseClick?.(movement.position, options)\n\n    let drawingActionOpts\n    if ((instance.proxy as any).editingActionName) {\n      drawingActionOpts = drawingActionInstances.find(v => v.name === (instance.proxy as any).editingActionName)\n    }\n\n    if (drawingActionOpts && drawingActionOpts !== selectedDrawingActionInstance) {\n      const cmp = drawingActionOpts.cmpRef.value\n      cmp?.handleMouseClick?.(movement.position, options)\n    }\n  }\n\n  const handleMouseMove = (movement: Cesium.ScreenSpaceEventParamsType.MOUSE_MOVE, options?) => {\n    const cmp = selectedDrawingActionInstance?.cmpRef.value\n    cmp?.handleMouseMove?.(movement.endPosition, options)\n\n    let drawingActionOpts\n    if ((instance.proxy as any).editingActionName) {\n      drawingActionOpts = drawingActionInstances.find(v => v.name === (instance.proxy as any).editingActionName)\n    }\n\n    if (drawingActionOpts && drawingActionOpts !== selectedDrawingActionInstance) {\n      const cmp = drawingActionOpts.cmpRef.value\n      cmp?.handleMouseMove?.(movement.endPosition, options)\n    }\n  }\n\n  const handleDoubleClick = (movement: Cesium.ScreenSpaceEventParamsType.LEFT_DOUBLE_CLICK, options?) => {\n    const cmp = selectedDrawingActionInstance?.cmpRef.value\n    cmp?.handleDoubleClick?.(movement.position, options)\n\n    let drawingActionOpts\n    if ((instance.proxy as any).editingActionName) {\n      drawingActionOpts = drawingActionInstances.find(v => v.name === (instance.proxy as any).editingActionName)\n    }\n\n    if (drawingActionOpts && drawingActionOpts !== selectedDrawingActionInstance) {\n      const cmp = drawingActionOpts.cmpRef.value\n      cmp?.handleDoubleClick?.(movement.position, options)\n    }\n  }\n\n  const {\n    activate,\n    deactivate,\n    destroy: destroyHandler,\n    isActive\n  } = useHandler($services, {\n    handleMouseClick,\n    handleMouseMove,\n    handleDoubleClick\n  })\n\n  instance.createCesiumObject = async () => {\n    canRender.value = true\n    visibilityState = new VisibilityState()\n    return drawingActionInstances\n  }\n\n  instance.mount = async () => {\n    updateRootStyle()\n    mounted.value = true\n    activate()\n    return true\n  }\n\n  instance.unmount = async () => {\n    if (selectedDrawingActionInstance) {\n      toggleAction(selectedDrawingActionInstance)\n      ;(selectedDrawingActionInstance as any) = undefined\n    }\n\n    deactivate()\n    destroyHandler()\n    mounted.value = false\n    return true\n  }\n\n  const getWorldPosition = (scene: Cesium.Scene, windowPosition: Cesium.Cartesian2, result: Cesium.Cartesian3) => {\n    const { Cesium3DTileFeature, Cesium3DTileset, Cartesian3, defined, Model, Ray } = Cesium\n    if (Cesium.SuperMapVersion) {\n      // 超图版本下 PointPrimitive 在隐藏了的状态下仍然能被拾取到\n      // 后续逻辑失效\n      // 因此直接返回拾取坐标\n      return scene.pickPosition(windowPosition)\n    }\n    let position\n    const cartesianScratch: any = {}\n    const rayScratch = new Ray()\n    if (scene.pickPositionSupported) {\n      visibilityState.hide(scene)\n      const pickObj = scene.pick(windowPosition, 1, 1)\n      visibilityState.restore(scene)\n      if (defined(pickObj)) {\n        if (\n          pickObj instanceof Cesium3DTileFeature ||\n          pickObj.primitive instanceof Cesium3DTileset ||\n          pickObj.primitive instanceof Model ||\n          pickObj.primitive instanceof Cesium.S3MTilesLayer\n        ) {\n          position = scene.pickPosition(windowPosition, cartesianScratch)\n          if (defined(position)) {\n            return Cartesian3.clone(position, result)\n          }\n        }\n      }\n    }\n    if (defined(scene.globe)) {\n      const ray = scene.camera.getPickRay(windowPosition, rayScratch)\n      position = scene.globe.pick(ray, scene, cartesianScratch)\n      return defined(position) ? Cartesian3.clone(position, result) : void 0\n    }\n\n    return void 0\n  }\n\n  const updateRootStyle = () => {\n    const css: CSSProperties = positionState.style.value\n    containerStyle.left = css.left\n    containerStyle.top = css.top\n    containerStyle.transform = css.transform\n\n    const side = positionState.attach.value\n    const fabTarget = $(fabRef)?.$el as HTMLElement\n    if (fabTarget !== void 0) {\n      const clientRect = fabTarget.getBoundingClientRect()\n      css.width = `${clientRect.width}px`\n      css.height = `${clientRect.height}px`\n\n      if ((side.bottom || side.top) && !side.left && !side.right) {\n        css.left = '50%'\n        css.transform = 'translate(-50%, 0)'\n      }\n\n      if ((side.left || side.right) && !side.top && !side.bottom) {\n        css.top = '50%'\n        css.transform = 'translate(0, -50%)'\n      }\n    }\n\n    Object.assign(containerStyle, css)\n  }\n\n  const restoreColor = ref<string | null | undefined>(null)\n  const toggleAction = (drawingOption: VcDrawingActionInstance | string | undefined) => {\n    const { viewer } = $services\n    if (isString(drawingOption)) {\n      drawingOption = drawingActionInstances.find(v => v.name === drawingOption)\n    }\n    if (!drawingOption) {\n      commonState.logger.error('Invalid drawingActionOption or drawingActionOption name')\n      return\n    }\n    if (selectedDrawingActionInstance !== void 0) {\n      selectedDrawingActionInstance.actionOpts.color = restoreColor.value || ''\n      const cmp = selectedDrawingActionInstance.cmpRef.value\n      cmp.stop?.()\n      selectedDrawingActionInstance.isActive = false\n      emit(\n        'activeEvt',\n        {\n          type: selectedDrawingActionInstance.name,\n          option: selectedDrawingActionInstance,\n          isActive: false\n        },\n        viewer\n      )\n    }\n    if (selectedDrawingActionInstance?.name === drawingOption?.name) {\n      ;(selectedDrawingActionInstance as any) = undefined\n      drawingOption.actionOpts.color = restoreColor.value || 'red'\n    } else {\n      selectedDrawingActionInstance = drawingOption\n      const cmp = selectedDrawingActionInstance.cmpRef.value\n      cmp.startNew()\n      restoreColor.value = selectedDrawingActionInstance.actionOpts.color\n      selectedDrawingActionInstance.actionOpts.color = props.activeColor\n      selectedDrawingActionInstance.isActive = true\n      emit(\n        'activeEvt',\n        {\n          type: selectedDrawingActionInstance.name,\n          option: selectedDrawingActionInstance,\n          isActive: true\n        },\n        viewer\n      )\n    }\n  }\n\n  const onUpdateFab = value => {\n    if (value) {\n      activate()\n    } else {\n      if (selectedDrawingActionInstance) {\n        toggleAction(selectedDrawingActionInstance)\n      }\n      deactivate()\n    }\n    mainFabOpts.modelValue = value\n    emit('fabUpdated', value)\n  }\n\n  const clearAll = () => {\n    drawingActionInstances.forEach(drawingActionOpts => {\n      drawingActionOpts.cmpRef.value?.clear()\n    })\n\n    selectedDrawingActionInstance && toggleAction(selectedDrawingActionInstance)\n  }\n\n  const getServices = () => {\n    return mergeDescriptors(commonState.getServices(), {\n      get drawingFabInstance() {\n        return instance\n      },\n      get selectedDrawingActionInstance() {\n        return selectedDrawingActionInstance\n      },\n      get getWorldPosition() {\n        return getWorldPosition\n      },\n      get drawingHandlerActive() {\n        return isActive\n      }\n    })\n  }\n\n  const onPrimitiveCollectionReady = ({ cesiumObject }: VcReadyObject) => {\n    ;(cesiumObject as any)._vcId = cmpName\n  }\n\n  provide(vcKey, getServices())\n  instance.appContext.config.globalProperties.$VueCesium = getServices()\n\n  // expose public methods\n  Object.assign(instance.proxy, { drawingActionInstances, selectedDrawingActionInstance, clearAll, deactivate, activate, toggleAction, fabRef })\n\n  const renderContent = () => {\n    if (canRender.value) {\n      const fabActionChildren: Array<VNode> = []\n      const drawingChildren: Array<VNode> = []\n      drawingActionInstances.forEach(drawingActionInstance => {\n        fabActionChildren.push(\n          h(\n            VcFabAction,\n            {\n              ref: drawingActionInstance.actionRef,\n              style: drawingActionInstance.actionStyle,\n              class: drawingActionInstance.actionClass,\n              ...drawingActionInstance.actionOpts,\n              onClick: () => {\n                toggleAction(drawingActionInstance)\n              }\n            },\n            () =>\n              h(\n                VcTooltip,\n                {\n                  ...drawingActionInstance.actionOpts.tooltip\n                },\n                () => h('strong', null, drawingActionInstance.tip)\n              )\n          )\n        )\n\n        drawingActionInstance.cmp &&\n          drawingChildren.push(\n            h(drawingActionInstance.cmp, {\n              ref: drawingActionInstance.cmpRef,\n              editable: props.editable,\n              clampToGround: props.clampToGround,\n              mode: props.mode,\n              onDrawEvt: (e, viewer) => {\n                emit('drawEvt', e, viewer)\n              },\n              onEditorEvt: (e, viewer) => {\n                emit('editorEvt', e, viewer)\n              },\n              onMouseEvt: (e, viewer) => {\n                emit('mouseEvt', e, viewer)\n              },\n              ...drawingActionInstance.cmpOpts\n            })\n          )\n      })\n\n      drawingActionInstances.length &&\n        fabActionChildren.push(\n          h(\n            VcFabAction,\n            {\n              style: {\n                background: clearActionOpts.color,\n                color: clearActionOpts.textColor\n              },\n              class: 'vc-draw-button vc-draw-clear',\n              ...clearActionOpts,\n              onClick: clearAll\n            },\n            () =>\n              h(\n                VcTooltip,\n                {\n                  ...clearActionOpts.tooltip\n                },\n                () => h('strong', null, clearActionOpts.tooltip.tip || t(`vc.${cmpName}.clear.tip`))\n              )\n          )\n        )\n\n      const root: Array<VNode> = []\n      if (mounted.value) {\n        root.push(\n          h(\n            'div',\n            {\n              ref: containerRef,\n              class: 'vc-drawings-container ' + positionState.classes.value,\n              style: containerStyle\n            },\n            ctx.slots.body !== void 0\n              ? ctx.slots.body()\n              : h(\n                  VcFab,\n                  {\n                    ref: fabRef,\n                    class: 'vc-draw-button',\n                    style: {\n                      background: mainFabOpts.color,\n                      color: mainFabOpts.textColor\n                    },\n                    ...mainFabOpts,\n                    'onUpdate:modelValue': onUpdateFab\n                  },\n                  {\n                    default: () => fabActionChildren,\n                    tooltip: () =>\n                      h(\n                        VcTooltip,\n                        {\n                          ...mainFabOpts.tooltip\n                        },\n                        () =>\n                          h('strong', null, mainFabOpts.tooltip.tip || (mainFabOpts.modelValue ? t('vc.drawing.collapse') : t('vc.drawing.expand')))\n                      )\n                  }\n                )\n          )\n        )\n      }\n      root.push(\n        h(\n          VcCollectionPrimitive,\n          {\n            ref: primitiveCollection,\n            show: props.show,\n            onReady: onPrimitiveCollectionReady\n          },\n          () => drawingChildren\n        )\n      )\n\n      return root\n    } else {\n      return createCommentVNode('v-if')\n    }\n  }\n  return {\n    renderContent\n  }\n}\n","import { defineComponent, getCurrentInstance, ref, reactive, VNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { measurementsProps, defaultOptions } from './defaultProps'\nimport { camelize } from '@vue-cesium/utils/util'\nimport { VcFabAction, VcFabProps } from '@vue-cesium/components/ui'\nimport VcMeasurementDistance from './distance'\nimport VcMeasurementPolyline from './polyline'\nimport VcMeasurementHorizontal from './horizontal'\nimport VcMeasurementVertical from './vertical'\nimport VcMeasurementHeight from './height'\nimport VcMeasurementPoint from './point'\nimport VcMeasurementArea from './area'\nimport VcMeasurementRectangle from './rectangle'\nimport VcMeasurementRegular from './regular'\nimport type {\n  MeasurementActionCmpOpts,\n  MeasurementActionCmpRef,\n  MeasurementActionOpts,\n  VcComponentDistanceMeasurementOpts,\n  VcDrawingActionInstance,\n  VcHorizontalMeasurementOpts,\n  VcMeasurementOpts,\n  VcPolylineMeasurementOpts,\n  VcRegularMeasurementOpts\n} from '@vue-cesium/utils/drawing-types'\nimport type { VcActionTooltipProps, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useLocale } from '@vue-cesium/composables'\nimport useDrawingFab from '@vue-cesium/composables/use-drawing/use-drawing-fab'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...drawingEmit,\n  fabUpdated: (value: boolean) => true\n}\nexport default defineComponent({\n  name: 'VcMeasurements',\n  props: measurementsProps,\n  emits: emits,\n  setup(props: ExtractPropTypes<typeof measurementsProps>, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcMeasurements'\n    const { t } = useLocale()\n\n    const clearActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.clearActionOpts, props.clearActionOpts))\n    const mainFabOpts = reactive<VcActionTooltipProps & VcFabProps>(Object.assign({}, defaultOptions.mainFabOpts, props.mainFabOpts))\n\n    const distanceActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.distanceActionOpts, props.distanceActionOpts))\n    const distanceMeasurementOpts = reactive<VcMeasurementOpts>(\n      Object.assign({}, defaultOptions.distanceMeasurementOpts, props.distanceMeasurementOpts)\n    )\n\n    const componentDistanceActionOpts = reactive<VcActionTooltipProps>(\n      Object.assign({}, defaultOptions.componentDistanceActionOpts, props.componentDistanceActionOpts)\n    )\n    const componentDistanceMeasurementOpts = reactive<VcComponentDistanceMeasurementOpts>(\n      Object.assign({}, defaultOptions.componentDistanceMeasurementOpts, props.componentDistanceMeasurementOpts)\n    )\n\n    const polylineActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.polylineActionOpts, props.polylineActionOpts))\n    const polylineMeasurementOpts = reactive<VcPolylineMeasurementOpts>(\n      Object.assign({}, defaultOptions.polylineMeasurementOpts, props.polylineMeasurementOpts)\n    )\n\n    const horizontalActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.horizontalActionOpts, props.horizontalActionOpts))\n    const horizontalMeasurementOpts = reactive<VcHorizontalMeasurementOpts>(\n      Object.assign({}, defaultOptions.horizontalMeasurementOpts, props.horizontalMeasurementOpts)\n    )\n\n    const verticalActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.verticalActionOpts, props.verticalActionOpts))\n    const verticalMeasurementOpts = reactive<VcMeasurementOpts>(\n      Object.assign({}, defaultOptions.verticalMeasurementOpts, props.verticalMeasurementOpts)\n    )\n\n    const heightActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.heightActionOpts, props.heightActionOpts))\n    const heightMeasurementOpts = reactive<VcMeasurementOpts>(Object.assign({}, defaultOptions.heightMeasurementOpts, props.heightMeasurementOpts))\n\n    const areaActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.areaActionOpts, props.areaActionOpts))\n    const areaMeasurementOpts = reactive<VcPolylineMeasurementOpts>(Object.assign({}, defaultOptions.areaMeasurementOpts, props.areaMeasurementOpts))\n\n    const pointActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.pointActionOpts, props.pointActionOpts))\n    const pointMeasurementOpts = reactive<VcMeasurementOpts>(Object.assign({}, defaultOptions.pointMeasurementOpts, props.pointMeasurementOpts))\n\n    const rectangleActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.rectangleActionOpts, props.rectangleActionOpts))\n    const rectangleMeasurementOpts = reactive<VcRegularMeasurementOpts>(\n      Object.assign({}, defaultOptions.rectangleMeasurementOpts, props.rectangleMeasurementOpts)\n    )\n\n    const regularActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.regularActionOpts, props.regularActionOpts))\n    const regularMeasurementOpts = reactive<VcRegularMeasurementOpts>(\n      Object.assign({}, defaultOptions.regularMeasurementOpts, props.regularMeasurementOpts)\n    )\n\n    const circleActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.circleActionOpts, props.circleActionOpts))\n    const circleMeasurementOpts = reactive<VcRegularMeasurementOpts>(\n      Object.assign({}, defaultOptions.circleMeasurementOpts, props.circleMeasurementOpts)\n    )\n\n    const options: any = {}\n    options.distanceActionOpts = distanceActionOpts\n    options.distanceMeasurementOpts = distanceMeasurementOpts\n    options.componentDistanceActionOpts = componentDistanceActionOpts\n    options.componentDistanceMeasurementOpts = componentDistanceMeasurementOpts\n    options.polylineActionOpts = polylineActionOpts\n    options.polylineMeasurementOpts = polylineMeasurementOpts\n    options.horizontalActionOpts = horizontalActionOpts\n    options.horizontalMeasurementOpts = horizontalMeasurementOpts\n    options.verticalActionOpts = verticalActionOpts\n    options.verticalMeasurementOpts = verticalMeasurementOpts\n    options.heightActionOpts = heightActionOpts\n    options.heightMeasurementOpts = heightMeasurementOpts\n    options.areaActionOpts = areaActionOpts\n    options.areaMeasurementOpts = areaMeasurementOpts\n    options.pointActionOpts = pointActionOpts\n    options.pointMeasurementOpts = pointMeasurementOpts\n    options.rectangleActionOpts = rectangleActionOpts\n    options.rectangleMeasurementOpts = rectangleMeasurementOpts\n    options.regularActionOpts = regularActionOpts\n    options.regularMeasurementOpts = regularMeasurementOpts\n    options.circleActionOpts = circleActionOpts\n    options.circleMeasurementOpts = circleMeasurementOpts\n    options.clearActionOpts = clearActionOpts\n\n    const drawingActionInstances: Array<VcDrawingActionInstance> = props.measurements.map(measurement => ({\n      name: measurement,\n      type: 'measurement',\n      actionStyle: {\n        background: options[`${camelize(measurement)}ActionOpts`].color,\n        color: options[`${camelize(measurement)}ActionOpts`].textColor\n      },\n      actionClass: `vc-measure-${measurement} vc-measure-button${\n        measurement === (instance.proxy as any).selectedDrawingActionInstance?.name ? ' active' : ''\n      }`,\n      actionRef: ref<typeof VcFabAction>(null!),\n      actionOpts: options[`${camelize(measurement)}ActionOpts`] as MeasurementActionOpts,\n      cmp: getMeasurementCmp(measurement),\n      cmpRef: ref<MeasurementActionCmpRef>(null!),\n      cmpOpts: options[`${camelize(measurement)}MeasurementOpts`] as MeasurementActionCmpOpts,\n      tip: options[`${camelize(measurement)}ActionOpts`].tooltip.tip || t(`vc.measurement.${measurement}.tip`),\n      isActive: false\n    }))\n\n    function getMeasurementCmp(name) {\n      switch (name) {\n        case 'distance':\n        case 'component-distance':\n          return VcMeasurementDistance\n        case 'polyline':\n          return VcMeasurementPolyline\n        case 'horizontal':\n          return VcMeasurementHorizontal\n        case 'vertical':\n          return VcMeasurementVertical\n        case 'height':\n          return VcMeasurementHeight\n        case 'point':\n          return VcMeasurementPoint\n        case 'area':\n          return VcMeasurementArea\n        case 'rectangle':\n          return VcMeasurementRectangle\n        case 'regular':\n        case 'circle':\n          return VcMeasurementRegular\n        default:\n          return undefined\n      }\n    }\n\n    return useDrawingFab(props, ctx, instance, drawingActionInstances, mainFabOpts, clearActionOpts, 'measurement')?.renderContent\n  }\n})\n\nexport {\n  VcMeasurementDistance,\n  VcMeasurementPolyline,\n  VcMeasurementHorizontal,\n  VcMeasurementVertical,\n  VcMeasurementHeight,\n  VcMeasurementPoint,\n  VcMeasurementArea,\n  VcMeasurementRectangle,\n  VcMeasurementRegular,\n  measurementsProps\n}\n\nexport type { VcMeasurementsProps } from './defaultProps'\nexport type VcMeasurementsEmits = typeof emits\nexport type VcMeasurementsSlots = {\n  /**\n   * body slot content of the component\n   */\n  body: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-18 14:54:42\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\index.ts\n */\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\nimport { App } from 'vue'\nimport Measurements from './src'\n\nMeasurements.install = (app: App): void => {\n  app.component(Measurements.name, Measurements)\n}\n\nconst _Measurements = Measurements as SFCWithInstall<typeof Measurements>\n\nexport default _Measurements\nexport const VcMeasurements = _Measurements\n\nexport * from './src'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-18 10:40:15\n * @LastEditTime: 2022-02-18 23:30:28\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\defaultProps.ts\n */\n\nimport {\n  actionOptions,\n  billboardOptsDefault,\n  circleDrawingActionDefault,\n  circleDrawingDefault,\n  labelOptsDefault,\n  pointDrawingDefault,\n  pointOptsDefault,\n  polygonDrawingDefault,\n  polylineDrawingDefault,\n  rectangleDrawingDefault,\n  regularDrawingActionDefault,\n  regularDrawingDefault\n} from '@vue-cesium/composables/use-drawing/defaultOpts'\nimport { useDrawingFabProps } from '@vue-cesium/composables/use-drawing/props'\nimport { VcDrawingActiveEvt, VcDrawingDrawEvt, VcDrawingEditorEvt, VcDrawingMouseEvt, VcDrawingOpts } from '@vue-cesium/utils/drawing-types'\nimport type { VcActionTooltipProps, VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { getDefaultOptionByProps } from '@vue-cesium/utils/util'\nimport type { PropType, ExtractPropTypes } from 'vue'\nimport { VcFabProps } from '../../ui'\n\nconst pointDrawingActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-drawing-point'\n})\n\nconst polylineDrawingActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-drawing-polyline'\n})\n\nconst polygonDrawingActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-drawing-polygon'\n})\n\nconst rectangleDrawingActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-drawing-rectangle'\n})\n\nconst pinDrawingActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-drawing-pin'\n})\n\nconst pinDrawingDefault: VcDrawingOpts = Object.assign({}, pointDrawingDefault, {\n  pointOpts: Object.assign({}, pointOptsDefault, {\n    show: false\n  }),\n  billboardOpts: billboardOptsDefault,\n  labelOpts: Object.assign({}, labelOptsDefault, {\n    pixelOffset: [0, -30],\n    verticalOrigin: 1\n  })\n})\n\nconst mainFabDefault = Object.assign({}, actionOptions, {\n  direction: 'right',\n  icon: 'vc-icons-drawing-button',\n  activeIcon: 'vc-icons-drawing-button',\n  verticalActionsAlign: 'center',\n  hideIcon: false,\n  persistent: false,\n  modelValue: true,\n  hideActionOnClick: false,\n  color: 'info'\n} as VcFabProps)\n\nexport const drawingType = ['pin', 'point', 'polyline', 'polygon', 'rectangle', 'regular', 'circle']\n\nconst isValidDrawingType = (drawings: string[]) => {\n  let flag = true\n  drawings.forEach(drawing => {\n    if (!drawingType.includes(drawing)) {\n      console.error(`VueCesium: unknown drawing type: ${drawing}`)\n      flag = false\n    }\n  })\n  return flag\n}\n\nconst drawingsProps = {\n  ...useDrawingFabProps,\n  drawings: {\n    type: Array as PropType<Array<'pin' | 'point' | 'polyline' | 'polygon' | 'rectangle' | 'regular' | 'circle'>>,\n    default: () => drawingType,\n    validator: isValidDrawingType\n  },\n  mainFabOpts: {\n    type: Object as PropType<VcActionTooltipProps & VcFabProps>,\n    default: () => mainFabDefault\n  },\n  pinActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => pinDrawingActionDefault\n  },\n  pinDrawingOpts: {\n    type: Object as PropType<VcDrawingOpts>,\n    default: () => pinDrawingDefault\n  },\n  pointActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => pointDrawingActionDefault\n  },\n  pointDrawingOpts: {\n    type: Object as PropType<VcDrawingOpts>,\n    default: () => pointDrawingDefault\n  },\n  polylineActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => polylineDrawingActionDefault\n  },\n  polylineDrawingOpts: {\n    type: Object as PropType<VcDrawingOpts>,\n    default: () => polylineDrawingDefault\n  },\n  polygonActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => polygonDrawingActionDefault\n  },\n  polygonDrawingOpts: {\n    type: Object as PropType<VcDrawingOpts>,\n    default: () => polygonDrawingDefault\n  },\n  rectangleActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => rectangleDrawingActionDefault\n  },\n  rectangleDrawingOpts: {\n    type: Object as PropType<VcDrawingOpts>,\n    default: () => rectangleDrawingDefault\n  },\n  circleActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => circleDrawingActionDefault\n  },\n  circleDrawingOpts: {\n    type: Object as PropType<VcDrawingOpts>,\n    default: () => circleDrawingDefault\n  },\n  regularActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => regularDrawingActionDefault\n  },\n  regularDrawingOpts: {\n    type: Object as PropType<VcDrawingOpts>,\n    default: () => regularDrawingDefault\n  }\n}\n\n// export type VcDrawingsProps = ExtractPropTypes<typeof drawingsProps>\nconst defaultOptions = getDefaultOptionByProps<VcDrawingsProps>(drawingsProps)\n\nexport {\n  drawingsProps,\n  defaultOptions,\n  pointDrawingActionDefault,\n  polylineDrawingActionDefault,\n  polygonDrawingActionDefault,\n  rectangleDrawingActionDefault,\n  pinDrawingActionDefault,\n  pinDrawingDefault,\n  mainFabDefault\n}\n\nexport type VcDrawingsProps = {\n  /**\n   * Specify the position of the VcDrawings.\n   * Default value: bottom-left\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcDrawings horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify whether the drawing result is visible.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify the interactive drawing mode, 0 means continuous drawing, and 1 means drawing ends once.\n   * Default value: 1\n   */\n  mode?: number\n  /**\n   * Specify which drawing instances to load.\n   * Default value: ['pin', 'point', 'polyline', 'polygon', 'rectangle', 'regular', 'circle']\n   */\n  drawings?: Array<'pin' | 'point' | 'polyline' | 'polygon' | 'rectangle' | 'regular' | 'circle'>\n  /**\n   * Specify the color when the drawing instance is activated.\n   * Default value: positive\n   */\n  activeColor?: string\n  /**\n   * Specify whether the drawing result can be edited.\n   * Default value: false\n   */\n  editable?: boolean\n  /**\n   * Specify whether the drawing result object is attached to the ground or 3dtiles. Only polyline and polygon objects work.\n   * Default value: false\n   */\n  clampToGround?: boolean\n  /**\n   * Specify the style options of the floating action button of the VcMeasurements component.\n   */\n  mainFabOpts?: VcActionTooltipProps & VcFabProps\n  /**\n   * Specify the style options of the pin drawing action button.\n   */\n  pinActionOpts?: VcActionTooltipProps\n  /**\n   * Specify pin drawing options.\n   */\n  pinDrawingOpts?: VcDrawingOpts\n  /**\n   * Specify the style options of the point drawing action button.\n   */\n  pointActionOpts?: VcActionTooltipProps\n  /**\n   * Specify point drawing options.\n   */\n  pointDrawingOpts?: VcDrawingOpts\n  /**\n   * Specify the style options of the polyline drawing action button.\n   */\n  polylineActionOpts?: VcActionTooltipProps\n  /**\n   * Specify polyline drawing options.\n   */\n  polylineDrawingOpts?: VcDrawingOpts\n  /**\n   * Specify the style options of the polygon drawing action button.\n   */\n  polygonActionOpts?: VcActionTooltipProps\n  /**\n   * Specify polygon drawing options.\n   */\n  polygonDrawingOpts?: VcDrawingOpts\n  /**\n   * Specify the style options of the rectangle drawing action button.\n   */\n  rectangleActionOpts?: VcActionTooltipProps\n  /**\n   * Specify rectangle drawing options.\n   */\n  rectangleDrawingOpts?: VcDrawingOpts\n  /**\n   * Specify the style options of the circle drawing action button.\n   */\n  circleActionOpts?: VcActionTooltipProps\n  /**\n   * Specify circle drawing options.\n   */\n  circleDrawingOpts?: VcDrawingOpts\n  /**\n   * Specify the style options of the regular drawing action button.\n   */\n  regularActionOpts?: VcActionTooltipProps\n  /**\n   * Specify regular drawing options.\n   */\n  regularDrawingOpts?: VcDrawingOpts\n  /**\n   * Specify the style options of the clear action button.\n   */\n  clearActionOpts?: VcActionTooltipProps\n  /**\n   * Triggers before the VcDrawings is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcDrawings is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcDrawings is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the measurement action is actived.\n   */\n  onActiveEvt?: (evt: VcDrawingActiveEvt, viewer: Cesium.Viewer) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt, viewer: Cesium.Viewer) => void\n  /**\n   * Triggers when the editor button is clicked.\n   */\n  onEditorEvt?: (evt: VcDrawingEditorEvt, viewer: Cesium.Viewer) => void\n  /**\n   * Triggers when the mouse is over or out on the drawing point.\n   */\n  onMouseEvt?: (evt: VcDrawingMouseEvt, viewer: Cesium.Viewer) => void\n  /**\n   * Triggers when the floating button is expanded or collapsed.\n   */\n  onFabUpdated: (value: boolean) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:22\n * @LastEditTime: 2022-02-08 11:01:20\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\pin\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { defineComponent } from 'vue'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport useDrawingPoint from '@vue-cesium/composables/use-drawing/use-drawing-point'\nimport type { VcBillboardProps, VcLabelProps } from '../../../primitive-collections'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\n\nexport default defineComponent({\n  name: 'VcDrawingPin',\n  props: {\n    ...useDrawingActionProps,\n    billboardOpts: Object as PropType<VcBillboardProps>,\n    labelOpts: Object as PropType<VcLabelProps>,\n    heightReference: Number,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPoint(props, ctx, 'VcDrawingPin')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:22\n * @LastEditTime: 2022-02-08 11:01:23\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\point\\index.ts\n */\nimport { defineComponent } from 'vue'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport useDrawingPoint from '@vue-cesium/composables/use-drawing/use-drawing-point'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\n\nexport default defineComponent({\n  name: 'VcDrawingPoint',\n  props: {\n    ...useDrawingActionProps,\n    heightReference: Number,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPoint(props, ctx, 'VcDrawingPoint')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-08 11:01:33\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\polyline\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { defineComponent } from 'vue'\nimport useDrawingPolyline from '@vue-cesium/composables/use-drawing/use-drawing-polyline'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\n\nexport default defineComponent({\n  name: 'VcDrawingPolyline',\n  props: {\n    ...useDrawingActionProps,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    loop: Boolean,\n    clampToGround: Boolean,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPolyline(props, ctx, 'VcDrawingPolyline')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-08 11:01:28\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\polygon\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { defineComponent } from 'vue'\nimport useDrawingPolyline from '@vue-cesium/composables/use-drawing/use-drawing-polyline'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport type { VcPolygonProps } from '../../../primitive-collections'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\n\nexport default defineComponent({\n  name: 'VcDrawingPolygon',\n  props: {\n    ...useDrawingActionProps,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    polygonOpts: Object as PropType<VcPolygonProps>,\n    loop: Boolean,\n    clampToGround: Boolean,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPolyline(props, ctx, 'VcDrawingPolygon')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:22\n * @LastEditTime: 2022-02-08 11:01:40\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\regular\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { defineComponent } from 'vue'\nimport useDrawingSegment from '@vue-cesium/composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nimport type { VcPolygonProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nexport default defineComponent({\n  name: 'VcDrawingRegular',\n  props: {\n    ...useDrawingActionProps,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    polygonOpts: Object as PropType<VcPolygonProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    clampToGround: Boolean,\n    edge: Number,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcDrawingRegular')\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-08 11:01:36\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\rectangle\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { defineComponent } from 'vue'\nimport useDrawingSegment from '@vue-cesium/composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport type { VcPolygonProps } from '../../../primitive-collections'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nexport default defineComponent({\n  name: 'VcDrawingRectangle',\n  props: {\n    ...useDrawingActionProps,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    polygonOpts: Object as PropType<VcPolygonProps>,\n    clampToGround: Boolean,\n    disableDepthTest: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcDrawingRectangle')\n  }\n})\n","import { defineComponent, getCurrentInstance, ref, ExtractPropTypes, reactive, VNode } from 'vue'\nimport { drawingsProps, defaultOptions } from './defaultProps'\nimport { camelize } from '@vue-cesium/utils/util'\nimport { VcFabAction, VcFabProps } from '@vue-cesium/components/ui'\nimport type { VcActionTooltipProps, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport VcDrawingPin from './pin'\nimport VcDrawingPoint from './point'\nimport VcDrawingPolyline from './polyline'\nimport VcDrawingPolygon from './polygon'\nimport VcDrawingRegular from './regular'\nimport VcDrawingRectangle from './rectangle'\nimport type {\n  DrawingActionCmpOpts,\n  DrawingActionCmpRef,\n  DrawingActionOpts,\n  VcDrawingActionInstance,\n  VcDrawingOpts\n} from '@vue-cesium/utils/drawing-types'\nimport useDrawingFab from '@vue-cesium/composables/use-drawing/use-drawing-fab'\nimport { useLocale } from '@vue-cesium/composables'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...drawingEmit,\n  fabUpdated: (value: boolean) => true\n}\nexport default defineComponent({\n  name: 'VcDrawings',\n  props: drawingsProps,\n  emits: emits,\n  setup(props: ExtractPropTypes<typeof drawingsProps>, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcDrawings'\n    const { t } = useLocale()\n\n    const options: any = {}\n    // computed\n    const clearActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.clearActionOpts, props.clearActionOpts))\n    const mainFabOpts = reactive<VcActionTooltipProps & VcFabProps>(Object.assign({}, defaultOptions.mainFabOpts, props.mainFabOpts))\n    const pointActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.pointActionOpts, props.pointActionOpts))\n    const pointDrawingOpts = reactive<VcDrawingOpts>(Object.assign({}, defaultOptions.pointDrawingOpts, props.pointDrawingOpts))\n    const polylineActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.polylineActionOpts, props.polylineActionOpts))\n    const polylineDrawingOpts = reactive<VcDrawingOpts>(Object.assign({}, defaultOptions.polylineDrawingOpts, props.polylineDrawingOpts))\n    const polygonActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.polygonActionOpts, props.polygonActionOpts))\n    const polygonDrawingOpts = reactive<VcDrawingOpts>(Object.assign({}, defaultOptions.polygonDrawingOpts, props.polygonDrawingOpts))\n    const rectangleActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.rectangleActionOpts, props.rectangleActionOpts))\n    const rectangleDrawingOpts = reactive<VcDrawingOpts>(Object.assign({}, defaultOptions.rectangleDrawingOpts, props.rectangleDrawingOpts))\n    const circleActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.circleActionOpts, props.circleActionOpts))\n    const circleDrawingOpts = reactive<VcDrawingOpts>(Object.assign({}, defaultOptions.circleDrawingOpts, props.circleDrawingOpts))\n    const regularActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.regularActionOpts, props.regularActionOpts))\n    const regularDrawingOpts = reactive<VcDrawingOpts>(Object.assign({}, defaultOptions.regularDrawingOpts, props.regularDrawingOpts))\n    const pinActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.pinActionOpts, props.pinActionOpts))\n    const pinDrawingOpts = reactive<VcDrawingOpts>(Object.assign({}, defaultOptions.pinDrawingOpts, props.pinDrawingOpts))\n\n    options.pointActionOpts = pointActionOpts\n    options.pointDrawingOpts = pointDrawingOpts\n    options.polylineActionOpts = polylineActionOpts\n    options.polylineDrawingOpts = polylineDrawingOpts\n    options.polygonActionOpts = polygonActionOpts\n    options.polygonDrawingOpts = polygonDrawingOpts\n    options.rectangleActionOpts = rectangleActionOpts\n    options.rectangleDrawingOpts = rectangleDrawingOpts\n    options.circleActionOpts = circleActionOpts\n    options.circleDrawingOpts = circleDrawingOpts\n    options.regularActionOpts = regularActionOpts\n    options.regularDrawingOpts = regularDrawingOpts\n    options.pinActionOpts = pinActionOpts\n    options.pinDrawingOpts = pinDrawingOpts\n    options.clearActionOpts = clearActionOpts\n\n    const drawingActionInstances: Array<VcDrawingActionInstance> = props.drawings.map(drawing => ({\n      name: drawing,\n      type: 'drawing',\n      actionStyle: {\n        background: options[`${camelize(drawing)}ActionOpts`].color,\n        color: options[`${camelize(drawing)}ActionOpts`].textColor\n      },\n      actionClass: `vc-draw-${drawing} vc-draw-button${drawing === (instance.proxy as any).selectedDrawingActionInstance?.name ? ' active' : ''}`,\n      actionRef: ref<typeof VcFabAction>(null!),\n      actionOpts: options[`${camelize(drawing)}ActionOpts`] as DrawingActionOpts,\n      cmp: getDrawingCmp(drawing),\n      cmpRef: ref<DrawingActionCmpRef>(null!),\n      cmpOpts: options[`${camelize(drawing)}DrawingOpts`] as DrawingActionCmpOpts,\n      tip: options[`${camelize(drawing)}ActionOpts`].tooltip.tip || t(`vc.drawing.${camelize(drawing)}.tip`),\n      isActive: false\n    }))\n\n    function getDrawingCmp(name) {\n      switch (name) {\n        case 'pin':\n          return VcDrawingPin\n        case 'point':\n          return VcDrawingPoint\n        case 'polyline':\n          return VcDrawingPolyline\n        case 'polygon':\n          return VcDrawingPolygon\n        case 'rectangle':\n          if (rectangleDrawingOpts.regular) {\n            return VcDrawingRegular\n          } else {\n            return VcDrawingRectangle\n          }\n        case 'circle':\n        case 'regular':\n          return VcDrawingRegular\n        default:\n          return void 0\n      }\n    }\n\n    return useDrawingFab(props, ctx, instance, drawingActionInstances, mainFabOpts, clearActionOpts, 'drawing')?.renderContent\n  }\n})\n\nexport { VcDrawingPin, VcDrawingPoint, VcDrawingPolygon, VcDrawingPolyline, VcDrawingRectangle, VcDrawingRegular, drawingsProps }\n\nexport type { VcDrawingsProps } from './defaultProps'\nexport type VcDrawingsEmits = typeof emits\nexport type VcDrawingsSlots = {\n  /**\n   * body slot content of the component\n   */\n  body: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-21 09:53:29\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\index.ts\n */\nimport { App } from 'vue'\nimport Drawings from './src'\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\n\nDrawings.install = (app: App): void => {\n  app.component(Drawings.name, Drawings)\n}\n\nconst _Drawings = Drawings as SFCWithInstall<typeof Drawings>\n\nexport default _Drawings\nexport const VcDrawings = _Drawings\n\nexport * from './src'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 10:55:34\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\arcgis\\imagery.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport {\n  token,\n  tileDiscardPolicy,\n  layers,\n  enablePickFeatures,\n  rectangle,\n  tilingScheme,\n  ellipsoid,\n  credit,\n  tileWidth,\n  tileHeight,\n  maximumLevel\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\nexport const arcgisImageryProviderProps = {\n  url: {\n    type: [String, Object] as PropType<string | Cesium.Resource>,\n    default: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'\n  },\n  ...token,\n  ...tileDiscardPolicy,\n  usePreCachedTilesIfAvailable: {\n    type: Boolean,\n    default: true\n  },\n  ...layers,\n  ...enablePickFeatures,\n  ...rectangle,\n  ...tilingScheme,\n  ...ellipsoid,\n  ...credit,\n  ...tileWidth,\n  ...tileHeight,\n  ...maximumLevel\n}\nexport default defineComponent({\n  name: 'VcImageryProviderArcgis',\n  props: arcgisImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'ArcGisMapServerImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderArcgisProps = ExtractPropTypes<typeof arcgisImageryProviderProps>\n","import { isString } from '@vue-cesium/utils/util'\n\nclass Point {\n  lat: number\n  lng: number\n  constructor(lng, lat) {\n    // 新增base64支持 - by jz\n    if (isNaN(lng)) {\n      // lng = decode64(lng)\n      lng = isNaN(lng) ? 0 : lng\n    }\n    if (isString(lng)) {\n      lng = parseFloat(lng)\n    }\n    if (isNaN(lat)) {\n      // lat = decode64(lat)\n      lat = isNaN(lat) ? 0 : lat\n    }\n    if (isString(lat)) {\n      lat = parseFloat(lat)\n    }\n    this.lng = lng\n    this.lat = lat\n  }\n\n  equals(other) {\n    return other && this.lat === other.lat && this.lng === other.lng\n  }\n\n  static isInRange = function (pt) {\n    return pt && pt.lng <= 180 && pt.lng >= -180 && pt.lat <= 74 && pt.lat >= -74\n  }\n}\n\nexport default Point\n","class Pixel {\n  x: number\n  y: number\n  constructor(x, y) {\n    this.x = x || 0\n    this.y = y || 0\n  }\n\n  equals(other) {\n    return other && other.x === this.x && other.y === this.y\n  }\n}\n\nexport default Pixel\n","import Point from './Point'\nimport Pixel from './Pixel'\n\n/**\n * Projection used by [Baidu Map]{@link https://github.com/openlayers/openlayers/issues/3522}\n */\nclass BaiduMapMercatorProjection {\n  // constructor () {\n  //   super()\n  // }\n\n  static EARTHRADIUS = 6370996.81\n  static MCBAND = [12890594.86, 8362377.87, 5591021, 3481989.83, 1678043.12, 0]\n  static LLBAND = [75, 60, 45, 30, 15, 0]\n  static MC2LL = [\n    [\n      1.410526172116255e-8, 8.98305509648872e-6, -1.9939833816331, 2.009824383106796e2, -1.872403703815547e2, 91.6087516669843, -23.38765649603339,\n      2.57121317296198, -0.03801003308653, 1.73379812e7\n    ],\n    [\n      -7.435856389565537e-9, 8.983055097726239e-6, -0.78625201886289, 96.32687599759846, -1.85204757529826, -59.36935905485877, 47.40033549296737,\n      -16.50741931063887, 2.28786674699375, 1.026014486e7\n    ],\n    [\n      -3.030883460898826e-8, 8.98305509983578e-6, 0.30071316287616, 59.74293618442277, 7.357984074871, -25.38371002664745, 13.45380521110908,\n      -3.29883767235584, 0.32710905363475, 6.85681737e6\n    ],\n    [\n      -1.981981304930552e-8, 8.983055099779535e-6, 0.03278182852591, 40.31678527705744, 0.65659298677277, -4.44255534477492, 0.85341911805263,\n      0.12923347998204, -0.04625736007561, 4.48277706e6\n    ],\n    [\n      3.09191371068437e-9, 8.983055096812155e-6, 0.00006995724062, 23.10934304144901, -0.00023663490511, -0.6321817810242, -0.00663494467273,\n      0.03430082397953, -0.00466043876332, 2.5551644e6\n    ],\n    [\n      2.890871144776878e-9, 8.983055095805407e-6, -0.00000003068298, 7.47137025468032, -0.00000353937994, -0.02145144861037, -0.00001234426596,\n      0.00010322952773, -0.00000323890364, 8.260885e5\n    ]\n  ]\n\n  static LL2MC = [\n    [\n      -0.0015702102444, 1.113207020616939e5, 1.704480524535203e15, -1.033898737604234e16, 2.611266785660388e16, -3.51496691766537e16,\n      2.659570071840392e16, -1.072501245418824e16, 1.800819912950474e15, 82.5\n    ],\n    [\n      8.277824516172526e-4, 1.113207020463578e5,\n      // eslint-disable-next-line no-loss-of-precision\n      // eslint-disable-next-line @typescript-eslint/no-loss-of-precision\n      6.477955746671608e8, -4.082003173641316e9, 1.077490566351142e10, -1.517187553151559e10, 1.205306533862167e10, -5.124939663577472e9,\n      9.133119359512032e8, 67.5\n    ],\n    [\n      0.00337398766765, 1.113207020202162e5, 4.481351045890365e6, -2.339375119931662e7, 7.968221547186455e7, -1.159649932797253e8,\n      9.723671115602145e7, -4.366194633752821e7, 8.477230501135234e6, 52.5\n    ],\n    [\n      0.00220636496208, 1.113207020209128e5, 5.175186112841131e4, 3.796837749470245e6, 9.920137397791013e5, -1.22195221711287e6, 1.340652697009075e6,\n      -6.209436990984312e5, 1.444169293806241e5, 37.5\n    ],\n    [\n      -3.441963504368392e-4, 1.113207020576856e5, 2.782353980772752e2, 2.485758690035394e6, 6.070750963243378e3, 5.482118345352118e4,\n      9.540606633304236e3, -2.71055326746645e3, 1.405483844121726e3, 22.5\n    ],\n    [\n      -3.218135878613132e-4, 1.113207020701615e5, 0.00369383431289, 8.237256402795718e5, 0.46104986909093, 2.351343141331292e3, 1.58060784298199,\n      8.77738589078284, 0.37238884252424, 7.45\n    ]\n  ]\n\n  /**\n   * 根据平面直角坐标计算两点间距离;\n   * @param {Point} point1 平面直角点坐标1\n   * @param {Point} point2 平面直角点坐标2;\n   * @return {Number} 返回两点间的距离\n   */\n  static getDistanceByMC = function (point1, point2) {\n    if (!point1 || !point2) return 0\n    point1 = BaiduMapMercatorProjection.convertMC2LL(point1)\n    if (!point1) return 0\n    const x1 = BaiduMapMercatorProjection.toRadians(point1.lng)\n    const y1 = BaiduMapMercatorProjection.toRadians(point1.lat)\n    point2 = BaiduMapMercatorProjection.convertMC2LL(point2)\n    if (!point2) return 0\n    const x2 = BaiduMapMercatorProjection.toRadians(point2.lng)\n    const y2 = BaiduMapMercatorProjection.toRadians(point2.lat)\n    return BaiduMapMercatorProjection.getDistance(x1, x2, y1, y2)\n  }\n\n  /**\n   * 根据经纬度坐标计算两点间距离;\n   * @param {Point} point1 经纬度点坐标1\n   * @param {Point} point2 经纬度点坐标2;\n   * @return {Number} 返回两点间的距离\n   */\n  static getDistanceByLL = function (point1, point2) {\n    if (!point1 || !point2) return 0\n    point1.lng = BaiduMapMercatorProjection.getLoop(point1.lng, -180, 180)\n    point1.lat = BaiduMapMercatorProjection.getRange(point1.lat, -74, 74)\n    point2.lng = BaiduMapMercatorProjection.getLoop(point2.lng, -180, 180)\n    point2.lat = BaiduMapMercatorProjection.getRange(point2.lat, -74, 74)\n    const x1 = BaiduMapMercatorProjection.toRadians(point1.lng)\n    const y1 = BaiduMapMercatorProjection.toRadians(point1.lat)\n    const x2 = BaiduMapMercatorProjection.toRadians(point2.lng)\n    const y2 = BaiduMapMercatorProjection.toRadians(point2.lat)\n    return BaiduMapMercatorProjection.getDistance(x1, x2, y1, y2)\n  }\n\n  /**\n   * 平面直角坐标转换成经纬度坐标;\n   * @param {Point} point 平面直角坐标\n   * @return {Point} 返回经纬度坐标\n   */\n  static convertMC2LL = function (point) {\n    let factor\n    const temp = new Point(Math.abs(point.lng), Math.abs(point.lat))\n    for (let i = 0; i < BaiduMapMercatorProjection.MCBAND.length; i++) {\n      if (temp.lat >= BaiduMapMercatorProjection.MCBAND[i]) {\n        factor = BaiduMapMercatorProjection.MC2LL[i]\n        break\n      }\n    }\n    const lnglat = BaiduMapMercatorProjection.convertor(point, factor)\n    return new Point(lnglat?.lng.toFixed(6), lnglat?.lat.toFixed(6))\n  }\n\n  /**\n   * 经纬度坐标转换成平面直角坐标;\n   * @param {Point} point 经纬度坐标\n   * @return {Point} 返回平面直角坐标\n   */\n  static convertLL2MC = function (point) {\n    let factor\n    point.lng = BaiduMapMercatorProjection.getLoop(point.lng, -180, 180)\n    point.lat = BaiduMapMercatorProjection.getRange(point.lat, -74, 74)\n    const temp = new Point(point.lng, point.lat)\n    for (let i = 0; i < BaiduMapMercatorProjection.LLBAND.length; i++) {\n      if (temp.lat >= BaiduMapMercatorProjection.LLBAND[i]) {\n        factor = BaiduMapMercatorProjection.LL2MC[i]\n        break\n      }\n    }\n    if (!factor) {\n      for (let i = BaiduMapMercatorProjection.LLBAND.length - 1; i >= 0; i--) {\n        if (temp.lat <= -BaiduMapMercatorProjection.LLBAND[i]) {\n          factor = BaiduMapMercatorProjection.LL2MC[i]\n          break\n        }\n      }\n    }\n    const mc = BaiduMapMercatorProjection.convertor(point, factor)\n    return new Point(mc?.lng.toFixed(2), mc?.lat.toFixed(2))\n  }\n\n  static convertor = function (fromPoint, factor) {\n    if (!fromPoint || !factor) {\n      return\n    }\n    let x = factor[0] + factor[1] * Math.abs(fromPoint.lng)\n    const temp = Math.abs(fromPoint.lat) / factor[9]\n    let y =\n      factor[2] +\n      factor[3] * temp +\n      factor[4] * temp * temp +\n      factor[5] * temp * temp * temp +\n      factor[6] * temp * temp * temp * temp +\n      factor[7] * temp * temp * temp * temp * temp +\n      factor[8] * temp * temp * temp * temp * temp * temp\n    x *= fromPoint.lng < 0 ? -1 : 1\n    y *= fromPoint.lat < 0 ? -1 : 1\n    return new Point(x, y)\n  }\n\n  static getDistance = function (x1, x2, y1, y2) {\n    return BaiduMapMercatorProjection.EARTHRADIUS * Math.acos(Math.sin(y1) * Math.sin(y2) + Math.cos(y1) * Math.cos(y2) * Math.cos(x2 - x1))\n  }\n\n  static toRadians = function (angdeg) {\n    return (Math.PI * angdeg) / 180\n  }\n\n  static toDegrees = function (angrad) {\n    return (180 * angrad) / Math.PI\n  }\n\n  static getRange = function (v, a, b) {\n    if (a != null) {\n      v = Math.max(v, a)\n    }\n    if (b != null) {\n      v = Math.min(v, b)\n    }\n    return v\n  }\n\n  static getLoop = function (v, a, b) {\n    while (v > b) {\n      v -= b - a\n    }\n    while (v < a) {\n      v += b - a\n    }\n    return v\n  }\n\n  /**\n   * 经纬度变换至墨卡托坐标\n   * @param Point 经纬度\n   * @return Point 墨卡托\n   */\n  lngLatToMercator(point, curCity?) {\n    return BaiduMapMercatorProjection.convertLL2MC(point)\n  }\n\n  /**\n   * 球面到平面坐标\n   * @param Point 球面坐标\n   * @return Pixel 平面坐标\n   */\n  lngLatToPoint(point: Point): Pixel {\n    const mercator = BaiduMapMercatorProjection.convertLL2MC(point)\n    return new Pixel(mercator.lng, mercator.lat)\n  }\n\n  /**\n   * 墨卡托变换至经纬度\n   * @param Point 墨卡托\n   * @returns Point 经纬度\n   */\n  mercatorToLngLat(point, curCity?) {\n    return BaiduMapMercatorProjection.convertMC2LL(point)\n  }\n\n  /**\n   * 平面到球面坐标\n   * @param Pixel 平面坐标\n   * @returns Point 球面坐标\n   */\n  pointToLngLat(point) {\n    const mercator = new Point(point.x, point.y)\n    return BaiduMapMercatorProjection.convertMC2LL(mercator)\n  }\n\n  /**\n   * 地理坐标转换至像素坐标\n   * @param Point 地理坐标\n   * @param Number 级别\n   * @param Point 地图中心点，注意为了保证没有误差，这里需要传递墨卡托坐标\n   * @param Size 地图容器大小\n   * @return Pixel 像素坐标\n   */\n  pointToPixel(point, zoom, mapCenter, mapSize, curCity) {\n    if (!point) {\n      return\n    }\n    point = this.lngLatToMercator(point, curCity)\n    mapCenter = this.lngLatToMercator(mapCenter)\n    const zoomUnits = this.getZoomUnits(zoom)\n    const x = Math.round((point.lng - mapCenter.lng) / zoomUnits + mapSize.width / 2)\n    const y = Math.round((mapCenter.lat - point.lat) / zoomUnits + mapSize.height / 2)\n    return new Pixel(x, y)\n  }\n\n  /**\n   * 像素坐标转换至地理坐标\n   * @param Pixel 像素坐标\n   * @param Number 级别\n   * @param Point 地图中心点，注意为了保证没有误差，这里需要传递墨卡托坐标\n   * @param Size 地图容器大小\n   * @return Point 地理坐标\n   */\n  pixelToPoint(pixel, zoom, mapCenter, mapSize, curCity) {\n    if (!pixel) {\n      return\n    }\n    const zoomUnits = this.getZoomUnits(zoom)\n    const lng = mapCenter.lng + zoomUnits * (pixel.x - mapSize.width / 2)\n    const lat = mapCenter.lat - zoomUnits * (pixel.y - mapSize.height / 2)\n    const point = new Point(lng, lat)\n    return this.mercatorToLngLat(point, curCity)\n  }\n\n  getZoomUnits(zoom) {\n    return Math.pow(2, 18 - zoom)\n  }\n}\n\nexport default BaiduMapMercatorProjection\n","import BaiduMapMercatorProjection from './BaiduMapMercatorProjection'\nimport Point from './Point'\nimport * as coordtransform from '@vue-cesium/utils/coordtransform'\n\n/**\n * A tiling scheme for geometry referenced to a BaiduMapMercatorProjection {@link https://cesium.com/docs/cesiumjs-ref-doc/WebMercatorTilingScheme.html}\n * {@link https://github.com/openlayers/openlayers/issues/3522#issuecomment-570493906}\n */\nclass BaiduMapMercatorTilingScheme {\n  _ellipsoid: any\n  _projection: any\n  _rectangleSouthwestInMeters: any\n  _rectangleNortheastInMeters: any\n  _rectangle: any\n  resolutions: any[]\n  constructor(options) {\n    const { defaultValue, Ellipsoid, WebMercatorProjection, Cartesian2, Cartographic, Math: CesiumMath, Rectangle } = Cesium\n    options = options || {}\n    this._ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84)\n    this._projection = new WebMercatorProjection(this._ellipsoid)\n    const projection = new BaiduMapMercatorProjection()\n    this._projection.project = function (cartographic, result) {\n      result = result || {}\n\n      if (options.projectionTransforms && options.projectionTransforms.from !== options.projectionTransforms.to) {\n        if (options.projectionTransforms.to.toUpperCase() === 'WGS84') {\n          result = coordtransform.wgs84togcj02(CesiumMath.toDegrees(cartographic.longitude), CesiumMath.toDegrees(cartographic.latitude))\n          result = coordtransform.gcj02tobd09(result[0], result[1])\n        } else {\n          result = coordtransform.gcj02tobd09(CesiumMath.toDegrees(cartographic.longitude), CesiumMath.toDegrees(cartographic.latitude))\n        }\n      }\n      result[0] = Math.min(result[0], 180)\n      result[0] = Math.max(result[0], -180)\n      result[1] = Math.min(result[1], 74.000022)\n      result[1] = Math.max(result[1], -71.988531)\n      result = projection.lngLatToPoint(new Point(result[0], result[1]))\n      return new Cartesian2(result.x, result.y)\n    }\n\n    this._projection.unproject = function (cartographic, result) {\n      result = result || {}\n      result = projection.mercatorToLngLat(new Point(cartographic.x, cartographic.y))\n      result[0] = ((result[0] + 180) % 360) - 180\n      if (options.projectionTransforms && options.projectionTransforms.from !== options.projectionTransforms.to) {\n        if (options.projectionTransforms.to.toUpperCase() === 'WGS84') {\n          result = coordtransform.bd09togcj02(result.lng, result.lat)\n          result = coordtransform.gcj02towgs84(result[0], result[1])\n        } else {\n          result = coordtransform.bd09togcj02(result.lng, result.lat)\n        }\n      }\n      return new Cartographic(Cesium.Math.toRadians(result[0]), Cesium.Math.toRadians(result[1]))\n    }\n\n    this._rectangleSouthwestInMeters = new Cartesian2(-20037726.37, -12474104.17)\n    this._rectangleNortheastInMeters = new Cartesian2(20037726.37, 12474104.17)\n    const rectangleSouthwestInMeters = this._projection.unproject(this._rectangleSouthwestInMeters)\n    const rectangleNortheastInMeters = this._projection.unproject(this._rectangleNortheastInMeters)\n    this._rectangle = new Rectangle(\n      rectangleSouthwestInMeters.longitude,\n      rectangleSouthwestInMeters.latitude,\n      rectangleNortheastInMeters.longitude,\n      rectangleNortheastInMeters.latitude\n    )\n\n    this.resolutions = []\n    for (let i = 0; i < 19; i++) {\n      this.resolutions[i] = 256 * Math.pow(2, 18 - i)\n    }\n  }\n\n  getNumberOfXTilesAtLevel(level) {\n    return 1 << level\n  }\n\n  getNumberOfYTilesAtLevel(level) {\n    return 1 << level\n  }\n\n  rectangleToNativeRectangle(rectangle, result) {\n    const { defined, Rectangle } = Cesium\n    const projection = this._projection\n    const southwest = projection.project(Rectangle.southwest(rectangle))\n    const northeast = projection.project(Rectangle.northeast(rectangle))\n\n    if (!defined(result)) {\n      return new Rectangle(southwest.x, southwest.y, northeast.x, northeast.y)\n    }\n\n    result.west = southwest.x\n    result.south = southwest.y\n    result.east = northeast.x\n    result.north = northeast.y\n    return result\n  }\n\n  tileXYToNativeRectangle(x, y, level, result) {\n    const { defined, Rectangle } = Cesium\n    const tileWidth = this.resolutions[level]\n    const west = x * tileWidth\n    const east = (x + 1) * tileWidth\n    const north = ((y = -y) + 1) * tileWidth\n    const south = y * tileWidth\n\n    if (!defined(result)) {\n      return new Rectangle(west, south, east, north)\n    }\n\n    result.west = west\n    result.south = south\n    result.east = east\n    result.north = north\n    return result\n  }\n\n  tileXYToRectangle(x, y, level, result) {\n    const { Cartesian2 } = Cesium\n    const nativeRectangle = this.tileXYToNativeRectangle(x, y, level, result)\n\n    const projection = this._projection\n    const southwest = projection.unproject(new Cartesian2(nativeRectangle.west, nativeRectangle.south))\n    const northeast = projection.unproject(new Cartesian2(nativeRectangle.east, nativeRectangle.north))\n\n    nativeRectangle.west = southwest.longitude\n    nativeRectangle.south = southwest.latitude\n    nativeRectangle.east = northeast.longitude\n    nativeRectangle.north = northeast.latitude\n    return nativeRectangle\n  }\n\n  positionToTileXY(position, level, result) {\n    const { Rectangle, defined, Cartesian2 } = Cesium\n    const rectangle = this._rectangle\n    if (!Rectangle.contains(rectangle, position)) {\n      // outside the bounds of the tiling scheme\n      return undefined\n    }\n\n    const projection = this._projection\n    const webMercatorPosition = projection.project(position)\n    if (!defined(webMercatorPosition)) {\n      return undefined\n    }\n\n    const tileWidth = this.resolutions[level]\n    const xTileCoordinate = Math.floor(webMercatorPosition.x / tileWidth)\n    const yTileCoordinate = -Math.floor(webMercatorPosition.y / tileWidth)\n\n    if (!defined(result)) {\n      return new Cartesian2(xTileCoordinate, yTileCoordinate)\n    }\n\n    result.x = xTileCoordinate\n    result.y = yTileCoordinate\n    return result\n  }\n\n  get ellipsoid() {\n    return this._ellipsoid\n  }\n\n  get rectangle() {\n    return this._rectangle\n  }\n\n  get projection() {\n    return this._projection\n  }\n}\n\nexport default BaiduMapMercatorTilingScheme\n","import BaiduMapMercatorTilingScheme from './BaiduMapTilingScheme'\n\nclass BaiduMapImageryProvider {\n  _url: string\n  _ready: boolean\n  _resource: any\n  _tileDiscardPolicy: any\n  _tileWidth: number\n  _tileHeight: number\n  _minimumLevel: any\n  _maximumLevel: any\n  _tilingScheme: BaiduMapMercatorTilingScheme\n  _rectangle: any\n  _credit: any\n  enablePickFeatures: any\n  _hasAlphaChannel: any\n  _subdomains: any\n  _errorEvent: any\n  _readyPromise: any\n  _style: string\n  _labelStyle: any\n  constructor(options) {\n    const { Resource, defaultValue, Credit, when, Event } = Cesium\n    this._subdomains = defaultValue(options.subdomains, ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'])\n    if (options.url) {\n      this._url = options.url\n    } else {\n      if (options.customid === 'img') {\n        this._url = `${options.protocol}://shangetu{s}.map.bdimg.com/it/u=x={x};y={y};z={z};v=009;type=sate&fm=46`\n        this._subdomains = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']\n      } else if (options.customid === 'vec') {\n        this._url = `${options.protocol}://online{s}.map.bdimg.com/tile/?qt=tile&x={x}&y={y}&z={z}&styles=sl&v=020`\n        this._subdomains = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']\n      } else if (options.customid === 'traffic') {\n        this._subdomains = ['0', '1', '2']\n        this._url = `${options.protocol}://its.map.baidu.com/traffic/TrafficTileService?time={time}&label={labelStyle}&v=016&level={z}&x={x}&y={y}&scaler=2`\n      } else {\n        this._url = `${options.protocol}://api.map.baidu.com/customimage/tile?&x={x}&y={y}&z={z}&udt={udt}&scale=${options.scale}&ak=${options.ak}&customid=${options.customid}`\n        this._subdomains = ['0', '1', '2']\n      }\n    }\n\n    const resource = (Resource as any).createIfNeeded(this._url)\n    resource.appendForwardSlash()\n\n    this._ready = false\n    this._resource = resource\n    this._tileDiscardPolicy = options.tileDiscardPolicy\n    this._tileWidth = 256\n    this._tileHeight = 256\n    this._minimumLevel = options.maximumLevel || 0\n    this._maximumLevel = options.maximumLevel || 18\n    this._tilingScheme = new BaiduMapMercatorTilingScheme(options)\n    this._rectangle = defaultValue(options.rectangle, this._tilingScheme.rectangle)\n    let credit = options.credit\n    if (typeof credit === 'string') {\n      credit = new Credit(credit)\n    }\n    this._credit = credit\n    this.enablePickFeatures = defaultValue(options.enablePickFeatures, false)\n    this._hasAlphaChannel = defaultValue(options.hasAlphaChannel, true)\n    this._errorEvent = new Event()\n    this._readyPromise = when.defer()\n    this._ready = true\n    this._readyPromise.resolve(true)\n    this._style = options.bdStyle\n    this._labelStyle = options.labelStyle || 'web2D'\n  }\n\n  get url() {\n    return this._resource._url\n  }\n\n  get proxy() {\n    return this._resource.proxy\n  }\n\n  get tileWidth() {\n    if (!this._ready) {\n      throw new Cesium.DeveloperError('tileWidth must not be called before the imagery provider is ready.')\n    }\n    return this._tileWidth\n  }\n\n  get tileHeight() {\n    if (!this._ready) {\n      throw new Cesium.DeveloperError('tileHeight must not be called before the imagery provider is ready.')\n    }\n    return this._tileHeight\n  }\n\n  get maximumLevel() {\n    if (!this._ready) {\n      throw new Cesium.DeveloperError('maximumLevel must not be called before the imagery provider is ready.')\n    }\n    return this._maximumLevel\n  }\n\n  get minimumLevel() {\n    if (!this.ready) {\n      throw new Cesium.DeveloperError('minimumLevel must not be called before the imagery provider is ready.')\n    }\n    return this._minimumLevel\n  }\n\n  get tilingScheme() {\n    if (!this._ready) {\n      throw new Cesium.DeveloperError('tilingScheme must not be called before the imagery provider is ready.')\n    }\n    return this._tilingScheme\n  }\n\n  get rectangle() {\n    if (!this.ready) {\n      throw new Cesium.DeveloperError('rectangle must not be called before the imagery provider is ready.')\n    }\n    return this._rectangle\n  }\n\n  get tileDiscardPolicy() {\n    if (!this.ready) {\n      throw new Cesium.DeveloperError('tileDiscardPolicy must not be called before the imagery provider is ready.')\n    }\n    return this._tileDiscardPolicy\n  }\n\n  get errorEvent() {\n    return this._errorEvent\n  }\n\n  get ready() {\n    return this._ready\n  }\n\n  get readyPromise() {\n    return this._readyPromise.promise\n  }\n\n  get credit() {\n    if (!this.ready) {\n      throw new Cesium.DeveloperError('credit must not be called before the imagery provider is ready.')\n    }\n    return this._credit\n  }\n\n  get hasAlphaChannel() {\n    if (!this.ready) {\n      throw new Cesium.DeveloperError('hasAlphaChannel must not be called before the imagery provider is ready.')\n    }\n    return this._hasAlphaChannel\n  }\n\n  getTileCredits(x, y, level) {\n    if (!this.ready) {\n      throw new Cesium.DeveloperError('getTileCredits must not be called before the imagery provider is ready.')\n    }\n    return undefined\n  }\n\n  requestImage(x, y, level, request) {\n    if (!this.ready) {\n      throw new Cesium.DeveloperError('requestImage must not be called before the imagery provider is ready.')\n    }\n    return Cesium.ImageryProvider.loadImage(this as any, buildImageResource.call(this, x, y, level, request))\n  }\n\n  pickFeatures(x, y, level, longitude, latitude) {\n    return undefined\n  }\n}\n\nfunction buildImageResource(this, x, y, level, request) {\n  let url = this._url\n  const subdomains = this._subdomains\n  url = url\n    .replace('{s}', subdomains[(x + y + level) % subdomains.length])\n    .replace('{style}', this._style)\n    .replace('{x}', x)\n    .replace('{y}', -y)\n    .replace('{z}', level)\n    .replace('{labelStyle}', this._labelStyle)\n    .replace('{time}', String(new Date().getTime()))\n    .replace('{udt}', String(new Date().getTime()))\n  const resource = this._resource.getDerivedResource({\n    url: url,\n    request: request\n  })\n  return resource\n}\n\nexport default BaiduMapImageryProvider\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-27 23:37:45\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\baidu\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport type { ProjectionTransforms, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport BaiduMapImageryProvider from './BaiduMapImageryProvider'\nimport { useProviders } from '@vue-cesium/composables'\nimport { url, rectangle, ellipsoid, tileDiscardPolicy, credit, minimumLevel, maximumLevel } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const baiduImageryProviderProps = {\n  ...url,\n  ...rectangle,\n  ...ellipsoid,\n  ...tileDiscardPolicy,\n  ...credit,\n  ...minimumLevel,\n  ...maximumLevel,\n  protocol: {\n    type: String,\n    default: 'https'\n  },\n  projectionTransforms: {\n    type: [Boolean, Object] as PropType<ProjectionTransforms>,\n    default: () => {\n      return {\n        from: 'BD09',\n        to: 'WGS84'\n      }\n    }\n  },\n  scale: {\n    type: Number,\n    default: 1\n  },\n  ak: {\n    type: String,\n    default: 'E4805d16520de693a3fe707cdc962045'\n  },\n  // https://lbsyun.baidu.com/custom/list.htm\n  customid: {\n    type: String as PropType<\n      | 'img'\n      | 'vec'\n      | 'traffic'\n      | 'normal'\n      | 'light'\n      | 'dark'\n      | 'redalert'\n      | 'googlelite'\n      | 'grassgreen'\n      | 'midnight'\n      | 'pink'\n      | 'darkgreen'\n      | 'bluish'\n      | 'grayscale'\n      | 'hardedge'\n    >,\n    default: 'normal' // img vec traffic normal light dark redalert googlelite grassgreen midnight pink darkgreen bluish grayscale hardedge\n  }\n}\nexport default defineComponent({\n  name: 'VcImageryProviderBaidu',\n  props: baiduImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'BaiduMapImageryProvider'\n    const providersState = useProviders(props, ctx, instance)\n\n    if (undefined === providersState) {\n      return\n    }\n    // methods\n    instance.createCesiumObject = async () => {\n      Cesium.BaiduMapImageryProvider = Cesium.BaiduMapImageryProvider || BaiduMapImageryProvider\n      if (providersState.unwatchFns.length === 0) {\n        providersState.setPropsWatcher(true)\n      }\n      const options = providersState.transformProps(props)\n      return new Cesium.BaiduMapImageryProvider(options)\n    }\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderBaiduProps = ExtractPropTypes<typeof baiduImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 11:00:14\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\bingmaps\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport { ellipsoid, tileDiscardPolicy } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const bingImageryProviderProps = {\n  url: {\n    type: [String, Object] as PropType<string | Cesium.Resource>,\n    default: 'https://dev.virtualearth.net'\n  },\n  bmKey: String,\n  tileProtocol: String,\n  mapStyle: {\n    type: String as PropType<string | Cesium.BingMapsStyle>,\n    default: 'Aerial'\n  },\n  culture: {\n    type: String,\n    default: ''\n  },\n  ...ellipsoid,\n  ...tileDiscardPolicy\n}\nexport default defineComponent({\n  name: 'VcImageryProviderBing',\n  props: bingImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'BingMapsImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderBingProps = ExtractPropTypes<typeof bingImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 21:54:20\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\google-earth\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport { url, ellipsoid, tileDiscardPolicy, credit } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const googleImageryProviderProps = {\n  ...url,\n  ...ellipsoid,\n  ...tileDiscardPolicy,\n  ...credit,\n  metadata: Object as PropType<Cesium.GoogleEarthEnterpriseMetadata>\n}\nexport default defineComponent({\n  name: 'VcImageryProviderGoogle',\n  props: googleImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'GoogleEarthEnterpriseImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderGoogleProps = ExtractPropTypes<typeof googleImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 21:59:25\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\grid\\index.ts\n */\nimport type { PropType, ExtractPropTypes } from 'vue'\nimport type { VcColor, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport { useProviders } from '@vue-cesium/composables'\nimport { tilingScheme, ellipsoid, tileWidth, tileHeight, glowColor } from '@vue-cesium/utils/cesium-props'\nimport { makeColor } from '@vue-cesium/utils/cesium-helpers'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const gridImageryProviderProps = {\n  ...tilingScheme,\n  ...ellipsoid,\n  cells: {\n    type: Number,\n    default: 8\n  },\n  color: {\n    type: [String, Object, Array] as PropType<VcColor>,\n    default: () => [1.0, 1.0, 1.0, 0.4],\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  },\n  ...glowColor,\n  glowWidth: {\n    type: Number,\n    default: 6\n  },\n  backgroundColor: {\n    type: [String, Array, Object] as PropType<VcColor>,\n    default: () => [0.0, 0.5, 0.0, 0.2],\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  },\n  ...tileWidth,\n  ...tileHeight,\n  canvasSize: {\n    type: Number,\n    default: 256\n  }\n}\nexport default defineComponent({\n  name: 'VcImageryProviderGrid',\n  props: gridImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'GridImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderGridProps = ExtractPropTypes<typeof gridImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 22:00:39\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\ion\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport { accessToken } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const ionImageryProviderProps = {}\nexport default defineComponent({\n  name: 'VcImageryProviderIon',\n  props: {\n    assetId: Number,\n    ...accessToken,\n    server: [String, Object] as PropType<string | Cesium.Resource>\n  },\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'IonImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderIonProps = ExtractPropTypes<typeof ionImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 22:07:06\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\mapbox-style\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport { accessToken, ellipsoid, minimumLevel, maximumLevel, rectangle, credit } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const mapboxImageryProviderProps = {\n  url: {\n    type: [String, Object] as PropType<string | Cesium.Resource>,\n    default: 'https://api.mapbox.com/styles/v1/'\n  },\n  username: {\n    type: String,\n    default: 'mapbox'\n  },\n  styleId: String,\n  ...accessToken,\n  tilesize: {\n    type: Number,\n    default: 512\n  },\n  scaleFactor: Boolean,\n  ...ellipsoid,\n  ...minimumLevel,\n  ...maximumLevel,\n  ...rectangle,\n  ...credit\n}\nexport default defineComponent({\n  name: 'VcImageryProviderMapbox',\n  props: mapboxImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'MapboxStyleImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderMapboxProps = ExtractPropTypes<typeof mapboxImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 23:42:48\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\osm\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport { fileExtension, rectangle, minimumLevel, maximumLevel, ellipsoid } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const osmImageryProviderProps = {\n  url: {\n    type: String,\n    default: 'https://a.tile.openstreetmap.org'\n  },\n  ...fileExtension,\n  ...rectangle,\n  ...minimumLevel,\n  ...maximumLevel,\n  ...ellipsoid,\n  credit: {\n    type: [String, Object] as PropType<string | Cesium.Credit>,\n    default: 'MapQuest, Open Street Map and contributors, CC-BY-SA'\n  }\n}\nexport default defineComponent({\n  name: 'VcImageryProviderOsm',\n  props: osmImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'OpenStreetMapImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderOsmProps = ExtractPropTypes<typeof osmImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 23:24:28\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\single-tile\\index.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport { url, rectangle, credit, ellipsoid } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const singletileImageryProviderProps = {\n  ...url,\n  ...rectangle,\n  ...credit,\n  ...ellipsoid\n}\nexport default defineComponent({\n  name: 'VcImageryProviderSingletile',\n  props: singletileImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'SingleTileImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderSingletileProps = ExtractPropTypes<typeof singletileImageryProviderProps>\n","/**\n * 操作状态。\n */\nconst Status = {\n  NONE: 0,\n  STORING: 1,\n  STORED: 2,\n  FAILED: 3\n}\n/**\n * 操作浏览器数据库 IndexedDB 类\n */\nclass IndexedDBScheduler {\n  dbname: string\n  db: any\n  version: any\n  cachestatus: any\n  layer: any\n  storageType: string\n  creatingTable: boolean\n  /**\n   *\n   * @param {Object} options\n   */\n  constructor(options) {\n    if (!Cesium.defined(options.name)) {\n      throw new Cesium.DeveloperError('options.name is required.')\n    }\n    const deferred = Cesium.when.defer()\n    this.dbname = options.name\n    const dbRequest = window.indexedDB.open(this.dbname)\n    const that = this\n    dbRequest.onsuccess = event => {\n      that.db = (event.target as any).result\n      that.version = that.db.version\n      that.cachestatus = that.cachestatus || {}\n      deferred.resolve(that)\n    }\n    dbRequest.onupgradeneeded = event => {\n      that.db = (event.target as any).result\n      that.version = that.db.version\n      deferred.resolve(that)\n    }\n    dbRequest.onerror = event => {\n      that.db = null\n      deferred.reject('create database fail, error code : ' + (event.target as any).errorcode)\n    }\n    this.layer = options.layer || null\n    this.storageType = options.storageType || 'arrayBuffer'\n    this.creatingTable = !1\n    this.cachestatus = {}\n    return deferred.promise\n  }\n\n  /**\n   * 检查对象仓库是否存在。\n   * @param {String} storeName 对象仓库（表）名称\n   */\n  checkObjectStoreExist(storeName) {\n    return Cesium.defined(this.db) ? this.db.objectStoreNames.contains(storeName) : false\n  }\n\n  /**\n   *  创建 IndexedDB 浏对象仓库，IndexedDB 是浏览器提供的本地数据库\n   * @param {String} storeName 对象仓库（表）名称\n   * @returns {Promise}\n   */\n  createObjectStore(storeName) {\n    const deferred = Cesium.when.defer()\n    if (this.creatingTable) {\n      deferred.reject(false)\n    } else {\n      if (this.db.objectStoreNames.contains(storeName)) {\n        deferred.reject(false)\n        return deferred.promise\n      }\n      this.creatingTable = true\n      const version = parseInt(this.db.version)\n      this.db.close()\n      const that = this\n      // 打开或新建 IndexedDB 数据库\n      const dbRequest = window.indexedDB.open(this.dbname, version + 1)\n      dbRequest.onupgradeneeded = event => {\n        const db = (event.target as any).result\n        that.db = db\n        // 创建对象仓库（表）\n        const objectStore = db.createObjectStore(storeName, {\n          keyPath: 'id'\n        })\n        if (Cesium.defined(objectStore)) {\n          // 创建索引\n          objectStore.createIndex('value', 'value', {\n            unique: false\n          })\n          that.creatingTable = false\n          that.cachestatus = that.cachestatus || {}\n          that.cachestatus[storeName] = {}\n          that.db.close()\n          const dbRequest = window.indexedDB.open(that.dbname)\n          dbRequest.onsuccess = event => {\n            that.db = (event.target as any).result\n            deferred.resolve(true)\n          }\n        } else {\n          that.creatingTable = false\n          deferred.resolve(false)\n        }\n      }\n      dbRequest.onsuccess = event => {\n        ;(event.target as any).result.close()\n        deferred.resolve(true)\n      }\n      dbRequest.onerror = event => {\n        that.creatingTable = false\n        deferred.reject(false)\n      }\n    }\n    return deferred.promise\n  }\n\n  /**\n   * 向对象仓库写入数据记录。\n   * @param {String} storeName 对象仓库（表）名称\n   * @param {Number} id 主键\n   * @param {*} value 值\n   * @returns {Promise}\n   */\n  putElementInDB(storeName, id, value) {\n    const deferred = Cesium.when.defer()\n    if (!Cesium.defined(this.db)) {\n      deferred.reject(false)\n      return deferred.promise\n    }\n    const { cachestatus, db } = this\n    if (\n      Cesium.defined(cachestatus[storeName]) &&\n      Cesium.defined(cachestatus[storeName][id] && (cachestatus[storeName][id] === Status.STORING || cachestatus[storeName][id] === Status.STORED))\n    ) {\n      deferred.resolve(false)\n      return deferred.promise\n    }\n    if (db.objectStoreNames.contains(storeName)) {\n      cachestatus[storeName] = cachestatus[storeName] || {}\n      try {\n        const request = db.transaction([storeName], 'readwrite').objectStore(storeName).add({\n          id: id,\n          value: value\n        })\n        cachestatus[storeName][id] = Status.STORING\n        request.onsuccess = event => {\n          cachestatus[storeName][id] = Status.STORED\n          deferred.resolve(true)\n        }\n        request.onerror = event => {\n          cachestatus[storeName][id] = Status.FAILED\n          deferred.resolve(false)\n        }\n      } catch (error) {\n        deferred.reject(null)\n        return deferred.promise\n      }\n    } else {\n      this.createObjectStore(storeName).then(\n        () => {\n          const request = db.transaction([storeName], 'readwrite').objectStore(storeName).add({\n            id: id,\n            value: value\n          })\n          request.onsuccess = function (e) {\n            deferred.resolve(true)\n          }\n          request.onerror = function (e) {\n            deferred.reject(false)\n          }\n        },\n        () => {\n          deferred.reject(false)\n        }\n      )\n    }\n    return deferred.promise\n  }\n\n  /**\n   * 向对象仓库读取数据。\n   * @param {String} storeName 对象仓库（表）名称\n   * @param {Number} id 主键\n   * @returns {Promise}\n   */\n  getElementFromDB(storeName, id) {\n    const deferred = Cesium.when.defer()\n    const { db } = this\n    if (!Cesium.defined(db)) {\n      return null\n    }\n    if (!db.objectStoreNames.contains(storeName)) {\n      return null\n    }\n    try {\n      const transaction = db.transaction([storeName])\n      const objectStore = transaction.objectStore(storeName)\n      const request = objectStore.get(id)\n      request.onsuccess = e => {\n        return Cesium.defined(e.target.result) ? deferred.resolve(e.target.result.value) : deferred.reject(null)\n      }\n      request.onerror = e => {\n        deferred.reject(null)\n      }\n    } catch (error) {\n      deferred.reject(null)\n    }\n    return deferred.promise\n  }\n\n  /**\n   * 更新数据。\n   * @param {String} storeName\n   * @param {Number} id\n   * @param {*} value\n   * @returns {Promise}\n   */\n  updateElementInDB(storeName, id, value) {\n    const deferred = Cesium.when.defer()\n    const { db } = this\n    if (!Cesium.defined(db)) {\n      deferred.resolve(false)\n      return deferred.promise\n    }\n    if (!db.objectStoreNames.contains(storeName)) {\n      deferred.resolve(false)\n      return deferred.promise\n    }\n    try {\n      const request = db.transaction([storeName], 'readwrite').objectStore(storeName).put({ id: id, value: value })\n      request.onsuccess = () => {\n        deferred.resolve(true)\n      }\n      request.onerror = () => {\n        deferred.resolve(false)\n      }\n    } catch (e) {\n      deferred.resolve(false)\n    }\n    return deferred.promise\n  }\n\n  /**\n   * 移除数据。\n   * @param {String} storeName\n   * @param {Number} id\n   * @returns {Promise}\n   */\n  removeElementFromDB(storeName, id) {\n    const deferred = Cesium.when.defer()\n    const { db } = this\n    if (!Cesium.defined(db)) {\n      deferred.resolve(false)\n      return deferred.promise\n    }\n\n    if (!db.objectStoreNames.contains(storeName)) {\n      deferred.resolve(false)\n      return deferred.promise\n    }\n    try {\n      const request = db.transaction([storeName], 'readwrite').objectStore(storeName).delete(id)\n      request.onsuccess = () => {\n        deferred.resolve(true)\n      }\n      request.onerror = () => {\n        deferred.resolve(false)\n      }\n    } catch (e) {\n      deferred.resolve(false)\n    }\n    return deferred.promise\n  }\n\n  /**\n   *  清空对象仓库\n   * @param {String} storeName\n   */\n  clear(storeName) {\n    const deferred = Cesium.when.defer()\n    const { db } = this\n    if (!Cesium.defined(db)) {\n      deferred.resolve(false)\n      return deferred.promise\n    }\n\n    if (!db.objectStoreNames.contains(storeName)) {\n      deferred.resolve(false)\n      return deferred.promise\n    }\n\n    try {\n      const request = db.transaction([storeName], 'readwrite').objectStore(storeName).clear()\n      request.onsuccess = () => {\n        deferred.resolve(true)\n      }\n      request.onerror = () => {\n        deferred.resolve(false)\n      }\n    } catch (e) {\n      deferred.resolve(false)\n    }\n    return deferred.promise\n  }\n}\n\nexport default IndexedDBScheduler\n","import IndexedDBScheduler from './IndexedDBScheduler'\nclass SuperMapImageryProvider {\n  tablename: string\n  _indexedDBScheduler: any\n  _indexedDBSetting: {\n    isOpen: boolean\n    clear: () => void\n  }\n  isSci: boolean\n  isTileMap: boolean\n  layersID: string\n  _url: string\n  _resource: any\n  _transparent: boolean\n  _name: string\n  _urlTemplate: string\n  _errorEvent: any\n  _fileExtension: string\n  _tileWidth: number\n  _tileHeight: number\n  _minimumLevel: number\n  _maximumLevel: number\n  _rectangle: any\n  _tilingScheme: any\n  _tileDiscardPolicy: any\n  _fRatio: any\n  _scales: any[]\n  _coordUnit: string\n  _credit: any\n  _ready: boolean\n  _readyPromise: any\n  _options: any\n  constructor(options) {\n    const { appendForwardSlash, Credit, defaultValue, defined, DeveloperError, Event, Resource, when, Math } = Cesium\n    options = defaultValue(options, {})\n    const { url } = options\n    if (!defined(url)) {\n      throw new DeveloperError('options.url is required.')\n    }\n    const rootNodeUrlRealspace3D = url.substring(0, url.indexOf('datas'))\n    this.tablename = url.substring(0, url.indexOf('datas/') + 6, url.length)\n    const that = this\n    const dbPromise = new IndexedDBScheduler({\n      name: rootNodeUrlRealspace3D + this.tablename\n    })\n    ;(dbPromise as any).then(e => {\n      that._indexedDBScheduler = e\n    })\n    this._indexedDBSetting = {\n      isOpen: false,\n      clear: () => {\n        that._indexedDBScheduler.clear(that.tablename)\n      }\n    }\n    this.isSci = false\n    this.isTileMap = false\n    const forwardSlashUrl = appendForwardSlash(url)\n    if (forwardSlashUrl.indexOf('rest/maps') > -1) {\n      this.isTileMap = true\n      this.layersID = options.layersID\n    } else {\n      if (!(forwardSlashUrl.indexOf('rest/realspace') > -1)) {\n        throw new DeveloperError('The url type is not supported!')\n      }\n      this.isSci = true\n      this.layersID = undefined!\n    }\n    this._url = forwardSlashUrl\n    this._resource = (Resource as any).createIfNeeded(forwardSlashUrl)\n    this._transparent = defaultValue(options.transparent, true)\n    this._name = options.name || ''\n    this._urlTemplate = undefined!\n    this._errorEvent = new Event()\n    this._fileExtension = 'png'\n    this._tileWidth = 256\n    this._tileHeight = 256\n    this._minimumLevel = defaultValue(options.minimumLevel, 0)\n    this._maximumLevel = options.maximumLevel\n    this._rectangle = undefined\n    this._tilingScheme = undefined\n    this._tileDiscardPolicy = options.tileDiscardPolicy\n    this._fRatio = defaultValue(options.ratio, Math.DEGREES_PER_RADIAN / 6378137.0)\n    this._scales = []\n    this._coordUnit = 'DEGREE'\n    let credit = defaultValue(options.credit, new Credit('MapQuest, SuperMap iServer Imagery'))\n    if (typeof credit === 'string') {\n      credit = new Credit(credit)\n    }\n    this._credit = credit\n    this._ready = false\n    this._readyPromise = when.defer()\n    this._options = options\n    init.call(this)\n  }\n\n  get url() {\n    return this._url\n  }\n\n  get name() {\n    return this._name\n  }\n\n  set name(val) {\n    this._name = val\n  }\n\n  get tileWidth() {\n    if (!this._ready) {\n      throw new Cesium.DeveloperError('tileWidth must not be called before the imagery provider is ready.')\n    }\n    return this._tileWidth\n  }\n\n  get tileHeight() {\n    if (!this._ready) {\n      throw new Cesium.DeveloperError('tileHeight must not be called before the imagery provider is ready.')\n    }\n    return this._tileHeight\n  }\n\n  get maximumLevel() {\n    if (!this._ready) {\n      throw new Cesium.DeveloperError('maximumLevel must not be called before the imagery provider is ready.')\n    }\n    return this._maximumLevel\n  }\n\n  get minimumLevel() {\n    if (!this._ready) {\n      throw new Cesium.DeveloperError('minimumLevel must not be called before the imagery provider is ready.')\n    }\n    return this._minimumLevel\n  }\n\n  get tilingScheme() {\n    if (!this._ready) {\n      throw new Cesium.DeveloperError('tilingScheme must not be called before the imagery provider is ready.')\n    }\n    return this._tilingScheme\n  }\n\n  get rectangle() {\n    if (!this._ready) {\n      throw new Cesium.DeveloperError('rectangle must not be called before the imagery provider is ready.')\n    }\n    return this._rectangle\n  }\n\n  get errorEvent() {\n    return this._errorEvent\n  }\n\n  get ready() {\n    return this._ready\n  }\n\n  get credit() {\n    return this._credit\n  }\n\n  get hasAlphaChannel() {\n    return true\n  }\n\n  get readyPromise() {\n    return this._readyPromise\n  }\n\n  get ratio() {\n    return this._fRatio\n  }\n\n  set ratio(val) {\n    this._fRatio = val\n  }\n\n  get tileDiscardPolicy() {\n    return this._tileDiscardPolicy\n  }\n\n  getTileCredits(x, y, level) {\n    if (!this.ready) {\n      throw new Cesium.DeveloperError('getTileCredits must not be called before the imagery provider is ready.')\n    }\n    return undefined\n  }\n\n  requestImage(x, y, level, request) {\n    const { defined, DeveloperError, ImageryProvider, when } = Cesium\n    if (!this.ready) {\n      throw new DeveloperError('requestImage must not be called before the imagery provider is ready.')\n    }\n\n    const url = buildImageResource.call(this, x, y, level)\n    const resource = this._resource.getDerivedResource({\n      url: url,\n      request: request\n    })\n    const that: any = this\n    if (this._indexedDBSetting.isOpen) {\n      if (defined(this._indexedDBScheduler)) {\n        const promise = this._indexedDBScheduler.getElementFromDB(this.tablename, url)\n        return defined(promise)\n          ? when(\n              promise,\n              value => {\n                if (defined(value)) {\n                  const image = new Image()\n                  image.src = value\n                  return image\n                }\n                return ImageryProvider.loadImage(that, resource)\n              },\n              e => {\n                return ImageryProvider.loadImage(that, resource)\n              }\n            )\n          : ImageryProvider.loadImage(that, resource)\n      }\n    }\n    return ImageryProvider.loadImage(this as any, resource)\n  }\n\n  pickFeatures(x, y, level, longitude, latitude) {\n    return undefined\n  }\n}\n\nlet previousError: any = {}\nconst ScaleTexts = [\n  '1.690163571602655E-9',\n  '3.3803271432053056E-9',\n  '6.760654286410611E-9',\n  '1.3521308572821242E-8',\n  '2.7042617145642484E-8',\n  '5.408523429128511E-8',\n  '1.0817046858256998E-7',\n  '2.1634093716513974E-7',\n  '4.3268187433028044E-7',\n  '8.653637486605571E-7',\n  '1.7307274973211203E-6',\n  '3.4614549946422405E-6',\n  '6.9229099892844565E-6',\n  '1.3845819978568952E-5',\n  '2.7691639957137904E-5',\n  '5.53832799142758E-5',\n  '1.107665598285516E-4',\n  '2.215331196571032E-4',\n  '4.430662393142064E-4',\n  '8.861324786284128E-4',\n  '1.772264957256826E-3',\n  '3.544529914513652E-3'\n]\nconst Scales = [\n  1.690163571602655e-9, 3.3803271432053056e-9, 6.760654286410611e-9, 1.3521308572821242e-8, 2.7042617145642484e-8, 5.408523429128511e-8,\n  1.0817046858256998e-7, 2.1634093716513974e-7, 4.3268187433028044e-7, 8.653637486605571e-7, 0.0000017307274973211203, 0.0000034614549946422405,\n  0.0000069229099892844565, 0.000013845819978568952, 0.000027691639957137904, 0.0000553832799142758, 0.0001107665598285516, 0.0002215331196571032,\n  0.0004430662393142064, 0.0008861324786284128, 0.001772264957256826, 0.003544529914513652\n]\n\nfunction buildImageResource(this, x, y, level) {\n  let url\n  if (this.isTileMap) {\n    if (this._coordUnit === 'DEGREE') {\n      const scaleText = ScaleTexts[level + 1] || ScaleTexts[level]\n      url = this._urlTemplate.replace('{x}', x).replace('{y}', y).replace('{scale}', scaleText)\n    } else if (this._coordUnit === 'METER') {\n      const scaleText = ScaleTexts[level]\n      url = this._urlTemplate.replace('{x}', x).replace('{y}', y).replace('{scale}', scaleText)\n    }\n  } else {\n    url = this._urlTemplate.replace('{x}', x).replace('{y}', y).replace('{level}', level).replace('{fileExtension}', this._fileExtension)\n  }\n  return url\n}\n\nfunction init(this) {\n  const { Resource, when } = Cesium\n  if (this.isTileMap) {\n    const promise = Resource.fetchJsonp({\n      url: this._options.url + '.jsonp',\n      queryParameters: {\n        f: 'json'\n      }\n    })\n    when(promise, onFulfilledTileMap.bind(this), onRejected.bind(this))\n  } else {\n    // r(c.CREDENTIAL) && (o = c.addToken(o)),\n    when(\n      Resource.fetchText({\n        url: this.url + 'config'\n      }),\n      onFulfilledRest3D.bind(this),\n      onRejected.bind(this)\n    )\n  }\n}\nfunction getMaximumLevelbyScale(scale) {\n  for (let t = Scales.length; t--; ) {\n    if (scale[t] <= scale) {\n      return t\n    }\n  }\n}\n\nfunction onFulfilledRest3D(this, xmlText) {\n  const options = parseConfigFromXmlText.call(this, xmlText)\n  const { defaultValue, defined, GeographicTilingScheme, Math, Rectangle } = Cesium\n  this._fileExtension = defaultValue(options.fileExtentName, 'png')\n  this._tileWidth = defaultValue(options.imageSizeWidth, 256)\n  this._tileHeight = defaultValue(options.imageSizeHeight, 256)\n  const levels = options.levels\n  const length = levels.length\n  this._minimumLevel = defaultValue(levels[0], 0)\n  this._maximumLevel = defaultValue(levels[length - 1], length - 1)\n  if (!defined(this._tilingScheme)) {\n    this._tilingScheme = new GeographicTilingScheme({\n      ellipsoid: this._options.ellipsoid\n    })\n  }\n  if (!defined(this._rectangle)) {\n    if (options.left && options.right && options.top && options.bottom) {\n      const left = Math.toRadians(options.left)\n      const right = Math.toRadians(options.right)\n      const bottom = Math.toRadians(options.bottom)\n      const top = Math.toRadians(options.top)\n      this._rectangle = new Rectangle(left, bottom, right, top)\n    }\n  }\n  const tilingScheme = this._tilingScheme\n  this._rectangle.west < tilingScheme.rectangle.west && (this._rectangle.west = tilingScheme.rectangle.west)\n  this._rectangle.east > tilingScheme.rectangle.east && (this._rectangle.east = tilingScheme.rectangle.east)\n  this._rectangle.south < tilingScheme.rectangle.south && (this._rectangle.south = tilingScheme.rectangle.south)\n  this._rectangle.north > tilingScheme.rectangle.north && (this._rectangle.north = tilingScheme.rectangle.north)\n\n  const swTile = tilingScheme.positionToTileXY(Rectangle.southwest(this._rectangle), this._minimumLevel)\n  const neTile = tilingScheme.positionToTileXY(Rectangle.northeast(this._rectangle), this._minimumLevel)\n  const tileCount = (window.Math.abs(neTile.x - swTile.x) + 1) * (window.Math.abs(neTile.y - swTile.y) + 1)\n  tileCount > 4 && (this._minimumLevel = 0)\n  this._tilingScheme = tilingScheme\n  this._urlTemplate = this._url + 'data/index/{y}/{x}.{fileExtension}?level={level}'\n  this._ready = true\n  this._readyPromise.resolve(true)\n}\n\nfunction parseConfigFromXmlText(this, xmlText) {\n  const domParser = new DOMParser()\n  xmlText = domParser.parseFromString(xmlText, 'application/xml')\n  const namespaceURI = 'http://www.supermap.com/SuperMapCache/sci3d'\n  const rootNode = xmlText.childNodes[0]\n  // let version = queryNumericAttribute(rootNode, 'Version', namespaceURI)\n  const levelsNode = queryFirstNode(rootNode, 'Levels', namespaceURI)\n  const levelsNodes = queryNodes(levelsNode, 'Level', namespaceURI) || ([] as any)\n  const levels: number[] = []\n  for (let i = 0; i < levelsNodes.length; i++) {\n    levels.push(parseInt(levelsNodes[i].textContent, 10))\n  }\n  const boundsNode = queryFirstNode(rootNode, 'Bounds', namespaceURI)\n  const left = queryNumericAttribute(boundsNode, 'Left', namespaceURI)\n  const right = queryNumericAttribute(boundsNode, 'Right', namespaceURI)\n  const top = queryNumericAttribute(boundsNode, 'Top', namespaceURI)\n  const bottom = queryNumericAttribute(boundsNode, 'Bottom', namespaceURI)\n  const fileExtentName = queryStringValue(rootNode, 'FileExtentName', namespaceURI)\n  const cellWidth = queryNumericAttribute(rootNode, 'CellWidth', namespaceURI)\n  const cellHeight = queryNumericAttribute(rootNode, 'CellHeight', namespaceURI)\n  const cacheName = queryStringValue(rootNode, 'CacheName', namespaceURI)\n  this._name = cacheName || ''\n  return {\n    left: left,\n    right: right,\n    top: top,\n    bottom: bottom,\n    fileExtentName: fileExtentName,\n    levels: levels,\n    imageSizeWidth: cellWidth,\n    imageSizeHeight: cellHeight\n  }\n}\nfunction queryStringValue(xmlNode, attribute, namespaceURI) {\n  const node = queryFirstNode(xmlNode, attribute, namespaceURI)\n  return Cesium.defined(node) ? node.textContent.trim() : undefined\n}\n\nfunction queryNumericAttribute(xmlNode, attribute, namespaceURI) {\n  const node = queryFirstNode(xmlNode, attribute, namespaceURI)\n  if (Cesium.defined(node)) {\n    const number = parseFloat(node.textContent)\n    return isNaN(number) ? undefined : number\n  }\n}\nfunction queryFirstNode(xmlNode, attribute, namespaceURI) {\n  if (Cesium.defined(xmlNode)) {\n    const nodes = xmlNode.childNodes\n    const length = nodes.length\n    for (let i = 0; i < length; i++) {\n      const node = nodes[i]\n      if (node.localName === attribute && namespaceURI.indexOf(node.namespaceURI) !== -1) {\n        return node\n      }\n    }\n  }\n}\n\nfunction queryNodes(xmlNode, attribute, namespaceURI) {\n  if (Cesium.defined(xmlNode)) {\n    const nodes: Array<any> = []\n    const nodeList = xmlNode.getElementsByTagNameNS('*', attribute)\n    const length = nodeList.length\n    for (let i = 0; i < length; i++) {\n      const node = nodeList[i]\n      node.localName === attribute && namespaceURI.indexOf(node.namespaceURI) !== -1 && nodes.push(node)\n    }\n    return nodes\n  }\n}\n\nfunction onFulfilledTileMap(this, response) {\n  const { Cartesian3, defaultValue, defined, GeographicTilingScheme, Math: CesiumMath, Rectangle, WebMercatorTilingScheme } = Cesium\n  const coordUnit = response.prjCoordSys.coordUnit\n  this._coordUnit = coordUnit\n  const bounds = response.bounds\n  const visibleScales = response.visibleScales\n  if (defined(visibleScales) && visibleScales.length > 1 && defined(this._maximumLevel)) {\n    const lastVisibleScale = visibleScales[visibleScales.length - 1]\n    this._maximumLevel = getMaximumLevelbyScale(lastVisibleScale)\n  }\n  if (coordUnit === 'DEGREE') {\n    this._tilingScheme = new GeographicTilingScheme()\n    bounds.left = CesiumMath.clamp(bounds.left, -180, 180)\n    bounds.bottom = CesiumMath.clamp(bounds.bottom, -90, 90)\n    bounds.right = CesiumMath.clamp(bounds.right, -180, 180)\n    bounds.top = CesiumMath.clamp(bounds.top, -90, 90)\n    this._rectangle = Rectangle.fromDegrees(bounds.left, bounds.bottom, bounds.right, bounds.top)\n    this._urlTemplate =\n      this._url +\n      'tileImage.png?transparent={transparent}&cacheEnabled=true&width=256&height=256&x={x}&y={y}&scale={scale}&redirect=false&overlapDisplayed=false&origin={\"x\":-180,\"y\":90}'\n  } else {\n    const pointLB = new Cartesian3(bounds.left, bounds.bottom, 0)\n    pointLB.x = Math.max(-20037508.342789244, pointLB.x)\n    pointLB.y = Math.max(-20037508.342789244, pointLB.y)\n    const pointRT = new Cartesian3(bounds.right, bounds.top, 0)\n    pointRT.x = Math.min(20037508.342789244, pointRT.x)\n    pointRT.y = Math.min(20037508.342789244, pointRT.y)\n    this._tilingScheme = new WebMercatorTilingScheme()\n    const f = this._tilingScheme.projection.unproject(pointLB)\n    const p = this._tilingScheme.projection.unproject(pointRT)\n    this._rectangle = new Rectangle(f.longitude, f.latitude, p.longitude, p.latitude)\n    this._urlTemplate =\n      this._url +\n      'tileImage.png?transparent={transparent}&cacheEnabled=true&width=256&height=256&x={x}&y={y}&scale={scale}&redirect=false&overlapDisplayed=false&origin={\"x\":-20037508.342789248 ,\"y\":20037508.342789095}'\n  }\n  this._urlTemplate = this._urlTemplate.replace('{transparent}', this._transparent)\n  this.layersID && (this._urlTemplate = this._urlTemplate + '&layersID=' + this.layersID)\n  this._rectangle || (this._rectangle = defaultValue(this._options.rectangle, this._tilingScheme.rectangle))\n  this._ready = true\n  this._readyPromise.resolve(true)\n}\n\nfunction onRejected(this) {\n  const { TileProviderError, RuntimeError } = Cesium\n  const message = 'An error occurred while accessing ' + this._url + '.'\n  previousError = TileProviderError.handleError(previousError, this, this._errorEvent, message, 0, 0, 0, init.bind(this))\n  this._readyPromise.reject(new RuntimeError(message))\n}\n\nexport default SuperMapImageryProvider\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 23:27:47\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\supermap\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport { url, minimumLevel, maximumLevel, projectionTransforms } from '@vue-cesium/utils/cesium-props'\nimport SuperMapImageryProvider from './SuperMapImageryProvider'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const supermapImageryProviderProps = {\n  ...url,\n  ...minimumLevel,\n  ...maximumLevel,\n  name: String,\n  transparent: {\n    type: Boolean,\n    default: true\n  },\n  credit: {\n    type: [String, Object] as PropType<string | Cesium.Credit>,\n    default: 'MapQuest, SuperMap iServer Imagery'\n  },\n  ...projectionTransforms\n}\nexport default defineComponent({\n  name: 'VcImageryProviderSupermap',\n  props: supermapImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'SuperMapImageryProvider'\n    const providersState = useProviders(props, ctx, instance)\n\n    if (undefined === providersState) {\n      return\n    }\n    // methods\n    instance.createCesiumObject = async () => {\n      Cesium.SuperMapImageryProvider = Cesium.SuperMapImageryProvider || SuperMapImageryProvider\n      if (providersState.unwatchFns.length === 0) {\n        providersState.setPropsWatcher(true)\n      }\n      const options = providersState.transformProps(props)\n      return new Cesium.SuperMapImageryProvider(options)\n    }\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderSupermapProps = ExtractPropTypes<typeof supermapImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-01-15 23:32:46\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\tianditu\\TiandituMapsStyle.ts\n */\nconst TiandituMapsStyle = {\n  IMG_W: 'img_w',\n  IMG_C: 'img_c',\n  CIA_W: 'cia_w',\n  CIA_C: 'cia_c',\n  VEC_W: 'vec_w',\n  VEC_C: 'vec_c',\n  TER_W: 'ter_w',\n  TER_C: 'ter_c',\n  CVA_W: 'cva_w',\n  CVA_C: 'cva_c',\n  CTA_W: 'cta_w',\n  CTA_C: 'cta_c',\n  EIA_W: 'eia_w',\n  EIA_C: 'eia_c',\n  EVA_W: 'eva_w',\n  EVA_C: 'eva_c',\n  IBO_C: 'ibo_c',\n  IBO_W: 'ibo_w'\n}\nexport default TiandituMapsStyle\n","import TiandituMapsStyle from './TiandituMapsStyle'\nconst TiandituMapsStyleUrl = {}\nconst TiandituMapsStyleLayer = {}\nconst TiandituMapsStyleID = {}\nconst TiandituMapsStyleFormat = {}\nconst TiandituMapsStyleEPSG = {}\nconst TiandituMapsStyleLabels = {}\n\nclass TiandituImageryProvider {\n  _mapStyle: string\n  _url: string\n  _token: string\n  _layer: string\n  _style: string\n  _tileMatrixSetID: string\n  _tileMatrixLabels: string\n  _format: string\n  _epsgCode: string\n  _tilingScheme: any\n  _tileWidth: number\n  _tileHeight: number\n  _minimumLevel: number\n  _maximumLevel: number\n  _rectangle: any\n  _readyPromise: any\n  _errorEvent: any\n  _credit: any\n  _subdomains: []\n  _tileDiscardPolicy: any\n  constructor(options) {\n    Object.keys(TiandituMapsStyle).forEach(key => {\n      TiandituMapsStyleUrl[TiandituMapsStyle[key]] = options.protocol + '://{s}.tianditu.gov.cn/' + TiandituMapsStyle[key] + '/wmts'\n      TiandituMapsStyleLayer[TiandituMapsStyle[key]] = TiandituMapsStyle[key].slice(0, 3)\n      TiandituMapsStyleID[TiandituMapsStyle[key]] = TiandituMapsStyle[key].slice(4)\n      TiandituMapsStyleFormat[TiandituMapsStyle[key]] = 'tiles'\n\n      if (TiandituMapsStyleID[TiandituMapsStyle[key]] === 'w') {\n        TiandituMapsStyleEPSG[TiandituMapsStyle[key]] = '900913'\n      } else {\n        TiandituMapsStyleEPSG[TiandituMapsStyle[key]] = '4490'\n      }\n      switch (TiandituMapsStyle[key]) {\n        case 'img_w':\n        case 'img_c':\n        case 'cia_w':\n        case 'cia_c':\n        case 'cta_w':\n        case 'cta_c':\n          TiandituMapsStyleLabels[TiandituMapsStyle[key]] = [\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          ]\n          break\n        case 'vec_w':\n        case 'vec_c':\n        case 'cva_w':\n        case 'cva_c':\n          TiandituMapsStyleLabels[TiandituMapsStyle[key]] = [\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          ]\n          break\n        case 'ter_w':\n        case 'ter_c':\n          TiandituMapsStyleLabels[TiandituMapsStyle[key]] = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14']\n          break\n        case 'eia_w':\n        case 'eia_c':\n        case 'eva_w':\n        case 'eva_c':\n        case 'ibo_c':\n        case 'ibo_w':\n          TiandituMapsStyleLabels[TiandituMapsStyle[key]] = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']\n          break\n      }\n    })\n    const { Credit, defaultValue, Event, GeographicTilingScheme, WebMercatorTilingScheme, when } = Cesium\n    options = defaultValue(options, {})\n    this._mapStyle = defaultValue(options.mapStyle, TiandituMapsStyle.IMG_W)\n    this._url = options.url || defaultValue(options.url, TiandituMapsStyleUrl[this._mapStyle])\n    this._token = options.token\n    this._layer = defaultValue(options.layer, TiandituMapsStyleLayer[this._mapStyle])\n    this._style = defaultValue(options.style, 'default')\n    this._tileMatrixSetID = defaultValue(options.tileMatrixSetID, TiandituMapsStyleID[this._mapStyle])\n    this._tileMatrixLabels = defaultValue(options.tileMatrixLabels, TiandituMapsStyleLabels[this._mapStyle])\n    this._format = defaultValue(options.format, TiandituMapsStyleFormat[this._mapStyle])\n    this._epsgCode = TiandituMapsStyleEPSG[this._mapStyle]\n    this._tilingScheme = this._epsgCode === '900913' ? new WebMercatorTilingScheme() : new GeographicTilingScheme()\n    this._tileWidth = defaultValue(options.tileWidth, 256)\n    this._tileHeight = defaultValue(options.tileHeight, 256)\n    this._minimumLevel = defaultValue(options.minimumLevel, 0)\n    this._maximumLevel = defaultValue(options.maximumLevel, TiandituMapsStyleLabels[this._mapStyle].length)\n    this._rectangle = defaultValue(options.rectangle, this.tilingScheme.rectangle)\n    this._readyPromise = when.resolve(true)\n    this._errorEvent = new Event()\n    const credit = defaultValue(options.credit, '天地图全球影像服务')\n    this._credit = typeof credit === 'string' ? new Credit(credit) : credit\n    this._subdomains = defaultValue(options.subdomains, ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'])\n    this._tileDiscardPolicy = options.tileDiscardPolicy\n  }\n\n  requestImage(x, y, level) {\n    const url = buildImageResource.call(this, x, y, level)\n    return Cesium.ImageryProvider.loadImage(this as any, url)\n  }\n\n  pickFeatures(x, y, level, longitude, latitude) {\n    return undefined\n  }\n\n  get url() {\n    return this._url\n  }\n\n  get mapStyle() {\n    return this._mapStyle\n  }\n\n  get tileWidth() {\n    return this._tileWidth\n  }\n\n  get tileHeight() {\n    return this._tileHeight\n  }\n\n  get maximumLevel() {\n    return this._maximumLevel\n  }\n\n  get minimumLevel() {\n    return this._minimumLevel\n  }\n\n  get tilingScheme() {\n    return this._tilingScheme\n  }\n\n  get rectangle() {\n    return this._rectangle\n  }\n\n  get errorEvent() {\n    return this._errorEvent\n  }\n\n  get ready() {\n    return true\n  }\n\n  get readyPromise() {\n    return this._readyPromise\n  }\n\n  get credit() {\n    return this._credit\n  }\n\n  get hasAlphaChannel() {\n    return true\n  }\n\n  get tileDiscardPolicy() {\n    return this._tileDiscardPolicy\n  }\n}\n\n/**\n * 构建天地图影像服务url, 调用时需要改变 this 指向为 TiandituImageryProvider\n * @param {number} x\n * @param {number} y\n * @param {number} level\n * @private\n */\nfunction buildImageResource(this, x, y, level) {\n  const { combine, defined, defaultValue, queryToObject, objectToQuery, Uri } = Cesium\n  const freezeObject = Object.freeze\n  const options = freezeObject({\n    service: 'WMTS',\n    version: '1.0.0',\n    request: 'GetTile'\n  })\n  this._epsgCode === '900913' && (level -= 1)\n  const tileMatrixLabels = this._tileMatrixLabels\n  const tileMatrixLabel = defined(tileMatrixLabels) ? tileMatrixLabels[level] : level.toString()\n  const subdomains = this._subdomains\n  let url = this._url.replace('{s}', subdomains[(x + y + level) % subdomains.length])\n  const uri = new Uri(url)\n  let obj = queryToObject(defaultValue(uri.query?.(), ''))\n  obj = combine(options, obj)\n  obj.tilematrix = tileMatrixLabel\n  obj.layer = this._layer\n  obj.style = this._style\n  obj.tilerow = y\n  obj.tilecol = x\n  obj.tilematrixset = this._tileMatrixSetID\n  obj.format = this._format\n  const query = objectToQuery(obj)\n  url = uri.toString() + '?' + query\n  defined(this._proxy) && (url = this._proxy.getURL(url))\n  defined(this._token) && (url += '&tk=' + this._token)\n  return url\n}\n\nexport default TiandituImageryProvider\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 23:43:18\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\tianditu\\imagery.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport { minimumLevel, maximumLevel, rectangle } from '@vue-cesium/utils/cesium-props'\nimport TiandituImageryProvider from './TiandituImageryProvider'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const tiandituImageryProviderProps = {\n  ...minimumLevel,\n  ...maximumLevel,\n  ...rectangle,\n  mapStyle: {\n    type: String,\n    default: 'img_w',\n    validator: (v: string) =>\n      [\n        'cia_c',\n        'cia_w',\n        'cta_c',\n        'cta_w',\n        'cva_c',\n        'cva_w',\n        'ela_c',\n        'ela_w',\n        'eva_c',\n        'eva_w',\n        'img_c',\n        'img_w',\n        'ter_c',\n        'ter_w',\n        'vec_c',\n        'vec_w',\n        'ibo_c',\n        'ibo_w'\n      ].includes(v)\n  },\n  token: String,\n  protocol: {\n    type: String,\n    default: 'https'\n  }\n}\nexport default defineComponent({\n  name: 'VcImageryProviderTianditu',\n  props: tiandituImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'TiandituImageryProvider'\n    const providersState = useProviders(props, ctx, instance)\n\n    if (undefined === providersState) {\n      return\n    }\n    // methods\n    instance.createCesiumObject = async () => {\n      Cesium.TiandituImageryProvider = Cesium.TiandituImageryProvider || TiandituImageryProvider\n      if (providersState.unwatchFns.length === 0) {\n        providersState.setPropsWatcher(true)\n      }\n      const options = providersState.transformProps(props)\n      return new Cesium.TiandituImageryProvider(options)\n    }\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderTiandituProps = ExtractPropTypes<typeof tiandituImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-16 00:07:05\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\tile-coordinates\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcColor, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport { tilingScheme, ellipsoid, tileWidth, tileHeight } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const tileCoordinatesImageryProviderProps = {\n  ...tilingScheme,\n  ...ellipsoid,\n  color: {\n    type: [Object, String, Array] as PropType<VcColor>,\n    default: 'YELLOW'\n  },\n  ...tileWidth,\n  ...tileHeight\n}\nexport default defineComponent({\n  name: 'VcImageryProviderTileCoordinates',\n  props: tileCoordinatesImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'TileCoordinatesImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderTileCoordinatesProps = ExtractPropTypes<typeof tileCoordinatesImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-16 00:11:59\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\tile-map-service\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport {\n  fileExtension,\n  credit,\n  minimumLevel,\n  maximumLevel,\n  rectangle,\n  tilingScheme,\n  ellipsoid,\n  tileWidth,\n  tileHeight,\n  projectionTransforms\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const tmsImageryProviderProps = {\n  url: [String, Object] as PropType<string | Promise<string> | Promise<Cesium.Resource> | Cesium.Resource>,\n  ...fileExtension,\n  ...credit,\n  ...minimumLevel,\n  ...maximumLevel,\n  ...rectangle,\n  ...tilingScheme,\n  ...ellipsoid,\n  ...tileWidth,\n  ...tileHeight,\n  flipXY: Boolean,\n  ...projectionTransforms\n}\nexport default defineComponent({\n  name: 'VcImageryProviderTms',\n  props: tmsImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'TileMapServiceImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderTmsProps = ExtractPropTypes<typeof tmsImageryProviderProps>\n","import type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, PropType } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport {\n  url,\n  format,\n  credit,\n  minimumLevel,\n  maximumLevel,\n  rectangle,\n  tilingScheme,\n  ellipsoid,\n  tileWidth,\n  tileHeight\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const tiledcacheImageryProviderProps = {\n  ...url,\n  ...format,\n  ...credit,\n  ...minimumLevel,\n  ...maximumLevel,\n  ...rectangle,\n  ...tilingScheme,\n  ...ellipsoid,\n  ...tileWidth,\n  ...tileHeight,\n  dir: {\n    type: String,\n    reqiured: true\n  },\n  scales: {\n    type: Array as PropType<Array<number>>,\n    default: () => {\n      return [\n        1 / 295829355,\n        1 / 147914678,\n        1 / 73957339,\n        1 / 36978669,\n        1 / 18489335,\n        1 / 9244667,\n        1 / 4622334,\n        1 / 2311167,\n        1 / 1155583,\n        1 / 577792,\n        1 / 288896,\n        1 / 144448,\n        1 / 72224,\n        1 / 36112,\n        1 / 18056,\n        1 / 9026,\n        1 / 4514\n      ]\n    }\n  }\n}\nexport default defineComponent({\n  name: 'VcImageryProviderTiledcache',\n  props: tiledcacheImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'UrlTemplateImageryProvider'\n    const providersState = useProviders(props, ctx, instance)\n    if (undefined === providersState) {\n      return\n    }\n    // methods\n    instance.createCesiumObject = async () => {\n      const options = providersState.transformProps(props)\n      const { Credit, defined, defaultValue, DeveloperError, Ellipsoid, GeographicTilingScheme, Rectangle, Resource, UrlTemplateImageryProvider } =\n        Cesium\n\n      const { url, dir, format } = options\n      if (!defined(url)) {\n        throw new DeveloperError('options.url is required.')\n      }\n      if (!defined(dir)) {\n        throw new DeveloperError('options.dir is required.')\n      }\n      const resource = (Resource as any).createIfNeeded(url)\n      resource.url += `?dir=${dir}&scale={scale}&col={x}&row={y}&format=${format}`\n\n      const tilingScheme = defaultValue(\n        options.tilingScheme,\n        new GeographicTilingScheme({\n          ellipsoid: defaultValue(options.ellipsoid, Ellipsoid.WGS84),\n          numberOfLevelZeroTilesX: 2,\n          numberOfLevelZeroTilesY: 1\n        })\n      )\n      const tileWidth = defaultValue(options.tileWidth, 256)\n      const tileHeight = defaultValue(options.tileHeight, 256)\n      const maximumLevel = options.maximumLevel\n      const minimumLevel = defaultValue(options.minimumLevel, 0)\n      const rectangle = defaultValue(options.rectangle, tilingScheme.rectangle)\n      // Check the number of tiles at the minimum level.  If it's more than four,\n      // throw an exception, because starting at the higher minimum\n      // level will cause too many tiles to be downloaded and rendered.\n      const swTile = tilingScheme.positionToTileXY(Rectangle.southwest(rectangle), minimumLevel)\n      const neTile = tilingScheme.positionToTileXY(Rectangle.northeast(rectangle), minimumLevel)\n      const tileCount = (Math.abs(neTile.x - swTile.x) + 1) * (Math.abs(neTile.y - swTile.y) + 1)\n\n      if (tileCount > 4) {\n        throw new DeveloperError(\n          'The rectangle and minimumLevel indicate that there are ' +\n            tileCount +\n            ' tiles at the minimum level. Imagery providers with more than four tiles at the minimum level are not supported.'\n        )\n      }\n\n      let credit = defaultValue(options.credit, '')\n      if (typeof credit === 'string') {\n        credit = new Credit(credit)\n      }\n\n      return new UrlTemplateImageryProvider({\n        url: resource,\n        credit: credit,\n        tilingScheme: tilingScheme,\n        tileWidth: tileWidth,\n        tileHeight: tileHeight,\n        minimumLevel: minimumLevel,\n        maximumLevel: maximumLevel,\n        rectangle: rectangle,\n        customTags: {\n          scale: (imageryProvider, x, y, level) => {\n            const s = 1 / props.scales[level]\n            return padWithZerosIfNecessary(imageryProvider, '{scale}', s)\n          }\n        }\n      })\n    }\n\n    const padWithZerosIfNecessary = (imageryProvider, key, value) => {\n      if (\n        imageryProvider &&\n        imageryProvider.urlSchemeZeroPadding &&\n        Object.prototype.hasOwnProperty.call(imageryProvider.urlSchemeZeroPadding, key)\n      ) {\n        const paddingTemplate = imageryProvider.urlSchemeZeroPadding[key]\n        if (typeof paddingTemplate === 'string') {\n          const paddingTemplateWidth = paddingTemplate.length\n          if (paddingTemplateWidth > 1) {\n            value = value.length >= paddingTemplateWidth ? value : new Array(paddingTemplateWidth - value.toString().length + 1).join('0') + value\n          }\n        }\n      }\n      return value\n    }\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderTiledcacheProps = ExtractPropTypes<typeof tiledcacheImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-16 00:28:41\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\url-template\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport {\n  url,\n  subdomains,\n  credit,\n  minimumLevel,\n  maximumLevel,\n  rectangle,\n  tilingScheme,\n  ellipsoid,\n  tileWidth,\n  tileHeight,\n  getFeatureInfoFormats,\n  enablePickFeatures,\n  projectionTransforms\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const urltemplateImageryProviderProps = {\n  ...url,\n  pickFeaturesUrl: [String, Object] as PropType<string | Cesium.Resource>,\n  urlSchemeZeroPadding: Object,\n  ...subdomains,\n  ...credit,\n  ...minimumLevel,\n  ...maximumLevel,\n  ...rectangle,\n  ...tilingScheme,\n  ...ellipsoid,\n  ...tileWidth,\n  ...tileHeight,\n  hasAlphaChannel: {\n    type: Boolean,\n    default: true\n  },\n  ...getFeatureInfoFormats,\n  ...enablePickFeatures,\n  customTags: Object,\n  ...projectionTransforms\n}\nexport default defineComponent({\n  name: 'VcImageryProviderUrltemplate',\n  props: urltemplateImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'UrlTemplateImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderUrltemplateProps = ExtractPropTypes<typeof urltemplateImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-16 00:39:55\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\wms\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport {\n  url,\n  layers,\n  enablePickFeatures,\n  getFeatureInfoFormats,\n  rectangle,\n  tilingScheme,\n  ellipsoid,\n  tileWidth,\n  tileHeight,\n  minimumLevel,\n  maximumLevel,\n  credit,\n  subdomains,\n  clock,\n  times\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const wmsImageryProviderProps = {\n  ...url,\n  ...layers,\n  parameters: Object,\n  getFeatureInfoParameters: Object,\n  ...enablePickFeatures,\n  ...getFeatureInfoFormats,\n  ...rectangle,\n  ...tilingScheme,\n  ...ellipsoid,\n  ...tileWidth,\n  ...tileHeight,\n  ...minimumLevel,\n  ...maximumLevel,\n  crs: String,\n  srs: String,\n  ...credit,\n  ...subdomains,\n  ...clock,\n  ...times,\n  getFeatureInfoUrl: [String, Object] as PropType<string | Cesium.Resource>\n}\nexport default defineComponent({\n  name: 'VcImageryProviderWms',\n  props: wmsImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'WebMapServiceImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderWmsProps = ExtractPropTypes<typeof wmsImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-16 00:44:23\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\wmts\\index.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport {\n  url,\n  format,\n  clock,\n  times,\n  tileWidth,\n  tileHeight,\n  tilingScheme,\n  rectangle,\n  minimumLevel,\n  maximumLevel,\n  ellipsoid,\n  credit,\n  subdomains,\n  dimensions\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const wmtsImageryProviderProps = {\n  ...url,\n  ...format,\n  layer: {\n    type: String,\n    required: true\n  },\n  wmtsStyle: {\n    type: String,\n    required: true\n  },\n  tileMatrixSetID: {\n    type: String,\n    required: true\n  },\n  tileMatrixLabels: Array,\n  ...clock,\n  ...times,\n  ...dimensions,\n  ...tileWidth,\n  ...tileHeight,\n  ...tilingScheme,\n  ...rectangle,\n  ...minimumLevel,\n  ...maximumLevel,\n  ...ellipsoid,\n  ...credit,\n  ...subdomains\n}\nexport default defineComponent({\n  name: 'VcImageryProviderWmts',\n  props: wmtsImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'WebMapTileServiceImageryProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcImageryProviderWmtsProps = ExtractPropTypes<typeof wmtsImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 10:32:57\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\cesium-terrain\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport { ellipsoid, credit } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const cesiumTerrainProviderProps = {\n  url: [String, Object] as PropType<string | Promise<string> | Promise<Cesium.Resource> | Cesium.Resource>,\n  requestVertexNormals: {\n    type: Boolean,\n    default: false\n  },\n  requestWaterMask: {\n    type: Boolean,\n    default: false\n  },\n  requestMetadata: {\n    type: Boolean,\n    default: true\n  },\n  ...ellipsoid,\n  ...credit\n}\n\nexport default defineComponent({\n  name: 'VcTerrainProviderCesium',\n  props: cesiumTerrainProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CesiumTerrainProvider'\n    const providersState = useProviders(props, ctx, instance)\n\n    if (undefined === providersState) {\n      return\n    }\n    // methods\n    instance.createCesiumObject = async () => {\n      if (providersState.unwatchFns.length === 0) {\n        providersState.setPropsWatcher(true)\n      }\n      const options = providersState.transformProps(props)\n      return Cesium.defined(options.url)\n        ? new Cesium.CesiumTerrainProvider(options as any)\n        : Cesium.createWorldTerrain({ requestVertexNormals: options.requestVertexNormals, requestWaterMask: options.requestWaterMask })\n    }\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcTerrainProviderCesiumProps = ExtractPropTypes<typeof cesiumTerrainProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 09:50:23\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\arcgis\\terrain.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance, PropType } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport { ellipsoid, token } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\nexport const arcgisTerrainProviderProps = {\n  url: {\n    type: [String, Object] as PropType<string | Promise<string> | Promise<Cesium.Resource> | Cesium.Resource>,\n    default: 'https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer'\n  },\n  ...ellipsoid,\n  ...token\n}\nexport default defineComponent({\n  name: 'VcTerrainProviderArcgis',\n  props: arcgisTerrainProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'ArcGISTiledElevationTerrainProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcTerrainProviderArcgisProps = ExtractPropTypes<typeof arcgisTerrainProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-16 00:32:07\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\vr-theworld\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useProviders } from '@vue-cesium/composables'\nimport { ellipsoid, credit } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const vrTheworldImageryProviderProps = {\n  url: {\n    type: [String, Object] as PropType<string | Promise<string> | Promise<Cesium.Resource> | Cesium.Resource>,\n    default: 'https://www.vr-theworld.com/vr-theworld/tiles1.0.0/73/'\n  },\n  ...ellipsoid,\n  ...credit\n}\nexport default defineComponent({\n  name: 'VcTerrainProviderVrTheworld',\n  props: vrTheworldImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VRTheWorldTerrainProvider'\n    useProviders(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcTerrainProviderVrTheworldProps = ExtractPropTypes<typeof vrTheworldImageryProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-15 23:50:41\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\tianditu\\terrain.ts\n */\nimport type { ExtractPropTypes } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, PropType } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport { useProviders, useVueCesium } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const tiandituTerrainProviderProps = {\n  url: {\n    type: String,\n    default: 'https://{s}.tianditu.gov.cn/'\n  },\n  subdomains: {\n    type: Array as PropType<Array<string>>,\n    default: () => ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7']\n  },\n  pluginPath: {\n    type: String,\n    default: 'https://api.tianditu.gov.cn/cdn/plugins/cesium/cesiumTdt.js'\n  },\n  dataType: {\n    type: String,\n    default: 'int',\n    validator: (v: string) => ['int', 'float'].includes(v)\n  },\n  tileType: {\n    type: String,\n    default: 'heightmap',\n    validator: (v: string) => ['heightmap', 'quantized-mesh'].includes(v)\n  },\n  token: String\n}\nexport default defineComponent({\n  name: 'VcTerrainProviderTianditu',\n  props: tiandituTerrainProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'GeoTerrainProvider'\n    const providersState = useProviders(props, ctx, instance)\n\n    if (undefined === providersState) {\n      return\n    }\n\n    const { emit } = ctx\n    const vc = useVueCesium()\n    let $script\n    // methods\n    instance.createCesiumObject = async () => {\n      return new Promise((resolve, reject) => {\n        $script = document.createElement('script')\n        document.body.appendChild($script)\n        $script.src = props.pluginPath\n        $script.onload = () => {\n          if (providersState.unwatchFns.length === 0) {\n            providersState.setPropsWatcher(true)\n          }\n          const terrainUrls: Array<string> = []\n\n          for (let i = 0; i < props.subdomains.length; i++) {\n            const url = props.url.replace('{s}', props.subdomains[i]) + 'mapservice/swdx?tk=' + props.token\n            terrainUrls.push(url)\n          }\n\n          resolve(\n            new Cesium.GeoTerrainProvider({\n              urls: terrainUrls\n            })\n          )\n        }\n      })\n    }\n    instance.unmount = async () => {\n      const terrainProvider = new Cesium.EllipsoidTerrainProvider()\n      terrainProvider.readyPromise.then(() => {\n        const listener = getInstanceListener(instance, 'readyPromise')\n        listener && emit('readyPromise', terrainProvider, vc?.viewer, instance.proxy as VcComponentPublicInstance)\n      })\n      vc && (vc.viewer.terrainProvider = terrainProvider)\n      $script?.parentNode.removeChild($script)\n      return true\n    }\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcTerrainProviderTiandituProps = ExtractPropTypes<typeof tiandituTerrainProviderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-18 14:55:32\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\index.ts\n */\nimport { App } from 'vue'\nimport ImageryProviderArcgis from './arcgis/imagery'\nimport ImageryProviderBaidu from './baidu'\nimport ImageryProviderBing from './bingmaps'\nimport ImageryProviderGoogle from './google-earth'\nimport ImageryProviderGrid from './grid'\nimport ImageryProviderIon from './ion'\nimport ImageryProviderMapbox from './mapbox-style'\nimport ImageryProviderOsm from './osm'\nimport ImageryProviderSingletile from './single-tile'\nimport ImageryProviderSupermap from './supermap'\nimport ImageryProviderTianditu from './tianditu/imagery'\nimport ImageryProviderTileCoordinates from './tile-coordinates'\nimport ImageryProviderTms from './tile-map-service'\nimport ImageryProviderTiledcache from './tiled-cache'\nimport ImageryProviderUrltemplate from './url-template'\nimport ImageryProviderWms from './wms'\nimport ImageryProviderWmts from './wmts'\n\nimport TerrainProviderCesium from './cesium-terrain'\nimport TerrainProviderArcgis from './arcgis/terrain'\nimport TerrainProviderVrTheworld from './vr-theworld'\nimport TerrainProviderTianditu from './tianditu/terrain'\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\n\nconst components = [\n  ImageryProviderArcgis,\n  ImageryProviderBaidu,\n  ImageryProviderBing,\n  ImageryProviderGoogle,\n  ImageryProviderGrid,\n  ImageryProviderIon,\n  ImageryProviderMapbox,\n  ImageryProviderOsm,\n  ImageryProviderSingletile,\n  ImageryProviderSupermap,\n  ImageryProviderTianditu,\n  ImageryProviderTileCoordinates,\n  ImageryProviderTms,\n  ImageryProviderTiledcache,\n  ImageryProviderUrltemplate,\n  ImageryProviderWms,\n  ImageryProviderWmts,\n\n  TerrainProviderCesium,\n  TerrainProviderArcgis,\n  TerrainProviderVrTheworld,\n  TerrainProviderTianditu\n]\n\nconst install = (app: App): void => {\n  components.forEach(cmp => {\n    app.component(cmp.name, cmp)\n  })\n}\n\nexport default {\n  install\n}\n\ncomponents.forEach(cmp => {\n  cmp['install'] = (app: App): void => {\n    app.component(cmp.name, cmp)\n  }\n})\n\nexport const VcImageryProviderArcgis = ImageryProviderArcgis as SFCWithInstall<typeof ImageryProviderArcgis>\nexport const VcImageryProviderBaidu = ImageryProviderBaidu as SFCWithInstall<typeof ImageryProviderBaidu>\nexport const VcImageryProviderBing = ImageryProviderBing as SFCWithInstall<typeof ImageryProviderBing>\nexport const VcImageryProviderGoogle = ImageryProviderGoogle as SFCWithInstall<typeof ImageryProviderGoogle>\nexport const VcImageryProviderGrid = ImageryProviderGrid as SFCWithInstall<typeof ImageryProviderGrid>\nexport const VcImageryProviderIon = ImageryProviderIon as SFCWithInstall<typeof ImageryProviderIon>\nexport const VcImageryProviderMapbox = ImageryProviderMapbox as SFCWithInstall<typeof ImageryProviderMapbox>\nexport const VcImageryProviderOsm = ImageryProviderOsm as SFCWithInstall<typeof ImageryProviderOsm>\nexport const VcImageryProviderSingletile = ImageryProviderSingletile as SFCWithInstall<typeof ImageryProviderSingletile>\nexport const VcImageryProviderSupermap = ImageryProviderSupermap as SFCWithInstall<typeof ImageryProviderSupermap>\nexport const VcImageryProviderTianditu = ImageryProviderTianditu as SFCWithInstall<typeof ImageryProviderTianditu>\nexport const VcImageryProviderTileCoordinates = ImageryProviderTileCoordinates as SFCWithInstall<typeof ImageryProviderTileCoordinates>\nexport const VcImageryProviderTms = ImageryProviderTms as SFCWithInstall<typeof ImageryProviderTms>\nexport const VcImageryProviderTiledcache = ImageryProviderTiledcache as SFCWithInstall<typeof ImageryProviderTiledcache>\nexport const VcImageryProviderUrltemplate = ImageryProviderUrltemplate as SFCWithInstall<typeof ImageryProviderUrltemplate>\nexport const VcImageryProviderWms = ImageryProviderWms as SFCWithInstall<typeof ImageryProviderWms>\nexport const VcImageryProviderWmts = ImageryProviderWmts as SFCWithInstall<typeof ImageryProviderWmts>\n\nexport const VcTerrainProviderCesium = TerrainProviderCesium as SFCWithInstall<typeof TerrainProviderCesium>\nexport const VcTerrainProviderArcgis = TerrainProviderArcgis as SFCWithInstall<typeof TerrainProviderArcgis>\nexport const VcTerrainProviderVrTheworld = TerrainProviderVrTheworld as SFCWithInstall<typeof TerrainProviderVrTheworld>\nexport const VcTerrainProviderTianditu = TerrainProviderTianditu as SFCWithInstall<typeof TerrainProviderTianditu>\n\nexport * from './arcgis/imagery'\nexport * from './arcgis/terrain'\nexport * from './baidu'\nexport * from './bingmaps'\nexport * from './cesium-terrain'\nexport * from './google-earth'\nexport * from './grid'\nexport * from './ion'\nexport * from './mapbox-style'\nexport * from './osm'\nexport * from './single-tile'\nexport * from './supermap'\nexport * from './tianditu/imagery'\nexport * from './tianditu/terrain'\nexport * from './tile-coordinates'\nexport * from './tile-map-service'\nexport * from './tiled-cache'\nexport * from './url-template'\nexport * from './vr-theworld'\nexport * from './wms'\nexport * from './wmts'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-19 17:29:55\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\datasources\\custom\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useDatasources } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { show, enableMouseEvent } from '@vue-cesium/utils/cesium-props'\nimport { VcEntityProps } from '../../entity'\nimport { datasourceEmits } from '@vue-cesium/utils/emits'\n\nexport const customDatasourceProps = {\n  ...show,\n  ...enableMouseEvent,\n  entities: {\n    type: Array as PropType<Array<VcEntityProps>>,\n    default: () => []\n  },\n  name: String,\n  destroy: {\n    type: Boolean,\n    default: false\n  }\n}\nexport default defineComponent({\n  name: 'VcDatasourceCustom',\n  props: customDatasourceProps,\n  emits: datasourceEmits,\n  setup(props: VcDatasourceCustomProps, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CustomDataSource'\n    useDatasources(props, ctx, instance)\n\n    instance.createCesiumObject = async () => {\n      return new Cesium.CustomDataSource(props.name)\n    }\n\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(instance.proxy?.$options.name || ''),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcDatasourceCustomProps = ExtractPropTypes<typeof customDatasourceProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-19 17:46:30\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\datasources\\czml\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useDatasources } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { show, enableMouseEvent, sourceUri, credit } from '@vue-cesium/utils/cesium-props'\nimport { VcEntityProps } from '../../entity/src'\nimport { datasourceEmits } from '@vue-cesium/utils/emits'\n\nexport const czmlDatasourceProps = {\n  ...show,\n  ...enableMouseEvent,\n  entities: {\n    type: Array as PropType<Array<VcEntityProps>>,\n    default: () => []\n  },\n  czml: {\n    type: [String, Object] as PropType<string | Cesium.Resource>,\n    required: true\n  },\n  ...sourceUri,\n  ...credit,\n  destroy: {\n    type: Boolean,\n    default: false\n  }\n}\nexport default defineComponent({\n  name: 'VcDatasourceCzml',\n  props: czmlDatasourceProps,\n  emits: datasourceEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CzmlDataSource'\n    const datasourcesState = useDatasources(props, ctx, instance)\n\n    if (undefined === datasourcesState) {\n      return\n    }\n\n    instance.createCesiumObject = async () => {\n      const options = datasourcesState.transformProps(props)\n      return Cesium.CzmlDataSource.load(props.czml, options)\n    }\n\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(instance.proxy?.$options.name || ''),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcDatasourceCzmlProps = ExtractPropTypes<typeof czmlDatasourceProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-19 21:15:52\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\datasources\\geojson\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { VcColor, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useDatasources } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { show, enableMouseEvent, data, sourceUri, clampToGround, credit } from '@vue-cesium/utils/cesium-props'\nimport { makeColor } from '@vue-cesium/utils/cesium-helpers'\nimport { VcEntityProps } from '../../entity/src'\nimport { datasourceEmits } from '@vue-cesium/utils/emits'\n\nexport const geojsonDatasourceProps = {\n  ...show,\n  ...enableMouseEvent,\n  entities: {\n    type: Array as PropType<Array<VcEntityProps>>,\n    default: () => []\n  },\n  ...data,\n  ...sourceUri,\n  describe: [Function, Object],\n  markerSize: {\n    type: Number,\n    default: 48\n  },\n  markerSymbol: String,\n  markerColor: {\n    type: [Object, String, Array] as PropType<VcColor>,\n    default: () => ({ x: 0.2549019607843137, y: 0.4117647058823529, z: 0.8823529411764706 }),\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  },\n  stroke: {\n    type: [Object, String, Array] as PropType<VcColor>,\n    default: () => ({ x: 1, y: 1, z: 0 }),\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  },\n  strokeWidth: {\n    type: Number,\n    default: 2\n  },\n  fill: {\n    type: [Object, String, Array] as PropType<VcColor>,\n    default: () => ({ x: 1, y: 1, z: 0, w: 0.39215686274509803 }),\n    watcherOptions: {\n      cesiumObjectBuilder: makeColor\n    }\n  },\n  ...clampToGround,\n  ...credit,\n  destroy: {\n    type: Boolean,\n    default: false\n  }\n}\nexport default defineComponent({\n  name: 'VcDatasourceGeojson',\n  props: geojsonDatasourceProps,\n  emits: datasourceEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'GeoJsonDataSource'\n    const datasourcesState = useDatasources(props, ctx, instance)\n\n    if (undefined === datasourcesState) {\n      return\n    }\n\n    instance.createCesiumObject = async () => {\n      const options: any = datasourcesState.transformProps(props)\n      return Cesium.GeoJsonDataSource.load(props.data, options)\n    }\n\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(instance.proxy?.$options.name || ''),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcDatasourceGeojsonProps = ExtractPropTypes<typeof geojsonDatasourceProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-19 21:22:03\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\datasources\\kml\\index.ts\n */\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useDatasources, useVueCesium } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { show, enableMouseEvent, data, sourceUri, clampToGround, ellipsoid, credit } from '@vue-cesium/utils/cesium-props'\nimport { datasourceEmits } from '@vue-cesium/utils/emits'\nimport { VcEntityProps } from '../../entity/src'\n\nexport const kmlDatasourceProps = {\n  ...show,\n  ...enableMouseEvent,\n  entities: {\n    type: Array as PropType<Array<VcEntityProps>>,\n    default: () => []\n  },\n  ...data,\n  camera: Object as PropType<Cesium.Camera>,\n  canvas: HTMLCanvasElement,\n  ...sourceUri,\n  ...clampToGround,\n  ...ellipsoid,\n  ...credit,\n  destroy: {\n    type: Boolean,\n    default: false\n  }\n}\nexport default defineComponent({\n  name: 'VcDatasourceKml',\n  props: kmlDatasourceProps,\n  emits: datasourceEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'KmlDataSource'\n    const datasourcesState = useDatasources(props, ctx, instance)\n    const vc = useVueCesium()\n\n    instance.createCesiumObject = async () => {\n      const options: any = datasourcesState?.transformProps(props)\n      if (!options.camera) {\n        options.camera = vc?.viewer.camera\n      }\n      if (!options.canvas) {\n        options.canvas = vc?.viewer.canvas\n      }\n      return Cesium.KmlDataSource.load(props.data || '', options)\n    }\n\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(instance.proxy?.$options.name || ''),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcDatasourceKmlProps = ExtractPropTypes<typeof kmlDatasourceProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-19 21:20:49\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\datasources\\index.ts\n */\nimport { App } from 'vue'\nimport DatasourceCustom from './custom'\nimport DatasourceCzml from './czml'\nimport DatasourceGeojson from './geojson'\nimport DatasourceKml from './kml'\n\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\n\nconst components = [DatasourceCustom, DatasourceCzml, DatasourceGeojson, DatasourceKml]\n\nconst install = (app: App): void => {\n  components.forEach(cmp => {\n    app.component(cmp.name, cmp)\n  })\n}\n\nexport default {\n  install\n}\n\ncomponents.forEach(cmp => {\n  cmp['install'] = (app: App): void => {\n    app.component(cmp.name, cmp)\n  }\n})\n\nexport const VcDatasourceCustom = DatasourceCustom as SFCWithInstall<typeof DatasourceCustom>\nexport const VcDatasourceCzml = DatasourceCzml as SFCWithInstall<typeof DatasourceCzml>\nexport const VcDatasourceGeojson = DatasourceGeojson as SFCWithInstall<typeof DatasourceGeojson>\nexport const VcDatasourceKml = DatasourceKml as SFCWithInstall<typeof DatasourceKml>\n\nexport * from './custom'\nexport * from './czml'\nexport * from './geojson'\nexport * from './kml'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-17 21:15:54\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\billboard\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type {\n  VcBoundingRectangle,\n  VcCallbackPropertyFunction,\n  VcCartesian2,\n  VcColor,\n  VcComponentInternalInstance,\n  VcDistanceDisplayCondition,\n  VcNearFarScalar,\n  VcPosition,\n  VcReadyObject\n} from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  image,\n  scale,\n  pixelOffset,\n  eyeOffset,\n  horizontalOrigin,\n  verticalOrigin,\n  heightReference,\n  color,\n  rotation,\n  alignedAxis,\n  sizeInMeters,\n  width,\n  height,\n  scaleByDistance,\n  translucencyByDistance,\n  pixelOffsetScaleByDistance,\n  imageSubRegion,\n  distanceDisplayCondition,\n  disableDepthTestDistance\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { graphicsEmits } from '@vue-cesium/utils/emits'\nexport const billboarGraphicsProps = {\n  ...image,\n  ...scale,\n  ...pixelOffset,\n  ...eyeOffset,\n  ...horizontalOrigin,\n  ...verticalOrigin,\n  ...heightReference,\n  ...color,\n  ...rotation,\n  ...alignedAxis,\n  ...sizeInMeters,\n  ...width,\n  ...height,\n  ...scaleByDistance,\n  ...translucencyByDistance,\n  ...pixelOffsetScaleByDistance,\n  ...disableDepthTestDistance,\n  ...show,\n  ...distanceDisplayCondition,\n  ...imageSubRegion\n}\nexport default defineComponent({\n  name: 'VcGraphicsBillboard',\n  props: billboarGraphicsProps,\n  emits: graphicsEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'BillboardGraphics'\n    useGraphics(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\n// export type VcGraphicsBillboardProps = ExtractPropTypes<typeof billboarGraphicsProps>\nexport type VcGraphicsBillboardProps = {\n  /**\n   * A boolean Property specifying the visibility of the billboard.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * A Property specifying the Image, URI, or Canvas to use for the billboard.\n   */\n  image?: string | HTMLCanvasElement | Cesium.CallbackProperty | VcCallbackPropertyFunction<string>\n  /**\n   * A numeric Property specifying the scale to apply to the image size.\n   * Default value: 1.0\n   */\n  scale?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A VcCartesian2 Property specifying the pixel offset.\n   * Default value: { x: 0, y: 0 }\n   */\n  pixelOffset?: VcCartesian2\n  /**\n   * A VcPosition Property specifying the eye offset.\n   * Default value: { x: 0, y: 0, z: 0 }\n   */\n  eyeOffset?: VcPosition\n  /**\n   * A Property specifying the HorizontalOrigin.\n   * Default value: 0\n   */\n  horizontalOrigin?: number | Cesium.HorizontalOrigin | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the VerticalOrigin.\n   * Default value: 0\n   */\n  verticalOrigin?: number | Cesium.VerticalOrigin | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the height is relative to.\n   */\n  heightReference?: number | Cesium.HeightReference | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the tint Color of the image.\n   * Default value: white\n   */\n  color?: VcColor\n  /**\n   * A numeric Property specifying the rotation about the alignedAxis.\n   * Default value: 0\n   */\n  rotation?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A VcPosition Property specifying the unit vector axis of rotation.\n   * Default value: { x: 0, y: 0, z: 0 }\n   */\n  alignedAxis?: VcPosition\n  /**\n   * A boolean Property specifying whether this billboard's size should be measured in meters.\n   * Default value: false\n   */\n  sizeInMeters?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A numeric Property specifying the width of the billboard in pixels, overriding the native size.\n   */\n  width?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the height of the billboard in pixels, overriding the native size.\n   */\n  height?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A VcNearFarScalar Property used to scale the point based on distance from the camera.\n   */\n  scaleByDistance?: VcNearFarScalar\n  /**\n   * A VcNearFarScalar Property used to set translucency based on distance from the camera.\n   */\n  translucencyByDistance?: VcNearFarScalar\n  /**\n   * A VcNearFarScalar Property used to set pixelOffset based on distance from the camera.\n   */\n  pixelOffsetScaleByDistance?: VcNearFarScalar\n  /**\n   * A Property specifying a BoundingRectangle that defines a sub-region of the image to use for the billboard, rather than the entire image, measured in pixels from the bottom-left.\n   */\n  imageSubRegion?: VcBoundingRectangle\n  /**\n   * A Property specifying at what distance from the camera that this billboard will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * A Property specifying the distance from the camera at which to disable the depth test to.\n   */\n  disableDepthTestDistance?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * Triggers before the VcGraphicsBillboard is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsBillboard is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcGraphicsBillboard is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when a property or sub-property is changed or modified.\n   */\n  onDefinitionChanged?: (property: Cesium.Property) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-02-16 09:20:32\n * @LastEditors: Please set LastEditors\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\box\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  dimensions,\n  heightReference,\n  fill,\n  material,\n  outline,\n  outlineColor,\n  outlineWidth,\n  shadows,\n  distanceDisplayCondition\n} from '@vue-cesium/utils/cesium-props'\nimport { VcPosition, VcCallbackPropertyFunction, VcMaterial, VcColor, VcDistanceDisplayCondition } from '@vue-cesium/utils/types'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const boxGraphicsProps = {\n  ...show,\n  ...dimensions,\n  ...heightReference,\n  ...fill,\n  ...material,\n  ...outline,\n  ...outlineColor,\n  ...outlineWidth,\n  ...shadows,\n  ...distanceDisplayCondition\n}\nexport default defineComponent({\n  name: 'VcGraphicsBox',\n  props: boxGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'BoxGraphics'\n    useGraphics(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\n// export type VcGraphicsBoxProps = ExtractPropTypes<typeof boxGraphicsProps>\nexport type VcGraphicsBoxProps = {\n  /**\n   * A boolean Property specifying the visibility of the billboard.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Gets or sets Cartesian3 Property property specifying the length, width, and height of the box.\n   */\n  dimensions?: VcPosition\n  /**\n   * Gets or sets the Property specifying the HeightReference.\n   * Default Value: HeightReference.NONE\n   */\n  heightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   *Gets or sets the boolean Property specifying whether the box is filled with the provided material.\n   *Default Value: true\n   */\n  fill?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * Gets or sets the material used to fill the box.\n   * Default Value: Color.WHITE\n   */\n  material?: VcMaterial\n  /**\n   * Gets or sets the Property specifying whether the box is outlined.\n   * Default Value: false\n   */\n  outline?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * Gets or sets the Property specifying the Color of the outline.\n   * Default Value: Color.BLACK\n   */\n  outlineColor?: VcColor\n  /**\n   * Gets or sets the numeric Property specifying the width of the outline.\n   * Note: This property will be ignored on all major browsers on Windows platforms. For details, see (@link https://github.com/CesiumGS/cesium/issues/40}.\n   * Default Value: 1.0\n   */\n  outlineWidth?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * Get or sets the enum Property specifying whether the box casts or receives shadows from light sources.\n   * Default Value: ShadowMode.DISABLED\n   */\n  shadows?: number | Cesium.ShadowMode | VcCallbackPropertyFunction<number>\n  /**\n   * Gets or sets the DistanceDisplayCondition Property specifying at what distance from the camera that this box will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:10:57\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\corridor\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  positions,\n  width,\n  height,\n  heightReference,\n  extrudedHeight,\n  extrudedHeightReference,\n  cornerType,\n  granularity,\n  fill,\n  material,\n  outline,\n  outlineColor,\n  outlineWidth,\n  shadows,\n  distanceDisplayCondition,\n  classificationType,\n  zIndex\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nconst corridorGraphicsProps = {\n  ...show,\n  ...positions,\n  ...width,\n  ...height,\n  ...heightReference,\n  ...extrudedHeight,\n  ...extrudedHeightReference,\n  ...cornerType,\n  ...granularity,\n  ...fill,\n  ...material,\n  ...outline,\n  ...outlineColor,\n  ...outlineWidth,\n  ...shadows,\n  ...distanceDisplayCondition,\n  ...classificationType,\n  ...zIndex\n}\nexport default defineComponent({\n  name: 'VcGraphicsCorridor',\n  props: corridorGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CorridorGraphics'\n    useGraphics(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsCorridorProps = ExtractPropTypes<typeof corridorGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:12:42\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\cylinder\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  length,\n  topRadius,\n  bottomRadius,\n  heightReference,\n  fill,\n  material,\n  outline,\n  outlineColor,\n  outlineWidth,\n  numberOfVerticalLines,\n  slices,\n  shadows,\n  distanceDisplayCondition\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const cylinderGraphicsProps = {\n  ...show,\n  ...length,\n  ...topRadius,\n  ...bottomRadius,\n  ...heightReference,\n  ...fill,\n  ...material,\n  ...outline,\n  ...outlineColor,\n  ...outlineWidth,\n  ...numberOfVerticalLines,\n  ...slices,\n  ...shadows,\n  ...distanceDisplayCondition\n}\nexport default defineComponent({\n  name: 'VcGraphicsCylinder',\n  props: cylinderGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'CylinderGraphics'\n    useGraphics(props, ctx, instance)\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsCylinderProps = ExtractPropTypes<typeof cylinderGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:19:07\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\ellipse\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  distanceDisplayCondition,\n  heightReference,\n  extrudedHeightReference,\n  fill,\n  material,\n  outline,\n  outlineColor,\n  outlineWidth,\n  numberOfVerticalLines,\n  classificationType,\n  zIndex,\n  stRotation,\n  shadows,\n  semiMajorAxis,\n  semiMinorAxis,\n  height,\n  extrudedHeight,\n  rotation,\n  granularity\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const ellipseGraphicsProps = {\n  ...show,\n  ...semiMajorAxis,\n  ...semiMinorAxis,\n  ...height,\n  ...heightReference,\n  ...extrudedHeight,\n  ...extrudedHeightReference,\n  ...rotation,\n  ...stRotation,\n  ...granularity,\n  ...fill,\n  ...material,\n  ...outline,\n  ...outlineColor,\n  ...outlineWidth,\n  ...numberOfVerticalLines,\n  ...shadows,\n  ...distanceDisplayCondition,\n  ...classificationType,\n  ...zIndex\n}\nexport default defineComponent({\n  name: 'VcGraphicsEllipse',\n  props: ellipseGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'EllipseGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsEllipseProps = ExtractPropTypes<typeof ellipseGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:21:00\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\ellipsoid\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  radii,\n  innerRadii,\n  minimumClock,\n  maximumClock,\n  minimumCone,\n  maximumCone,\n  heightReference,\n  fill,\n  material,\n  outline,\n  outlineColor,\n  outlineWidth,\n  stackPartitions,\n  slicePartitions,\n  subdivisions,\n  shadows,\n  distanceDisplayCondition\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const ellipsoidGraphicsProps = {\n  ...show,\n  ...radii,\n  ...innerRadii,\n  ...minimumClock,\n  ...maximumClock,\n  ...minimumCone,\n  ...maximumCone,\n  ...heightReference,\n  ...fill,\n  ...material,\n  ...outline,\n  ...outlineColor,\n  ...outlineWidth,\n  ...stackPartitions,\n  ...slicePartitions,\n  ...subdivisions,\n  ...shadows,\n  ...distanceDisplayCondition\n}\nexport default defineComponent({\n  name: 'VcGraphicsEllipsoid',\n  props: ellipsoidGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'EllipsoidGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsEllipsoidProps = ExtractPropTypes<typeof ellipsoidGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:23:46\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\label\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  text,\n  font,\n  labelStyle,\n  scale,\n  showBackground,\n  backgroundColor,\n  backgroundPadding,\n  pixelOffset,\n  eyeOffset,\n  horizontalOrigin,\n  verticalOrigin,\n  heightReference,\n  fillColor,\n  outlineColor,\n  outlineWidth,\n  translucencyByDistance,\n  pixelOffsetScaleByDistance,\n  scaleByDistance,\n  distanceDisplayCondition,\n  disableDepthTestDistance\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const labelGraphicsProps = {\n  ...show,\n  ...text,\n  ...font,\n  ...labelStyle,\n  ...scale,\n  ...showBackground,\n  ...backgroundColor,\n  ...backgroundPadding,\n  ...pixelOffset,\n  ...eyeOffset,\n  ...horizontalOrigin,\n  ...verticalOrigin,\n  ...heightReference,\n  ...fillColor,\n  ...outlineColor,\n  ...outlineWidth,\n  ...translucencyByDistance,\n  ...pixelOffsetScaleByDistance,\n  ...scaleByDistance,\n  ...distanceDisplayCondition,\n  ...disableDepthTestDistance\n}\nexport default defineComponent({\n  name: 'VcGraphicsLabel',\n  props: labelGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'LabelGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsLabelProps = ExtractPropTypes<typeof labelGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:25:32\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\model\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  uri,\n  scale,\n  minimumPixelSize,\n  maximumScale,\n  incrementallyLoadTextures,\n  runAnimations,\n  clampAnimations,\n  shadows,\n  heightReference,\n  silhouetteColor,\n  silhouetteSize,\n  color,\n  colorBlendMode,\n  colorBlendAmount,\n  imageBasedLightingFactor,\n  lightColor,\n  distanceDisplayCondition,\n  nodeTransformations,\n  articulations,\n  clippingPlanes\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const modelGraphicsProps = {\n  ...show,\n  ...uri,\n  ...scale,\n  ...minimumPixelSize,\n  ...maximumScale,\n  ...incrementallyLoadTextures,\n  ...runAnimations,\n  ...clampAnimations,\n  ...shadows,\n  ...heightReference,\n  ...silhouetteColor,\n  ...silhouetteSize,\n  ...color,\n  ...colorBlendMode,\n  ...colorBlendAmount,\n  ...imageBasedLightingFactor,\n  ...lightColor,\n  ...distanceDisplayCondition,\n  ...nodeTransformations,\n  ...articulations,\n  ...clippingPlanes\n}\nexport default defineComponent({\n  name: 'VcGraphicsModel',\n  props: modelGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'ModelGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsModelProps = ExtractPropTypes<typeof modelGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:30:36\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\path\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport { show, width, material, distanceDisplayCondition } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const pathGraphicsProps = {\n  ...show,\n  leadTime: [Number, Object, Function],\n  trailTime: [Number, Object, Function],\n  ...width,\n  resolution: {\n    type: [Number, Object, Function],\n    default: 60\n  },\n  ...material,\n  ...distanceDisplayCondition\n}\nexport default defineComponent({\n  name: 'VcGraphicsPath',\n  props: pathGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PathGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcGraphicsPathProps = ExtractPropTypes<typeof pathGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:34:32\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\plane\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { makeCartesian2 } from '@vue-cesium/utils/cesium-helpers'\nimport { useGraphics } from '@vue-cesium/composables'\nimport { show, fill, material, outline, outlineColor, outlineWidth, shadows, distanceDisplayCondition, plane } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const planeGraphicsProps = {\n  ...show,\n  ...plane,\n  // 和 BoxGraphics.dimensions 区分\n  dimensions: {\n    type: [Object, Array, Function],\n    watcherOptions: {\n      cesiumObjectBuilder: makeCartesian2\n    }\n  },\n  ...fill,\n  ...material,\n  ...outline,\n  ...outlineColor,\n  ...outlineWidth,\n  ...shadows,\n  ...distanceDisplayCondition\n}\nexport default defineComponent({\n  name: 'VcGraphicsPlane',\n  props: planeGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PlaneGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsPlaneProps = ExtractPropTypes<typeof planeGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:36:29\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\point\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  pixelSize,\n  heightReference,\n  color,\n  outlineColor,\n  outlineWidth,\n  scaleByDistance,\n  translucencyByDistance,\n  distanceDisplayCondition,\n  disableDepthTestDistance\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const pointGraphicsProps = {\n  ...show,\n  ...pixelSize,\n  ...heightReference,\n  ...color,\n  ...outlineColor,\n  ...outlineWidth,\n  ...scaleByDistance,\n  ...translucencyByDistance,\n  ...distanceDisplayCondition,\n  ...disableDepthTestDistance\n}\nexport default defineComponent({\n  name: 'VcGraphicsPoint',\n  props: pointGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PointGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsPointProps = ExtractPropTypes<typeof pointGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:37:39\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\polygon\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  hierarchy,\n  height,\n  heightReference,\n  extrudedHeight,\n  extrudedHeightReference,\n  stRotation,\n  granularity,\n  fill,\n  material,\n  outline,\n  outlineColor,\n  outlineWidth,\n  perPositionHeight,\n  closeTop,\n  closeBottom,\n  arcType,\n  shadows,\n  distanceDisplayCondition,\n  classificationType,\n  zIndex\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const polygonGraphicsProps = {\n  ...show,\n  ...hierarchy,\n  ...height,\n  ...heightReference,\n  ...extrudedHeight,\n  ...extrudedHeightReference,\n  ...stRotation,\n  ...granularity,\n  ...fill,\n  ...material,\n  ...outline,\n  ...outlineColor,\n  ...outlineWidth,\n  ...perPositionHeight,\n  ...closeTop,\n  ...closeBottom,\n  ...arcType,\n  ...shadows,\n  ...distanceDisplayCondition,\n  ...classificationType,\n  ...zIndex\n}\nexport default defineComponent({\n  name: 'VcGraphicsPolygon',\n  props: polygonGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PolygonGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsPolygonProps = ExtractPropTypes<typeof polygonGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:40:07\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\polyline\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  positions,\n  width,\n  granularity,\n  material,\n  depthFailMaterial,\n  arcType,\n  clampToGround,\n  shadows,\n  distanceDisplayCondition,\n  classificationType,\n  zIndex\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nexport const polylineGraphicsProps = {\n  ...show,\n  ...positions,\n  ...width,\n  ...granularity,\n  ...material,\n  ...depthFailMaterial,\n  ...arcType,\n  ...clampToGround,\n  ...shadows,\n  ...distanceDisplayCondition,\n  ...classificationType,\n  ...zIndex\n}\nexport default defineComponent({\n  name: 'VcGraphicsPolyline',\n  props: polylineGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PolylineGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\nexport type VcGraphicsPolylineProps = ExtractPropTypes<typeof polylineGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:41:24\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\polylineVolume\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  positions,\n  shape,\n  cornerType,\n  granularity,\n  fill,\n  material,\n  outline,\n  outlineColor,\n  outlineWidth,\n  shadows,\n  distanceDisplayCondition\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const polylineVolumeGraphicsProps = {\n  ...show,\n  ...positions,\n  ...shape,\n  ...cornerType,\n  ...granularity,\n  ...fill,\n  ...material,\n  ...outline,\n  ...outlineColor,\n  ...outlineWidth,\n  ...shadows,\n  ...distanceDisplayCondition\n}\nexport default defineComponent({\n  name: 'VcGraphicsPolylineVolume',\n  props: polylineVolumeGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PolylineVolumeGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsPolylineVolumeProps = ExtractPropTypes<typeof polylineVolumeGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:43:16\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\rectangle\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  coordinates,\n  height,\n  heightReference,\n  extrudedHeight,\n  extrudedHeightReference,\n  rotation,\n  stRotation,\n  granularity,\n  fill,\n  material,\n  outline,\n  outlineColor,\n  outlineWidth,\n  shadows,\n  distanceDisplayCondition,\n  classificationType,\n  zIndex\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const rectangleGraphicsProps = {\n  ...show,\n  ...coordinates,\n  ...height,\n  ...heightReference,\n  ...extrudedHeight,\n  ...extrudedHeightReference,\n  ...rotation,\n  ...stRotation,\n  ...granularity,\n  ...fill,\n  ...material,\n  ...outline,\n  ...outlineColor,\n  ...outlineWidth,\n  ...shadows,\n  ...distanceDisplayCondition,\n  ...classificationType,\n  ...zIndex\n}\nexport default defineComponent({\n  name: 'VcGraphicsRectangle',\n  props: rectangleGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'RectangleGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsRectangleProps = ExtractPropTypes<typeof rectangleGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:44:51\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\tileset\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport { show, uri, maximumScreenSpaceError } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const tilesetGraphicsProps = {\n  ...show,\n  ...uri,\n  ...maximumScreenSpaceError\n}\nexport default defineComponent({\n  name: 'VcGraphicsTileset',\n  props: tilesetGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'Cesium3DTilesetGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsTilesetProps = ExtractPropTypes<typeof tilesetGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-14 15:46:02\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\wall\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport type { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useGraphics } from '@vue-cesium/composables'\nimport {\n  show,\n  positions,\n  minimumHeights,\n  maximumHeights,\n  granularity,\n  fill,\n  material,\n  outline,\n  outlineColor,\n  outlineWidth,\n  shadows,\n  distanceDisplayCondition\n} from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const wallGraphicsProps = {\n  ...show,\n  ...positions,\n  ...minimumHeights,\n  ...maximumHeights,\n  ...granularity,\n  ...fill,\n  ...material,\n  ...outline,\n  ...outlineColor,\n  ...outlineWidth,\n  ...shadows,\n  ...distanceDisplayCondition\n}\nexport default defineComponent({\n  name: 'VcGraphicsWall',\n  props: wallGraphicsProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'WallGraphics'\n    useGraphics(props, ctx, instance)\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport type VcGraphicsWallProps = ExtractPropTypes<typeof wallGraphicsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-01-18 14:54:33\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\index.ts\n */\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\nimport { App } from 'vue'\nimport GraphicsBillboard from './billboard'\nimport GraphicsBox from './box'\nimport GraphicsCorridor from './corridor'\nimport GraphicsCylinder from './cylinder'\nimport GraphicsEllipse from './ellipse'\nimport GraphicsEllipsoid from './ellipsoid'\nimport GraphicsLabel from './label'\nimport GraphicsModel from './model'\nimport GraphicsPath from './path'\nimport GraphicsPlane from './plane'\nimport GraphicsPoint from './point'\nimport GraphicsPolygon from './polygon'\nimport GraphicsPolyline from './polyline'\nimport GraphicsPolylineVolume from './polylineVolume'\nimport GraphicsRectangle from './rectangle'\nimport GraphicsTileset from './tileset'\nimport GraphicsWall from './wall'\n\nconst components = [\n  GraphicsBillboard,\n  GraphicsBox,\n  GraphicsCorridor,\n  GraphicsCylinder,\n  GraphicsEllipse,\n  GraphicsEllipsoid,\n  GraphicsLabel,\n  GraphicsModel,\n  GraphicsPath,\n  GraphicsPlane,\n  GraphicsPoint,\n  GraphicsPolygon,\n  GraphicsPolyline,\n  GraphicsPolylineVolume,\n  GraphicsRectangle,\n  GraphicsTileset,\n  GraphicsWall\n]\n\nconst install = (app: App): void => {\n  components.forEach(cmp => {\n    app.component(cmp.name, cmp)\n  })\n}\n\nexport default {\n  install\n}\n\ncomponents.forEach(cmp => {\n  cmp['install'] = (app: App): void => {\n    app.component(cmp.name, cmp)\n  }\n})\n\nexport const VcGraphicsBillboard = GraphicsBillboard as SFCWithInstall<typeof GraphicsBillboard>\nexport const VcGraphicsBox = GraphicsBox as SFCWithInstall<typeof GraphicsBox>\nexport const VcGraphicsCorridor = GraphicsCorridor as SFCWithInstall<typeof GraphicsCorridor>\nexport const VcGraphicsCylinder = GraphicsCylinder as SFCWithInstall<typeof GraphicsCylinder>\nexport const VcGraphicsEllipse = GraphicsEllipse as SFCWithInstall<typeof GraphicsEllipse>\nexport const VcGraphicsEllipsoid = GraphicsEllipsoid as SFCWithInstall<typeof GraphicsEllipsoid>\nexport const VcGraphicsLabel = GraphicsLabel as SFCWithInstall<typeof GraphicsLabel>\nexport const VcGraphicsModel = GraphicsModel as SFCWithInstall<typeof GraphicsModel>\nexport const VcGraphicsPath = GraphicsPath as SFCWithInstall<typeof GraphicsPath>\nexport const VcGraphicsPlane = GraphicsPlane as SFCWithInstall<typeof GraphicsPlane>\nexport const VcGraphicsPoint = GraphicsPoint as SFCWithInstall<typeof GraphicsPoint>\nexport const VcGraphicsPolygon = GraphicsPolygon as SFCWithInstall<typeof GraphicsPolygon>\nexport const VcGraphicsPolyline = GraphicsPolyline as SFCWithInstall<typeof GraphicsPolyline>\nexport const VcGraphicsPolylineVolume = GraphicsPolylineVolume as SFCWithInstall<typeof GraphicsPolylineVolume>\nexport const VcGraphicsRectangle = GraphicsRectangle as SFCWithInstall<typeof GraphicsRectangle>\nexport const VcGraphicsTileset = GraphicsTileset as SFCWithInstall<typeof GraphicsTileset>\nexport const VcGraphicsWall = GraphicsWall as SFCWithInstall<typeof GraphicsWall>\n\nexport * from './billboard'\nexport * from './box'\nexport * from './corridor'\nexport * from './cylinder'\nexport * from './ellipse'\nexport * from './ellipsoid'\nexport * from './label'\nexport * from './model'\nexport * from './path'\nexport * from './plane'\nexport * from './point'\nexport * from './polygon'\nexport * from './polyline'\nexport * from './polylineVolume'\nexport * from './rectangle'\nexport * from './tileset'\nexport * from './wall'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-02-17 11:49:32\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\config-provider\\src\\index.ts\n */\nimport { defineComponent, PropType, renderSlot } from 'vue'\nimport { provideGlobalConfig } from '@vue-cesium/composables/use-global-config'\nimport { Language } from '@vue-cesium/locale'\nimport Chinese from '@vue-cesium/locale/lang/zh-hans'\n\nexport default defineComponent({\n  name: 'VcConfigProvider',\n  props: {\n    locale: {\n      type: Object as PropType<Language>,\n      default: () => Chinese\n    },\n    cesiumPath: {\n      type: String,\n      default: 'https://cdn.jsdelivr.net/npm/cesium@latest/Build/Cesium/Cesium.js'\n    },\n    accessToken: {\n      type: String,\n      default:\n        'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2OGE2MjZlOC1mMzhiLTRkZjQtOWEwZi1jZTE0MWY0YzhlMTAiLCJpZCI6MjU5LCJpYXQiOjE2NDM3MjU1NzZ9.ptZ5tVXvMmuWRC0WhjtYTg-17nQh14fgxBsx0HJiVXQ'\n    }\n  },\n\n  setup(props, { slots }) {\n    const config = provideGlobalConfig(props)\n    return () => renderSlot(slots, 'default', { config: config?.value })\n  }\n})\n\nexport type VcConfigProviderProps = {\n  /**\n   * Locale Object.\n   */\n  locale?: Language\n  /**\n   * CesiumJS path for vue-cesium.\n   * Default value: https://cdn.jsdelivr.net/npm/cesium@latest/Build/Cesium/Cesium.js\n   */\n  cesiumPath?: string\n  /**\n   * Cesium Ion defaultAccessToken\n   * Default value: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2OGE2MjZlOC1mMzhiLTRkZjQtOWEwZi1jZTE0MWY0YzhlMTAiLCJpZCI6MjU5LCJpYXQiOjE2NDM3MjU1NzZ9.ptZ5tVXvMmuWRC0WhjtYTg-17nQh14fgxBsx0HJiVXQ\n   */\n  accessToken?: string\n}\n","import { SFCWithInstall } from '@vue-cesium/utils/types'\nimport { App } from 'vue'\nimport ConfigProvider from './src'\n\nConfigProvider.install = (app: App): void => {\n  app.component(ConfigProvider.name, ConfigProvider)\n}\n\nconst _ConfigProvider = ConfigProvider as SFCWithInstall<typeof ConfigProvider>\n\nexport default _ConfigProvider\nexport const VcConfigProvider = _ConfigProvider\n\nexport * from './src'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-12-31 10:30:21\n * @LastEditTime: 2022-02-17 17:40:47\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\analyses\\flood\\index.ts\n */\nimport { defineComponent, getCurrentInstance, PropType, ref, h, createCommentVNode, WatchStopHandle, onUnmounted, watch } from 'vue'\nimport { polygonHierarchy } from '@vue-cesium/utils/cesium-props'\nimport { VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcPolygonHierarchy, VcReadyObject } from '@vue-cesium/utils/types'\nimport { makeColor } from '@vue-cesium/utils/cesium-helpers'\nimport { VcPrimitiveClassification } from '@vue-cesium/components/primitives'\nimport { VcGeometryInstance } from '@vue-cesium/components/geometry-instance'\nimport { VcGeometryPolygon } from '@vue-cesium/components/geometries'\nimport { getInstanceListener, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport { useCommon } from '@vue-cesium/composables'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  stop: (evt: Cesium.ClassificationPrimitive) => true\n}\nexport default defineComponent({\n  name: 'VcAnalysisFlood',\n  props: {\n    minHeight: {\n      type: Number,\n      default: -1\n    },\n    maxHeight: {\n      type: Number,\n      default: 8888\n    },\n    speed: {\n      type: Number,\n      default: 10\n    },\n    loop: {\n      type: Boolean,\n      default: false\n    },\n    color: {\n      type: [Object, Array, String] as PropType<VcColor>,\n      default: 'rgba(40,150,200,0.6)'\n    },\n    ...polygonHierarchy\n  },\n  emits: emits,\n  setup(props, ctx) {\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcAnalysisFlood'\n    instance.cesiumEvents = []\n\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n\n    const { emit } = ctx\n\n    const canRender = ref(false)\n\n    const vcParent = getVcParentInstance(instance)\n    ;(vcParent.proxy as VcComponentPublicInstance).createPromise?.then(() => {\n      canRender.value = true\n    })\n\n    const flooding = ref(false)\n    const attributes = ref<any>(null)\n    const extrudedHeight = ref(-1)\n    const childRef = ref<Cesium.ClassificationPrimitive>(null)\n    let stoped = false\n\n    // watcch\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => props.minHeight,\n        val => {\n          extrudedHeight.value = val\n        }\n      )\n    )\n\n    // methods\n    instance.createCesiumObject = async () => {\n      const { ColorGeometryInstanceAttribute } = Cesium\n\n      attributes.value = {\n        color: ColorGeometryInstanceAttribute.fromColor(makeColor(props.color) as Cesium.Color)\n      }\n\n      return childRef.value\n    }\n\n    instance.mount = async () => {\n      const { viewer } = commonState.$services\n      viewer.clock.onTick.addEventListener(onClockTick)\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = commonState.$services\n      viewer.clock.onTick.removeEventListener(onClockTick)\n      extrudedHeight.value = -1\n      flooding.value = false\n      return true\n    }\n\n    const onClockTick = () => {\n      if (flooding.value) {\n        if (extrudedHeight.value <= props.maxHeight) {\n          extrudedHeight.value += props.speed\n          stoped = false\n        } else {\n          const listener = getInstanceListener(instance, 'stop')\n          listener && emit('stop', childRef.value)\n          stoped = true\n          if (props.loop) {\n            extrudedHeight.value = props.minHeight\n          } else {\n            flooding.value = false\n          }\n        }\n      }\n    }\n\n    const start = () => {\n      extrudedHeight.value = props.minHeight\n      flooding.value = true\n    }\n\n    const pause = () => {\n      flooding.value = !flooding.value\n      if (stoped) {\n        extrudedHeight.value = props.minHeight\n      }\n    }\n\n    const stop = () => {\n      extrudedHeight.value = -1\n      flooding.value = false\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    // expose public methods\n    Object.assign(instance.proxy, {\n      childRef,\n      start,\n      pause,\n      stop\n    })\n\n    return () => {\n      if (canRender.value) {\n        const { createGuid } = Cesium\n\n        return h(\n          VcPrimitiveClassification,\n          {\n            asynchronous: false,\n            ref: childRef\n          },\n          () =>\n            h(\n              VcGeometryInstance,\n              {\n                id: createGuid(),\n                attributes: attributes.value\n              },\n              () =>\n                h(VcGeometryPolygon, {\n                  extrudedHeight: extrudedHeight.value,\n                  polygonHierarchy: props.polygonHierarchy\n                })\n            )\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\nexport type VcAnalysisFloodProps = {\n  /**\n   * Specify the minimum elevation.\n   * Default value: -1\n   */\n  minHeight?: number\n  /**\n   * Specify the maximum elevation.\n   * Default value: 8888\n   */\n  maxHeight?: number\n  /**\n   * Specify the height to increase each frame.\n   * Default value: 10\n   */\n  speed?: number\n  /**\n   * Specify whether to restart after reaching the maximum height.\n   * Default value: false\n   */\n  loop?: boolean\n  /**\n   * Specify the VcColor of water.\n   * Default value: rgba(40,150,200,0.6)\n   */\n  color?: VcColor\n  /**\n   * Specify ths VcPolygonHierarchy of polygon.\n   */\n  polygonHierarchy: VcPolygonHierarchy\n  /**\n   * Triggers before the VcCompass is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCompass is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcCompass is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the maxHeight is reached.\n   */\n  onStop?: (evt: Cesium.ClassificationPrimitive) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-18 10:40:15\n * @LastEditTime: 2022-02-17 16:52:10\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium-panda-parkd:\\00_work\\30_前端\\Cesium\\vue-cesium@next\\packages\\components\\analyses\\src\\defaultProps.ts\n */\n\nimport {\n  actionOptions,\n  pointOptsDefault,\n  polygonDrawingDefault,\n  editorOptsDefault,\n  polylineOptsDefault,\n  segmentDrawingDefault,\n  polylinePrimitiveOptsDefault\n} from '@vue-cesium/composables/use-drawing/defaultOpts'\nimport { useDrawingFabProps } from '@vue-cesium/composables/use-drawing/props'\nimport { VcDrawingOpts, VcViewshedAnalysisOpts } from '@vue-cesium/utils/drawing-types'\nimport type { VcActionTooltipProps } from '@vue-cesium/utils/types'\nimport { getDefaultOptionByProps } from '@vue-cesium/utils/util'\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport type { VcFabProps } from '../../ui'\n\nconst sightlineAnalysisActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-analysis-sightline'\n})\n\nconst sightlineAnalysisDefault: VcDrawingOpts = Object.assign({}, segmentDrawingDefault, {\n  polylineOpts: Object.assign({}, polylineOptsDefault, {\n    colors: ['#51ff00', 'red']\n  }),\n  primitiveOpts: Object.assign({}, polylinePrimitiveOptsDefault, {\n    appearance: {\n      type: 'PolylineColorAppearance'\n    },\n    depthFailAppearance: {\n      type: 'PolylineColorAppearance'\n    }\n  }),\n  sightlineType: 'polyline' // segment polyline\n})\n\nconst viewshedAnalysisActionDefault: VcActionTooltipProps = Object.assign({}, actionOptions, {\n  icon: 'vc-icons-analysis-viewshed'\n})\n\nconst viewshedAnalysisDefault: VcViewshedAnalysisOpts = Object.assign({}, polygonDrawingDefault, {\n  pointOpts: Object.assign({}, pointOptsDefault, {\n    show: false\n  }),\n  polylineOpts: Object.assign({}, polylineOptsDefault, {\n    width: 15\n  }),\n  primitiveOpts: Object.assign({}, polylinePrimitiveOptsDefault, {\n    show: false,\n    appearance: {\n      type: 'PolylineMaterialAppearance',\n      options: {\n        material: {\n          fabric: {\n            type: 'PolylineArrow',\n            uniforms: {\n              color: [255, 255, 0, 255]\n            }\n          }\n        }\n      }\n    },\n    depthFailAppearance: {\n      type: 'PolylineMaterialAppearance',\n      options: {\n        material: {\n          fabric: {\n            type: 'PolylineArrow',\n            uniforms: {\n              color: [255, 255, 0, 255]\n            }\n          }\n        }\n      }\n    }\n  }),\n  editorOpts: {\n    pixelOffset: [16, -8],\n    delay: 1000,\n    hideDelay: 1000,\n    move: Object.assign({}, editorOptsDefault),\n    removeAll: Object.assign({}, editorOptsDefault, {\n      icon: 'vc-icons-delete'\n    })\n  },\n  ellipsoidOpts: {\n    show: true,\n    horizontalViewAngle: 90,\n    verticalViewAngle: 60,\n    color: '#fff'\n  }\n})\n\nconst mainFabDefault = Object.assign({}, actionOptions, {\n  direction: 'right',\n  icon: 'vc-icons-analysis-button',\n  activeIcon: 'vc-icons-analysis-button',\n  verticalActionsAlign: 'center',\n  hideIcon: false,\n  persistent: false,\n  modelValue: true,\n  hideActionOnClick: false,\n  color: 'info'\n} as VcActionTooltipProps & VcFabProps)\n\nexport const analysisType = ['sightline', 'viewshed']\n\nconst isValidAnalysisType = (drawings: string[]) => {\n  let flag = true\n  drawings.forEach(drawing => {\n    if (!analysisType.includes(drawing)) {\n      console.error(`VueCesium: unknown analysis type: ${drawing}`)\n      flag = false\n    }\n  })\n  return flag\n}\n\nconst analysesProps = {\n  ...useDrawingFabProps,\n  analyses: {\n    type: Array as PropType<Array<'sightline' | 'viewshed'>>,\n    default: () => analysisType,\n    validator: isValidAnalysisType\n  },\n  mainFabOpts: {\n    type: Object as PropType<VcActionTooltipProps & VcFabProps>,\n    default: () => mainFabDefault\n  },\n  sightlineActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => sightlineAnalysisActionDefault\n  },\n  sightlineAnalysisOpts: {\n    type: Object as PropType<VcDrawingOpts>,\n    default: () => sightlineAnalysisDefault\n  },\n  viewshedActionOpts: {\n    type: Object as PropType<VcActionTooltipProps>,\n    default: () => viewshedAnalysisActionDefault\n  },\n  viewshedAnalysisOpts: {\n    type: Object as PropType<VcViewshedAnalysisOpts>,\n    default: () => viewshedAnalysisDefault\n  }\n}\nexport type VcAnalysesProps = ExtractPropTypes<typeof analysesProps>\nconst defaultOptions = getDefaultOptionByProps<VcAnalysesProps>(analysesProps)\n\nexport {\n  analysesProps,\n  defaultOptions,\n  sightlineAnalysisActionDefault,\n  sightlineAnalysisDefault,\n  viewshedAnalysisActionDefault,\n  viewshedAnalysisDefault,\n  mainFabDefault\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-04 21:42:14\n * @LastEditTime: 2022-02-08 16:21:48\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\analyses\\src\\sightline\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { defineComponent } from 'vue'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport useDrawingPolyline from '@vue-cesium/composables/use-drawing/use-drawing-polyline'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport useDrawingSegment from '@vue-cesium/composables/use-drawing/use-drawing-segment'\nimport { VcPolygonProps } from '../../../primitive-collections'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\n\nexport default defineComponent({\n  name: 'VcAnalysisSightline',\n  props: {\n    ...useDrawingActionProps,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    polygonOpts: Object as PropType<VcPolygonProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    sightlineType: {\n      type: String as PropType<'segment' | 'polyline' | 'circle'>,\n      default: 'polyline'\n    },\n    edge: Number\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    if (props.sightlineType === 'segment' || props.sightlineType === 'circle') {\n      return useDrawingSegment(props, ctx, 'VcAnalysisSightline')\n    } else if (props.sightlineType === 'polyline') {\n      return useDrawingPolyline(props, ctx, 'VcAnalysisSightline')\n    }\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-08 11:05:10\n * @LastEditTime: 2022-01-10 11:48:44\n * @LastEditors: zouyaoji\n * @Description: refer to https://blog.csdn.net/fywindmoon/article/details/108415116\n * @FilePath: \\vue-cesium@next\\packages\\components\\analyses\\src\\viewshed\\fragmentShader.ts\n */\n/**\n * 可视域分析 shadowMap shader\n */\nexport default `\n#define USE_CUBE_MAP_SHADOW true\n uniform sampler2D colorTexture;\n uniform sampler2D depthTexture;\n varying vec2 v_textureCoordinates;\n uniform mat4 camera_projection_matrix;\n uniform mat4 camera_view_matrix;\n uniform samplerCube shadowMap_textureCube;\n uniform mat4 shadowMap_matrix;\n uniform vec4 shadowMap_lightPositionEC;\n uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness;\n uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth;\n uniform float vc_viewDistance;\n uniform vec4 vc_visibleAreaColor;\n uniform vec4 vc_invisibleAreaColor;\n struct zx_shadowParameters\n {\n     vec3 texCoords;\n     float depthBias;\n     float depth;\n     float nDotL;\n     vec2 texelStepSize;\n     float normalShadingSmooth;\n     float darkness;\n };\n float czm_shadowVisibility(samplerCube shadowMap, zx_shadowParameters shadowParameters)\n {\n     float depthBias = shadowParameters.depthBias;\n     float depth = shadowParameters.depth;\n     float nDotL = shadowParameters.nDotL;\n     float normalShadingSmooth = shadowParameters.normalShadingSmooth;\n     float darkness = shadowParameters.darkness;\n     vec3 uvw = shadowParameters.texCoords;\n     depth -= depthBias;\n     float visibility = czm_shadowDepthCompare(shadowMap, uvw, depth);\n     return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness);\n }\n vec4 getPositionEC(){\n     return czm_windowToEyeCoordinates(gl_FragCoord);\n }\n vec3 getNormalEC(){\n     return vec3(1.);\n }\n vec4 toEye(in vec2 uv,in float depth){\n     vec2 xy=vec2((uv.x*2.-1.),(uv.y*2.-1.));\n     vec4 posInCamera=czm_inverseProjection*vec4(xy,depth,1.);\n     posInCamera=posInCamera/posInCamera.w;\n     return posInCamera;\n }\n vec3 pointProjectOnPlane(in vec3 planeNormal,in vec3 planeOrigin,in vec3 point){\n     vec3 v01=point-planeOrigin;\n     float d=dot(planeNormal,v01);\n     return(point-planeNormal*d);\n }\n float getDepth(in vec4 depth){\n     float z_window=czm_unpackDepth(depth);\n     z_window=czm_reverseLogDepth(z_window);\n     float n_range=czm_depthRange.near;\n     float f_range=czm_depthRange.far;\n     return(2.*z_window-n_range-f_range)/(f_range-n_range);\n }\n float shadow(in vec4 positionEC){\n     vec3 normalEC=getNormalEC();\n     zx_shadowParameters shadowParameters;\n     shadowParameters.texelStepSize=shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.xy;\n     shadowParameters.depthBias=shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.z;\n     shadowParameters.normalShadingSmooth=shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.w;\n     shadowParameters.darkness=shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.w;\n     vec3 directionEC=positionEC.xyz-shadowMap_lightPositionEC.xyz;\n     float distance=length(directionEC);\n     directionEC=normalize(directionEC);\n     float radius=shadowMap_lightPositionEC.w;\n     if(distance>radius)\n     {\n         return 2.0;\n     }\n     vec3 directionWC=czm_inverseViewRotation*directionEC;\n     shadowParameters.depth=distance/radius-0.0003;\n     shadowParameters.nDotL=clamp(dot(normalEC,-directionEC),0.,1.);\n     shadowParameters.texCoords=directionWC;\n     float visibility=czm_shadowVisibility(shadowMap_textureCube,shadowParameters);\n     return visibility;\n }\n bool visible(in vec4 result)\n {\n     result.x/=result.w;\n     result.y/=result.w;\n     result.z/=result.w;\n     return result.x>=-1.&&result.x<=1.\n     &&result.y>=-1.&&result.y<=1.\n     &&result.z>=-1.&&result.z<=1.;\n }\n void main(){\n     // 釉色 = 结构二维(颜色纹理, 纹理坐标)\n     gl_FragColor = texture2D(colorTexture, v_textureCoordinates);\n     // 深度 = 获取深度(结构二维(深度纹理, 纹理坐标))\n     float depth = getDepth(texture2D(depthTexture, v_textureCoordinates));\n     // 视角 = (纹理坐标, 深度)\n     vec4 viewPos = toEye(v_textureCoordinates, depth);\n     // 世界坐标\n     vec4 wordPos = czm_inverseView * viewPos;\n     // 虚拟相机中坐标\n     vec4 vcPos = camera_view_matrix * wordPos;\n     float near = .001 * vc_viewDistance;\n     float dis = length(vcPos.xyz);\n     if(dis > near && dis < vc_viewDistance){\n         // 透视投影\n         vec4 posInEye = camera_projection_matrix * vcPos;\n         // 可视区颜色\n         // vec4 vc_visibleAreaColor=vec4(0.,1.,0.,.5);\n         // vec4 vc_invisibleAreaColor=vec4(1.,0.,0.,.5);\n         if(visible(posInEye)){\n             float vis = shadow(viewPos);\n             if(vis > 0.3){\n                 gl_FragColor = mix(gl_FragColor,vc_visibleAreaColor,.5);\n             } else{\n                 gl_FragColor = mix(gl_FragColor,vc_invisibleAreaColor,.5);\n             }\n         }\n     }\n }\n`\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-06 16:26:03\n * @LastEditTime: 2022-02-08 16:22:43\n * @LastEditors: zouyaoji\n * @Description: refer to https://blog.csdn.net/fywindmoon/article/details/108415116\n * @FilePath: \\vue-cesium@next\\packages\\components\\analyses\\src\\viewshed\\index.ts\n */\nimport { defineComponent, PropType } from 'vue'\nimport { useDrawingActionProps } from '@vue-cesium/composables/use-drawing/props'\nimport useDrawingSegment from '@vue-cesium/composables/use-drawing/use-drawing-segment'\nimport fragmentShader from './fragmentShader'\nimport { VcGeometryPolylineProps } from '../../../geometries'\nimport { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nexport default defineComponent({\n  name: 'VcAnalysisViewshed',\n  props: {\n    ...useDrawingActionProps,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps & VcPrimitiveGroundPolylineProps>,\n    ellipsoidOpts: Object\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcAnalysisViewshed', fragmentShader)\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-06 10:23:09\n * @LastEditTime: 2022-02-18 23:45:13\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\analyses\\src\\index.ts\n */\n\nimport { VcActionTooltipProps, VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { defineComponent, ExtractPropTypes, getCurrentInstance, reactive, ref, VNode } from 'vue'\nimport { useLocale } from '@vue-cesium/composables'\nimport { clearActionDefault } from '@vue-cesium/composables/use-drawing/defaultOpts'\nimport {\n  defaultOptions,\n  analysesProps,\n  mainFabDefault,\n  sightlineAnalysisActionDefault,\n  sightlineAnalysisDefault,\n  viewshedAnalysisActionDefault\n} from './defaultProps'\nimport {\n  AnalysisActionCmpOpts,\n  AnalysisActionCmpRef,\n  AnalysisActionOpts,\n  VcDrawingActionInstance,\n  VcDrawingActiveEvt,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingOpts,\n  VcViewshedAnalysisOpts\n} from '@vue-cesium/utils/drawing-types'\nimport { camelize } from '@vue-cesium/utils/util'\nimport { VcFabAction, VcFabProps } from '@vue-cesium/components/ui'\nimport useDrawingFab from '@vue-cesium/composables/use-drawing/use-drawing-fab'\nimport VcAnalysisSightline from './sightline'\nimport VcAnalysisViewshed from './viewshed'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\n\nconst emits = {\n  ...drawingEmit,\n  fabUpdated: (value: boolean) => true\n}\nexport default defineComponent({\n  name: 'VcAnalyses',\n  props: analysesProps,\n  emits: emits,\n  setup(props: ExtractPropTypes<typeof analysesProps>, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcAnalyses'\n    const { t } = useLocale()\n\n    const options: any = {}\n    // computed\n    const clearActionOpts = reactive<typeof clearActionDefault>(Object.assign({}, defaultOptions.clearActionOpts, props.clearActionOpts))\n    const mainFabOpts = reactive<typeof mainFabDefault>(Object.assign({}, defaultOptions.mainFabOpts, props.mainFabOpts))\n\n    const sightlineActionOpts = reactive<typeof sightlineAnalysisActionDefault>(\n      Object.assign({}, defaultOptions.sightlineActionOpts, props.sightlineActionOpts)\n    )\n    const sightlineAnalysisOpts = reactive<typeof sightlineAnalysisDefault>(\n      Object.assign({}, defaultOptions.sightlineAnalysisOpts, props.sightlineAnalysisOpts)\n    )\n\n    const viewshedActionOpts = reactive<typeof viewshedAnalysisActionDefault>(\n      Object.assign({}, defaultOptions.viewshedActionOpts, props.viewshedActionOpts)\n    )\n    const viewshedAnalysisOpts = reactive<typeof sightlineAnalysisDefault>(\n      Object.assign({}, defaultOptions.viewshedAnalysisOpts, props.viewshedAnalysisOpts)\n    )\n\n    options.sightlineActionOpts = sightlineActionOpts\n    options.sightlineAnalysisOpts = sightlineAnalysisOpts\n    options.viewshedActionOpts = viewshedActionOpts\n    options.viewshedAnalysisOpts = viewshedAnalysisOpts\n    options.clearActionOpts = clearActionOpts\n\n    const drawingActionInstances: Array<VcDrawingActionInstance> = props.analyses.map(analysisName => ({\n      name: analysisName,\n      type: 'analysis',\n      actionStyle: {\n        background: options[`${camelize(analysisName)}ActionOpts`].color,\n        color: options[`${camelize(analysisName)}ActionOpts`].textColor\n      },\n      actionClass: `vc-analysis-${analysisName} vc-analysis-button${\n        analysisName === (instance.proxy as any).selectedDrawingActionInstance?.name ? ' active' : ''\n      }`,\n      actionRef: ref<typeof VcFabAction>(null!),\n      actionOpts: options[`${camelize(analysisName)}ActionOpts`] as AnalysisActionOpts,\n      cmp: getDrawingCmp(analysisName),\n      cmpRef: ref<AnalysisActionCmpRef>(null!),\n      cmpOpts: options[`${camelize(analysisName)}AnalysisOpts`] as AnalysisActionCmpOpts,\n      tip: options[`${camelize(analysisName)}ActionOpts`].tooltip.tip || t(`vc.analysis.${camelize(analysisName)}.tip`),\n      isActive: false\n    }))\n\n    function getDrawingCmp(name) {\n      switch (name) {\n        case 'sightline':\n          return VcAnalysisSightline\n        case 'viewshed':\n          return VcAnalysisViewshed\n        default:\n          return void 0\n      }\n    }\n\n    return useDrawingFab(props, ctx, instance, drawingActionInstances, mainFabOpts, clearActionOpts, 'analysis')?.renderContent\n  }\n})\n\nexport { VcAnalysisSightline, VcAnalysisViewshed, analysesProps }\n\n// export type { VcAnalysesProps } from './defaultProps'\nexport type VcAnalysesEmits = typeof emits\n\nexport type VcAnalysesProps = {\n  /**\n   * Specify the position of the VcAnalyses.\n   * Default value: bottom-left\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcAnalyses horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify whether the analysis result is visible.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify the interactive drawing mode, 0 means continuous drawing, and 1 means drawing ends once.\n   * Default value: 1\n   */\n  mode?: number\n  /**\n   * Specify which analysis instances to load.\n   * Default value: ['sightline', 'viewshed']\n   */\n  analyses?: Array<'sightline' | 'viewshed'>\n  /**\n   * Specify the color when the analysis instance is activated.\n   * Default value: positive\n   */\n  activeColor?: string\n  /**\n   * Specify whether the analysis result can be edited.\n   * Default value: false\n   */\n  editable?: boolean\n  /**\n   * Specify the style options of the floating action button of the VcAnalyses component.\n   */\n  mainFabOpts?: VcActionTooltipProps & VcFabProps\n  /**\n   * Specify the style options of the sightline analysis action button.\n   */\n  sightlineActionOpts?: VcActionTooltipProps\n  /**\n   * Specify sightline analysis options.\n   */\n  sightlineAnalysisOpts?: VcDrawingOpts\n  /**\n   * Specify the style options of the viewshed analysis action button.\n   */\n  viewshedActionOpts?: VcActionTooltipProps\n  /**\n   * Specify viewshed analysis options.\n   */\n  viewshedAnalysisOpts?: VcViewshedAnalysisOpts\n  /**\n   * Specify the style options of the clear action button.\n   */\n  clearActionOpts?: VcActionTooltipProps\n  /**\n   * Triggers before the VcCompass is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCompass is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcCompass is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the analysis action is actived.\n   */\n  onActiveEvt?: (evt: VcDrawingActiveEvt, viewer: Cesium.Viewer) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt, viewer: Cesium.Viewer) => void\n  /**\n   * Triggers when the editor button is clicked.\n   */\n  onEditorEvt?: (evt: VcDrawingEditorEvt, viewer: Cesium.Viewer) => void\n  /**\n   * Triggers when the mouse is over or out on the drawing point.\n   */\n  onMouseEvt?: (evt: VcDrawingMouseEvt, viewer: Cesium.Viewer) => void\n  /**\n   * Triggers when the floating button is expanded or collapsed.\n   */\n  onFabUpdated: (value: boolean) => void\n}\n\nexport type VcAnalysesSlots = {\n  /**\n   * body slot content of the component\n   */\n  body: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-12-31 11:46:30\n * @LastEditTime: 2022-02-18 23:48:49\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\analyses\\index.ts\n */\nimport { App } from 'vue'\nimport AnalysisFlood from './flood'\nimport Analyses from './src'\n\nimport { SFCWithInstall } from '@vue-cesium/utils/types'\n\nconst components = [AnalysisFlood, Analyses]\n\nconst install = (app: App): void => {\n  components.forEach(cmp => {\n    app.component(cmp.name, cmp)\n  })\n}\n\nexport default {\n  install\n}\n\ncomponents.forEach(cmp => {\n  cmp['install'] = (app: App): void => {\n    app.component(cmp.name, cmp)\n  }\n})\n\nexport const VcAnalysisFlood = AnalysisFlood as SFCWithInstall<typeof AnalysisFlood>\nexport const VcAnalyses = Analyses as SFCWithInstall<typeof Analyses>\n\nexport * from './src'\nexport * from './flood'\n","// Viewer\nimport { VcViewer } from '@vue-cesium/components/viewer'\n// controls\nimport {\n  VcCompass,\n  VcZoomControl,\n  VcPrint,\n  VcMyLocation,\n  VcStatusBar,\n  VcDistanceLegend,\n  VcNavigation,\n  VcCompassSm,\n  VcZoomControlSm,\n  VcNavigationSm,\n  VcOverviewMap,\n  VcSelectionIndicator\n} from '@vue-cesium/components/controls'\n// tools\nimport VcMeasurements from '@vue-cesium/components/measurements'\nimport VcDrawings from '@vue-cesium/components/drawings'\n// ImagerLayer\nimport VcLayerImagery from '@vue-cesium/components/imagery-layer'\nimport {\n  VcImageryProviderArcgis,\n  VcImageryProviderBaidu,\n  VcImageryProviderBing,\n  VcImageryProviderGoogle,\n  VcImageryProviderGrid,\n  VcImageryProviderIon,\n  VcImageryProviderMapbox,\n  VcImageryProviderOsm,\n  VcImageryProviderSingletile,\n  VcImageryProviderSupermap,\n  VcImageryProviderTianditu,\n  VcImageryProviderTileCoordinates,\n  VcImageryProviderTms,\n  VcImageryProviderTiledcache,\n  VcImageryProviderUrltemplate,\n  VcImageryProviderWms,\n  VcImageryProviderWmts,\n  VcTerrainProviderCesium,\n  VcTerrainProviderArcgis,\n  VcTerrainProviderVrTheworld,\n  VcTerrainProviderTianditu\n} from '@vue-cesium/components/providers'\n\n// Datasource\nimport { VcDatasourceCustom, VcDatasourceCzml, VcDatasourceGeojson, VcDatasourceKml } from '@vue-cesium/components/datasources'\n\n// Entity\nimport VcEntity from '@vue-cesium/components/entity'\n\n// Grapics\nimport {\n  VcGraphicsBillboard,\n  VcGraphicsBox,\n  VcGraphicsCorridor,\n  VcGraphicsCylinder,\n  VcGraphicsEllipse,\n  VcGraphicsEllipsoid,\n  VcGraphicsLabel,\n  VcGraphicsModel,\n  VcGraphicsPath,\n  VcGraphicsPlane,\n  VcGraphicsPoint,\n  VcGraphicsPolygon,\n  VcGraphicsPolyline,\n  VcGraphicsPolylineVolume,\n  VcGraphicsRectangle,\n  VcGraphicsTileset,\n  VcGraphicsWall\n} from '@vue-cesium/components/graphics'\n\n// Primitives\nimport {\n  VcPrimitiveClassification,\n  VcPrimitiveGround,\n  VcPrimitiveGroundPolyline,\n  VcPrimitiveModel,\n  VcPrimitive,\n  VcPrimitiveTileset,\n  VcPrimitiveParticle\n} from '@vue-cesium/components/primitives'\n\n// PrimitiveCollections\nimport {\n  VcCollectionBillboard,\n  VcCollectionCloud,\n  VcCollectionLabel,\n  VcCollectionPoint,\n  VcCollectionPolyline,\n  VcCollectionPrimitive,\n  VcBillboard,\n  VcCumulusCloud,\n  VcLabel,\n  VcPoint,\n  VcPolyline,\n  VcPolygon\n} from '@vue-cesium/components/primitive-collections'\n\n// GeometryInstance\nimport VcGeometryInstance from '@vue-cesium/components/geometry-instance'\n\n// Geometries\nimport {\n  VcGeometryBox,\n  VcGeometryBoxOutline,\n  VcGeometryCircle,\n  VcGeometryCircleOutline,\n  VcGeometryPolygonCoplanar,\n  VcGeometryPolygonCoplanarOutline,\n  VcGeometryCorridor,\n  VcGeometryCorridorOutline,\n  VcGeometryCylinder,\n  VcGeometryCylinderOutline,\n  VcGeometryEllipse,\n  VcGeometryEllipseOutline,\n  VcGeometryEllipsoid,\n  VcGeometryEllipsoidOutline,\n  VcGeometryFrustum,\n  VcGeometryFrustumOutline,\n  VcGeometryGroundPolyline,\n  VcGeometryPlane,\n  VcGeometryPlaneOutline,\n  VcGeometryPolygon,\n  VcGeometryPolygonOutline,\n  VcGeometryPolyline,\n  VcGeometryPolylineVolume,\n  VcGeometryPolylineVolumeOutline,\n  VcGeometryRectangle,\n  VcGeometryRectangleOutline,\n  VcGeometrySimplePolyline,\n  VcGeometrySphere,\n  VcGeometrySphereOutline,\n  VcGeometryWall,\n  VcGeometryWallOutline\n} from '@vue-cesium/components/geometries'\n\n// Overlay\nimport { VcOverlayHtml, VcOverlayHeatmap, VcOverlayWind, VcOverlayDynamic, VcOverlayEcharts } from '@vue-cesium/components/overlays'\n\nimport { VcPostProcessStage, VcPostProcessStageScan, VcPostProcessStageCollection } from '@vue-cesium/components/post-processes'\n\n// UI\nimport {\n  VcBtn,\n  VcIcon,\n  VcTooltip,\n  VcAjaxBar,\n  VcSkeleton,\n  VcSpinnerBall,\n  VcSpinnerBars,\n  VcSpinnerDots,\n  VcSpinnerGears,\n  VcSpinnerHourglass,\n  VcSpinnerIos,\n  VcSpinnerOrbit,\n  VcSpinnerOval,\n  VcSpinnerPuff,\n  VcSpinnerRings,\n  VcSpinnerTail,\n  VcSpinner,\n  VcFab,\n  VcFabAction\n} from '@vue-cesium/components/ui'\n\n// config\nimport VcConfigProvider from '@vue-cesium/components/config-provider'\n\n// analyses\nimport { VcAnalysisFlood, VcAnalyses } from '@vue-cesium/components/analyses'\n\nimport type { Plugin } from 'vue'\n\nexport default [\n  VcViewer,\n\n  VcCompass,\n  VcZoomControl,\n  VcPrint,\n  VcMyLocation,\n  VcStatusBar,\n  VcDistanceLegend,\n  VcNavigation,\n  VcCompassSm,\n  VcZoomControlSm,\n  VcNavigationSm,\n  VcOverviewMap,\n  VcSelectionIndicator,\n\n  VcMeasurements,\n  VcDrawings,\n\n  VcLayerImagery,\n  VcImageryProviderArcgis,\n  VcImageryProviderBaidu,\n  VcImageryProviderBing,\n  VcImageryProviderGoogle,\n  VcImageryProviderGrid,\n  VcImageryProviderIon,\n  VcImageryProviderMapbox,\n  VcImageryProviderOsm,\n  VcImageryProviderSingletile,\n  VcImageryProviderSupermap,\n  VcImageryProviderTianditu,\n  VcImageryProviderTileCoordinates,\n  VcImageryProviderTms,\n  VcImageryProviderTiledcache,\n  VcImageryProviderUrltemplate,\n  VcImageryProviderWms,\n  VcImageryProviderWmts,\n\n  VcTerrainProviderCesium,\n  VcTerrainProviderArcgis,\n  VcTerrainProviderVrTheworld,\n  VcTerrainProviderTianditu,\n\n  VcDatasourceCustom,\n  VcDatasourceCzml,\n  VcDatasourceGeojson,\n  VcDatasourceKml,\n\n  VcEntity,\n  VcGraphicsBillboard,\n  VcGraphicsBox,\n  VcGraphicsCorridor,\n  VcGraphicsCylinder,\n  VcGraphicsEllipse,\n  VcGraphicsEllipsoid,\n  VcGraphicsLabel,\n  VcGraphicsModel,\n  VcGraphicsPath,\n  VcGraphicsPlane,\n  VcGraphicsPoint,\n  VcGraphicsPolygon,\n  VcGraphicsPolyline,\n  VcGraphicsPolylineVolume,\n  VcGraphicsRectangle,\n  VcGraphicsTileset,\n  VcGraphicsWall,\n\n  VcPrimitiveClassification,\n  VcPrimitiveGround,\n  VcPrimitiveGroundPolyline,\n  VcPrimitiveModel,\n  VcPrimitive,\n  VcPrimitiveTileset,\n  VcPrimitiveParticle,\n\n  VcCollectionBillboard,\n  VcCollectionCloud,\n  VcCollectionLabel,\n  VcCollectionPoint,\n  VcCollectionPolyline,\n  VcCollectionPrimitive,\n\n  VcBillboard,\n  VcCumulusCloud,\n  VcLabel,\n  VcPoint,\n  VcPolyline,\n  VcPolygon,\n\n  VcGeometryInstance,\n\n  VcGeometryBox,\n  VcGeometryBoxOutline,\n  VcGeometryCircle,\n  VcGeometryCircleOutline,\n  VcGeometryPolygonCoplanar,\n  VcGeometryPolygonCoplanarOutline,\n  VcGeometryCorridor,\n  VcGeometryCorridorOutline,\n  VcGeometryCylinder,\n  VcGeometryCylinderOutline,\n  VcGeometryEllipse,\n  VcGeometryEllipseOutline,\n  VcGeometryEllipsoid,\n  VcGeometryEllipsoidOutline,\n  VcGeometryFrustum,\n  VcGeometryFrustumOutline,\n  VcGeometryGroundPolyline,\n  VcGeometryPlane,\n  VcGeometryPlaneOutline,\n  VcGeometryPolygon,\n  VcGeometryPolygonOutline,\n  VcGeometryPolyline,\n  VcGeometryPolylineVolume,\n  VcGeometryPolylineVolumeOutline,\n  VcGeometryRectangle,\n  VcGeometryRectangleOutline,\n  VcGeometrySimplePolyline,\n  VcGeometrySphere,\n  VcGeometrySphereOutline,\n  VcGeometryWall,\n  VcGeometryWallOutline,\n\n  VcOverlayHtml,\n  VcOverlayHeatmap,\n  VcOverlayWind,\n  VcOverlayDynamic,\n  VcOverlayEcharts,\n\n  VcPostProcessStage,\n  VcPostProcessStageScan,\n  VcPostProcessStageCollection,\n\n  VcBtn,\n  VcIcon,\n  VcTooltip,\n  VcAjaxBar,\n  VcSkeleton,\n  VcSpinnerBall,\n  VcSpinnerBars,\n  VcSpinnerDots,\n  VcSpinnerGears,\n  VcSpinnerHourglass,\n  VcSpinnerIos,\n  VcSpinnerOrbit,\n  VcSpinnerOval,\n  VcSpinnerPuff,\n  VcSpinnerRings,\n  VcSpinnerTail,\n  VcSpinner,\n  VcFab,\n  VcFabAction,\n\n  VcConfigProvider,\n  VcAnalysisFlood,\n  VcAnalyses\n] as Plugin[]\n","import makeInstaller from './make-installer'\nimport Components from './component'\n\nexport default makeInstaller([...Components])\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-23 00:57:59\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\vue-cesium\\index.ts\n */\nimport installer from './defaults'\nexport * from '@vue-cesium/components'\nexport * from '@vue-cesium/directives'\nexport * from '@vue-cesium/composables'\nexport * from '@vue-cesium/shared'\n\n// type define\nexport * from '@vue-cesium/utils/emits'\n\nexport { default as makeInstaller } from './make-installer'\n\nexport const install = installer.install\nexport const version = installer.version\n\nexport default installer\n"],"names":["version","hasOwnProperty","isArray","isFunction","isObject","objectToString","capitalize","freeGlobal","Symbol","root","objectProto","nativeObjectToString","symToStringTag","symbolTag","INFINITY","symbolProto","identity","funcTag","genTag","coreJsData","funcProto","funcToString","defineProperty","baseSetToString","MAX_SAFE_INTEGER","nativeMax","setToString","argsTag","propertyIsEnumerable","freeExports","freeModule","moduleExports","Buffer","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","nodeUtil","isArguments","isBuffer","isTypedArray","nativeKeys","nativeCreate","HASH_UNDEFINED","arrayProto","splice","Map","FUNC_ERROR_TEXT","stringToPath","get","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","upperFirst","deburrLetter","rsApos","LARGE_ARRAY_SIZE","nativeGetSymbols","getSymbols","getPrototype","getSymbolsIn","DataView","Promise","Set","WeakMap","Uint8Array","symbolValueOf","baseCreate","getTag","CLONE_DEEP_FLAG","CLONE_SYMBOLS_FLAG","isSet","isMap","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","now","merge","camelCase","position","text","translate","differenceBy","defaultProps","svg","alignValues","VcIcon","VcSpinner","VcBtn","components","emits","defaultOptions","CameraFlightPath","useCompass","useZoomControl","VcPrintView","createPrintView","this","D2R","exports","PrimeMeridian","parser","parseProj","init","forward","inverse","names","Ellipsoid","parseCode","Datum","dc_sphere","dc_eccentricity","toPoint","proj","Point","MAX_ITER","Proj","EarthGravityModel1996","MouseCoords","compassDefaultProps","zoomDefaultProps","VcCompass","VcZoomControl","VcPrint","VcMyLocation","VcStatusBar","VcDistanceLegend","VcCompassSm","VcZoomControlSm","VcViewer","PickedFeatures","Feature","mainFabDefault","VcEntity","VcLayerImagery","Util.createTexture","CustomPrimitive","Util.createFramebuffer","Util.createRawRenderState","Util.getFullscreenQuad","ParticlesComputing","ParticlesRendering","ParticleSystem","VcCumulusCloud","VcGeometryInstance","shaderSource","VcPostProcessStage","VcMeasurements","VcDrawings","Pixel","BaiduMapMercatorProjection","coordtransform.wgs84togcj02","coordtransform.gcj02tobd09","coordtransform.bd09togcj02","coordtransform.gcj02towgs84","BaiduMapMercatorTilingScheme","buildImageResource","BaiduMapImageryProvider","IndexedDBScheduler","SuperMapImageryProvider","TiandituMapsStyle","TiandituImageryProvider","VcConfigProvider","makeInstaller"],"mappings":"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G,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC7D,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC5E,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC5E,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG;AAC/B,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC9C,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC5E,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC5E,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC7D,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC7D,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC9C,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC9C,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC9C,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC9C,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC7D,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE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ACJ,EAAE,OAAO,KAAK,CAAC;AACf;;ACrGA,yBAAe,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AC9ID,MAAMT,MAAI,GAAG,CAAC;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;AACF,yBAAeA,MAAI;;ACfnB,MAAMA,MAAI,GAAG,CAAC;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;AACF,iCAA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,sBAAsB,CAAC;AAChI,SAAS;AACT,OAAO,CAAC;AACR,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AACD,2BAAe,kBAAkB;;ACrLjC,MAAMxD,MAAI,GAAG,CAAC;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;AACF,sBAAeA,MAAI;;ACtJnB,MAAMA,MAAI,GAAG,CAAC;AACd;AACA;AACA;AACA;AACA,CAAC,CAAC;AACF,sBAAeA,MAAI;;ACNnB,MAAMA,MAAI,GAAG,CAAC;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;AACF,qBAAeA,MAAI;;ACXnB,MAAMA,MAAI,GAAG,CAAC;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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AE;AAC/E,MAAM,OAAO,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAC;AAClE,KAAK,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,UAAU,EAAE;AACnD,MAAM,OAAO,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAC;AACnE,KAAK;AACL,GAAG;AACH,CAAC,CAAC;;AC1BF,qBAAe,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;ACpHD,yBAAe,eAAe,CAAC;AAC/B,EAAE,IAAI,EAAE,oBAAoB;AAC5B,EAAE,KAAK,EAAE;AACT,IAAI,GAAG,qBAAqB;AAC5B,IAAI,YAAY,EAAE,MAAM;AACxB,IAAI,aAAa,EAAE,MAAM;AACzB,IAAI,aAAa,EAAE,MAAM;AACzB,GAAG;AACH,EAAE,KAAK,EAAE,WAAW;AACpB,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE;AACpB,IAAI,OAAO,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC;AAC/E,GAAG;AACH,CAAC,CAAC;;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"}