{"version":3,"file":"index.full.min.mjs","sources":["../../../packages/vue-cesium/version.ts","../../../packages/utils/config.ts","../../../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/_createFind.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/find.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/isEqual.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","../../../node_modules/.pnpm/@vue+shared@3.2.30/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../packages/utils/objects.ts","../../../packages/composables/use-global-config/index.ts","../../../packages/utils/util.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/private/use-timeout.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/utils/private/create.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/utils/platform.ts","../../../packages/utils/private/selection.ts","../../../packages/directives/touch-hold/index.ts","../../../packages/directives/touch-repeat/index.ts","../../../packages/utils/defer.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/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/shared/src/DebugCameraPrimitive.ts","../../../packages/shared/extends/core/RectangleExtend.ts","../../../packages/shared/extends/scene/ShadowMapShaderExtend.ts","../../../packages/shared/analyses/Viewshed.ts","../../../packages/composables/private/use-vc-extension.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/composables/private/use-align.ts","../../../packages/components/ui/btn/use-btn.ts","../../../packages/utils/private/touch.ts","../../../packages/components/ui/btn/index.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/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/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/shared/shaders/Viewshed.ts","../../../packages/components/primitives/viewshed/index.ts","../../../packages/components/primitives/index.ts","../../../packages/components/overlays/heatmap/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/grid/consts.ts","../../../packages/components/overlays/wind/grid/math.ts","../../../packages/components/overlays/wind/grid/regular.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/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/amap/AMapImageryProvider.ts","../../../packages/components/providers/amap/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/tencent/TencentImageryProvider.ts","../../../packages/components/providers/tencent/index.ts","../../../packages/components/providers/tianditu/TiandituMapsStyle.ts","../../../node_modules/.pnpm/urijs@1.19.11/node_modules/urijs/src/punycode.js","../../../node_modules/.pnpm/urijs@1.19.11/node_modules/urijs/src/IPv6.js","../../../node_modules/.pnpm/urijs@1.19.11/node_modules/urijs/src/SecondLevelDomains.js","../../../node_modules/.pnpm/urijs@1.19.11/node_modules/urijs/src/URI.js","../../../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/post-processes/post-process-stage/defaultProps.ts","../../../packages/components/post-processes/post-process-stage/index.ts","../../../packages/shared/shaders/RadarScan.ts","../../../packages/components/post-processes/post-process-stage-scan/use-radar-scan.ts","../../../packages/shared/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/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/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-09-06 01:10:05\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\config.ts\n */\nimport type { Language } from 'casc-cesium-locale'\nimport type { InjectionKey, Ref } from 'vue'\nimport type { Mars3dConfig } 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  mars3dConfig?: Mars3dConfig // for mars3d\n  reloadMode?: 'once' | 'all'\n  __scriptPromise?: Promise<unknown>\n  __viewerUnloadingPromise?: Promise<boolean>\n  [propName: string]: any\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","/** 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 baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n  return function(collection, predicate, fromIndex) {\n    var iterable = Object(collection);\n    if (!isArrayLike(collection)) {\n      var iteratee = baseIteratee(predicate, 3);\n      collection = keys(collection);\n      predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n    }\n    var index = findIndexFunc(collection, predicate, fromIndex);\n    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n  };\n}\n\nexport default createFind;\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 createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'age': 36, 'active': true },\n *   { 'user': 'fred',    'age': 40, 'active': false },\n *   { 'user': 'pebbles', 'age': 1,  'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\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","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nexport default isEqual;\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","/**\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","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-08-03 13:30:02\n * @LastEditTime: 2022-08-03 13:30:18\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\objects.ts\n */\nimport { get, set } from 'lodash-unified'\nimport type { Entries } from 'type-fest'\nimport { Arrayable } from './types'\n\nexport const keysOf = <T>(arr: T) => Object.keys(arr) as Array<keyof T>\nexport const entriesOf = <T>(arr: T) => Object.entries(arr) as Entries<T>\nexport { hasOwn } from '@vue/shared'\n\nexport const getProp = <T = any>(obj: Record<string, any>, path: Arrayable<string>, defaultValue?: any): { value: T } => {\n  return {\n    get value() {\n      return get(obj, path, defaultValue)\n    },\n    set value(val: any) {\n      set(obj, path, val)\n    }\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-02-09 16:19:57\n * @LastEditTime: 2022-09-06 23:38:00\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-global-config\\index.ts\n */\nimport { ConfigProviderContext, configProviderContextKey } from 'casc-cesium-utils/config'\nimport { inject, ref, computed, unref, provide, getCurrentInstance } from 'vue'\nimport type { Ref, App } from 'vue'\nimport { MaybeRef } from 'casc-cesium-utils/types'\nimport { keysOf } from 'casc-cesium-utils/objects'\n\nconst globalConfig = ref<ConfigProviderContext>()\n\nexport function useGlobalConfig<K extends keyof ConfigProviderContext, D extends ConfigProviderContext[K]>(\n  key: K,\n  defaultValue?: D\n): Ref<Exclude<ConfigProviderContext[K], undefined> | D>\n\nexport function useGlobalConfig(): Ref<ConfigProviderContext>\nexport function useGlobalConfig(key?: keyof ConfigProviderContext, defaultValue = undefined) {\n  const config = getCurrentInstance() ? inject(configProviderContextKey, globalConfig) : globalConfig\n  if (key) {\n    return computed(() => config.value?.[key] ?? defaultValue)\n  } else {\n    return config\n  }\n}\n\nexport const provideGlobalConfig = (config: MaybeRef<ConfigProviderContext>, app?: App, global = false) => {\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?.value) return cfg\n    return mergeConfig(oldConfig.value, cfg)\n  })\n  provideFn(configProviderContextKey, context)\n  if (global || !globalConfig.value) {\n    globalConfig.value = context.value\n  }\n  return context\n}\n\nconst mergeConfig = (a: ConfigProviderContext, b: ConfigProviderContext): ConfigProviderContext => {\n  const keys = [...new Set([...keysOf(a), ...keysOf(b)])]\n  const obj: Record<string, any> = {}\n  for (const key of keys) {\n    obj[key] = b[key] ?? a[key]\n  }\n  return obj\n}\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], true)\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\nfunction myInstanceof(left, right) {\n  //基本数据类型直接返回false\n  if (typeof left !== 'object' || left === null) return false\n  //getProtypeOf是Object对象自带的一个方法，能够拿到参数的原型对象\n  let proto = Object.getPrototypeOf(left)\n  // eslint-disable-next-line no-constant-condition\n  while (true) {\n    //查找到尽头，还没找到\n    if (proto === null) return false\n    //找到相同的原型对象\n    if (proto === right?.prototype) return true\n    proto = Object.getPrototypeOf(proto)\n  }\n}\n\nexport function getCesiumClassName(obj) {\n  let result = undefined\n  const constructorNames = Object.keys(Cesium)\n  for (let i = 0; i < constructorNames.length; i++) {\n    const className = constructorNames[i]\n\n    if (myInstanceof(obj, Cesium[className])) {\n      result = className\n      break\n    }\n  }\n  return result\n}\n\nexport function getObjClassName(obj: AnyObject, findCesiumClass = false): string {\n  if (obj && obj.constructor) {\n    if (findCesiumClass) {\n      const cesiumClassName = getCesiumClassName(obj)\n\n      if (cesiumClassName) {\n        return cesiumClassName\n      }\n    }\n\n    return obj.constructor.name\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, ignores: Array<string> = []) => {\n  for (const prop in options) {\n    if (!obj[prop] && ignores.indexOf(prop) === -1) {\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\nexport function isArrayLike(obj) {\n  if (Array.isArray(obj)) return true\n  if (typeof obj !== 'object' || !obj) return false\n  const length = obj.length\n  return typeof length === 'number' && length >= 0\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","import { VcComponentInternalInstance } from 'casc-cesium-utils/types'\nimport { isString } from 'casc-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-08-03 14:00:58\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 'casc-cesium-utils/config'\nimport { provideGlobalConfig } from 'casc-cesium-composables/use-global-config'\nimport useLog from 'casc-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://unpkg.com/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, true)\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  VcHeadingPitchRoll,\n  VcHeadingPitchRange,\n  VcPlane,\n  CesiumPlane\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, defaultValue } = 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(\n        defaultValue(value.red, 255),\n        defaultValue(value.green, 255),\n        defaultValue(value.blue, 255),\n        defaultValue(value.alpha, 255)\n      )\n    } else if (hasOwn(val, 'x')) {\n      const value = val as Cartesian4Option\n      return new Color(defaultValue(value.x, 1), defaultValue(value.y, 1), defaultValue(value.z, 1), defaultValue(value.w, 1))\n    }\n  }\n\n  if (isArray(val)) {\n    return Color.fromBytes(val[0], val[1], val[2], defaultValue(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    defaultValue\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(defaultValue(value.fabric.uniforms.repeat as Cartesian2Option, { x: 1.0, y: 1.0 })),\n          color: defaultValue(makeColor(value.fabric.uniforms.color), Color.WHITE),\n          transparent: defaultValue(value.fabric.uniforms.transparent, false)\n        })\n      case 'Color':\n        return new ColorMaterialProperty(makeColor(defaultValue(value.fabric.uniforms.color, Color.WHITE)))\n      case 'PolylineArrow':\n        return new PolylineArrowMaterialProperty(makeColor(defaultValue(value.fabric.uniforms.color, Color.WHITE)))\n      case 'PolylineDash':\n        return new PolylineDashMaterialProperty({\n          color: makeColor(defaultValue(value.fabric.uniforms.color, 'white')),\n          gapColor: makeColor(defaultValue(value.fabric.uniforms.gapColor, Color.TRANSPARENT)),\n          dashLength: defaultValue(value.fabric.uniforms.taperPower, 16.0),\n          dashPattern: defaultValue(value.fabric.uniforms.taperPower, 255.0)\n        })\n      case 'PolylineGlow':\n        return new PolylineGlowMaterialProperty({\n          color: makeColor(defaultValue(value.fabric.uniforms.color, Color.WHITE)),\n          glowPower: defaultValue(value.fabric.uniforms.glowPower, 0.25),\n          taperPower: defaultValue(value.fabric.uniforms.taperPower, 1.0)\n        })\n      case 'PolylineOutline':\n        return new PolylineOutlineMaterialProperty({\n          color: makeColor(defaultValue(value.fabric.uniforms.color, Color.WHITE)),\n          outlineColor: makeColor(defaultValue(value.fabric.uniforms.outlineColor, Color.BLACK)),\n          outlineWidth: defaultValue(value.fabric.uniforms.outlineWidth, 1.0)\n        })\n      case 'Checkerboard':\n        return new CheckerboardMaterialProperty({\n          evenColor: makeColor(defaultValue(value.fabric.uniforms.evenColor, Color.WHITE)),\n          oddColor: makeColor(defaultValue(value.fabric.uniforms.oddColor, Color.BLACK)),\n          repeat: defaultValue(makeCartesian2(value.fabric.uniforms.repeat as Cartesian2Option), { x: 2, y: 2 })\n        })\n      case 'Grid':\n        return new GridMaterialProperty({\n          color: makeColor(defaultValue(value.fabric.uniforms.color, Color.WHITE)),\n          cellAlpha: defaultValue(value.fabric.uniforms.cellAlpha, 0.1),\n          lineCount: defaultValue(makeCartesian2(value.fabric.uniforms.lineCount as Cartesian2Option), { x: 8, y: 8 }),\n          lineThickness: defaultValue(makeCartesian2(value.fabric.uniforms.lineThickness as Cartesian2Option), { x: 1, y: 1 }),\n          lineOffset: defaultValue(makeCartesian2(value.fabric.uniforms.lineOffset as Cartesian2Option), { x: 0, y: 0 })\n        })\n      case 'Stripe':\n        return new StripeMaterialProperty({\n          orientation: defaultValue(value.fabric.uniforms.orientation, StripeOrientation.HORIZONTAL),\n          evenColor: makeColor(defaultValue(value.fabric.uniforms.evenColor, 'white')),\n          oddColor: makeColor(defaultValue(value.fabric.uniforms.oddColor, 'black')),\n          offset: defaultValue(value.fabric.uniforms.offset, 0),\n          repeat: defaultValue(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  // Entiy 的 rectangle 属性不能调用这个方法\n  if (val instanceof RectangleGraphics || val instanceof Rectangle || val instanceof CallbackProperty) {\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(val: VcPlane, isConstant = false): CesiumPlane {\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, defaultValue } = 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(defaultValue(camera.heading, 360)),\n        pitch: CesiumMath.toRadians(defaultValue(camera.pitch, -90)),\n        roll: CesiumMath.toRadians(defaultValue(camera.roll, 0))\n      }\n    } else {\n      orientation = {\n        heading: defaultValue(camera.heading, 2 * Math.PI),\n        pitch: defaultValue(camera.pitch, -Math.PI / 2),\n        roll: defaultValue(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(defaultValue(camera.heading, 360)),\n        pitch: CesiumMath.toRadians(defaultValue(camera.pitch, -90)),\n        roll: CesiumMath.toRadians(defaultValue(camera.roll, 0))\n      }\n    } else {\n      orientation = {\n        heading: defaultValue(camera.heading, 2 * Math.PI),\n        pitch: defaultValue(camera.pitch, -Math.PI / 2),\n        roll: defaultValue(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(\n  viewer: Cesium.Viewer,\n  cameraOpts: VcCamera,\n  options?: {\n    destination?: Cesium.Cartesian3 | Cesium.Rectangle\n    orientation?: any\n    duration?: number\n    complete?: Cesium.Camera.FlightCompleteCallback\n    cancel?: Cesium.Camera.FlightCancelledCallback\n    endTransform?: Cesium.Matrix4\n    maximumHeight?: number\n    pitchAdjustHeight?: number\n    flyOverLongitude?: number\n    flyOverLongitudeWeight?: number\n    convert?: boolean\n    easingFunction?: Cesium.EasingFunction.Callback\n  }\n) {\n  const { destination, orientation } = makeCameraOptions(cameraOpts, viewer.scene.globe.ellipsoid)\n  viewer.camera.flyTo({\n    ...options,\n    destination: options?.destination || destination,\n    orientation: options?.orientation || orientation\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 { Cartesian3 } = Cesium\n  if (Cartesian3.equals(start, end)) {\n    return undefined\n  }\n\n  //向量AB\n  const vector2 = Cesium.Cartesian3.subtract(end, start, new Cesium.Cartesian3())\n  //归一化\n  const normal = Cesium.Cartesian3.normalize(vector2, new Cesium.Cartesian3())\n  //旋转矩阵 rotationMatrixFromPositionVelocity源码中有，并未出现在cesiumAPI中\n  const rotationMatrix3 = Cesium.Transforms.rotationMatrixFromPositionVelocity(start, normal, scene.globe.ellipsoid)\n  const m = Cesium.Matrix4.fromRotationTranslation(rotationMatrix3, start)\n  const m1 = Cesium.Transforms.eastNorthUpToFixedFrame(\n    Cesium.Matrix4.getTranslation(m, new Cesium.Cartesian3()),\n    Cesium.Ellipsoid.WGS84,\n    new Cesium.Matrix4()\n  )\n  // 矩阵相除\n  const m3 = Cesium.Matrix4.multiply(Cesium.Matrix4.inverse(m1, new Cesium.Matrix4()), m, new Cesium.Matrix4())\n  // 得到旋转矩阵\n  const mat3 = Cesium.Matrix4.getMatrix3(m3, new Cesium.Matrix3())\n  // 计算四元数\n  const q = Cesium.Quaternion.fromRotationMatrix(mat3)\n  // 计算旋转角(弧度)\n  const hpr = Cesium.HeadingPitchRoll.fromQuaternion(q)\n  return hpr\n}\n\nexport function getOrientation(start: Cesium.Cartesian3, end: Cesium.Cartesian3, scene?: Cesium.Scene) {\n  const hpr = getHeadingPitchRoll(start, end, scene)\n  hpr.pitch = hpr.pitch + Math.PI / 2 + Math.PI\n  return Cesium.Transforms.headingPitchRollQuaternion(start, hpr)\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.fromDate(new Date(val))\n  } else if (val instanceof Date) {\n    return Cesium.JulianDate.fromDate(val)\n  }\n\n  return Cesium.JulianDate.now()\n}\n\nexport function makeHeadingPitchRoll(val: VcHeadingPitchRoll): Cesium.HeadingPitchRoll {\n  const { HeadingPitchRoll, Math: CesiumMath } = Cesium\n  if (val instanceof Cesium.HeadingPitchRoll) {\n    return val\n  } else if (Array.isArray(val)) {\n    // 认为是经纬度数组\n    return new HeadingPitchRoll(CesiumMath.toRadians(val[0]) || 0, CesiumMath.toRadians(val[1]) || 0, CesiumMath.toRadians(val[2]) || 0)\n  } else if (isPlainObject(val)) {\n    return new HeadingPitchRoll(val.heading || 0, val.pitch || 0, val.roll || 0)\n  }\n\n  return new HeadingPitchRoll()\n}\n\nexport function makeHeadingPitchRang(val: VcHeadingPitchRange): Cesium.HeadingPitchRange {\n  const { HeadingPitchRange, Math: CesiumMath } = Cesium\n  if (val instanceof Cesium.HeadingPitchRange) {\n    return val\n  } else if (Array.isArray(val)) {\n    return new HeadingPitchRange(CesiumMath.toRadians(val[0]) || 0, CesiumMath.toRadians(val[1]) || 0, val[2] || 0)\n  } else if (isPlainObject(val)) {\n    return new HeadingPitchRange(val.heading || 0, val.pitch || 0, val.range || 0)\n  }\n\n  return new HeadingPitchRange()\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\nexport function heightToLevel(altitude: number) {\n  // 粗略计算\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  VcPlane\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 | Cesium.CallbackProperty>,\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 | HTMLImageElement | 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 | Cesium.CallbackProperty | 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] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\n}\n\n/**\n * @const {Number, Object, Function} extrudedHeightReference mixin\n */\nconst extrudedHeightReference = {\n  extrudedHeightReference: [Number, Object, Function] as PropType<\n    number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  >\n}\n\n/**\n * @const {Number, Object, Function} cornerType mixin\n */\nconst cornerType = {\n  cornerType: {\n    type: [Number, Object, Function] as PropType<number | Cesium.CornerType | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\n    default: 0\n  }\n}\n\n/**\n * @const {Number, Object, Function} granularity mixin\n */\nconst granularity = {\n  granularity: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\n}\n\n/**\n * @const {Number, Object, Function} classificationType mixin\n */\nconst classificationType = {\n  classificationType: {\n    type: [Number, Object, Function] as PropType<\n      number | Cesium.ClassificationType | Cesium.CallbackProperty | VcCallbackPropertyFunction<Cesium.ClassificationType>\n    >\n  }\n}\n\n/**\n * @const {Number, Object, Function} zIndex mixin\n */\nconst zIndex = {\n  zIndex: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\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] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\n}\n\n/**\n * @const {Number, Object, Function} topRadius mixin\n */\nconst topRadius = {\n  topRadius: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\n}\n\n/**\n * @const {Number, Object, Function} bottomRadius mixin\n */\nconst bottomRadius = {\n  bottomRadius: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\n}\n\n/**\n * @const {Number, Object, Function} numberOfVerticalLines mixin\n */\nconst numberOfVerticalLines = {\n  numberOfVerticalLines: {\n    type: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\n    default: 16\n  }\n}\n\n/**\n * @const {Number, Object, Function} slices mixin\n */\nconst slices = {\n  slices: {\n    type: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\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] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\n}\n\n/**\n * @const {Number, Object, Function} semiMinorAxis mixin\n */\nconst semiMinorAxis = {\n  semiMinorAxis: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\n}\n\n/**\n * @const {Number, Object, Function} stRotation mixin\n */\nconst stRotation = {\n  stRotation: {\n    type: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\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] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\n    default: 0.0\n  }\n}\n/**\n * @const {Number, Object, Function} maximumClock mixin\n */\nconst maximumClock = {\n  maximumClock: {\n    type: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\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] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\n    default: 0.0\n  }\n}\n/**\n * @const {Number, Object, Function} maximumCone mixin\n */\nconst maximumCone = {\n  maximumCone: {\n    type: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\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] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\n    default: 64\n  }\n}\n\n/**\n * @const {Number, Object, Function} slicePartitions mixin\n */\nconst slicePartitions = {\n  slicePartitions: {\n    type: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\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 | Cesium.CallbackProperty | VcCallbackPropertyFunction<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] as PropType<string | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>\n}\n\n/**\n * @const {String, Object, Function} font mixin\n */\nconst font = {\n  font: {\n    type: [String, Object, Function] as PropType<string | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\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 | Cesium.CallbackProperty | 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] as PropType<string | Cesium.Resource | Cesium.CallbackProperty | VcCallbackPropertyFunction<string>>\n}\n\n/**\n * @const {Number, Object, Function} minimumPixelSize mixin\n */\nconst minimumPixelSize = {\n  minimumPixelSize: {\n    type: [Number, Object, Function] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\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] as PropType<boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>>,\n    default: true\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} clampAnimations mixin\n */\nconst runAnimations = {\n  clampAnimations: {\n    type: [Boolean, Object, Function] as PropType<boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>>,\n    default: true\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} clampAnimations mixin\n */\nconst clampAnimations = {\n  clampAnimations: {\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} 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] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\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 | Cesium.CallbackProperty | 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] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\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<VcPlane>,\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] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\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] as PropType<boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>>,\n    default: false\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} closeTop mixin\n */\nconst closeTop = {\n  closeTop: {\n    type: [Boolean, Object, Function] as PropType<boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>>,\n    default: true\n  }\n}\n\n/**\n * @const {Boolean, Object, Function} closeBottom mixin\n */\nconst closeBottom = {\n  closeBottom: {\n    type: [Boolean, Object, Function] as PropType<boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>>,\n    default: true\n  }\n}\n\n/**\n * @const {Number, Object, Function} arcType mixin\n */\nconst arcType = {\n  arcType: {\n    type: [Number, Object, Function] as PropType<number | Cesium.ArcType | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\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] as PropType<boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>>,\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] as PropType<number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>>,\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] as PropType<number[] | Cesium.CallbackProperty | VcCallbackPropertyFunction<number[]>>\n}\n\n/**\n * @const {Array, Object, Function} maximumHeights mixin\n */\nconst maximumHeights = {\n  maximumHeights: [Array, Object, Function] as PropType<number[] | Cesium.CallbackProperty | VcCallbackPropertyFunction<number[]>>\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<false | 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 as PropType<Cesium.PerspectiveFrustum | Cesium.OrthographicFrustum>\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      deep: true\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      deep: true\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      deep: true\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-08-03 14:02:17\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-locale\\index.ts\n */\nimport { computed, isRef, ref, unref } from 'vue'\nimport Chinese from 'casc-cesium-locale/lang/zh-hans'\nimport { get } from 'lodash-unified'\nimport type { Ref } from 'vue'\nimport type { Language } from 'casc-cesium-locale'\nimport { useGlobalConfig } from '../use-global-config'\nimport { MaybeRef } from 'casc-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 'casc-cesium-utils/types'\nimport { kebabCase, capitalize, isArray } from 'casc-cesium-utils/util'\nimport { getInstanceListener } from 'casc-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[`vc${eventName}`] = listener)\n        } else {\n          listener && delete cesiumObject[`vc${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      if (event.callbackName) {\n        const fn =\n          event.cesiumObject[`vc${event.callbackName}`] ||\n          event.cesiumObject[`on${capitalize(event.callbackName)}`] ||\n          event.cesiumObject[kebabCase(`on${capitalize(event.callbackName)}`)]\n\n        if (Cesium.defined(fn)) {\n          const payload = {\n            type: `on${event.callbackName}`,\n            windowPosition: position,\n            surfacePosition: intersection,\n            pickedFeature: event.pickedFeature,\n            button,\n            cesiumObject: event.cesiumObject\n          }\n          if (fn instanceof Cesium.CallbackProperty) {\n            ;(fn as any)._callback(payload)\n          } else {\n            fn(payload)\n          }\n        }\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 { 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 type { VcReadyObject, VcComponentInternalInstance, VcComponentPublicInstance, VcMittEvents, VcViewerProvider } from 'casc-cesium-utils/types'\nimport { inject, onUnmounted, WatchStopHandle } from 'vue'\nimport mitt, { Emitter } from 'mitt'\nimport { getObjClassName, isEmptyObj, isFunction, removeEmpty } from 'casc-cesium-utils/util'\nimport { mergeDescriptors } from 'casc-cesium-utils/merge-descriptors'\nimport { getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport * as cesiumProps from 'casc-cesium-utils/cesium-props'\nimport { vcKey } from 'casc-cesium-utils/config'\nimport useLog from '../private/use-log'\nimport { useLocale } from '../use-locale'\nimport useEvents from '../use-events'\nimport { isEqual } from 'lodash-unified'\nimport useTimeout from '../private/use-timeout'\nimport { useGlobalConfig } from '../use-global-config'\n\nconst callbackCmpNames = ['Graphics', 'VcEntity', 'Datasource', 'VcOverlayDynamic']\n\nexport default function (props, { emit, attrs }, vcInstance: VcComponentInternalInstance) {\n  const logger = useLog(vcInstance)\n  const { registerTimeout, removeTimeout } = useTimeout()\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: true,\n    box: true,\n    corridor: true,\n    cylinder: true,\n    ellipse: true,\n    ellipsoid: true,\n    label: true,\n    model: true,\n    tileset: true,\n    path: true,\n    plane: true,\n    point: true,\n    polygon: true,\n    polyline: true,\n    polylineVolume: true,\n    rectangle: true,\n    wall: true\n  }\n\n  const globalConfig = useGlobalConfig()\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).creatingPromise\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  const beforeReload = async () => {\n    await vcInstance.reloadingPromise\n  }\n\n  const reload = async () => {\n    await beforeReload()\n\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文件中已经监听了该 prop 这儿不再监听了\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, oldVal) => {\n              // Wait for child components to be created.\n              // 等待子组件创建完成。否则在父组件的 `ready` 事件中就改变的属性将不起作用。\n              await (vcInstance.proxy as VcComponentPublicInstance).creatingPromise\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                if (!isEqual(val, oldVal) || Array.isArray(val)) {\n                  if (attrs['reload-mode'] === 'once' || attrs['reloadMode'] === 'once' || globalConfig.value.reloadMode === 'once') {\n                    // If multiple component properties are changed at once, reload only once after the last property has been changed.\n                    // 如果一瞬间多个组件属性被改变，只在最后一个属性改变完后 reload 一次。\n                    removeTimeout()\n                    registerTimeout(() => {\n                      ;(vcInstance.proxy as VcComponentPublicInstance).reload()\n                    }, 0)\n                  } else {\n                    // If multiple component properties are changed at once, reload them in sequence.\n                    // 如果一瞬间多个组件属性被改变，只在最后一个属性改变完后 reload 一次。\n                    vcInstance.reloadingPromise = new Promise((resolve, reject) => {\n                      ;(vcInstance.proxy as VcComponentPublicInstance)\n                        .reload()\n                        .then(() => {\n                          resolve(true)\n                        })\n                        .catch(e => {\n                          reject(e)\n                        })\n                    })\n                  }\n                }\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    const 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        if (props[vueProp] === undefined || props[vueProp] === null) {\n          return\n        }\n\n        const className = getObjClassName(props[vueProp])\n\n        // 由于 Cesium 1.96+ 版本不太好获取 Cesium 的 className 了，太耗时影响性能，干脆注释\n        // className.indexOf('Graphics') === -1 &&\n        // 副作用是：通过实体渲染的 point billboard label 等传原生的 Graphics 对象可能会有问题\n        // 可传扁平对象来避免此问题。\n        if (\n          className &&\n          // className.indexOf('Graphics') === -1 &&\n          entityGraphics[cesiumProp] &&\n          (vcInstance.cesiumClass === 'Entity' || vcInstance.cesiumClass.indexOf('DataSource') > 0 || vcInstance.cesiumClass === 'VcOverlayDynamic')\n        ) {\n          options[cesiumProp] = transformProps(props[vueProp], childProps)\n        } else {\n          options[cesiumProp] = transformProp(vueProp, props[vueProp], childProps)\n        }\n      })\n\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[prop] &&\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      let supportCallbackProperty = false\n      if (isFunction(value) && cmpName) {\n        callbackCmpNames.forEach(v => {\n          if (cmpName.indexOf(v) !== -1) {\n            supportCallbackProperty = true\n          }\n        })\n      }\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        : supportCallbackProperty\n        ? new Cesium.CallbackProperty(value, false)\n        : value\n    }\n  }\n\n  const getServices = () => {\n    return mergeDescriptors({}, $services || {})\n  }\n\n  // lifecycle\n  const creatingPromise = new Promise<VcReadyObject | boolean>((resolve, reject) => {\n    try {\n      let isLoading = false\n      if ($services.viewer) {\n        isLoading = true\n        load()\n          .then(e => {\n            resolve(e)\n            isLoading = false\n          })\n          .catch(e => {\n            emit('unready', e)\n            reject(e)\n          })\n      }\n      parentVcInstance.vcMitt.on('ready', () => {\n        if (!isLoading && !vcInstance.isUnmounted) {\n          load()\n            .then(e => {\n              resolve(e)\n            })\n            .catch(e => {\n              emit('unready', e)\n              reject(e)\n            })\n        }\n      })\n    } catch (e) {\n      emit('unready', 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    creatingPromise,\n    load,\n    unload,\n    reload,\n    getCreatingPromise: () => creatingPromise,\n    getCesiumObject: () => vcInstance.cesiumObject\n  })\n\n  return {\n    $services,\n    load,\n    unload,\n    reload,\n    creatingPromise,\n    transformProp,\n    transformProps,\n    unwatchFns,\n    setPropsWatcher,\n    logger,\n    getServices\n  }\n}\n","import { VcComponentInternalInstance } from 'casc-cesium-utils/types'\nimport useCommon from '../use-common'\nimport { mergeDescriptors } from 'casc-cesium-utils/merge-descriptors'\nimport { onUnmounted, provide, watch, WatchStopHandle } from 'vue'\nimport { vcKey } from 'casc-cesium-utils/config'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { addCustomProperty } from 'casc-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\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-03-11 09:55:22\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-geometries\\index.ts\n */\nimport { VcComponentInternalInstance } from 'casc-cesium-utils/types'\nimport useCommon from '../use-common'\nimport { getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport { VcGeometryInstanceRef } from 'casc-cesium-components'\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 VcGeometryInstanceRef\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-03-06 20:15:51\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-graphics\\index.ts\n */\nimport type { EntityEmitType, VcComponentInternalInstance, VcGraphics } from 'casc-cesium-utils/types'\nimport useCommon from '../use-common'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport type { VcEntityRef } from 'casc-cesium-components'\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 VcEntityRef\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 VcEntityRef\n    return parentVM && parentVM.__updateGraphics?.(undefined, emitType)\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-11 22:55:34\n * @LastEditTime: 2022-04-11 22:55:34\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\private\\create.js\n */\nimport { defineComponent, markRaw } from 'vue'\n\nexport const createComponent = raw => markRaw(defineComponent(raw))\nexport const createDirective = raw => markRaw(raw)\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 { createDirective } from 'casc-cesium-utils/private/create'\nimport { css } from 'casc-cesium-utils/private/dom'\nimport { position, stop, addEvt, cleanEvt } from 'casc-cesium-utils/private/event'\nimport { isKeyCode } from 'casc-cesium-utils/private/key-composition'\nimport throttle from 'casc-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, instance }) {\n  // const cfg = Object.assign({}, instance.$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 createDirective({\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._vcripple\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-04-08 18:37:31\n * @LastEditTime: 2022-04-11 23:02:05\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\platform.ts\n */\nexport 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    hasTouch: 'ontouchstart' in window || window.navigator.maxTouchPoints > 0\n  }\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","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-11 22:57:24\n * @LastEditTime: 2022-04-12 17:02:57\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\directives\\touch-hold\\index.ts\n */\nimport { createDirective } from 'casc-cesium-utils/private/create'\nimport { addEvt, cleanEvt, leftClick, noop, position, stopAndPrevent } from 'casc-cesium-utils/private/event'\nimport { clearSelection } from 'casc-cesium-utils/private/selection'\nimport { platform } from 'casc-cesium-utils/platform'\n\nexport default createDirective({\n  name: 'touch-hold',\n\n  beforeMount(el, binding) {\n    const { modifiers } = binding\n\n    // early return, we don't need to do anything\n    if (modifiers.mouse !== true && platform().hasTouch !== true) {\n      return\n    }\n\n    const ctx = {\n      handler: binding.value,\n      noop,\n\n      mouseStart(evt) {\n        if (typeof ctx.handler === 'function' && leftClick(evt) === true) {\n          addEvt(ctx, 'temp', [\n            [document, 'mousemove', 'move', 'passiveCapture'],\n            [document, 'click', 'end', 'notPassiveCapture']\n          ])\n          ctx.start(evt, true)\n        }\n      },\n\n      touchStart(evt) {\n        if (evt.target !== void 0 && typeof ctx.handler === 'function') {\n          const target = evt.target\n          addEvt(ctx, 'temp', [\n            [target, 'touchmove', 'move', 'passiveCapture'],\n            [target, 'touchcancel', 'end', 'notPassiveCapture'],\n            [target, 'touchend', 'end', 'notPassiveCapture']\n          ])\n          ctx.start(evt)\n          binding?.touchStart?.(evt)\n        }\n      },\n\n      start(evt, mouseEvent?) {\n        ctx.origin = position(evt)\n\n        const startTime = Date.now()\n\n        if (platform().isPhone === true) {\n          document.body.classList.add('non-selectable')\n          clearSelection()\n\n          ctx.styleCleanup = withDelay => {\n            ctx.styleCleanup = void 0\n\n            const remove = () => {\n              document.body.classList.remove('non-selectable')\n            }\n\n            if (withDelay === true) {\n              clearSelection()\n              setTimeout(remove, 10)\n            } else {\n              remove()\n            }\n          }\n        }\n\n        ctx.triggered = false\n        ctx.sensitivity = mouseEvent === true ? ctx.mouseSensitivity : ctx.touchSensitivity\n\n        ctx.timer = setTimeout(() => {\n          clearSelection()\n          ctx.triggered = true\n\n          ctx.handler({\n            evt,\n            touch: mouseEvent !== true,\n            mouse: mouseEvent === true,\n            position: ctx.origin,\n            duration: Date.now() - startTime\n          })\n        }, ctx.duration)\n      },\n\n      move(evt) {\n        const { top, left } = position(evt)\n        if (Math.abs(left - ctx.origin.left) >= ctx.sensitivity || Math.abs(top - ctx.origin.top) >= ctx.sensitivity) {\n          clearTimeout(ctx.timer)\n        }\n      },\n\n      end(evt) {\n        cleanEvt(ctx, 'temp')\n\n        // delay needed otherwise selection still occurs\n        ctx.styleCleanup !== void 0 && ctx.styleCleanup(ctx.triggered)\n\n        if (ctx.triggered === true) {\n          evt !== void 0 && stopAndPrevent(evt)\n        } else {\n          clearTimeout(ctx.timer)\n        }\n\n        binding?.touchEnd?.(evt)\n      }\n    } as any\n\n    // duration in ms, touch in pixels, mouse in pixels\n    const data = [600, 5, 7]\n\n    if (typeof binding.arg === 'string' && binding.arg.length > 0) {\n      binding.arg.split(':').forEach((val, index) => {\n        const v = parseInt(val, 10)\n        v && (data[index] = v)\n      })\n    }\n\n    ;[ctx.duration, ctx.touchSensitivity, ctx.mouseSensitivity] = data\n\n    el.__vctouchhold = ctx\n\n    modifiers.mouse === true && addEvt(ctx, 'main', [[el, 'mousedown', 'mouseStart', `passive${modifiers.mouseCapture === true ? 'Capture' : ''}`]])\n\n    platform().hasTouch === true &&\n      addEvt(ctx, 'main', [\n        [el, 'touchstart', 'touchStart', `passive${modifiers.capture === true ? 'Capture' : ''}`],\n        [el, 'touchend', 'noop', 'notPassiveCapture']\n      ])\n  },\n\n  updated(el, binding) {\n    const ctx = el.__vctouchhold\n\n    if (ctx !== void 0 && binding.oldValue !== binding.value) {\n      typeof binding.value !== 'function' && ctx.end()\n      ctx.handler = binding.value\n    }\n  },\n\n  beforeUnmount(el) {\n    const ctx = el.__vctouchhold\n\n    if (ctx !== void 0) {\n      cleanEvt(ctx, 'main')\n      cleanEvt(ctx, 'temp')\n\n      clearTimeout(ctx.timer)\n      ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n      delete el.__vctouchhold\n    }\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-12 13:11:46\n * @LastEditTime: 2022-04-12 13:18:00\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\directives\\touch-repeat\\index.ts\n */\n\nimport { createDirective } from 'casc-cesium-utils/private/create'\nimport { addEvt, cleanEvt, leftClick, noop, position, stopAndPrevent } from 'casc-cesium-utils/private/event'\nimport { clearSelection } from 'casc-cesium-utils/private/selection'\nimport { platform } from 'casc-cesium-utils/platform'\nimport { isKeyCode } from 'casc-cesium-utils/private/key-composition'\n\nconst keyCodes = {\n    esc: 27,\n    tab: 9,\n    enter: 13,\n    space: 32,\n    up: 38,\n    left: 37,\n    right: 39,\n    down: 40,\n    delete: [8, 46]\n  },\n  keyRegex = new RegExp(`^([\\\\d+]+|${Object.keys(keyCodes).join('|')})$`, 'i')\n\nfunction shouldEnd(evt, origin) {\n  const { top, left } = position(evt)\n\n  return Math.abs(left - origin.left) >= 7 || Math.abs(top - origin.top) >= 7\n}\n\nexport default createDirective({\n  name: 'touch-repeat',\n\n  beforeMount(el, { modifiers, value, arg, touchStart }) {\n    const keyboard = Object.keys(modifiers).reduce((acc, key) => {\n      if (keyRegex.test(key) === true) {\n        const keyCode = isNaN(parseInt(key, 10)) ? keyCodes[key.toLowerCase()] : parseInt(key, 10)\n        keyCode >= 0 && acc.push(keyCode)\n      }\n      return acc\n    }, [])\n\n    // early return, we don't need to do anything\n    if (modifiers.mouse !== true && platform().hasTouch !== true && keyboard.length === 0) {\n      return\n    }\n\n    const durations = typeof arg === 'string' && arg.length > 0 ? arg.split(':').map(val => parseInt(val, 10)) : [0, 600, 300]\n\n    const durationsLast = durations.length - 1\n\n    const ctx = {\n      keyboard,\n      handler: value,\n\n      noop,\n\n      mouseStart(evt) {\n        if (ctx.event === void 0 && typeof ctx.handler === 'function' && leftClick(evt) === true) {\n          addEvt(ctx, 'temp', [\n            [document, 'mousemove', 'move', 'passiveCapture'],\n            [document, 'click', 'end', 'notPassiveCapture']\n          ])\n          ctx.start(evt, true)\n        }\n      },\n\n      keyboardStart(evt) {\n        if (typeof ctx.handler === 'function' && isKeyCode(evt, keyboard) === true) {\n          if (durations[0] === 0 || ctx.event !== void 0) {\n            stopAndPrevent(evt)\n            el.focus()\n            if (ctx.event !== void 0) {\n              return\n            }\n          }\n\n          addEvt(ctx, 'temp', [\n            [document, 'keyup', 'end', 'notPassiveCapture'],\n            [document, 'click', 'end', 'notPassiveCapture']\n          ])\n          ctx.start(evt, false, true)\n        }\n      },\n\n      touchStart(evt) {\n        if (evt.target !== void 0 && typeof ctx.handler === 'function') {\n          const target = evt.target\n          addEvt(ctx, 'temp', [\n            [target, 'touchmove', 'move', 'passiveCapture'],\n            [target, 'touchcancel', 'end', 'notPassiveCapture'],\n            [target, 'touchend', 'end', 'notPassiveCapture']\n          ])\n          ctx.start(evt)\n          touchStart?.(evt)\n        }\n      },\n\n      start(evt, mouseEvent, keyboardEvent?) {\n        if (keyboardEvent !== true) {\n          ctx.origin = position(evt)\n        }\n\n        function styleCleanup(withDelay) {\n          ctx.styleCleanup = void 0\n\n          document.documentElement.style.cursor = ''\n\n          const remove = () => {\n            document.body.classList.remove('non-selectable')\n          }\n\n          if (withDelay === true) {\n            clearSelection()\n            setTimeout(remove, 10)\n          } else {\n            remove()\n          }\n        }\n\n        if (platform().isPhone === true) {\n          document.body.classList.add('non-selectable')\n          clearSelection()\n          ctx.styleCleanup = styleCleanup\n        }\n\n        ctx.event = {\n          touch: mouseEvent !== true && keyboardEvent !== true,\n          mouse: mouseEvent === true,\n          keyboard: keyboardEvent === true,\n          startTime: Date.now(),\n          repeatCount: 0\n        }\n\n        const fn = () => {\n          if (ctx.event === void 0) {\n            return\n          }\n\n          if (ctx.event.repeatCount === 0) {\n            ctx.event.evt = evt\n\n            if (keyboardEvent === true) {\n              ctx.event.keyCode = evt.keyCode\n            } else {\n              ctx.event.position = position(evt)\n            }\n\n            if (platform().isPhone !== true) {\n              document.documentElement.style.cursor = 'pointer'\n              document.body.classList.add('non-selectable')\n              clearSelection()\n              ctx.styleCleanup = styleCleanup\n            }\n          }\n\n          ctx.event.duration = Date.now() - ctx.event.startTime\n          ctx.event.repeatCount += 1\n\n          ctx.handler(ctx.event)\n\n          const index = durationsLast < ctx.event.repeatCount ? durationsLast : ctx.event.repeatCount\n\n          ctx.timer = setTimeout(fn, durations[index])\n        }\n\n        if (durations[0] === 0) {\n          fn()\n        } else {\n          ctx.timer = setTimeout(fn, durations[0])\n        }\n      },\n\n      move(evt) {\n        if (ctx.event !== void 0 && shouldEnd(evt, ctx.origin) === true) {\n          clearTimeout(ctx.timer)\n        }\n      },\n\n      end(evt) {\n        if (ctx.event === void 0) {\n          return\n        }\n\n        ctx.styleCleanup !== void 0 && ctx.styleCleanup(true)\n        evt !== void 0 && ctx.event.repeatCount > 0 && stopAndPrevent(evt)\n\n        cleanEvt(ctx, 'temp')\n        clearTimeout(ctx.timer)\n\n        ctx.event = void 0\n      }\n    } as any\n\n    el.__vctouchrepeat = ctx\n\n    modifiers.mouse === true && addEvt(ctx, 'main', [[el, 'mousedown', 'mouseStart', `passive${modifiers.mouseCapture === true ? 'Capture' : ''}`]])\n\n    platform().hasTouch === true &&\n      addEvt(ctx, 'main', [\n        [el, 'touchstart', 'touchStart', `passive${modifiers.capture === true ? 'Capture' : ''}`],\n        [el, 'touchend', 'noop', 'notPassiveCapture']\n      ])\n\n    keyboard.length > 0 && addEvt(ctx, 'main', [[el, 'keydown', 'keyboardStart', `notPassive${modifiers.keyCapture === true ? 'Capture' : ''}`]])\n  },\n\n  updated(el, { oldValue, value }) {\n    const ctx = el.__vctouchrepeat\n\n    if (ctx !== void 0 && oldValue !== value) {\n      typeof value !== 'function' && ctx.end()\n      ctx.handler = value\n    }\n  },\n\n  beforeUnmount(el) {\n    const ctx = el.__vctouchrepeat\n\n    if (ctx !== void 0) {\n      clearTimeout(ctx.timer)\n\n      cleanEvt(ctx, 'main')\n      cleanEvt(ctx, 'temp')\n\n      ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n      delete el.__vctouchrepeat\n    }\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-06 16:00:16\n * @LastEditTime: 2022-04-06 16:00:25\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\utils\\defer.ts\n */\n\n/**\n * A function used to resolve a promise upon completion .\n * @callback defer.resolve\n *\n * @param {*} value The resulting value.\n */\n\n/**\n * A function used to reject a promise upon failure.\n * @callback defer.reject\n *\n * @param {*} error The error.\n */\n\n/**\n * An object which contains a promise object, and functions to resolve or reject the promise.\n *\n * @typedef {Object} defer.deferred\n * @property {defer.resolve} resolve Resolves the promise when called.\n * @property {defer.reject} reject Rejects the promise when called.\n * @property {Promise} promise Promise object.\n */\n\n/**\n * Creates a deferred object, containing a promise object, and functions to resolve or reject the promise.\n * @returns {defer.deferred}\n * @private\n */\nfunction defer() {\n  let resolve\n  let reject\n  const promise = new Promise(function (res, rej) {\n    resolve = res\n    reject = rej\n  })\n\n  return {\n    resolve: resolve,\n    reject: reject,\n    promise: promise\n  }\n}\n\nexport default defer\n","import { VcViewerProvider, AnyFunction } from 'casc-cesium-utils/types'\nimport { ref } from 'vue'\nimport { TouchHold } from 'casc-cesium-directives'\nimport defer from 'casc-cesium-utils/defer'\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      TouchHold.beforeMount(viewer.canvas, {\n        arg: '2000',\n        value: onTouchHold,\n        touchStart: onTouchStart,\n        touchEnd: onTouchEnd,\n        modifiers: {}\n      })\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\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\n    const { viewer } = $services\n    TouchHold.beforeUnmount(viewer.canvas)\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  let touchPromise = undefined\n  const onRightClick = movement => {\n    if (touchPromise) {\n      touchPromise?.promise?.then(flag => {\n        flag &&\n          handleMouseClick?.(movement, {\n            button: 2\n          })\n      })\n    } else {\n      handleMouseClick?.(movement, {\n        button: 2\n      })\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  const onTouchHold = e => {\n    if (e.touch) {\n      const movement = {\n        position: {\n          x: e.position.left,\n          y: e.position.top\n        }\n      }\n      handleDoubleClick?.(movement, {\n        button: 0\n      })\n    }\n\n    touchPromise.resolve(false)\n  }\n\n  const onTouchEnd = (e: TouchEvent) => {\n    touchPromise.resolve(true)\n  }\n\n  const onTouchStart = (e: TouchEvent) => {\n    touchPromise = defer()\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 'casc-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-08-12 11:47:16\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\10_vue-cesium\\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, VcViewerProvider } from 'casc-cesium-utils/types'\nimport useCommon from '../use-common'\nimport { mergeDescriptors } from 'casc-cesium-utils/merge-descriptors'\nimport { provide } from 'vue'\nimport { vcKey } from 'casc-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 = (): VcViewerProvider => {\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\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 { VcComponentInternalInstance, VcComponentPublicInstance } from 'casc-cesium-utils/types'\nimport useCommon from '../use-common'\nimport { mergeDescriptors } from 'casc-cesium-utils/merge-descriptors'\nimport { provide, ref } from 'vue'\nimport { vcKey } from 'casc-cesium-utils/config'\nimport { getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { isArray } from 'casc-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\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-03-11 11:36:37\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-providers\\index.ts\n */\nimport { getInstanceListener, getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport type { VcComponentInternalInstance } from 'casc-cesium-utils/types'\nimport * as coordtransform from 'casc-cesium-utils/coordtransform'\nimport useCommon from '../use-common'\nimport type { SetupContext } from 'vue'\nimport type { ProviderEmits } from 'casc-cesium-utils/emits'\nimport { VcLayerImageryRef } from 'casc-cesium-components'\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 VcLayerImageryRef)\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 VcLayerImageryRef\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 VcLayerImageryRef)\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 VcLayerImageryRef\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 VcLayerImageryRef)\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-09-11 11:51:57\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-vue-cesium\\index.ts\n */\nimport { getCurrentInstance, inject } from 'vue'\nimport { VcViewerProvider } from 'casc-cesium-utils/types'\nimport useLog from 'casc-cesium-composables/private/use-log'\nimport { vcKey } from 'casc-cesium-utils/config'\n\nexport default function useVueCesium(containerId?: string): VcViewerProvider {\n  const instance = getCurrentInstance()\n  const provides = instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : (instance.parent as any).provides\n  if ((!provides || !(vcKey in provides)) && !containerId) {\n    containerId = 'cesiumContainer'\n  }\n  const logger = useLog()\n  if (instance) {\n    if (containerId) {\n      const $vc = instance.appContext.config.globalProperties?.$VueCesium?.[containerId]\n      if (!$vc) {\n        logger.warn(`Failed to get $vc, reason: vc-viewer with containerId: ${containerId} was not found.`)\n      }\n      return $vc\n    } else {\n      return inject<VcViewerProvider>(vcKey)\n    }\n  } else {\n    logger.warn('VueCesium useVueCesium() can only be used inside setup().')\n  }\n}\n","import type { Mars3dConfig, VcCamera, VcContextOptions } from 'casc-cesium-utils/types'\nimport type { PropType } from 'vue'\nimport { VcSkeletonProps } from '../../ui'\nimport { VcViewerCreatorFunction } from './useViewer'\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  touchHoldArg: {\n    type: String,\n    default: '1000'\n  },\n  viewerCreator: Function as PropType<VcViewerCreatorFunction>,\n  mars3dConfig: Object as PropType<Mars3dConfig>,\n  containerId: String\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-12-04 15:55:24\n * @LastEditTime: 2022-08-03 10:57:40\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\10_vue-cesium\\packages\\components\\viewer\\src\\loadUtil.ts\n */\n/**\n * 加载Mars3D平台CDN资源文件，\n * 这些文件可以从  http://mars3d.cn/download/lib.rar  下载后放在本地项目目录引入。\n * 20220803 改为 cdn 资源\n * @param {string} libpath 根目录，如：http://mars3d.cn/lib/\n * @return {*}\n */\nexport function getMars3dConfig() {\n  const libsConfig = {\n    'font-awesome': [\n      // libpath + 'fonts/font-awesome/css/font-awesome.min.css'\n      'https://unpkg.com/font-awesome@latest/css/font-awesome.min.css'\n    ],\n    haoutil: [\n      // libpath + 'hao/haoutil.js'\n      'https://unpkg.com/haoutil@latest/dist/haoutil-src.js'\n    ],\n    turf: [\n      // libpath + 'turf/turf.min.js'\n      'https://unpkg.com/@turf/turf@latest/turf.min.js'\n    ],\n    'mars3d-space': [\n      //卫星插件\n      // libpath + 'mars3d/plugins/space/mars3d-space.js'\n      'https://unpkg.com/mars3d-space@latest/dist/mars3d-space.js'\n    ],\n    'mars3d-echarts': [\n      //echarts支持插件\n      // libpath + 'echarts/echarts.min.js',\n      'https://unpkg.com/echarts@latest/dist/echarts.min.js',\n      // libpath + 'echarts/echarts-gl.min.js',\n      'https://unpkg.com/echarts-gl@latest/dist/echarts-gl.min.js',\n      // libpath + 'mars3d/plugins/echarts/mars3d-echarts.js'\n      'https://unpkg.com/mars3d-echarts@latest/dist/mars3d-echarts.js'\n    ],\n    'mars3d-mapv': [\n      //mapv支持插件\n      // libpath + 'mapV/mapv.min.js',\n      'https://unpkg.com/mapv@latest/build/mapv.min.js',\n      // libpath + 'mars3d/plugins/mapv/mars3d-mapv.js'\n      'https://unpkg.com/mars3d-mapv@latest/dist/mars3d-mapv.js'\n    ],\n    'mars3d-heatmap': [\n      //heatmap热力图支持插件\n      // libpath + 'mars3d/plugins/heatmap/heatmap.min.js',\n      'https://unpkg.com/heatmapjs@latest/heatmap.min.js',\n      // libpath + 'mars3d/plugins/heatmap/mars3d-heatmap.js'\n      'https://unpkg.com/mars3d-heatmap@latest/dist/mars3d-heatmap.js'\n    ],\n    'mars3d-wind': [\n      //风场图层插件\n      // libpath + 'mars3d/plugins/wind/netcdfjs.js', //m10_windLayer解析nc\n      'https://unpkg.com/netcdfjs@latest/lib/index.js',\n      // libpath + 'mars3d/plugins/wind/mars3d-wind.js'\n      'https://unpkg.com/mars3d-wind@latest/dist/mars3d-wind.js'\n    ],\n    'mars3d-tdt': ['https://unpkg.com/mars3d-tdt@latest/dist/mars3d-tdt.js'],\n    'mars3d-widget': ['https://unpkg.com/mars3d-widget@latest/dist/mars3d-widget.js'],\n    mars3d: [\n      //三维地球“主库”\n      // libpath + 'Cesium/Widgets/widgets.css', //cesium\n      'https://unpkg.com/mars3d-cesium@latest/Build/Cesium/Widgets/widgets.css',\n      // libpath + 'Cesium/Cesium.js',\n      'https://unpkg.com/mars3d-cesium@latest/Build/Cesium/Cesium.js',\n      // libpath + 'mars3d/mars3d.css', //mars3d\n      'https://unpkg.com/mars3d@latest/dist/mars3d.css',\n      // libpath + 'mars3d/mars3d.js'\n      'https://unpkg.com/mars3d@latest/dist/mars3d.js'\n    ]\n  }\n  return libsConfig\n}\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 'casc-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-08-25 20:10:03\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  _arcType: 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, createGuid, BoundingSphere, Ellipsoid, ClassificationType, ArcType } = 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._arcType = defaultValue(options.arcType, ArcType.RHUMB)\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              arcType: this._arcType\n            })\n          : PolygonGeometry.fromPositions({\n              positions: this._positions.map(function (e) {\n                return Cartesian3.clone(e)\n              }),\n              ellipsoid: this._ellipsoid,\n              arcType: this._arcType\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-09-08 15:41:35\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\shared\\src\\DynamicOverlay.ts\n */\nimport { makeCartesian3, makeJulianDate } from 'casc-cesium-utils/cesium-helpers'\nimport type { DynamicOverlayOpts, VcPosition } from 'casc-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, CallbackProperty } = 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\n    if (!Cesium.defined(options.orientation)) {\n      // entity.orientation = new VelocityOrientationProperty(this._sampledPosition)\n      const orientation = new VelocityOrientationProperty(this._sampledPosition)\n      // 停止时保持方向\n      let lastOri\n      entity.orientation = new CallbackProperty((time, result) => {\n        const ori = orientation.getValue(time)\n        if (ori) {\n          lastOri = ori\n        } else {\n          return lastOri\n        }\n        return ori\n      }, false)\n    }\n\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 | Date) {\n    this._removePosition()\n    let time: Cesium.JulianDate\n    if (typeof timeOrInterval === 'number') {\n      const now = Cesium.JulianDate.now()\n      time = Cesium.JulianDate.addSeconds(now, timeOrInterval, new Cesium.JulianDate())\n      Cesium.destroyObject(now)\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 time\n  }\n}\n\nexport default DynamicOverlay\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-17 22:17:16\n * @LastEditTime: 2022-05-14 15:22:31\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\shared\\src\\DebugCameraPrimitive.ts\n */\n\nconst attributeLocations = {\n  position: 0,\n  normal: 1\n}\n\nclass DebugCameraPrimitive {\n  modelMatrix: Cesium.Matrix4\n  fovH: number\n  fovV: number\n  segmentH: number\n  segmentV: number\n  subSegmentH: number\n  subSegmentV: number\n  _faceColor: Cesium.Color\n  _lineColor: Cesium.Color\n  show: boolean\n  _modelMatrix: Cesium.Matrix4\n  _fovH: number\n  _fovV: number\n  _segmentH: number\n  _segmentV: number\n  _subSegmentH: number\n  _subSegmentV: number\n  _boundingSphere: Cesium.BoundingSphere\n  _initBoundingSphere: any\n  _command: any\n  _lineCommand: any\n  _shaderprogram: any\n  constructor(options) {\n    const { defaultValue, Matrix4, Math: CesiumMath, Color, BoundingSphere } = Cesium\n    this.modelMatrix = defaultValue(options.modelMatrix, new Matrix4())\n    this.fovH = defaultValue(options.fovH, CesiumMath.toRadians(60))\n    this.fovV = defaultValue(options.fovV, CesiumMath.toRadians(30))\n    this.segmentH = defaultValue(options.segmentH, 16)\n    this.segmentV = defaultValue(options.segmentV, 8)\n    this.subSegmentH = defaultValue(options.subSegmentH, 3)\n    this.subSegmentV = defaultValue(options.subSegmentV, 3)\n    this._faceColor = defaultValue(options.faceColor, new Color(1, 1, 1, 0.1))\n    this._lineColor = defaultValue(options.lineColor, new Color(1, 1, 1, 0.4))\n    this.show = defaultValue(options.show, true)\n    this._modelMatrix = Matrix4.clone(Matrix4.IDENTITY)\n    this._fovH = 0\n    this._fovV = 0\n    this._segmentH = 1\n    this._segmentV = 1\n    this._subSegmentH = 1\n    this._subSegmentV = 1\n    this._boundingSphere = new BoundingSphere()\n    this._initBoundingSphere = undefined\n    this._command = undefined\n  }\n\n  get faceColor() {\n    return this._faceColor\n  }\n  set faceColor(e) {\n    this._faceColor = e\n  }\n\n  get lineColor() {\n    return this._lineColor\n  }\n  set lineColor(e) {\n    this._lineColor = e\n  }\n\n  update(frameState) {\n    if (this.show && frameState.passes.render) {\n      const { clone, Matrix4, defined, BoundingSphere } = Cesium\n\n      ;(this.fovH === this._fovH &&\n        this.fovV === this._fovV &&\n        this.segmentH === this._segmentH &&\n        this.segmentV === this._segmentV &&\n        this.subSegmentH === this._subSegmentH &&\n        this.subSegmentV === this._subSegmentV) ||\n        ((this._fovH = this.fovH),\n        (this._fovV = this.fovV),\n        (this._segmentH = this.segmentH),\n        (this._segmentV = this.segmentV),\n        (this._subSegmentH = this.subSegmentH),\n        (this._subSegmentV = this.subSegmentV),\n        (this._modelMatrix = clone(Matrix4.IDENTITY)),\n        this._destroyVideoMemory())\n\n      if (\n        this.fovH !== this._fovH &&\n        this.fovV !== this._fovV &&\n        this.segmentH !== this._segmentH &&\n        this.segmentV !== this._segmentV &&\n        this.subSegmentH !== this._subSegmentH &&\n        this.subSegmentV !== this._subSegmentV\n      ) {\n        this._fovH = this.fovH\n        this._fovV = this.fovV\n        this._segmentH = this.segmentH\n        this._segmentV = this.segmentV\n        this._subSegmentH = this.subSegmentH\n        this._subSegmentV = this.subSegmentV\n        this._modelMatrix = clone(Matrix4.IDENTITY)\n        this._destroyVideoMemory()\n      }\n\n      if (!defined(this._command)) {\n        this._createCommand(frameState.context)\n      }\n      if (!Matrix4.equals(this.modelMatrix, this._modelMatrix)) {\n        Matrix4.clone(this.modelMatrix, this._modelMatrix)\n        this._command.modelMatrix = Matrix4.IDENTITY\n        this._command.modelMatrix = this._modelMatrix\n        this._command.boundingVolume = BoundingSphere.transform(this._initBoundingSphere, this._modelMatrix, this._boundingSphere)\n        this._lineCommand.modelMatrix = Matrix4.IDENTITY\n        this._lineCommand.modelMatrix = this._modelMatrix\n        this._lineCommand.boundingVolume = BoundingSphere.transform(this._initBoundingSphere, this._modelMatrix, this._boundingSphere)\n      }\n\n      this._command && frameState.commandList.push(this._command)\n      this._lineCommand && frameState.commandList.push(this._lineCommand)\n    }\n  }\n\n  isDestroyed() {\n    return false\n  }\n\n  destroy() {\n    this._destroyVideoMemory()\n    Cesium.destroyObject(this)\n  }\n\n  _createCommand(context) {\n    const {\n      Appearance,\n      RenderState,\n      ShaderSource,\n      ShaderProgram,\n      BufferUsage,\n      IndexDatatype,\n      VertexArray,\n      ComponentDatatype,\n      BoundingSphere,\n      DrawCommand,\n      PrimitiveType,\n      Pass,\n      Matrix4\n    } = Cesium\n    const that = this\n    const segmentHLength = this._subSegmentH * this._segmentH\n    const segmentVLength = this._subSegmentV * this._segmentV\n    const positionTypedArray1 = createTypedArray(this._fovH, this._fovV, segmentHLength, segmentVLength)\n    const positionTypedArray2 = createTypedArray(this._fovH, this._fovV, segmentHLength, segmentVLength)\n    const indexTypedArray1 = generateIndices1(segmentHLength, segmentVLength)\n    const indexTypedArray2 = generateIndices2(this._segmentH, this._segmentV, this._subSegmentH, this._subSegmentV)\n    const appearance = Appearance['getDefaultRenderState'](true, false, undefined)\n    const renderState = RenderState.fromCache(appearance)\n    const vs = new ShaderSource({\n      sources: [\n        `\n        // 使用double类型的position进行计算\n        // attribute vec3 position3DHigh;\n        // attribute vec3 position3DLow;\n        attribute vec3 position;\n        attribute vec3 normal;\n        // attribute vec2 st;\n        // attribute float batchId;\n        varying vec3 v_positionEC;\n        varying vec3 v_normalEC;\n        // varying vec2 v_st;\n        void main()\n          {\n            // 使用double类型的position进行计算\n            // vec4 p = czm_translateRelativeToEye(position3DHigh, position3DLow);\n            // v_positionEC = (czm_modelViewRelativeToEye * p).xyz;\n            // position in eye coordinates\n            // v_normalEC = czm_normal * normal;\n            // normal in eye coordinates\n            // v_st = st;\n            // gl_Position = czm_modelViewProjectionRelativeToEye * p;\n            v_positionEC = (czm_modelView * vec4(position, 1.0)).xyz;\n            // position in eye coordinates\n            v_normalEC = czm_normal * normal;\n            // normal in eye coordinates\n            // v_st = st;\n            gl_Position = czm_modelViewProjection * vec4(position, 1.0);\n          }\n        `\n      ]\n    })\n    const fs = new ShaderSource({\n      sources: [\n        `\n        varying vec3 v_positionEC;\n        varying vec3 v_normalEC;\n        // varying vec2 v_st;\n        // uniform sampler2D myImage;\n        uniform vec4 vcColor;\n        void main()\n        {\n          vec3 positionToEyeEC = -v_positionEC;\n          vec3 normalEC = normalize(v_normalEC);\n          #ifdef FACE_FORWARD\n          normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);\n          #endif\n          czm_materialInput materialInput;\n          materialInput.normalEC = normalEC;\n          materialInput.positionToEyeEC = positionToEyeEC;\n          // materialInput.st = v_st;\n          //czm_material material = czm_getMaterial(materialInput);\n          czm_material material = czm_getDefaultMaterial(materialInput);\n          // material.diffuse = texture2D(myImage, materialInput.st).rgb;\n          material.diffuse = vcColor.rgb;\n          material.alpha = vcColor.a;\n          #ifdef FLAT\n          gl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n          #else\n          gl_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);\n          #endif\n        }\n        `\n      ]\n    })\n\n    const uniformsFace = {\n      vcColor: function () {\n        return that._faceColor\n      }\n    }\n\n    const uniformsLine = {\n      vcColor: function () {\n        return that._lineColor\n      }\n    }\n\n    const shaderProgram = ShaderProgram.fromCache({\n      context: context,\n      vertexShaderSource: vs,\n      fragmentShaderSource: fs,\n      attributeLocations: attributeLocations\n    })\n\n    this._shaderprogram = shaderProgram\n    const positionBuffer1 = Cesium['Buffer'].createVertexBuffer({\n      context: context,\n      typedArray: positionTypedArray1,\n      usage: BufferUsage.STATIC_DRAW\n    })\n    const positionBuffer2 = Cesium['Buffer'].createVertexBuffer({\n      context: context,\n      typedArray: positionTypedArray2,\n      usage: BufferUsage.STATIC_DRAW\n    })\n\n    const indexBuffer1 = Cesium['Buffer'].createIndexBuffer({\n      context: context,\n      typedArray: indexTypedArray1,\n      usage: BufferUsage.STATIC_DRAW,\n      indexDatatype: IndexDatatype.UNSIGNED_SHORT\n    })\n\n    const indexBuffer2 = Cesium['Buffer'].createIndexBuffer({\n      context: context,\n      typedArray: indexTypedArray2,\n      usage: BufferUsage.STATIC_DRAW,\n      indexDatatype: IndexDatatype.UNSIGNED_SHORT\n    })\n\n    const textureVA1 = new VertexArray({\n      context: context,\n      attributes: [\n        {\n          index: 0,\n          vertexBuffer: positionBuffer1,\n          componentsPerAttribute: 3,\n          componentDatatype: ComponentDatatype.FLOAT\n        },\n        {\n          index: 1,\n          vertexBuffer: positionBuffer2,\n          componentsPerAttribute: 3,\n          componentDatatype: ComponentDatatype.FLOAT\n        }\n      ],\n      indexBuffer: indexBuffer1\n    })\n\n    const textureVA2 = new VertexArray({\n      context: context,\n      attributes: [\n        {\n          index: 0,\n          vertexBuffer: positionBuffer1,\n          componentsPerAttribute: 3,\n          componentDatatype: ComponentDatatype.FLOAT\n        },\n        {\n          index: 1,\n          vertexBuffer: positionBuffer2,\n          componentsPerAttribute: 3,\n          componentDatatype: ComponentDatatype.FLOAT\n        }\n      ],\n      indexBuffer: indexBuffer2\n    })\n\n    this._initBoundingSphere = BoundingSphere.fromVertices(positionTypedArray1 as any)\n    this._command = new DrawCommand({\n      vertexArray: textureVA1,\n      primitiveType: PrimitiveType.TRIANGLES,\n      renderState: renderState,\n      shaderProgram: shaderProgram,\n      uniformMap: uniformsFace,\n      owner: this,\n      pass: Pass.TRANSLUCENT,\n      modelMatrix: new Matrix4(),\n      boundingVolume: new BoundingSphere(),\n      cull: true\n    })\n\n    this._lineCommand = new DrawCommand({\n      vertexArray: textureVA2,\n      primitiveType: PrimitiveType.LINES,\n      renderState: renderState,\n      shaderProgram: shaderProgram,\n      uniformMap: uniformsLine,\n      owner: this,\n      pass: Pass.TRANSLUCENT,\n      modelMatrix: new Matrix4(),\n      boundingVolume: new BoundingSphere(),\n      cull: true\n    })\n  }\n\n  _destroyVideoMemory() {\n    const { defined } = Cesium\n    this._shaderprogram = this._shaderprogram && this._shaderprogram.destroy()\n    if (defined(this._command)) {\n      this._command.vertexArray.destroy()\n      this._command = undefined\n    }\n    if (defined(this._lineCommand)) {\n      this._lineCommand.vertexArray.destroy()\n      this._lineCommand = undefined\n    }\n  }\n}\n\nfunction createTypedArray(fovH: number, fovV: number, segmentHLength: number, segmentVLength: number) {\n  const buffer = new Float32Array((segmentHLength + 1) * (segmentVLength + 1) * 3 + 3)\n  for (let i = 0; i < segmentHLength + 1; i++) {\n    for (let j = 0; j < segmentVLength + 1; j++) {\n      const width = fovH * (i / segmentHLength - 0.5)\n      const height = fovV * (j / segmentVLength - 0.5)\n      const positions = [Math.cos(-width) * Math.cos(-height), Math.sin(-width) * Math.cos(-height), Math.sin(height)]\n      buffer[3 * (j * (segmentHLength + 1) + i) + 0] = positions[0]\n      buffer[3 * (j * (segmentHLength + 1) + i) + 1] = positions[1]\n      buffer[3 * (j * (segmentHLength + 1) + i) + 2] = positions[2]\n    }\n  }\n\n  buffer[(segmentHLength + 1) * (segmentVLength + 1) * 3 + 0] = 0\n  buffer[(segmentHLength + 1) * (segmentVLength + 1) * 3 + 1] = 0\n  buffer[(segmentHLength + 1) * (segmentVLength + 1) * 3 + 2] = 0\n  return buffer\n}\n\nfunction generateIndices1(segmentHLength, segmentVLength) {\n  const vertexCount = segmentHLength * segmentVLength * 6\n  const indices = new Uint16Array(vertexCount)\n  for (let i = 0; i < segmentHLength; i++) {\n    for (let j = 0; j < segmentVLength; j++) {\n      const a = j * (1 + segmentHLength) + i\n      const b = j * (1 + segmentHLength) + i + 1\n      const c = (j + 1) * (1 + segmentHLength) + i\n      const d = (j + 1) * (1 + segmentHLength) + i + 1\n      const quadIndex = 6 * (j * segmentHLength + i)\n      indices[0 + quadIndex] = a\n      indices[1 + quadIndex] = b\n      indices[2 + quadIndex] = d\n      indices[3 + quadIndex] = a\n      indices[4 + quadIndex] = d\n      indices[5 + quadIndex] = c\n    }\n  }\n\n  return indices\n}\n\nfunction generateIndices2(segmentH, segmentV, subSegmentH, subSegmentV) {\n  const segmentHLength = segmentH * subSegmentH\n  const segmentVLength = segmentV * subSegmentV\n  const indices = new Uint16Array((segmentH + 1) * (2 * segmentVLength) + (segmentV + 1) * (2 * segmentHLength) + 8)\n  for (let i = 0; i < segmentH + 1; i++) {\n    for (let j = 0; j < segmentVLength; j++) {\n      const index = i * subSegmentH\n      indices[2 * (i * segmentVLength + j) + 0] = j * (1 + segmentHLength) + index\n      indices[2 * (i * segmentVLength + j) + 1] = (j + 1) * (1 + segmentHLength) + index\n    }\n  }\n\n  const size = (segmentH + 1) * (2 * segmentVLength)\n  for (let i = 0; i < segmentV; i++) {\n    for (let j = 0; j < segmentHLength; j++) {\n      const index = i * subSegmentV\n      indices[size + 2 * (j + i * segmentHLength)] = index * (1 + segmentHLength) + j\n      indices[size + 2 * (j + i * segmentHLength) + 1] = index * (1 + segmentHLength) + j + 1\n    }\n  }\n\n  const index = (segmentH + 1) * (2 * segmentVLength) + (segmentV + 1) * (2 * segmentHLength)\n  indices[index] = 0\n  indices[index + 1] = (1 + segmentHLength) * (1 + segmentVLength)\n  indices[index + 2] = segmentHLength\n  indices[index + 3] = (1 + segmentHLength) * (1 + segmentVLength)\n  indices[index + 4] = (1 + segmentHLength) * segmentVLength\n  indices[index + 5] = (1 + segmentHLength) * (1 + segmentVLength)\n  indices[index + 6] = (1 + segmentHLength) * (1 + segmentVLength) - 1\n  indices[index + 7] = (1 + segmentHLength) * (1 + segmentVLength)\n\n  return indices\n}\n\nexport default DebugCameraPrimitive\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-15 14:46:58\n * @LastEditTime: 2022-05-13 09:47:41\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\shared\\extends\\core\\RectangleExtend.ts\n */\n\nlet isExtended = false\nexport default class RectangleExtend {\n  static extend(viewer?: Cesium.Viewer) {\n    if (isExtended) {\n      return\n    }\n    const { Rectangle } = Cesium\n\n    Rectangle.prototype.expand = function (widthFactor, heightFactor, result) {\n      result = result && result instanceof Rectangle ? result : this.clone()\n      widthFactor = (result.width * (1 - widthFactor)) / 2\n      heightFactor = (result.height * (1 - heightFactor)) / 2\n\n      result.west += widthFactor\n      result.south += heightFactor\n      result.east -= widthFactor\n      result.north -= heightFactor\n      result.west = result.west < -Math.PI ? -Math.PI : result.west\n      result.east = result.east > Math.PI ? Math.PI : result.east\n      result.north = result.north > Math.PI / 2 ? Math.PI / 2 : result.north\n      result.south = result.south < -Math.PI / 2 ? -Math.PI / 2 : result.south\n\n      return result\n    }\n\n    isExtended = true\n  }\n\n  static revoke(viewer?: Cesium.Viewer) {\n    if (!isExtended) {\n      return\n    }\n\n    const { Rectangle } = Cesium\n    Rectangle.prototype.expand = undefined\n\n    isExtended = false\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-16 19:29:57\n * @LastEditTime: 2022-05-13 09:49:41\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\shared\\extends\\scene\\ShadowMapShaderExtend.ts\n */\n\nlet isExtended = false\nlet createShadowReceiveFragmentShaderNative\n\nexport default class ShadowMapShaderExtend {\n  static extend(viewer?: Cesium.Viewer) {\n    if (isExtended) {\n      return\n    }\n\n    const ShadowMapShader = Cesium['ShadowMapShader']\n\n    createShadowReceiveFragmentShaderNative = ShadowMapShader.createShadowReceiveFragmentShader\n\n    ShadowMapShader.createShadowReceiveFragmentShader = function (fs, shadowMap, castShadows, isTerrain, hasTerrainNormal) {\n      fs = createShadowReceiveFragmentShaderNative.bind(this)(fs, shadowMap, castShadows, isTerrain, hasTerrainNormal)\n      const isSpotLight = shadowMap._isSpotLight\n\n      if (isSpotLight) {\n        fs.sources[0] = `\n          uniform vec4 shadowMap_viewshedVisibleColor;\n          uniform vec4 shadowMap_viewshedInvisibleColor;\n          ${fs.sources[0]}\n        `\n        fs.sources[fs.sources.length - 1] = fs.sources[fs.sources.length - 1].replace(\n          'gl_FragColor.rgb *= visibility;',\n          `\n          float _depth = shadowPosition.z - shadowParameters.depthBias;\n          float _visibility = czm_shadowDepthCompare(shadowMap_texture, shadowPosition.xy, _depth);\n          gl_FragColor.rgb *= (_visibility < 0.999 ? shadowMap_viewshedInvisibleColor.rgb :shadowMap_viewshedVisibleColor.rgb);\n          `\n        )\n        fs.sources[fs.sources.length - 1] = fs.sources[fs.sources.length - 1].replace(\n          'vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz);',\n          'vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz);if (distance(positionEC.xyz, shadowMap_lightPositionEC.xyz) > shadowMap_lightPositionEC.w) { return; }'\n        )\n      }\n\n      return fs\n    }\n\n    isExtended = true\n  }\n\n  static revoke(viewer?: Cesium.Viewer) {\n    if (!isExtended) {\n      return\n    }\n\n    const ShadowMapShader = Cesium['ShadowMapShader']\n    ShadowMapShader.createShadowReceiveFragmentShader = createShadowReceiveFragmentShaderNative\n\n    isExtended = false\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-16 18:52:39\n * @LastEditTime: 2022-05-14 22:42:17\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\shared\\analyses\\Viewshed.ts\n */\n\nimport { VcViewshedOpts } from 'casc-cesium-utils/drawing-types'\nimport { DebugCameraPrimitive } from '../src'\n\nclass Viewshed {\n  _scene: Cesium.Scene\n  _frustum: Cesium.PerspectiveFrustum\n  _spotLightCamera: Cesium.Camera\n  _viewshedShadowMap: Cesium.ShadowMap\n  _debugCameraPrimitive: DebugCameraPrimitive\n  _enabledChangedEvent: Cesium.Event\n  _position: Cesium.Cartesian3\n  _offsetHeight: number\n  _visibleColor: Cesium.Color\n  _invisibleColor: Cesium.Color\n  _showGridLine: boolean\n  _fovH: number\n  _fovV: number\n  constructor(scene: Cesium.Scene, options?: VcViewshedOpts) {\n    const {\n      defined,\n      DeveloperError,\n      PerspectiveFrustum,\n      Math: CesiumMath,\n      Camera,\n      ShadowMap,\n      ShadowMode,\n      Event,\n      Cartesian3,\n      defaultValue,\n      Color\n    } = Cesium\n    if (!defined(scene)) {\n      throw new DeveloperError('scene is required.')\n    }\n    this._scene = scene\n    this._frustum = new PerspectiveFrustum()\n    this._frustum.fov = CesiumMath.PI / 3\n    this._frustum.aspectRatio = 3\n    this._frustum.near = 1\n    this._frustum.far = 400\n    this._spotLightCamera = new Camera(this._scene)\n    this._frustum.clone(this._spotLightCamera.frustum as Cesium.PerspectiveFrustum)\n    this._viewshedShadowMap = new ShadowMap({\n      context: (this._scene as any).context,\n      lightCamera: this._spotLightCamera,\n      cascadesEnabled: !1\n    } as any)\n    options = options || {}\n    this._scene.globe.shadows = ShadowMode.ENABLED\n    ;(this._viewshedShadowMap as any)._terrainBias.depthBias = 0\n    this._debugCameraPrimitive = new DebugCameraPrimitive({})\n    this._enabledChangedEvent = new Event()\n    this._position = new Cartesian3()\n    this._offsetHeight = defaultValue(options.offsetHeight, 1.8)\n    this._visibleColor = defaultValue(options.visibleColor, new Color(0, 1, 0, 1))\n    this._invisibleColor = defaultValue(options.invisibleColor, new Color(1, 0, 0, 1))\n    ;(this._viewshedShadowMap as any)._viewshedColors = {\n      visible: this._visibleColor,\n      invisible: this._invisibleColor\n    }\n    this._showGridLine = options.showGridLine\n    this._debugCameraPrimitive.show = this._showGridLine\n    this._debugCameraPrimitive.lineColor = defaultValue(options.lineColor, new Color(1, 1, 1, 0.4))\n    this._debugCameraPrimitive.faceColor = defaultValue(options.faceColor, new Color(1, 1, 1, 0.1))\n  }\n\n  get frustum() {\n    return this._frustum\n  }\n\n  get fovH() {\n    return this._fovH\n  }\n  set fovH(e) {\n    if (isNaN(e) || void 0 === e || null == e || e < 0 || e >= Math.PI) {\n      throw new Error('fovH must be in the range [0, PI).')\n    }\n    this._fovH = Number(e)\n    this.frustum.aspectRatio = Math.tan(0.5 * this._fovH) / Math.tan(0.5 * this._fovV)\n    this.frustum.fov = this._fovH > this._fovV ? this._fovH : this._fovV\n  }\n\n  get fovV() {\n    return this._fovV\n  }\n  set fovV(e) {\n    if (isNaN(e) || void 0 === e || null == e || e < 0 || e >= Math.PI) {\n      throw new Error('fovV must be in the range [0, PI).')\n    }\n\n    this._fovV = Number(e)\n    this.frustum.aspectRatio = Math.tan(0.5 * this._fovH) / Math.tan(0.5 * this._fovV)\n    this.frustum.fov = this._fovH > this._fovV ? this._fovH : this._fovV\n  }\n\n  get near() {\n    return this.frustum.near\n  }\n  set near(e) {\n    this.frustum.near !== e && (this.frustum.near = e)\n  }\n\n  get far() {\n    return this.far.near\n  }\n  set far(e) {\n    this.frustum.far !== e && (this.frustum.far = e)\n  }\n\n  get position() {\n    return this._position\n  }\n  set position(e) {\n    if (e instanceof Cesium.Cartesian3) {\n      this.setView({\n        destination: e.clone(),\n        orientation: {\n          heading: this._spotLightCamera.heading,\n          pitch: this._spotLightCamera.pitch,\n          roll: this._spotLightCamera.roll\n        }\n      })\n    }\n  }\n\n  get offsetHeight() {\n    return this._offsetHeight\n  }\n  set offsetHeight(e) {\n    if (isNaN(e) || null == e || null == e) {\n      throw new Error('Unacceptable offset.')\n    }\n\n    this._offsetHeight = Number(e)\n    this.setView({\n      destination: this._position,\n      orientation: {\n        heading: this._spotLightCamera.heading,\n        pitch: this._spotLightCamera.pitch,\n        roll: this._spotLightCamera.roll\n      }\n    })\n  }\n\n  get heading() {\n    return this._spotLightCamera.heading\n  }\n  set heading(e) {\n    this._spotLightCamera.heading !== e &&\n      this._spotLightCamera.setView({\n        destination: this._spotLightCamera.positionWC,\n        orientation: {\n          heading: e,\n          pitch: this._spotLightCamera.pitch,\n          roll: this._spotLightCamera.roll\n        }\n      })\n  }\n\n  get pitch() {\n    return this._spotLightCamera.pitch\n  }\n  set pitch(e) {\n    this._spotLightCamera.pitch !== e &&\n      this._spotLightCamera.setView({\n        destination: this._spotLightCamera.positionWC,\n        orientation: {\n          heading: this._spotLightCamera.heading,\n          pitch: e,\n          roll: this._spotLightCamera.roll\n        }\n      })\n  }\n\n  get roll() {\n    return this._spotLightCamera.roll\n  }\n  set roll(e) {\n    this._spotLightCamera.roll !== e &&\n      this._spotLightCamera.setView({\n        destination: this._spotLightCamera.positionWC,\n        orientation: {\n          heading: this._spotLightCamera.heading,\n          pitch: this._spotLightCamera.pitch,\n          roll: e\n        }\n      })\n  }\n\n  get shadowMap() {\n    return this._viewshedShadowMap\n  }\n\n  get lightCamera() {\n    return this._spotLightCamera\n  }\n\n  get enabled() {\n    return this._viewshedShadowMap.enabled\n  }\n  set enabled(e) {\n    if (this._viewshedShadowMap.enabled !== e) {\n      if (e) {\n        // this._debugCameraPrimitive.show = true\n        this._viewshedShadowMap.enabled = true\n        this._viewshedShadowMap._pointLightRadius = this._spotLightCamera.frustum.far\n      } else {\n        // this._debugCameraPrimitive.show = false\n        this._viewshedShadowMap.enabled = false\n      }\n      this._enabledChangedEvent.raiseEvent(e)\n    }\n  }\n\n  get enabledChangedEvent() {\n    return this._enabledChangedEvent\n  }\n\n  get visibleColor() {\n    return this._visibleColor\n  }\n  set visibleColor(e: Cesium.Color) {\n    this._visibleColor = e\n    ;(this._viewshedShadowMap as any)._viewshedColors.visible = e\n  }\n\n  get invisibleColor() {\n    return this._invisibleColor\n  }\n  set invisibleColor(e: Cesium.Color) {\n    this._invisibleColor = e\n    ;(this._viewshedShadowMap as any)._viewshedColors.invisible = e\n  }\n\n  get showGridLine() {\n    return this._showGridLine\n  }\n  set showGridLine(e) {\n    this._showGridLine = e\n    this._debugCameraPrimitive.show = e\n  }\n\n  get faceColor() {\n    return this._debugCameraPrimitive.faceColor\n  }\n  set faceColor(e) {\n    this._debugCameraPrimitive.faceColor = e\n  }\n\n  get lineColor() {\n    return this._debugCameraPrimitive.lineColor\n  }\n  set lineColor(e) {\n    this._debugCameraPrimitive.lineColor = e\n  }\n\n  update(frameState) {\n    if (this._viewshedShadowMap.enabled) {\n      const { ShadowMode, Matrix3, Matrix4, Math: CesiumMath } = Cesium\n      this._scene.globe.shadows !== ShadowMode.ENABLED && (this._scene.globe.shadows = ShadowMode.ENABLED)\n      frameState.shadowMaps.unshift(this._viewshedShadowMap)\n      if (!this._frustum.equals(this._spotLightCamera.frustum as Cesium.PerspectiveFrustum)) {\n        this._frustum.clone(this._spotLightCamera.frustum as Cesium.PerspectiveFrustum)\n        this._viewshedShadowMap._pointLightRadius = this._frustum.far\n        ;(this.shadowMap as any)._boundingSphere.radius = Math.random()\n      }\n\n      if (this._debugCameraPrimitive.show) {\n        const modelMatrix = this._debugCameraPrimitive.modelMatrix\n        Matrix4.clone(this._spotLightCamera.inverseViewMatrix, modelMatrix)\n        const r0 = Matrix3.fromRotationZ(0.5 * CesiumMath.PI)\n        const r1 = Matrix3.fromRotationY(0.5 * CesiumMath.PI)\n        const rotation = new Matrix3()\n        Matrix3.multiply(r0, r1, rotation)\n        Matrix4.multiplyByMatrix3(modelMatrix, rotation, modelMatrix)\n        Matrix4.multiplyByUniformScale(modelMatrix, this._spotLightCamera.frustum.far, modelMatrix)\n        const frustum = this._spotLightCamera.frustum as Cesium.PerspectiveFrustum\n        this._debugCameraPrimitive.fovV = frustum.aspectRatio <= 1 ? frustum.fov : 2 * Math.atan(Math.tan(0.5 * frustum.fov) / frustum.aspectRatio)\n        this._debugCameraPrimitive.fovH = 1 < frustum.aspectRatio ? frustum.fov : 2 * Math.atan(Math.tan(0.5 * frustum.fov) * frustum.aspectRatio)\n        this._debugCameraPrimitive.segmentH = parseInt(String(this._debugCameraPrimitive.fovH / (Math.PI / 30))) || 1\n        this._debugCameraPrimitive.segmentV = parseInt(String(this._debugCameraPrimitive.fovV / (Math.PI / 30))) || 1\n        this._debugCameraPrimitive.update(frameState)\n      }\n    }\n  }\n\n  setView(options) {\n    options = options || {}\n    const destination = options.destination\n    if (destination instanceof Cesium.Cartesian3) {\n      this._position = destination.clone()\n      const offsetHeight = this._offsetHeight\n      const cartographic = Cesium.Cartographic.fromCartesian(destination, this._scene.globe.ellipsoid)\n      if (cartographic) {\n        cartographic.height = cartographic.height + offsetHeight\n        const cartesian = Cesium.Cartesian3.fromRadians(\n          cartographic.longitude,\n          cartographic.latitude,\n          cartographic.height,\n          this._scene.globe.ellipsoid\n        )\n        options.destination = cartesian\n      }\n    }\n\n    this._spotLightCamera.setView(options)\n  }\n\n  isDestroyed() {\n    return false\n  }\n\n  destroy() {\n    this._debugCameraPrimitive && this._debugCameraPrimitive.destroy()\n    this._viewshedShadowMap && this._viewshedShadowMap.destroy()\n    Cesium.destroyObject(this)\n  }\n}\n\nexport default Viewshed\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-25 16:05:16\n * @LastEditTime: 2022-05-13 09:57:29\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\private\\use-vc-extension.ts\n */\nimport { RectangleExtend, ShadowMapShaderExtend } from 'casc-cesium-shared'\n\nconst vcExtends = [RectangleExtend, ShadowMapShaderExtend]\n\nexport default function useVcExtension() {\n  const invokeExtensions = (viewer: Cesium.Viewer) => {\n    vcExtends.forEach(item => {\n      item.extend(viewer)\n    })\n  }\n\n  const revokeExtensions = (viewer: Cesium.Viewer) => {\n    vcExtends.forEach(item => {\n      item.revoke(viewer)\n    })\n  }\n\n  return {\n    invokeExtensions,\n    revokeExtensions\n  }\n}\n","import { watch, ref, onMounted, onUnmounted, nextTick, reactive, VNode } from 'vue'\nimport mitt, { Emitter } from 'mitt'\nimport { useLocale } from 'casc-cesium-composables'\nimport defaultProps from './defaultProps'\nimport { mergeDescriptors } from 'casc-cesium-utils/merge-descriptors'\nimport { dirname, removeEmpty, isEmptyObj, hasOwn } from 'casc-cesium-utils/util'\nimport { getInstanceListener, $ } from 'casc-cesium-utils/private/vm'\nimport type {\n  VcComponentInternalInstance,\n  VcCamera,\n  VcReadyObject,\n  VcComponentPublicInstance,\n  AnyObject,\n  VcMittEvents,\n  VcTerrainProvider,\n  VcDatasource,\n  ViewerWidgetResizedEvent,\n  VcContextOptions,\n  VcViewerProvider,\n  Mars3dConfig\n} from 'casc-cesium-utils/types'\nimport { setViewerCamera } from 'casc-cesium-utils/cesium-helpers'\nimport useLog from 'casc-cesium-composables/private/use-log'\nimport { useEvents } from 'casc-cesium-composables'\nimport { getMars3dConfig as getDefaultMars3dConfig } from './loadUtil'\nimport { useGlobalConfig } from 'casc-cesium-composables/use-global-config'\nimport { VcSkeletonProps } from '../../ui/skeleton'\nimport useVcExtension from 'casc-cesium-composables/private/use-vc-extension'\n\nexport const viewerProps = defaultProps\n\nexport default function (props: VcViewerProps, ctx, vcInstance: VcComponentInternalInstance) {\n  // state\n  let createResolve, reject\n  const creatingPromise = 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  const { invokeExtensions, revokeExtensions } = useVcExtension()\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      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 url = buildModuleUrl('Assets/Textures/NaturalEarthII')\n    const options: AnyObject = {}\n    props &&\n      Object.keys(props).forEach(vueProp => {\n        if (props[vueProp] === undefined || props[vueProp] === null) {\n          return\n        }\n        options[vueProp] = props[vueProp]\n      })\n\n    options.imageryProvider = isEmptyObj(options.imageryProvider) ? new TileMapServiceImageryProvider({ url }) : options.imageryProvider\n    options.fullscreenElement = isEmptyObj(options.fullscreenElement) ? $(viewerRef) : options.fullscreenElement\n\n    // if (Cesium.VERSION >= '1.83') {\n    //   delete options.terrainExaggeration\n    // }\n\n    let viewer: Cesium.Viewer\n\n    if (props.viewerCreator) {\n      viewer = props.viewerCreator(vcInstance, $(viewerRef), options)\n    } else {\n      if (globalThis.mars3d) {\n        vcInstance.map = new mars3d.Map($(viewerRef).id, {\n          scene: options,\n          control: options\n        })\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\n    // 扩展\n    invokeExtensions(viewer)\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 = options.terrainExaggeration\n    }\n\n    // vue-cesium 扩展补充\n    // vue-cesium extension\n    defined(options.camera) && setViewerCamera(viewer, options.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(options.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 VcViewerRef\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    const { removeCesiumScript } = props\n\n    viewer._vcPickScreenSpaceEventHandler && viewer._vcPickScreenSpaceEventHandler.destroy()\n    viewer._vcViewerScreenSpaceEventHandler && viewer._vcViewerScreenSpaceEventHandler.destroy()\n    viewer._vcPickScreenSpaceEventHandler = undefined\n    viewer._vcViewerScreenSpaceEventHandler = undefined\n\n    removeCesiumScript && revokeExtensions(viewer)\n\n    delete vcInstance.appContext.config.globalProperties.$VueCesium[viewer.container.id]\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    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      const cesiumPath = props.cesiumPath ? props.cesiumPath : globalConfig.value.cesiumPath\n      const dirName = dirname(cesiumPath)\n      const mars3dConfig = globalConfig.value.mars3dConfig || props.mars3dConfig\n      if (mars3dConfig) {\n        // 引入 mars3d\n        const libsConfig = mars3dConfig.libs || getDefaultMars3dConfig()\n        const include = mars3dConfig.include || 'mars3d'\n        const arrInclude = include.trim().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 (mars3dConfig) {\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 = 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 = 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 = 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 = 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 (): VcViewerProvider {\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 creatingPromise() {\n          return creatingPromise\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      load()\n        .then(e => {\n          createResolve(e)\n        })\n        .catch(e => {\n          emit('unready', e)\n          reject(e)\n        })\n    } catch (e) {\n      emit('unready', 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    creatingPromise\n  }\n}\n\nexport interface 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   * x:y:z, where x is the amount of time to wait (in milliseconds), y is the touch event sensitivity (in pixels) and z is the mouse event sensitivity (in pixels).\n   * Default value: 1000\n   */\n  touchHoldArg?: string\n  /**\n   * for mars3d only.\n   */\n  mars3dConfig?: Mars3dConfig\n  /**\n   * Specifies the container id of the viewer.\n   */\n  containerId?: string\n  /**\n   * Specify the initialization method of the viewer when loading non-standard third-party Cesium libraries.\n   */\n  viewerCreator?: VcViewerCreatorFunction\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 component load failed.\n   */\n  onUnready?: (e: any) => 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  onTouchEnd?: (evt: any) => void\n}\n\nexport interface VcViewerSlots {\n  /**\n   * Default slot content of the component\n   */\n  default: () => VNode[]\n}\n\nexport type VcViewerRef = VcComponentPublicInstance<VcViewerProps>\n\nexport type VcViewerCreatorFunction<T = Cesium.Viewer> = (instance: VcComponentInternalInstance, el: HTMLElement, options: VcViewerProps) => T\n","import { viewerScreenSpaceEvents, pickEvents } from 'casc-cesium-composables/use-events'\nimport { camelCase, capitalize } from 'casc-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, VNode, ComponentPublicInstance } from 'vue'\nimport type { CSSProperties } from 'vue'\nimport useSize, { useSizeProps } from 'casc-cesium-composables/private/use-size'\nimport { hMergeSlot, hSlot } from 'casc-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: VcIconProps, { 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\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\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\n  /**\n   * Name of the icon, following VueCesium convention.\n   */\n  name?: string\n  /**\n   * Color name for component from the css color palette.\n   */\n  color?: string\n  hoverColor?: string\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\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\n}\n\nexport interface VcIconSlots {\n  /**\n   * Suggestions: VcTooltip\n   */\n  default: () => VNode[]\n}\n\nexport type VcIconRef = ComponentPublicInstance<VcIconProps>\n","import { computed } from 'vue'\nimport { useSizeDefaults } from 'casc-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 { 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 'casc-cesium-composables/private/use-align'\nimport useSize, { useSizeProps } from 'casc-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","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, ComponentPublicInstance } from 'vue'\nimport type { VNode } from 'vue'\nimport VcIcon from '../icon'\nimport { Spinner as VcSpinner } from '../spinner'\nimport { Ripple } from 'casc-cesium-directives'\nimport useBtn, { useBtnProps } from './use-btn'\nimport { hMergeSlot, hDir } from 'casc-cesium-utils/private/render'\nimport { stop, prevent, stopAndPrevent, listenOpts } from 'casc-cesium-utils/private/event'\nimport { getTouchTarget } from 'casc-cesium-utils/private/touch'\nimport { isKeyCode } from 'casc-cesium-utils/private/key-composition'\nimport { LooseDictionary } from 'casc-cesium-utils/types'\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\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: LooseDictionary, navigateFn: () => void) => void\n}\n\nexport interface VcBtnSlots {\n  /**\n   * Use for custom content, instead of relying on 'icon' and 'label' props\n   */\n  default: () => VNode[]\n  /**\n   * Override the default VcSpinner when in 'loading' state\n   */\n  loading: () => VNode[]\n}\n\nexport interface VcBtnRef extends ComponentPublicInstance<VcBtnProps> {\n  /**\n   * Emulate click on VcBtn\n   * @param evt JS event object\n   */\n  click: (evt?: LooseDictionary) => void\n}\n","import { ref, watch, onMounted, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport { clearSelection } from 'casc-cesium-utils/private/selection'\nimport { addEvt, cleanEvt, prevent } from 'casc-cesium-utils/private/event'\nimport { getTouchTarget } from 'casc-cesium-utils/private/touch'\nimport { isKeyCode } from 'casc-cesium-utils/private/key-composition'\nimport { platform } from 'casc-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 'casc-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 'casc-cesium-utils/private/vm'\nimport { AnyFunction } from 'casc-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 'casc-cesium-utils/private/global-nodes'\nimport { portalList } from 'casc-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 { 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 { ComponentPublicInstance, ExtractPropTypes, PropType, VNode } from 'vue'\nimport { h, defineComponent, ref, computed, watch, onBeforeUnmount, Transition, getCurrentInstance } from 'vue'\n\nimport useAnchor, { useAnchorProps } from 'casc-cesium-composables/private/use-anchor'\nimport useScrollTarget from 'casc-cesium-composables/private/use-scroll-target'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from 'casc-cesium-composables/private/use-model-toggle'\nimport usePortal from 'casc-cesium-composables/private/use-portal'\nimport useTransition, { useTransitionProps } from 'casc-cesium-composables/private/use-transition'\nimport useTick from 'casc-cesium-composables/private/use-tick'\nimport useTimeout from 'casc-cesium-composables/private/use-timeout'\n\nimport { getScrollTarget } from 'casc-cesium-utils/private/scroll'\nimport { getTouchTarget } from 'casc-cesium-utils/private/touch'\nimport { addEvt, cleanEvt } from 'casc-cesium-utils/private/event'\nimport { clearSelection } from 'casc-cesium-utils/private/selection'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { validatePosition, validateOffset, setPosition, parsePosition } from 'casc-cesium-utils/private/position-engine'\nimport { platform } from 'casc-cesium-utils/platform'\nimport { LooseDictionary } from 'casc-cesium-utils/types'\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: LooseDictionary) => void\n  /**\n   * Emitted when component triggers show() but before it finishes doing it\n   * @param evt JS event object\n   */\n  onBeforeShow?: (evt: LooseDictionary) => void\n  /**\n   * Emitted after component has triggered hide()\n   * @param evt JS event object\n   */\n  onHide?: (evt: LooseDictionary) => void\n  /**\n   * Emitted when component triggers hide() but before it finishes doing it\n   * @param evt JS event object\n   */\n  onBeforeHide?: (evt: LooseDictionary) => void\n}\n\nexport interface VcTooltipSlots {\n  /**\n   * Default slot in the devland unslotted content of the component\n   */\n  default: () => VNode[]\n}\n\nexport interface VcTooltipRef extends ComponentPublicInstance<VcTooltipProps> {\n  /**\n   * Triggers component to show\n   * @param evt JS event object\n   */\n  show: (evt?: LooseDictionary) => void\n  /**\n   * Triggers component to hide\n   * @param evt JS event object\n   */\n  hide: (evt?: LooseDictionary) => void\n  /**\n   * Triggers component to toggle between show/hide\n   * @param evt JS event object\n   */\n  toggle: (evt?: LooseDictionary) => void\n  /**\n   * There are some custom scenarios for which cannot automatically reposition the tooltip without significant performance drawbacks so the optimal solution is for you to call this method when you need it\n   */\n  updatePosition: () => 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, ComponentPublicInstance } from 'vue'\nimport type { CSSProperties, ExtractPropTypes } from 'vue'\n\nimport { between } from 'casc-cesium-utils/private/format'\nimport { AnyFunction } from 'casc-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\nexport interface VcAjaxBarRef extends ComponentPublicInstance<VcAjaxBarProps> {\n  /**\n   * Notify bar you are waiting for a new process to finish\n   * @param speed Delay (in milliseconds) between progress auto-increments; If delay is 0 then it disables auto-incrementing\n   */\n  start: (speed?: number) => void\n  /**\n   * Manually trigger a bar progress increment\n   * @param amount Amount (0 < x <= 100) to increment with\n   */\n  increment: (amount?: number) => void\n  /**\n   * Notify bar that one process you were waiting has finished\n   */\n  stop: () => 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-03-05 11:05:59\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\ui\\skeleton\\index.ts\n */\nimport { h, defineComponent, computed, VNode, ComponentPublicInstance } from 'vue'\n\nimport type { PropType } from 'vue'\n\nimport useDark, { useDarkProps } from 'casc-cesium-composables/private/use-dark'\n\nimport { hSlot } from 'casc-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\nexport interface VcSkeletonSlots {\n  /**\n   * Default slot in the devland unslotted content of the component\n   */\n  default: () => VNode[]\n}\n\nexport type VcSkeletonRef = ComponentPublicInstance<VcSkeletonProps>\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 'casc-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, ComponentPublicInstance } from 'vue'\nimport type { VNode, ExtractPropTypes } from 'vue'\nimport useModelToggle, { useModelToggleEmits } from 'casc-cesium-composables/private/use-model-toggle'\nimport { hSlot, hMergeSlot } from 'casc-cesium-utils/private/render'\nimport { fabKey } from 'casc-cesium-utils/config'\nimport useFab from './use-fab'\nimport VcBtn from '../btn'\nimport VcIcon from '../icon'\nimport defaultProps from './defaultProps'\nimport { LooseDictionary } from 'casc-cesium-utils/types'\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 slotScope = computed(() => ({ opened: showing.value }))\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' : ' vc-fab--closed')\n    )\n\n    const actionClass = computed(\n      () =>\n        'vc-fab__actions flex no-wrap inline' +\n        ` vc-fab__actions--${props.direction}` +\n        ` vc-fab__actions--${showing.value === true ? 'opened' : 'closed'}`\n    )\n\n    const iconHolderClass = computed(() => 'vc-fab__icon-holder ' + ` vc-fab__icon-holder--${showing.value === true ? 'opened' : 'closed'}`)\n\n    function getIcon(kebab, camel) {\n      const slotFn = slots[kebab]\n      const classes = `q-fab__${kebab} absolute-full`\n\n      return slotFn === void 0 ? h(VcIcon, { class: classes, name: props[kebab] as any }) : h('div', { class: classes }, slotFn(slotScope.value))\n    }\n\n    function getTriggerContent() {\n      const child: Array<VNode> = []\n\n      props.hideIcon !== true &&\n        child.push(h('div', { class: iconHolderClass.value }, [getIcon('icon', 'icon'), getIcon('active-icon', 'activeIcon')]))\n\n      if (props.label !== '' || slots.label !== void 0) {\n        child[labelProps.value.action](h('div', labelProps.value.data, slots.label !== void 0 ? slots.label(slotScope.value) : [props.label]))\n      }\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: LooseDictionary) => void\n  /**\n   * Emitted when component triggers show() but before it finishes doing it\n   * @param evt JS event object\n   */\n  onBeforeShow?: (evt: LooseDictionary) => void\n  /**\n   * Emitted after component has triggered hide()\n   * @param evt JS event object\n   */\n  onHide?: (evt: LooseDictionary) => void\n  /**\n   * Emitted when component triggers hide() but before it finishes doing it\n   * @param evt JS event object\n   */\n  onBeforeHide?: (evt: LooseDictionary) => void\n}\n\nexport interface VcFabSlots {\n  /**\n   * This is where VcFabActions may go into\n   */\n  default: () => VNode[]\n  /**\n   * Slot specifically designed for a VcTooltip\n   */\n  tooltip: () => VNode[]\n  /**\n   * Slot for icon shown when FAB is closed; Suggestion: VcIcon\n   * @param scope\n   */\n  icon: (scope: {\n    /**\n     * FAB is opened\n     */\n    opened: boolean\n  }) => VNode[]\n  /**\n   * Slot for icon shown when FAB is opened; Suggestion: VcIcon\n   * @param scope\n   */\n  'active-icon': (scope: {\n    /**\n     * FAB is opened\n     */\n    opened: boolean\n  }) => VNode[]\n  /**\n   * Slot for label\n   * @param scope\n   */\n  label: (scope: {\n    /**\n     * FAB is opened\n     */\n    opened: boolean\n  }) => VNode[]\n}\n\nexport interface VcFabRef extends ComponentPublicInstance<VcFabProps> {\n  /**\n   * Expands fab actions list\n   * @param evt JS event object\n   */\n  show: (evt?: LooseDictionary) => void\n  /**\n   * Collapses fab actions list\n   * @param evt JS event object\n   */\n  hide: (evt?: LooseDictionary) => void\n  /**\n   * Triggers component to toggle between show/hide\n   * @param evt JS event object\n   */\n  toggle: (evt?: LooseDictionary) => 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-03-05 22:43:51\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\ui\\fab\\fab-action.ts\n */\nimport { h, defineComponent, computed, inject, getCurrentInstance, ComponentPublicInstance } from 'vue'\nimport type { VNode, ExtractPropTypes } from 'vue'\nimport { fabKey } from 'casc-cesium-utils/config'\nimport { hMergeSlot } from 'casc-cesium-utils/private/render'\n\nimport VcBtn from '../btn'\nimport VcIcon from '../icon'\nimport useFab from './use-fab'\nimport defaultPropsAction, { anchorMap } from './defaultPropsAction'\nimport { LooseDictionary } from 'casc-cesium-utils/types'\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\nexport interface VcFabActionSlots {\n  /**\n   * Suggestion for this slot: VcTooltip\n   */\n  default: () => VNode[]\n  /**\n   * Slot for icon; Suggestion: VcIcon\n   */\n  icon: () => VNode[]\n  /**\n   * Slot for label\n   */\n  label: () => VNode[]\n}\n\nexport interface VcFabActionRef extends ComponentPublicInstance<VcFabActionProps> {\n  /**\n   * Emulate click on VcFabAction\n   * @param evt JS event object\n   */\n  click: (evt?: LooseDictionary) => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-03-05 11:08:12\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 'casc-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 './spinner'\nexport * from './tooltip'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-12 14:34:05\n * @LastEditTime: 2022-08-22 20:10:58\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) => true,\n  unready: (e: any) => true,\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: (evt: boolean | VcImageryProvider | VcTerrainProvider, 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  ...pickEventEmits,\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-08-12 11:40:04\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\10_vue-cesium\\packages\\components\\viewer\\src\\index.ts\n */\nimport { defineComponent, provide, getCurrentInstance, h, createCommentVNode, withDirectives, computed } from 'vue'\nimport type { VNode } from 'vue'\nimport useViewer, { viewerProps } from './useViewer'\nimport type { VcViewerProps } from './useViewer'\nimport type {\n  VcComponentInternalInstance,\n  VcDatasource,\n  VcTerrainProvider,\n  VcViewerProvider,\n  ViewerWidgetResizedEvent\n} from 'casc-cesium-utils/types'\nimport { vcKey } from 'casc-cesium-utils/config'\nimport { viewerEvents } from './events'\nimport { VcSkeleton } from 'casc-cesium-components/ui'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { isPlainObject, kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport { TouchHold } from 'casc-cesium-directives'\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  touchEnd: evt => 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    const containerId = computed<string>(() => {\n      return props.containerId || (ctx.attrs.id as string) || 'cesiumContainer'\n    })\n\n    // provide\n    provide<VcViewerProvider>(vcKey, viewerStates.getServices())\n    instance.appContext.config.globalProperties.$VueCesium = instance.appContext.config.globalProperties.$VueCesium || {}\n    instance.appContext.config.globalProperties.$VueCesium[containerId.value] = viewerStates.getServices()\n    // expose public methods\n    Object.assign(instance.proxy, {\n      creatingPromise: viewerStates.creatingPromise,\n      load: viewerStates.load,\n      unload: viewerStates.unload,\n      reload: viewerStates.reload,\n      cesiumObject: instance.cesiumObject,\n      getCesiumObject: () => instance.cesiumObject\n    })\n\n    const onTouchHold = e => {\n      ctx.emit('touchEnd', e)\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        withDirectives(\n          h(\n            'div',\n            {\n              ref: viewerStates.viewerRef,\n              class: kebabCase(instance.proxy?.$options.name || ''),\n              id: containerId.value,\n              style: ctx.attrs.style || { width: '100%', height: '100%' }\n            },\n            hSlot(ctx.slots.default)\n          ),\n          [[TouchHold, onTouchHold, props.touchHoldArg]]\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 'casc-cesium-utils/config'\nimport { SFCWithInstall } from 'casc-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 { VcViewerProvider } from 'casc-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<unknown> as PropType<[number, 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 typeof props.teleportToViewer === 'undefined' || props.teleportToViewer ? css : {}\n  })\n\n  const classes = computed(() =>\n    typeof props.teleportToViewer === 'undefined' || props.teleportToViewer ? `absolute absolute-${props.position}` : 'relative-position'\n  )\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-08-19 15:44:47\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\compass\\defaultProps.ts\n */\nimport { positionProps } from 'casc-cesium-composables/private/use-position'\nimport type { VcBtnTooltipProps } from 'casc-cesium-utils/types'\nimport { getDefaultOptionByProps } from 'casc-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  customClass: {\n    type: String,\n    default: ''\n  },\n  teleportToViewer: {\n    type: Boolean,\n    default: true\n  }\n}\nconst defaultOptions = getDefaultOptionByProps<typeof defaultProps>(defaultProps)\nexport { defaultProps, defaultOptions }\n","import { AnyFunction } from 'casc-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 type { AnyFunction, VcComponentInternalInstance } from 'casc-cesium-utils/types'\nimport CameraFlightPath from './CameraFlightPath'\nimport { getInstanceListener, $ } from 'casc-cesium-utils/private/vm'\nimport type { VcTooltipRef } from 'casc-cesium-components/ui'\nimport { isObject } from 'casc-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<VcTooltipRef>(null)\n  const iconInnerTooltipRef = ref<VcTooltipRef>(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 { VNode } from 'vue'\nimport { defineComponent, getCurrentInstance, ref, computed, nextTick, CSSProperties, watch, reactive, createCommentVNode, h } from 'vue'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport type { VcCompassEvt, VcBtnTooltipProps, VcComponentInternalInstance, VcReadyObject, VcComponentPublicInstance } from 'casc-cesium-utils/types'\nimport { $, getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport { defaultProps, defaultOptions } from './defaultProps'\nimport { hMergeSlot } from 'casc-cesium-utils/private/render'\nimport { VcBtn, VcIcon, VcTooltip } from 'casc-cesium-components/ui'\nimport type { VcBtnRef } from 'casc-cesium-components/ui'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport useCompass from './use-compass'\nimport { commonEmits } from 'casc-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: VcCompassProps, 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<VcBtnRef>(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 && props.teleportToViewer) {\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      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\n      if (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\n        rootStyle.left = css.left\n        rootStyle.top = css.top\n        rootStyle.transform = css.transform\n        const side = positionState.attach.value\n        if (outerRingTarget !== void 0) {\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    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} ${props.customClass}`,\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\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   * Specify the customClass of the vc-compass.\n   */\n  customClass?: string\n  /**\n   * Specify whether to add to the cesium-viewer node.\n   * Default value: true\n   */\n  teleportToViewer?: boolean\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 component load failed.\n   */\n  onUnready?: (e: any) => 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\nexport type VcCompassRef = VcComponentPublicInstance<VcCompassProps>\n","import { positionProps } from 'casc-cesium-composables/private/use-position'\nimport type { VcBtnTooltipProps, VcCamera } from 'casc-cesium-utils/types'\nimport { getDefaultOptionByProps } from 'casc-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 as PropType<'vertical' | 'horizontal'>,\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  customClass: {\n    type: String,\n    default: ''\n  },\n  teleportToViewer: {\n    type: Boolean,\n    default: true\n  }\n}\n\nconst defaultOptions = getDefaultOptionByProps<typeof defaultProps>(defaultProps)\n\nexport { defaultProps, defaultOptions }\n","import type { VcCamera, VcComponentInternalInstance, VcViewerProvider } from 'casc-cesium-utils/types'\nimport { flyToCamera, heightToLevel } from 'casc-cesium-utils/cesium-helpers'\nimport { $, getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { ref } from 'vue'\nimport type { VcTooltipRef } from 'casc-cesium-components/ui'\n\nexport default function (props, { emit }, vcInstance: VcComponentInternalInstance, $services: VcViewerProvider) {\n  // state\n  const zoomInTooltipRef = ref<VcTooltipRef>(null)\n  const zoomOutTooltipRef = ref<VcTooltipRef>(null)\n  const resetTooltipRef = ref<VcTooltipRef>(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 { CSSProperties, VNode } from 'vue'\nimport { computed, defineComponent, getCurrentInstance, nextTick, ref, createCommentVNode, h, reactive, watch } from 'vue'\nimport type {\n  VcCamera,\n  VcComponentInternalInstance,\n  VcZoomEvt,\n  VcBtnTooltipProps,\n  VcReadyObject,\n  VcComponentPublicInstance\n} from 'casc-cesium-utils/types'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport { $, getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport { setViewerCamera } from 'casc-cesium-utils/cesium-helpers'\nimport { hMergeSlot } from 'casc-cesium-utils/private/render'\nimport { defaultProps, defaultOptions } from './defaultProps'\nimport type { VcBtnRef } from 'casc-cesium-components/ui'\nimport { VcBtn, VcIcon, VcTooltip } from 'casc-cesium-components/ui'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport useZoomControl from './use-zoom-control'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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: VcZoomControlProps, 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)\n    const zoomInRef = ref<VcBtnRef>(null)\n    const zoomResetRef = ref<VcBtnRef>(null)\n    const zoomOutRef = ref<VcBtnRef>(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 && props.teleportToViewer) {\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        if (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\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      }\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    Object.assign(instance.proxy, {\n      zoomIn: () => zoomControlState.zoomIn,\n      zoomOut: () => zoomControlState.zoomOut,\n      zoomReset: () => zoomControlState.zoomReset\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} ${props.customClass}`,\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\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   * Specify the customClass of the vc-zoom-control.\n   */\n  customClass?: string\n  /**\n   * Specify whether to add to the cesium-viewer node.\n   * Default value: true\n   */\n  teleportToViewer?: boolean\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 component load failed.\n   */\n  onUnready?: (e: any) => 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\nexport type VcZoomControlRef = VcComponentPublicInstance<VcZoomControlProps>\n","import { defineComponent, getCurrentInstance, onMounted, onUnmounted, ref, h, createCommentVNode, VNode } from 'vue'\nimport { AnyFunction, VcComponentInternalInstance } from 'casc-cesium-utils/types'\nimport { useLocale } from 'casc-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-08-19 22:22:56\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\print\\defaultProps.ts\n */\nimport { positionProps } from 'casc-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  screenshotName: String,\n  customClass: {\n    type: String,\n    default: ''\n  },\n  teleportToViewer: {\n    type: Boolean,\n    default: true\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-04-06 16:01:23\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\print\\printWindow.ts\n */\nimport defer from 'casc-cesium-utils/defer'\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 deferred = 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 { CSSProperties, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, nextTick, ref, h, watch, reactive } from 'vue'\nimport type { VcPrintEvt, VcComponentInternalInstance, VcReadyObject, VcComponentPublicInstance } from 'casc-cesium-utils/types'\nimport { $, getVcParentInstance, getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport { captureScreenshot } from 'casc-cesium-utils/cesium-helpers'\nimport type { VcTooltipRef, VcBtnRef } from 'casc-cesium-components/ui'\nimport { VcBtn, VcTooltip, VcIcon, VcTooltipProps } from 'casc-cesium-components/ui'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport createPrintView from './createPrintView'\nimport defaultProps from './defaultProps'\nimport printWindow from './printWindow'\nimport { isPlainObject } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-cesium-utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  printEvt: (evt: VcPrintEvt) => true\n}\n\nexport const printProps = defaultProps\nexport default defineComponent({\n  name: 'VcPrint',\n  props: printProps,\n  emits: emits,\n  setup(props: VcPrintProps, 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)\n    const tooltipRef = ref<VcTooltipRef>(null)\n    const btnRef = ref<VcBtnRef>(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 && props.teleportToViewer) {\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 (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\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\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 = props.screenshotName || t('vc.navigation.print.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              .catch(e => {\n                commonState.logger.warn(e)\n              })\n              .then(() => {\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} ${props.customClass}`,\n            style: rootStyle\n          },\n          child\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\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   * The screenshot name.\n   */\n  screenshotName?: string\n  /**\n   * Specify the customClass of the vc-print.\n   */\n  customClass?: string\n  /**\n   * Specify whether to add to the cesium-viewer node.\n   * Default value: true\n   */\n  teleportToViewer?: boolean\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 component load failed.\n   */\n  onUnready?: (e: any) => 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\nexport type VcPrintRef = VcComponentPublicInstance<VcPrintProps>\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 'casc-cesium-composables/private/use-position'\nimport type { VcColor } from 'casc-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<unknown> as PropType<[number, number, number]>,\n    default: () => [0, 0, 3000]\n  },\n  customAPI: Function as PropType<(errorCallback) => { lng: number; lat: number }>,\n  description: Function as PropType<(position, detail) => string>,\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 as PropType<'bars' | 'ios' | 'orbit' | 'oval' | 'puff' | 'tail'>,\n    default: 'puff'\n  },\n  customClass: {\n    type: String,\n    default: ''\n  },\n  teleportToViewer: {\n    type: Boolean,\n    default: true\n  }\n}\n","import AMapLoader from '@amap/amap-jsapi-loader'\nimport type { 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 'casc-cesium-components/ui'\nimport type { VcTooltipRef, VcBtnRef } from 'casc-cesium-components/ui'\nimport type { VcLocationEvt, VcColor, VcComponentInternalInstance, VcReadyObject, VcComponentPublicInstance } from 'casc-cesium-utils/types'\nimport { $, getVcParentInstance, getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport { gcj02towgs84 } from 'casc-cesium-utils/coordtransform'\nimport { makeColor, makeCartesian3 } from 'casc-cesium-utils/cesium-helpers'\nimport { isArray, isFunction, isPlainObject } from 'casc-cesium-utils/util'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport defaultProps from './defaultProps'\nimport { commonEmits } from 'casc-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: VcMyLocationProps, 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)\n    const tooltipRef = ref<VcTooltipRef>(null)\n    const btnRef = ref<VcBtnRef>(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 && props.teleportToViewer) {\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 (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\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\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(this, 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} ${props.customClass}`,\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\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  /**\n   * Specify the spinner style of the positioning transition\n   */\n  loadingType?: 'bars' | 'ios' | 'orbit' | 'oval' | 'puff' | 'tail'\n  /**\n   * Specify the customClass of the vc-my-location.\n   */\n  customClass?: string\n  /**\n   * Specify whether to add to the cesium-viewer node.\n   * Default value: true\n   */\n  teleportToViewer?: boolean\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 component load failed.\n   */\n  onUnready?: (e: any) => 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\nexport type VcMyLocationRef = VcComponentPublicInstance<VcMyLocationProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-05-06 13:58:28\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 decimal = defaultValue(optionsDefaulted.decimal, 5)\n\n  if (optionsDefaulted.rangeType === 0) {\n    result.latitude = Math.abs(latitude).toFixed(decimal) + '°' + (latitude < 0.0 ? 'S' : 'N')\n    result.longitude = Math.abs(longitude).toFixed(decimal) + '°' + (longitude < 0.0 ? 'W' : 'E')\n  } else if (optionsDefaulted.rangeType === 1) {\n    result.latitude = latitude.toFixed(decimal) + '°'\n    result.longitude = longitude.toFixed(decimal) + '°'\n  } else if (optionsDefaulted.rangeType === 2) {\n    result.latitude = latitude.toFixed(decimal) + '°'\n    result.longitude = (longitude < 0 ? 360 + longitude : longitude).toFixed(decimal) + '°'\n  }\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\nasync function getHeightData(model) {\n  const { defined } = Cesium\n  if (!defined(model.data)) {\n    model.data = loadArrayBuffer(model.gridFileUrl)\n  }\n  let data = model.data\n  if (model.data instanceof Promise) {\n    data = await model.data\n  }\n\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\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  decimal: number\n  rangeType: number\n}\ninterface MouseCoordsOption {\n  gridFileUrl: string\n  proj4Projection: string\n  projectionUnits: string\n  proj4longlat: string\n  decimal: number\n  rangeType: number\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    this.decimal = options.decimal || 5\n    this.rangeType = options.rangeType || 0\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      decimal: this.decimal,\n      rangeType: this.rangeType\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 = Promise.all([geoidHeightPromise, terrainPromise])\n      .then(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      .catch(() => {\n        this.tileRequestInFlight = undefined\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-05-06 13:59:50\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 as PropType<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'>,\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 as PropType<unknown> as PropType<[number, number]>,\n    validator: v => v.length === 2\n  },\n  color: {\n    type: String,\n    default: '#fff'\n  },\n  decimal: {\n    type: Number,\n    default: 6\n  },\n  rangeType: {\n    type: Number,\n    default: 0\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  customClass: {\n    type: String,\n    default: ''\n  },\n  teleportToViewer: {\n    type: Boolean,\n    default: true\n  }\n}\n","import type { VNode, CSSProperties } from 'vue'\nimport { defineComponent, getCurrentInstance, nextTick, ref, reactive, h, createCommentVNode, watch } from 'vue'\nimport { $, getInstanceListener, getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport type { VcStatusBarEvt, VcComponentInternalInstance, VcReadyObject, VcComponentPublicInstance } from 'casc-cesium-utils/types'\nimport MouseCoords, { extendForMouseCoords } from './MouseCoords'\nimport throttle from 'casc-cesium-utils/private/throttle'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport type { VcBtnRef, VcTooltipRef } from 'casc-cesium-components/ui'\nimport { VcBtn, VcTooltip, VcTooltipProps } from 'casc-cesium-components/ui'\nimport defaultProps from './defaultProps'\nimport { isPlainObject } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport { heightToLevel } from 'casc-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: VcStatusBarProps, 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<VcBtnRef>(null)\n    const tooltipRef = ref<VcTooltipRef>(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          decimal: props.decimal,\n          rangeType: props.rangeType\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 && props.teleportToViewer) {\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\n      if (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\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\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, SceneMode } = Cesium\n      const { viewer } = $services\n\n      if (viewer.scene.mode === SceneMode.MORPHING) return\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, {\n      getMouseCoordsInfo: () => mouseCoordsInfo.value,\n      getCameraInfo: () => cameraInfo,\n      getPerformanceInfo: () => performanceInfo\n    })\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} ${props.customClass}`,\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\nexport type VcStatusBarEmits = typeof emits\n\nexport interface 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 latitude and longitude display range. 0: 0-180, distinguish between East and West; 1: -180-180; 2: 0-360.\n   * Default value: 1\n   */\n  rangeType?: number\n  /**\n   * Specify the number of decimal places for latitude and longitude.\n   * Default value: 5\n   */\n  decimal?: number\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   * Specify the customClass of the vc-status-bar.\n   */\n  customClass?: string\n  /**\n   * Specify whether to add to the cesium-viewer node.\n   * Default value: true\n   */\n  teleportToViewer?: boolean\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 component load failed.\n   */\n  onUnready?: (e: any) => 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\nexport interface VcStatusBarRef extends VcComponentPublicInstance<VcStatusBarProps> {\n  /**\n   * Get the mouseCoords info.\n   */\n  getMouseCoordsInfo: () => MouseCoords\n  /**\n   * Get the camera info.\n   */\n  getCameraInfo: () => {\n    heading: string\n    pitch: string\n    roll: string\n    height: string\n    level: string\n  }\n  /**\n   * Get the performance info.\n   */\n  getPerformanceInfo: () => { fps: string; ms: string }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-08-19 22:38:20\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\distance-legend\\defaultProps.ts\n */\nimport type { PropType } from 'vue'\n\nexport default {\n  position: {\n    type: String as PropType<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'>,\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 as PropType<unknown> as PropType<[number, number]>,\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  customClass: {\n    type: String,\n    default: ''\n  },\n  teleportToViewer: {\n    type: Boolean,\n    default: true\n  }\n}\n","import type { CSSProperties } from 'vue'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, h, nextTick, reactive, ref, watch } from 'vue'\nimport { $, getInstanceListener, getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport type { VcDistanceLegendEvt, VcComponentInternalInstance, VcReadyObject, VcComponentPublicInstance } from 'casc-cesium-utils/types'\nimport throttle from 'casc-cesium-utils/private/throttle'\nimport { useCommon } from 'casc-cesium-composables'\nimport defaultProps from './defaultProps'\nimport { VcBtn } from 'casc-cesium-components/ui'\nimport type { VcBtnRef } from 'casc-cesium-components/ui'\nimport { commonEmits } from 'casc-cesium-utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  distanceLegendEvt: (evt: VcDistanceLegendEvt) => true\n}\n\nexport const distanceLegendProps = defaultProps\nexport default defineComponent({\n  name: 'VcDistanceLegend',\n  props: distanceLegendProps,\n  emits: emits,\n  setup(props: VcDistanceLegendProps, 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<VcBtnRef>(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          if (!hasVcNavigation && props.teleportToViewer) {\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      if (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\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\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} ${props.customClass}`,\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\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   * Specify the customClass of the vc-distance-legend.\n   */\n  customClass?: string\n  /**\n   * Specify whether to add to the cesium-viewer node.\n   * Default value: true\n   */\n  teleportToViewer?: boolean\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 component load failed.\n   */\n  onUnready?: (e: any) => 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\nexport type VcDistanceLegendRef = VcComponentPublicInstance<VcDistanceLegendProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-08-19 22:40:04\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\navigation\\defaultProps.ts\n */\nimport { positionProps } from 'casc-cesium-composables/private/use-position'\nimport { getDefaultOptionByProps } from 'casc-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  customClass: {\n    type: String,\n    default: ''\n  },\n  teleportToViewer: {\n    type: Boolean,\n    default: true\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-08-19 22:42:25\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\navigation\\index.ts\n */\nimport type { 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  VcComponentPublicInstance\n} from 'casc-cesium-utils/types'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport { $, getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { hMergeSlot } from 'casc-cesium-utils/private/render'\nimport { defaultProps, defaultOptions, VcNavigationOtherOpts } from './defaultProps'\nimport { useCommon } from 'casc-cesium-composables'\nimport VcDistanceLegend from '../distance-legend'\nimport VcStatusBar from '../status-bar'\nimport VcZoomControl from '../zoom-control'\nimport VcMyLocation from '../my-location'\nimport VcCompass from '../compass'\nimport VcPrint from '../print'\nimport type { VcPrintProps, VcPrintRef } from '../print'\nimport type { VcCompassProps, VcCompassRef } from '../compass'\nimport type { VcMyLocationProps, VcMyLocationRef } from '../my-location'\nimport type { VcZoomControlProps, VcZoomControlRef } from '../zoom-control'\nimport type { VcStatusBarRef } from '../status-bar'\nimport type { VcDistanceLegendRef } from '../distance-legend'\nimport { commonEmits } from 'casc-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: VcNavigationProps, 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<VcCompassRef>(null)\n    const zoomControlRef = ref<VcZoomControlRef>(null)\n    const printRef = ref<VcPrintRef>(null)\n    const myLocationRef = ref<VcMyLocationRef>(null)\n    const statusBarRef = ref<VcStatusBarRef>(null)\n    const distanceLegendRef = ref<VcDistanceLegendRef>(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          if (props.teleportToViewer) {\n            viewerElement.appendChild($(rootRef))\n            $(secondRootRef) && viewerElement.appendChild($(secondRootRef))\n          }\n\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 (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\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, { 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 (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\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\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} ${props.customClass}`,\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\nexport interface 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   * Specify the customClass of the vc-navigation.\n   */\n  customClass?: string\n  /**\n   * Specify whether to add to the cesium-viewer node.\n   * Default value: true\n   */\n  teleportToViewer?: boolean\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 component load failed.\n   */\n  onUnready?: (e: any) => 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\nexport type VcNavigationRef = VcComponentPublicInstance<VcNavigationProps>\n","import { ref } from 'vue'\nimport type { AnyFunction, VcComponentInternalInstance } from 'casc-cesium-utils/types'\nimport CameraFlightPath from '../compass/CameraFlightPath'\nimport { getInstanceListener, $ } from 'casc-cesium-utils/private/vm'\nimport type { VcTooltipRef } from 'casc-cesium-components/ui'\nimport { isObject } from 'casc-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<VcTooltipRef>(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 { VNode, CSSProperties, PropType } from 'vue'\nimport { defineComponent, getCurrentInstance, ref, computed, nextTick, watch, reactive, createCommentVNode, h } from 'vue'\nimport usePosition, { positionProps } from 'casc-cesium-composables/private/use-position'\nimport type { VcCompassEvt, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { $, getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport { hMergeSlot } from 'casc-cesium-utils/private/render'\nimport { VcTooltip, VcTooltipProps } from 'casc-cesium-components/ui'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport useCompass from './use-compass'\nimport { commonEmits } from 'casc-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: VcCompassSmProps, 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)\n    const outerRingRef = ref<HTMLElement>(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\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 component load failed.\n   */\n  onUnready?: (e: any) => 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\nexport type VcCompassSmRef = VcComponentPublicInstance<VcCompassSmProps>\n","import type { AnyFunction, VcComponentInternalInstance, VcViewerProvider } from 'casc-cesium-utils/types'\nimport { $, getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { ref } from 'vue'\nimport type { VcTooltipRef } from 'casc-cesium-components/ui'\nimport { isObject } from 'casc-cesium-utils/util'\n\nexport default function (props, { emit }, vcInstance: VcComponentInternalInstance, $services: VcViewerProvider) {\n  // state\n  const zoombarTop = ref(65)\n  const zoomInTooltipRef = ref<VcTooltipRef>(null)\n  const zoomOutTooltipRef = ref<VcTooltipRef>(null)\n  const zoomBarTooltipRef = ref<VcTooltipRef>(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 { VNode, CSSProperties } from 'vue'\nimport { computed, defineComponent, getCurrentInstance, nextTick, ref, createCommentVNode, h, reactive, watch } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcZoomEvt } from 'casc-cesium-utils/types'\nimport usePosition, { positionProps } from 'casc-cesium-composables/private/use-position'\nimport { $, getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport { hMergeSlot } from 'casc-cesium-utils/private/render'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport useZoomControl from './use-zoom-control'\nimport { VcTooltip, VcTooltipProps } from 'casc-cesium-components/ui'\nimport { isObject } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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)\n    const zoomInRef = ref<HTMLElement>(null)\n    const zoomBarRef = ref<HTMLElement>(null)\n    const zoomOutRef = ref<HTMLElement>(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\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\nexport type VcZoomControlSmRef = VcComponentPublicInstance<VcZoomControlSmProps>\n","import type { CSSProperties, VNode, PropType } from 'vue'\nimport { defineComponent, getCurrentInstance, watch, nextTick, ref, reactive, h, createCommentVNode, computed } from 'vue'\nimport type { VcCompassEvt, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject, VcZoomEvt } from 'casc-cesium-utils/types'\nimport usePosition, { positionProps } from 'casc-cesium-composables/private/use-position'\nimport { $, getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { hMergeSlot } from 'casc-cesium-utils/private/render'\nimport { useCommon } from 'casc-cesium-composables'\nimport VcCompassSm from './compass-sm'\nimport VcZoomControlSm from './zoom-control-sm'\nimport type { VcZoomControlSmProps, VcZoomControlSmRef } from './zoom-control-sm'\nimport type { VcCompassSmProps, VcCompassSmRef } from './compass-sm'\nimport { commonEmits } from 'casc-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: VcNavigationSmProps, 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)\n    const compassRef = ref<VcCompassSmRef>(null)\n    const zoomControlRef = ref<VcZoomControlSmRef>(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\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 component load failed.\n   */\n  onUnready?: (e: any) => 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\nexport type VcNavigationSmRef = VcComponentPublicInstance<VcNavigationSmProps>\n","import type { VNode, WatchStopHandle, CSSProperties, PropType } from 'vue'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport { VcBtn, VcBtnRef, VcTooltip, VcTooltipRef } from 'casc-cesium-components/ui'\nimport { $ } from 'casc-cesium-utils/private/vm'\nimport type { VcBtnTooltipProps, VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, reactive, ref } from 'vue'\nimport VcViewer, { VcViewerProps, VcViewerRef } from 'casc-cesium-components/viewer'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport { makeColor } from 'casc-cesium-utils/cesium-helpers'\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>\n  },\n  viewerOpts: {\n    type: Object as PropType<VcViewerProps>\n  },\n  centerRectColor: {\n    type: [Object, Array, String] as PropType<VcColor>,\n    default: '#ff000080'\n  },\n  widthFactor: {\n    type: Number,\n    default: 2\n  },\n  heightFactor: {\n    type: Number,\n    default: 2\n  },\n  modelValue: {\n    type: Boolean,\n    default: true\n  }\n}\nexport default defineComponent({\n  name: 'VcOverviewMap',\n  props: overviewProps,\n  emits: {\n    ...commonEmits,\n    'update:modelValue': (value: boolean) => true\n  },\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)\n    const toggleBtnRef = ref<VcBtnRef>(null)\n    const rootStyle = reactive<CSSProperties>({})\n    const tooltipRef = ref<VcTooltipRef>(null)\n    const viewerRef = ref<VcViewerRef>(null)\n    const positionState = usePosition(props, $services)\n    const showing = ref(props.modelValue)\n    let unwatchFns: Array<WatchStopHandle> = []\n    let overviewViewer: Cesium.Viewer\n    let centerRect: Cesium.ViewportQuad\n\n    // computed\n    const toggleOpts = computed(() => {\n      return Object.assign(\n        {},\n        {\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          } as any\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          containerId: 'vc-overview-map'\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      if (overviewViewer) {\n        const { viewer: parentViewer } = $services\n        const parentCameraRectangle = parentViewer.camera.computeViewRectangle()\n        const { defined } = Cesium\n        if (!defined(parentCameraRectangle)) {\n          return\n        }\n        const rectangle = parentCameraRectangle.expand(props.widthFactor, props.heightFactor)\n\n        overviewViewer.camera.flyTo({\n          destination: rectangle.clone(),\n          // destination: parentViewer.camera.position,\n          orientation: {\n            heading: parentViewer.camera.heading,\n            pitch: parentViewer.camera.pitch,\n            roll: parentViewer.camera.roll\n          },\n          duration: 0.0\n        })\n        const { Cartesian3, SceneTransforms } = Cesium\n        const wnPosition = Cartesian3.fromRadians(parentCameraRectangle.west, parentCameraRectangle.north)\n        const enPosition = Cartesian3.fromRadians(parentCameraRectangle.east, parentCameraRectangle.north)\n        const wsPosition = Cartesian3.fromRadians(parentCameraRectangle.west, parentCameraRectangle.south)\n        const esPosition = Cartesian3.fromRadians(parentCameraRectangle.east, parentCameraRectangle.south)\n        const scene = overviewViewer.scene\n        const wnWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, wnPosition)\n        const enWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, enPosition)\n        const wsWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, wsPosition)\n        const esWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, esPosition)\n\n        if (!defined(wnWindowPosition) || !defined(enWindowPosition) || !defined(wsWindowPosition) || !defined(esWindowPosition)) {\n          return\n        }\n\n        const width = enWindowPosition.x - wnWindowPosition.x\n        const height = wsWindowPosition.y - wnWindowPosition.y\n        const x = (wnWindowPosition.x + enWindowPosition.x) / 2 - width / 2\n        const y = (wnWindowPosition.y + wsWindowPosition.y) / 2 - height / 2\n\n        if (width <= 0 || height <= 0) {\n          return\n        }\n        const boundingRectangle = new Cesium.BoundingRectangle(x, y, width, height)\n        centerRect.rectangle = boundingRectangle\n        centerRect.material.uniforms.color = makeColor(props.centerRectColor)\n        centerRect.show = true\n      }\n    }\n\n    const onViewerReady = (readyObj: VcReadyObject) => {\n      const { viewer } = readyObj\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      overviewViewer.scene.highDynamicRange = false\n      overviewViewer.scene.globe.enableLighting = false\n      overviewViewer.scene.globe.showWaterEffect = false\n      overviewViewer.scene.globe.depthTestAgainstTerrain = false\n      overviewViewer.scene.skyAtmosphere.show = false\n      overviewViewer.scene.fog.enabled = false\n      overviewViewer.scene.skyBox.show = false\n      overviewViewer.scene.sun.show = false\n      overviewViewer.scene.moon.show = false\n      overviewViewer.scene.highDynamicRange = false\n      overviewViewer.scene.globe.showGroundAtmosphere = false\n\n      centerRect = new Cesium.ViewportQuad(new Cesium.BoundingRectangle(150, 100, 100, 50))\n      centerRect.show = false\n      overviewViewer.scene.primitives.add(centerRect)\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['pointer-events'] = 'none'\n\n      css.borderRadius = props.borderRadius\n      css.border = props.border\n\n      if (showing.value) {\n        css.width = props.width\n        css.height = props.height\n      } else {\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        css.width = `${parseFloat(toggleBtnRefStyle.width) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n        css.height = `${parseFloat(toggleBtnRefStyle.height) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n      }\n      Object.assign(rootStyle, css)\n    }\n\n    // const onTooltipBeforeShow = () => {\n\n    // }\n\n    const onToggle = () => {\n      if (showing.value) {\n        minimize()\n      } else {\n        restore()\n      }\n      showing.value = !showing.value\n      ctx.emit('update:modelValue', showing.value)\n    }\n\n    const minimize = () => {\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    }\n\n    const restore = () => {\n      rootStyle.width = props.width\n      rootStyle.height = props.height\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 + (!showing.value ? ' 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, 'pointer-events': 'auto' },\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.${!showing.value ? '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\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\n  /**\n   * Specify the vc-viewer component options in the overviewmap component.\n   */\n  viewerOpts?: VcViewerProps\n  /**\n   * Specify the center rectangle color.\n   * Default value: #ff000080\n   */\n  centerRectColor?: VcColor\n  /**\n   * Specify the width factor of center rectangle.\n   * Default value: 2\n   */\n  widthFactor?: number\n  /**\n   * Specify the height factor of center rectangle.\n   * Default value: 2\n   */\n  heightFactor?: number\n  /**\n   * Model of the component determining if VcOverviewMap should be expanded or not.\n   * Default value: true\n   */\n  modelValue?: boolean\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 component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcOverviewMap is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\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\nexport interface VcOverviewMapSlots {\n  /**\n   * Default slot content of the component\n   */\n  default: () => VNode[]\n}\n\nexport type VcOverviewMapRef = VcComponentPublicInstance<VcOverviewMapProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-09-10 21:29:53\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\selection-indicator\\Feature.ts\n */\n\nimport { makeCartesian3 } from 'casc-cesium-utils/cesium-helpers'\nimport type { VcCesiumObject } from 'casc-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      let position = pickedFeature.content.tile.boundingSphere.center\n      let positionProperty = pickedFeature?.getProperty?.('position')\n      if (Cesium.defined(positionProperty)) {\n        if (typeof positionProperty === 'string') {\n          positionProperty = JSON.parse(positionProperty)\n        }\n\n        position = makeCartesian3(positionProperty) as Cesium.Cartesian3\n      }\n      feature.position = position\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    feature.description = cesiumObject?.description || cesiumObject?.description?.getValue()\n    feature.properties = cesiumObject?.properties || cesiumObject?.properties?.getValue() || cesiumObject?.feature?.properties\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 'casc-cesium-utils/types'\nimport { CSSProperties, nextTick, onUnmounted, reactive, ref, watch, WatchStopHandle } from 'vue'\nimport Feature from './Feature'\nimport PickedFeatures from './PickedFeatures'\nimport { isArray } from 'casc-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<PickedFeatures>(null)\n  const selectedFeature = ref<Feature | Cesium.Entity>(null)\n  let unwatchFns: Array<WatchStopHandle> = []\n  let isCluster = false\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              if (isCluster) {\n                if (selectedFeature.value instanceof Feature && selectedFeature.value?.pickedFeature?.primitive?.position) {\n                  selectedFeature.value.position = selectedFeature.value.pickedFeature.primitive.position\n                }\n              }\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 } = Cesium\n    ignoreSplitter = defaultValue(ignoreSplitter, false)\n    const result = new PickedFeatures()\n\n    result.providerCoords = providerCoords\n    result.pickPosition = pickPosition\n\n    result.allFeaturesAvailablePromise = Promise.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      .catch(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            isCluster = true\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            isCluster = false\n            continue\n          } else {\n            isCluster = false\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: Cesium.Cartesian3, result: Cesium.Cartesian2) => {\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    position,\n    computeScreenSpacePosition,\n    update,\n    animateAppear,\n    animateDepart,\n    getPickedFeatures: () => pickedFeatures\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-03-05 11:22:33\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\selection-indicator\\index.ts\n */\nimport type { Ref } from 'vue'\nimport { useCommon } from 'casc-cesium-composables'\nimport { $ } from 'casc-cesium-utils/private/vm'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, h } from 'vue'\nimport useSelectionIndicatior from './use-selection-indicatior'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport type Feature from './Feature'\nimport type PickedFeatures from './PickedFeatures'\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 | Cesium.Entity) => true\n}\nexport default defineComponent({\n  name: 'VcSelectionIndicator',\n  props: selectionIndicatorProps,\n  emits: emits,\n  setup(props: VcSelectionIndicatorProps, 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\nexport type VcSelectionIndicatorEmits = typeof emits\nexport interface 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 component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcSelectionIndicator is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport interface VcSelectionIndicatorRef extends VcComponentPublicInstance<VcSelectionIndicatorProps> {\n  /**\n   * A function that converts the world position of an object to a screen space position.\n   */\n  computeScreenSpacePosition: (position: Cesium.Cartesian3, result: Cesium.Cartesian2) => Cesium.Cartesian2\n  /**\n   * Updates the view of the selection indicator to match the position and content properties of the view model. This function should be called as part of the render loop.\n   */\n  update: () => void\n  /**\n   * Animate the indicator to draw attention to the selection.\n   */\n  animateAppear: () => void\n  /**\n   * Animate the indicator to release the selection.\n   */\n  animateDepart: () => void\n  /**\n   * Get the picked features.\n   */\n  getPickedFeatures: () => PickedFeatures\n  /**\n   * Get or set the selected feature.\n   */\n  selectedFeature: Feature | Cesium.Entity\n  /**\n   * Gets or sets the world position of the object for which to display the selection indicator.\n   */\n  position: Ref<Cesium.Cartesian3>\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-04-12 17:37:31\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 'casc-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 './navigation-sm/zoom-control-sm'\nexport * from './navigation-sm/compass-sm'\nexport * from './print'\nexport * from './selection-indicator'\nexport * from './status-bar'\nexport * from './vc-overview-map'\nexport * from './zoom-control'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-18 13:48:30\n * @LastEditTime: 2022-05-18 22:35:00\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\defaultOpts.ts\n */\n\nimport type { VcGeometryPolylineProps } from 'casc-cesium-components/geometries'\nimport type { VcBillboardProps, VcLabelProps, VcPointProps, VcPolygonProps } from 'casc-cesium-components/primitive-collections'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from 'casc-cesium-components/primitives'\nimport type { VcDrawingOpts } from 'casc-cesium-utils/drawing-types'\nimport type { VcActionTooltipProps, VcBtnTooltipProps } from 'casc-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  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: false,\n  showLabel: false,\n  labelOpts: Object.assign({}, labelOptsDefault, {\n    horizontalOrigin: 1, // left\n    verticalOrigin: 0, // center\n    pixelOffset: [10, 0]\n  })\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: false\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: false,\n  showLabel: false,\n  showAngleLabel: false,\n  showDistanceLabel: false,\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}\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  showDistanceLabel: false,\n  showLabel: false,\n  showAngleLabel: false,\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}\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  loop: false,\n  disableDepthTest: false,\n  showLabel: false,\n  showAngleLabel: false,\n  showDistanceLabel: false,\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    text: '1dsa'\n  })\n})\n\nconst circleDrawingDefault: VcDrawingOpts = Object.assign({}, rectangleDrawingDefault, {\n  edge: 360\n})\n\nconst regularDrawingDefault: VcDrawingOpts = Object.assign({}, rectangleDrawingDefault, {\n  edge: 6,\n  loop: true\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-03-10 00:50:43\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\props.ts\n */\n\nimport type { VcPointProps } from 'casc-cesium-components/primitive-collections'\nimport { enableMouseEvent, show } from 'casc-cesium-utils/cesium-props'\nimport type { VcDrawTipOpts, VcEditorOpts, VcDrawingPreRenderDatas } from 'casc-cesium-utils/drawing-types'\nimport type { VcActionTooltipProps } from 'casc-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  disableDepthTest: Boolean\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 as PropType<unknown> as PropType<[number, number]>,\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-06-24 16:56:16\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\defaultProps.ts\n */\nimport { getDefaultOptionByProps } from 'casc-cesium-utils/util'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from 'casc-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 'casc-cesium-composables/use-drawing/defaultOpts'\nimport { useDrawingFabProps } from 'casc-cesium-composables/use-drawing/props'\nimport type { VcFabProps } from '../../ui'\nimport type { VcActionTooltipProps, VcComponentInternalInstance, VcReadyObject } from 'casc-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  VcPointDrawing,\n  VcPolylineDrawing,\n  VcPolylineMeasurementOpts,\n  VcRegularMeasurementOpts,\n  VcSegmentDrawing\n} from 'casc-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  autoUpdateLabelPosition: true\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  showLabel: true,\n  showAngleLabel: true,\n  showDistanceLabel: true,\n  locale: undefined,\n  loop: false,\n  autoUpdateLabelPosition: true\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  autoUpdateLabelPosition: true\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  showLabel: true,\n  measureUnits: new MeasureUnits(),\n  decimals: {\n    area: 2,\n    distance: 2,\n    angle: 2\n  },\n  loop: true,\n  locale: undefined,\n  autoUpdateLabelPosition: true\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  showLabel: true\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\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 component load failed.\n   */\n  onUnready?: (e: any) => 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<VcPolylineDrawing | VcSegmentDrawing | VcPointDrawing>, 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 { CSSProperties, TeleportProps, PropType, WatchStopHandle, VNode } from 'vue'\nimport { defineComponent, getCurrentInstance, ref, h, reactive, createCommentVNode, watch, onUnmounted } from 'vue'\nimport type { VcCartesian2, VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { $ } from 'casc-cesium-utils/private/vm'\nimport { useCommon } from 'casc-cesium-composables'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { position, pixelOffset, show } from 'casc-cesium-utils/cesium-props'\nimport { makeCartesian2, makeCartesian3 } from 'casc-cesium-utils/cesium-helpers'\nimport usePortal from 'casc-cesium-composables/private/use-portal'\nimport { commonEmits } from 'casc-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: VcOverlayHtmlProps, 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\n    unwatchFns.push(\n      watch(\n        () => props.show,\n        val => {\n          rootStyle.display = val ? 'block' : 'none'\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 VcOverlayHtmlEmits = typeof emits\nexport interface VcOverlayHtmlProps {\n  /**\n   * Specify the geographic location of the HTML element.\n   */\n  position?: VcPosition\n  /**\n   * Specify the pixel offset of the HTML.\n   */\n  pixelOffset?: VcCartesian2\n  /**\n   * Specify whether to display the HTML overlay.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specifies whether HTML is automatically hidden when it is on the back of the earth.\n   * Default value: true\n   */\n  autoHidden?: boolean\n  /**\n   * Specify an HTML custom class.\n   */\n  customClass?: string\n  /**\n   * Specify the teleport props.\n   */\n  teleport?: TeleportProps\n  /**\n   * Triggers before the VcOverlayHtml is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcOverlayHtml is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcOverlayHtml is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcOverlayHtmlRef = VcComponentPublicInstance<VcOverlayHtmlProps>\nexport type VcOverlayHtmlSlots = {\n  /**\n   * Slot for html element tag.\n   */\n  default: () => VNode[]\n}\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 { PropType, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type {\n  AnyObject,\n  EntityEmitType,\n  VcCallbackPropertyFunction,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcGraphics,\n  VcPickEvent,\n  VcPosition,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useCommon } from 'casc-cesium-composables/index'\nimport { position, enableMouseEvent, show, viewFrom } from 'casc-cesium-utils/cesium-props'\nimport { getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits, pickEventEmits } from 'casc-cesium-utils/emits'\nimport {\n  VcGraphicsBillboardProps,\n  VcGraphicsBoxProps,\n  VcGraphicsCorridorProps,\n  VcGraphicsCylinderProps,\n  VcGraphicsEllipseProps,\n  VcGraphicsEllipsoidProps,\n  VcGraphicsEllipsoidRef,\n  VcGraphicsLabelProps,\n  VcGraphicsModelProps,\n  VcGraphicsPathProps,\n  VcGraphicsPlaneProps,\n  VcGraphicsPointProps,\n  VcGraphicsPolygonProps,\n  VcGraphicsPolylineProps,\n  VcGraphicsPolylineVolumeProps,\n  VcGraphicsRectangleProps,\n  VcGraphicsTilesetProps,\n  VcGraphicsWallProps\n} 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] as PropType<string | Cesium.CallbackProperty | VcCallbackPropertyFunction<string>>,\n  ...position,\n  orientation: Object as PropType<Cesium.Quaternion | Cesium.VelocityOrientationProperty | Cesium.CallbackProperty>,\n  ...viewFrom,\n  parent: Object as PropType<Cesium.Entity>,\n  billboard: Object as PropType<Cesium.BillboardGraphics | VcGraphicsBillboardProps>,\n  box: Object as PropType<Cesium.BoxGraphics | VcGraphicsBoxProps>,\n  corridor: Object as PropType<Cesium.CorridorGraphics | VcGraphicsCorridorProps>,\n  cylinder: Object as PropType<Cesium.CylinderGraphics | VcGraphicsCylinderProps>,\n  ellipse: Object as PropType<Cesium.EllipseGraphics | VcGraphicsEllipseProps>,\n  ellipsoid: Object as PropType<Cesium.EllipsoidGraphics | VcGraphicsEllipsoidRef>,\n  label: Object as PropType<Cesium.LabelGraphics | VcGraphicsLabelProps>,\n  model: Object as PropType<Cesium.ModelGraphics | VcGraphicsModelProps>,\n  tileset: Object as PropType<Cesium.Cesium3DTilesetGraphics | VcGraphicsTilesetProps>,\n  path: Object as PropType<Cesium.PathGraphics | VcGraphicsPathProps>,\n  plane: Object as PropType<Cesium.PlaneGraphics | VcGraphicsPlaneProps>,\n  point: Object as PropType<Cesium.PointGraphics | VcGraphicsPointProps>,\n  polygon: Object as PropType<Cesium.PolygonGraphics | VcGraphicsPolygonProps>,\n  polyline: Object as PropType<Cesium.PolylineGraphics | VcGraphicsPolylineProps>,\n  properties: Object,\n  polylineVolume: Object as PropType<Cesium.PolylineVolumeGraphics | VcGraphicsPolylineVolumeProps>,\n  rectangle: Object as PropType<Cesium.RectangleGraphics | VcGraphicsRectangleProps>,\n  wall: Object as PropType<Cesium.WallGraphics | VcGraphicsWallProps>,\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 VcEntityEmits = typeof emits\n\nexport type VcEntityProps = {\n  /**\n   * A unique identifier for this object. If none is provided, a GUID is generated.\n   */\n  id?: string\n  /**\n   * A human readable name to display to users. It does not have to be unique.\n   */\n  name?: string\n  /**\n   * The availability, if any, associated with this object.\n   */\n  availability?: Cesium.TimeIntervalCollection\n  /**\n   * A boolean value indicating if the entity and its children are displayed.\n   */\n  show?: boolean\n  /**\n   * A string Property specifying an HTML description for this entity.\n   */\n  description?: string | Cesium.CallbackProperty | VcCallbackPropertyFunction<string>\n  /**\n   * A Property specifying the entity position.\n   */\n  position?: VcPosition\n  /**\n   * A Property specifying the entity orientation.\n   */\n  orientation?: Cesium.Quaternion | Cesium.VelocityOrientationProperty | Cesium.CallbackProperty\n  /**\n   * A suggested initial offset for viewing this object.\n   */\n  viewFrom?: VcPosition | Cesium.CallbackProperty\n  /**\n   * A parent entity to associate with this entity.\n   */\n  parent?: Cesium.Entity\n  /**\n   * A billboard to associate with this entity.\n   */\n  billboard?: Cesium.BillboardGraphics | VcGraphicsBillboardProps\n  /**\n   * A box to associate with this entity.\n   */\n  box?: Cesium.BoxGraphics | VcGraphicsBoxProps\n  /**\n   * A corridor to associate with this entity.\n   */\n  corridor?: Cesium.CorridorGraphics | VcGraphicsCorridorProps\n  /**\n   * A cylinder to associate with this entity.\n   */\n  cylinder?: Cesium.CylinderGraphics | VcGraphicsCylinderProps\n  /**\n   * A ellipse to associate with this entity.\n   */\n  ellipse?: Cesium.EllipseGraphics | VcGraphicsEllipseProps\n  /**\n   * A ellipsoid to associate with this entity.\n   */\n  ellipsoid?: Cesium.EllipsoidGraphics | VcGraphicsEllipsoidProps\n  /**\n   * A options.label to associate with this entity.\n   */\n  label?: Cesium.LabelGraphics | VcGraphicsLabelProps\n  /**\n   * A model to associate with this entity.\n   */\n  model?: Cesium.ModelGraphics | VcGraphicsModelProps\n  /**\n   * A 3D Tiles tileset to associate with this entity.\n   */\n  tileset?: Cesium.Cesium3DTilesetGraphics | VcGraphicsTilesetProps\n  /**\n   * A path to associate with this entity.\n   */\n  path?: Cesium.PathGraphics | VcGraphicsPathProps\n  /**\n   * A plane to associate with this entity.\n   */\n  plane?: Cesium.PlaneGraphics | VcGraphicsPlaneProps\n  /**\n   * A point to associate with this entity.\n   */\n  point?: Cesium.PointGraphics | VcGraphicsPointProps\n  /**\n   * A polygon to associate with this entity.\n   */\n  polygon?: Cesium.PolygonGraphics | VcGraphicsPolygonProps\n  /**\n   * A polyline to associate with this entity.\n   */\n  polyline?: Cesium.PolylineGraphics | VcGraphicsPolylineProps\n  /**\n   * Arbitrary properties to associate with this entity.\n   */\n  properties?: AnyObject\n  /**\n   * A polylineVolume to associate with this entity.\n   */\n  polylineVolume?: Cesium.PolylineVolumeGraphics | VcGraphicsPolylineVolumeProps\n  /**\n   * A rectangle to associate with this entity.\n   */\n  rectangle?: Cesium.RectangleGraphics | VcGraphicsRectangleProps\n  /**\n   * A wall to associate with this entity.\n   */\n  wall?: Cesium.WallGraphics | VcGraphicsWallProps\n  /**\n   * Triggers before the VcEntity is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcEntity is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcEntity 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   * Triggers when the mouse is pressed on this entity.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this entity.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this entity.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this entity.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this entity.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this entity.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this entity.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this entity.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n}\nexport interface VcEntityRef extends VcComponentPublicInstance<VcEntityProps> {\n  /**\n   * private method, update graphic.\n   * @param graphics\n   * @param type\n   */\n  __updateGraphics: (graphics: VcGraphics | undefined, type: EntityEmitType) => boolean\n}\n\nexport interface VcEntitySlots {\n  /**\n   * Slot for vc-graphics-xxx.\n   */\n  default: () => VNode[]\n}\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 'casc-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 'casc-cesium-utils/cesium-props'\nimport type { AnyFunction, VcImageryProvider } from 'casc-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-08-03 09:42:07\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\10_vue-cesium\\packages\\components\\imagery-layer\\src\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, VNode } from 'vue'\nimport type {\n  AnyFunction,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcImageryProvider,\n  VcReadyObject,\n  VcRectangle\n} from 'casc-cesium-utils/types'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { useCommon } from 'casc-cesium-composables'\nimport defaultProps from './defaultProps'\nimport { getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { isUndefined, kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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\nexport type LayerPropCallback = (frameState: any, layer: Cesium.ImageryLayer, x: number, y: number, level: number) => number\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 | LayerPropCallback\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 | LayerPropCallback\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 | LayerPropCallback\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 | LayerPropCallback\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 | LayerPropCallback\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 | LayerPropCallback\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 | LayerPropCallback\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 | LayerPropCallback\n  /**\n   * The SplitDirection split to apply to this layer.\n   */\n  splitDirection?: number | Cesium.SplitDirection | AnyFunction<number | Cesium.SplitDirection>\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 component load failed.\n   */\n  onUnready?: (e: any) => 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\nexport interface VcLayerImageryRef extends VcComponentPublicInstance<VcLayerImageryProps> {\n  /**\n   * private but needed by VcProviderXXX\n   * @param provider\n   */\n  __updateProvider?(provider: VcImageryProvider | undefined): boolean\n}\n\nexport interface VcLayerImagerySlots {\n  /**\n   * Slot for vc-imagery-provider-xxx.\n   */\n  default: () => 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:37\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\imagery-layer\\index.ts\n */\nimport { SFCWithInstall } from 'casc-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-03-28 09:13:23\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitives\\classification\\index.ts\n */\nimport type { ExtractPropTypes, Ref, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type {\n  VcAppearance,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcPickEvent,\n  VcPrimitive,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { usePrimitives } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { primitiveEmits } from 'casc-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 = {\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   * 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   * Default value: true\n   */\n  compressVertices?: 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   */\n  classificationType?: Cesium.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 for the volumes to be created before the geometry is released or options.releaseGeometryInstance must be false.\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 load failed.\n   */\n  onUnready?: (e: any) => 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  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this primitive.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this primitive.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this primitive.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this primitive.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this primitive.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this primitive.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this primitive.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the primitive is ready to render.\n   */\n  onReadyPromise?: (primitive: Cesium.ClassificationPrimitive, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n  'onUpdate:geometryInstances'?: (instances: Array<Cesium.GeometryInstance>) => void\n}\n\nexport interface VcPrimitiveClassificationRef extends VcComponentPublicInstance<VcPrimitiveClassificationProps> {\n  /**\n   * private but needed by VcGeometryInstance\n   * @param geometryInstance\n   * @param index\n   */\n  __updateGeometryInstances?(geometryInstance: Cesium.GeometryInstance, index: number): boolean\n  /**\n   * private but needed by VcGeometryInstance\n   * @param geometryInstance\n   */\n  __removeGeometryInstances?(geometryInstance: Cesium.GeometryInstance): boolean\n  /**\n   * private but needed by VcGeometryInstance\n   */\n  __childCount?: Ref<number>\n}\n\nexport interface VcPrimitiveClassificationSlots {\n  /**\n   * Slot for vc-geometry-instance.\n   */\n  default: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 14:59:37\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitives\\ground\\index.ts\n */\nimport type { Ref, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { VcAppearance, VcComponentInternalInstance, VcComponentPublicInstance, VcPickEvent, VcReadyObject } from 'casc-cesium-utils/types'\nimport { usePrimitives } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { primitiveEmits } from 'casc-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 = {\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   * Determines if this primitive will be shown.\n   * Default value: true\n   */\n  show?: boolean\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   * Default value: true\n   */\n  compressVertices?: 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   */\n  classificationType?: Cesium.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 for the volumes to be created before the geometry is released or options.releaseGeometryInstance must be false.\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 load failed.\n   */\n  onUnready?: (e: any) => 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  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this primitive.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this primitive.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this primitive.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this primitive.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this primitive.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this primitive.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this primitive.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the primitive is ready to render.\n   */\n  onReadyPromise?: (primitive: Cesium.ClassificationPrimitive, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n  'onUpdate:geometryInstances'?: (instances: Array<Cesium.GeometryInstance>) => void\n}\n\nexport interface VcPrimitiveGroundRef extends VcComponentPublicInstance<VcPrimitiveGroundProps> {\n  /**\n   * private but needed by VcGeometryInstance\n   * @param geometryInstance\n   * @param index\n   */\n  __updateGeometryInstances?(geometryInstance: Cesium.GeometryInstance, index: number): boolean\n  /**\n   * private but needed by VcGeometryInstance\n   * @param geometryInstance\n   */\n  __removeGeometryInstances?(geometryInstance: Cesium.GeometryInstance): boolean\n  /**\n   * private but needed by VcGeometryInstance\n   */\n  __childCount?: Ref<number>\n}\n\nexport interface VcPrimitiveGroundSlots {\n  /**\n   * Slot for vc-geometry-instance.\n   */\n  default: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-22 13:20:52\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, Ref } from 'vue'\nimport type { VcAppearance, VcComponentInternalInstance, VcComponentPublicInstance, VcPickEvent, VcReadyObject } from 'casc-cesium-utils/types'\nimport { usePrimitives } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { primitiveEmits } from 'casc-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\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 load failed.\n   */\n  onUnready?: (e: any) => 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  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this primitive.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this primitive.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this primitive.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this primitive.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this primitive.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this primitive.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this primitive.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the primitive is ready to render.\n   */\n  onReadyPromise?: (primitive: Cesium.ClassificationPrimitive, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n  'onUpdate:geometryInstances'?: (instances: Array<Cesium.GeometryInstance>) => void\n}\n\nexport interface VcPrimitiveGroundPolylineRef extends VcComponentPublicInstance<VcPrimitiveGroundPolylineProps> {\n  /**\n   * private but needed by VcGeometryInstance\n   * @param geometryInstance\n   * @param index\n   */\n  __updateGeometryInstances?(geometryInstance: Cesium.GeometryInstance, index: number): boolean\n  /**\n   * private but needed by VcGeometryInstance\n   * @param geometryInstance\n   */\n  __removeGeometryInstances?(geometryInstance: Cesium.GeometryInstance): boolean\n  /**\n   * private but needed by VcGeometryInstance\n   */\n  __childCount?: Ref<number>\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-28 09:45:36\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitives\\model\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance, PropType, VNode } from 'vue'\nimport type {\n  VcCartesian2,\n  VcCartesian3Array,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcPickEvent,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { usePrimitives } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { primitiveEmits } from 'casc-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  showOutline: {\n    type: Boolean,\n    default: true\n  },\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 = {\n  /**\n   * The url to the .gltf file.\n   */\n  url: string | Cesium.Resource\n  /**\n   * The base path that paths in the glTF JSON are relative to.\n   */\n  basePath?: string | Cesium.Resource\n  /**\n   * Determines if the model primitive will be shown.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * The 4x4 transformation matrix that transforms the model from model to world coordinates.\n   */\n  modelMatrix: Cesium.Matrix4\n  /**\n   * A uniform scale applied to this model.\n   * Default value: 1.0\n   */\n  scale?: number\n  /**\n   * The approximate minimum pixel size of the model regardless of zoom.\n   * Default value: 0.0\n   */\n  minimumPixelSize?: number\n  /**\n   * The maximum scale for the model.\n   */\n  maximumScale?: number\n  /**\n   * A user-defined object to return when the model is picked with Scene#pick.\n   */\n  id?: any\n  /**\n   * When true, each glTF mesh and primitive is pickable with Scene#pick.\n   * Default value: true\n   */\n  allowPicking?: boolean\n  /**\n   * Determine if textures may continue to stream in after the model is loaded.\n   * Default value: true\n   */\n  incrementallyLoadTextures?: boolean\n  /**\n   * Determines if model WebGL resource creation will be spread out over several frames or block until completion once all glTF files are loaded.\n   * Default value: true\n   */\n  asynchronous?: boolean\n  /**\n   * Determines if the model's animations should hold a pose over frames where no keyframes are specified.\n   * Default value: true\n   */\n  clampAnimations?: boolean\n  /**\n   * Determines whether the model casts or receives shadows from light sources.\n   */\n  shadows?: number | Cesium.ShadowMode\n  /**\n   * For debugging only. Draws the bounding sphere for each draw command in the model.\n   * Default value: false\n   */\n  debugShowBoundingVolume?: boolean\n  /**\n   * For debugging only. Draws the model in wireframe.\n   * Default value: false\n   */\n  debugWireframe?: boolean\n  /**\n   * Determines how the model is drawn relative to terrain.\n   */\n  heightReference?: number | Cesium.HeightReference\n  /**\n   * Must be passed in for models that use the height reference property.\n   */\n  scene?: Cesium.Scene\n  /**\n   * The condition specifying at what distance from the camera that this model will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * A color that blends with the model's rendered color.\n   * Default value: white\n   */\n  color?: VcColor\n  /**\n   * Defines how the color blends with the model.\n   */\n  colorBlendMode?: number | Cesium.ColorBlendMode\n  /**\n   * Value used to determine the color strength when the colorBlendMode is MIX. A value of 0.0 results in the model's rendered color while a value of 1.0 results in a solid color, with any value in-between resulting in a mix of the two.\n   * Default value: 0.5\n   */\n  colorBlendAmount?: number\n  /**\n   * The silhouette color. If more than 256 models have silhouettes enabled, there is a small chance that overlapping models will have minor artifacts.\n   */\n  silhouetteColor?: VcColor\n  /**\n   * The size of the silhouette in pixels.\n   * Default value: 0.0\n   */\n  silhouetteSize?: number\n  /**\n   * The ClippingPlaneCollection used to selectively disable rendering the model.\n   */\n  clippingPlanes?: Cesium.ClippingPlaneCollection\n  /**\n   * Determines if a Draco encoded model is dequantized on the GPU. This decreases total memory usage for encoded models.\n   * Default value: true\n   */\n  dequantizeInShader?: boolean\n  /**\n   * Scales diffuse and specular image-based lighting from the earth, sky, atmosphere and star skybox.\n   * Default value: { x: 1.0, y: 1.0 }\n   */\n  imageBasedLightingFactor?: VcCartesian2\n  /**\n   * The light color when shading the model. When undefined the scene's light color is used instead.\n   */\n  lightColor?: VcColor\n  /**\n   * The sun's luminance at the zenith in kilo candela per meter squared to use for this model's procedural environment map.\n   * Default value: 0.2\n   */\n  luminanceAtZenith?: number\n  /**\n   * The third order spherical harmonic coefficients used for the diffuse color of image-based lighting.\n   */\n  sphericalHarmonicCoefficients?: VcCartesian3Array\n  /**\n   * A URL to a KTX2 file that contains a cube map of the specular lighting and the convoluted specular mipmaps.\n   */\n  specularEnvironmentMaps?: string\n  /**\n   * A credit for the model, which is displayed on the canvas.\n   */\n  credit?: string | Cesium.Credit\n  /**\n   * Whether to cull back-facing geometry. When true, back face culling is determined by the material's doubleSided property; when false, back face culling is disabled. Back faces are not culled if Model#color is translucent or Model#silhouetteSize is greater than 0.0.\n   * Default value: true\n   */\n  backFaceCulling?: boolean\n  /**\n   * Whether to display the outline for models using the CESIUM_primitive_outline extension. When true, outlines are displayed. When false, outlines are not displayed.\n   * Default value: true\n   */\n  showOutline?: 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 load failed.\n   */\n  onUnready?: (e: any) => 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  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this primitive.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this primitive.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this primitive.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this primitive.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this primitive.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this primitive.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this primitive.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the primitive is ready to render.\n   */\n  onReadyPromise?: (primitive: Cesium.ClassificationPrimitive, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcPrimitiveModelRef = VcComponentPublicInstance<VcPrimitiveModelProps>\n\nexport interface VcPrimitiveModelSlots {\n  /**\n   * Slot for vc-geometry-instance.\n   */\n  default: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-28 09:46:50\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitives\\primitive\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, Ref, VNode } from 'vue'\nimport type { VcAppearance, VcComponentInternalInstance, VcComponentPublicInstance, VcPickEvent, VcReadyObject } from 'casc-cesium-utils/types'\nimport { usePrimitives } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { primitiveEmits } from 'casc-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\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   * Default value: true\n   */\n  compressVertices?: 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   * 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   * Default value: true\n   */\n  cull?: 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   * 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 load failed.\n   */\n  onUnready?: (e: any) => 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  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this primitive.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this primitive.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this primitive.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this primitive.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this primitive.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this primitive.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this primitive.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the primitive is ready to render.\n   */\n  onReadyPromise?: (primitive: Cesium.Primitive, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n  'onUpdate:geometryInstances'?: (instances: Array<Cesium.GeometryInstance>) => void\n}\n\nexport interface VcPrimitiveRef extends VcComponentPublicInstance<VcPrimitiveProps> {\n  /**\n   * private but needed by VcGeometryInstance\n   * @param geometryInstance\n   * @param index\n   */\n  __updateGeometryInstances?(geometryInstance: Cesium.GeometryInstance, index: number): boolean\n  /**\n   * private but needed by VcGeometryInstance\n   * @param geometryInstance\n   */\n  __removeGeometryInstances?(geometryInstance: Cesium.GeometryInstance): boolean\n  /**\n   * private but needed by VcGeometryInstance\n   */\n  __childCount?: Ref<number>\n}\n\nexport interface VcPrimitiveSlots {\n  /**\n   * Slot for vc-geometry-instance.\n   */\n  default: () => VNode[]\n}\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type {\n  VcCartesian2,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcPickEvent,\n  VcPosition,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { usePrimitives } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { primitiveEmits } from 'casc-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 as PropType<Cesium.PointCloudShading>,\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  featureIdIndex: {\n    type: Number,\n    default: 0\n  },\n  instanceFeatureIdIndex: {\n    type: Number,\n    default: 0\n  },\n  showCreditsOnScreen: {\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).creatingPromise.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 VcPrimitiveTilesetEmits = typeof emits\nexport type VcPrimitiveTilesetProps = {\n  /**\n   * The url to a tileset JSON file.\n   */\n  url: string | Promise<string> | Promise<Cesium.Resource> | Cesium.Resource\n  /**\n   * Determines if the tileset will be shown.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * A 4x4 transformation matrix that transforms the tileset's root tile.\n   */\n  modelMatrix?: Cesium.Matrix4\n  /**\n   * Determines whether the tileset casts or receives shadows from light sources.\n   */\n  shadows?: number | Cesium.ShadowMode\n  /**\n   * The maximum screen space error used to drive level of detail refinement.\n   * Default value: 16\n   */\n  maximumScreenSpaceError?: number\n  /**\n   * The maximum amount of memory in MB that can be used by the tileset.\n   * Default value: 512\n   */\n  maximumMemoryUsage?: number\n  /**\n   * Optimization option. Whether to cull tiles using the union of their children bounding volumes.\n   * Default value: true\n   */\n  cullWithChildrenBounds?: boolean\n  /**\n   * Optimization option. Don't request tiles that will likely be unused when they come back because of the camera's movement. This optimization only applies to stationary tilesets.\n   * Default value: true\n   */\n  cullRequestsWhileMoving?: boolean\n  /**\n   * Optimization option. Multiplier used in culling requests while moving. Larger is more aggressive culling, smaller less aggressive culling.\n   * Default value: 60.0\n   */\n  cullRequestsWhileMovingMultiplier?: number\n  /**\n   * Preload tiles when tileset.show is false. Loads tiles as if the tileset is visible but does not render them.\n   * Default value: false\n   */\n  preloadWhenHidden?: boolean\n  /**\n   * Optimization option. Preload tiles at the camera's flight destination while the camera is in flight.\n   * Default value: true\n   */\n  preloadFlightDestinations?: boolean\n  /**\n   * Optimization option. Prefer loading of leaves first.\n   * Default value: false\n   */\n  preferLeaves?: boolean\n  /**\n   * Optimization option. Reduce the screen space error for tiles that are further away from the camera.\n   * Default value: false\n   */\n  dynamicScreenSpaceError?: boolean\n  /**\n   * Density used to adjust the dynamic screen space error, similar to fog density.\n   * Default value: 0.00278\n   */\n  dynamicScreenSpaceErrorDensity?: number\n  /**\n   * A factor used to increase the computed dynamic screen space error.\n   * Default value: 4.0\n   */\n  dynamicScreenSpaceErrorFactor?: number\n  /**\n   * A ratio of the tileset's height at which the density starts to falloff.\n   * Default value: 0.25\n   */\n  dynamicScreenSpaceErrorHeightFalloff?: number\n  /**\n   * Optimization option. If between (0.0, 0.5], tiles at or above the screen space error for the reduced screen resolution of progressiveResolutionHeightFraction*screenHeight will be prioritized first. This can help get a quick layer of tiles down while full resolution tiles continue to load.\n   * Default value: 0.3\n   */\n  progressiveResolutionHeightFraction?: number\n  /**\n   * Optimization option. Prioritize loading tiles in the center of the screen by temporarily raising the screen space error for tiles around the edge of the screen. Screen space error returns to normal once all the tiles in the center of the screen as determined by the Cesium3DTileset#foveatedConeSize are loaded.\n   * Default value: true\n   */\n  foveatedScreenSpaceError?: boolean\n  /**\n   * Optimization option. Used when Cesium3DTileset#foveatedScreenSpaceError is true to control the cone size that determines which tiles are deferred. Tiles that are inside this cone are loaded immediately. Tiles outside the cone are potentially deferred based on how far outside the cone they are and their screen space error. This is controlled by Cesium3DTileset#foveatedInterpolationCallback and Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation. Setting this to 0.0 means the cone will be the line formed by the camera position and its view direction. Setting this to 1.0 means the cone encompasses the entire field of view of the camera, disabling the effect.\n   * Default value: 0.3\n   */\n  foveatedConeSize?: number\n  /**\n   * Optimization option. Used when Cesium3DTileset#foveatedScreenSpaceError is true to control the starting screen space error relaxation for tiles outside the foveated cone. The screen space error will be raised starting with tileset value up to Cesium3DTileset#maximumScreenSpaceError based on the provided Cesium3DTileset#foveatedInterpolationCallback.\n   * Default value: 0.0\n   */\n  foveatedMinimumScreenSpaceErrorRelaxation?: number\n  /**\n   * Optimization option. Used when Cesium3DTileset#foveatedScreenSpaceError is true to control how much to raise the screen space error for tiles outside the foveated cone, interpolating between Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation and Cesium3DTileset#maximumScreenSpaceError\n   * @param p The start value to interpolate.\n   * @param q The end value to interpolate.\n   * @param time The time of interpolation generally in the range [0.0, 1.0].\n   * @returns The interpolated value.\n   */\n  foveatedInterpolationCallback?: (p: number, q: number, time: number) => number\n  /**\n   * Optimization option. Used when Cesium3DTileset#foveatedScreenSpaceError is true to control how long in seconds to wait after the camera stops moving before deferred tiles start loading in. This time delay prevents requesting tiles around the edges of the screen when the camera is moving. Setting this to 0.0 will immediately request all tiles in any given view.\n   * Default value: 0.2\n   */\n  foveatedTimeDelay?: number\n  /**\n   * Optimization option. Determines if level of detail skipping should be applied during the traversal.\n   * Default value: false\n   */\n  skipLevelOfDetail?: boolean\n  /**\n   * When skipLevelOfDetail is true, the screen space error that must be reached before skipping levels of detail.\n   * Default value: 1024\n   */\n  baseScreenSpaceError?: number\n  /**\n   * When skipLevelOfDetail is true, a multiplier defining the minimum screen space error to skip. Used in conjunction with skipLevels to determine which tiles to load.\n   * Default value: 16\n   */\n  skipScreenSpaceErrorFactor?: number\n  /**\n   * When skipLevelOfDetail is true, a constant defining the minimum number of levels to skip when loading tiles. When it is 0, no levels are skipped. Used in conjunction with skipScreenSpaceErrorFactor to determine which tiles to load.\n   * Default value: 1\n   */\n  skipLevels?: number\n  /**\n   * When skipLevelOfDetail is true, only tiles that meet the maximum screen space error will ever be downloaded. Skipping factors are ignored and just the desired tiles are loaded.\n   * Default value: false\n   */\n  immediatelyLoadDesiredLevelOfDetail?: boolean\n  /**\n   * When skipLevelOfDetail is true, determines whether siblings of visible tiles are always downloaded during traversal.\n   * Default value: false\n   */\n  loadSiblings?: boolean\n  /**\n   * The [ClippingPlaneCollection](https://cesium.com/learn/cesiumjs/ref-doc/ClippingPlaneCollection.html) used to selectively disable rendering the tileset.\n   */\n  clippingPlanes?: Cesium.ClippingPlaneCollection\n  /**\n   * Determines whether terrain, 3D Tiles or both will be classified by this tileset. See Cesium3DTileset#classificationType for details about restrictions and limitations.\n   */\n  classificationType?: number | Cesium.ClassificationType\n  /**\n   * The ellipsoid determining the size and shape of the globe.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * Options for constructing a PointCloudShading object to control point attenuation based on geometric error and lighting.\n   */\n  pointCloudShading?: Cesium.PointCloudShading\n  /**\n   * Scales the diffuse and specular image-based lighting from the earth, sky, atmosphere and star skybox.\n   */\n  imageBasedLightingFactor?: VcCartesian2\n  /**\n   * The light color when shading models. When undefined the scene's light color is used instead.\n   */\n  lightColor?: VcPosition\n  /**\n   * The sun's luminance at the zenith in kilo candela per meter squared to use for this model's procedural environment map.\n   * Default value: 0.2\n   */\n  luminanceAtZenith?: number\n  /**\n   * The third order spherical harmonic coefficients used for the diffuse color of image-based lighting.\n   */\n  sphericalHarmonicCoefficient?: Array<VcPosition>\n  /**\n   * A URL to a KTX2 file that contains a cube map of the specular lighting and the convoluted specular mipmaps.\n   */\n  specularEnvironmentMaps?: string\n  /**\n   * Whether to cull back-facing geometry. When true, back face culling is determined by the glTF material's doubleSided property; when false, back face culling is disabled.\n   * Default value: true\n   */\n  backFaceCulling?: boolean\n  /**\n   * Whether to display the outline for models using the CESIUM_primitive_outline extension. When true, outlines are displayed. When false, outlines are not displayed.\n   * Default value: true\n   */\n  showOutline?: boolean\n  /**\n   * Indicates that only the tileset's vector tiles should be used for classification.\n   * Default value: false\n   */\n  vectorClassificationOnly?: boolean\n  /**\n   * Whether vector tiles should keep decoded positions in memory. This is used with Cesium3DTileFeature.getPolylinePositions.\n   * Default value: false\n   */\n  vectorKeepDecodedPositions?: boolean\n  /**\n   * The index into the list of primitive feature IDs used for picking and styling. For EXT_feature_metadata, feature ID attributes are listed before feature ID textures. If both per-primitive and per-instance feature IDs are present, the instance feature IDs take priority.\n   * Default value: 0\n   */\n  featureIdIndex?: number\n  /**\n   * The index into the list of instance feature IDs used for picking and styling. If both per-primitive and per-instance feature IDs are present, the instance feature IDs take priority.\n   * Default value: 0\n   */\n  instanceFeatureIdIndex?: number\n  /**\n   * Whether to display the credits of this tileset on screen.\n   * Default value: false\n   */\n  showCreditsOnScreen?: boolean\n  /**\n   * The tile variable to colorize as a heatmap. All rendered tiles will be colorized relative to each other's specified variable value.\n   */\n  debugHeatmapTilePropertyName?: string\n  /**\n   * For debugging only. Determines if only the tiles from last frame should be used for rendering.\n   * Default value: false\n   */\n  debugFreezeFrame?: boolean\n  /**\n   * For debugging only. When true, assigns a random color to each tile.\n   * Default value: false\n   */\n  debugColorizeTiles?: boolean\n  /**\n   * For debugging only. When true, render's each tile's content as a wireframe.\n   * Default value: false\n   */\n  debugWireframe?: boolean\n  /**\n   * For debugging only. When true, renders the bounding volume for each tile.\n   * Default value: false\n   */\n  debugShowBoundingVolume?: boolean\n  /**\n   * For debugging only. When true, renders the bounding volume for each tile's content.\n   * Default value: false\n   */\n  debugShowContentBoundingVolume?: boolean\n  /**\n   * For debugging only. When true, renders the viewer request volume for each tile.\n   * Default value: false\n   */\n  debugShowViewerRequestVolume?: boolean\n  /**\n   * For debugging only. When true, draws labels to indicate the geometric error of each tile.\n   * Default value: false\n   */\n  debugShowGeometricError?: boolean\n  /**\n   * For debugging only. When true, draws labels to indicate the number of commands, points, triangles and features for each tile.\n   * Default value: false\n   */\n  debugShowRenderingStatistics?: boolean\n  /**\n   * For debugging only. When true, draws labels to indicate the texture and geometry memory in megabytes used by each tile.\n   * Default value: false\n   */\n  debugShowMemoryUsage?: boolean\n  /**\n   * For debugging only. When true, draws labels to indicate the url of each tile.\n   * Default value: false\n   */\n  debugShowUrl?: boolean\n  /**\n   * Specifies whether to respond to mouse pick events.\n   * Default value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * If true, ModelExperimental will be used instead of Model for each tile with a glTF or 3D Tiles 1.0 content (where applicable).\n   * Default value: false\n   */\n  enableModelExperimental?: boolean\n  /**\n   * A custom shader to apply to all tiles in the tileset. Only used for contents that use ModelExperimental. Using custom shaders with a Cesium3DTileStyle may lead to undefined behavior.To enable ModelExperimental, set ExperimentalFeatures.enableModelExperimental or tileset.enableModelExperimental to true.\n   */\n  customShader?: Cesium.CustomShader\n  /**\n   * Hook up custom properties.\n   */\n  properties?: Array<{\n    key: string\n    keyValue: any\n    propertyName: string\n    propertyValue: any\n  }>\n  /**\n   * A custom fragmentShader for models processed by CesiumLab.\n   */\n  fragmentShader?: string\n  /**\n   * Whether fragmentShader is directly replaced.\n   */\n  replaceFS?: 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 load failed.\n   */\n  onUnready?: (e: any) => 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  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this primitive.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this primitive.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this primitive.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this primitive.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this primitive.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this primitive.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this primitive.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the primitive is ready to render.\n   */\n  onReadyPromise?: (primitive: Cesium.Primitive, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n  /**\n   * When true, all tiles that meet the screen space error this frame are loaded. The tileset is completely loaded for this view.\n   */\n  onAllTilesLoaded?: () => void\n  /**\n   * The event fired to indicate that all tiles that meet the screen space error this frame are loaded. This event is fired once when all tiles in the initial view are loaded.This event is fired at the end of the frame after the scene is rendered.\n   */\n  onInitialTilesLoaded?: () => void\n  /**\n   * The event fired to indicate progress of loading new tiles. This event is fired when a new tile is requested, when a requested tile is finished downloading, and when a downloaded tile has been processed and is ready to render.\n   */\n  onLoadProgress?: (numberOfPendingRequests: number, numberOfTilesProcessing: number) => void\n  /**\n   * The event fired to indicate that a tile's content failed to load.\n   */\n  onTileFailed?: (url: string, errorMsg: string) => void\n  /**\n   * The event fired to indicate that a tile's content was loaded.\n   */\n  onTileLoad?: (tile: Cesium.Cesium3DTile) => void\n  /**\n   * The event fired to indicate that a tile's content was unloaded.\n   */\n  onTileUnload?: (tile: Cesium.Cesium3DTile) => void\n  /**\n   * This event fires once for each visible tile in a frame. This can be used to manually style a tileset.\n   */\n  onTileVisible?: (tile: Cesium.Cesium3DTile) => void\n}\n\nexport type VcPrimitiveTilesetRef = VcComponentPublicInstance<VcPrimitiveTilesetProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-23 10:29:32\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitives\\particle\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type {\n  VcCartesian2,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcPickEvent,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { usePrimitives } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { primitiveEmits } from 'casc-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 VcPrimitiveParticleEmits = typeof emits\nexport type VcPrimitiveParticleProps = {\n  /**\n   * Whether to display the particle system.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * The callback function to be called each frame to update a particle.\n   */\n  updateCallback?: (particle: Cesium.Particle, dt: number) => void\n  /**\n   * The particle emitter for this system.\n   */\n  emitter?: Cesium.ParticleEmitter\n  /**\n   * The 4x4 transformation matrix that transforms the particle system from model to world coordinates.\n   */\n  modelMatrix?: Cesium.Matrix4\n  /**\n   * The 4x4 transformation matrix that transforms the particle system emitter within the particle systems local coordinate system.\n   */\n  emitterModelMatrix?: Cesium.Matrix4\n  /**\n   * The number of particles to emit per second.\n   * Default value: 5.0\n   */\n  emissionRate?: number\n  /**\n   * An array of ParticleBurst, emitting bursts of particles at periodic times.\n   */\n  bursts?: Array<Cesium.ParticleBurst>\n  /**\n   * Whether the particle system should loop its bursts when it is complete.\n   * Default: true\n   */\n  loop?: boolean\n  /**\n   * Sets the scale to apply to the image of the particle for the duration of its particleLife.\n   * Default value: 1.0\n   */\n  scale?: number\n  /**\n   * The initial scale to apply to the image of the particle at the beginning of its life.\n   */\n  startScale?: number\n  /**\n   * The final scale to apply to the image of the particle at the end of its life.\n   */\n  endScale?: number\n  /**\n   * Sets the color of a particle for the duration of its particleLife.\n   * Default value: white\n   */\n  color?: VcColor\n  /**\n   * The color of the particle at the beginning of its life.\n   */\n  startColor?: VcColor\n  /**\n   * The color of the particle at the end of its life.\n   */\n  endColor?: VcColor\n  /**\n   * The URI, HTMLImageElement, or HTMLCanvasElement to use for the billboard.\n   */\n  image?: string | HTMLImageElement | HTMLCanvasElement\n  /**\n   * If set, overrides the minimumImageSize and maximumImageSize inputs that scale the particle image's dimensions in pixels.\n   */\n  imageSize?: VcCartesian2\n  /**\n   * Sets the minimum bound, width by height, above which to randomly scale the particle image's dimensions in pixels.\n   */\n  minimumImageSize?: VcCartesian2\n  /**\n   * Sets the maximum bound, width by height, below which to randomly scale the particle image's dimensions in pixels.\n   */\n  maximumImageSize?: VcCartesian2\n  /**\n   * Sets if the size of particles is in meters or pixels. true to size the particles in meters; otherwise, the size is in pixels.\n   */\n  sizeInMeters?: boolean\n  /**\n   * If set, overrides the minimumSpeed and maximumSpeed inputs with this value.\n   * Default value: 1.0\n   */\n  speed?: number\n  /**\n   * Sets the minimum bound in meters per second above which a particle's actual speed will be randomly chosen.\n   */\n  minimumSpeed?: number\n  /**\n   * Sets the maximum bound in meters per second below which a particle's actual speed will be randomly chosen.\n   */\n  maximumSpeed?: number\n  /**\n   * How long the particle system will emit particles, in seconds.\n   * Default value: Number.MAX_VALUE\n   */\n  lifetime?: number\n  /**\n   * If set, overrides the minimumParticleLife and maximumParticleLife inputs with this value.\n   * Default value: 5.0\n   */\n  particleLife?: number\n  /**\n   * Sets the minimum bound in seconds for the possible duration of a particle's life above which a particle's actual life will be randomly chosen.\n   */\n  minimumParticleLife?: number\n  /**\n   * Sets the maximum bound in seconds for the possible duration of a particle's life below which a particle's actual life will be randomly chosen.\n   */\n  maximumParticleLife?: number\n  /**\n   * Sets the minimum and maximum mass of particles in kilograms.\n   * Default value: 1.0\n   */\n  mass?: number\n  /**\n   * Sets the minimum bound for the mass of a particle in kilograms. A particle's actual mass will be chosen as a random amount above this value.\n   */\n  minimumMass?: number\n  /**\n   * Sets the maximum mass of particles in kilograms. A particle's actual mass will be chosen as a random amount below this value.\n   */\n  maximumMass?: 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 load failed.\n   */\n  onUnready?: (e: any) => 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  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this primitive.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this primitive.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this primitive.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this primitive.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this primitive.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this primitive.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this primitive.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n}\n\nexport type VcPrimitiveParticleRef = VcComponentPublicInstance<VcPrimitiveParticleProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-29 17:43:24\n * @LastEditTime: 2022-05-13 14:43:03\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\shared\\shaders\\Viewshed.ts\n */\nexport default `\n  uniform sampler2D colorTexture;\n  uniform vec4 u_color1;\n  uniform vec4 u_color2;\n  uniform float u_isShed;\n  uniform sampler2D shadowMap_depthTexture;\n  uniform mat4 shadowMap_matrix;\n  uniform vec4 shadowMap_lightPositionEC;\n  uniform vec3 shadowMap_lightDirectionEC;\n  uniform float u_radius;\n  uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness;\n  uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth;\n  uniform float czzj;\n  uniform float dis;\n  uniform float spzj;\n  uniform float mixNum;\n  uniform vec3 shadowMap_lightUp;\n  uniform vec3 shadowMap_lightDir;\n  uniform vec3 shadowMap_lightRight;\n  varying vec2 v_textureCoordinates;\n  vec4 toEye(in vec2 uv, in float depth){\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  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.0 * z_window - n_range - f_range) / (f_range - n_range);\n  }\n  float _czm_sampleShadowMap(sampler2D shadowMap, vec2 uv){\n    return texture2D(shadowMap, uv).r;\n  }\n  float _czm_shadowDepthCompare(sampler2D shadowMap, vec2 uv, float depth){\n    return step(depth, _czm_sampleShadowMap(shadowMap, uv));\n  }\n  float _czm_shadowVisibility(sampler2D shadowMap, czm_shadowParameters shadowParameters){\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    vec2 uv = shadowParameters.texCoords;\n    depth -= depthBias;\n    vec2 texelStepSize = shadowParameters.texelStepSize;\n    float radius = 1.0;\n    float dx0 = -texelStepSize.x * radius;\n    float dy0 = -texelStepSize.y * radius;\n    float dx1 = texelStepSize.x * radius;\n    float dy1 = texelStepSize.y * radius;\n    float visibility =\n    (\n    _czm_shadowDepthCompare(shadowMap, uv, depth)\n    +_czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy0), depth) +\n    _czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy0), depth) +\n    _czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy0), depth) +\n    _czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, 0.0), depth) +\n    _czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, 0.0), depth) +\n    _czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy1), depth) +\n    _czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy1), depth) +\n    _czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy1), depth)\n    ) * (1.0 / 9.0)\n    ;\n    return visibility;\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 ptm(vec3 pt){\n    return sqrt(pt.x*pt.x + pt.y*pt.y + pt.z*pt.z);\n  }\n  void main()\n  {\n    const float PI = 3.141592653589793;\n    vec4 color = texture2D(colorTexture, v_textureCoordinates);\n    gl_FragColor = color;\n    if ( u_isShed < 0.5 )\n        return;\n    vec4 currD = texture2D(czm_globeDepthTexture, v_textureCoordinates);\n    if( currD.r >= 1.0 )\n        return;\n\n    float depth = getDepth(currD);\n    vec4 positionEC = toEye(v_textureCoordinates, depth);\n    vec3 normalEC = vec3(1.0);\n    czm_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    shadowParameters.depthBias *= max(depth * 0.01, 1.0);\n    vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz);\n    float nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0);\n    vec4 shadowPosition = shadowMap_matrix * positionEC;\n    shadowPosition /= shadowPosition.w;\n    if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0))))\n      return;\n\n    vec4 lw = czm_inverseView* vec4(shadowMap_lightPositionEC.xyz, 1.0);\n    vec4 vw = czm_inverseView* vec4(positionEC.xyz, 1.0);\n    if(distance(lw.xyz,vw.xyz)> u_radius)\n        return;\n\n    shadowParameters.texCoords = shadowPosition.xy;\n    shadowParameters.depth = shadowPosition.z;\n    shadowParameters.nDotL = nDotL;\n    float visibility = _czm_shadowVisibility(shadowMap_depthTexture, shadowParameters);\n    if(visibility > 0.3 ){\n      gl_FragColor = mix(color,vec4(u_color1.rgb, 1.0),mixNum);\n    }\n    else{\n      if(abs(shadowPosition.z-0.0)<0.01){\n        return;\n      }\n      gl_FragColor = mix(color,vec4(u_color2.rgb, 1.0),mixNum);\n    }\n  }\n`\n","import { createCommentVNode, defineComponent, getCurrentInstance, onUnmounted, PropType, watch, WatchStopHandle } from 'vue'\nimport type { VcColor, VcComponentInternalInstance } from 'casc-cesium-utils/types'\nimport { useCommon } from 'casc-cesium-composables'\nimport { scene } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport { Viewshed } from 'casc-cesium-shared'\nimport { makeColor } from 'casc-cesium-utils/cesium-helpers'\nimport fragmentShader from 'casc-cesium-shared/shaders/Viewshed'\n\nexport const viewshedProps = {\n  ...scene,\n  fovH: {\n    type: Number,\n    default: 90\n  },\n  fovV: {\n    type: Number,\n    default: 60\n  },\n  offsetHeight: {\n    type: Number,\n    default: 1.8\n  },\n  visibleColor: {\n    type: [Object, Array, String] as PropType<VcColor>,\n    default: '#00ff00'\n  },\n  invisibleColor: {\n    type: [Object, Array, String] as PropType<VcColor>,\n    default: '#ff0000'\n  },\n  showGridLine: {\n    type: Boolean,\n    default: true\n  },\n  lineColor: {\n    type: [Object, Array, String] as PropType<VcColor>,\n    default: 'rgba(255,255,255,0.4)'\n  },\n  faceColor: {\n    type: [Object, Array, String] as PropType<VcColor>,\n    default: 'rgba(255,255,255,0.1)'\n  },\n  show: {\n    type: Boolean,\n    default: true\n  },\n  startPosition: {\n    type: Object as PropType<Cesium.Cartesian3>\n  },\n  endPosition: {\n    type: Object as PropType<Cesium.Cartesian3>\n  },\n  fragmentShader: {\n    type: String,\n    default: fragmentShader\n  },\n  uniforms: Object\n}\n\nexport default defineComponent({\n  name: 'VcViewshed',\n  props: viewshedProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcViewshed'\n    // state\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n\n    const unwatchFns: Array<WatchStopHandle> = []\n    let attachedViewshedStage: Cesium.PostProcessStage\n\n    unwatchFns.push(\n      watch(\n        [() => props.startPosition, () => props.endPosition],\n        ([newStartPosition, newEndPosition]) => {\n          if (!instance.mounted) {\n            return\n          }\n          updateViewshed(newStartPosition, newEndPosition)\n        },\n        {\n          deep: true\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.fovH,\n        val => {\n          if (!instance.mounted) {\n            return\n          }\n\n          const viewshed = instance.cesiumObject as Viewshed\n          viewshed.fovH = val\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.fovV,\n        val => {\n          if (!instance.mounted) {\n            return\n          }\n\n          const viewshed = instance.cesiumObject as Viewshed\n          viewshed.fovV = val\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.fovV,\n        val => {\n          if (!instance.mounted) {\n            return\n          }\n\n          const viewshed = instance.cesiumObject as Viewshed\n          viewshed.fovV = val\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.offsetHeight,\n        val => {\n          if (!instance.mounted) {\n            return\n          }\n\n          const viewshed = instance.cesiumObject as Viewshed\n          viewshed.offsetHeight = val\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.visibleColor,\n        val => {\n          if (!instance.mounted) {\n            return\n          }\n\n          const viewshed = instance.cesiumObject as Viewshed\n          viewshed.visibleColor = makeColor(val) as Cesium.Color\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.invisibleColor,\n        val => {\n          if (!instance.mounted) {\n            return\n          }\n\n          const viewshed = instance.cesiumObject as Viewshed\n          viewshed.invisibleColor = makeColor(val) as Cesium.Color\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.showGridLine,\n        val => {\n          if (!instance.mounted) {\n            return\n          }\n\n          const viewshed = instance.cesiumObject as Viewshed\n          viewshed.showGridLine = val\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.show,\n        val => {\n          if (!instance.mounted) {\n            return\n          }\n\n          const viewshed = instance.cesiumObject as Viewshed\n          viewshed.enabled = val\n        }\n      )\n    )\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns.length = 0\n    })\n\n    // methods\n    instance.createCesiumObject = async () => {\n      const viewer = commonState.$services.viewer\n      const viewshed = new Viewshed(viewer.scene, {\n        fovH: 120,\n        fovV: 60,\n        offsetHeight: 1.8,\n        visibleColor: makeColor(props.visibleColor),\n        invisibleColor: makeColor(props.invisibleColor),\n        showGridLine: props.showGridLine\n      })\n\n      ;(viewshed._viewshedShadowMap as any).cascadesEnabled = false\n      viewshed._viewshedShadowMap.softShadows = false\n      viewshed._viewshedShadowMap.normalOffset = false\n      ;(viewshed._viewshedShadowMap as any).fromLightSource = false\n      viewshed._viewshedShadowMap.enabled = false\n      viewshed.fovH = Cesium.Math.toRadians(props.fovH)\n      viewshed.fovV = Cesium.Math.toRadians(props.fovV)\n      viewshed.offsetHeight = props.offsetHeight\n      viewshed.showGridLine = props.showGridLine\n      viewshed.enabled = props.show\n      viewshed.lineColor = makeColor(props.lineColor) as Cesium.Color\n      viewshed.faceColor = makeColor(props.faceColor) as Cesium.Color\n      return viewshed\n    }\n\n    instance.mount = async () => {\n      const viewer = commonState.$services.viewer\n      const viewshed = instance.cesiumObject as Viewshed\n      const { Cartesian4, PostProcessStage, Cartesian2 } = Cesium\n\n      updateViewshed(props.startPosition, props.endPosition)\n      attachedViewshedStage = new PostProcessStage({\n        fragmentShader: props.fragmentShader,\n        uniforms: props.uniforms || {\n          u_color1: function () {\n            return viewshed.visibleColor\n          },\n          u_color2: function () {\n            return viewshed.invisibleColor\n          },\n          u_isShed: function () {\n            return viewshed.shadowMap.enabled\n          },\n          u_radius: function () {\n            return viewshed.lightCamera.frustum.far\n          },\n          shadowMap_depthTexture: function () {\n            return viewshed.shadowMap.enabled ? viewshed.shadowMap._shadowMapTexture : (viewer.scene as any).context.defaultTexture\n          },\n          shadowMap_matrix: function () {\n            return viewshed.shadowMap._shadowMapMatrix\n          },\n          shadowMap_cascadeSplits: function () {\n            return (viewshed.shadowMap as any)._cascadeSplits\n          },\n          shadowMap_cascadeMatrices: function () {\n            return (viewshed.shadowMap as any)._cascadeMatrices\n          },\n          shadowMap_lightDirectionEC: function () {\n            return (viewshed.shadowMap as any)._lightDirectionEC\n          },\n          shadowMap_lightPositionEC: function () {\n            return viewshed.shadowMap._lightPositionEC\n          },\n          shadowMap_cascadeDistances: function () {\n            return (viewshed.shadowMap as any)._cascadeDistances\n          },\n          shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness: function () {\n            const e = viewshed.shadowMap._pointBias\n            return Cartesian4.fromElements(e.normalOffsetScale, viewshed.shadowMap._distance, viewshed.shadowMap.maximumDistance, 0, new Cartesian4())\n          },\n          shadowMap_texelSizeDepthBiasAndNormalShadingSmooth: function () {\n            const e = viewshed.shadowMap._pointBias\n            const t = new Cartesian2()\n            t.x = 1 / viewshed.shadowMap._textureSize.x\n            t.y = 1 / viewshed.shadowMap._textureSize.y\n            return Cartesian4.fromElements(t.x, t.y, e.depthBias, e.normalShadingSmooth, new Cartesian4())\n          },\n          czzj: function () {\n            return (viewshed.lightCamera.frustum as Cesium.PerspectiveFrustum).fov\n          },\n          spzj: function () {\n            return (viewshed.lightCamera.frustum as Cesium.PerspectiveFrustum).fov\n          },\n          mixNum: function () {\n            return 0.5\n          },\n          shadowMap_lightUp: function () {\n            return viewshed.lightCamera.up\n          },\n          shadowMap_lightDir: function () {\n            return viewshed.lightCamera.direction\n          },\n          shadowMap_lightRight: function () {\n            return viewshed.lightCamera.right\n          }\n        }\n      })\n\n      viewer.scene.postProcessStages.add(attachedViewshedStage)\n      const primitives = commonState.$services.primitives\n      return primitives && primitives.add(viewshed)\n    }\n\n    instance.unmount = async () => {\n      const viewer = commonState.$services.viewer\n      attachedViewshedStage && viewer.scene.postProcessStages.remove(attachedViewshedStage)\n\n      const primitives = commonState.$services.primitives\n      const viewshed = instance.cesiumObject as Viewshed\n      return primitives && primitives.remove(viewshed)\n    }\n\n    const updateViewshed = (startPosition, endPosition) => {\n      const viewshed = instance.cesiumObject as Viewshed\n      const { Cartesian3 } = Cesium\n      let diffrence = Cartesian3.subtract(endPosition, startPosition, new Cartesian3())\n      const magnitudeSquared = Cartesian3.magnitudeSquared(diffrence)\n      const distance = Cartesian3.distance(endPosition, startPosition)\n\n      if (magnitudeSquared < 0.01 || viewshed.frustum.near > distance) {\n        viewshed.enabled = false\n      } else {\n        viewshed.enabled = true\n        diffrence = Cartesian3.normalize(diffrence, diffrence)\n        const up = Cartesian3.normalize(endPosition, new Cartesian3())\n\n        viewshed.setView({\n          destination: startPosition,\n          orientation: {\n            direction: diffrence,\n            up: up\n          }\n        })\n        viewshed.frustum.far = Math.max(distance, 1.1)\n      }\n    }\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-05-10 15:21:14\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 PrimitiveViewshed from './viewshed'\nimport { SFCWithInstall } from 'casc-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>\nexport const VcViewshed = PrimitiveViewshed as SFCWithInstall<typeof PrimitiveViewshed>\n\nexport * from './classification'\nexport * from './ground'\nexport * from './ground-polyline'\nexport * from './model'\nexport * from './particle'\nexport * from './primitive'\nexport * from './tileset'\nexport * from './viewshed'\n","import type { 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  VcHeatMapData,\n  VcRectangle,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useCommon } from 'casc-cesium-composables'\nimport { show, rectangle } from 'casc-cesium-utils/cesium-props'\nimport { makeColor, makeRectangle } from 'casc-cesium-utils/cesium-helpers'\nimport h337 from '@zouyaoji/heatmap.js'\nimport VcEntity from 'casc-cesium-components/entity'\nimport VcLayerImagery from 'casc-cesium-components/imagery-layer'\nimport { VcPrimitiveGround } from 'casc-cesium-components/primitives'\nimport { getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport { commonEmits } from 'casc-cesium-utils/emits'\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 as PropType<HeatmapConfiguration>,\n  type: {\n    type: String as PropType<'primitive' | 'entity' | 'imagery-layer'>,\n    default: 'primitive'\n  },\n  segments: {\n    type: Array as PropType<Array<VcColorSegments>>,\n    default: () => []\n  },\n  projection: {\n    type: String as PropType<'3857' | '4326'>,\n    default: '3857' // 4326\n  }\n}\nexport default defineComponent({\n  name: 'VcOverlayHeatmap',\n  props: heatmapOverlayProps,\n  emits: commonEmits,\n  setup(props: VcOverlayHeatmapProps, 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)\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)\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).creatingPromise?.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      console.log('setData')\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            [xField]: Math.round((mp.x - xoffset) / factor + spacing),\n            [yField]: Math.round((mp.y - yoffset) / factor + spacing),\n            [valueField]: undefined\n          }\n          hp[yField] = height - hp[yField]\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 interface VcOverlayHeatmapProps {\n  /**\n   * Specify whether to display the heatmap overlay.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify a rectangle with north, south, east and west properties.\n   */\n  rectangle?: VcRectangle\n  /**\n   * Specify the minimum value of the heat map data.\n   * Default value: 0\n   */\n  min?: number\n  /**\n   * Specify the maximum value of the heat map data.\n   * Default value: 100\n   */\n  max?: number\n  data?: Array<VcHeatMapData>\n  /**\n   * Specify the heatmap configs.\n   */\n  options?: HeatmapConfiguration\n  /**\n   * Specify the render type of heat map object.\n   * Default value: primitive\n   */\n  type?: 'primitive' | 'entity' | 'imagery-layer'\n  /**\n   * Specify the color segment of the heatmap.\n   */\n  segments?: Array<VcColorSegments>\n  /**\n   * Specify the projection.\n   * Default value: 3857\n   */\n  projection?: '3857' | '4326'\n  /**\n   * Triggers before the VcOverlayHeatmap is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcOverlayHeatmap is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcOverlayHeatmap is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcOverlayHeatmapRef = VcComponentPublicInstance<VcOverlayHeatmapProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 10:11:59\n * @LastEditTime: 2022-03-09 13:44:48\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: Cesium.Rectangle) {\n  const range: {\n    lon?: {\n      min: number\n      max: number\n    }\n    lat?: {\n      min: number\n      max: number\n    }\n  } = {}\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: new 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: 2022-03-09 14:20:51\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'\nimport { ParticleSystemOptions, VcWindData, ViewerParameters } from './types'\nclass ParticleSystem {\n  context: any\n  data: VcWindData\n  particleSystemOptions: ParticleSystemOptions\n  viewerParameters: ViewerParameters\n  particlesComputing: ParticlesComputing\n  particlesRendering: ParticlesRendering\n  constructor(context, data: VcWindData, particleSystemOptions: ParticleSystemOptions, viewerParameters: 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: 2022-03-09 15:50:51\n * @LastEditTime: 2022-03-09 15:50:53\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\wind\\grid\\consts.js\n */\nexport const π = Math.PI\nexport const τ = 2 * π\nexport const DEG = 360 / τ\nexport const RAD = τ / 360\n\nexport const MILLI = 1\nexport const SECOND = 1000 * MILLI\nexport const MINUTE = 60 * SECOND\nexport const HOUR = 60 * MINUTE\nexport const DAY = 24 * HOUR\n\nexport const NIL = 7e37\n","import { isArrayLike } from 'casc-cesium-utils/util'\nimport { DEG, RAD } from './consts'\n\n/**\n * @param {number} v\n * @param {number} n\n * @returns {number} remainder of floored division, i.e., floor(v / n). Useful for consistent modulo of negative\n *          numbers. See http://en.wikipedia.org/wiki/Modulo_operation.\n */\nexport function floorMod(v, n) {\n  const f = v - n * Math.floor(v / n)\n  // hack: when v is within an ulp of n, f can be equal to n (because the subtraction has no effect). But the\n  // result should be in the range [0, n), so check for this case. Example: floorMod(-1e-16, 10)\n  return f === n ? 0 : f\n}\n\n/**\n * Round to closest whole number using banker's rounding. From Java's Math.rint method.\n * @param {number} v\n * @returns {number} the value rounded half even\n */\nexport function rint(v) {\n  const TWOP52 = 4503599627370496 // Math.pow(2, 52)\n  let x = Math.abs(v)\n  if (x < TWOP52) {\n    x += TWOP52\n    x -= TWOP52\n  }\n  return Math.sign(v) * x\n}\n\n/**\n * Round to the closest multiple using banker's rounding.\n * @param {number} v\n * @param {number} m the multiple\n * @returns {number} the value rounded to the nearest increment of m.\n */\nexport function rintToMultiple(v, m) {\n  return rint(v / m) * m\n}\n\n/**\n * @param {number} v the value to clamp\n * @param {number} low the range lower bound, inclusive\n * @param {number} high the range upper bound, inclusive\n * @returns {number} the value v clamped to the range [low, high].\n */\nexport function clamp(v, low, high) {\n  return Math.max(low, Math.min(v, high))\n}\n\n/**\n * @param {number} v the value to rescale\n * @param {number} lowA the source range lower bound, inclusive\n * @param {number} highA the source range upper bound, inclusive\n * @param {number} lowB the target range lower bound, inclusive\n * @param {number} highB the target range upper bound, inclusive\n * @returns {number} the value v rescaled, but not clamped, to the range [lowB, highB] inclusive\n */\nexport function rescale(v, lowA, highA, lowB, highB) {\n  return ((v - lowA) / (highA - lowA)) * (highB - lowB) + lowB\n}\n\n/**\n * @param {number[]} vec2 [x, y]\n * @returns {number} euclidean length of the 2-d vector\n */\nexport function length(vec2) {\n  const [x, y] = vec2\n  return Math.sqrt(x * x + y * y)\n}\n\n/**\n * @param {number[]} a [ax, ay]\n * @param {number[]} b [bx, by]\n * @returns {number} euclidean distance between two 2-d points\n */\nexport function distance(a, b) {\n  return length([b[0] - a[0], b[1] - a[1]])\n}\n\n/**\n * @param {number[]} vec2 [x, y]\n * @returns {number} the direction of the 2-d vector on the compass rose in degrees in the range [0, 360).\n */\nexport function toCardinalDegrees(vec2) {\n  const deg = Math.atan2(vec2[0], vec2[1]) * DEG\n  return (deg + 360) % 360 // map (-180, 180] to [0, 360)\n}\n\n/**\n * Returns the indicatrix of the specified projection at the given point.\n *\n * This method uses finite difference estimates to calculate warping by adding a very small amount (h) to\n * both the longitude and latitude to create two lines. These lines are then projected to pixel space, where\n * they become diagonals of triangles that represent how much the projection warps longitude and latitude at\n * that location.\n *\n * <pre>\n *        (λ, φ+h)                  (xλ, yλ)\n *           .                         .\n *           |               ==>        \\\n *           |                           \\   __. (xφ, yφ)\n *    (λ, φ) .____. (λ+h, φ)       (x, y) .--\n * </pre>\n *\n * See:\n *     Map Projections: A Working Manual, Snyder, John P: pubs.er.usgs.gov/publication/pp1395\n *     gis.stackexchange.com/questions/5068/how-to-create-an-accurate-tissot-indicatrix\n *     www.jasondavies.com/maps/tissot\n *\n * @param {Function} project the projection function(λ, φ) -> [x, y]\n * @param {number} λ geographic coord lon\n * @param {number} φ geographic coord lat\n * @param {number} x corresponding screen coord x\n * @param {number} y corresponding screen coord y\n * @returns {number[]} array of scaled derivatives [dx/dλ, dy/dλ, dx/dφ, dy/dφ]\n */\nexport function indicatrix(project, λ, φ, x, y) {\n  const H = 0.0000001 // ~= 1cm\n  const Hφ = φ < 0 ? H : -H // avoid overflow at the poles\n  const pλ = project(λ + H, φ)\n  const pφ = project(λ, φ + Hφ)\n\n  // Meridian scale factor (see Snyder, equation 4-3), where R = 1. This handles issue where length of 1° λ\n  // changes depending on φ. Without this, there is a pinching effect at the poles.\n  const k = Math.cos(φ * RAD)\n  const Hk = H * k\n\n  return [\n    (pλ[0] - x) / Hk, // dx/dλ\n    (pλ[1] - y) / Hk, // dy/dλ\n    (pφ[0] - x) / Hφ, // dx/dφ\n    (pφ[1] - y) / Hφ // dy/dφ\n  ]\n}\n\n/**\n * Converts the argument to a number, including special cases for fractions:\n *     0.25  -> 0.25\n *     \"1/4\" -> 0.25\n *     [1,4] -> 0.25\n *     \".25\" -> 0.25\n *\n * @param x any object. When an array, then interpreted as the fraction: a[0] / a[1]. When a string containing\n *        a slash, the value is first converted to an array by splitting on \"/\".\n * @returns {number} the specified argument converted to a number.\n */\nexport function decimalize(x) {\n  if (typeof x === 'string' && x.indexOf('/') >= 0) {\n    x = x.split('/')\n  }\n  // CONSIDER: remove dependency on isArrayLike\n  return isArrayLike(x) && x.length === 2 ? x[0] / x[1] : +x\n}\n\nexport function mulvec2(vec, c) {\n  return [vec[0] * c, vec[1] * c]\n}\n","// https://en.wikipedia.org/wiki/Regular_grid\n\nimport { RAD } from './consts'\nimport { decimalize, floorMod } from './math'\n// import REGULAR_FRAG from './regular.frag'\n\n/**\n * Creates a regular geographic grid. Each axis defines the \"start\" value in degrees, \"delta\" degrees between\n * ticks, and the \"size\" (number of ticks from the origin, inclusive). Positive deltas move eastward/northward. This\n * example creates a full 1° x 1° grid covering the earth starting at the south pole:\n *\n *     λaxis: {start: 0, delta: 1, size: 360}    where λ in the range [0, 359]\n *     φaxis: {start: -90, delta: 1, size: 181}  where φ in the range [-90, 90]\n *\n * A grid maps from [λ, φ] coordinates to grid point indices.\n *\n * @param λaxis longitude axis\n * @param φaxis latitude axis\n * @returns {*}\n */\nexport function regularGrid(λaxis, φaxis) {\n  const nx = Math.floor(λaxis.size) // number of lon points\n  const ny = Math.floor(φaxis.size) // number of lat points\n  const np = nx * ny // total number of points\n  const Δλ = decimalize(λaxis.delta) // distance between lon points\n  const Δφ = decimalize(φaxis.delta) // distance between lat points\n  const λ0 = decimalize(λaxis.start) // lon origin\n  const φ0 = decimalize(φaxis.start) // lat origin, expected to be on range [-90, 90]\n  const λ1 = λ0 + Δλ * (nx - 1) // lon upper bound\n  const φ1 = φ0 + Δφ * (ny - 1) // lat upper bound\n\n  const λlow = (λ0 - Δλ / 2) * RAD\n  const λhigh = (λ1 + Δλ / 2) * RAD\n  const λsize = λhigh - λlow\n  const φlow = (φ0 - Δφ / 2) * RAD\n  const φhigh = (φ1 + Δφ / 2) * RAD\n  const φsize = φhigh - φlow\n  const low = [λlow, φlow]\n  const size = [λsize, φsize]\n\n  const isCylinder = Math.floor(nx * Δλ) >= 360 // true if the grid forms a cylinder\n\n  //function iterator() {\n  //    const i = 0;\n  //    return {\n  //        next: function() {\n  //            if (i >= np) {\n  //                return {done: true};\n  //            }\n  //            const x = i % nx;\n  //            const y = Math.floor(i / nx);\n  //            const λ = λ0 + x * Δλ;\n  //            const φ = φ0 + y * Δφ;\n  //            return {value: [λ, φ, i++], done: false};\n  //        },\n  //    };\n  //}\n\n  /** @returns {{width: number, height: number}} dimensions of this grid */\n  function dimensions() {\n    return {\n      width: nx,\n      height: ny\n    }\n  }\n\n  /** @returns {boolean} true if the grid fully wraps around longitudinal axis */\n  function isCylindrical() {\n    return isCylinder\n  }\n\n  /**\n   * @param {Function} cb the callback ƒ(λ, φ, i), where a truthy return value terminates the iteration.\n   * @param {number?} start the starting grid index.\n   * @returns {number} the grid index of the next iteration, or NaN if iteration is finished.\n   */\n  function forEach(cb, start) {\n    for (let i = start || 0; i < np; i++) {\n      const x = i % nx\n      const y = Math.floor(i / nx)\n      const λ = λ0 + x * Δλ\n      const φ = φ0 + y * Δφ\n      if (cb(λ, φ, i)) {\n        return i + 1 // Terminate iteration and return next grid index.\n      }\n    }\n    return NaN // Iteration is finished.\n  }\n\n  /**\n   * @param {number} λ latitude (degrees)\n   * @param {number} φ longitude (degrees)\n   * @returns {number} index of closest grid point or NaN if further than Δλ/2 or Δφ/2 from the grid boundary.\n   */\n  function closest(λ, φ) {\n    if (λ === λ && φ === φ) {\n      const x = floorMod(λ - λ0, 360) / Δλ\n      const y = (φ - φ0) / Δφ\n      const rx = Math.round(x)\n      const ry = Math.round(y)\n\n      if (0 <= ry && ry < ny && 0 <= rx && (rx < nx || (rx === nx && isCylinder))) {\n        const i = ry * nx + rx\n        return rx === nx ? i - nx : i\n      }\n    }\n    return NaN\n  }\n\n  /**\n   * Identifies the four points surrounding the specified coordinates. The result is a six-element array:\n   *\n   *     0-3: the indices of the four points, in increasing order.\n   *     4,5: the fraction that λ,φ is away from the first point, normalized to the range [0, 1].\n   *\n   * Example:\n   * <pre>\n   *          1      2           After converting λ and φ to positions on the x and y grid axes, we find the\n   *         fx  x   cx          four points that enclose point [x, y]. These points are at the four\n   *          | =1.4 |           corners specified by the floor and ceiling of x and y. For example, given\n   *       --i00-|--i10-- fy 8   x = 1.4 and y = 8.3, the four surrounding grid points are [1, 8], [2, 8],\n   *     y ___|_ .   |           [1, 9] and [2, 9]. These points have index i00, i10, i01, i11, respectively,\n   *   =8.3   |      |           and result of this function is an array [i00, i10, i01, i11, 0.4, 0.3].\n   *       --i01----i11-- cy 9\n   *          |      |\n   * </pre>\n   *\n   * @param {number} λ latitude (degrees)\n   * @param {number} φ longitude (degrees)\n   * @returns {number[]} the indices of the four grid points surrounding the coordinate pair and the (x,y) fraction,\n   *          or [NaN, NaN, NaN, NaN, NaN, NaN] if all points are not found.\n   */\n  function closest4(λ, φ) {\n    if (λ === λ && φ === φ) {\n      const x = floorMod(λ - λ0, 360) / Δλ\n      const y = (φ - φ0) / Δφ\n      const fx = Math.floor(x)\n      const fy = Math.floor(y)\n      const cx = fx + 1\n      const cy = fy + 1\n      const Δx = x - fx\n      const Δy = y - fy\n\n      if (0 <= fy && cy < ny && 0 <= fx && (cx < nx || (cx === nx && isCylinder))) {\n        const i00 = fy * nx + fx\n        let i10 = i00 + 1\n        const i01 = i00 + nx\n        let i11 = i01 + 1\n        if (cx === nx) {\n          i10 -= nx\n          i11 -= nx\n        }\n        return [i00, i10, i01, i11, Δx, Δy]\n      }\n    }\n    return [NaN, NaN, NaN, NaN, NaN, NaN]\n  }\n\n  // function webgl() {\n  //   return {\n  //     shaderSource: REGULAR_FRAG,\n  //     uniforms: {\n  //       u_Low: low,\n  //       u_Size: size,\n  //     },\n  //   }\n  // }\n\n  return {\n    dimensions: dimensions,\n    isCylindrical: isCylindrical,\n    forEach: forEach,\n    closest: closest,\n    closest4: closest4\n    // webgl: webgl,\n  }\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 13:42:09\n * @LastEditTime: 2022-03-09 23:31:53\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 { PropType, WatchStopHandle } from 'vue'\nimport { useCommon } from 'casc-cesium-composables'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, onUnmounted, watch } from 'vue'\nimport ParticleSystem from './particleSystem'\nimport { viewRectangleToLonLatRange } from './util'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport { ParticleSystemOptions, VcWindData, ViewerParameters } from './types'\nimport { makeCartesian2 } from 'casc-cesium-utils/cesium-helpers'\nimport { regularGrid } from './grid/regular'\n\nexport const windmapOverlayProps = {\n  show: {\n    type: Boolean,\n    default: true\n  },\n  data: {\n    type: Object as PropType<VcWindData>,\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  viewerParameters: Object as PropType<ViewerParameters>\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: ViewerParameters\n    let globeBoundingSphere: Cesium.BoundingSphere\n    let primitiveCollection: Cesium.PrimitiveCollection\n    let grid\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    unwatchFns.push(\n      watch(\n        () => props.viewerParameters,\n        val => {\n          updateViewerParameters()\n          const particleSystem = instance.cesiumObject as ParticleSystem\n          particleSystem.applyViewerParameters(viewerParameters)\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      const sequenceLon = { start: props.data.lon.array[0], delta: props.data.lon.delta, size: props.data.lon.array.length }\n      const sequenceLat = { start: props.data.lat.array[0], delta: props.data.lat.delta, size: props.data.lat.array.length }\n      grid = regularGrid(sequenceLon, sequenceLat)\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\n      if (\n        Cesium.defined(props.viewerParameters) &&\n        Cesium.defined(props.viewerParameters.latRange) &&\n        Cesium.defined(props.viewerParameters.lonRange)\n      ) {\n        viewerParameters.lonRange = makeCartesian2(props.viewerParameters.lonRange)\n        viewerParameters.latRange = makeCartesian2(props.viewerParameters.latRange)\n      } else {\n        const viewRectangle = camera.computeViewRectangle(scene.globe.ellipsoid)\n        const lonLatRange = viewRectangleToLonLatRange(viewRectangle)\n        ;(viewerParameters.lonRange as Cesium.Cartesian2).x = lonLatRange.lon.min\n        ;(viewerParameters.lonRange as Cesium.Cartesian2).y = lonLatRange.lon.max\n        ;(viewerParameters.latRange as Cesium.Cartesian2).x = lonLatRange.lat.min\n        ;(viewerParameters.latRange as Cesium.Cartesian2).y = lonLatRange.lat.max\n      }\n\n      const pixelSize =\n        Cesium.defined(props.viewerParameters) && Cesium.defined(props.viewerParameters.pixelSize)\n          ? props.viewerParameters.pixelSize\n          : camera.getPixelSize(globeBoundingSphere, scene.drawingBufferWidth, scene.drawingBufferHeight)\n\n      if (pixelSize > 0) {\n        viewerParameters.pixelSize = pixelSize\n      }\n    }\n\n    const getNearestUV = (longitude: number, latitude: number) => {\n      const index = grid.closest(longitude, latitude)\n      if (Cesium.defined(index)) {\n        return [props.data.U.array[index], props.data.V.array[index]]\n      }\n      return undefined\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      getNearestUV\n    })\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || 'v-if'))\n  }\n})\n\nexport interface VcOverlayWindmapProps {\n  /**\n   * Specify wind map data.\n   */\n  data: VcWindData\n  /**\n   * Specify whether to display the wind map.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify the rendering parameters of the wind map.\n   */\n  options?: ParticleSystemOptions\n  /**\n   * Specify the wind field display range.\n   */\n  viewerParameters?: ViewerParameters\n  /**\n   * Triggers before the VcOverlayWindmap is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcOverlayWindmap is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcOverlayWindmap is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport interface VcOverlayWindmapRef extends VcComponentPublicInstance<VcOverlayWindmapProps> {\n  /**\n   * Get near UV values.\n   * @param longitude longitude (degrees)\n   * @param latitude latitude (degrees)\n   */\n  getNearestUV: (longitude: number, latitude: number) => [number, number]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-24 11:38:18\n * @LastEditTime: 2022-08-12 14:31:14\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\dynamic\\index.ts\n */\nimport { WatchStopHandle, PropType, toRaw, ComponentPublicInstance } from 'vue'\nimport { defineComponent, getCurrentInstance, createCommentVNode, onUnmounted, ref, watch } from 'vue'\nimport {\n  DynamicOverlayOpts,\n  SampledPosition,\n  TrackViewOpts,\n  VcComponentInternalInstance,\n  VcHeadingPitchRange,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useCommon } from 'casc-cesium-composables'\nimport { show } from 'casc-cesium-utils/cesium-props'\nimport { addCustomProperty, kebabCase } from 'casc-cesium-utils/util'\nimport DynamicOverlay from 'casc-cesium-shared/src/DynamicOverlay'\nimport {\n  getPolylineSegmentHeading,\n  getPolylineSegmentPitch,\n  makeCartesian3,\n  makeHeadingPitchRang,\n  makeJulianDate\n} from 'casc-cesium-utils/cesium-helpers'\nimport { cloneDeep, differenceBy, remove, find } from 'lodash-unified'\nimport { getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { commonEmits } from 'casc-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, Date] as PropType<Cesium.JulianDate | string | Date>\n  },\n  stopTime: {\n    type: [Object, String, Date] as PropType<Cesium.JulianDate | string | Date>\n  },\n  currentTime: {\n    type: [Object, String, Date] as PropType<Cesium.JulianDate | string | Date>\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  stopArrivedFlag: {\n    type: String as PropType<'time' | 'position' | 'both' | 'or'>,\n    default: 'time'\n  },\n  positionPrecision: {\n    type: Number,\n    default: 0.0000001\n  },\n  timePrecision: {\n    type: Number,\n    default: 0.01\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  stopArrived: (overlay: DynamicOverlay, position: SampledPosition, offset: Cesium.HeadingPitchRange, clock: Cesium.Clock) => true\n}\nexport default defineComponent({\n  name: 'VcOverlayDynamic',\n  props: dynamicOverlayProps,\n  emits: emits,\n  setup(props: VcOverlayDynamicProps, 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    const trackingOverlay = ref<DynamicOverlay>(null)\n    const trackView = ref<TrackViewOpts>(null)\n    let lastOffset\n    let lastPosition\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' && key !== '_definitionChanged') {\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 (Cesium.defined(modifyEntity)) {\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                const dynamicOverlay = find(overlays.value, v => v.id === modifyEntity.id)\n                if (Cesium.defined(dynamicOverlay)) {\n                  const oldSampledPositions = v.oldOptions.sampledPositions\n                  const newSampledPositions = v.newOptions.sampledPositions\n                  const sampledPositionAdds: any = differenceBy(newSampledPositions, oldSampledPositions, 'id')\n                  const sampledPositionDeletes: any = differenceBy(oldSampledPositions, newSampledPositions, 'id')\n\n                  sampledPositionDeletes.forEach(sampledPosition => {\n                    sampledPosition.time && dynamicOverlay._sampledPosition.removeSample(sampledPosition.time)\n                  })\n\n                  sampledPositionAdds.forEach((sampledPosition: SampledPosition) => {\n                    if (sampledPosition.time) {\n                      dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.time)\n                    } else if (sampledPosition.interval) {\n                      dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.interval || props.defaultInterval)\n                    }\n                  })\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            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      props.currentTime !== clock.currentTime && listener && emit('update:currentTime', clock.currentTime)\n\n      listener = getInstanceListener(instance, 'update:shouldAnimate')\n      props.shouldAnimate !== clock.shouldAnimate && listener && emit('update:shouldAnimate', clock.shouldAnimate)\n\n      listener = getInstanceListener(instance, 'update:canAnimate')\n      props.canAnimate !== clock.canAnimate && listener && emit('update:canAnimate', clock.canAnimate)\n\n      listener = getInstanceListener(instance, 'update:clockRange')\n      props.clockRange !== clock.clockRange && listener && emit('update:clockRange', clock.clockRange)\n\n      listener = getInstanceListener(instance, 'update:clockStep')\n      props.clockStep !== clock.clockStep && listener && emit('update:clockStep', clock.clockStep)\n\n      listener = getInstanceListener(instance, 'update:multiplier')\n      props.multiplier !== clock.multiplier && listener && emit('update:multiplier', clock.multiplier)\n\n      listener = getInstanceListener(instance, 'update:startTime')\n      props.startTime !== clock.startTime && listener && emit('update:startTime', clock.startTime)\n\n      listener = getInstanceListener(instance, 'update:stopTime')\n      props.stopTime !== clock.stopTime && listener && emit('update:stopTime', clock.stopTime)\n\n      setTrackView(clock)\n\n      const { JulianDate, Cartesian3 } = Cesium\n      listener = getInstanceListener(instance, 'stopArrived')\n      if (listener && props.shouldAnimate) {\n        for (let i = 0; i < overlays.value.length; i++) {\n          const overlay: DynamicOverlay = overlays.value[i]\n          const currentPosition = overlay._sampledPosition.getValue(clock.currentTime)\n\n          const dynamicOverlayOpts = props.dynamicOverlays[i]\n          for (let j = 0; j < dynamicOverlayOpts.sampledPositions.length; j++) {\n            const sampledPosition = dynamicOverlayOpts.sampledPositions[j]\n            const stopPostion = makeCartesian3(sampledPosition.position) as Cesium.Cartesian3\n            const stopTime = makeJulianDate(sampledPosition.time)\n\n            const positionFlag = Cartesian3.equalsEpsilon(currentPosition, stopPostion, props.positionPrecision)\n            const timeFlag = JulianDate.equalsEpsilon(clock.currentTime, stopTime, props.timePrecision)\n            let arrivedFlag = false\n            switch (props.stopArrivedFlag) {\n              case 'time':\n                arrivedFlag = timeFlag\n                break\n              case 'position':\n                arrivedFlag = positionFlag\n                break\n              case 'both':\n                arrivedFlag = timeFlag && positionFlag\n                break\n              case 'or':\n                arrivedFlag = timeFlag || positionFlag\n                break\n            }\n\n            if (arrivedFlag) {\n              emit('stopArrived', overlay, sampledPosition, lastOffset, clock)\n              break\n            }\n          }\n        }\n      }\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          if (sampledPosition.time) {\n            dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.time)\n          } else if (sampledPosition.interval) {\n            sampledPosition.time = dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.interval || props.defaultInterval)\n          }\n        })\n        entityOptions.id !== entity.id && (entityOptions.id = entity.id)\n        addCustomProperty(entity, entityOptionsTransform, ['id'])\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      trackingOverlay.value && (viewer.trackedEntity = undefined)\n      return true\n    }\n\n    const setTrackView = (clock: Cesium.Clock) => {\n      if (trackView.value && trackingOverlay.value) {\n        const { viewer } = $services\n\n        if (Cesium.JulianDate.greaterThan(clock.currentTime, clock.stopTime)) {\n          // viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)\n          // if (lastOffset && lastPosition) {\n          //   viewer.camera.lookAt(lastPosition, lastOffset)\n          // }\n          trackingOverlay.value = null\n          return\n        }\n        const position = trackingOverlay.value._sampledPosition.getValue(clock.currentTime)\n        let offset: Cesium.HeadingPitchRange = new Cesium.HeadingPitchRange()\n        switch (trackView.value.mode) {\n          case 'TP':\n            offset.heading = 0\n            offset.pitch = trackView.value?.offset?.pitch || Cesium.Math.toRadians(-90)\n            offset.range = trackView.value?.offset?.range || 1000\n            break\n          case 'FP': {\n            const nextTickTime = Cesium.JulianDate.addSeconds(clock.currentTime, 1 / 60, new Cesium.JulianDate())\n            const nextTickPosition = trackingOverlay.value._sampledPosition.getValue(nextTickTime) || position\n\n            if (position.equals(nextTickPosition) && lastOffset) {\n              offset = lastOffset\n            } else {\n              offset.heading = Cesium.Math.toRadians(getPolylineSegmentHeading(position, nextTickPosition))\n              offset.pitch = (trackView.value?.offset?.pitch || Cesium.Math.toRadians(-45.0)) + getPolylineSegmentPitch(position, nextTickPosition)\n              offset.range = trackView.value?.offset?.range || 500\n            }\n\n            break\n          }\n          case 'CUSTOM':\n            offset = makeHeadingPitchRang(trackView.value.offset)\n        }\n        lastOffset = offset\n        lastPosition = position\n        viewer.camera.lookAt(position, offset)\n      }\n    }\n\n    const trackOverlay = (trackOverlay?: DynamicOverlay | string | number, trackViewOpts?: TrackViewOpts) => {\n      const { viewer } = $services\n      trackViewOpts = trackViewOpts || {\n        mode: trackView.value === null ? 'FP' : 'FREE'\n      }\n\n      if (trackViewOpts.mode === 'FREE') {\n        viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)\n        if (trackingOverlay.value) {\n          viewer.trackedEntity = undefined\n          trackingOverlay.value = null\n          trackView.value = null\n        }\n        return\n      }\n\n      trackingOverlay.value = getOverlay(trackOverlay)\n\n      viewer.trackedEntity = toRaw(trackingOverlay.value._entity)\n      if (trackViewOpts.mode === 'TRACKED') {\n        if (trackViewOpts?.viewFrom?.length) {\n          viewer.trackedEntity.viewFrom = new Cesium.Cartesian3(\n            trackViewOpts.viewFrom[0],\n            trackViewOpts.viewFrom[1],\n            trackViewOpts.viewFrom[2]\n          ) as any\n        }\n        trackView.value = null\n      } else {\n        trackView.value = trackViewOpts\n      }\n    }\n\n    const getOverlay = (e: number | string | DynamicOverlay) => {\n      if (e instanceof DynamicOverlay) {\n        return e\n      } else if (typeof e === 'string') {\n        return find(overlays.value, v => v.id === e)\n      } else if (typeof e === 'number') {\n        return overlays.value[e]\n      } else {\n        return overlays.value[0]\n      }\n    }\n\n    const flyToOverlay = (\n      overlays?: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>,\n      options?: {\n        duration?: number\n        maximumHeight?: number\n        offset?: VcHeadingPitchRange\n      }\n    ) => {\n      const { viewer } = $services\n      if (trackingOverlay.value) {\n        viewer.trackedEntity = undefined\n        trackingOverlay.value = null\n      }\n      let target: Cesium.Entity | Array<Cesium.Entity> | Cesium.CustomDataSource\n      if (Cesium.defined(overlays)) {\n        if (Array.isArray(overlays)) {\n          if (overlays.length) {\n            const targets: Array<Cesium.Entity> = []\n            overlays.forEach(viewOverlay => {\n              const target = toRaw(getOverlay(viewOverlay)._entity)\n              targets.push(target)\n            })\n            target = targets\n          } else {\n            target = instance.cesiumObject as Cesium.CustomDataSource\n          }\n        } else {\n          target = toRaw(getOverlay(overlays)._entity)\n        }\n      } else {\n        target = instance.cesiumObject as Cesium.CustomDataSource\n      }\n\n      options = options || {\n        duration: 3.0\n      }\n\n      if (Cesium.defined(options.offset)) {\n        options.offset = makeHeadingPitchRang(options.offset)\n      }\n\n      return viewer.flyTo(target, options as any)\n    }\n\n    const zoomToOverlay = (overlays?: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>, offset?: VcHeadingPitchRange) => {\n      const { viewer } = $services\n      if (trackingOverlay.value) {\n        viewer.trackedEntity = undefined\n        trackingOverlay.value = null\n      }\n      let target: Cesium.Entity | Array<Cesium.Entity> | Cesium.CustomDataSource\n      if (Cesium.defined(overlays)) {\n        if (Array.isArray(overlays)) {\n          if (overlays.length) {\n            const targets: Array<Cesium.Entity> = []\n            overlays.forEach(viewOverlay => {\n              const target = toRaw(getOverlay(viewOverlay)._entity)\n              targets.push(target)\n            })\n            target = targets\n          } else {\n            target = instance.cesiumObject as Cesium.CustomDataSource\n          }\n        } else {\n          target = toRaw(getOverlay(overlays)._entity)\n        }\n      } else {\n        target = instance.cesiumObject as Cesium.CustomDataSource\n      }\n\n      return viewer.zoomTo(target, Cesium.defined(offset) ? makeHeadingPitchRang(offset) : undefined)\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, { getOverlays: () => overlays.value, getOverlay, trackOverlay, zoomToOverlay, flyToOverlay })\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport interface VcOverlayDynamicProps {\n  /**\n   * Specify whether to display the CustomDataSource that hosts the dynamic overlays.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify the name of the CustomDataSource.\n   * Default value: __vc__overlay__dynamic__\n   */\n  name?: string\n  /**\n   * Specify the start time of the clock.\n   */\n  startTime?: Cesium.JulianDate | string | Date\n  /**\n   * Specify the stop time of the clock.\n   */\n  stopTime?: Cesium.JulianDate | string | Date\n  /**\n   * Specify the current time.\n   */\n  currentTime?: Cesium.JulianDate | string | Date\n  /**\n   * Determines how the clock should behave when Clock#startTime or Clock#stopTime is reached.\n   * Default value: 0\n   */\n  clockRange?: number | Cesium.ClockRange\n  /**\n   * Determines if calls to Clock#tick are frame dependent or system clock dependent.\n   * Default value: 1\n   */\n  clockStep?: number | Cesium.ClockStep\n  /**\n   * Indicates whether Clock#tick should attempt to advance time. The clock will only tick when both Clock#canAnimate and Clock#shouldAnimate are true.\n   * Default value: true\n   */\n  shouldAnimate?: boolean\n  /**\n   * Indicates whether Clock#tick can advance time. This could be false if data is being buffered, for example. The clock will only tick when both Clock#canAnimate and Clock#shouldAnimate are true.\n   * Default value: true\n   */\n  canAnimate?: boolean\n  /**\n   * Determines how much time advances when Clock#tick is called, negative values allow for advancing backwards.\n   * Default value: 1.0\n   */\n  multiplier?: number\n  /**\n   * Specify the dynamicOverlays array.\n   */\n  dynamicOverlays?: Array<DynamicOverlayOpts>\n  /**\n   * Specify the default refresh interval of the default position information, and it is available to change the position of the dynamic overlays in real time.\n   * Default value: 3.0\n   */\n  defaultInterval?: number\n  /**\n   * Specify the decision flag for the stopArrived event.\n   * Default value: time\n   */\n  stopArrivedFlag?: 'time' | 'position' | 'both' | 'or'\n  /**\n   * Specify position accuracy.\n   * Default value: 0.0000001\n   */\n  positionPrecision?: number\n  /**\n   * Specify time accuracy.\n   * 0.01\n   */\n  timePrecision?: number\n  /**\n   * Triggers before the VcOverlayDynamic is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcOverlayDynamic is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcOverlayDynamic is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when Clock#stopTime is reached.\n   */\n  onOnStop?: (clock: Cesium.Clock) => void\n  /**\n   * Triggers when a stop is reached.\n   */\n  onStopArrived?: (overlay: DynamicOverlay, position: SampledPosition, offset: Cesium.HeadingPitchRange, clock: Cesium.Clock) => void\n  /**\n   * Triggers when currentTime changed.\n   */\n  'onUpdate:currentTime'?: (currentTime: Cesium.JulianDate) => void\n  /**\n   * Triggers when shouldAnimate changed.\n   */\n  'onUpdate:shouldAnimate'?: (shouldAnimate: boolean) => void\n  /**\n   * Triggers when canAnimate changed.\n   */\n  'onUpdate:canAnimate'?: (canAnimate: boolean) => void\n  /**\n   * Triggers when clockRange changed.\n   */\n  'onUpdate:clockRange'?: (clockRange: number | Cesium.ClockRange) => void\n  /**\n   * Triggers when clockStep changed.\n   */\n  'onUpdate:clockStep'?: (clockStep: number | Cesium.ClockStep) => void\n  /**\n   * Triggers when multiplier changed.\n   */\n  'onUpdate:multiplier'?: (multiplier: number) => void\n  /**\n   * Triggers when startTime changed.\n   */\n  'onUpdate:startTime'?: (startTime: Cesium.JulianDate) => void\n  /**\n   * Triggers when stopTime changed.\n   */\n  'onUpdate:stopTime'?: (stopTime: Cesium.JulianDate) => void\n}\n\nexport type VcOverlayDynamicEmits = typeof emits\n\nexport interface VcOverlayDynamicRef extends ComponentPublicInstance<VcOverlayDynamicProps> {\n  /**\n   * Get overlay by id or index.\n   * @param e id or index.\n   */\n  getOverlay: (e: number | string | DynamicOverlay) => DynamicOverlay\n  /**\n   * Get overlays.\n   */\n  getOverlays: () => Array<DynamicOverlay>\n  /**\n   * Track dynamic overlay.\n   * @param trackOverlay tracked overlay or tracked overlay's id or index. If not passed, the first overlay is tracked by default.\n   * @param trackViewOpts view parameters.\n   */\n  trackOverlay: (trackOverlay?: DynamicOverlay | string | number, trackViewOpts?: TrackViewOpts) => void\n  /**\n   * Zoom to dynamic overlay(s).\n   * @param viewOverlays Dynamic overlays (index, id) or a collection of dynamic overlay (index, id). If you don't pass it or pass in an empty array (empty object), it scales to all overlays.\n   * @param offset The camera offset to zoom to the overlay.\n   */\n  zoomToOverlay: (\n    overlays: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>,\n    offset?: VcHeadingPitchRange\n  ) => Promise<boolean>\n\n  /**\n   * Fly to dynamic overlay(s).\n   * @param viewOverlays Dynamic overlays (index, id) or a collection of dynamic overlay (index, id). If you don't pass it or pass in an empty array (empty object), it scales to all overlays.\n   * @param offset The camera offset to zoom to the overlay.\n   */\n  flyToOverlay: (\n    overlays: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>,\n    options?: {\n      duration?: number\n      maximumHeight?: number\n      offset?: VcHeadingPitchRange\n    }\n  ) => Promise<boolean>\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-03-02 23:35:53\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 OverlayWind from './wind'\nimport OverlayDynamic from './dynamic'\nimport { SFCWithInstall } from 'casc-cesium-utils/types'\n\nconst components = [OverlayHtml, OverlayHeatmap, 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 VcOverlayWind = OverlayWind as SFCWithInstall<typeof OverlayWind>\nexport const VcOverlayDynamic = OverlayDynamic as SFCWithInstall<typeof OverlayDynamic>\n\nexport * from './dynamic'\nexport * from './heatmap'\nexport * from './html'\nexport * from './wind'\n","import type { PropType, VNode, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPickEvent, VcReadyObject } from 'casc-cesium-utils/types'\nimport { usePrimitiveCollections } from 'casc-cesium-composables'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { scene, blendOption, show, enableMouseEvent, debugShowBoundingVolume, modelMatrix } from 'casc-cesium-utils/cesium-props'\nimport { addCustomProperty, kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { primitiveCollectionEmits } from 'casc-cesium-utils/emits'\nimport { VcBillboardProps } from '../billboard'\n\nexport const billboardCollectionProps = {\n  ...scene,\n  ...blendOption,\n  ...show,\n  ...enableMouseEvent,\n  ...modelMatrix,\n  ...debugShowBoundingVolume,\n  billboards: {\n    type: Array as PropType<Array<VcBillboardProps>>,\n    default: () => []\n  }\n}\nexport default defineComponent({\n  name: 'VcCollectionBillboard',\n  props: billboardCollectionProps,\n  emits: primitiveCollectionEmits,\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 = {\n  /**\n   * Must be passed in for billboards that use the height reference property or will be depth tested against the globe.\n   */\n  scene?: Cesium.Scene\n  /**\n   * The billboard blending option. The default is used for rendering both opaque and translucent billboards. However, if either all of the billboards are completely opaque or all are completely translucent, setting the technique to BlendOption.OPAQUE or BlendOption.TRANSLUCENT can improve performance by up to 2x.\n   */\n  blendOption?: number | Cesium.BlendOption\n  /**\n   * Determines if the billboards in the collection will be shown.\n   * Default Value: true\n   */\n  show?: boolean\n  /**\n   * The 4x4 transformation matrix that transforms each billboard from model to world coordinates.\n   */\n  modelMatrix?: Cesium.Matrix4\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   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify an array of billboard collections. The structure of the array object is the same as the attribute of the [vc-billboard](https://zouyaoji.top/vue-cesium/#/en-US/component/primitives/vc-collection-billboard#vcbillboard-props) component.\n   */\n  billboards?: Array<VcBillboardProps>\n  /**\n   * Triggers before the VcCollectionBillboard is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCollectionBillboard is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcCollectionBillboard is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this collection.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this collection.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this collection.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this collection.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this collection.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this collection.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this collection.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   *  Triggers when the mouse moves out of this collection.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n}\n\nexport type VcCollectionBillboardRef = VcComponentPublicInstance<VcCollectionBillboardProps>\n\nexport interface VcCollectionBillboardSlots {\n  /**\n   * Slot for vc-billboard.\n   */\n  default: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-11 10:04:36\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\billboard\\index.ts\n */\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  VcComponentPublicInstance\n} from 'casc-cesium-utils/types'\nimport { usePrimitiveCollectionItems } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { primitiveCollectionEmits } from 'casc-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\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 VcBillboard is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcBillboard is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcBillboard is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this billboard.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this billboard.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this billboard.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this billboard.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this billboard.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this billboard.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this billboard.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   *  Triggers when the mouse moves out of this billboard.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n}\n\nexport type VcBillboardRef = VcComponentPublicInstance<VcBillboardProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-28 11:13:56\n * @LastEditTime: 2022-03-11 10:46:42\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\cloud\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type {\n  VcCartesian2,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcPosition,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { usePrimitiveCollectionItems } from 'casc-cesium-composables'\nimport { color, position, show, enableMouseEvent } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { primitiveCollectionEmits } from 'casc-cesium-utils/emits'\nimport { makeCartesian2, makeCartesian3 } from 'casc-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}\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   * 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 component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcCumulusCloud is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcCumulusCloudRef = VcComponentPublicInstance<VcCumulusCloudProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-28 10:49:53\n * @LastEditTime: 2022-03-20 00:06:02\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\cloud-collection\\index.ts\n */\nimport type { PropType, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { usePrimitiveCollections } from 'casc-cesium-composables'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { show } from 'casc-cesium-utils/cesium-props'\nimport { addCustomProperty, kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport type { VcCumulusCloudProps } from '../cloud'\nimport VcCumulusCloud from '../cloud'\n\nexport const cloudCollectionProps = {\n  ...show,\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: commonEmits,\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 = {\n  /**\n   * Whether to display the clouds.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Desired amount of detail in the noise texture.\n   * Default value: 16.0\n   */\n  noiseDetail?: number\n  /**\n   * Desired translation of data in noise texture.\n   * Default value: {x: 0, y: 0, z: 0}\n   */\n  noiseOffset?: VcPosition\n  /**\n   * For debugging only. Determines if the billboards are rendered with an opaque color.\n   * Default value: false\n   */\n  debugBillboards?: boolean\n  /**\n   * For debugging only. Determines if the clouds will be rendered as opaque ellipsoids.\n   * Default value: false\n   */\n  debugEllipsoids?: boolean\n  /**\n   * Specifies an array of cumulus collections. The array object structure is the same as the [vc-cumulus-cloud](https://zouyaoji.top/vue-cesium/#/en-US/component/primitives/vc-collection-cloud#vccumuluscloud-props) component properties.\n   */\n  clouds?: Array<VcCumulusCloudProps>\n  /**\n   * Triggers before the VcCollectionCloud is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCollectionCloud is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcCollectionCloud is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcCollectionCloudRef = VcComponentPublicInstance<VcCollectionCloudProps>\n","import type { ExtractPropTypes, PropType, VNode, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcPickEvent, VcReadyObject } from 'casc-cesium-utils/types'\nimport { usePrimitiveCollections } from 'casc-cesium-composables'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { modelMatrix, debugShowBoundingVolume, scene, blendOption, show, enableMouseEvent } from 'casc-cesium-utils/cesium-props'\nimport { addCustomProperty, kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { primitiveCollectionEmits } from 'casc-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 = {\n  /**\n   * Must be passed in for labels that use the height reference property or will be depth tested against the globe.\n   */\n  scene?: Cesium.Scene\n  /**\n   * The label blending option. The default is used for rendering both opaque and translucent labels. However, if either all of the labels are completely opaque or all are completely translucent, setting the technique to BlendOption.OPAQUE or BlendOption.TRANSLUCENT can improve performance by up to 2x.\n   */\n  blendOption?: number | Cesium.BlendOption\n  /**\n   * Determines if the labels in the collection will be shown.\n   * Default Value: true\n   */\n  show?: boolean\n  /**\n   * The 4x4 transformation matrix that transforms each label from model to world coordinates.\n   */\n  modelMatrix?: Cesium.Matrix4\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   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify an array of label collections. The structure of the array object is the same as the attribute of the [vc-label](https://zouyaoji.top/vue-cesium/#/en-US/component/primitives/vc-collection-label#vclabel-props) component.\n   */\n  labels?: Array<VcLabelProps>\n  /**\n   * Triggers before the VcCollectionLabel is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCollectionLabel is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcCollectionLabel is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this collection.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this collection.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this collection.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this collection.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this collection.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this collection.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this collection.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   *  Triggers when the mouse moves out of this collection.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n}\n\nexport type VcCollectionLabelRef = VcComponentPublicInstance<VcCollectionLabelProps>\n\nexport interface VcCollectionLabelSlots {\n  /**\n   * Slot for vc-label.\n   */\n  default: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-11 10:47:57\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\label\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport {\n  VcPickEvent,\n  VcCartesian2,\n  VcColor,\n  VcComponentInternalInstance,\n  VcDistanceDisplayCondition,\n  VcNearFarScalar,\n  VcPosition,\n  VcReadyObject,\n  VcComponentPublicInstance\n} from 'casc-cesium-utils/types'\nimport { usePrimitiveCollectionItems } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { primitiveCollectionEmits } from 'casc-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\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 component load failed.\n   */\n  onUnready?: (e: any) => 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  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this label.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this label.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this label.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this label.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this label.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this label.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this label.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n}\n\nexport type VcLabelRef = VcComponentPublicInstance<VcLabelProps>\n","import type { PropType, VNode, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPickEvent, VcReadyObject } from 'casc-cesium-utils/types'\nimport { usePrimitiveCollections } from 'casc-cesium-composables'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { modelMatrix, debugShowBoundingVolume, blendOption, show, enableMouseEvent } from 'casc-cesium-utils/cesium-props'\nimport { addCustomProperty, kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { primitiveCollectionEmits } from 'casc-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 = {\n  /**\n   * The point blending option. The default is used for rendering both opaque and translucent points. However, if either all of the points are completely opaque or all are completely translucent, setting the technique to BlendOption.OPAQUE or BlendOption.TRANSLUCENT can improve performance by up to 2x.\n   */\n  blendOption?: number | Cesium.BlendOption\n  /**\n   * Determines if the primitives in the collection will be shown.\n   * Default Value: true\n   */\n  show?: boolean\n  /**\n   * The 4x4 transformation matrix that transforms each point from model to world coordinates.\n   */\n  modelMatrix?: Cesium.Matrix4\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   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify an array of points collections. The structure of the array object is the same as the attribute of the [vc-point](http://localhost:8080/#/en-US/component/primitives/vc-collection-point#vcpoint-props) component.\n   */\n  points?: Array<VcPointProps>\n  /**\n   * Triggers before the VcCollectionPoint is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCollectionPoint is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcCollectionPoint is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this collection.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this collection.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this collection.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this collection.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this collection.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this collection.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this collection.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this collection.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n}\n\nexport type VcCollectionPointRef = VcComponentPublicInstance<VcCollectionPointProps>\n\nexport interface VcCollectionPointSlots {\n  /**\n   * Slot for vc-point.\n   */\n  default: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-11 10:50:46\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\point\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type {\n  VcPickEvent,\n  VcColor,\n  VcComponentInternalInstance,\n  VcDistanceDisplayCondition,\n  VcNearFarScalar,\n  VcPosition,\n  VcReadyObject,\n  VcComponentPublicInstance\n} from 'casc-cesium-utils/types'\nimport { usePrimitiveCollectionItems } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { primitiveCollectionEmits } from 'casc-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\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 component load failed.\n   */\n  onUnready?: (e: any) => 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  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this point.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this point.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this point.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this point.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this point.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this point.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this point.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n}\n\nexport type VcPointRef = VcComponentPublicInstance<VcPointProps>\n","import type { ExtractPropTypes, PropType, VNode, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcPickEvent, VcReadyObject } from 'casc-cesium-utils/types'\nimport { usePrimitiveCollections } from 'casc-cesium-composables'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { modelMatrix, debugShowBoundingVolume, show, enableMouseEvent } from 'casc-cesium-utils/cesium-props'\nimport { addCustomProperty, kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { primitiveCollectionEmits } from 'casc-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 = {\n  /**\n   * Determines if the polylines in the collection will be shown.\n   * Default Value: true\n   */\n  show?: boolean\n  /**\n   * The 4x4 transformation matrix that transforms each polyline from model to world coordinates.\n   */\n  modelMatrix?: Cesium.Matrix4\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   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify an array of polylines collections. The structure of the array object is the same as the attribute of the [`vc-polyline`](https://zouyaoji.top/vue-cesium/#/en-US/component/primitives/vc-collection-polyline#vcpolyline-props) component.\n   */\n  polylines?: Array<VcPolylineProps>\n  /**\n   * Triggers before the VcCollectionPolyline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCollectionPolyline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcCollectionPolyline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this collection.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this collection.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this collection.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this collection.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this collection.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this collection.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this collection.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this collection.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n}\n\nexport type VcCollectionPolylineRef = VcComponentPublicInstance<VcCollectionPolylineProps>\n\nexport interface VcCollectionPolylineSlots {\n  /**\n   * Slot for vc-polyline.\n   */\n  default: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-21 08:59:40\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\polyline\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type {\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcMaterial,\n  VcPickEvent,\n  VcPosition,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { usePrimitiveCollectionItems } from 'casc-cesium-composables'\nimport { distanceDisplayCondition, id, loop, material, positions, show, width, enableMouseEvent } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { primitiveCollectionEmits } from 'casc-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 = {\n  /**\n   * true if this polyline will be shown; otherwise, false.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * The width of the polyline in pixels.\n   * Default: 1.0\n   */\n  width?: number\n  /**\n   * Whether a line segment will be added between the last and first line positions to make this line a loop.\n   * Default value: false\n   */\n  loop?: boolean\n  /**\n   * The material.\n   */\n  material?: VcMaterial\n  /**\n   * The positions.\n   */\n  position?: VcPosition\n  /**\n   * The user-defined object to be returned when this polyline is picked.\n   */\n  id?: any\n  /**\n   * The condition specifying at what distance from the camera that this polyline will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Triggers before the VcPolyline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcPolyline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcPolyline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this point.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this point.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this point.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this point.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this point.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this point.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this point.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this point.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n}\n\nexport type VcPolylineRef = VcComponentPublicInstance<VcPolylineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-28 10:04:35\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\primitive-collection\\index.ts\n */\nimport type { ExtractPropTypes, PropType, VNode, WatchStopHandle } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance } from 'casc-cesium-utils/types'\nimport { usePrimitiveCollections } from 'casc-cesium-composables'\nimport { show, enableMouseEvent } from 'casc-cesium-utils/cesium-props'\nimport { addCustomProperty, kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { PolygonPrimitive } from 'casc-cesium-shared'\nimport { primitiveCollectionEmits } from 'casc-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 = {\n  /**\n   * Determines if the primitives in the collection will be shown.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Determines if primitives in the collection are destroyed when they are removed.\n   * Default value: true\n   */\n  destroyPrimitives?: boolean\n  /**\n   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify an array of polygons collections. The structure of the array object is the same as the attribute of the [`vc-polygon`](https://zouyaoji.top/vue-cesium/#/en-US/component/primitives/vc-collection-primitive#vcpolygon-props) component.\n   */\n  polygons?: Array<VcPolygonProps>\n}\n\nexport type VcCollectionPrimitiveRef = VcComponentPublicInstance<VcCollectionPrimitiveProps>\n\nexport interface VcCollectionPrimitiveSlots {\n  /**\n   * This is where Primitive content goes.\n   */\n  default: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-19 22:09:27\n * @LastEditTime: 2022-08-25 21:31:00\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\primitive-collections\\polygon\\index.ts\n */\nimport type { 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  VcComponentPublicInstance\n} from 'casc-cesium-utils/types'\nimport { usePrimitiveCollectionItems } from 'casc-cesium-composables'\nimport {\n  id,\n  show,\n  enableMouseEvent,\n  positions,\n  arcType,\n  classificationType,\n  polygonHierarchy,\n  clampToGround,\n  appearance,\n  depthFailAppearance,\n  ellipsoid,\n  allowPicking,\n  asynchronous\n} from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { PolygonPrimitive } from 'casc-cesium-shared'\nimport { makeAppearance, makeCartesian3Array, makePolygonHierarchy } from 'casc-cesium-utils/cesium-helpers'\nimport { primitiveCollectionEmits } from 'casc-cesium-utils/emits'\n\nexport const polygonProps = {\n  ...positions,\n  ...polygonHierarchy,\n  ...appearance,\n  ...depthFailAppearance,\n  ...show,\n  ...id,\n  ...arcType,\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\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  /**\n   * Specify the positions.\n   */\n  positions?: VcCartesian3Array\n  /**\n   * \tA polygon hierarchy that can include holes.\n   */\n  polygonHierarchy?: VcPolygonHierarchy\n  /**\n   * The type of line the polygon edges must follow. Valid options are ArcType.GEODESIC and ArcType.RHUMB.\n   */\n  arcType?: number | Cesium.ArcType\n  /**\n   * An enum Property specifying whether this polygon will classify terrain, 3D Tiles, or both when on the ground.\n   */\n  classificationType?: number | Cesium.ClassificationType\n  /**\n   * Specify whether the polygon is attached to the ground or 3dtiles.\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   * 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   * Specifies whether to respond to mouse pick events.\n   * Default Value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Triggers before the VcPolygon is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcPolygon is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcPolygon is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this polygon.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this polygon.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this polygon.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this polygon.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this polygon.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this polygon.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this polygon.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this polygon.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n}\n\nexport type VcPolygonRef = VcComponentPublicInstance<VcPolygonProps>\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 'casc-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-08-12 11:48:54\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\10_vue-cesium\\packages\\components\\geometry-instance\\src\\index.ts\n */\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcGeometry, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode, PropType, ref, h, provide, VNode } from 'vue'\nimport { useCommon } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { modelMatrix, id } from 'casc-cesium-utils/cesium-props'\nimport { getInstanceListener, getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport { mergeDescriptors } from 'casc-cesium-utils/merge-descriptors'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { vcKey } from 'casc-cesium-utils/config'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport { VcPrimitiveRef } from '../../primitives'\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 VcPrimitiveRef\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 VcPrimitiveRef\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\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\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   * Triggers before the VcGeometryInstance is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryInstance is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryInstance is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the geometry mounted.\n   */\n  'onUpdate:geometry'?: (payload: VcGeometry) => void\n}\n\nexport interface VcGeometryInstanceRef extends VcComponentPublicInstance<VcGeometryInstanceProps> {\n  /**\n   * private but needed by VcGeometryXXX.\n   * @param geometry\n   */\n  __updateGeometry?(geometry: Cesium.Geometry): boolean\n}\n\nexport interface VcGeometryInstanceSlots {\n  /**\n   * Slot for vc-geometry-xxx.\n   */\n  default: () => 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:23\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometry-instance\\index.ts\n */\nimport { SFCWithInstall } from 'casc-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-03-30 10:18:51\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\box\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { dimensions, vertexFormat } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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\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   * Triggers before the VcGeometryBox is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryBox is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryBox is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryBoxRef = VcComponentPublicInstance<VcGeometryBoxProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:19:25\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\box-outline\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { dimensions } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\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   * Triggers before the VcGeometryBoxOutline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryBoxOutline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryBoxOutline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryBoxOutlineRef = VcComponentPublicInstance<VcGeometryBoxOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 13:28:51\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\circle\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { center, radius, ellipsoid, height, granularity, vertexFormat, extrudedHeight, stRotation } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 VcGeometryCircleProps = {\n  /**\n   * The circle's center point in the fixed frame.\n   */\n  center: VcPosition\n  /**\n   * The radius in meters.\n   */\n  radius?: number\n  /**\n   * The ellipsoid the circle will be on.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The distance in meters between the circle and the ellipsoid surface.\n   */\n  height?: number\n  /**\n   * The angular distance between points on the circle in radians.\n   */\n  granularity?: number\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * The distance in meters between the circle's extruded face and the ellipsoid surface.\n   */\n  extrudedHeight?: number\n  /**\n   * The rotation of the texture coordinates, in radians. A positive rotation is counter-clockwise.\n   */\n  stRotation?: number\n  /**\n   * Triggers before the VcCircleGeometry is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCircleGeometry is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcCircleGeometry is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryCircleRef = VcComponentPublicInstance<VcGeometryCircleProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:32:22\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\circle-outline\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { center, radius, ellipsoid, height, granularity, extrudedHeight, numberOfVerticalLines } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The circle's center point in the fixed frame.\n   */\n  center: VcPosition\n  /**\n   * The radius in meters.\n   */\n  radius?: number\n  /**\n   * The ellipsoid the circle will be on.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The distance in meters between the circle and the ellipsoid surface.\n   */\n  height?: number\n  /**\n   * The angular distance between points on the circle in radians.\n   */\n  granularity?: number\n  /**\n   * The distance in meters between the circle's extruded face and the ellipsoid surface.\n   */\n  extrudedHeight?: number\n  /**\n   * Number of lines to draw between the top and bottom of an extruded circle.\n   * Default value: 16\n   */\n  numberOfVerticalLines?: number\n  /**\n   * Triggers before the VcGeometryCircleOutline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryCircleOutline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryCircleOutline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryCircleOutlineRef = VcComponentPublicInstance<VcGeometryCircleOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:34:56\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\coplanar-polygon\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPolygonHierarchy, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport { polygonHierarchy, stRotation, vertexFormat, ellipsoid } from 'casc-cesium-utils/cesium-props'\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 = {\n  /**\n   * A polygon hierarchy that can include holes.\n   */\n  polygonHierarchy: VcPolygonHierarchy\n  /**\n   * The ellipsoid to be used as a reference.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * The rotation of the texture coordinates, in radians. A positive rotation is counter-clockwise.\n   * Default value: 0.0\n   */\n  stRotation?: number\n  /**\n   * Triggers before the VcGeometryPolygonCoplanar is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryPolygonCoplanar is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryPolygonCoplanar is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryPolygonCoplanarRef = VcComponentPublicInstance<VcGeometryPolygonCoplanarProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:35:18\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\coplanar-polygon-outline\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPolygonHierarchy, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { polygonHierarchy } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A polygon hierarchy that can include holes.\n   */\n  polygonHierarchy: VcPolygonHierarchy\n  /**\n   * Triggers before the VcGeometryPolygonCoplanarOutline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryPolygonCoplanarOutline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryPolygonCoplanarOutline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryPolygonCoplanarOutlineRef = VcComponentPublicInstance<VcGeometryPolygonCoplanarOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:35:40\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\corridor\\index.ts\n */\nimport { VcCartesian3Array, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { positions, width, ellipsoid, granularity, height, extrudedHeight, vertexFormat, cornerType } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * An array of positions that define the center of the corridor.\n   */\n  positions: VcCartesian3Array\n  /**\n   * The distance between the edges of the corridor in meters.\n   */\n  width: number\n  /**\n   * The ellipsoid to be used as a reference.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n   */\n  granularity?: number\n  /**\n   * The distance in meters between the ellipsoid surface and the positions.\n   */\n  height?: number\n  /**\n   * The distance in meters between the ellipsoid surface and the extruded face.\n   */\n  extrudedHeight?: number\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * Determines the style of the corners.\n   */\n  cornerType?: Cesium.CornerType | number\n  /**\n   * Triggers before the VcGeometryCorridor is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryCorridor is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryCorridor is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryCorridorRef = VcComponentPublicInstance<VcGeometryCorridorProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:35:54\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\corridor-outline\\index.ts\n */\nimport { VcCartesian3Array, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { positions, width, ellipsoid, granularity, height, extrudedHeight, cornerType } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * An array of positions that define the center of the corridor.\n   */\n  positions: VcCartesian3Array\n  /**\n   * The distance between the edges of the corridor in meters.\n   */\n  width: number\n  /**\n   * The ellipsoid to be used as a reference.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n   */\n  granularity?: number\n  /**\n   * The distance in meters between the ellipsoid surface and the positions.\n   */\n  height?: number\n  /**\n   * The distance in meters between the ellipsoid surface and the extruded face.\n   */\n  extrudedHeight?: number\n  /**\n   * Determines the style of the corners.\n   */\n  cornerType?: Cesium.CornerType | number\n  /**\n   * Triggers before the VcGeometryCorridorOutline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryCorridorOutline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryCorridorOutline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryCorridorOutlineRef = VcComponentPublicInstance<VcGeometryCorridorOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:36:17\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\cylinder\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { length, topRadius, bottomRadius, slices, vertexFormat } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The length of the cylinder.\n   */\n  length: number\n  /**\n   * The radius of the top of the cylinder.\n   */\n  topRadius: number\n  /**\n   * \tThe radius of the bottom of the cylinder.\n   */\n  bottomRadius: number\n  /**\n   * The number of edges around the perimeter of the cylinder.\n   * Default value: 128\n   */\n  slices?: number\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * Triggers before the VcGeometryCylinder is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryCylinder is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryCylinder is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryCylinderRef = VcComponentPublicInstance<VcGeometryCylinderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:36:33\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\cylinder-outline\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { length, topRadius, bottomRadius, slices, numberOfVerticalLines } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The length of the cylinder.\n   */\n  length: number\n  /**\n   * The radius of the top of the cylinder.\n   */\n  topRadius: number\n  /**\n   * \tThe radius of the bottom of the cylinder.\n   */\n  bottomRadius: number\n  /**\n   * The number of edges around the perimeter of the cylinder.\n   * Default value: 128\n   */\n  slices?: number\n  /**\n   * Number of lines to draw between the top and bottom surfaces of the cylinder.\n   *  Default value: 16\n   */\n  numberOfVerticalLines?: number\n  /**\n   * Triggers before the VcGeometryCylinderOutline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryCylinderOutline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryCylinderOutline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryCylinderOutlineRef = VcComponentPublicInstance<VcGeometryCylinderOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 11:36:15\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\ellipse\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The ellipse's center point in the fixed frame.\n   */\n  center: VcPosition\n  /**\n   * The length of the ellipse's semi-major axis in meters.\n   */\n  semiMajorAxis: number\n  /**\n   * The length of the ellipse's semi-minor axis in meters.\n   */\n  semiMinorAxis: number\n  /**\n   * The ellipsoid the ellipse will be on.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The distance in meters between the ellipse and the ellipsoid surface.\n   */\n  height?: number\n  /**\n   * The distance in meters between the ellipse's extruded face and the ellipsoid surface.\n   */\n  extrudedHeight?: number\n  /**\n   * The angle of rotation counter-clockwise from north.\n   * Default value: 0.0\n   */\n  rotation?: number\n  /**\n   * The rotation of the texture coordinates counter-clockwise from north.\n   * Default value: 0.0\n   */\n  stRotation?: number\n  /**\n   * The angular distance between points on the ellipse in radians.\n   */\n  granularity?: number\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * Triggers before the VcGeometryEllipse is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryEllipse is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryEllipse is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryEllipseRef = VcComponentPublicInstance<VcGeometryEllipseProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:37:05\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\ellipse-outline\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The ellipse's center point in the fixed frame.\n   */\n  center: VcPosition\n  /**\n   * The length of the ellipse's semi-major axis in meters.\n   */\n  semiMajorAxis: number\n  /**\n   * The length of the ellipse's semi-minor axis in meters.\n   */\n  semiMinorAxis: number\n  /**\n   * The ellipsoid the ellipse will be on.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The distance in meters between the ellipse and the ellipsoid surface.\n   */\n  height?: number\n  /**\n   * The distance in meters between the ellipse's extruded face and the ellipsoid surface.\n   */\n  extrudedHeight?: number\n  /**\n   * The angle of rotation counter-clockwise from north.\n   * Default value: 0.0\n   */\n  rotation?: number\n  /**\n   * The rotation of the texture coordinates counter-clockwise from north.\n   * Default value: 0.0\n   */\n  stRotation?: number\n  /**\n   * The angular distance between points on the ellipse in radians.\n   */\n  granularity?: number\n  /**\n   * Number of lines to draw between the top and bottom surface of an extruded ellipse.\n   * Default value: 16\n   */\n  numberOfVerticalLines?: number\n  /**\n   * Triggers before the VcGeometryEllipseOutline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryEllipseOutline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryEllipseOutline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryEllipseOutlineRef = VcComponentPublicInstance<VcGeometryEllipseOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:37:27\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\ellipsoid\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport {\n  radii,\n  innerRadii,\n  minimumClock,\n  maximumClock,\n  minimumCone,\n  maximumCone,\n  stackPartitions,\n  slicePartitions,\n  vertexFormat\n} from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The radii of the ellipsoid in the x, y, and z directions.\n   */\n  radii?: VcPosition\n  /**\n   * The inner radii of the ellipsoid in the x, y, and z directions.\n   */\n  innerRadii?: VcPosition\n  /**\n   * The minimum angle lying in the xy-plane measured from the positive x-axis and toward the positive y-axis.\n   * Default value: 0.0\n   */\n  minimumClock?: number\n  /**\n   * The maximum angle lying in the xy-plane measured from the positive x-axis and toward the positive y-axis.\n   * Default value: 2*PI\n   */\n  maximumClock?: number\n  /**\n   * The minimum angle measured from the positive z-axis and toward the negative z-axis.\n   * Default value: 0.0\n   */\n  minimumCone?: number\n  /**\n   * The maximum angle measured from the positive z-axis and toward the negative z-axis.\n   * Default value: PI\n   */\n  maximumCone?: number\n  /**\n   * The number of times to partition the ellipsoid into stacks.\n   * Default value: 64\n   */\n  stackPartitions?: number\n  /**\n   * The number of times to partition the ellipsoid into radial slices.\n   * Default value: 64\n   */\n  slicePartitions?: number\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * Triggers before the VcGeometryEllipsoid is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryEllipsoid is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryEllipsoid is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryEllipsoidRef = VcComponentPublicInstance<VcGeometryEllipsoidProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:41:39\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\ellipsoid-outline\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The radii of the ellipsoid in the x, y, and z directions.\n   */\n  radii?: VcPosition\n  /**\n   * The inner radii of the ellipsoid in the x, y, and z directions.\n   */\n  innerRadii?: VcPosition\n  /**\n   * The minimum angle lying in the xy-plane measured from the positive x-axis and toward the positive y-axis.\n   * Default value: 0.0\n   */\n  minimumClock?: number\n  /**\n   * The maximum angle lying in the xy-plane measured from the positive x-axis and toward the positive y-axis.\n   * Default value: 2*PI\n   */\n  maximumClock?: number\n  /**\n   * The minimum angle measured from the positive z-axis and toward the negative z-axis.\n   * Default value: 0.0\n   */\n  minimumCone?: number\n  /**\n   * The maximum angle measured from the positive z-axis and toward the negative z-axis.\n   * Default value: PI\n   */\n  maximumCone?: number\n  /**\n   * The number of times to partition the ellipsoid into stacks.\n   * Default value: 64\n   */\n  stackPartitions?: number\n  /**\n   * The number of times to partition the ellipsoid into radial slices.\n   * Default value: 64\n   */\n  slicePartitions?: number\n  /**\n   * The number of points per line, determining the granularity of the curvature.\n   * Default value: 128\n   */\n  subdivisions?: number\n  /**\n   * Triggers before the VcGeometryEllipsoidOutline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryEllipsoidOutline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryEllipsoidOutline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryEllipsoidOutlineRef = VcComponentPublicInstance<VcGeometryEllipsoidOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:54:26\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\frustum\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { frustum, origin, orientation, vertexFormat } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The frustum.\n   */\n  frustum: Cesium.PerspectiveFrustum | Cesium.OrthographicFrustum\n  /**\n   * The origin of the frustum.\n   */\n  origin: VcPosition\n  /**\n   * The orientation of the frustum.\n   */\n  orientation: Cesium.Quaternion\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * Triggers before the VcGeometryFrustum is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryFrustum is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryFrustum is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryFrustumRef = VcComponentPublicInstance<VcGeometryFrustumProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 10:56:21\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\frustum-outline\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { frustum, origin, orientation } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The frustum.\n   */\n  frustum: Cesium.PerspectiveFrustum | Cesium.OrthographicFrustum\n  /**\n   * The origin of the frustum.\n   */\n  origin: VcPosition\n  /**\n   * The orientation of the frustum.\n   */\n  orientation: Cesium.Quaternion\n  /**\n   * Triggers before the VcGeometryFrustumOutline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryFrustumOutline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryFrustumOutline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryFrustumOutlineRef = VcComponentPublicInstance<VcGeometryFrustumOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 11:00:34\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\ground-polyline\\index.ts\n */\nimport { VcCartesian3Array, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { positions, width, granularity, loop, arcType } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * An array of Cartesian3 defining the polyline's points. Heights above the ellipsoid will be ignored.\n   */\n  positions: VcCartesian3Array\n  /**\n   * The screen space width in pixels.\n   */\n  width?: number\n  /**\n   * The distance interval in meters used for interpolating options.points. Defaults to 9999.0 meters. Zero indicates no interpolation.\n   */\n  granularity?: number\n  /**\n   * Whether during geometry creation a line segment will be added between the last and first line positions to make this Polyline a loop.\n   * Defalut value: false\n   */\n  loop?: boolean\n  /**\n   * The type of line the polyline segments must follow. Valid options are ArcType.GEODESIC and ArcType.RHUMB.\n   */\n  arcType?: number | Cesium.ArcType\n  /**\n   * Triggers before the VcGeometryGroundPolyline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryGroundPolyline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryGroundPolyline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryGroundPolylineRef = VcComponentPublicInstance<VcGeometryGroundPolylineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 11:02:31\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\plane\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { vertexFormat } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * Triggers before the VcGeometryPlane is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryPlane is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryPlane is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryPlaneRef = VcComponentPublicInstance<VcGeometryPlaneProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 11:03:15\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\plane-outline\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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\nexport type VcGeometryPlaneOutlineProps = {\n  /**\n   * Triggers before the VcGeometryPlaneOutline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryPlaneOutline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryPlaneOutline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryPlaneOutlineRef = VcComponentPublicInstance<VcGeometryPlaneOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 11:34:30\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\polygon\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPolygonHierarchy, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A polygon hierarchy that can include holes.\n   */\n  polygonHierarchy: VcPolygonHierarchy\n  /**\n   * The distance in meters between the polygon and the ellipsoid surface.\n   */\n  height?: number\n  /**\n   * The distance in meters between the polygon's extruded face and the ellipsoid surface.\n   */\n  extrudedHeight?: number\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * The rotation of the texture coordinates, in radians. A positive rotation is counter-clockwise.\n   * Default value: 0.0\n   */\n  stRotation?: number\n  /**\n   * The ellipsoid to be used as a reference.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n   */\n  granularity?: number\n  /**\n   * Use the height of options.positions for each position instead of using options.height to determine the height.\n   * Default value: false\n   */\n  perPositionHeight?: boolean\n  /**\n   * When false, leaves off the top of an extruded polygon open.\n   * Default value: true\n   */\n  closeTop?: boolean\n  /**\n   * When false, leaves off the bottom of an extruded polygon open.\n   * Default value: true\n   */\n  closeBottom?: boolean\n  /**\n   * The type of line the polygon edges must follow. Valid options are ArcType.GEODESIC and ArcType.RHUMB.\n   */\n  arcType?: number | Cesium.ArcType\n  /**\n   * Triggers before the VcGeometryPolygon is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryPolygon is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryPolygon is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryPolygonRef = VcComponentPublicInstance<VcGeometryPolygonProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 11:36:10\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\polygon-outline\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcPolygonHierarchy, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport type { ExtractPropTypes } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport {\n  polygonHierarchy,\n  height,\n  extrudedHeight,\n  vertexFormat,\n  ellipsoid,\n  granularity,\n  perPositionHeight,\n  arcType\n} from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A polygon hierarchy that can include holes.\n   */\n  polygonHierarchy: VcPolygonHierarchy\n  /**\n   * The distance in meters between the polygon and the ellipsoid surface.\n   */\n  height?: number\n  /**\n   * The distance in meters between the polygon's extruded face and the ellipsoid surface.\n   */\n  extrudedHeight?: 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   * The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n   */\n  granularity?: number\n  /**\n   * Use the height of options.positions for each position instead of using options.height to determine the height.\n   * Default value: false\n   */\n  perPositionHeight?: boolean\n  /**\n   * The type of line the polygon edges must follow. Valid options are ArcType.GEODESIC and ArcType.RHUMB.\n   */\n  arcType?: number | Cesium.ArcType\n  /**\n   * Triggers before the VcGeometryPolygonOutline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryPolygonOutline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryPolygonOutline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryPolygonOutlineRef = VcComponentPublicInstance<VcGeometryPolygonOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 11:40:46\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\polyline\\index.ts\n */\nimport { VcCartesian3Array, VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { positions, width, colors, arcType, granularity, vertexFormat, ellipsoid } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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\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 VcGeometryPolyline is loaded\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryPolyline is successfully loaded\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryPolyline is destroyed\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryPolylineRef = VcComponentPublicInstance<VcGeometryPolylineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 11:40:36\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\polyline-volume\\index.ts\n */\nimport { VcCartesian2Array, VcCartesian3Array, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { polylinePositions, shapePositions, ellipsoid, granularity, vertexFormat, cornerType } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * An array of VcCartesian3Array positions that define the center of the polyline volume.\n   */\n  polylinePositions: VcCartesian3Array\n  /**\n   * An array of VcCartesian2Array positions that define the shape to be extruded along the polyline.\n   */\n  shapePositions: VcCartesian2Array\n  /**\n   * The ellipsoid to be used as a reference.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The distance, in radians, between each latitude and longitude. 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   * Determines the style of the corners.\n   */\n  cornerType?: number | Cesium.CornerType\n  /**\n   * Triggers before the VcGeometryPolylineVolume is loaded\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryPolylineVolume is successfully loaded\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryPolylineVolume is destroyed\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryPolylineVolumeRef = VcComponentPublicInstance<VcGeometryPolylineVolumeProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 11:42:49\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\polyline-volume-outline\\index.ts\n */\nimport { VcCartesian2Array, VcCartesian3Array, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { polylinePositions, shapePositions, ellipsoid, granularity, cornerType } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * An array of VcCartesian3Array positions that define the center of the polyline volume.\n   */\n  polylinePositions: VcCartesian3Array\n  /**\n   * An array of VcCartesian2Array positions that define the shape to be extruded along the polyline.\n   */\n  shapePositions: VcCartesian2Array\n  /**\n   * The ellipsoid to be used as a reference.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n   */\n  granularity?: number\n  /**\n   * Determines the style of the corners.\n   */\n  cornerType?: number | Cesium.CornerType\n  /**\n   * Triggers before the VcGeometryPolylineVolumeOutline is loaded\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryPolylineVolumeOutline is successfully loaded\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryPolylineVolumeOutline is destroyed\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryPolylineVolumeOutlineRef = VcComponentPublicInstance<VcGeometryPolylineVolumeOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-20 09:36:52\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\rectangle\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject, VcRectangle } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { rectangle, vertexFormat, ellipsoid, granularity, height, rotation, stRotation, extrudedHeight } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A cartographic rectangle with north, south, east and west properties in radians.\n   */\n  rectangle: VcRectangle\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * The ellipsoid on which the rectangle lies.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n   */\n  granularity?: number\n  /**\n   * The distance in meters between the rectangle and the ellipsoid surface.\n   */\n  height?: number\n  /**\n   * The rotation of the rectangle, in radians. A positive rotation is counter-clockwise.\n   * Default value: 0.0\n   */\n  rotation?: number\n  /**\n   * The rotation of the texture coordinates, in radians. A positive rotation is counter-clockwise.\n   * Default value: 0.0\n   */\n  stRotation?: number\n  /**\n   * The distance in meters between the rectangle's extruded face and the ellipsoid surface.\n   */\n  extrudedHeight?: number\n  /**\n   * Triggers before the VcGeometryRectangle is loaded\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryRectangle is successfully loaded\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryRectangle is destroyed\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryRectangleRef = VcComponentPublicInstance<VcGeometryRectangleProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-20 09:36:56\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\rectangle-outline\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject, VcRectangle } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { rectangle, ellipsoid, granularity, height, rotation, extrudedHeight } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A cartographic rectangle with north, south, east and west properties in radians.\n   */\n  rectangle: VcRectangle\n  /**\n   * The ellipsoid on which the rectangle lies.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n   */\n  granularity?: number\n  /**\n   * The distance in meters between the rectangle and the ellipsoid surface.\n   */\n  height?: number\n  /**\n   * The rotation of the rectangle, in radians. A positive rotation is counter-clockwise.\n   * Default value: 0.0\n   */\n  rotation?: number\n  /**\n   * The distance in meters between the rectangle's extruded face and the ellipsoid surface.\n   */\n  extrudedHeight?: number\n  /**\n   * Triggers before the VcGeometryRectangleOutline is loaded\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryRectangleOutline is successfully loaded\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryRectangleOutline is destroyed\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryRectangleOutlineRef = VcComponentPublicInstance<VcGeometryRectangleOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 13:16:28\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\simple-polyline\\index.ts\n */\nimport { VcCartesian3Array, VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { positions, colors, arcType, granularity, ellipsoid } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * An array of VcCartesian3Array defining the positions in the polyline as a line strip.\n   */\n  positions: VcCartesian3Array\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   */\n  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 ellipsoid to be used as a reference.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * Triggers before the VcGeometrySimplePolyline is loaded\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometrySimplePolyline is successfully loaded\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometrySimplePolyline is destroyed\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometrySimplePolylineRef = VcComponentPublicInstance<VcGeometrySimplePolylineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 13:20:19\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\sphere\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { radius, stackPartitions, slicePartitions, vertexFormat } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The radius of the sphere.\n   */\n  radius?: number\n  /**\n   * The number of times to partition the ellipsoid into stacks.\n   * Default value: 64\n   */\n  stackPartitions?: number\n  /**\n   * The number of times to partition the ellipsoid into radial slices.\n   * Default value: 64\n   */\n  slicePartitions?: number\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * Triggers before the VcGeometrySphere is loaded\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometrySphere is successfully loaded\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometrySphere is destroyed\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometrySphereRef = VcComponentPublicInstance<VcGeometrySphereProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 13:21:07\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\sphere-outline\\index.ts\n */\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { radius, stackPartitions, slicePartitions, subdivisions } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The radius of the sphere.\n   */\n  radius?: number\n  /**\n   * The number of times to partition the ellipsoid into stacks.\n   * Default value: 64\n   */\n  stackPartitions?: number\n  /**\n   * The number of times to partition the ellipsoid into radial slices.\n   * Default value: 64\n   */\n  slicePartitions?: number\n  /**\n   * The number of points per line, determining the granularity of the curvature .\n   * Default value: 128\n   */\n  subdivisions?: number\n  /**\n   * Triggers before the VcGeometrySphereOutline is loaded\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometrySphereOutline is successfully loaded\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometrySphereOutline is destroyed\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometrySphereOutlineRef = VcComponentPublicInstance<VcGeometrySphereOutlineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 13:24:28\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\wall\\index.ts\n */\nimport { VcCartesian3Array, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { positions, granularity, maximumHeights, minimumHeights, ellipsoid, vertexFormat } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * An array of Cartesian objects, which are the points of the wall.\n   */\n  positions: VcCartesian3Array\n  /**\n   * The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n   */\n  granularity?: number\n  /**\n   * An array parallel to positions that give the maximum height of the wall at positions. If undefined, the height of each position in used.\n   */\n  maximumHeights?: number[]\n  /**\n   * An array parallel to positions that give the minimum height of the wall at positions. If undefined, the height at each position is 0.0.\n   */\n  minimumHeights?: number[]\n  /**\n   * The ellipsoid for coordinate manipulation.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The vertex attributes to be computed.\n   */\n  vertexFormat?: Cesium.VertexFormat\n  /**\n   * Triggers before the VcGeometryWall is loaded\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryWall is successfully loaded\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryWall is destroyed\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryWallRef = VcComponentPublicInstance<VcGeometryWallProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 13:25:35\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometries\\wall-outline\\index.ts\n */\nimport { VcCartesian3Array, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'\nimport { useGeometries } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { positions, granularity, maximumHeights, minimumHeights, ellipsoid } from 'casc-cesium-utils/cesium-props'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * An array of Cartesian objects, which are the points of the wall.\n   */\n  positions: VcCartesian3Array\n  /**\n   * The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n   */\n  granularity?: number\n  /**\n   * An array parallel to positions that give the maximum height of the wall at positions. If undefined, the height of each position in used.\n   */\n  maximumHeights?: number[]\n  /**\n   * An array parallel to positions that give the minimum height of the wall at positions. If undefined, the height at each position is 0.0.\n   */\n  minimumHeights?: number[]\n  /**\n   * The ellipsoid for coordinate manipulation.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * Triggers before the VcGeometryWallOutline is loaded\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGeometryWallOutline is successfully loaded\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGeometryWallOutline is destroyed\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcGeometryWallOutlineRef = VcComponentPublicInstance<VcGeometryWallOutlineProps>\n","import { SFCWithInstall } from 'casc-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","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-15 09:47:36\n * @LastEditTime: 2022-07-25 17:36:49\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\use-drawing-action.ts\n */\n// import { enableMouseEvent } from 'casc-cesium-utils/cesium-props'\nimport type { VcReadyObject, VcComponentInternalInstance, VcComponentPublicInstance, VcDrawingProvider, VcPickEvent } from 'casc-cesium-utils/types'\nimport { ref, computed } from 'vue'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus } from 'casc-cesium-shared'\nimport useTimeout from 'casc-cesium-composables/private/use-timeout'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { VcDrawTipOpts } from 'casc-cesium-utils/drawing-types'\n\nexport default function (props, ctx, instance: VcComponentInternalInstance, cmpName: string, $services: VcDrawingProvider) {\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 = computed<VcDrawTipOpts>(() => {\n    return {\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\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-08-02 22:20:33\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\use-drawing-segment.ts\n */\nimport { VcBtn, VcTooltip } from 'casc-cesium-components/ui'\nimport { VcOverlayHtml } from 'casc-cesium-components/overlays'\nimport { VcCollectionLabel, VcCollectionPoint, VcCollectionPrimitive, VcLabelProps, VcPolygon } from 'casc-cesium-components/primitive-collections'\nimport { VcPrimitive, VcPrimitiveGroundPolyline, VcViewshed } from 'casc-cesium-components/primitives'\nimport { VcGeometryInstance } from 'casc-cesium-components/geometry-instance'\nimport { VcGeometryPolyline, VcGeometryGroundPolyline } from 'casc-cesium-components/geometries'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus, MeasureUnits } from 'casc-cesium-shared'\nimport {\n  calculateAreaByPostions,\n  getGeodesicDistance,\n  getPolylineSegmentHeading,\n  getHeadingPitchRoll,\n  getPolylineSegmentEndpoint,\n  getPolylineSegmentPitch,\n  makeCartesian2,\n  makeCartesian3Array,\n  getFirstIntersection\n} from 'casc-cesium-utils/cesium-helpers'\nimport { VcSegmentDrawing } from 'casc-cesium-utils/drawing-types'\nimport type { VcComponentInternalInstance, VcDrawingProvider, VcReadyObject } from 'casc-cesium-utils/types'\nimport { isUndefined } from 'casc-cesium-utils/util'\nimport { reactive, VNode } from 'vue'\nimport { computed, getCurrentInstance, h, nextTick, ref } from 'vue'\nimport useCommon from '../use-common'\nimport useDrawingAction from './use-drawing-action'\nimport { VcAnalysesRef, VcDrawingsRef, VcMeasurementsRef } from 'casc-cesium-components'\nimport { platform } from 'casc-cesium-utils/platform'\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.$services as VcDrawingProvider\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  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        pointOpts: {},\n        labelOpts: {},\n        labelsOpts: {},\n        polylineOpts: {},\n        primitiveOpts: {},\n        polygonOpts: {}\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 = reactive<Array<VcLabelProps>>([])\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      polylineSegment.points = polylineSegment.positions.map(v => {\n        return {\n          position: v\n        }\n      })\n\n      const polyline: VcSegmentDrawing = {\n        ...polylineSegment,\n        distance,\n        heading,\n        pitch\n      }\n\n      const labelOpts = Object.assign({}, props.labelOpts, polyline.labelOpts)\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.heading += (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        // updateViewshed\n        Object.assign(polyline.viewshedOpts, { startPosition, endPosition })\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          ...labelOpts\n        })\n      }\n\n      if (polyline.polygonPositions && polyline.polygonPositions.length) {\n        const labelsOpts = Object.assign({}, props.labelsOpts, polyline.labelsOpts)\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              ...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                ...labelsOpts\n              })\n            }\n          }\n        }\n\n        const area = calculateAreaByPostions(positions)\n        props.showLabel &&\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            ...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      polyline.positionsDegreesArray = polyline.positions.map(v => {\n        const cart = Cesium.Cartographic.fromCartesian(v, viewer.scene.globe.ellipsoid)\n        return [CesiumMath.toDegrees(cart.longitude), CesiumMath.toDegrees(cart.latitude), cart.height]\n      })\n      polyline?.polygonPositions?.length &&\n        (polyline.polygonPositionsDegreesArray = polyline.polygonPositions.map(v => {\n          const cart = Cesium.Cartographic.fromCartesian(v, viewer.scene.globe.ellipsoid)\n          return [CesiumMath.toDegrees(cart.longitude), CesiumMath.toDegrees(cart.latitude), cart.height]\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    if (props.autoUpdateLabelPosition) {\n      cmpName === 'VcMeasurementDistance' && viewer.scene.preRender.addEventListener(updateLabelPosition)\n      ;(cmpName === 'VcMeasurementRegular' ||\n        cmpName === 'VcMeasurementRectangle' ||\n        cmpName === 'VcDrawingRegular' ||\n        cmpName === 'VcDrawingRectangle') &&\n        viewer.scene.preRender.addEventListener(updateLabelPositionPolygon)\n    }\n\n    return true\n  }\n\n  instance.unmount = async () => {\n    const { viewer } = $services\n    if (props.autoUpdateLabelPosition) {\n      cmpName === 'VcMeasurementDistance' && viewer.scene.preRender.removeEventListener(updateLabelPosition)\n      ;(cmpName === 'VcMeasurementRegular' ||\n        cmpName === 'VcMeasurementRectangle' ||\n        cmpName === 'VcDrawingRegular' ||\n        cmpName === 'VcDrawingRectangle') &&\n        viewer.scene.preRender.removeEventListener(updateLabelPositionPolygon)\n    }\n\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\n        if (!labelTotalLength) return\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      pointOpts: {},\n      labelOpts: {},\n      labelsOpts: {},\n      polylineOpts: {},\n      primitiveOpts: {},\n      polygonOpts: {}\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 = (removeLatest = true) => {\n    if (removeLatest && drawStatus.value === DrawStatus.Drawing) {\n      renderDatas.value.pop()\n    }\n\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n    const polyline: VcSegmentDrawing = renderDatas.value[index]\n    if (polyline) {\n      polyline.drawStatus = DrawStatus.AfterDraw\n    }\n\n    drawStatus.value = DrawStatus.AfterDraw\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    const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n    if (options.button === 2 && options.ctrl) {\n      // 取消绘制\n      const drawingsOption = drawingFabInstanceVm.getDrawingActionInstance(drawingType)\n      drawingFabInstanceVm.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      drawingFabInstanceVm.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    const scene = viewer.scene\n\n    if (drawStatus.value === DrawStatus.BeforeDraw) {\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          drawingFabInstanceVm.toggleAction(selectedDrawingActionInstance)\n        }\n      }\n\n      if (cmpName === 'VcAnalysisViewshed') {\n        polyline.viewshedOpts = {\n          ...props.viewshedOpts\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        if (platform().hasTouch === true) {\n          const position = getWorldPosition(scene, movement, {} as any)\n          if (defined(position)) {\n            const positions = polyline.positions\n            positions.splice(editingPoint.value._index, 1, position)\n            editingPoint.value.pixelSize = props.pointOpts?.pixelSize * 1.0\n          }\n        }\n\n        editingPoint.value = undefined\n        drawingFabInstanceVm.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 (platform().hasTouch === true) {\n          const position = getWorldPosition(scene, movement, {} as any)\n          if (defined(position)) {\n            const positions = polyline.positions\n            positions[1] = position\n          }\n        }\n        if (props.mode === 1) {\n          drawingFabInstanceVm.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)) {\n        const positions = polyline.positions.slice()\n        positions[editingPoint.value ? editingPoint.value._index : 1] = heightPostion\n        polyline.positions = positions\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.slice()\n      positions[editingPoint.value ? editingPoint.value._index : 1] = position\n      polyline.positions = positions\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      const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n      drawingFabInstanceVm.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 = { computedRenderDatas, renderDatas, startNew, stop, clear, handleMouseClick, handleMouseMove }\n  Object.assign(instance.proxy, publicMethods)\n\n  return () => {\n    const { createGuid } = Cesium\n\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      const polylineOpts = Object.assign({}, props.polylineOpts, polyline.polylineOpts)\n      props.clampToGround && delete polylineOpts.arcType\n      const primitiveOpts = Object.assign({}, props.primitiveOpts, polyline.primitiveOpts)\n      if (positions?.length && positions?.length > 1) {\n        // polyline\n        children.push(\n          h(\n            props.clampToGround ? VcPrimitiveGroundPolyline : VcPrimitive,\n            {\n              ...primitiveOpts,\n              show: (polyline.show && primitiveOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing,\n              onReady: (readyObject: VcReadyObject) => {\n                primitiveOpts?.onReady?.(readyObject)\n                ;(readyObject.cesiumObject as any)._vcPolylineIndex = index // for editor\n              }\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        // viewshed\n        if (cmpName === 'VcAnalysisViewshed') {\n          children.push(h(VcViewshed, { ...polyline.viewshedOpts }))\n        }\n      }\n\n      if (polyline.polygonPositions && polyline.polygonPositions.length > 2) {\n        const polygonOpts = Object.assign({}, props?.polygonOpts, polyline?.polygonOpts)\n        polygonOpts.clampToGround = props.clampToGround\n        // polygon\n        children.push(\n          h(VcPolygon, {\n            positions: positions,\n            show: polyline.show && polygonOpts?.show,\n            ...polygonOpts,\n            onReady: (readyObject: VcReadyObject) => {\n              onVcPrimitiveReady(readyObject)\n              polygonOpts?.onReady?.(readyObject)\n              ;(readyObject.cesiumObject as any)._vcPolylineIndex = index // for editor\n            }\n          })\n        )\n      }\n      if (polyline.xyPolylinePositions && polyline.xyPolylinePositions.length > 1) {\n        // xyPolyline\n        children.push(\n          h(\n            VcPrimitive,\n            {\n              show: (polyline.show && primitiveOpts) || props.editable || polyline.drawStatus === DrawStatus.Drawing,\n              ...primitiveOpts,\n              onReady: (readyObject: VcReadyObject) => {\n                primitiveOpts?.onReady?.(readyObject)\n                ;(readyObject.cesiumObject as any)._vcPolylineIndex = index // for editor\n              }\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              show: (polyline.show && primitiveOpts) || props.editable || polyline.drawStatus === DrawStatus.Drawing,\n              ...primitiveOpts\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      // points\n      const polylinePointOpts = Object.assign({}, props.pointOpts, polyline.pointOpts)\n      children.push(\n        h(VcCollectionPoint, {\n          enableMouseEvent: props.enableMouseEvent,\n          show: polyline.show,\n          points: polyline.points.map((point, subIndex) => {\n            const position = point.position as Cesium.Cartesian3\n            const pointOpts = Object.assign({}, polylinePointOpts, point)\n            return {\n              position,\n              id: createGuid(),\n              _vcPolylineIndx: index, // for editor\n              ...pointOpts,\n              show:\n                (pointOpts?.show || props.editable || polyline.drawStatus === DrawStatus.Drawing) &&\n                (cmpName === 'VcAnalysisSightline' && polyline.positions.length === 3 ? subIndex !== 1 : true)\n            }\n          }),\n          onMouseover: onMouseoverPoints,\n          onMouseout: onMouseoutPoints,\n          onReady: onVcCollectionPointReady\n        })\n      )\n\n      // labels\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-06-24 16:56:41\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\distance\\index.ts\n */\nimport { ComputedRef, defineComponent, Ref } from 'vue'\nimport useDrawingSegment from 'casc-cesium-composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from 'casc-cesium-shared'\nimport type { VcLabelProps, VcPointProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport {\n  MeasurementDecimals,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcSegmentDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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 as PropType<MeasurementDecimals>,\n    autoUpdateLabelPosition: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcMeasurementDistance')\n  }\n})\n\nexport type VcMeasurementDistanceProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Specify the unit of measurement\n   */\n  measureUnits?: MeasureUnits\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify parameters for measurement labels.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify parameters for measurement locale.\n   */\n  locale?: string\n  /**\n   * Specify parameters for measurement decimals.\n   */\n  decimals?: MeasurementDecimals\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify whether to update label position.\n   * Default value: true\n   */\n  autoUpdateLabelPosition?: boolean\n  xLabelOpts?: VcLabelProps\n  xAngleLabelOpts?: VcLabelProps\n  yLabelOpts?: VcLabelProps\n  yAngleLabelOpts?: VcLabelProps\n  /**\n   * Triggers before the VcMeasurementDistance is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcMeasurementDistance is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcMeasurementDistance is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcSegmentDrawing>, 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\nexport interface VcMeasurementDistanceRef extends VcComponentPublicInstance<VcMeasurementDistanceProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<VcSegmentDrawing[]>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<VcSegmentDrawing[]>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-21 10:43:32\n * @LastEditTime: 2022-07-14 18:04:54\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\use-drawing-polyline.ts\n */\nimport { VcPrimitive, VcPrimitiveGroundPolyline } from 'casc-cesium-components/primitives'\nimport { VcGeometryInstance } from 'casc-cesium-components/geometry-instance'\nimport { VcGeometryPolyline, VcGeometryGroundPolyline } from 'casc-cesium-components/geometries'\nimport { VcOverlayHtml } from 'casc-cesium-components/overlays'\nimport { VcCollectionLabel, VcCollectionPoint, VcCollectionPrimitive, VcLabelProps, VcPolygon } from 'casc-cesium-components/primitive-collections'\nimport { VcBtn, VcTooltip } from 'casc-cesium-components/ui'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus, MeasureUnits } from 'casc-cesium-shared'\nimport { calculateAreaByPostions, getFirstIntersection, getGeodesicDistance, makeCartesian3Array } from 'casc-cesium-utils/cesium-helpers'\nimport type { VcPolylineDrawing } from 'casc-cesium-utils/drawing-types'\nimport type { VcComponentInternalInstance, VcDrawingProvider, VcReadyObject } from 'casc-cesium-utils/types'\nimport { reactive, VNode } from 'vue'\nimport { computed, getCurrentInstance, nextTick, ref, h } from 'vue'\nimport useCommon from '../use-common'\nimport useDrawingAction from './use-drawing-action'\nimport { VcAnalysesRef, VcDrawingsRef, VcMeasurementsRef } from 'casc-cesium-components'\nimport { platform } from 'casc-cesium-utils/platform'\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.$services as VcDrawingProvider\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        polylineOpts: {},\n        pointOpts: {},\n        labelOpts: {},\n        labelsOpts: {},\n        primitiveOpts: {},\n        polygonOpts: {}\n      }\n\n      renderDatas.value.push(polylineDrawing)\n    })\n  }\n\n  const computedRenderDatas = computed<Array<VcPolylineDrawing>>(() => {\n    const { Cartesian3, createGuid, defined, Math: CesiumMath } = Cesium\n    const polylines: Array<VcPolylineDrawing> = []\n    const { viewer } = $services\n    renderDatas.value.forEach((polyline, index) => {\n      const labels = reactive<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      polyline.points = polyline.positions.map(v => {\n        return {\n          position: v\n        }\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          const polylineLabelsOpts = Object.assign({}, props.labelsOpts, polyline.labelsOpts)\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              ...polylineLabelsOpts\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                ...polylineLabelsOpts\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        const polylineLabelOpts = Object.assign({}, props.labelOpts, polyline.labelOpts)\n\n        if (props.showLabel) {\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              ...polylineLabelOpts\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              ...polylineLabelOpts\n            })\n          }\n        }\n\n        polyline.positionsDegreesArray = polyline.positions.map(v => {\n          const cart = Cesium.Cartographic.fromCartesian(v, viewer.scene.globe.ellipsoid)\n          return [CesiumMath.toDegrees(cart.longitude), CesiumMath.toDegrees(cart.latitude), cart.height]\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\n  // methods\n  instance.mount = async () => {\n    const { viewer } = $services\n    props.autoUpdateLabelPosition && viewer.scene.preRender.addEventListener(updateLabelPosition)\n    return true\n  }\n  instance.unmount = async () => {\n    const { viewer } = $services\n    props.autoUpdateLabelPosition && 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      polylineOpts: {},\n      pointOpts: {},\n      labelOpts: {},\n      labelsOpts: {},\n      primitiveOpts: {},\n      polygonOpts: {}\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 = (removeLatest = true) => {\n    if (removeLatest && drawStatus.value === DrawStatus.Drawing) {\n      renderDatas.value.pop()\n    }\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndex : renderDatas.value.length - 1\n    const polyline: VcPolylineDrawing = renderDatas.value[index]\n    if (polyline) {\n      polyline.positions = polyline.tempPositions\n      polyline.drawStatus = DrawStatus.AfterDraw\n    }\n\n    drawStatus.value = DrawStatus.AfterDraw\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    const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n    if (options.button === 2 && options.ctrl) {\n      const drawingsOption = drawingFabInstanceVm.getDrawingActionInstance(drawingType)\n      drawingFabInstanceVm.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      drawingFabInstanceVm.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        if (platform().hasTouch === true) {\n          const position = getWorldPosition(scene, movement, {} as any)\n          if (defined(position)) {\n            const positions = polyline.positions\n            positions.splice(editingPoint.value._index, 1, position)\n            editingPoint.value.pixelSize = props.pointOpts?.pixelSize * 1.0\n          }\n        }\n\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        drawingFabInstanceVm.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\n      stop(false)\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          const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n          drawingFabInstanceVm.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    const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\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      drawingFabInstanceVm.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      drawingFabInstanceVm.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    computedRenderDatas,\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 { createGuid, Cartesian3 } = Cesium\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        const polylineOpts = Object.assign({}, props.polylineOpts, polyline.polylineOpts)\n        props.clampToGround && delete polylineOpts.arcType\n        const primitiveOpts = Object.assign({}, props.primitiveOpts, polyline.primitiveOpts)\n        children.push(\n          h(\n            props.clampToGround ? VcPrimitiveGroundPolyline : VcPrimitive,\n            {\n              show: (polyline.show && primitiveOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing,\n              ...primitiveOpts,\n              onReady: (readyObject: VcReadyObject) => {\n                primitiveOpts?.onReady?.(readyObject)\n                ;(readyObject.cesiumObject as any)._vcPolylineIndex = index // for editor\n              }\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 = Object.assign({}, props.dashLineOpts, polyline.dashLineOpts)\n      const dashLinePrimitiveOpts = Object.assign({}, props.dashLinePrimitiveOpts, polyline.dashLinePrimitiveOpts)\n      polyline.dashedLines?.forEach(dashedLine => {\n        children.push(\n          h(\n            VcPrimitive,\n            {\n              show: (polyline.show && props.dashLinePrimitiveOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing,\n              ...dashLinePrimitiveOpts\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      const polylinePointOpts = Object.assign({}, props.pointOpts, polyline.pointOpts)\n      children.push(\n        h(VcCollectionPoint, {\n          enableMouseEvent: props.enableMouseEvent,\n          show: polyline.show,\n          points: polyline.points.map((point, subIndex) => {\n            const position = point.position as Cesium.Cartesian3\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\n            const pointOpts = Object.assign({}, polylinePointOpts, point)\n            return {\n              position,\n              id: createGuid(),\n              _vcPolylineIndex: index, // for editor\n              show,\n              ...pointOpts\n            }\n          }),\n          onMouseover: onMouseoverPoints,\n          onMouseout: onMouseoutPoints,\n          onReady: onVcCollectionPointReady\n        })\n      )\n      // labels\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        const polygonOpts = Object.assign({}, props.polygonOpts, polyline.polygonOpts)\n        children.push(\n          h(VcPolygon, {\n            positions: positions,\n            clampToGround: props.clampToGround,\n            show: polyline.show && props.polygonOpts?.show,\n            ...polygonOpts,\n            onReady: (readyObject: VcReadyObject) => {\n              onVcPrimitiveReady(readyObject)\n              polygonOpts?.onReady?.(readyObject)\n              ;(readyObject.cesiumObject as any)._vcPolylineIndex = index // for editor\n            }\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-06-24 16:58:39\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\polyline\\index.ts\n */\nimport { ComputedRef, defineComponent, Ref } from 'vue'\nimport useDrawingPolyline from 'casc-cesium-composables/use-drawing/use-drawing-polyline'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from 'casc-cesium-shared'\nimport type { VcLabelProps, VcPointProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport {\n  MeasurementDecimals,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcPolylineDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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 as PropType<MeasurementDecimals>,\n    showLabel: Boolean,\n    showAngleLabel: Boolean,\n    showDistanceLabel: Boolean,\n    autoUpdateLabelPosition: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPolyline(props, ctx, 'VcMeasurementPolyline')\n  }\n})\n\nexport type VcMeasurementPolylineProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Specify the unit of measurement\n   */\n  measureUnits?: MeasureUnits\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify whether a line segment will be added between the last and first line positions to make this line a loop.\n   */\n  loop?: boolean\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   * Specify parameters for measurement labels.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify the labelsOpts.\n   */\n  labelsOpts?: VcLabelProps\n  /**\n   * Specify parameters for measurement locale.\n   */\n  locale?: string\n  /**\n   * Specify parameters for measurement decimals.\n   */\n  decimals?: MeasurementDecimals\n  /**\n   * Specify whether to display the label.\n   */\n  showLabel?: boolean\n  /**\n   * Specify whether to display angle labels.\n   */\n  showAngleLabel?: boolean\n  /**\n   * Specify whether to display distance labels.\n   */\n  showDistanceLabel?: boolean\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify whether to update label position.\n   * Default value: true\n   */\n  autoUpdateLabelPosition?: boolean\n  /**\n   * Triggers before the VcMeasurementPolyline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcMeasurementPolyline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcMeasurementPolyline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcPolylineDrawing>, 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\nexport interface VcMeasurementPolylineRef extends VcComponentPublicInstance<VcMeasurementPolylineProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<VcPolylineDrawing[]>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<VcPolylineDrawing[]>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-06-24 16:58:26\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\horizontal\\index.ts\n */\nimport { ComputedRef, defineComponent, Ref } from 'vue'\nimport useDrawingPolyline from 'casc-cesium-composables/use-drawing/use-drawing-polyline'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from 'casc-cesium-shared'\nimport type { VcLabelProps, VcPointProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport {\n  MeasurementDecimals,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcPolylineDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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 as PropType<MeasurementDecimals>,\n    showLabel: Boolean,\n    showAngleLabel: Boolean,\n    showDashedLine: Boolean,\n    showDistanceLabel: Boolean,\n    autoUpdateLabelPosition: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPolyline(props, ctx, 'VcMeasurementHorizontal')\n  }\n})\n\nexport type VcMeasurementHorizontalProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Specify the unit of measurement\n   */\n  measureUnits?: MeasureUnits\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify parameters for drawing dash lines.\n   */\n  dashLineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing dash line primitive.\n   */\n  dashLinePrimitiveOpts?: VcPrimitiveProps\n  /**\n   * Specify parameters for measurement labels.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify the labelsOpts.\n   */\n  labelsOpts?: VcLabelProps\n  /**\n   * Specify parameters for measurement locale.\n   */\n  locale?: string\n  /**\n   * Specify parameters for measurement decimals.\n   */\n  decimals?: MeasurementDecimals\n  /**\n   * Specify whether to display the label.\n   */\n  showLabel?: boolean\n  /**\n   * Specify whether to display angle labels.\n   */\n  showAngleLabel?: boolean\n  /**\n   * Specify whether to display dashed lines.\n   */\n  showDashedLine?: boolean\n  /**\n   * Specify whether to display distance labels.\n   */\n  showDistanceLabel?: boolean\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify whether to update label position.\n   * Default value: true\n   */\n  autoUpdateLabelPosition?: boolean\n  /**\n   * Triggers before the VcMeasurementHorizontal is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcMeasurementHorizontal is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcMeasurementHorizontal is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcPolylineDrawing>, 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\nexport interface VcMeasurementHorizontalRef extends VcComponentPublicInstance<VcMeasurementHorizontalProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<VcPolylineDrawing[]>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<VcPolylineDrawing[]>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-06-24 16:59:02\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\vertical\\index.ts\n */\nimport { ComputedRef, defineComponent, Ref } from 'vue'\nimport useDrawingSegment from 'casc-cesium-composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from 'casc-cesium-shared'\nimport type { VcLabelProps, VcPointProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport {\n  MeasurementDecimals,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcSegmentDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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 as PropType<MeasurementDecimals>,\n    autoUpdateLabelPosition: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcMeasurementVertical')\n  }\n})\n\nexport type VcMeasurementVerticalProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Specify the unit of measurement\n   */\n  measureUnits?: MeasureUnits\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify parameters for measurement labels.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify parameters for measurement locale.\n   */\n  locale?: string\n  /**\n   * Specify parameters for measurement decimals.\n   */\n  decimals?: MeasurementDecimals\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify whether to update label position.\n   * Default value: true\n   */\n  autoUpdateLabelPosition?: boolean\n  /**\n   * Triggers before the VcMeasurementVertical is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcMeasurementVertical is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcMeasurementVertical is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcSegmentDrawing>, 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\nexport interface VcMeasurementVerticalRef extends VcComponentPublicInstance<VcMeasurementVerticalProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<VcSegmentDrawing[]>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<VcSegmentDrawing[]>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-06-24 16:56:48\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\height\\index.ts\n */\nimport { ComputedRef, defineComponent, Ref } from 'vue'\nimport useDrawingSegment from 'casc-cesium-composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from 'casc-cesium-shared'\nimport type { VcLabelProps, VcPointProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport {\n  MeasurementDecimals,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcSegmentDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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 as PropType<MeasurementDecimals>,\n    autoUpdateLabelPosition: Boolean\n  },\n  emits: drawingEmit,\n  setup(props: VcMeasurementHeightProps, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcMeasurementHeight')\n  }\n})\n\nexport type VcMeasurementHeightProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Specify the unit of measurement\n   */\n  measureUnits?: MeasureUnits\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify parameters for measurement labels.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify parameters for measurement locale.\n   */\n  locale?: string\n  /**\n   * Specify parameters for measurement decimals.\n   */\n  decimals?: MeasurementDecimals\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify whether to update label position.\n   * Default value: true\n   */\n  autoUpdateLabelPosition?: boolean\n  /**\n   * Triggers before the VcMeasurementHeight is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcMeasurementHeight is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcMeasurementHeight is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcSegmentDrawing>, 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\nexport interface VcMeasurementHeightRef extends VcComponentPublicInstance<VcMeasurementHeightProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<VcSegmentDrawing[]>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<VcSegmentDrawing[]>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-19 11:34:26\n * @LastEditTime: 2022-07-14 22:02:46\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\use-drawing-point.ts\n */\n\nimport { VcOverlayHtml } from 'casc-cesium-components/overlays'\nimport { VcCollectionBillboard, VcCollectionLabel, VcCollectionPoint, VcCollectionPrimitive } from 'casc-cesium-components/primitive-collections'\nimport { VcBtn, VcTooltip } from 'casc-cesium-components/ui'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus, MeasureUnits } from 'casc-cesium-shared'\nimport { makeCartesian3 } from 'casc-cesium-utils/cesium-helpers'\nimport { VcPointDrawing } from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcDrawingProvider } from 'casc-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'\nimport { VcAnalysesRef, VcDrawingsRef, VcMeasurementsRef } from 'casc-cesium-components'\nimport { platform } from 'casc-cesium-utils/platform'\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.$services as VcDrawingProvider\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\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          const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n          drawingFabInstanceVm.toggleAction(selectedDrawingActionInstance)\n        }\n      }\n    )\n  )\n\n  const convert2Degrees = (position, point, scene) => {\n    const cart = Cesium.Cartographic.fromCartesian(position, scene.globe.ellipsoid)\n    const positionDegrees = [Cesium.Math.toDegrees(cart.longitude), Cesium.Math.toDegrees(cart.latitude), cart.height] as [number, number, number]\n    point.positionDegrees = positionDegrees\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      pointOpts: {},\n      labelOpts: {},\n      billboardOpts: {}\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 = (removeLatest = true) => {\n    if (removeLatest && drawStatus.value === DrawStatus.Drawing) {\n      renderDatas.value.pop()\n    }\n\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n    const point: VcPointDrawing = renderDatas.value[index]\n    if (point) {\n      point.drawStatus = DrawStatus.AfterDraw\n    }\n\n    drawStatus.value = DrawStatus.AfterDraw\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    const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n    if (options.button === 2 && options.ctrl) {\n      const drawingsOption = drawingFabInstanceVm?.getDrawingActionInstance(drawingType)\n      drawingFabInstanceVm?.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      drawingFabInstanceVm.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\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      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      const scene = viewer.scene\n\n      if (platform().hasTouch === true) {\n        const position = getWorldPosition(scene, movement, {} as any)\n        convert2Degrees(position, point, scene)\n        if (defined(position)) {\n          point.position = position\n          point.show = true\n        }\n      }\n\n      if (editingPoint.value) {\n        editingPoint.value = undefined\n        drawingFabInstanceVm.editingActionName = undefined\n        canShowDrawTip.value = false\n        type = editorType.value\n      } else {\n        if (props.mode === 1) {\n          nextTick(() => {\n            drawingFabInstanceVm.toggleAction(selectedDrawingActionInstance)\n          })\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            positionDegrees: renderDatas.value[index].positionDegrees,\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      convert2Degrees(position, point, scene)\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            positionDegrees: point.positionDegrees,\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    const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\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      drawingFabInstanceVm.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    const { viewer } = $services\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\n        pointOpts: {},\n        labelOpts: {},\n        billboardOpts: {}\n      }\n      const cart = Cesium.Cartographic.fromCartesian(pointDrawing.position, viewer.scene.globe.ellipsoid)\n      pointDrawing.positionDegrees = [Cesium.Math.toDegrees(cart.longitude), Cesium.Math.toDegrees(cart.latitude), cart.height] as [\n        number,\n        number,\n        number\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      const pointOpts = Object.assign({}, props.pointOpts, point.pointOpts)\n      pointsRender.push({\n        position: point.position,\n        id: createGuid(),\n        _vcPolylineIndx: index, // for editor\n        ...pointOpts,\n        show: (point.show && props.pointOpts?.show) || props.editable || point.drawStatus === DrawStatus.Drawing\n      })\n\n      const labelsOpts = Object.assign({}, props.labelOpts, point.labelOpts)\n\n      if (props.showLabel) {\n        if (cmpName === 'VcDrawingPin') {\n          const billboardOpts = Object.assign({}, props.billboardOpts, point.billboardOpts)\n          billboardsRender.push({\n            position: point.position,\n            id: createGuid(),\n            _vcPolylineIndx: index, // for editor\n            ...billboardOpts\n          })\n\n          labelsOpts.text &&\n            labelsRender.push({\n              position: point.position,\n              id: createGuid(),\n              ...labelsOpts\n            })\n        } else {\n          labelsRender.push({\n            position: point.position,\n            id: createGuid(),\n            text: getLabelText(point),\n            ...labelsOpts\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        })\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-06-24 16:58:32\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\point\\index.ts\n */\nimport { defineComponent, Ref } from 'vue'\nimport useDrawingPoint from 'casc-cesium-composables/use-drawing/use-drawing-point'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from 'casc-cesium-shared'\nimport type { VcLabelProps, VcPointProps } from '../../../primitive-collections'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport {\n  MeasurementDecimals,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcPointDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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 as PropType<MeasurementDecimals>,\n    heightReference: Number,\n    showLabel: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPoint(props, ctx, 'VcMeasurementPoint')\n  }\n})\n\nexport type VcMeasurementPointProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Specify the unit of measurement\n   */\n  measureUnits?: MeasureUnits\n  /**\n   * Specify parameters for measurement labels.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify parameters for measurement locale.\n   */\n  locale?: string\n  /**\n   * Specify parameters for measurement decimals.\n   */\n  decimals?: MeasurementDecimals\n  /**\n   * Specify the heightReference.\n   */\n  heightReference?: number\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Triggers before the VcMeasurementPoint is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcMeasurementPoint is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcMeasurementPoint is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcPointDrawing>, 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\nexport interface VcMeasurementPointRef extends VcComponentPublicInstance<VcMeasurementPointProps> {\n  /**\n   * Get or set the renderDatas.\n   */\n  renderDatas?: Ref<Array<VcPointDrawing>>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:23\n * @LastEditTime: 2022-06-24 16:56:24\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\area\\index.ts\n */\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport { defineComponent } from 'vue'\nimport useDrawingPolyline from 'casc-cesium-composables/use-drawing/use-drawing-polyline'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport { MeasureUnits } from 'casc-cesium-shared'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport type { VcLabelProps, VcPointProps, VcPolygonProps } from '../../../primitive-collections'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport {\n  MeasurementDecimals,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcPolylineDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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 as PropType<MeasurementDecimals>,\n    showDistanceLabel: Boolean,\n    showAngleLabel: Boolean,\n    showLabel: Boolean,\n    loop: Boolean,\n    clampToGround: Boolean,\n    autoUpdateLabelPosition: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPolyline(props, ctx, 'VcMeasurementArea')\n  }\n})\n\nexport type VcMeasurementAreaProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Specify the unit of measurement\n   */\n  measureUnits?: MeasureUnits\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify parameters for drawing polygons.\n   */\n  polygonOpts?: VcPolygonProps\n  /**\n   * Specify parameters for measurement labels.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify parameters for measurement labels.\n   */\n  labelsOpts?: VcLabelProps\n  /**\n   * Specify parameters for measurement locale.\n   */\n  locale?: string\n  /**\n   * Specify parameters for measurement decimals.\n   */\n  decimals?: MeasurementDecimals\n  /**\n   * Specify whether to display the label.\n   */\n  showLabel?: boolean\n  /**\n   * Specify whether to display distance labels.\n   */\n  showDistanceLabel?: boolean\n  /**\n   * Specify whether to display angle labels.\n   */\n  showAngleLabel?: boolean\n  /**\n   * Specify whether a line segment will be added between the last and first line positions to make this line a loop.\n   */\n  loop?: boolean\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   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify whether to update label position.\n   * Default value: true\n   */\n  autoUpdateLabelPosition?: boolean\n  /**\n   * Triggers before the VcMeasurementArea is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcMeasurementArea is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcMeasurementArea is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcPolylineDrawing>, 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\nexport interface VcMeasurementAreaRef extends VcComponentPublicInstance<VcMeasurementAreaProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<VcPolylineDrawing[]>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<VcPolylineDrawing[]>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-06-24 16:58:46\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\rectangle\\index.ts\n */\nimport { ComputedRef, defineComponent, Ref } from 'vue'\nimport useDrawingSegment from 'casc-cesium-composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport type { PropType } from 'vue'\nimport { MeasureUnits } from 'casc-cesium-shared'\nimport type { VcLabelProps, VcPointProps, VcPolygonProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport {\n  MeasurementDecimals,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcSegmentDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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 as PropType<MeasurementDecimals>,\n    showLabel: Boolean,\n    showDistanceLabel: Boolean,\n    showAngleLabel: Boolean,\n    loop: Boolean,\n    autoUpdateLabelPosition: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcMeasurementRectangle')\n  }\n})\n\nexport type VcMeasurementRectangleProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Specify the unit of measurement\n   */\n  measureUnits?: MeasureUnits\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify parameters for drawing polygons.\n   */\n  polygonOpts?: VcPolygonProps\n  /**\n   * Specify parameters for measurement labels.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify parameters for measurement labels.\n   */\n  labelsOpts?: VcLabelProps\n  /**\n   * Specify whether a line segment will be added between the last and first line positions to make this line a loop.\n   */\n  loop?: boolean\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   * Specify the number of edges of a regular polygon.\n   */\n  edge?: number\n  /**\n   * Specify whether to display this label.\n   */\n  showLabel?: boolean\n  /**\n   * Specify whether to display distance labels.\n   */\n  showDistanceLabel?: boolean\n  /**\n   * Specify whether to display angle labels.\n   */\n  showAngleLabel?: boolean\n  /**\n   * Specify parameters for measurement locale.\n   */\n  locale?: string\n  /**\n   * Specify parameters for measurement decimals.\n   */\n  decimals?: MeasurementDecimals\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify whether to update label position.\n   * Default value: true\n   */\n  autoUpdateLabelPosition?: boolean\n  /**\n   * Triggers before the VcMeasurementRectangle is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcMeasurementRectangle is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcMeasurementRectangle is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcSegmentDrawing>, 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\nexport interface VcMeasurementRectangleRef extends VcComponentPublicInstance<VcMeasurementRectangleProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<VcSegmentDrawing[]>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<VcSegmentDrawing[]>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-26 11:14:41\n * @LastEditTime: 2022-06-24 16:58:54\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\measurements\\src\\regular\\index.ts\n */\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport { defineComponent } from 'vue'\nimport useDrawingSegment from 'casc-cesium-composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport type { VcLabelProps, VcPointProps, VcPolygonProps } from '../../../primitive-collections'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport {\n  MeasurementDecimals,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcSegmentDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { MeasureUnits } from 'casc-cesium-shared'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\n\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 as PropType<MeasureUnits>,\n    locale: String,\n    decimals: Object as PropType<MeasurementDecimals>,\n    showLabel: Boolean,\n    showDistanceLabel: Boolean,\n    showAngleLabel: Boolean,\n    loop: Boolean,\n    autoUpdateLabelPosition: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcMeasurementRegular')\n  }\n})\n\nexport type VcMeasurementRegularProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Specify the unit of measurement\n   */\n  measureUnits?: MeasureUnits\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify parameters for drawing polygons.\n   */\n  polygonOpts?: VcPolygonProps\n  /**\n   * Specify parameters for measurement label.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify parameters for measurement labels.\n   */\n  labelsOpts?: VcLabelProps\n  /**\n   * Specify whether a line segment will be added between the last and first line positions to make this line a loop.\n   */\n  loop?: boolean\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   * Specify the number of edges of a regular polygon.\n   */\n  edge?: number\n  /**\n   * Specify whether to display the label.\n   */\n  showLabel?: boolean\n  /**\n   * Specify whether to display distance labels.\n   */\n  showDistanceLabel?: boolean\n  /**\n   * Specify whether to display angle labels.\n   */\n  showAngleLabel?: boolean\n  /**\n   * Specify parameters for measurement locale.\n   */\n  locale?: string\n  /**\n   * Specify parameters for measurement decimals.\n   */\n  decimals?: MeasurementDecimals\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify whether to update label position.\n   * Default value: true\n   */\n  autoUpdateLabelPosition?: boolean\n  /**\n   * Triggers before the VcMeasurementRegular is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcMeasurementRegular is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcMeasurementRegular is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcSegmentDrawing>, 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\nexport interface VcMeasurementRegularRef extends VcComponentPublicInstance<VcMeasurementRegularProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<VcSegmentDrawing[]>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<VcSegmentDrawing[]>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-13 09:45:59\n * @LastEditTime: 2022-08-12 11:47:07\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\10_vue-cesium\\packages\\composables\\use-drawing\\use-drawing-fab.ts\n */\nimport { VcCollectionPrimitive } from 'casc-cesium-components/primitive-collections'\nimport type { VcFabProps, VcFabRef } from 'casc-cesium-components/ui'\nimport { VcFab, VcFabAction, VcTooltip } from 'casc-cesium-components/ui'\nimport { useCommon, useHandler } from 'casc-cesium-composables'\nimport { VisibilityState } from 'casc-cesium-shared'\nimport { VcDrawingActionInstance } from 'casc-cesium-utils/drawing-types'\nimport { VcActionTooltipProps, VcComponentInternalInstance, VcDrawingProvider, VcReadyObject } from 'casc-cesium-utils/types'\nimport { CSSProperties, provide, reactive, ref, VNode, h, createCommentVNode, ComputedRef, nextTick } from 'vue'\nimport usePosition from '../private/use-position'\nimport { $ } from 'casc-cesium-utils/private/vm'\nimport { isString } from 'casc-cesium-utils/util'\nimport { mergeDescriptors } from 'casc-cesium-utils/merge-descriptors'\nimport { vcKey } from 'casc-cesium-utils/config'\nimport { useLocale } from '../use-locale'\nimport { VcAnalysesRef, VcDrawingsRef, VcMeasurementsRef } from 'casc-cesium-components'\n\nexport default function (\n  props,\n  ctx,\n  instance: VcComponentInternalInstance,\n  drawingActionInstances: ComputedRef<Array<VcDrawingActionInstance>>,\n  mainFabOpts: VcFabProps & VcActionTooltipProps,\n  clearActionOpts: VcActionTooltipProps,\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)\n  const fabRef = ref<VcFabRef>(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    const instanceVm = instance.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n    if (instanceVm.editingActionName) {\n      drawingActionOpts = getDrawingActionInstance(instanceVm.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    const instanceVm = instance.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n    if (instanceVm.editingActionName) {\n      drawingActionOpts = getDrawingActionInstance(instanceVm.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    const instanceVm = instance.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n    if (instanceVm.editingActionName) {\n      drawingActionOpts = getDrawingActionInstance(instanceVm.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.value\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 = 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          (Cesium.S3MTilesLayer && 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)\n  const toggleAction = (drawingOption: VcDrawingActionInstance | string) => {\n    const { viewer } = $services\n    if (isString(drawingOption)) {\n      drawingOption = getDrawingActionInstance(drawingOption)\n    }\n    if (!drawingOption) {\n      commonState.logger.error('Invalid drawingActionOption or drawingActionOption name')\n      return\n    }\n\n    const index = getDrawingActionInstanceIndex(drawingOption.name)\n    if (index === -1) {\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 = undefined\n      drawingActionInstances.value[index].actionOpts.color = restoreColor.value || 'red'\n    } else {\n      nextTick(() => {\n        const cmp = drawingActionInstances.value[index].cmpRef.value\n        cmp.startNew()\n        restoreColor.value = drawingActionInstances.value[index].actionOpts.color\n        drawingActionInstances.value[index].actionOpts.color = props.activeColor\n        drawingActionInstances.value[index].isActive = true\n        selectedDrawingActionInstance = drawingActionInstances.value[index]\n        emit(\n          'activeEvt',\n          {\n            type: selectedDrawingActionInstance.name,\n            option: selectedDrawingActionInstance,\n            isActive: true\n          },\n          viewer\n        )\n      })\n    }\n  }\n\n  const getDrawingActionInstance = (drawingName: string) => {\n    return drawingActionInstances.value.find(v => v.name === drawingName)\n  }\n\n  const getDrawingActionInstanceIndex = (drawingName: string) => {\n    return drawingActionInstances.value.findIndex(v => v.name === drawingName)\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.value.forEach(drawingActionOpts => {\n      drawingActionOpts.cmpRef.value?.clear()\n    })\n\n    selectedDrawingActionInstance && toggleAction(selectedDrawingActionInstance)\n  }\n\n  const getServices = (): VcDrawingProvider => {\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<VcDrawingProvider>(vcKey, getServices())\n\n  // expose public methods\n  Object.assign(instance.proxy, {\n    clearAll,\n    deactivate,\n    activate,\n    toggleAction,\n    getFabRef: () => fabRef.value,\n    getDrawingActionInstance,\n    getDrawingActionInstances: () => drawingActionInstances.value,\n    getSelectedDrawingActionInstance: () => selectedDrawingActionInstance\n  })\n\n  const renderContent = () => {\n    if (canRender.value) {\n      const fabActionChildren: Array<VNode> = []\n      const drawingChildren: Array<VNode> = []\n      drawingActionInstances.value.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.value.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(drawingActionInstances.value)\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, computed, VNode } from 'vue'\nimport { measurementsProps, defaultOptions, VcMeasurementsProps } from './defaultProps'\nimport { camelize } from 'casc-cesium-utils/util'\nimport { VcFabActionRef, VcFabProps, VcFabRef } from 'casc-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  MeasurementActionCmpRef,\n  VcComponentDistanceMeasurementOpts,\n  VcDrawingActionInstance,\n  VcHorizontalMeasurementOpts,\n  VcMeasurementOpts,\n  VcPolylineMeasurementOpts,\n  VcRegularMeasurementOpts\n} from 'casc-cesium-utils/drawing-types'\nimport type { VcActionTooltipProps, VcComponentInternalInstance, VcComponentPublicInstance } from 'casc-cesium-utils/types'\nimport { useLocale } from 'casc-cesium-composables'\nimport useDrawingFab from 'casc-cesium-composables/use-drawing/use-drawing-fab'\nimport { drawingEmit } from 'casc-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: VcMeasurementsProps, 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 = computed<Array<VcDrawingActionInstance>>(() => {\n      return 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        actionRef: ref<VcFabActionRef>(null),\n        actionOpts: options[`${camelize(measurement)}ActionOpts`] as VcActionTooltipProps,\n        cmp: getMeasurementCmp(measurement),\n        cmpRef: ref<MeasurementActionCmpRef>(null!),\n        cmpOpts: options[`${camelize(measurement)}MeasurementOpts`] as VcMeasurementOpts,\n        tip: options[`${camelize(measurement)}ActionOpts`].tooltip.tip || t(`vc.measurement.${measurement}.tip`),\n        isActive: false\n      }))\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: (drawingActionInstances: Array<VcDrawingActionInstance>) => VNode[]\n}\n\nexport interface VcMeasurementsRef extends VcComponentPublicInstance<VcMeasurementsProps> {\n  /**\n   * Get or set the editingActionName.\n   */\n  editingActionName?: string\n  /**\n   * Get the drawing action instances.\n   */\n  drawingActionInstances: Array<VcDrawingActionInstance>\n  /**\n   * Get the selected drawing action instance.\n   */\n  selectedDrawingActionInstance: VcDrawingActionInstance\n  /**\n   * Clear all drawing results.\n   */\n  clearAll: () => void\n  /**\n   * End listening for the ScreenSpaceEventHandler event.\n   */\n  deactivate: () => void\n  /**\n   * Start listening for ScreenSpaceEventHandler events.\n   */\n  activate: () => void\n  /**\n   * Toggle drawing instance.\n   * @param drawingOption drawing instance or drawing instance name.\n   */\n  toggleAction: (drawingOption: VcDrawingActionInstance | string) => void\n  /**\n   * Get the float action button template reference.\n   */\n  getFabRef: () => VcFabRef\n  /**\n   * Get the drawingActionInstance.\n   */\n  getDrawingActionInstance: (actionName: string) => VcDrawingActionInstance\n  /**\n   * Get the drawing action instances.\n   */\n  getDrawingActionInstances: () => Array<VcDrawingActionInstance>\n  /**\n   * Get the selected drawing action instance.\n   */\n  getSelectedDrawingActionInstance: () => VcDrawingActionInstance\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 'casc-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-06-24 16:54:54\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 'casc-cesium-composables/use-drawing/defaultOpts'\nimport { useDrawingFabProps } from 'casc-cesium-composables/use-drawing/props'\nimport {\n  VcDrawingActiveEvt,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingOpts,\n  VcPointDrawing,\n  VcPolylineDrawing,\n  VcSegmentDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport type { VcActionTooltipProps, VcComponentInternalInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { getDefaultOptionByProps } from 'casc-cesium-utils/util'\nimport type { PropType } 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  showLabel: true\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\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 component load failed.\n   */\n  onUnready?: (e: any) => 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<VcPolylineDrawing | VcSegmentDrawing | VcPointDrawing>, 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-06-24 16:55:04\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\pin\\index.ts\n */\nimport type { PropType, Ref } from 'vue'\nimport { defineComponent } from 'vue'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport useDrawingPoint from 'casc-cesium-composables/use-drawing/use-drawing-point'\nimport type { VcBillboardProps, VcLabelProps, VcPointProps } from '../../../primitive-collections'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport {\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcPointDrawing\n} from 'casc-cesium-utils/drawing-types'\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    showLabel: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPoint(props, ctx, 'VcDrawingPin')\n  }\n})\n\nexport type VcDrawingPinProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify parameters for drawing billbords.\n   */\n  billboardOpts?: VcBillboardProps\n  /**\n   * Specify parameters for drawing labels.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify the heightReference.\n   */\n  heightReference?: number\n  /**\n   * Specify whether to display label.\n   */\n  showLabel: boolean\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Triggers before the VcDrawingPin is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcDrawingPin is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcDrawingPin is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcPointDrawing>, 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\nexport interface VcDrawingPinRef extends VcComponentPublicInstance<VcDrawingPinProps> {\n  /**\n   * Get or set the renderDatas.\n   */\n  renderDatas?: Ref<Array<VcPointDrawing>>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:22\n * @LastEditTime: 2022-06-24 16:55:11\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\point\\index.ts\n */\nimport { defineComponent, PropType, Ref } from 'vue'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport useDrawingPoint from 'casc-cesium-composables/use-drawing/use-drawing-point'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport {\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcPointDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcLabelProps, VcPointProps } from '../../../primitive-collections'\n\nexport default defineComponent({\n  name: 'VcDrawingPoint',\n  props: {\n    ...useDrawingActionProps,\n    heightReference: Number,\n    labelOpts: Object as PropType<VcLabelProps>,\n    showLabel: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPoint(props, ctx, 'VcDrawingPoint')\n  }\n})\n\nexport type VcDrawingPointProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify the heightReference.\n   */\n  heightReference?: number\n  /**\n   * Specify whether to display label.\n   */\n  showLabel: boolean\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Triggers before the VcDrawingPoint is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcDrawingPoint is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcDrawingPoint is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcPointDrawing>, 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\nexport interface VcDrawingPointRef extends VcComponentPublicInstance<VcDrawingPointProps> {\n  /**\n   * Get or set the renderDatas.\n   */\n  renderDatas?: Ref<Array<VcPointDrawing>>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-05-18 21:29:49\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\polyline\\index.ts\n */\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport { defineComponent } from 'vue'\nimport useDrawingPolyline from 'casc-cesium-composables/use-drawing/use-drawing-polyline'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport { VcDrawingPreRenderDatas, VcDrawTipOpts, VcEditorOpts, VcPolylineDrawing } from 'casc-cesium-utils/drawing-types'\nimport { VcLabelProps, VcPointProps, VcPolygonProps } from '../../../primitive-collections'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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    showLabel: Boolean,\n    showDistanceLabel: Boolean,\n    showAngleLabel: Boolean,\n    labelOpts: Object as PropType<VcLabelProps>,\n    labelsOpts: Object as PropType<VcLabelProps>,\n    autoUpdateLabelPosition: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPolyline(props, ctx, 'VcDrawingPolyline')\n  }\n})\n\nexport type VcDrawingPolylineProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify parameters for drawing polygons.\n   */\n  polygonOpts?: VcPolygonProps\n  /**\n   * Specify whether a line segment will be added between the last and first line positions to make this line a loop.\n   */\n  loop?: boolean\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   * Specify whether to display label.\n   */\n  showLabel: boolean\n  /**\n   * Specify whether to display distance labels.\n   */\n  showDistanceLabel?: boolean\n  /**\n   * Specify whether to display angle labels.\n   */\n  showAngleLabel?: boolean\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify parameters for drawing label.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify parameters for drawing labels.\n   */\n  labelsOpts?: VcLabelProps\n  /**\n   * Specify whether to update label position.\n   * Default value: false\n   */\n  autoUpdateLabelPosition?: boolean\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Triggers before the VcDrawingPolyline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcDrawingPolyline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcDrawingPolyline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport interface VcDrawingPolylineRef extends VcComponentPublicInstance<VcDrawingPolylineProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<VcPolylineDrawing[]>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<VcPolylineDrawing[]>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-06-24 16:55:37\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\polygon\\index.ts\n */\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport { defineComponent } from 'vue'\nimport useDrawingPolyline from 'casc-cesium-composables/use-drawing/use-drawing-polyline'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport type { VcLabelProps, VcPointProps, VcPolygonProps } from '../../../primitive-collections'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport {\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcPolylineDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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    showLabel: Boolean,\n    showDistanceLabel: Boolean,\n    showAngleLabel: Boolean,\n    labelOpts: Object as PropType<VcLabelProps>,\n    labelsOpts: Object as PropType<VcLabelProps>,\n    autoUpdateLabelPosition: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingPolyline(props, ctx, 'VcDrawingPolygon')\n  }\n})\n\nexport type VcDrawingPolygonProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify parameters for drawing polygons.\n   */\n  polygonOpts?: VcPolygonProps\n  /**\n   * Specify whether a line segment will be added between the last and first line positions to make this line a loop.\n   */\n  loop?: boolean\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   * Specify whether to display label.\n   */\n  showLabel: boolean\n  /**\n   * Specify whether to display distance labels.\n   */\n  showDistanceLabel?: boolean\n  /**\n   * Specify whether to display angle labels.\n   */\n  showAngleLabel?: boolean\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify parameters for drawing label.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify parameters for drawing labels.\n   */\n  labelsOpts?: VcLabelProps\n  /**\n   * Specify whether to update label position.\n   * Default value: false\n   */\n  autoUpdateLabelPosition?: boolean\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Triggers before the VcDrawingPolygon is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcDrawingPolygon is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcDrawingPolygon is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcPolylineDrawing>, 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\nexport interface VcDrawingPolygonRef extends VcComponentPublicInstance<VcDrawingPolygonProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<VcPolylineDrawing[]>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<VcPolylineDrawing[]>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 09:17:22\n * @LastEditTime: 2022-06-24 16:55:59\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\regular\\index.ts\n */\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport { defineComponent } from 'vue'\nimport useDrawingSegment from 'casc-cesium-composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport type { VcLabelProps, VcPointProps, VcPolygonProps } from '../../../primitive-collections'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport {\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcSegmentDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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    showLabel: Boolean,\n    showDistanceLabel: Boolean,\n    showAngleLabel: Boolean,\n    labelOpts: Object as PropType<VcLabelProps>,\n    labelsOpts: Object as PropType<VcLabelProps>,\n    loop: Boolean,\n    autoUpdateLabelPosition: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcDrawingRegular')\n  }\n})\n\nexport type VcDrawingRegularProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify parameters for drawing polygons.\n   */\n  polygonOpts?: VcPolygonProps\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   * Specify the number of edges of a regular polygon.\n   */\n  edge?: number\n  /**\n   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify parameters for drawing label.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify parameters for drawing labels.\n   */\n  labelsOpts?: VcLabelProps\n  /**\n   * Specify whether to update label position.\n   * Default value: false\n   */\n  autoUpdateLabelPosition?: boolean\n  /**\n   * Specify whether a line segment will be added between the last and first line positions to make this line a loop.\n   */\n  loop?: boolean\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Triggers before the VcDrawingRegular is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcDrawingRegular is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcDrawingRegular is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcSegmentDrawing>, 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\nexport interface VcDrawingRegularRef extends VcComponentPublicInstance<VcDrawingRegularProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<VcSegmentDrawing[]>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<VcSegmentDrawing[]>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-06-24 16:55:49\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\drawings\\src\\rectangle\\index.ts\n */\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport { defineComponent } from 'vue'\nimport useDrawingSegment from 'casc-cesium-composables/use-drawing/use-drawing-segment'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport type { VcLabelProps, VcPointProps, VcPolygonProps } from '../../../primitive-collections'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport {\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcSegmentDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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    showLabel: Boolean,\n    showDistanceLabel: Boolean,\n    showAngleLabel: Boolean,\n    labelOpts: Object as PropType<VcLabelProps>,\n    labelsOpts: Object as PropType<VcLabelProps>,\n    loop: Boolean,\n    autoUpdateLabelPosition: Boolean\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcDrawingRectangle')\n  }\n})\n\nexport type VcDrawingRectangleProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify parameters for drawing polygons.\n   */\n  polygonOpts?: VcPolygonProps\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   * Specify whether the depthTest is disabled.\n   * Default value: false\n   */\n  disableDepthTest?: boolean\n  /**\n   * Specify parameters for drawing label.\n   */\n  labelOpts?: VcLabelProps\n  /**\n   * Specify parameters for drawing labels.\n   */\n  labelsOpts?: VcLabelProps\n  /**\n   * Specify whether to update label position.\n   * Default value: false\n   */\n  autoUpdateLabelPosition?: boolean\n  /**\n   * Specify whether a line segment will be added between the last and first line positions to make this line a loop.\n   */\n  loop?: boolean\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Triggers before the VcDrawingRectangle is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcDrawingRectangle is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcDrawingRectangle is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcSegmentDrawing>, 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\nexport interface VcDrawingRectangleRef extends VcComponentPublicInstance<VcDrawingRectangleProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<VcSegmentDrawing[]>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<VcSegmentDrawing[]>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","import { defineComponent, getCurrentInstance, ref, reactive, VNode, computed } from 'vue'\nimport { drawingsProps, defaultOptions } from './defaultProps'\nimport { camelize } from 'casc-cesium-utils/util'\nimport type { VcFabActionRef, VcFabProps, VcFabRef } from 'casc-cesium-components/ui'\nimport type { VcActionTooltipProps, VcComponentInternalInstance, VcComponentPublicInstance } from 'casc-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 { DrawingActionCmpRef, VcDrawingActionInstance, VcDrawingOpts } from 'casc-cesium-utils/drawing-types'\nimport useDrawingFab from 'casc-cesium-composables/use-drawing/use-drawing-fab'\nimport { useLocale } from 'casc-cesium-composables'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport { VcDrawingsProps } from '..'\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: VcDrawingsProps, 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 = computed<Array<VcDrawingActionInstance>>(() => {\n      return 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`,\n        actionRef: ref<VcFabActionRef>(null!),\n        actionOpts: options[`${camelize(drawing)}ActionOpts`] as VcActionTooltipProps,\n        cmp: getDrawingCmp(drawing),\n        cmpRef: ref<DrawingActionCmpRef>(null!),\n        cmpOpts: options[`${camelize(drawing)}DrawingOpts`] as VcDrawingOpts,\n        tip: options[`${camelize(drawing)}ActionOpts`].tooltip.tip || t(`vc.drawing.${camelize(drawing)}.tip`),\n        isActive: false\n      }))\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: (drawingActionInstances: Array<VcDrawingActionInstance>) => VNode[]\n}\nexport interface VcDrawingsRef extends VcComponentPublicInstance<VcDrawingsProps> {\n  /**\n   * Get or set the editingActionName.\n   */\n  editingActionName?: string\n  /**\n   * Clear all drawing results.\n   */\n  clearAll: () => void\n  /**\n   * End listening for the ScreenSpaceEventHandler events.\n   */\n  deactivate: () => void\n  /**\n   * Start listening for ScreenSpaceEventHandler events.\n   */\n  activate: () => void\n  /**\n   * Toggle drawing instance.\n   * @param drawingOption drawing instance or drawing instance name.\n   */\n  toggleAction: (drawingOption: VcDrawingActionInstance | string) => void\n  /**\n   * Get the float action button template reference.\n   */\n  getFabRef: () => VcFabRef\n  /**\n   * Get the drawingActionInstance by action name.\n   */\n  getDrawingActionInstance: (actionName: string) => VcDrawingActionInstance\n  /**\n   * Get the drawing action instances.\n   */\n  getDrawingActionInstances: () => Array<VcDrawingActionInstance>\n  /**\n   * Get the selected drawing action instance.\n   */\n  getSelectedDrawingActionInstance: () => VcDrawingActionInstance\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-03-06 22:50:38\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 'casc-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'\nexport * from './src/pin'\nexport * from './src/point'\nexport * from './src/polygon'\nexport * from './src/polyline'\nexport * from './src/rectangle'\nexport * from './src/regular'\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-03-30 16:10:02\n * @LastEditTime: 2022-05-14 17:58:20\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\amap\\AMapImageryProvider.ts\n */\n\nimport defer from 'casc-cesium-utils/defer'\n\nclass AMapImageryProvider {\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: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\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  _domain: any\n  _lang: any\n  _scl: any\n  _ltype: any\n  constructor(options) {\n    const { Resource, defaultValue, Credit, Event } = Cesium\n    this._url = options.url\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.minimumLevel || 0\n    this._maximumLevel = options.maximumLevel || 20\n    this._tilingScheme = options.tilingScheme || new Cesium.WebMercatorTilingScheme()\n    this._rectangle = 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 = defer()\n    this._ready = true\n    this._readyPromise.resolve(true)\n    this._subdomains = options.subdomains || ['01', '02', '03', '04']\n    this._domain = options.domain || 'webst'\n    this._style = options.mapStyle || '6'\n    this._lang = options.lang || 'zh_cn'\n    this._scl = options.scl || '1'\n    this._ltype = options.ltype || '0'\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('{domain}', this._domain)\n    .replace('{s}', subdomains[(x + y + level) % subdomains.length])\n    .replace('{lang}', this._lang)\n    .replace('{style}', this._style)\n    .replace('{scl}', this._scl)\n    .replace('{ltype}', this._ltype)\n    .replace('{x}', x)\n    .replace('{y}', y)\n    .replace('{z}', level)\n  const resource = this._resource.getDerivedResource({\n    url: url,\n    request: request\n  })\n  return resource\n}\n\nexport default AMapImageryProvider\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-03-30 15:40:44\n * @LastEditTime: 2022-05-26 22:10:39\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\amap\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type {\n  ProjectionTransforms,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcImageryProvider,\n  VcReadyObject,\n  VcRectangle\n} from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { credit, minimumLevel, maximumLevel, rectangle, tilingScheme, projectionTransforms } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-cesium-utils/emits'\nimport AMapImageryProvider from './AMapImageryProvider'\n\nexport const amapImageryProviderProps = {\n  url: {\n    type: String,\n    default: 'https://{domain}{s}.is.autonavi.com/appmaptile?lang={lang}&size=1&style={style}&scl={scl}&ltype={ltype}&x={x}&y={y}&z={z}'\n  },\n  subdomains: {\n    type: Array as PropType<string[]>,\n    default: () => ['01', '02', '03', '04']\n  },\n  domain: {\n    type: String as PropType<'webrd' | 'webst'>,\n    default: 'webst'\n  },\n  lang: {\n    type: String as PropType<'zh_cn' | 'en'>,\n    default: 'zh_cn'\n  },\n  mapStyle: {\n    // 地图类型控制，6卫星图（st），7简图（st rd），8详图（不透明rd，透明图st）\n    type: String as PropType<'6' | '7' | '8'>,\n    default: '6'\n  },\n  scl: {\n    // 尺寸控制，1=256,2=512\n    type: String as PropType<'1' | '2'>,\n    default: '1'\n  },\n  ltype: {\n    // 线性控制，只对地图要素进行控制，没有文字注记，要素多少，是否透明\n    // 纯道路 ltype=11 mapStyle=8\n    // 纯地标  ltype=4 mapStyle=8\n    // 道路标注 ltype=0 mapStyle=8\n    type: String,\n    default: '0'\n  },\n  ...credit,\n  ...minimumLevel,\n  ...maximumLevel,\n  ...rectangle,\n  ...tilingScheme,\n  ...projectionTransforms\n}\nexport default defineComponent({\n  name: 'VcImageryProviderAmap',\n  props: amapImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'AMapImageryProvider'\n    const providersState = useProviders(props, ctx, instance)\n\n    if (undefined === providersState) {\n      return\n    }\n    // methods\n    instance.createCesiumObject = async () => {\n      Cesium.AMapImageryProvider = Cesium.AMapImageryProvider || AMapImageryProvider\n      if (providersState.unwatchFns.length === 0) {\n        providersState.setPropsWatcher(true)\n      }\n      const options = providersState.transformProps(props)\n      return new Cesium.AMapImageryProvider(options)\n    }\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport interface VcImageryProviderAmapProps {\n  /**\n   * Specify the URL template.\n   * Default value: https://{domain}{s}.is.autonavi.com/appmaptile?lang={lang}&size=1&style={style}&scl={scl}&ltype={ltype}&x={x}&y={y}&z={z}\n   */\n  url?: string\n  /**\n   * Specify the domain name.\n   * Default value: webst\n   */\n  domain?: 'webrd' | 'webst'\n  /**\n   * Specify the service polling parameters.\n   * Default value: ['01', '02', '03', '04']\n   */\n  subdomains?: string[]\n  /**\n   * Specify the language.\n   * Default value: zh_cn\n   */\n  lang?: 'zh_cn' | 'en'\n  /**\n   * Specify the map style type of the amap service. '6': satellite image; '7': road map; '8': road map (with transparent background).\n   * Default value: 6\n   */\n  mapStyle?: '6' | '7' | '8'\n  /**\n   * Specify size control parameters. '1': 256*256; '2': 512*512\n   * Default value: 1\n   */\n  scl?: '1' | '2'\n  /**\n   * Specify the type parameter. '0': default; '4': only annotations; '8': only roads\n   * Default value: 0\n   */\n  ltype?: string\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: string | Cesium.Credit\n  /**\n   * The minimum level-of-detail supported by the imagery provider.\n   * Default value: 0\n   */\n  minimumLevel?: number\n  /**\n   * The maximum level-of-detail supported by the imagery provider.\n   * Default value: 20\n   */\n  maximumLevel?: number\n  /**\n   * The rectangle, in radians, covered by the image.\n   */\n  rectangle?: VcRectangle\n  /**\n   * The tiling scheme specifying how the ellipsoidal surface is broken into tiles.\n   */\n  tilingScheme?: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\n  /**\n   * Specify the projection transformation parameters.\n   */\n  projectionTransforms?: false | ProjectionTransforms\n  /**\n   * Triggers before the VcImageryProviderAmap is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderAmap is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderAmap is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  errorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  readyPromise?: (provider: VcImageryProvider, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderAmapRef = VcComponentPublicInstance<VcImageryProviderAmapProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 11:39:20\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 { PropType } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject, VcRectangle } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * The URL of the ArcGIS MapServer service.\n   */\n  url?: string | Cesium.Resource\n  /**\n   * The ArcGIS token used to authenticate with the ArcGIS MapServer service.\n   */\n  token?: string\n  /**\n   * The policy that determines if a tile is invalid and should be discarded. If this value is not specified, a default DiscardMissingTileImagePolicy is used for tiled map servers, and a NeverTileDiscardPolicy is used for non-tiled map servers. In the former case, we request tile 0,0 at the maximum tile level and check pixels (0,0), (200,20), (20,200), (80,110), and (160, 130). If all of these pixels are transparent, the discard check is disabled and no tiles are discarded. If any of them have a non-transparent color, any tile that has the same values in these pixel locations is discarded. The end result of these defaults should be correct tile discarding for a standard ArcGIS Server. To ensure that no tiles are discarded, construct and pass a NeverTileDiscardPolicy for this parameter.\n   */\n  tileDiscardPolicy?: Cesium.DiscardMissingTileImagePolicy | Cesium.NeverTileDiscardPolicy\n  /**\n   * If true, the server's pre-cached tiles are used if they are available. If false, any pre-cached tiles are ignored and the 'export' service is used.\n   * Default value: true\n   */\n  usePreCachedTilesIfAvailable?: boolean\n  /**\n   * A comma-separated list of the layers to show, or undefined if all layers should be shown.\n   */\n  layers?: string\n  /**\n   * If true, ArcGisMapServerImageryProvider#pickFeatures will invoke the Identify service on the MapServer and return the features included in the response. If false, ArcGisMapServerImageryProvider#pickFeatures will immediately return undefined (indicating no pickable features) without communicating with the server. Set this property to false if you don't want this provider's features to be pickable. Can be overridden by setting the ArcGisMapServerImageryProvider#enablePickFeatures property on the object.\n   * Default value: true\n   */\n  enablePickFeatures?: boolean\n  /**\n   * The rectangle of the layer. This parameter is ignored when accessing a tiled layer.\n   */\n  rectangle?: VcRectangle\n  /**\n   * The tiling scheme to use to divide the world into tiles. This parameter is ignored when accessing a tiled server.\n   */\n  tilingScheme?: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\n  /**\n   * The ellipsoid. If the tilingScheme is specified and used, this parameter is ignored and the tiling scheme's ellipsoid is used instead. If neither parameter is specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * A credit for the data source, which is displayed on the canvas. This parameter is ignored when accessing a tiled server.\n   */\n  credit?: string | Cesium.Credit\n  /**\n   * The width of each tile in pixels. This parameter is ignored when accessing a tiled server.\n   * Default value: 256\n   */\n  tileWidth?: number\n  /**\n   * The height of each tile in pixels. This parameter is ignored when accessing a tiled server.\n   * Default value: 256\n   */\n  tileHeight?: number\n  /**\n   * The maximum tile level to request, or undefined if there is no maximum. This parameter is ignored when accessing a tiled server.\n   */\n  maximumLevel?: number\n  /**\n   * Triggers before the VcImageryProviderArcgis is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderArcgis is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderArcgis is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderArcgisRef = VcComponentPublicInstance<VcImageryProviderArcgisProps>\n","import { isString } from 'casc-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 'casc-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 defer from 'casc-cesium-utils/defer'\nimport 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: boolean\n  _subdomains: any\n  _errorEvent: any\n  _readyPromise: any\n  _labelStyle: any\n  _qt: 'tile' | 'vtile'\n  _styles: 'sl' | 'pl'\n  _scale: '1' | '2'\n  _ak: string\n  _mapStyle:\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  constructor(options) {\n    const { Resource, defaultValue, Credit, Event } = Cesium\n    this._subdomains = defaultValue(options.subdomains, ['0', '1', '2', '3'])\n    if (options.url) {\n      this._url = options.url\n    } else {\n      if (options.mapStyle === 'img') {\n        this._url = `//maponline{s}.bdimg.com/starpic/u=x={x};y={y};z={z};v=009;type=sate&qt=satepc&app=webearth2&udt={udt}&fm=46&v=009`\n      } else if (options.mapStyle === 'vec') {\n        this._url = `//maponline{s}.bdimg.com/tile/?qt={qt}&x={x}&y={y}&z={z}&styles={styles}&scaler={scale}&udt={udt}&from=jsapi2_0`\n      } else if (options.mapStyle === 'traffic') {\n        this._url = `https://its.map.baidu.com/traffic/TrafficTileService?time={time}&label={labelStyle}&v=016&level={z}&x={x}&y={y}&scaler={scale}`\n      } else {\n        this._url = `//api.map.baidu.com/customimage/tile?&x={x}&y={y}&z={z}&udt={udt}&scale={scale}&ak={ak}&customid={mapStyle}`\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.minimumLevel || 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 = defer()\n    this._ready = true\n    this._readyPromise.resolve(true)\n    this._labelStyle = options.labelStyle || 'web2D'\n    this._qt = options.qt\n    this._styles = options.styles\n    this._scale = options.scale\n    this._ak = options.ak\n    this._mapStyle = options.mapStyle\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('{qt}', this._qt)\n    .replace('{x}', x)\n    .replace('{y}', -y)\n    .replace('{z}', level)\n    .replace('{styles}', this._styles)\n    .replace('{scale}', this._scale)\n    .replace('{mapStyle}', this._mapStyle)\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-05-26 22:09:49\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 { PropType } from 'vue'\nimport type {\n  ProjectionTransforms,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcImageryProvider,\n  VcReadyObject,\n  VcRectangle\n} from 'casc-cesium-utils/types'\nimport BaiduMapImageryProvider from './BaiduMapImageryProvider'\nimport { useProviders } from 'casc-cesium-composables'\nimport { url, rectangle, ellipsoid, tileDiscardPolicy, credit, minimumLevel, maximumLevel } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-cesium-utils/emits'\n\nexport const baiduImageryProviderProps = {\n  ...url,\n  ...rectangle,\n  ...ellipsoid,\n  ...tileDiscardPolicy,\n  ...credit,\n  ...minimumLevel,\n  ...maximumLevel,\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: String as PropType<'1' | '2'>,\n    default: '2'\n  },\n  ak: {\n    type: String,\n    default: 'E4805d16520de693a3fe707cdc962045'\n  },\n  subdomains: {\n    type: Array as PropType<string[]>,\n    default: () => ['0', '1', '2', '3']\n  },\n  // https://lbsyun.baidu.com/custom/list.htm\n  mapStyle: {\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: 'vec' // img vec traffic normal light dark redalert googlelite grassgreen midnight pink darkgreen bluish grayscale hardedge\n  },\n  qt: {\n    type: String as PropType<'tile' | 'vtile'>,\n    default: 'vtile'\n  },\n  styles: {\n    type: String as PropType<'sl' | 'pl'>, // sl 背景透明 pl 正常\n    default: 'pl'\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 = {\n  /**\n   * The URL of the Baidu Imagery service.\n   */\n  url?: string | Cesium.Resource\n  /**\n   * The rectangle of the layer. This parameter is ignored when accessing a tiled layer.\n   */\n  rectangle?: VcRectangle\n  /**\n   * The ellipsoid. If the tilingScheme is specified and used, this parameter is ignored and the tiling scheme's ellipsoid is used instead. If neither parameter is specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The policy that determines if a tile is invalid and should be discarded. If this value is not specified, a default DiscardMissingTileImagePolicy is used for tiled map servers, and a NeverTileDiscardPolicy is used for non-tiled map servers. In the former case, we request tile 0,0 at the maximum tile level and check pixels (0,0), (200,20), (20,200), (80,110), and (160, 130). If all of these pixels are transparent, the discard check is disabled and no tiles are discarded. If any of them have a non-transparent color, any tile that has the same values in these pixel locations is discarded. The end result of these defaults should be correct tile discarding for a standard ArcGIS Server. To ensure that no tiles are discarded, construct and pass a NeverTileDiscardPolicy for this parameter.\n   */\n  tileDiscardPolicy?: Cesium.DiscardMissingTileImagePolicy | Cesium.NeverTileDiscardPolicy\n  /**\n   * A credit for the data source, which is displayed on the canvas. This parameter is ignored when accessing a tiled server.\n   */\n  credit?: string | Cesium.Credit\n  /**\n   * The minimumLevel tile level to request, or undefined if there is no minimumLevel. This parameter is ignored when accessing a tiled server.\n   */\n  minimumLevel?: number\n  /**\n   * The maximum tile level to request, or undefined if there is no maximum. This parameter is ignored when accessing a tiled server.\n   */\n  maximumLevel?: number\n  /**\n   * Specify the baidumap key\n   */\n  ak?: string\n  /**\n   * Specify the service polling parameters.\n   * Default value: ['0', '1', '2', '3']\n   */\n  subdomains?: string[]\n  /**\n   * Specify the map style\n   */\n  mapStyle?:\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   * Specify tile request type.\n   * Default value: vtile\n   */\n  qt?: 'tile' | 'vtile'\n  /**\n   * Specify tile styles.\n   * Default value: pl\n   */\n  styles?: 'sl' | 'pl'\n  /**\n   * Specify the scale.\n   * Default value: 2\n   */\n  scale?: '1' | '2'\n  /**\n   * Specify the projection transformation parameters. such as { from: 'BD09', to: 'WGS84' }\n   */\n  projectionTransforms?: ProjectionTransforms\n  /**\n   * Triggers before the VcImageryProviderArcgis is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderArcgis is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderArcgis is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean | VcImageryProvider, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderBaiduRef = VcComponentPublicInstance<VcImageryProviderBaiduProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 11:49:52\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 { PropType } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { ellipsoid, tileDiscardPolicy } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * The url of the Bing Maps server hosting the imagery.\n   */\n  url: string\n  /**\n   * The Bing Maps key for your application, which can be created at https://www.bingmapsportal.com/. Note that it is bmKey\n   */\n  bmKey?: string\n  /**\n   * The protocol to use when loading tiles, e.g. 'http:' or 'https:'. By default, tiles are loaded using the same protocol as the page.\n   */\n  tileProtocol?: string\n  /**\n   * The type of Bing Maps imagery to load.\n   * Default value: 'Aerial'\n   */\n  mapStyle?: 'Aerial' | 'AerialWithLabels' | 'AerialWithLabelsOnDemand' | 'CanvasDark' | 'CanvasGray' | 'CanvasLight'\n  /**\n   * The culture to use when requesting Bing Maps imagery. Not all cultures are supported. See http://msdn.microsoft.com/en-us/library/hh441729.aspx for information on the supported cultures.\n   */\n  culture?: string\n  /**\n   * The ellipsoid. If not specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The policy that determines if a tile is invalid and should be discarded. By default, a DiscardEmptyTileImagePolicy will be used, with the expectation that the Bing Maps server will send a zero-length response for missing tiles. To ensure that no tiles are discarded, construct and pass a NeverTileDiscardPolicy for this parameter.\n   */\n  tileDiscardPolicy?: Cesium.DiscardMissingTileImagePolicy | Cesium.NeverTileDiscardPolicy\n  /**\n   * Triggers before the VcImageryProviderBing is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderBing is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderBing is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderBingRef = VcComponentPublicInstance<VcImageryProviderBingProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 13:41:28\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\google-earth\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { url, ellipsoid, tileDiscardPolicy, credit } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * The url of the Google Earth Enterprise server hosting the imagery.\n   */\n  url: string | Cesium.Resource\n  /**\n   * A metadata object that can be used to share metadata requests with a GoogleEarthEnterpriseTerrainProvider.\n   */\n  metadata: string\n  /**\n   * The ellipsoid. If not specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The policy that determines if a tile is invalid and should be discarded. If this value is not specified, a default is to discard tiles that fail to download.\n   */\n  tileDiscardPolicy?: Cesium.DiscardMissingTileImagePolicy | Cesium.NeverTileDiscardPolicy\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: Cesium.Credit | string\n  /**\n   * Triggers before the VcImageryProviderGoogle is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderGoogle is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderGoogle is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderGoogleRef = VcComponentPublicInstance<VcImageryProviderGoogleProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 13:42:06\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\grid\\index.ts\n */\nimport type { PropType } from 'vue'\nimport type { VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcImageryProvider, VcReadyObject } from 'casc-cesium-utils/types'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport { useProviders } from 'casc-cesium-composables'\nimport { tilingScheme, ellipsoid, tileWidth, tileHeight, glowColor } from 'casc-cesium-utils/cesium-props'\nimport { makeColor } from 'casc-cesium-utils/cesium-helpers'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * The tiling scheme for which to draw tiles.\n   */\n  tileScheme?: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\n  /**\n   * The ellipsoid. If the tilingScheme is specified, this parameter is ignored and the tiling scheme's ellipsoid is used instead. If neither parameter is specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The number of grids cells.\n   * Default value: 8\n   */\n  cells?: number\n  /**\n   * The color to draw grid lines.\n   * Default value: [1.0, 1.0, 1.0, 0.4]\n   */\n  color?: VcColor\n  /**\n   * The color to draw glow for grid lines.\n   * Default value: [0.0, 1.0, 0.0, 0.05]\n   */\n  glowColor?: VcColor\n  /**\n   * The width of lines used for rendering the line glow effect.\n   * Default value: 6\n   */\n  glowWidth?: number\n  /**\n   * Background fill color.\n   * Default value: [0.0, 0.5, 0.0, 0.2]\n   */\n  backgroundColor?: VcColor\n  /**\n   * The width of the tile for level-of-detail selection purposes.\n   * Default value: 256\n   */\n  tileWidth?: number\n  /**\n   * The height of the tile for level-of-detail selection purposes.\n   * Default value: 256\n   */\n  tileHeight?: number\n  /**\n   * The size of the canvas used for rendering.\n   * Default value: 256\n   */\n  canvasSize?: number\n  /**\n   * Triggers before the VcImageryProviderGrid is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderGrid is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderGrid is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderGridRef = VcComponentPublicInstance<VcImageryProviderGridProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 13:43:11\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\ion\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { accessToken } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * An ion imagery asset ID.\n   */\n  assetId: number\n  /**\n   * The access token to use.\n   */\n  accessToken?: string\n  /**\n   * The resource to the Cesium ion API server.\n   */\n  server?: string | Cesium.Resource\n  /**\n   * Triggers before the VcImageryProviderArcgis is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderArcgis is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderArcgis is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderIonRef = VcComponentPublicInstance<VcImageryProviderIonProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 13:43:39\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\mapbox-style\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject, VcRectangle } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { accessToken, ellipsoid, minimumLevel, maximumLevel, rectangle, credit } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * The Mapbox server url.\n   * Default value: 'https://api.mapbox.com/v4/'\n   */\n  url?: string | Cesium.Resource\n  /**\n   * The username of the map account.\n   * Default value: 'mapbox'\n   */\n  username?: string\n  /**\n   * The Mapbox Style ID.\n   */\n  styleId?: string\n  /**\n   * The public access token for the imagery.\n   */\n  accessToken?: string\n  /**\n   * The size of the image tiles.\n   * Default value: 512\n   */\n  tilesize?: number\n  /**\n   * Determines if tiles are rendered at a @2x scale factor.\n   */\n  scaleFactor?: boolean\n  /**\n   * The ellipsoid. If not specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The minimum level-of-detail supported by the imagery provider. Take care when specifying this that the number of tiles at the minimum level is small, such as four or less. A larger number is likely to result in rendering problems.\n   * Default value: 0\n   */\n  minimumLevel?: number\n  /**\n   * The maximum level-of-detail supported by the imagery provider, or undefined if there is no limit.\n   */\n  maximumLevel?: number\n  /**\n   * The rectangle, in radians, covered by the image.\n   */\n  rectangle?: VcRectangle\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: string\n  /**\n   * Triggers before the VcImageryProviderMapbox is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderMapbox is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderMapbox is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderMapboxRef = VcComponentPublicInstance<VcImageryProviderMapboxProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 13:43:58\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\osm\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject, VcRectangle } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { fileExtension, rectangle, minimumLevel, maximumLevel, ellipsoid } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * The OpenStreetMap server url.\n   * Default value: 'https://a.tile.openstreetmap.org'\n   */\n  url?: string\n  /**\n   * The file extension for images on the server.\n   * Default value: 'png'\n   */\n  fileExtension?: string\n  /**\n   * The rectangle of the layer.\n   */\n  rectangle?: VcRectangle\n  /**\n   * The minimum level-of-detail supported by the imagery provider.\n   * Default value: 0\n   */\n  minimumLevel?: number\n  /**\n   * The maximum level-of-detail supported by the imagery provider, or undefined if there is no limit.\n   */\n  maximumLevel?: number\n  /**\n   * The ellipsoid. If not specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   * Default value: 'MapQuest, Open Street Map and contributors, CC-BY-SA'\n   */\n  credit?: string | Cesium.Credit\n  /**\n   * Triggers before the VcImageryProviderOsm is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderOsm is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderOsm is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderOsmRef = VcComponentPublicInstance<VcImageryProviderOsmProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 13:44:24\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\single-tile\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject, VcRectangle } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { url, rectangle, credit, ellipsoid } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * The url for the tile\n   */\n  url: string | Cesium.Resource\n  /**\n   * The rectangle, in radians, covered by the image.\n   */\n  rectangle?: VcRectangle\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: string | Cesium.Credit\n  /**\n   * The ellipsoid. If not specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * Triggers before the VcImageryProviderSingletile is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderSingletile is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderSingletile is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderSingletileRef = VcComponentPublicInstance<VcImageryProviderSingletileProps>\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\n    const dbRequest = window.indexedDB.open(this.dbname)\n    this.layer = options.layer || null\n    this.storageType = options.storageType || 'arrayBuffer'\n    this.creatingTable = !1\n    this.cachestatus = {}\n    this.dbname = options.name\n    const that = this as IndexedDBScheduler\n\n    return new Promise((resolve, reject) => {\n      dbRequest.onsuccess = event => {\n        that.db = (event.target as IDBOpenDBRequest).result\n        that.version = that.db.version\n        that.cachestatus = that.cachestatus || {}\n        resolve(that)\n      }\n      dbRequest.onupgradeneeded = event => {\n        that.db = (event.target as any).result\n        that.version = that.db.version\n        resolve(that)\n      }\n      dbRequest.onerror = event => {\n        that.db = null\n        reject('create database fail, error code : ' + (event.target as any).errorcode)\n      }\n    }) as any\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    return new Promise((resolve, reject) => {\n      if (this.creatingTable) {\n        reject(false)\n      } else {\n        if (this.db.objectStoreNames.contains(storeName)) {\n          reject(false)\n          return\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              resolve(true)\n            }\n          } else {\n            that.creatingTable = false\n            resolve(false)\n          }\n        }\n        dbRequest.onsuccess = event => {\n          ;(event.target as any).result.close()\n          resolve(true)\n        }\n        dbRequest.onerror = event => {\n          that.creatingTable = false\n          reject(false)\n        }\n      }\n    })\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    return new Promise((resolve, reject) => {\n      if (!Cesium.defined(this.db)) {\n        reject(false)\n        return\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        resolve(false)\n        return\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            resolve(true)\n          }\n          request.onerror = event => {\n            cachestatus[storeName][id] = Status.FAILED\n            resolve(false)\n          }\n        } catch (error) {\n          reject(null)\n          return\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              resolve(true)\n            }\n            request.onerror = function (e) {\n              reject(false)\n            }\n          },\n          () => {\n            reject(false)\n          }\n        )\n      }\n    })\n  }\n\n  /**\n   * 向对象仓库读取数据。\n   * @param {String} storeName 对象仓库（表）名称\n   * @param {Number} id 主键\n   * @returns {Promise}\n   */\n  getElementFromDB(storeName, id) {\n    return new Promise((resolve, reject) => {\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) ? resolve(e.target.result.value) : reject(null)\n        }\n        request.onerror = e => {\n          reject(null)\n        }\n      } catch (error) {\n        reject(null)\n      }\n    })\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    return new Promise((resolve, reject) => {\n      const { db } = this\n      if (!Cesium.defined(db)) {\n        resolve(false)\n        return\n      }\n      if (!db.objectStoreNames.contains(storeName)) {\n        resolve(false)\n        return\n      }\n      try {\n        const request = db.transaction([storeName], 'readwrite').objectStore(storeName).put({ id: id, value: value })\n        request.onsuccess = () => {\n          resolve(true)\n        }\n        request.onerror = () => {\n          resolve(false)\n        }\n      } catch (e) {\n        resolve(false)\n      }\n    })\n  }\n\n  /**\n   * 移除数据。\n   * @param {String} storeName\n   * @param {Number} id\n   * @returns {Promise}\n   */\n  removeElementFromDB(storeName, id) {\n    return new Promise((resolve, reject) => {\n      const { db } = this\n      if (!Cesium.defined(db)) {\n        resolve(false)\n        return\n      }\n\n      if (!db.objectStoreNames.contains(storeName)) {\n        resolve(false)\n        return\n      }\n      try {\n        const request = db.transaction([storeName], 'readwrite').objectStore(storeName).delete(id)\n        request.onsuccess = () => {\n          resolve(true)\n        }\n        request.onerror = () => {\n          resolve(false)\n        }\n      } catch (e) {\n        resolve(false)\n      }\n    })\n  }\n\n  /**\n   *  清空对象仓库\n   * @param {String} storeName\n   */\n  clear(storeName) {\n    return new Promise((resolve, reject) => {\n      const { db } = this\n      if (!Cesium.defined(db)) {\n        resolve(false)\n        return\n      }\n\n      if (!db.objectStoreNames.contains(storeName)) {\n        resolve(false)\n        return\n      }\n\n      try {\n        const request = db.transaction([storeName], 'readwrite').objectStore(storeName).clear()\n        request.onsuccess = () => {\n          resolve(true)\n        }\n        request.onerror = () => {\n          resolve(false)\n        }\n      } catch (e) {\n        resolve(false)\n      }\n    })\n  }\n}\n\nexport default IndexedDBScheduler\n","import defer from 'casc-cesium-utils/defer'\nimport 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, 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 = 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.promise\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 } = 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        try {\n          return promise.then(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        } catch {\n          return ImageryProvider.loadImage(that, resource)\n        }\n      }\n    } else {\n      return ImageryProvider.loadImage(this as any, resource)\n    }\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 } = Cesium\n  if (this.isTileMap) {\n    const promise = Resource.fetchJsonp({\n      url: this._options.url + '.jsonp',\n      queryParameters: {\n        f: 'json'\n      }\n    })\n\n    try {\n      promise.then(e => {\n        onFulfilledTileMap.call(this, e)\n      })\n    } catch (e) {\n      onRejected.call(this)\n    }\n  } else {\n    // r(c.CREDENTIAL) && (o = c.addToken(o)),\n    try {\n      Resource.fetchText({\n        url: this.url + 'config'\n      }).then(e => {\n        onFulfilledRest3D.call(this, e)\n      })\n    } catch (e) {\n      onRejected.call(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-04-08 13:44:46\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\supermap\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { ProjectionTransforms, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { minimumLevel, maximumLevel, projectionTransforms } from 'casc-cesium-utils/cesium-props'\nimport SuperMapImageryProvider from './SuperMapImageryProvider'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-cesium-utils/emits'\n\nexport const supermapImageryProviderProps = {\n  url: String,\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 = {\n  /**\n   * The URL of the SuperMap iServer service.\n   */\n  url: string\n  /**\n   * The name of the layer.\n   */\n  name?: string\n  /**\n   * The minimum tile level to request, or undefined if there is no minimum.\n   * Default value: 0\n   */\n  minimumLevel?: number\n  /**\n   * The maximum tile level to request, or undefined if there is no maximum.\n   * Default value: 20\n   */\n  maximumLevel?: number\n  /**\n   * Whether the parameter of the requested map service is transparent.\n   * Default value: true\n   */\n  transparent?: boolean\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   * Default value: 'MapQuest, SuperMap iServer Imagery'\n   */\n  credit?: string | Cesium.Credit\n  /**\n   * Specify the projection transformation parameters. such as { from: 'BD09', to: 'WGS84' }\n   */\n  projectionTransforms?: ProjectionTransforms\n  /**\n   * Triggers before the VcImageryProviderSupermap is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderSupermap is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderSupermap is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderSupermapRef = VcComponentPublicInstance<VcImageryProviderSupermapProps>\n","import defer from 'casc-cesium-utils/defer'\n\n/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-03-30 16:10:02\n * @LastEditTime: 2022-05-14 17:58:25\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\tencent\\TencentImageryProvider.ts\n */\nconst TILE_URL = {\n  img: '//p{s}.map.gtimg.com/sateTiles/{z}/{sx}/{sy}/{x}_{reverseY}.jpg&scene=0',\n  terrain: '//p{s}.map.gtimg.com/demTiles/{z}/{sx}/{sy}/{x}_{reverseY}.jpg&scene=0',\n  vector: '//rt{s}.map.gtimg.com/tile?z={z}&x={x}&y={reverseY}&type=vector&styleid={style}&scene=0'\n}\n\nclass TencentImageryProvider {\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: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\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  constructor(options) {\n    const { Resource, defaultValue, Credit, Event } = Cesium\n    this._subdomains = options.subdomains || ['1', '2', '3']\n    this._url = options.url || [options.protocol || '', TILE_URL[options.mapStyle] || TILE_URL['vector']].join('')\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.minimumLevel || 0\n    this._maximumLevel = options.maximumLevel || 20\n    this._tilingScheme = new Cesium.WebMercatorTilingScheme()\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 = defer()\n    this._ready = true\n    this._readyPromise.resolve(true)\n    this._style = options.styleId\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  const reverseY = this.tilingScheme.getNumberOfYTilesAtLevel(level) - y - 1\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('{sx}', x >> 4)\n    .replace('{sy}', ((1 << level) - y) >> 4)\n    .replace('{reverseY}', reverseY)\n  const resource = this._resource.getDerivedResource({\n    url: url,\n    request: request\n  })\n  return resource\n}\n\nexport default TencentImageryProvider\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-03-31 11:14:52\n * @LastEditTime: 2022-05-13 14:26:33\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\tencent\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type {\n  ProjectionTransforms,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcImageryProvider,\n  VcReadyObject,\n  VcRectangle\n} from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { url, credit, minimumLevel, maximumLevel, rectangle, tilingScheme, projectionTransforms } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-cesium-utils/emits'\nimport TencentImageryProvider from './TencentImageryProvider'\n\nexport const tencentImageryProviderProps = {\n  ...url,\n  subdomains: {\n    type: Array as PropType<string[]>,\n    default: () => ['1', '2', '3']\n  },\n  mapStyle: {\n    type: String as PropType<'img' | 'terrain' | 'vector'>,\n    default: 'vector'\n  },\n  styleId: {\n    // 1: 经典; 2: 标签; 3: 标签; 4: 墨渊; 8: 白浅; 9: 灰色;\n    type: String,\n    default: '1'\n  },\n  protocol: String as PropType<'http' | 'https'>,\n  ...credit,\n  ...minimumLevel,\n  ...maximumLevel,\n  ...rectangle,\n  ...tilingScheme,\n  ...projectionTransforms\n}\nexport default defineComponent({\n  name: 'VcImageryProviderTencent',\n  props: tencentImageryProviderProps,\n  emits: providerEmits,\n  setup(props, ctx) {\n    // state\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'TencentImageryProvider'\n    const providersState = useProviders(props, ctx, instance)\n\n    if (undefined === providersState) {\n      return\n    }\n    // methods\n    instance.createCesiumObject = async () => {\n      Cesium.TencentImageryProvider = Cesium.TencentImageryProvider || TencentImageryProvider\n      if (providersState.unwatchFns.length === 0) {\n        providersState.setPropsWatcher(true)\n      }\n      const options = providersState.transformProps(props)\n      return new Cesium.TencentImageryProvider(options)\n    }\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport interface VcImageryProviderTencentProps {\n  /**\n   * Specify the URL template.\n   */\n  url?: string\n  /**\n   * Specify the service polling parameters.\n   * Default value: ['1', '2', '3']\n   */\n  subdomains?: string[]\n  /**\n   * Specify the map style type of the tencent service.\n   * Default value: vector\n   */\n  mapStyle?: 'img' | 'terrain' | 'vector'\n  /**\n   * Specify the map style type of the tencent service. Valid when mapStyle is vector. 1: Classic; 2: Label; 3: Label; 4: Mo Yuan; 8: White Light; 9: Gray\n   * Default value: 1\n   */\n  styleId?: string\n  /**\n   * Specify protocol of service.\n   */\n  protocol?: 'https' | 'http'\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: string | Cesium.Credit\n  /**\n   * The minimum level-of-detail supported by the imagery provider.\n   * Default value: 0\n   */\n  minimumLevel?: number\n  /**\n   * The maximum level-of-detail supported by the imagery provider.\n   * Default value: 20\n   */\n  maximumLevel?: number\n  /**\n   * The rectangle, in radians, covered by the image.\n   */\n  rectangle?: VcRectangle\n  /**\n   * The tiling scheme specifying how the ellipsoidal surface is broken into tiles.\n   */\n  tilingScheme?: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\n  /**\n   * Specify the projection transformation parameters.\n   */\n  projectionTransforms?: false | ProjectionTransforms\n  /**\n   * Triggers before the VcImageryProviderTencent is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderTencent is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderTencent is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  errorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  readyPromise?: (provider: VcImageryProvider, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderTencentRef = VcComponentPublicInstance<VcImageryProviderTencentProps>\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","/*! https://mths.be/punycode v1.4.0 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","/*!\n * URI.js - Mutating URLs\n * IPv6 Support\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n *   MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n\n(function (root, factory) {\n  'use strict';\n  // https://github.com/umdjs/umd/blob/master/returnExports.js\n  if (typeof module === 'object' && module.exports) {\n    // Node\n    module.exports = factory();\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(factory);\n  } else {\n    // Browser globals (root is window)\n    root.IPv6 = factory(root);\n  }\n}(this, function (root) {\n  'use strict';\n\n  /*\n  var _in = \"fe80:0000:0000:0000:0204:61ff:fe9d:f156\";\n  var _out = IPv6.best(_in);\n  var _expected = \"fe80::204:61ff:fe9d:f156\";\n\n  console.log(_in, _out, _expected, _out === _expected);\n  */\n\n  // save current IPv6 variable, if any\n  var _IPv6 = root && root.IPv6;\n\n  function bestPresentation(address) {\n    // based on:\n    // Javascript to test an IPv6 address for proper format, and to\n    // present the \"best text representation\" according to IETF Draft RFC at\n    // http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-04\n    // 8 Feb 2010 Rich Brown, Dartware, LLC\n    // Please feel free to use this code as long as you provide a link to\n    // http://www.intermapper.com\n    // http://intermapper.com/support/tools/IPV6-Validator.aspx\n    // http://download.dartware.com/thirdparty/ipv6validator.js\n\n    var _address = address.toLowerCase();\n    var segments = _address.split(':');\n    var length = segments.length;\n    var total = 8;\n\n    // trim colons (:: or ::a:b:c… or …a:b:c::)\n    if (segments[0] === '' && segments[1] === '' && segments[2] === '') {\n      // must have been ::\n      // remove first two items\n      segments.shift();\n      segments.shift();\n    } else if (segments[0] === '' && segments[1] === '') {\n      // must have been ::xxxx\n      // remove the first item\n      segments.shift();\n    } else if (segments[length - 1] === '' && segments[length - 2] === '') {\n      // must have been xxxx::\n      segments.pop();\n    }\n\n    length = segments.length;\n\n    // adjust total segments for IPv4 trailer\n    if (segments[length - 1].indexOf('.') !== -1) {\n      // found a \".\" which means IPv4\n      total = 7;\n    }\n\n    // fill empty segments them with \"0000\"\n    var pos;\n    for (pos = 0; pos < length; pos++) {\n      if (segments[pos] === '') {\n        break;\n      }\n    }\n\n    if (pos < total) {\n      segments.splice(pos, 1, '0000');\n      while (segments.length < total) {\n        segments.splice(pos, 0, '0000');\n      }\n    }\n\n    // strip leading zeros\n    var _segments;\n    for (var i = 0; i < total; i++) {\n      _segments = segments[i].split('');\n      for (var j = 0; j < 3 ; j++) {\n        if (_segments[0] === '0' && _segments.length > 1) {\n          _segments.splice(0,1);\n        } else {\n          break;\n        }\n      }\n\n      segments[i] = _segments.join('');\n    }\n\n    // find longest sequence of zeroes and coalesce them into one segment\n    var best = -1;\n    var _best = 0;\n    var _current = 0;\n    var current = -1;\n    var inzeroes = false;\n    // i; already declared\n\n    for (i = 0; i < total; i++) {\n      if (inzeroes) {\n        if (segments[i] === '0') {\n          _current += 1;\n        } else {\n          inzeroes = false;\n          if (_current > _best) {\n            best = current;\n            _best = _current;\n          }\n        }\n      } else {\n        if (segments[i] === '0') {\n          inzeroes = true;\n          current = i;\n          _current = 1;\n        }\n      }\n    }\n\n    if (_current > _best) {\n      best = current;\n      _best = _current;\n    }\n\n    if (_best > 1) {\n      segments.splice(best, _best, '');\n    }\n\n    length = segments.length;\n\n    // assemble remaining segments\n    var result = '';\n    if (segments[0] === '')  {\n      result = ':';\n    }\n\n    for (i = 0; i < length; i++) {\n      result += segments[i];\n      if (i === length - 1) {\n        break;\n      }\n\n      result += ':';\n    }\n\n    if (segments[length - 1] === '') {\n      result += ':';\n    }\n\n    return result;\n  }\n\n  function noConflict() {\n    /*jshint validthis: true */\n    if (root.IPv6 === this) {\n      root.IPv6 = _IPv6;\n    }\n\n    return this;\n  }\n\n  return {\n    best: bestPresentation,\n    noConflict: noConflict\n  };\n}));\n","/*!\n * URI.js - Mutating URLs\n * Second Level Domain (SLD) Support\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n *   MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n\n(function (root, factory) {\n  'use strict';\n  // https://github.com/umdjs/umd/blob/master/returnExports.js\n  if (typeof module === 'object' && module.exports) {\n    // Node\n    module.exports = factory();\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(factory);\n  } else {\n    // Browser globals (root is window)\n    root.SecondLevelDomains = factory(root);\n  }\n}(this, function (root) {\n  'use strict';\n\n  // save current SecondLevelDomains variable, if any\n  var _SecondLevelDomains = root && root.SecondLevelDomains;\n\n  var SLD = {\n    // list of known Second Level Domains\n    // converted list of SLDs from https://github.com/gavingmiller/second-level-domains\n    // ----\n    // publicsuffix.org is more current and actually used by a couple of browsers internally.\n    // downside is it also contains domains like \"dyndns.org\" - which is fine for the security\n    // issues browser have to deal with (SOP for cookies, etc) - but is way overboard for URI.js\n    // ----\n    list: {\n      'ac':' com gov mil net org ',\n      'ae':' ac co gov mil name net org pro sch ',\n      'af':' com edu gov net org ',\n      'al':' com edu gov mil net org ',\n      'ao':' co ed gv it og pb ',\n      'ar':' com edu gob gov int mil net org tur ',\n      'at':' ac co gv or ',\n      'au':' asn com csiro edu gov id net org ',\n      'ba':' co com edu gov mil net org rs unbi unmo unsa untz unze ',\n      'bb':' biz co com edu gov info net org store tv ',\n      'bh':' biz cc com edu gov info net org ',\n      'bn':' com edu gov net org ',\n      'bo':' com edu gob gov int mil net org tv ',\n      'br':' adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ',\n      'bs':' com edu gov net org ',\n      'bz':' du et om ov rg ',\n      'ca':' ab bc mb nb nf nl ns nt nu on pe qc sk yk ',\n      'ck':' biz co edu gen gov info net org ',\n      'cn':' ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ',\n      'co':' com edu gov mil net nom org ',\n      'cr':' ac c co ed fi go or sa ',\n      'cy':' ac biz com ekloges gov ltd name net org parliament press pro tm ',\n      'do':' art com edu gob gov mil net org sld web ',\n      'dz':' art asso com edu gov net org pol ',\n      'ec':' com edu fin gov info med mil net org pro ',\n      'eg':' com edu eun gov mil name net org sci ',\n      'er':' com edu gov ind mil net org rochest w ',\n      'es':' com edu gob nom org ',\n      'et':' biz com edu gov info name net org ',\n      'fj':' ac biz com info mil name net org pro ',\n      'fk':' ac co gov net nom org ',\n      'fr':' asso com f gouv nom prd presse tm ',\n      'gg':' co net org ',\n      'gh':' com edu gov mil org ',\n      'gn':' ac com gov net org ',\n      'gr':' com edu gov mil net org ',\n      'gt':' com edu gob ind mil net org ',\n      'gu':' com edu gov net org ',\n      'hk':' com edu gov idv net org ',\n      'hu':' 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ',\n      'id':' ac co go mil net or sch web ',\n      'il':' ac co gov idf k12 muni net org ',\n      'in':' ac co edu ernet firm gen gov i ind mil net nic org res ',\n      'iq':' com edu gov i mil net org ',\n      'ir':' ac co dnssec gov i id net org sch ',\n      'it':' edu gov ',\n      'je':' co net org ',\n      'jo':' com edu gov mil name net org sch ',\n      'jp':' ac ad co ed go gr lg ne or ',\n      'ke':' ac co go info me mobi ne or sc ',\n      'kh':' com edu gov mil net org per ',\n      'ki':' biz com de edu gov info mob net org tel ',\n      'km':' asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ',\n      'kn':' edu gov net org ',\n      'kr':' ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ',\n      'kw':' com edu gov net org ',\n      'ky':' com edu gov net org ',\n      'kz':' com edu gov mil net org ',\n      'lb':' com edu gov net org ',\n      'lk':' assn com edu gov grp hotel int ltd net ngo org sch soc web ',\n      'lr':' com edu gov net org ',\n      'lv':' asn com conf edu gov id mil net org ',\n      'ly':' com edu gov id med net org plc sch ',\n      'ma':' ac co gov m net org press ',\n      'mc':' asso tm ',\n      'me':' ac co edu gov its net org priv ',\n      'mg':' com edu gov mil nom org prd tm ',\n      'mk':' com edu gov inf name net org pro ',\n      'ml':' com edu gov net org presse ',\n      'mn':' edu gov org ',\n      'mo':' com edu gov net org ',\n      'mt':' com edu gov net org ',\n      'mv':' aero biz com coop edu gov info int mil museum name net org pro ',\n      'mw':' ac co com coop edu gov int museum net org ',\n      'mx':' com edu gob net org ',\n      'my':' com edu gov mil name net org sch ',\n      'nf':' arts com firm info net other per rec store web ',\n      'ng':' biz com edu gov mil mobi name net org sch ',\n      'ni':' ac co com edu gob mil net nom org ',\n      'np':' com edu gov mil net org ',\n      'nr':' biz com edu gov info net org ',\n      'om':' ac biz co com edu gov med mil museum net org pro sch ',\n      'pe':' com edu gob mil net nom org sld ',\n      'ph':' com edu gov i mil net ngo org ',\n      'pk':' biz com edu fam gob gok gon gop gos gov net org web ',\n      'pl':' art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ',\n      'pr':' ac biz com edu est gov info isla name net org pro prof ',\n      'ps':' com edu gov net org plo sec ',\n      'pw':' belau co ed go ne or ',\n      'ro':' arts com firm info nom nt org rec store tm www ',\n      'rs':' ac co edu gov in org ',\n      'sb':' com edu gov net org ',\n      'sc':' com edu gov net org ',\n      'sh':' co com edu gov net nom org ',\n      'sl':' com edu gov net org ',\n      'st':' co com consulado edu embaixada gov mil net org principe saotome store ',\n      'sv':' com edu gob org red ',\n      'sz':' ac co org ',\n      'tr':' av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ',\n      'tt':' aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ',\n      'tw':' club com ebiz edu game gov idv mil net org ',\n      'mu':' ac co com gov net or org ',\n      'mz':' ac co edu gov org ',\n      'na':' co com ',\n      'nz':' ac co cri geek gen govt health iwi maori mil net org parliament school ',\n      'pa':' abo ac com edu gob ing med net nom org sld ',\n      'pt':' com edu gov int net nome org publ ',\n      'py':' com edu gov mil net org ',\n      'qa':' com edu gov mil net org ',\n      're':' asso com nom ',\n      'ru':' ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ',\n      'rw':' ac co com edu gouv gov int mil net ',\n      'sa':' com edu gov med net org pub sch ',\n      'sd':' com edu gov info med net org tv ',\n      'se':' a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ',\n      'sg':' com edu gov idn net org per ',\n      'sn':' art com edu gouv org perso univ ',\n      'sy':' com edu gov mil net news org ',\n      'th':' ac co go in mi net or ',\n      'tj':' ac biz co com edu go gov info int mil name net nic org test web ',\n      'tn':' agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ',\n      'tz':' ac co go ne or ',\n      'ua':' biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ',\n      'ug':' ac co go ne or org sc ',\n      'uk':' ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ',\n      'us':' dni fed isa kids nsn ',\n      'uy':' com edu gub mil net org ',\n      've':' co com edu gob info mil net org web ',\n      'vi':' co com k12 net org ',\n      'vn':' ac biz com edu gov health info int name net org pro ',\n      'ye':' co com gov ltd me net org plc ',\n      'yu':' ac co edu gov org ',\n      'za':' ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ',\n      'zm':' ac co com edu gov net org sch ',\n      // https://en.wikipedia.org/wiki/CentralNic#Second-level_domains\n      'com': 'ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ',\n      'net': 'gb jp se uk ',\n      'org': 'ae',\n      'de': 'com '\n    },\n    // gorhill 2013-10-25: Using indexOf() instead Regexp(). Significant boost\n    // in both performance and memory footprint. No initialization required.\n    // http://jsperf.com/uri-js-sld-regex-vs-binary-search/4\n    // Following methods use lastIndexOf() rather than array.split() in order\n    // to avoid any memory allocations.\n    has: function(domain) {\n      var tldOffset = domain.lastIndexOf('.');\n      if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n        return false;\n      }\n      var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n      if (sldOffset <= 0 || sldOffset >= (tldOffset-1)) {\n        return false;\n      }\n      var sldList = SLD.list[domain.slice(tldOffset+1)];\n      if (!sldList) {\n        return false;\n      }\n      return sldList.indexOf(' ' + domain.slice(sldOffset+1, tldOffset) + ' ') >= 0;\n    },\n    is: function(domain) {\n      var tldOffset = domain.lastIndexOf('.');\n      if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n        return false;\n      }\n      var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n      if (sldOffset >= 0) {\n        return false;\n      }\n      var sldList = SLD.list[domain.slice(tldOffset+1)];\n      if (!sldList) {\n        return false;\n      }\n      return sldList.indexOf(' ' + domain.slice(0, tldOffset) + ' ') >= 0;\n    },\n    get: function(domain) {\n      var tldOffset = domain.lastIndexOf('.');\n      if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n        return null;\n      }\n      var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n      if (sldOffset <= 0 || sldOffset >= (tldOffset-1)) {\n        return null;\n      }\n      var sldList = SLD.list[domain.slice(tldOffset+1)];\n      if (!sldList) {\n        return null;\n      }\n      if (sldList.indexOf(' ' + domain.slice(sldOffset+1, tldOffset) + ' ') < 0) {\n        return null;\n      }\n      return domain.slice(sldOffset+1);\n    },\n    noConflict: function(){\n      if (root.SecondLevelDomains === this) {\n        root.SecondLevelDomains = _SecondLevelDomains;\n      }\n      return this;\n    }\n  };\n\n  return SLD;\n}));\n","/*!\n * URI.js - Mutating URLs\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n *   MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n(function (root, factory) {\n  'use strict';\n  // https://github.com/umdjs/umd/blob/master/returnExports.js\n  if (typeof module === 'object' && module.exports) {\n    // Node\n    module.exports = factory(require('./punycode'), require('./IPv6'), require('./SecondLevelDomains'));\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['./punycode', './IPv6', './SecondLevelDomains'], factory);\n  } else {\n    // Browser globals (root is window)\n    root.URI = factory(root.punycode, root.IPv6, root.SecondLevelDomains, root);\n  }\n}(this, function (punycode, IPv6, SLD, root) {\n  'use strict';\n  /*global location, escape, unescape */\n  // FIXME: v2.0.0 renamce non-camelCase properties to uppercase\n  /*jshint camelcase: false */\n\n  // save current URI variable, if any\n  var _URI = root && root.URI;\n\n  function URI(url, base) {\n    var _urlSupplied = arguments.length >= 1;\n    var _baseSupplied = arguments.length >= 2;\n\n    // Allow instantiation without the 'new' keyword\n    if (!(this instanceof URI)) {\n      if (_urlSupplied) {\n        if (_baseSupplied) {\n          return new URI(url, base);\n        }\n\n        return new URI(url);\n      }\n\n      return new URI();\n    }\n\n    if (url === undefined) {\n      if (_urlSupplied) {\n        throw new TypeError('undefined is not a valid argument for URI');\n      }\n\n      if (typeof location !== 'undefined') {\n        url = location.href + '';\n      } else {\n        url = '';\n      }\n    }\n\n    if (url === null) {\n      if (_urlSupplied) {\n        throw new TypeError('null is not a valid argument for URI');\n      }\n    }\n\n    this.href(url);\n\n    // resolve to base according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#constructor\n    if (base !== undefined) {\n      return this.absoluteTo(base);\n    }\n\n    return this;\n  }\n\n  function isInteger(value) {\n    return /^[0-9]+$/.test(value);\n  }\n\n  URI.version = '1.19.11';\n\n  var p = URI.prototype;\n  var hasOwn = Object.prototype.hasOwnProperty;\n\n  function escapeRegEx(string) {\n    // https://github.com/medialize/URI.js/commit/85ac21783c11f8ccab06106dba9735a31a86924d#commitcomment-821963\n    return string.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n  }\n\n  function getType(value) {\n    // IE8 doesn't return [Object Undefined] but [Object Object] for undefined value\n    if (value === undefined) {\n      return 'Undefined';\n    }\n\n    return String(Object.prototype.toString.call(value)).slice(8, -1);\n  }\n\n  function isArray(obj) {\n    return getType(obj) === 'Array';\n  }\n\n  function filterArrayValues(data, value) {\n    var lookup = {};\n    var i, length;\n\n    if (getType(value) === 'RegExp') {\n      lookup = null;\n    } else if (isArray(value)) {\n      for (i = 0, length = value.length; i < length; i++) {\n        lookup[value[i]] = true;\n      }\n    } else {\n      lookup[value] = true;\n    }\n\n    for (i = 0, length = data.length; i < length; i++) {\n      /*jshint laxbreak: true */\n      var _match = lookup && lookup[data[i]] !== undefined\n        || !lookup && value.test(data[i]);\n      /*jshint laxbreak: false */\n      if (_match) {\n        data.splice(i, 1);\n        length--;\n        i--;\n      }\n    }\n\n    return data;\n  }\n\n  function arrayContains(list, value) {\n    var i, length;\n\n    // value may be string, number, array, regexp\n    if (isArray(value)) {\n      // Note: this can be optimized to O(n) (instead of current O(m * n))\n      for (i = 0, length = value.length; i < length; i++) {\n        if (!arrayContains(list, value[i])) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n\n    var _type = getType(value);\n    for (i = 0, length = list.length; i < length; i++) {\n      if (_type === 'RegExp') {\n        if (typeof list[i] === 'string' && list[i].match(value)) {\n          return true;\n        }\n      } else if (list[i] === value) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  function arraysEqual(one, two) {\n    if (!isArray(one) || !isArray(two)) {\n      return false;\n    }\n\n    // arrays can't be equal if they have different amount of content\n    if (one.length !== two.length) {\n      return false;\n    }\n\n    one.sort();\n    two.sort();\n\n    for (var i = 0, l = one.length; i < l; i++) {\n      if (one[i] !== two[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  function trimSlashes(text) {\n    var trim_expression = /^\\/+|\\/+$/g;\n    return text.replace(trim_expression, '');\n  }\n\n  URI._parts = function() {\n    return {\n      protocol: null,\n      username: null,\n      password: null,\n      hostname: null,\n      urn: null,\n      port: null,\n      path: null,\n      query: null,\n      fragment: null,\n      // state\n      preventInvalidHostname: URI.preventInvalidHostname,\n      duplicateQueryParameters: URI.duplicateQueryParameters,\n      escapeQuerySpace: URI.escapeQuerySpace\n    };\n  };\n  // state: throw on invalid hostname\n  // see https://github.com/medialize/URI.js/pull/345\n  // and https://github.com/medialize/URI.js/issues/354\n  URI.preventInvalidHostname = false;\n  // state: allow duplicate query parameters (a=1&a=1)\n  URI.duplicateQueryParameters = false;\n  // state: replaces + with %20 (space in query strings)\n  URI.escapeQuerySpace = true;\n  // static properties\n  URI.protocol_expression = /^[a-z][a-z0-9.+-]*$/i;\n  URI.idn_expression = /[^a-z0-9\\._-]/i;\n  URI.punycode_expression = /(xn--)/i;\n  // well, 333.444.555.666 matches, but it sure ain't no IPv4 - do we care?\n  URI.ip4_expression = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\n  // credits to Rich Brown\n  // source: http://forums.intermapper.com/viewtopic.php?p=1096#1096\n  // specification: http://www.ietf.org/rfc/rfc4291.txt\n  URI.ip6_expression = /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/;\n  // expression used is \"gruber revised\" (@gruber v2) determined to be the\n  // best solution in a regex-golf we did a couple of ages ago at\n  // * http://mathiasbynens.be/demo/url-regex\n  // * http://rodneyrehm.de/t/url-regex.html\n  URI.find_uri_expression = /\\b((?:[a-z][\\w-]+:(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:'\".,<>?«»“”‘’]))/ig;\n  URI.findUri = {\n    // valid \"scheme://\" or \"www.\"\n    start: /\\b(?:([a-z][a-z0-9.+-]*:\\/\\/)|www\\.)/gi,\n    // everything up to the next whitespace\n    end: /[\\s\\r\\n]|$/,\n    // trim trailing punctuation captured by end RegExp\n    trim: /[`!()\\[\\]{};:'\".,<>?«»“”„‘’]+$/,\n    // balanced parens inclusion (), [], {}, <>\n    parens: /(\\([^\\)]*\\)|\\[[^\\]]*\\]|\\{[^}]*\\}|<[^>]*>)/g,\n  };\n  URI.leading_whitespace_expression = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n  // https://infra.spec.whatwg.org/#ascii-tab-or-newline\n  URI.ascii_tab_whitespace = /[\\u0009\\u000A\\u000D]+/g\n  // http://www.iana.org/assignments/uri-schemes.html\n  // http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers#Well-known_ports\n  URI.defaultPorts = {\n    http: '80',\n    https: '443',\n    ftp: '21',\n    gopher: '70',\n    ws: '80',\n    wss: '443'\n  };\n  // list of protocols which always require a hostname\n  URI.hostProtocols = [\n    'http',\n    'https'\n  ];\n\n  // allowed hostname characters according to RFC 3986\n  // ALPHA DIGIT \"-\" \".\" \"_\" \"~\" \"!\" \"$\" \"&\" \"'\" \"(\" \")\" \"*\" \"+\" \",\" \";\" \"=\" %encoded\n  // I've never seen a (non-IDN) hostname other than: ALPHA DIGIT . - _\n  URI.invalid_hostname_characters = /[^a-zA-Z0-9\\.\\-:_]/;\n  // map DOM Elements to their URI attribute\n  URI.domAttributes = {\n    'a': 'href',\n    'blockquote': 'cite',\n    'link': 'href',\n    'base': 'href',\n    'script': 'src',\n    'form': 'action',\n    'img': 'src',\n    'area': 'href',\n    'iframe': 'src',\n    'embed': 'src',\n    'source': 'src',\n    'track': 'src',\n    'input': 'src', // but only if type=\"image\"\n    'audio': 'src',\n    'video': 'src'\n  };\n  URI.getDomAttribute = function(node) {\n    if (!node || !node.nodeName) {\n      return undefined;\n    }\n\n    var nodeName = node.nodeName.toLowerCase();\n    // <input> should only expose src for type=\"image\"\n    if (nodeName === 'input' && node.type !== 'image') {\n      return undefined;\n    }\n\n    return URI.domAttributes[nodeName];\n  };\n\n  function escapeForDumbFirefox36(value) {\n    // https://github.com/medialize/URI.js/issues/91\n    return escape(value);\n  }\n\n  // encoding / decoding according to RFC3986\n  function strictEncodeURIComponent(string) {\n    // see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIComponent\n    return encodeURIComponent(string)\n      .replace(/[!'()*]/g, escapeForDumbFirefox36)\n      .replace(/\\*/g, '%2A');\n  }\n  URI.encode = strictEncodeURIComponent;\n  URI.decode = decodeURIComponent;\n  URI.iso8859 = function() {\n    URI.encode = escape;\n    URI.decode = unescape;\n  };\n  URI.unicode = function() {\n    URI.encode = strictEncodeURIComponent;\n    URI.decode = decodeURIComponent;\n  };\n  URI.characters = {\n    pathname: {\n      encode: {\n        // RFC3986 2.1: For consistency, URI producers and normalizers should\n        // use uppercase hexadecimal digits for all percent-encodings.\n        expression: /%(24|26|2B|2C|3B|3D|3A|40)/ig,\n        map: {\n          // -._~!'()*\n          '%24': '$',\n          '%26': '&',\n          '%2B': '+',\n          '%2C': ',',\n          '%3B': ';',\n          '%3D': '=',\n          '%3A': ':',\n          '%40': '@'\n        }\n      },\n      decode: {\n        expression: /[\\/\\?#]/g,\n        map: {\n          '/': '%2F',\n          '?': '%3F',\n          '#': '%23'\n        }\n      }\n    },\n    reserved: {\n      encode: {\n        // RFC3986 2.1: For consistency, URI producers and normalizers should\n        // use uppercase hexadecimal digits for all percent-encodings.\n        expression: /%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,\n        map: {\n          // gen-delims\n          '%3A': ':',\n          '%2F': '/',\n          '%3F': '?',\n          '%23': '#',\n          '%5B': '[',\n          '%5D': ']',\n          '%40': '@',\n          // sub-delims\n          '%21': '!',\n          '%24': '$',\n          '%26': '&',\n          '%27': '\\'',\n          '%28': '(',\n          '%29': ')',\n          '%2A': '*',\n          '%2B': '+',\n          '%2C': ',',\n          '%3B': ';',\n          '%3D': '='\n        }\n      }\n    },\n    urnpath: {\n      // The characters under `encode` are the characters called out by RFC 2141 as being acceptable\n      // for usage in a URN. RFC2141 also calls out \"-\", \".\", and \"_\" as acceptable characters, but\n      // these aren't encoded by encodeURIComponent, so we don't have to call them out here. Also\n      // note that the colon character is not featured in the encoding map; this is because URI.js\n      // gives the colons in URNs semantic meaning as the delimiters of path segements, and so it\n      // should not appear unencoded in a segment itself.\n      // See also the note above about RFC3986 and capitalalized hex digits.\n      encode: {\n        expression: /%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,\n        map: {\n          '%21': '!',\n          '%24': '$',\n          '%27': '\\'',\n          '%28': '(',\n          '%29': ')',\n          '%2A': '*',\n          '%2B': '+',\n          '%2C': ',',\n          '%3B': ';',\n          '%3D': '=',\n          '%40': '@'\n        }\n      },\n      // These characters are the characters called out by RFC2141 as \"reserved\" characters that\n      // should never appear in a URN, plus the colon character (see note above).\n      decode: {\n        expression: /[\\/\\?#:]/g,\n        map: {\n          '/': '%2F',\n          '?': '%3F',\n          '#': '%23',\n          ':': '%3A'\n        }\n      }\n    }\n  };\n  URI.encodeQuery = function(string, escapeQuerySpace) {\n    var escaped = URI.encode(string + '');\n    if (escapeQuerySpace === undefined) {\n      escapeQuerySpace = URI.escapeQuerySpace;\n    }\n\n    return escapeQuerySpace ? escaped.replace(/%20/g, '+') : escaped;\n  };\n  URI.decodeQuery = function(string, escapeQuerySpace) {\n    string += '';\n    if (escapeQuerySpace === undefined) {\n      escapeQuerySpace = URI.escapeQuerySpace;\n    }\n\n    try {\n      return URI.decode(escapeQuerySpace ? string.replace(/\\+/g, '%20') : string);\n    } catch(e) {\n      // we're not going to mess with weird encodings,\n      // give up and return the undecoded original string\n      // see https://github.com/medialize/URI.js/issues/87\n      // see https://github.com/medialize/URI.js/issues/92\n      return string;\n    }\n  };\n  // generate encode/decode path functions\n  var _parts = {'encode':'encode', 'decode':'decode'};\n  var _part;\n  var generateAccessor = function(_group, _part) {\n    return function(string) {\n      try {\n        return URI[_part](string + '').replace(URI.characters[_group][_part].expression, function(c) {\n          return URI.characters[_group][_part].map[c];\n        });\n      } catch (e) {\n        // we're not going to mess with weird encodings,\n        // give up and return the undecoded original string\n        // see https://github.com/medialize/URI.js/issues/87\n        // see https://github.com/medialize/URI.js/issues/92\n        return string;\n      }\n    };\n  };\n\n  for (_part in _parts) {\n    URI[_part + 'PathSegment'] = generateAccessor('pathname', _parts[_part]);\n    URI[_part + 'UrnPathSegment'] = generateAccessor('urnpath', _parts[_part]);\n  }\n\n  var generateSegmentedPathFunction = function(_sep, _codingFuncName, _innerCodingFuncName) {\n    return function(string) {\n      // Why pass in names of functions, rather than the function objects themselves? The\n      // definitions of some functions (but in particular, URI.decode) will occasionally change due\n      // to URI.js having ISO8859 and Unicode modes. Passing in the name and getting it will ensure\n      // that the functions we use here are \"fresh\".\n      var actualCodingFunc;\n      if (!_innerCodingFuncName) {\n        actualCodingFunc = URI[_codingFuncName];\n      } else {\n        actualCodingFunc = function(string) {\n          return URI[_codingFuncName](URI[_innerCodingFuncName](string));\n        };\n      }\n\n      var segments = (string + '').split(_sep);\n\n      for (var i = 0, length = segments.length; i < length; i++) {\n        segments[i] = actualCodingFunc(segments[i]);\n      }\n\n      return segments.join(_sep);\n    };\n  };\n\n  // This takes place outside the above loop because we don't want, e.g., encodeUrnPath functions.\n  URI.decodePath = generateSegmentedPathFunction('/', 'decodePathSegment');\n  URI.decodeUrnPath = generateSegmentedPathFunction(':', 'decodeUrnPathSegment');\n  URI.recodePath = generateSegmentedPathFunction('/', 'encodePathSegment', 'decode');\n  URI.recodeUrnPath = generateSegmentedPathFunction(':', 'encodeUrnPathSegment', 'decode');\n\n  URI.encodeReserved = generateAccessor('reserved', 'encode');\n\n  URI.parse = function(string, parts) {\n    var pos;\n    if (!parts) {\n      parts = {\n        preventInvalidHostname: URI.preventInvalidHostname\n      };\n    }\n\n    string = string.replace(URI.leading_whitespace_expression, '')\n    // https://infra.spec.whatwg.org/#ascii-tab-or-newline\n    string = string.replace(URI.ascii_tab_whitespace, '')\n\n    // [protocol\"://\"[username[\":\"password]\"@\"]hostname[\":\"port]\"/\"?][path][\"?\"querystring][\"#\"fragment]\n\n    // extract fragment\n    pos = string.indexOf('#');\n    if (pos > -1) {\n      // escaping?\n      parts.fragment = string.substring(pos + 1) || null;\n      string = string.substring(0, pos);\n    }\n\n    // extract query\n    pos = string.indexOf('?');\n    if (pos > -1) {\n      // escaping?\n      parts.query = string.substring(pos + 1) || null;\n      string = string.substring(0, pos);\n    }\n\n    // slashes and backslashes have lost all meaning for the web protocols (https, http, wss, ws)\n    string = string.replace(/^(https?|ftp|wss?)?:+[/\\\\]*/i, '$1://');\n    // slashes and backslashes have lost all meaning for scheme relative URLs\n    string = string.replace(/^[/\\\\]{2,}/i, '//');\n\n    // extract protocol\n    if (string.substring(0, 2) === '//') {\n      // relative-scheme\n      parts.protocol = null;\n      string = string.substring(2);\n      // extract \"user:pass@host:port\"\n      string = URI.parseAuthority(string, parts);\n    } else {\n      pos = string.indexOf(':');\n      if (pos > -1) {\n        parts.protocol = string.substring(0, pos) || null;\n        if (parts.protocol && !parts.protocol.match(URI.protocol_expression)) {\n          // : may be within the path\n          parts.protocol = undefined;\n        } else if (string.substring(pos + 1, pos + 3).replace(/\\\\/g, '/') === '//') {\n          string = string.substring(pos + 3);\n\n          // extract \"user:pass@host:port\"\n          string = URI.parseAuthority(string, parts);\n        } else {\n          string = string.substring(pos + 1);\n          parts.urn = true;\n        }\n      }\n    }\n\n    // what's left must be the path\n    parts.path = string;\n\n    // and we're done\n    return parts;\n  };\n  URI.parseHost = function(string, parts) {\n    if (!string) {\n      string = '';\n    }\n\n    // Copy chrome, IE, opera backslash-handling behavior.\n    // Back slashes before the query string get converted to forward slashes\n    // See: https://github.com/joyent/node/blob/386fd24f49b0e9d1a8a076592a404168faeecc34/lib/url.js#L115-L124\n    // See: https://code.google.com/p/chromium/issues/detail?id=25916\n    // https://github.com/medialize/URI.js/pull/233\n    string = string.replace(/\\\\/g, '/');\n\n    // extract host:port\n    var pos = string.indexOf('/');\n    var bracketPos;\n    var t;\n\n    if (pos === -1) {\n      pos = string.length;\n    }\n\n    if (string.charAt(0) === '[') {\n      // IPv6 host - http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-04#section-6\n      // I claim most client software breaks on IPv6 anyways. To simplify things, URI only accepts\n      // IPv6+port in the format [2001:db8::1]:80 (for the time being)\n      bracketPos = string.indexOf(']');\n      parts.hostname = string.substring(1, bracketPos) || null;\n      parts.port = string.substring(bracketPos + 2, pos) || null;\n      if (parts.port === '/') {\n        parts.port = null;\n      }\n    } else {\n      var firstColon = string.indexOf(':');\n      var firstSlash = string.indexOf('/');\n      var nextColon = string.indexOf(':', firstColon + 1);\n      if (nextColon !== -1 && (firstSlash === -1 || nextColon < firstSlash)) {\n        // IPv6 host contains multiple colons - but no port\n        // this notation is actually not allowed by RFC 3986, but we're a liberal parser\n        parts.hostname = string.substring(0, pos) || null;\n        parts.port = null;\n      } else {\n        t = string.substring(0, pos).split(':');\n        parts.hostname = t[0] || null;\n        parts.port = t[1] || null;\n      }\n    }\n\n    if (parts.hostname && string.substring(pos).charAt(0) !== '/') {\n      pos++;\n      string = '/' + string;\n    }\n\n    if (parts.preventInvalidHostname) {\n      URI.ensureValidHostname(parts.hostname, parts.protocol);\n    }\n\n    if (parts.port) {\n      URI.ensureValidPort(parts.port);\n    }\n\n    return string.substring(pos) || '/';\n  };\n  URI.parseAuthority = function(string, parts) {\n    string = URI.parseUserinfo(string, parts);\n    return URI.parseHost(string, parts);\n  };\n  URI.parseUserinfo = function(string, parts) {\n    // extract username:password\n    var _string = string\n    var firstBackSlash = string.indexOf('\\\\');\n    if (firstBackSlash !== -1) {\n      string = string.replace(/\\\\/g, '/')\n    }\n    var firstSlash = string.indexOf('/');\n    var pos = string.lastIndexOf('@', firstSlash > -1 ? firstSlash : string.length - 1);\n    var t;\n\n    // authority@ must come before /path or \\path\n    if (pos > -1 && (firstSlash === -1 || pos < firstSlash)) {\n      t = string.substring(0, pos).split(':');\n      parts.username = t[0] ? URI.decode(t[0]) : null;\n      t.shift();\n      parts.password = t[0] ? URI.decode(t.join(':')) : null;\n      string = _string.substring(pos + 1);\n    } else {\n      parts.username = null;\n      parts.password = null;\n    }\n\n    return string;\n  };\n  URI.parseQuery = function(string, escapeQuerySpace) {\n    if (!string) {\n      return {};\n    }\n\n    // throw out the funky business - \"?\"[name\"=\"value\"&\"]+\n    string = string.replace(/&+/g, '&').replace(/^\\?*&*|&+$/g, '');\n\n    if (!string) {\n      return {};\n    }\n\n    var items = {};\n    var splits = string.split('&');\n    var length = splits.length;\n    var v, name, value;\n\n    for (var i = 0; i < length; i++) {\n      v = splits[i].split('=');\n      name = URI.decodeQuery(v.shift(), escapeQuerySpace);\n      // no \"=\" is null according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#collect-url-parameters\n      value = v.length ? URI.decodeQuery(v.join('='), escapeQuerySpace) : null;\n\n      if (name === '__proto__') {\n        // ignore attempt at exploiting JavaScript internals\n        continue;\n      } else if (hasOwn.call(items, name)) {\n        if (typeof items[name] === 'string' || items[name] === null) {\n          items[name] = [items[name]];\n        }\n\n        items[name].push(value);\n      } else {\n        items[name] = value;\n      }\n    }\n\n    return items;\n  };\n\n  URI.build = function(parts) {\n    var t = '';\n    var requireAbsolutePath = false\n\n    if (parts.protocol) {\n      t += parts.protocol + ':';\n    }\n\n    if (!parts.urn && (t || parts.hostname)) {\n      t += '//';\n      requireAbsolutePath = true\n    }\n\n    t += (URI.buildAuthority(parts) || '');\n\n    if (typeof parts.path === 'string') {\n      if (parts.path.charAt(0) !== '/' && requireAbsolutePath) {\n        t += '/';\n      }\n\n      t += parts.path;\n    }\n\n    if (typeof parts.query === 'string' && parts.query) {\n      t += '?' + parts.query;\n    }\n\n    if (typeof parts.fragment === 'string' && parts.fragment) {\n      t += '#' + parts.fragment;\n    }\n    return t;\n  };\n  URI.buildHost = function(parts) {\n    var t = '';\n\n    if (!parts.hostname) {\n      return '';\n    } else if (URI.ip6_expression.test(parts.hostname)) {\n      t += '[' + parts.hostname + ']';\n    } else {\n      t += parts.hostname;\n    }\n\n    if (parts.port) {\n      t += ':' + parts.port;\n    }\n\n    return t;\n  };\n  URI.buildAuthority = function(parts) {\n    return URI.buildUserinfo(parts) + URI.buildHost(parts);\n  };\n  URI.buildUserinfo = function(parts) {\n    var t = '';\n\n    if (parts.username) {\n      t += URI.encode(parts.username);\n    }\n\n    if (parts.password) {\n      t += ':' + URI.encode(parts.password);\n    }\n\n    if (t) {\n      t += '@';\n    }\n\n    return t;\n  };\n  URI.buildQuery = function(data, duplicateQueryParameters, escapeQuerySpace) {\n    // according to http://tools.ietf.org/html/rfc3986 or http://labs.apache.org/webarch/uri/rfc/rfc3986.html\n    // being »-._~!$&'()*+,;=:@/?« %HEX and alnum are allowed\n    // the RFC explicitly states ?/foo being a valid use case, no mention of parameter syntax!\n    // URI.js treats the query string as being application/x-www-form-urlencoded\n    // see http://www.w3.org/TR/REC-html40/interact/forms.html#form-content-type\n\n    var t = '';\n    var unique, key, i, length;\n    for (key in data) {\n      if (key === '__proto__') {\n        // ignore attempt at exploiting JavaScript internals\n        continue;\n      } else if (hasOwn.call(data, key)) {\n        if (isArray(data[key])) {\n          unique = {};\n          for (i = 0, length = data[key].length; i < length; i++) {\n            if (data[key][i] !== undefined && unique[data[key][i] + ''] === undefined) {\n              t += '&' + URI.buildQueryParameter(key, data[key][i], escapeQuerySpace);\n              if (duplicateQueryParameters !== true) {\n                unique[data[key][i] + ''] = true;\n              }\n            }\n          }\n        } else if (data[key] !== undefined) {\n          t += '&' + URI.buildQueryParameter(key, data[key], escapeQuerySpace);\n        }\n      }\n    }\n\n    return t.substring(1);\n  };\n  URI.buildQueryParameter = function(name, value, escapeQuerySpace) {\n    // http://www.w3.org/TR/REC-html40/interact/forms.html#form-content-type -- application/x-www-form-urlencoded\n    // don't append \"=\" for null values, according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#url-parameter-serialization\n    return URI.encodeQuery(name, escapeQuerySpace) + (value !== null ? '=' + URI.encodeQuery(value, escapeQuerySpace) : '');\n  };\n\n  URI.addQuery = function(data, name, value) {\n    if (typeof name === 'object') {\n      for (var key in name) {\n        if (hasOwn.call(name, key)) {\n          URI.addQuery(data, key, name[key]);\n        }\n      }\n    } else if (typeof name === 'string') {\n      if (data[name] === undefined) {\n        data[name] = value;\n        return;\n      } else if (typeof data[name] === 'string') {\n        data[name] = [data[name]];\n      }\n\n      if (!isArray(value)) {\n        value = [value];\n      }\n\n      data[name] = (data[name] || []).concat(value);\n    } else {\n      throw new TypeError('URI.addQuery() accepts an object, string as the name parameter');\n    }\n  };\n\n  URI.setQuery = function(data, name, value) {\n    if (typeof name === 'object') {\n      for (var key in name) {\n        if (hasOwn.call(name, key)) {\n          URI.setQuery(data, key, name[key]);\n        }\n      }\n    } else if (typeof name === 'string') {\n      data[name] = value === undefined ? null : value;\n    } else {\n      throw new TypeError('URI.setQuery() accepts an object, string as the name parameter');\n    }\n  };\n\n  URI.removeQuery = function(data, name, value) {\n    var i, length, key;\n\n    if (isArray(name)) {\n      for (i = 0, length = name.length; i < length; i++) {\n        data[name[i]] = undefined;\n      }\n    } else if (getType(name) === 'RegExp') {\n      for (key in data) {\n        if (name.test(key)) {\n          data[key] = undefined;\n        }\n      }\n    } else if (typeof name === 'object') {\n      for (key in name) {\n        if (hasOwn.call(name, key)) {\n          URI.removeQuery(data, key, name[key]);\n        }\n      }\n    } else if (typeof name === 'string') {\n      if (value !== undefined) {\n        if (getType(value) === 'RegExp') {\n          if (!isArray(data[name]) && value.test(data[name])) {\n            data[name] = undefined;\n          } else {\n            data[name] = filterArrayValues(data[name], value);\n          }\n        } else if (data[name] === String(value) && (!isArray(value) || value.length === 1)) {\n          data[name] = undefined;\n        } else if (isArray(data[name])) {\n          data[name] = filterArrayValues(data[name], value);\n        }\n      } else {\n        data[name] = undefined;\n      }\n    } else {\n      throw new TypeError('URI.removeQuery() accepts an object, string, RegExp as the first parameter');\n    }\n  };\n  URI.hasQuery = function(data, name, value, withinArray) {\n    switch (getType(name)) {\n      case 'String':\n        // Nothing to do here\n        break;\n\n      case 'RegExp':\n        for (var key in data) {\n          if (hasOwn.call(data, key)) {\n            if (name.test(key) && (value === undefined || URI.hasQuery(data, key, value))) {\n              return true;\n            }\n          }\n        }\n\n        return false;\n\n      case 'Object':\n        for (var _key in name) {\n          if (hasOwn.call(name, _key)) {\n            if (!URI.hasQuery(data, _key, name[_key])) {\n              return false;\n            }\n          }\n        }\n\n        return true;\n\n      default:\n        throw new TypeError('URI.hasQuery() accepts a string, regular expression or object as the name parameter');\n    }\n\n    switch (getType(value)) {\n      case 'Undefined':\n        // true if exists (but may be empty)\n        return name in data; // data[name] !== undefined;\n\n      case 'Boolean':\n        // true if exists and non-empty\n        var _booly = Boolean(isArray(data[name]) ? data[name].length : data[name]);\n        return value === _booly;\n\n      case 'Function':\n        // allow complex comparison\n        return !!value(data[name], name, data);\n\n      case 'Array':\n        if (!isArray(data[name])) {\n          return false;\n        }\n\n        var op = withinArray ? arrayContains : arraysEqual;\n        return op(data[name], value);\n\n      case 'RegExp':\n        if (!isArray(data[name])) {\n          return Boolean(data[name] && data[name].match(value));\n        }\n\n        if (!withinArray) {\n          return false;\n        }\n\n        return arrayContains(data[name], value);\n\n      case 'Number':\n        value = String(value);\n        /* falls through */\n      case 'String':\n        if (!isArray(data[name])) {\n          return data[name] === value;\n        }\n\n        if (!withinArray) {\n          return false;\n        }\n\n        return arrayContains(data[name], value);\n\n      default:\n        throw new TypeError('URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter');\n    }\n  };\n\n\n  URI.joinPaths = function() {\n    var input = [];\n    var segments = [];\n    var nonEmptySegments = 0;\n\n    for (var i = 0; i < arguments.length; i++) {\n      var url = new URI(arguments[i]);\n      input.push(url);\n      var _segments = url.segment();\n      for (var s = 0; s < _segments.length; s++) {\n        if (typeof _segments[s] === 'string') {\n          segments.push(_segments[s]);\n        }\n\n        if (_segments[s]) {\n          nonEmptySegments++;\n        }\n      }\n    }\n\n    if (!segments.length || !nonEmptySegments) {\n      return new URI('');\n    }\n\n    var uri = new URI('').segment(segments);\n\n    if (input[0].path() === '' || input[0].path().slice(0, 1) === '/') {\n      uri.path('/' + uri.path());\n    }\n\n    return uri.normalize();\n  };\n\n  URI.commonPath = function(one, two) {\n    var length = Math.min(one.length, two.length);\n    var pos;\n\n    // find first non-matching character\n    for (pos = 0; pos < length; pos++) {\n      if (one.charAt(pos) !== two.charAt(pos)) {\n        pos--;\n        break;\n      }\n    }\n\n    if (pos < 1) {\n      return one.charAt(0) === two.charAt(0) && one.charAt(0) === '/' ? '/' : '';\n    }\n\n    // revert to last /\n    if (one.charAt(pos) !== '/' || two.charAt(pos) !== '/') {\n      pos = one.substring(0, pos).lastIndexOf('/');\n    }\n\n    return one.substring(0, pos + 1);\n  };\n\n  URI.withinString = function(string, callback, options) {\n    options || (options = {});\n    var _start = options.start || URI.findUri.start;\n    var _end = options.end || URI.findUri.end;\n    var _trim = options.trim || URI.findUri.trim;\n    var _parens = options.parens || URI.findUri.parens;\n    var _attributeOpen = /[a-z0-9-]=[\"']?$/i;\n\n    _start.lastIndex = 0;\n    while (true) {\n      var match = _start.exec(string);\n      if (!match) {\n        break;\n      }\n\n      var start = match.index;\n      if (options.ignoreHtml) {\n        // attribut(e=[\"']?$)\n        var attributeOpen = string.slice(Math.max(start - 3, 0), start);\n        if (attributeOpen && _attributeOpen.test(attributeOpen)) {\n          continue;\n        }\n      }\n\n      var end = start + string.slice(start).search(_end);\n      var slice = string.slice(start, end);\n      // make sure we include well balanced parens\n      var parensEnd = -1;\n      while (true) {\n        var parensMatch = _parens.exec(slice);\n        if (!parensMatch) {\n          break;\n        }\n\n        var parensMatchEnd = parensMatch.index + parensMatch[0].length;\n        parensEnd = Math.max(parensEnd, parensMatchEnd);\n      }\n\n      if (parensEnd > -1) {\n        slice = slice.slice(0, parensEnd) + slice.slice(parensEnd).replace(_trim, '');\n      } else {\n        slice = slice.replace(_trim, '');\n      }\n\n      if (slice.length <= match[0].length) {\n        // the extract only contains the starting marker of a URI,\n        // e.g. \"www\" or \"http://\"\n        continue;\n      }\n\n      if (options.ignore && options.ignore.test(slice)) {\n        continue;\n      }\n\n      end = start + slice.length;\n      var result = callback(slice, start, end, string);\n      if (result === undefined) {\n        _start.lastIndex = end;\n        continue;\n      }\n\n      result = String(result);\n      string = string.slice(0, start) + result + string.slice(end);\n      _start.lastIndex = start + result.length;\n    }\n\n    _start.lastIndex = 0;\n    return string;\n  };\n\n  URI.ensureValidHostname = function(v, protocol) {\n    // Theoretically URIs allow percent-encoding in Hostnames (according to RFC 3986)\n    // they are not part of DNS and therefore ignored by URI.js\n\n    var hasHostname = !!v; // not null and not an empty string\n    var hasProtocol = !!protocol;\n    var rejectEmptyHostname = false;\n\n    if (hasProtocol) {\n      rejectEmptyHostname = arrayContains(URI.hostProtocols, protocol);\n    }\n\n    if (rejectEmptyHostname && !hasHostname) {\n      throw new TypeError('Hostname cannot be empty, if protocol is ' + protocol);\n    } else if (v && v.match(URI.invalid_hostname_characters)) {\n      // test punycode\n      if (!punycode) {\n        throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');\n      }\n      if (punycode.toASCII(v).match(URI.invalid_hostname_characters)) {\n        throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-:_]');\n      }\n    }\n  };\n\n  URI.ensureValidPort = function (v) {\n    if (!v) {\n      return;\n    }\n\n    var port = Number(v);\n    if (isInteger(port) && (port > 0) && (port < 65536)) {\n      return;\n    }\n\n    throw new TypeError('Port \"' + v + '\" is not a valid port');\n  };\n\n  // noConflict\n  URI.noConflict = function(removeAll) {\n    if (removeAll) {\n      var unconflicted = {\n        URI: this.noConflict()\n      };\n\n      if (root.URITemplate && typeof root.URITemplate.noConflict === 'function') {\n        unconflicted.URITemplate = root.URITemplate.noConflict();\n      }\n\n      if (root.IPv6 && typeof root.IPv6.noConflict === 'function') {\n        unconflicted.IPv6 = root.IPv6.noConflict();\n      }\n\n      if (root.SecondLevelDomains && typeof root.SecondLevelDomains.noConflict === 'function') {\n        unconflicted.SecondLevelDomains = root.SecondLevelDomains.noConflict();\n      }\n\n      return unconflicted;\n    } else if (root.URI === this) {\n      root.URI = _URI;\n    }\n\n    return this;\n  };\n\n  p.build = function(deferBuild) {\n    if (deferBuild === true) {\n      this._deferred_build = true;\n    } else if (deferBuild === undefined || this._deferred_build) {\n      this._string = URI.build(this._parts);\n      this._deferred_build = false;\n    }\n\n    return this;\n  };\n\n  p.clone = function() {\n    return new URI(this);\n  };\n\n  p.valueOf = p.toString = function() {\n    return this.build(false)._string;\n  };\n\n\n  function generateSimpleAccessor(_part){\n    return function(v, build) {\n      if (v === undefined) {\n        return this._parts[_part] || '';\n      } else {\n        this._parts[_part] = v || null;\n        this.build(!build);\n        return this;\n      }\n    };\n  }\n\n  function generatePrefixAccessor(_part, _key){\n    return function(v, build) {\n      if (v === undefined) {\n        return this._parts[_part] || '';\n      } else {\n        if (v !== null) {\n          v = v + '';\n          if (v.charAt(0) === _key) {\n            v = v.substring(1);\n          }\n        }\n\n        this._parts[_part] = v;\n        this.build(!build);\n        return this;\n      }\n    };\n  }\n\n  p.protocol = generateSimpleAccessor('protocol');\n  p.username = generateSimpleAccessor('username');\n  p.password = generateSimpleAccessor('password');\n  p.hostname = generateSimpleAccessor('hostname');\n  p.port = generateSimpleAccessor('port');\n  p.query = generatePrefixAccessor('query', '?');\n  p.fragment = generatePrefixAccessor('fragment', '#');\n\n  p.search = function(v, build) {\n    var t = this.query(v, build);\n    return typeof t === 'string' && t.length ? ('?' + t) : t;\n  };\n  p.hash = function(v, build) {\n    var t = this.fragment(v, build);\n    return typeof t === 'string' && t.length ? ('#' + t) : t;\n  };\n\n  p.pathname = function(v, build) {\n    if (v === undefined || v === true) {\n      var res = this._parts.path || (this._parts.hostname ? '/' : '');\n      return v ? (this._parts.urn ? URI.decodeUrnPath : URI.decodePath)(res) : res;\n    } else {\n      if (this._parts.urn) {\n        this._parts.path = v ? URI.recodeUrnPath(v) : '';\n      } else {\n        this._parts.path = v ? URI.recodePath(v) : '/';\n      }\n      this.build(!build);\n      return this;\n    }\n  };\n  p.path = p.pathname;\n  p.href = function(href, build) {\n    var key;\n\n    if (href === undefined) {\n      return this.toString();\n    }\n\n    this._string = '';\n    this._parts = URI._parts();\n\n    var _URI = href instanceof URI;\n    var _object = typeof href === 'object' && (href.hostname || href.path || href.pathname);\n    if (href.nodeName) {\n      var attribute = URI.getDomAttribute(href);\n      href = href[attribute] || '';\n      _object = false;\n    }\n\n    // window.location is reported to be an object, but it's not the sort\n    // of object we're looking for:\n    // * location.protocol ends with a colon\n    // * location.query != object.search\n    // * location.hash != object.fragment\n    // simply serializing the unknown object should do the trick\n    // (for location, not for everything...)\n    if (!_URI && _object && href.pathname !== undefined) {\n      href = href.toString();\n    }\n\n    if (typeof href === 'string' || href instanceof String) {\n      this._parts = URI.parse(String(href), this._parts);\n    } else if (_URI || _object) {\n      var src = _URI ? href._parts : href;\n      for (key in src) {\n        if (key === 'query') { continue; }\n        if (hasOwn.call(this._parts, key)) {\n          this._parts[key] = src[key];\n        }\n      }\n      if (src.query) {\n        this.query(src.query, false);\n      }\n    } else {\n      throw new TypeError('invalid input');\n    }\n\n    this.build(!build);\n    return this;\n  };\n\n  // identification accessors\n  p.is = function(what) {\n    var ip = false;\n    var ip4 = false;\n    var ip6 = false;\n    var name = false;\n    var sld = false;\n    var idn = false;\n    var punycode = false;\n    var relative = !this._parts.urn;\n\n    if (this._parts.hostname) {\n      relative = false;\n      ip4 = URI.ip4_expression.test(this._parts.hostname);\n      ip6 = URI.ip6_expression.test(this._parts.hostname);\n      ip = ip4 || ip6;\n      name = !ip;\n      sld = name && SLD && SLD.has(this._parts.hostname);\n      idn = name && URI.idn_expression.test(this._parts.hostname);\n      punycode = name && URI.punycode_expression.test(this._parts.hostname);\n    }\n\n    switch (what.toLowerCase()) {\n      case 'relative':\n        return relative;\n\n      case 'absolute':\n        return !relative;\n\n      // hostname identification\n      case 'domain':\n      case 'name':\n        return name;\n\n      case 'sld':\n        return sld;\n\n      case 'ip':\n        return ip;\n\n      case 'ip4':\n      case 'ipv4':\n      case 'inet4':\n        return ip4;\n\n      case 'ip6':\n      case 'ipv6':\n      case 'inet6':\n        return ip6;\n\n      case 'idn':\n        return idn;\n\n      case 'url':\n        return !this._parts.urn;\n\n      case 'urn':\n        return !!this._parts.urn;\n\n      case 'punycode':\n        return punycode;\n    }\n\n    return null;\n  };\n\n  // component specific input validation\n  var _protocol = p.protocol;\n  var _port = p.port;\n  var _hostname = p.hostname;\n\n  p.protocol = function(v, build) {\n    if (v) {\n      // accept trailing ://\n      v = v.replace(/:(\\/\\/)?$/, '');\n\n      if (!v.match(URI.protocol_expression)) {\n        throw new TypeError('Protocol \"' + v + '\" contains characters other than [A-Z0-9.+-] or doesn\\'t start with [A-Z]');\n      }\n    }\n\n    return _protocol.call(this, v, build);\n  };\n  p.scheme = p.protocol;\n  p.port = function(v, build) {\n    if (this._parts.urn) {\n      return v === undefined ? '' : this;\n    }\n\n    if (v !== undefined) {\n      if (v === 0) {\n        v = null;\n      }\n\n      if (v) {\n        v += '';\n        if (v.charAt(0) === ':') {\n          v = v.substring(1);\n        }\n\n        URI.ensureValidPort(v);\n      }\n    }\n    return _port.call(this, v, build);\n  };\n  p.hostname = function(v, build) {\n    if (this._parts.urn) {\n      return v === undefined ? '' : this;\n    }\n\n    if (v !== undefined) {\n      var x = { preventInvalidHostname: this._parts.preventInvalidHostname };\n      var res = URI.parseHost(v, x);\n      if (res !== '/') {\n        throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n      }\n\n      v = x.hostname;\n      if (this._parts.preventInvalidHostname) {\n        URI.ensureValidHostname(v, this._parts.protocol);\n      }\n    }\n\n    return _hostname.call(this, v, build);\n  };\n\n  // compound accessors\n  p.origin = function(v, build) {\n    if (this._parts.urn) {\n      return v === undefined ? '' : this;\n    }\n\n    if (v === undefined) {\n      var protocol = this.protocol();\n      var authority = this.authority();\n      if (!authority) {\n        return '';\n      }\n\n      return (protocol ? protocol + '://' : '') + this.authority();\n    } else {\n      var origin = URI(v);\n      this\n        .protocol(origin.protocol())\n        .authority(origin.authority())\n        .build(!build);\n      return this;\n    }\n  };\n  p.host = function(v, build) {\n    if (this._parts.urn) {\n      return v === undefined ? '' : this;\n    }\n\n    if (v === undefined) {\n      return this._parts.hostname ? URI.buildHost(this._parts) : '';\n    } else {\n      var res = URI.parseHost(v, this._parts);\n      if (res !== '/') {\n        throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n      }\n\n      this.build(!build);\n      return this;\n    }\n  };\n  p.authority = function(v, build) {\n    if (this._parts.urn) {\n      return v === undefined ? '' : this;\n    }\n\n    if (v === undefined) {\n      return this._parts.hostname ? URI.buildAuthority(this._parts) : '';\n    } else {\n      var res = URI.parseAuthority(v, this._parts);\n      if (res !== '/') {\n        throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n      }\n\n      this.build(!build);\n      return this;\n    }\n  };\n  p.userinfo = function(v, build) {\n    if (this._parts.urn) {\n      return v === undefined ? '' : this;\n    }\n\n    if (v === undefined) {\n      var t = URI.buildUserinfo(this._parts);\n      return t ? t.substring(0, t.length -1) : t;\n    } else {\n      if (v[v.length-1] !== '@') {\n        v += '@';\n      }\n\n      URI.parseUserinfo(v, this._parts);\n      this.build(!build);\n      return this;\n    }\n  };\n  p.resource = function(v, build) {\n    var parts;\n\n    if (v === undefined) {\n      return this.path() + this.search() + this.hash();\n    }\n\n    parts = URI.parse(v);\n    this._parts.path = parts.path;\n    this._parts.query = parts.query;\n    this._parts.fragment = parts.fragment;\n    this.build(!build);\n    return this;\n  };\n\n  // fraction accessors\n  p.subdomain = function(v, build) {\n    if (this._parts.urn) {\n      return v === undefined ? '' : this;\n    }\n\n    // convenience, return \"www\" from \"www.example.org\"\n    if (v === undefined) {\n      if (!this._parts.hostname || this.is('IP')) {\n        return '';\n      }\n\n      // grab domain and add another segment\n      var end = this._parts.hostname.length - this.domain().length - 1;\n      return this._parts.hostname.substring(0, end) || '';\n    } else {\n      var e = this._parts.hostname.length - this.domain().length;\n      var sub = this._parts.hostname.substring(0, e);\n      var replace = new RegExp('^' + escapeRegEx(sub));\n\n      if (v && v.charAt(v.length - 1) !== '.') {\n        v += '.';\n      }\n\n      if (v.indexOf(':') !== -1) {\n        throw new TypeError('Domains cannot contain colons');\n      }\n\n      if (v) {\n        URI.ensureValidHostname(v, this._parts.protocol);\n      }\n\n      this._parts.hostname = this._parts.hostname.replace(replace, v);\n      this.build(!build);\n      return this;\n    }\n  };\n  p.domain = function(v, build) {\n    if (this._parts.urn) {\n      return v === undefined ? '' : this;\n    }\n\n    if (typeof v === 'boolean') {\n      build = v;\n      v = undefined;\n    }\n\n    // convenience, return \"example.org\" from \"www.example.org\"\n    if (v === undefined) {\n      if (!this._parts.hostname || this.is('IP')) {\n        return '';\n      }\n\n      // if hostname consists of 1 or 2 segments, it must be the domain\n      var t = this._parts.hostname.match(/\\./g);\n      if (t && t.length < 2) {\n        return this._parts.hostname;\n      }\n\n      // grab tld and add another segment\n      var end = this._parts.hostname.length - this.tld(build).length - 1;\n      end = this._parts.hostname.lastIndexOf('.', end -1) + 1;\n      return this._parts.hostname.substring(end) || '';\n    } else {\n      if (!v) {\n        throw new TypeError('cannot set domain empty');\n      }\n\n      if (v.indexOf(':') !== -1) {\n        throw new TypeError('Domains cannot contain colons');\n      }\n\n      URI.ensureValidHostname(v, this._parts.protocol);\n\n      if (!this._parts.hostname || this.is('IP')) {\n        this._parts.hostname = v;\n      } else {\n        var replace = new RegExp(escapeRegEx(this.domain()) + '$');\n        this._parts.hostname = this._parts.hostname.replace(replace, v);\n      }\n\n      this.build(!build);\n      return this;\n    }\n  };\n  p.tld = function(v, build) {\n    if (this._parts.urn) {\n      return v === undefined ? '' : this;\n    }\n\n    if (typeof v === 'boolean') {\n      build = v;\n      v = undefined;\n    }\n\n    // return \"org\" from \"www.example.org\"\n    if (v === undefined) {\n      if (!this._parts.hostname || this.is('IP')) {\n        return '';\n      }\n\n      var pos = this._parts.hostname.lastIndexOf('.');\n      var tld = this._parts.hostname.substring(pos + 1);\n\n      if (build !== true && SLD && SLD.list[tld.toLowerCase()]) {\n        return SLD.get(this._parts.hostname) || tld;\n      }\n\n      return tld;\n    } else {\n      var replace;\n\n      if (!v) {\n        throw new TypeError('cannot set TLD empty');\n      } else if (v.match(/[^a-zA-Z0-9-]/)) {\n        if (SLD && SLD.is(v)) {\n          replace = new RegExp(escapeRegEx(this.tld()) + '$');\n          this._parts.hostname = this._parts.hostname.replace(replace, v);\n        } else {\n          throw new TypeError('TLD \"' + v + '\" contains characters other than [A-Z0-9]');\n        }\n      } else if (!this._parts.hostname || this.is('IP')) {\n        throw new ReferenceError('cannot set TLD on non-domain host');\n      } else {\n        replace = new RegExp(escapeRegEx(this.tld()) + '$');\n        this._parts.hostname = this._parts.hostname.replace(replace, v);\n      }\n\n      this.build(!build);\n      return this;\n    }\n  };\n  p.directory = function(v, build) {\n    if (this._parts.urn) {\n      return v === undefined ? '' : this;\n    }\n\n    if (v === undefined || v === true) {\n      if (!this._parts.path && !this._parts.hostname) {\n        return '';\n      }\n\n      if (this._parts.path === '/') {\n        return '/';\n      }\n\n      var end = this._parts.path.length - this.filename().length - 1;\n      var res = this._parts.path.substring(0, end) || (this._parts.hostname ? '/' : '');\n\n      return v ? URI.decodePath(res) : res;\n\n    } else {\n      var e = this._parts.path.length - this.filename().length;\n      var directory = this._parts.path.substring(0, e);\n      var replace = new RegExp('^' + escapeRegEx(directory));\n\n      // fully qualifier directories begin with a slash\n      if (!this.is('relative')) {\n        if (!v) {\n          v = '/';\n        }\n\n        if (v.charAt(0) !== '/') {\n          v = '/' + v;\n        }\n      }\n\n      // directories always end with a slash\n      if (v && v.charAt(v.length - 1) !== '/') {\n        v += '/';\n      }\n\n      v = URI.recodePath(v);\n      this._parts.path = this._parts.path.replace(replace, v);\n      this.build(!build);\n      return this;\n    }\n  };\n  p.filename = function(v, build) {\n    if (this._parts.urn) {\n      return v === undefined ? '' : this;\n    }\n\n    if (typeof v !== 'string') {\n      if (!this._parts.path || this._parts.path === '/') {\n        return '';\n      }\n\n      var pos = this._parts.path.lastIndexOf('/');\n      var res = this._parts.path.substring(pos+1);\n\n      return v ? URI.decodePathSegment(res) : res;\n    } else {\n      var mutatedDirectory = false;\n\n      if (v.charAt(0) === '/') {\n        v = v.substring(1);\n      }\n\n      if (v.match(/\\.?\\//)) {\n        mutatedDirectory = true;\n      }\n\n      var replace = new RegExp(escapeRegEx(this.filename()) + '$');\n      v = URI.recodePath(v);\n      this._parts.path = this._parts.path.replace(replace, v);\n\n      if (mutatedDirectory) {\n        this.normalizePath(build);\n      } else {\n        this.build(!build);\n      }\n\n      return this;\n    }\n  };\n  p.suffix = function(v, build) {\n    if (this._parts.urn) {\n      return v === undefined ? '' : this;\n    }\n\n    if (v === undefined || v === true) {\n      if (!this._parts.path || this._parts.path === '/') {\n        return '';\n      }\n\n      var filename = this.filename();\n      var pos = filename.lastIndexOf('.');\n      var s, res;\n\n      if (pos === -1) {\n        return '';\n      }\n\n      // suffix may only contain alnum characters (yup, I made this up.)\n      s = filename.substring(pos+1);\n      res = (/^[a-z0-9%]+$/i).test(s) ? s : '';\n      return v ? URI.decodePathSegment(res) : res;\n    } else {\n      if (v.charAt(0) === '.') {\n        v = v.substring(1);\n      }\n\n      var suffix = this.suffix();\n      var replace;\n\n      if (!suffix) {\n        if (!v) {\n          return this;\n        }\n\n        this._parts.path += '.' + URI.recodePath(v);\n      } else if (!v) {\n        replace = new RegExp(escapeRegEx('.' + suffix) + '$');\n      } else {\n        replace = new RegExp(escapeRegEx(suffix) + '$');\n      }\n\n      if (replace) {\n        v = URI.recodePath(v);\n        this._parts.path = this._parts.path.replace(replace, v);\n      }\n\n      this.build(!build);\n      return this;\n    }\n  };\n  p.segment = function(segment, v, build) {\n    var separator = this._parts.urn ? ':' : '/';\n    var path = this.path();\n    var absolute = path.substring(0, 1) === '/';\n    var segments = path.split(separator);\n\n    if (segment !== undefined && typeof segment !== 'number') {\n      build = v;\n      v = segment;\n      segment = undefined;\n    }\n\n    if (segment !== undefined && typeof segment !== 'number') {\n      throw new Error('Bad segment \"' + segment + '\", must be 0-based integer');\n    }\n\n    if (absolute) {\n      segments.shift();\n    }\n\n    if (segment < 0) {\n      // allow negative indexes to address from the end\n      segment = Math.max(segments.length + segment, 0);\n    }\n\n    if (v === undefined) {\n      /*jshint laxbreak: true */\n      return segment === undefined\n        ? segments\n        : segments[segment];\n      /*jshint laxbreak: false */\n    } else if (segment === null || segments[segment] === undefined) {\n      if (isArray(v)) {\n        segments = [];\n        // collapse empty elements within array\n        for (var i=0, l=v.length; i < l; i++) {\n          if (!v[i].length && (!segments.length || !segments[segments.length -1].length)) {\n            continue;\n          }\n\n          if (segments.length && !segments[segments.length -1].length) {\n            segments.pop();\n          }\n\n          segments.push(trimSlashes(v[i]));\n        }\n      } else if (v || typeof v === 'string') {\n        v = trimSlashes(v);\n        if (segments[segments.length -1] === '') {\n          // empty trailing elements have to be overwritten\n          // to prevent results such as /foo//bar\n          segments[segments.length -1] = v;\n        } else {\n          segments.push(v);\n        }\n      }\n    } else {\n      if (v) {\n        segments[segment] = trimSlashes(v);\n      } else {\n        segments.splice(segment, 1);\n      }\n    }\n\n    if (absolute) {\n      segments.unshift('');\n    }\n\n    return this.path(segments.join(separator), build);\n  };\n  p.segmentCoded = function(segment, v, build) {\n    var segments, i, l;\n\n    if (typeof segment !== 'number') {\n      build = v;\n      v = segment;\n      segment = undefined;\n    }\n\n    if (v === undefined) {\n      segments = this.segment(segment, v, build);\n      if (!isArray(segments)) {\n        segments = segments !== undefined ? URI.decode(segments) : undefined;\n      } else {\n        for (i = 0, l = segments.length; i < l; i++) {\n          segments[i] = URI.decode(segments[i]);\n        }\n      }\n\n      return segments;\n    }\n\n    if (!isArray(v)) {\n      v = (typeof v === 'string' || v instanceof String) ? URI.encode(v) : v;\n    } else {\n      for (i = 0, l = v.length; i < l; i++) {\n        v[i] = URI.encode(v[i]);\n      }\n    }\n\n    return this.segment(segment, v, build);\n  };\n\n  // mutating query string\n  var q = p.query;\n  p.query = function(v, build) {\n    if (v === true) {\n      return URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n    } else if (typeof v === 'function') {\n      var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n      var result = v.call(this, data);\n      this._parts.query = URI.buildQuery(result || data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n      this.build(!build);\n      return this;\n    } else if (v !== undefined && typeof v !== 'string') {\n      this._parts.query = URI.buildQuery(v, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n      this.build(!build);\n      return this;\n    } else {\n      return q.call(this, v, build);\n    }\n  };\n  p.setQuery = function(name, value, build) {\n    var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n\n    if (typeof name === 'string' || name instanceof String) {\n      data[name] = value !== undefined ? value : null;\n    } else if (typeof name === 'object') {\n      for (var key in name) {\n        if (hasOwn.call(name, key)) {\n          data[key] = name[key];\n        }\n      }\n    } else {\n      throw new TypeError('URI.addQuery() accepts an object, string as the name parameter');\n    }\n\n    this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n    if (typeof name !== 'string') {\n      build = value;\n    }\n\n    this.build(!build);\n    return this;\n  };\n  p.addQuery = function(name, value, build) {\n    var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n    URI.addQuery(data, name, value === undefined ? null : value);\n    this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n    if (typeof name !== 'string') {\n      build = value;\n    }\n\n    this.build(!build);\n    return this;\n  };\n  p.removeQuery = function(name, value, build) {\n    var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n    URI.removeQuery(data, name, value);\n    this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n    if (typeof name !== 'string') {\n      build = value;\n    }\n\n    this.build(!build);\n    return this;\n  };\n  p.hasQuery = function(name, value, withinArray) {\n    var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n    return URI.hasQuery(data, name, value, withinArray);\n  };\n  p.setSearch = p.setQuery;\n  p.addSearch = p.addQuery;\n  p.removeSearch = p.removeQuery;\n  p.hasSearch = p.hasQuery;\n\n  // sanitizing URLs\n  p.normalize = function() {\n    if (this._parts.urn) {\n      return this\n        .normalizeProtocol(false)\n        .normalizePath(false)\n        .normalizeQuery(false)\n        .normalizeFragment(false)\n        .build();\n    }\n\n    return this\n      .normalizeProtocol(false)\n      .normalizeHostname(false)\n      .normalizePort(false)\n      .normalizePath(false)\n      .normalizeQuery(false)\n      .normalizeFragment(false)\n      .build();\n  };\n  p.normalizeProtocol = function(build) {\n    if (typeof this._parts.protocol === 'string') {\n      this._parts.protocol = this._parts.protocol.toLowerCase();\n      this.build(!build);\n    }\n\n    return this;\n  };\n  p.normalizeHostname = function(build) {\n    if (this._parts.hostname) {\n      if (this.is('IDN') && punycode) {\n        this._parts.hostname = punycode.toASCII(this._parts.hostname);\n      } else if (this.is('IPv6') && IPv6) {\n        this._parts.hostname = IPv6.best(this._parts.hostname);\n      }\n\n      this._parts.hostname = this._parts.hostname.toLowerCase();\n      this.build(!build);\n    }\n\n    return this;\n  };\n  p.normalizePort = function(build) {\n    // remove port of it's the protocol's default\n    if (typeof this._parts.protocol === 'string' && this._parts.port === URI.defaultPorts[this._parts.protocol]) {\n      this._parts.port = null;\n      this.build(!build);\n    }\n\n    return this;\n  };\n  p.normalizePath = function(build) {\n    var _path = this._parts.path;\n    if (!_path) {\n      return this;\n    }\n\n    if (this._parts.urn) {\n      this._parts.path = URI.recodeUrnPath(this._parts.path);\n      this.build(!build);\n      return this;\n    }\n\n    if (this._parts.path === '/') {\n      return this;\n    }\n\n    _path = URI.recodePath(_path);\n\n    var _was_relative;\n    var _leadingParents = '';\n    var _parent, _pos;\n\n    // handle relative paths\n    if (_path.charAt(0) !== '/') {\n      _was_relative = true;\n      _path = '/' + _path;\n    }\n\n    // handle relative files (as opposed to directories)\n    if (_path.slice(-3) === '/..' || _path.slice(-2) === '/.') {\n      _path += '/';\n    }\n\n    // resolve simples\n    _path = _path\n      .replace(/(\\/(\\.\\/)+)|(\\/\\.$)/g, '/')\n      .replace(/\\/{2,}/g, '/');\n\n    // remember leading parents\n    if (_was_relative) {\n      _leadingParents = _path.substring(1).match(/^(\\.\\.\\/)+/) || '';\n      if (_leadingParents) {\n        _leadingParents = _leadingParents[0];\n      }\n    }\n\n    // resolve parents\n    while (true) {\n      _parent = _path.search(/\\/\\.\\.(\\/|$)/);\n      if (_parent === -1) {\n        // no more ../ to resolve\n        break;\n      } else if (_parent === 0) {\n        // top level cannot be relative, skip it\n        _path = _path.substring(3);\n        continue;\n      }\n\n      _pos = _path.substring(0, _parent).lastIndexOf('/');\n      if (_pos === -1) {\n        _pos = _parent;\n      }\n      _path = _path.substring(0, _pos) + _path.substring(_parent + 3);\n    }\n\n    // revert to relative\n    if (_was_relative && this.is('relative')) {\n      _path = _leadingParents + _path.substring(1);\n    }\n\n    this._parts.path = _path;\n    this.build(!build);\n    return this;\n  };\n  p.normalizePathname = p.normalizePath;\n  p.normalizeQuery = function(build) {\n    if (typeof this._parts.query === 'string') {\n      if (!this._parts.query.length) {\n        this._parts.query = null;\n      } else {\n        this.query(URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace));\n      }\n\n      this.build(!build);\n    }\n\n    return this;\n  };\n  p.normalizeFragment = function(build) {\n    if (!this._parts.fragment) {\n      this._parts.fragment = null;\n      this.build(!build);\n    }\n\n    return this;\n  };\n  p.normalizeSearch = p.normalizeQuery;\n  p.normalizeHash = p.normalizeFragment;\n\n  p.iso8859 = function() {\n    // expect unicode input, iso8859 output\n    var e = URI.encode;\n    var d = URI.decode;\n\n    URI.encode = escape;\n    URI.decode = decodeURIComponent;\n    try {\n      this.normalize();\n    } finally {\n      URI.encode = e;\n      URI.decode = d;\n    }\n    return this;\n  };\n\n  p.unicode = function() {\n    // expect iso8859 input, unicode output\n    var e = URI.encode;\n    var d = URI.decode;\n\n    URI.encode = strictEncodeURIComponent;\n    URI.decode = unescape;\n    try {\n      this.normalize();\n    } finally {\n      URI.encode = e;\n      URI.decode = d;\n    }\n    return this;\n  };\n\n  p.readable = function() {\n    var uri = this.clone();\n    // removing username, password, because they shouldn't be displayed according to RFC 3986\n    uri.username('').password('').normalize();\n    var t = '';\n    if (uri._parts.protocol) {\n      t += uri._parts.protocol + '://';\n    }\n\n    if (uri._parts.hostname) {\n      if (uri.is('punycode') && punycode) {\n        t += punycode.toUnicode(uri._parts.hostname);\n        if (uri._parts.port) {\n          t += ':' + uri._parts.port;\n        }\n      } else {\n        t += uri.host();\n      }\n    }\n\n    if (uri._parts.hostname && uri._parts.path && uri._parts.path.charAt(0) !== '/') {\n      t += '/';\n    }\n\n    t += uri.path(true);\n    if (uri._parts.query) {\n      var q = '';\n      for (var i = 0, qp = uri._parts.query.split('&'), l = qp.length; i < l; i++) {\n        var kv = (qp[i] || '').split('=');\n        q += '&' + URI.decodeQuery(kv[0], this._parts.escapeQuerySpace)\n          .replace(/&/g, '%26');\n\n        if (kv[1] !== undefined) {\n          q += '=' + URI.decodeQuery(kv[1], this._parts.escapeQuerySpace)\n            .replace(/&/g, '%26');\n        }\n      }\n      t += '?' + q.substring(1);\n    }\n\n    t += URI.decodeQuery(uri.hash(), true);\n    return t;\n  };\n\n  // resolving relative and absolute URLs\n  p.absoluteTo = function(base) {\n    var resolved = this.clone();\n    var properties = ['protocol', 'username', 'password', 'hostname', 'port'];\n    var basedir, i, p;\n\n    if (this._parts.urn) {\n      throw new Error('URNs do not have any generally defined hierarchical components');\n    }\n\n    if (!(base instanceof URI)) {\n      base = new URI(base);\n    }\n\n    if (resolved._parts.protocol) {\n      // Directly returns even if this._parts.hostname is empty.\n      return resolved;\n    } else {\n      resolved._parts.protocol = base._parts.protocol;\n    }\n\n    if (this._parts.hostname) {\n      return resolved;\n    }\n\n    for (i = 0; (p = properties[i]); i++) {\n      resolved._parts[p] = base._parts[p];\n    }\n\n    if (!resolved._parts.path) {\n      resolved._parts.path = base._parts.path;\n      if (!resolved._parts.query) {\n        resolved._parts.query = base._parts.query;\n      }\n    } else {\n      if (resolved._parts.path.substring(-2) === '..') {\n        resolved._parts.path += '/';\n      }\n\n      if (resolved.path().charAt(0) !== '/') {\n        basedir = base.directory();\n        basedir = basedir ? basedir : base.path().indexOf('/') === 0 ? '/' : '';\n        resolved._parts.path = (basedir ? (basedir + '/') : '') + resolved._parts.path;\n        resolved.normalizePath();\n      }\n    }\n\n    resolved.build();\n    return resolved;\n  };\n  p.relativeTo = function(base) {\n    var relative = this.clone().normalize();\n    var relativeParts, baseParts, common, relativePath, basePath;\n\n    if (relative._parts.urn) {\n      throw new Error('URNs do not have any generally defined hierarchical components');\n    }\n\n    base = new URI(base).normalize();\n    relativeParts = relative._parts;\n    baseParts = base._parts;\n    relativePath = relative.path();\n    basePath = base.path();\n\n    if (relativePath.charAt(0) !== '/') {\n      throw new Error('URI is already relative');\n    }\n\n    if (basePath.charAt(0) !== '/') {\n      throw new Error('Cannot calculate a URI relative to another relative URI');\n    }\n\n    if (relativeParts.protocol === baseParts.protocol) {\n      relativeParts.protocol = null;\n    }\n\n    if (relativeParts.username !== baseParts.username || relativeParts.password !== baseParts.password) {\n      return relative.build();\n    }\n\n    if (relativeParts.protocol !== null || relativeParts.username !== null || relativeParts.password !== null) {\n      return relative.build();\n    }\n\n    if (relativeParts.hostname === baseParts.hostname && relativeParts.port === baseParts.port) {\n      relativeParts.hostname = null;\n      relativeParts.port = null;\n    } else {\n      return relative.build();\n    }\n\n    if (relativePath === basePath) {\n      relativeParts.path = '';\n      return relative.build();\n    }\n\n    // determine common sub path\n    common = URI.commonPath(relativePath, basePath);\n\n    // If the paths have nothing in common, return a relative URL with the absolute path.\n    if (!common) {\n      return relative.build();\n    }\n\n    var parents = baseParts.path\n      .substring(common.length)\n      .replace(/[^\\/]*$/, '')\n      .replace(/.*?\\//g, '../');\n\n    relativeParts.path = (parents + relativeParts.path.substring(common.length)) || './';\n\n    return relative.build();\n  };\n\n  // comparing URIs\n  p.equals = function(uri) {\n    var one = this.clone();\n    var two = new URI(uri);\n    var one_map = {};\n    var two_map = {};\n    var checked = {};\n    var one_query, two_query, key;\n\n    one.normalize();\n    two.normalize();\n\n    // exact match\n    if (one.toString() === two.toString()) {\n      return true;\n    }\n\n    // extract query string\n    one_query = one.query();\n    two_query = two.query();\n    one.query('');\n    two.query('');\n\n    // definitely not equal if not even non-query parts match\n    if (one.toString() !== two.toString()) {\n      return false;\n    }\n\n    // query parameters have the same length, even if they're permuted\n    if (one_query.length !== two_query.length) {\n      return false;\n    }\n\n    one_map = URI.parseQuery(one_query, this._parts.escapeQuerySpace);\n    two_map = URI.parseQuery(two_query, this._parts.escapeQuerySpace);\n\n    for (key in one_map) {\n      if (hasOwn.call(one_map, key)) {\n        if (!isArray(one_map[key])) {\n          if (one_map[key] !== two_map[key]) {\n            return false;\n          }\n        } else if (!arraysEqual(one_map[key], two_map[key])) {\n          return false;\n        }\n\n        checked[key] = true;\n      }\n    }\n\n    for (key in two_map) {\n      if (hasOwn.call(two_map, key)) {\n        if (!checked[key]) {\n          // two contains a parameter not present in one\n          return false;\n        }\n      }\n    }\n\n    return true;\n  };\n\n  // state\n  p.preventInvalidHostname = function(v) {\n    this._parts.preventInvalidHostname = !!v;\n    return this;\n  };\n\n  p.duplicateQueryParameters = function(v) {\n    this._parts.duplicateQueryParameters = !!v;\n    return this;\n  };\n\n  p.escapeQuerySpace = function(v) {\n    this._parts.escapeQuerySpace = !!v;\n    return this;\n  };\n\n  return URI;\n}));\n","import TiandituMapsStyle from './TiandituMapsStyle'\nimport Uri from 'urijs'\n\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 = Promise.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 } = 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-04-11 18:05:37\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\tianditu\\imagery.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type {\n  ProjectionTransforms,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcReadyObject,\n  VcRectangle\n} from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { url, minimumLevel, maximumLevel, rectangle, projectionTransforms } from 'casc-cesium-utils/cesium-props'\nimport TiandituImageryProvider from './TiandituImageryProvider'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-cesium-utils/emits'\n\nexport const tiandituImageryProviderProps = {\n  ...url,\n  ...minimumLevel,\n  ...maximumLevel,\n  ...rectangle,\n  mapStyle: {\n    type: String as PropType<\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    >,\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  credit: {\n    type: [String, Object] as PropType<string | Cesium.Credit>,\n    default: '天地图全球影像服务'\n  },\n  ...projectionTransforms\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 = {\n  /**\n   * The minimum tile level to request, or undefined if there is no minimum.\n   * Default value: 0\n   */\n  minimumLevel?: number\n  /**\n   * The maximum tile level to request, or undefined if there is no maximum.\n   * Default value: 20\n   */\n  maximumLevel?: number\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 map type of Tianditu service.\n   * Default value: 'img_w'\n   */\n  mapStyle?:\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  /**\n   * Tianditu application key.\n   */\n  token?: string\n  /**\n   * Specify the request protocol type. Can be https or http.\n   * Default value: 'https'\n   */\n  protocol?: string\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: string | Cesium.Credit\n  /**\n   * Specify the projection transformation parameters.\n   * Default value: false\n   */\n  projectionTransforms?: ProjectionTransforms\n  /**\n   * Triggers before the VcImageryProviderTianditu is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderTianditu is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderTianditu is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderTiandituRef = VcComponentPublicInstance<VcImageryProviderTiandituProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 13:54:36\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\tile-coordinates\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { tilingScheme, ellipsoid, tileWidth, tileHeight } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * The tiling scheme to use to divide the world into tiles. This parameter is ignored when accessing a tiled server.\n   */\n  tileScheme?: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\n  /**\n   * The ellipsoid. If the tilingScheme is specified and used, this parameter is ignored and the tiling scheme's ellipsoid is used instead. If neither parameter is specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The color to draw the tile box and label.\n   * Default value: 'YELLOW'\n   */\n  color?: VcColor\n  /**\n   * The width of the tile for level-of-detail selection purposes.\n   * Default value: 256\n   */\n  tileWidth?: number\n  /**\n   * The height of the tile for level-of-detail selection purposes.\n   * Default value: 256\n   */\n  tileHeight?: number\n  /**\n   * Triggers before the VcImageryProviderTileCoordinates is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderTileCoordinates is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderTileCoordinates is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderTileCoordinatesRef = VcComponentPublicInstance<VcImageryProviderTileCoordinatesProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 13:55:08\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\tile-map-service\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type {\n  ProjectionTransforms,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcReadyObject,\n  VcRectangle\n} from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * Path to image tiles on server.\n   * Default value: '.'\n   */\n  url?: string | Cesium.Resource | Promise<string> | Promise<Cesium.Resource>\n  /**\n   * The file extension for images on the server.\n   * Default value: 'png'\n   */\n  fileExtension?: string\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   * Default value: ''\n   */\n  credit?: string | Cesium.Credit\n  /**\n   * \tThe minimum level-of-detail supported by the imagery provider. Take care when specifying this that the number of tiles at the minimum level is small, such as four or less. A larger number is likely to result in rendering problems.\n   * Default value: 0\n   */\n  minimumLevel?: number\n  /**\n   * The maximum level-of-detail supported by the imagery provider, or undefined if there is no limit.\n   */\n  maximumLevel?: number\n  /**\n   * The rectangle, in radians, covered by the image.\n   */\n  rectangle?: VcRectangle\n  /**\n   * The tiling scheme to use to divide the world into tiles. This parameter is ignored when accessing a tiled server.\n   */\n  tilingScheme?: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\n  /**\n   * The ellipsoid. If the tilingScheme is specified and used, this parameter is ignored and the tiling scheme's ellipsoid is used instead. If neither parameter is specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The width of each tile in pixels. This parameter is ignored when accessing a tiled server.\n   * Default value: 256\n   */\n  tileWidth?: number\n  /**\n   * The height of each tile in pixels. This parameter is ignored when accessing a tiled server.\n   * Default value: 256\n   */\n  tileHeight?: number\n  /**\n   * Older versions of gdal2tiles.py flipped X and Y values in tilemapresource.xml. Specifying this option will do the same, allowing for loading of these incorrect tilesets.\n   */\n  flipXY?: boolean\n  /**\n   * Specify the projection transformation parameters. such as { from: 'BD09', to: 'WGS84' }\n   */\n  projectionTransforms?: ProjectionTransforms\n  /**\n   * Triggers before the VcImageryProviderTms is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderTms is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderTms is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderTmsRef = VcComponentPublicInstance<VcImageryProviderTmsProps>\n","import { createCommentVNode, defineComponent, getCurrentInstance, PropType } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject, VcRectangle } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * Path to image tiles on server.\n   * Default value: '.'\n   */\n  url?: string | Cesium.Resource | Promise<string> | Promise<Cesium.Resource>\n  /**\n   * Default value: 'png'\n   */\n  format?: string\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   * Default value: ''\n   */\n  credit?: string | Cesium.Credit\n  /**\n   * The minimum level-of-detail supported by the imagery provider. Take care when specifying this that the number of tiles at the minimum level is small, such as four or less. A larger number is likely to result in rendering problems.\n   * Default value: 0\n   */\n  minimumLevel?: number\n  /**\n   * The maximum level-of-detail supported by the imagery provider, or undefined if there is no limit.\n   */\n  maximumLevel?: number\n  /**\n   * The rectangle, in radians, covered by the image.\n   */\n  rectangle?: VcRectangle\n  /**\n   * The tiling scheme to use to divide the world into tiles. This parameter is ignored when accessing a tiled server.\n   */\n  tilingScheme?: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\n  /**\n   * The ellipsoid. If the tilingScheme is specified and used, this parameter is ignored and the tiling scheme's ellipsoid is used instead. If neither parameter is specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * The width of each tile in pixels. This parameter is ignored when accessing a tiled server.\n   * Default value: 256\n   */\n  tileWidth?: number\n  /**\n   * The height of each tile in pixels. This parameter is ignored when accessing a tiled server.\n   * Default value: 256\n   */\n  tileHeight?: number\n  /**\n   * Triggers before the VcImageryProviderTiledcache is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderTiledcache is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderTiledcache is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderTiledcacheRef = VcComponentPublicInstance<VcImageryProviderTiledcacheProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 14:36:51\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\url-template\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type {\n  AnyObject,\n  ProjectionTransforms,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcReadyObject,\n  VcRectangle\n} from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * The URL template to use to request tiles.\n   */\n  url: string | Cesium.Resource\n  /**\n   * The URL template to use to pick features. If this property is not specified, UrlTemplateImageryProvider#pickFeatures will immediately returned undefined, indicating no features picked.\n   */\n  pickFeaturesUrl?: string | Cesium.Resource\n  /**\n   * Gets the URL scheme zero padding for each tile coordinate. The format is '000' where each coordinate will be padded on the left with zeros to match the width of the passed string of zeros. e.g. Setting: urlSchemeZeroPadding : { '{x}' : '0000'} will cause an 'x' value of 12 to return the string '0012' for {x} in the generated URL.\n   */\n  urlSchemeZeroPadding?: AnyObject\n  /**\n   * The subdomains to use for the {s} placeholder in the URL template. If this parameter is a single string, each character in the string is a subdomain. If it is an array, each element in the array is a subdomain.\n   */\n  subdomains?: string | string[]\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   * Default value: ''\n   */\n  credit?: Cesium.Credit | string\n  /**\n   * The minimum level-of-detail supported by the imagery provider. Take care when specifying this that the number of tiles at the minimum level is small, such as four or less. A larger number is likely to result in rendering problems.\n   * Default value: 0\n   */\n  minimumLevel?: number\n  /**\n   * The maximum level-of-detail supported by the imagery provider, or undefined if there is no limit.\n   */\n  maximumLevel?: number\n  /**\n   * The VcRectangle, covered by the image.\n   */\n  rectangle?: VcRectangle\n  /**\n   * The tiling scheme specifying how the ellipsoidal surface is broken into tiles. If this parameter is not provided, a WebMercatorTilingScheme is used.\n   */\n  tilingScheme?: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\n  /**\n   * The ellipsoid. If the tilingScheme is specified, this parameter is ignored and the tiling scheme's ellipsoid is used instead. If neither parameter is specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * Pixel width of image tiles.\n   * Default value: 256\n   */\n  tileWidth?: number\n  /**\n   * Pixel height of image tiles.\n   * Default value: 256\n   */\n  tileHeight?: number\n  /**\n   * true if the images provided by this imagery provider include an alpha channel; otherwise, false. If this property is false, an alpha channel, if present, will be ignored. If this property is true, any images without an alpha channel will be treated as if their alpha is 1.0 everywhere. When this property is false, memory usage and texture upload time are potentially reduced.\n   * Default value: true\n   */\n  hasAlphaChannel?: boolean\n  /**\n   * The formats in which to get feature information at a specific location when UrlTemplateImageryProvider#pickFeatures is invoked. If this parameter is not specified, feature picking is disabled.\n   */\n  getFeatureInfoFormats?: Array<Cesium.GetFeatureInfoFormat>\n  /**\n   * If true, UrlTemplateImageryProvider#pickFeatures will request the pickFeaturesUrl and attempt to interpret the features included in the response. If false, UrlTemplateImageryProvider#pickFeatures will immediately return undefined (indicating no pickable features) without communicating with the server. Set this property to false if you know your data source does not support picking features or if you don't want this provider's features to be pickable. Note that this can be dynamically overridden by modifying the UriTemplateImageryProvider#enablePickFeatures property.\n   * Default value: true\n   */\n  enablePickFeatures?: boolean\n  /**\n   * Allow to replace custom keywords in the URL template. The object must have strings as keys and functions as values.\n   */\n  customTags?: AnyObject\n  /**\n   * Specify the projection transformation parameters.\n   * Default value: false\n   */\n  projectionTransforms?: ProjectionTransforms\n  /**\n   * Triggers before the VcImageryProviderUrltemplate is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderUrltemplate is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderUrltemplate is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderUrltemplateRef = VcComponentPublicInstance<VcImageryProviderUrltemplateProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 14:46:48\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\wms\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { AnyObject, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject, VcRectangle } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * The URL of the WMS service. The URL supports the same keywords as the UrlTemplateImageryProvider.\n   */\n  url: string | Cesium.Resource\n  /**\n   * The layers to include, separated by commas.\n   */\n  layers: string\n  /**\n   * Additional parameters to pass to the WMS server in the GetMap URL.\n   */\n  parameters?: AnyObject\n  /**\n   * Additional parameters to pass to the WMS server in the GetFeatureInfo URL.\n   */\n  getFeatureInfoParameters?: AnyObject\n  /**\n   * If true, WebMapServiceImageryProvider#pickFeatures will invoke the GetFeatureInfo operation on the WMS server and return the features included in the response. If false, WebMapServiceImageryProvider#pickFeatures will immediately return undefined (indicating no pickable features) without communicating with the server. Set this property to false if you know your WMS server does not support GetFeatureInfo or if you don't want this provider's features to be pickable. Note that this can be dynamically overridden by modifying the WebMapServiceImageryProvider#enablePickFeatures property.\n   * Default value: true\n   */\n  enablePickFeatures?: boolean\n  /**\n   * The formats in which to try WMS GetFeatureInfo requests.\n   */\n  getFeatureInfoFormats?: Array<Cesium.GetFeatureInfoFormat>\n  /**\n   * The rectangle, in radians, covered by the image.\n   */\n  rectangle?: VcRectangle\n  /**\n   * The tiling scheme specifying how the ellipsoidal surface is broken into tiles. If this parameter is not provided, a WebMercatorTilingScheme is used.\n   */\n  tilingScheme?: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\n  /**\n   * The ellipsoid. If the tilingScheme is specified, this parameter is ignored and the tiling scheme's ellipsoid is used instead. If neither parameter is specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * Pixel width of image tiles.\n   * Default value: 256\n   */\n  tileWidth?: number\n  /**\n   * Pixel height of image tiles.\n   * Default value: 256\n   */\n  tileHeight?: number\n  /**\n   * The minimum level-of-detail supported by the imagery provider. Take care when specifying this that the number of tiles at the minimum level is small, such as four or less. A larger number is likely to result in rendering problems.\n   */\n  minimumLevel?: number\n  /**\n   * The maximum level-of-detail supported by the imagery provider, or undefined if there is no limit.\n   */\n  maximumLevel?: number\n  /**\n   * CRS specification, for use with WMS specification >= 1.3.0.\n   */\n  crs?: string\n  /**\n   * SRS specification, for use with WMS specification 1.1.0 or 1.1.1\n   */\n  srs?: string\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: Cesium.Credit | string\n  /**\n   * The subdomains to use for the {s} placeholder in the URL template. If this parameter is a single string, each character in the string is a subdomain. If it is an array, each element in the array is a subdomain.\n   */\n  subdomains?: string | string[]\n  /**\n   * A Clock instance that is used when determining the value for the time dimension. Required when `times` is specified.\n   */\n  clock?: Cesium.Clock\n  /**\n   * TimeIntervalCollection with its data property being an object containing time dynamic dimension and their values.\n   */\n  times?: Cesium.TimeIntervalCollection\n  /**\n   * The getFeatureInfo URL of the WMS service. If the property is not defined then we use the property value of url.\n   */\n  getFeatureInfoUrl?: string | Cesium.Resource\n  /**\n   * Triggers before the VcImageryProviderWms is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderWms is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderWms is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderWmsRef = VcComponentPublicInstance<VcImageryProviderWmsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 14:54:09\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\wmts\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { AnyObject, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject, VcRectangle } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-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} from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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: Object,\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 = {\n  /**\n   * The base URL for the WMTS GetTile operation (for KVP-encoded requests) or the tile-URL template (for RESTful requests). The tile-URL template should contain the following variables: {style}, {TileMatrixSet}, {TileMatrix}, {TileRow}, {TileCol}. The first two are optional if actual values are hardcoded or not required by the server. The {s} keyword may be used to specify subdomains.\n   */\n  url: string | Cesium.Resource\n  /**\n   * The MIME type for images to retrieve from the server.\n   * Default value: 'image/jpeg'\n   */\n  format?: string\n  /**\n   * The layer name for WMTS requests.\n   */\n  layer: string\n  /**\n   * The style name for WMTS requests.\n   */\n  wmtsStyle: string\n  /**\n   * The identifier of the TileMatrixSet to use for WMTS requests.\n   */\n  tileMatrixSetID: string\n  /**\n   * A list of identifiers in the TileMatrix to use for WMTS requests, one per TileMatrix level.\n   */\n  tileMatrixLabels: Array<any>\n  /**\n   * A Clock instance that is used when determining the value for the time dimension. Required when `times` is specified.\n   */\n  clock?: Cesium.Clock\n  /**\n   * TimeIntervalCollection with its data property being an object containing time dynamic dimension and their values.\n   */\n  times?: Cesium.TimeIntervalCollection\n  /**\n   * A object containing static dimensions and their values.\n   */\n  dimensions?: AnyObject\n  /**\n   * The tile width in pixels.\n   * Default value: 256\n   */\n  tileWidth?: number\n  /**\n   * The tile height in pixels.\n   * Default value: 256\n   */\n  tileHeight?: number\n  /**\n   * The tiling scheme corresponding to the organization of the tiles in the TileMatrixSet.\n   */\n  tilingScheme?: Cesium.GeographicTilingScheme | Cesium.WebMercatorTilingScheme\n  /**\n   * The rectangle covered by the layer.\n   */\n  rectangle?: VcRectangle\n  /**\n   * The minimum level-of-detail supported by the imagery provider.\n   */\n  minimumLevel?: number\n  /**\n   * The maximum level-of-detail supported by the imagery provider, or undefined if there is no limit.\n   */\n  maximumLevel?: number\n  /**\n   * The ellipsoid. If not specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: Cesium.Credit | string\n  /**\n   * The subdomains to use for the {s} placeholder in the URL template. If this parameter is a single string, each character in the string is a subdomain. If it is an array, each element in the array is a subdomain.\n   */\n  subdomains?: string | string[]\n  /**\n   * Triggers before the VcImageryProviderWmts is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcImageryProviderWmts is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcImageryProviderWmts is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the imagery provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcImageryProviderWmtsRef = VcComponentPublicInstance<VcImageryProviderWmtsProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 13:38:10\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 { PropType } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { ellipsoid, credit } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * The URL of the Cesium terrain server.\n   */\n  url?: string\n  /**\n   * Flag that indicates if the client should request additional lighting information from the server, in the form of per vertex normals if available.\n   * Default value: false\n   */\n  requestVertexNormals?: boolean\n  /**\n   * Flag that indicates if the client should request per tile water masks from the server, if available.\n   * Default value: false\n   */\n  requestWaterMask?: boolean\n  /**\n   * Flag that indicates if the client should request per tile metadata from the server, if available.\n   * Default value: true\n   */\n  requestMetadata?: boolean\n  /**\n   * The ellipsoid. If not specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: string\n  /**\n   * Triggers before the VcTerrainProviderCesium is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcTerrainProviderCesium is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcTerrainProviderCesium is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the terrain provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcTerrainProviderCesiumRef = VcComponentPublicInstance<VcTerrainProviderCesiumProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 11:40:59\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 { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { ellipsoid, token } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-cesium-utils/emits'\nexport const arcgisTerrainProviderProps = {\n  url: {\n    type: [String, Object] as PropType<string | 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 = {\n  /**\n   * The URL of the ArcGIS ImageServer service.\n   */\n  url?: string | Cesium.Resource\n  /**\n   * The authorization token to use to connect to the service.\n   */\n  token?: string\n  /**\n   * The ellipsoid. If the tilingScheme is specified, this parameter is ignored and the tiling scheme's ellipsoid is used instead. If neither parameter is specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * Triggers before the VcTerrainProviderArcgis is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcTerrainProviderArcgis is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcTerrainProviderArcgis is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the terrain provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcTerrainProviderArcgisRef = VcComponentPublicInstance<VcTerrainProviderArcgisProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 14:32:04\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\vr-theworld\\index.ts\n */\nimport type { PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useProviders } from 'casc-cesium-composables'\nimport { ellipsoid, credit } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * The URL of the VR-TheWorld TileMap.\n   */\n  url: string\n  /**\n   * The ellipsoid. If not specified, the WGS84 ellipsoid is used.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: string\n  /**\n   * Triggers before the VcTerrainProviderVrTheworld is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcTerrainProviderVrTheworld is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcTerrainProviderVrTheworld is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the terrain provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcTerrainProviderVrTheworldRef = VcComponentPublicInstance<VcTerrainProviderVrTheworldProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 13:54:02\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\tianditu\\terrain.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance, PropType } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useProviders, useVueCesium } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { providerEmits } from 'casc-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 = {\n  /**\n   * Specify the service address.\n   * Default value: https://{s}.tianditu.gov.cn\n   */\n  url?: string\n  /**\n   * Specify the polling subdomain name.\n   * Default value: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7']\n   */\n  subdomains?: Array<string>\n  /**\n   * Specify the address of the Tiantu terrain plugin library.\n   * Default value: https://api.tianditu.gov.cn/cdn/plugins/cesium/cesiumTdt.js\n   */\n  pluginPath?: string\n  /**\n   * Specify the data type.\n   * Default value: init\n   */\n  dataType?: 'int' | 'float'\n  /**\n   * Specify the tile type.\n   * Default value: heightmap\n   */\n  tileType?: 'heightmap' | 'quantized-mesh'\n  /**\n   * Specify the Tiantu service secret key.\n   */\n  token?: string\n  /**\n   * Triggers before the VcTerrainProviderTianditu is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcTerrainProviderTianditu is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcTerrainProviderTianditu is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the terrain provider encounters an asynchronous error.\n   */\n  onErrorEvent?: (evt: Cesium.TileProviderError) => void\n  /**\n   * Triggers when the provider is ready for use.\n   */\n  onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcTerrainProviderTiandituRef = VcComponentPublicInstance<VcTerrainProviderTiandituProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:11\n * @LastEditTime: 2022-03-31 15:12:05\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\index.ts\n */\nimport { App } from 'vue'\nimport ImageryProviderAmap from './amap'\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 ImageryProviderTencent from './tencent'\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 'casc-cesium-utils/types'\n\nconst components = [\n  ImageryProviderAmap,\n  ImageryProviderArcgis,\n  ImageryProviderBaidu,\n  ImageryProviderBing,\n  ImageryProviderGoogle,\n  ImageryProviderGrid,\n  ImageryProviderIon,\n  ImageryProviderMapbox,\n  ImageryProviderOsm,\n  ImageryProviderSingletile,\n  ImageryProviderSupermap,\n  ImageryProviderTencent,\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 VcImageryProviderAmap = ImageryProviderAmap as SFCWithInstall<typeof ImageryProviderAmap>\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 VcImageryProviderTencent = ImageryProviderTencent as SFCWithInstall<typeof ImageryProviderTencent>\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 './amap'\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 './tencent'\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-04-06 15:00:23\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\datasources\\custom\\index.ts\n */\nimport type { PropType, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcDatasource, VcPickEvent, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useDatasources } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { show, enableMouseEvent } from 'casc-cesium-utils/cesium-props'\nimport { VcEntityProps } from '../../entity'\nimport { datasourceEmits } from 'casc-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 = {\n  /**\n   * Specify whether the data source is displayed.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify whether to respond to mouse pick events.\n   * Default value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify the collection of entities to be added to this data source.\n   */\n  entities?: Array<VcEntityProps>\n  /**\n   * A human-readable name for this instance.\n   */\n  name?: string\n  /**\n   * Whether to destroy the data source in addition to removing it.\n   * Default value: false\n   */\n  destroy?: boolean\n  /**\n   * Triggers before the VcDatasourceCustom is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcDatasourceCustom is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcDatasourceCustom is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this datasource.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this datasource.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this datasource.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this datasource.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this datasource.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this datasource.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this datasource.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this datasource.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers whenever a new property is assigned. datasource.clock.\n   */\n  onDefinitionChanged?: (property: Cesium.Property) => void\n  /**\n   *  Triggers when a new cluster will be displayed. datasource.clustering.\n   */\n  onClusterEvent?: (\n    entities: Array<Cesium.Entity>,\n    cluster: { billboard: Cesium.Billboard; label: Cesium.Label; point: Cesium.PointPrimitive }\n  ) => void\n  /**\n   * Triggers when entities are added or removed from the collection.datasource.entities\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   * Triggerswhen the underlying data changes.\n   */\n  onChangedEvent?: (datasource: VcDatasource) => void\n  /**\n   * Triggers if an error is encountered during processing.\n   */\n  onErrorEvent?: (datasource: VcDatasource, error: any) => void\n  /**\n   * Triggers when the data source either starts or stops loading.\n   */\n  onLoadingEvent?: (datasource: VcDatasource, isLoading: boolean) => void\n}\n\nexport type VcDatasourceCustomRef = VcComponentPublicInstance<VcDatasourceCustomProps>\n\nexport interface VcDatasourceCustomSlots {\n  /**\n   * Slot for vc-entity.\n   */\n  default: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-08-27 23:08:53\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\datasources\\czml\\index.ts\n */\nimport type { PropType, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcDatasource, VcPickEvent, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useDatasources } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { show, enableMouseEvent, sourceUri, credit } from 'casc-cesium-utils/cesium-props'\nimport { VcEntityProps } from '../../entity/src'\nimport { datasourceEmits } from 'casc-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, Array] as PropType<string | Cesium.Resource | Array<any>>,\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 = {\n  /**\n   * Specify whether the data source is displayed.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify whether to respond to mouse pick events.\n   * Default value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify the collection of entities to be added to this data source.\n   */\n  entities?: Array<VcEntityProps>\n  /**\n   * A url or CZML object to be processed.\n   */\n  czml: string | Cesium.Resource | any[]\n  /**\n   * Overrides the url to use for resolving relative links.\n   */\n  sourceUri?: string | Cesium.Resource\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: string | Cesium.Credit\n  /**\n   * Whether to destroy the data source in addition to removing it.\n   * Default value: false\n   */\n  destroy?: boolean\n  /**\n   * Triggers before the VcDatasourceCzml is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcDatasourceCzml is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcDatasourceCzml is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this datasource.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this datasource.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this datasource.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this datasource.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this datasource.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this datasource.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this datasource.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this datasource.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers whenever a new property is assigned. datasource.clock.\n   */\n  onDefinitionChanged?: (property: Cesium.Property) => void\n  /**\n   *  Triggers when a new cluster will be displayed. datasource.clustering.\n   */\n  onClusterEvent?: (\n    entities: Array<Cesium.Entity>,\n    cluster: { billboard: Cesium.Billboard; label: Cesium.Label; point: Cesium.PointPrimitive }\n  ) => void\n  /**\n   * Triggers when entities are added or removed from the collection.datasource.entities\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   * Triggerswhen the underlying data changes.\n   */\n  onChangedEvent?: (datasource: VcDatasource) => void\n  /**\n   * Triggers if an error is encountered during processing.\n   */\n  onErrorEvent?: (datasource: VcDatasource, error: any) => void\n  /**\n   * Triggers when the data source either starts or stops loading.\n   */\n  onLoadingEvent?: (datasource: VcDatasource, isLoading: boolean) => void\n}\n\nexport type VcDatasourceCzmlRef = VcComponentPublicInstance<VcDatasourceCzmlProps>\n\nexport interface VcDatasourceCzmlSlots {\n  /**\n   * Slot for vc-entity.\n   */\n  default: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 15:00:36\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\datasources\\geojson\\index.ts\n */\nimport type { PropType, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type {\n  AnyObject,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDatasource,\n  VcPickEvent,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useDatasources } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { show, enableMouseEvent, data, sourceUri, clampToGround, credit } from 'casc-cesium-utils/cesium-props'\nimport { makeColor } from 'casc-cesium-utils/cesium-helpers'\nimport { VcEntityProps } from '../../entity/src'\nimport { datasourceEmits } from 'casc-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 = {\n  /**\n   * Specify whether the data source is displayed.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify whether to respond to mouse pick events.\n   * Default value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify the collection of entities to be added to this data source.\n   */\n  entities?: Array<VcEntityProps>\n  /**\n   * A url, GeoJSON object, or TopoJSON object to be loaded.\n   */\n  data: Cesium.Resource | string | AnyObject\n  /***\n   * Overrides the url to use for resolving relative links.\n   */\n  sourceUri?: string\n  /**\n   * A function which returns a Property object (or just a string), which converts the properties into an html description.\n   */\n  describe?: (properties: AnyObject, nameProperty: string) => string | AnyObject\n  /**\n   * The default size of the map pin created for each point, in pixels.\n   * Default value: 48\n   */\n  markerSize?: number\n  /**\n   * The default symbol of the map pin created for each point.\n   */\n  markerSymbol?: string\n  /**\n   * The default color of the map pin created for each point.\n   * Default value: { x: 0.2549019607843137, y: 0.4117647058823529, z: 0.8823529411764706 }\n   */\n  markerColor?: VcColor\n  /**\n   * The default color of polylines and polygon outlines.\n   * Default value: { x: 1, y: 1, z: 0 }\n   */\n  stroke?: VcColor\n  /**\n   * The default width of polylines and polygon outlines.\n   * Default value: 2\n   */\n  strokeWidth?: number\n  /**\n   * The default color for polygon interiors.\n   * Default value: { x: 1, y: 1, z: 0, w: 0.39215686274509803 }\n   */\n  fill?: VcColor\n  /**\n   * true if we want the features clamped to the ground.\n   */\n  clampToGround?: boolean\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: string\n  /**\n   * Whether to destroy the data source in addition to removing it.\n   * Default value: false\n   */\n  destroy?: boolean\n  /**\n   * Triggers before the VcDatasourceGeojson is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcDatasourceGeojson is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcDatasourceGeojson is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this datasource.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this datasource.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this datasource.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this datasource.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this datasource.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this datasource.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this datasource.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this datasource.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers whenever a new property is assigned. datasource.clock.\n   */\n  onDefinitionChanged?: (property: Cesium.Property) => void\n  /**\n   *  Triggers when a new cluster will be displayed. datasource.clustering.\n   */\n  onClusterEvent?: (\n    entities: Array<Cesium.Entity>,\n    cluster: { billboard: Cesium.Billboard; label: Cesium.Label; point: Cesium.PointPrimitive }\n  ) => void\n  /**\n   * Triggers when entities are added or removed from the collection.datasource.entities\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   * Triggerswhen the underlying data changes.\n   */\n  onChangedEvent?: (datasource: VcDatasource) => void\n  /**\n   * Triggers if an error is encountered during processing.\n   */\n  onErrorEvent?: (datasource: VcDatasource, error: any) => void\n  /**\n   * Triggers when the data source either starts or stops loading.\n   */\n  onLoadingEvent?: (datasource: VcDatasource, isLoading: boolean) => void\n}\n\nexport type VcDatasourceGeojsonRef = VcComponentPublicInstance<VcDatasourceGeojsonProps>\n\nexport interface VcDatasourceGeojsonSlots {\n  /**\n   * Slot for vc-entity.\n   */\n  default: () => VNode[]\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 15:00:47\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\datasources\\kml\\index.ts\n */\nimport type { PropType, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcDatasource, VcPickEvent, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useDatasources, useVueCesium } from 'casc-cesium-composables'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { show, enableMouseEvent, data, sourceUri, clampToGround, ellipsoid, credit } from 'casc-cesium-utils/cesium-props'\nimport { datasourceEmits } from 'casc-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  screenOverlayContainer: [Element, String]\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 = {\n  /**\n   * Specify whether the data source is displayed.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify whether to respond to mouse pick events.\n   * Default value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify the collection of entities to be added to this data source.\n   */\n  entities?: Array<VcEntityProps>\n  /**\n   * A url, parsed KML document, or Blob containing binary KMZ data or a parsed KML document.\n   */\n  data?: string | Cesium.Resource | Blob\n  /**\n   * The camera that is used for viewRefreshModes and sending camera properties to network links.\n   */\n  camera?: Cesium.Camera\n  /**\n   * \tThe canvas that is used for sending viewer properties to network links.\n   */\n  canvas?: HTMLCanvasElement\n  /**\n   * Overrides the url to use for resolving relative links and other KML network features.\n   */\n  sourceUri?: string | Cesium.Resource\n  /**\n   * true if we want the geometry features (Polygons, LineStrings and LinearRings) clamped to the ground.\n   * Default value: false\n   */\n  clampToGround?: boolean\n  /**\n   * The global ellipsoid used for geographical calculations.\n   */\n  ellipsoid?: Cesium.Ellipsoid\n  /**\n   * A credit for the data source, which is displayed on the canvas.\n   */\n  credit?: string | Cesium.Credit\n  screenOverlayContainer?: Element | string\n  /**\n   * Whether to destroy the data source in addition to removing it.\n   * Default value: false\n   */\n  destroy?: boolean\n  /**\n   * Triggers before the VcDatasourceKml is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcDatasourceKml is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcDatasourceKml is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse is pressed on this datasource.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this datasource.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this datasource.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this datasource.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this datasource.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this datasource.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this datasource.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this datasource.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers whenever a new property is assigned. datasource.clock.\n   */\n  onDefinitionChanged?: (property: Cesium.Property) => void\n  /**\n   *  Triggers when a new cluster will be displayed. datasource.clustering.\n   */\n  onClusterEvent?: (\n    entities: Array<Cesium.Entity>,\n    cluster: { billboard: Cesium.Billboard; label: Cesium.Label; point: Cesium.PointPrimitive }\n  ) => void\n  /**\n   * Triggers when entities are added or removed from the collection.datasource.entities\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   * Triggerswhen the underlying data changes.\n   */\n  onChangedEvent?: (datasource: VcDatasource) => void\n  /**\n   * Triggers if an error is encountered during processing.\n   */\n  onErrorEvent?: (datasource: VcDatasource, error: any) => void\n  /**\n   * Triggers when the data source either starts or stops loading.\n   */\n  onLoadingEvent?: (datasource: VcDatasource, isLoading: boolean) => void\n  /**\n   * Triggers when the data source refreshes a network link.\n   */\n  onRefreshEvent?: (datasource: Cesium.KmlDataSource, url: string) => void\n  /**\n   * Triggers when the data source finds an unsupported node type.\n   */\n  onUnsupportedNodeEvent?: (\n    datasource: Cesium.KmlDataSource,\n    parentEntity: any,\n    node: any,\n    entityCollection: any,\n    styleCollection: any,\n    sourceResource: any,\n    uriResolver: any\n  ) => void\n}\n\nexport type VcDatasourceKmlRef = VcComponentPublicInstance<VcDatasourceKmlProps>\n\nexport interface VcDatasourceKmlSlots {\n  /**\n   * Slot for vc-entity.\n   */\n  default: () => VNode[]\n}\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 'casc-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-04-08 11:32:32\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 {\n  VcBoundingRectangle,\n  VcCallbackPropertyFunction,\n  VcCartesian2,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcNearFarScalar,\n  VcPosition,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { graphicsEmits } from 'casc-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\nexport type VcGraphicsBillboardProps = {\n  /**\n   * A boolean Property specifying the visibility of the billboard.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<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 component load failed.\n   */\n  onUnready?: (e: any) => 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\nexport type VcGraphicsBillboardRef = VcComponentPublicInstance<VcGraphicsBillboardProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 11:34:17\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\box\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport {\n  VcPosition,\n  VcCallbackPropertyFunction,\n  VcMaterial,\n  VcColor,\n  VcDistanceDisplayCondition,\n  VcReadyObject,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance\n} from 'casc-cesium-utils/types'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { graphicsEmits } from 'casc-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: graphicsEmits,\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\nexport type VcGraphicsBoxProps = {\n  /**\n   * A boolean Property specifying the visibility of the box.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A VcPosition Property specifying the length, width, and height of the box.\n   */\n  dimensions?: VcPosition\n  /**\n   * A Property specifying what the height from the entity position is relative to.\n   * Default value: Cesium.HeightReference.NONE\n   */\n  heightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A 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   * A Property specifying the material used to fill the box.\n   * Default value: white\n   */\n  material?: VcMaterial\n  /**\n   * A boolean Property specifying whether the box is outlined.\n   * Default Value: false\n   */\n  outline?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the VcColor of the outline.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * A 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   * An enum Property specifying whether the box casts or receives shadows from light sources.\n   * Default value: Cesium.ShadowMode.DISABLED\n   */\n  shadows?: number | Cesium.ShadowMode | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying at what distance from the camera that this box will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * Triggers before the VcGraphicsBox is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsBox is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsBox 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\nexport type VcGraphicsBoxRef = VcComponentPublicInstance<VcGraphicsBoxProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 11:33:34\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 {\n  VcCallbackPropertyFunction,\n  VcCartesian3Array,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcMaterial,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { graphicsEmits } from 'casc-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: graphicsEmits,\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 = {\n  /**\n   * A boolean Property specifying the visibility of the corridor.\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the array of VcCartesian3Array positions that define the centerline of the corridor.\n   */\n  positions?: VcCartesian3Array\n  /**\n   * A numeric Property specifying the distance between the edges of the corridor.\n   */\n  width?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the altitude of the corridor relative to the ellipsoid surface.\n   */\n  height?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the height is relative to.\n   */\n  heightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the altitude of the corridor's extruded face relative to the ellipsoid surface.\n   */\n  extrudedHeight?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the extrudedHeight is relative to.\n   */\n  extrudedHeightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A CornerType Property specifying the style of the corners.\n   */\n  cornerType?: number | Cesium.CornerType | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the distance between each latitude and longitude.\n   */\n  granularity?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A boolean Property specifying whether the corridor is filled with the provided material.\n   * Default value: true\n   */\n  fill?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the material used to fill the corridor.\n   * Default value: white\n   */\n  material?: VcMaterial\n  /**\n   * A boolean Property specifying whether the corridor is outlined.\n   * Default value: false\n   */\n  outline?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the Color of the outline.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * A numeric Property specifying the width of the outline.\n   * Default value: 1.0\n   */\n  outlineWidth?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * An enum Property specifying whether the corridor casts or receives shadows from light sources.\n   * Default value: Cesium.ShadowMode.DISABLED\n   */\n  shadows?: number | Cesium.ShadowMode | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying at what distance from the camera that this corridor will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * An enum Property specifying whether this corridor will classify terrain, 3D Tiles, or both when on the ground.\n   * Deault value: Cesium.ClassificationType.BOTH\n   */\n  classificationType?: number | Cesium.ShadowMode | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the zIndex of the corridor, used for ordering. Only has an effect if height and extrudedHeight are undefined, and if the corridor is static.\n   */\n  zIndex?: number\n  /**\n   * Triggers before the VcGraphicsCorridor is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsCorridor is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsCorridor 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\nexport type VcGraphicsCorridorRef = VcComponentPublicInstance<VcGraphicsCorridorProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-08 11:35:06\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 {\n  VcCallbackPropertyFunction,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcMaterial,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { graphicsEmits } from 'casc-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: graphicsEmits,\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 = {\n  /**\n   * A boolean Property specifying the visibility of the corridor.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * \tA numeric Property specifying the length of the cylinder.\n   */\n  length?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the radius of the top of the cylinder.\n   */\n  topRadius?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the radius of the bottom of the cylinder.\n   */\n  bottomRadius?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the height from the entity position is relative to.\n   * Default value: HeightReference.NONE\n   */\n  heightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A boolean Property specifying whether the cylinder is filled with the provided material.\n   * Default value: true\n   */\n  fill?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the material used to fill the cylinder.\n   * Default value: white\n   */\n  material?: VcMaterial\n  /**\n   * A boolean Property specifying whether the cylinder is outlined.\n   * Default value: false\n   */\n  outline?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the Color of the outline.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * A numeric Property specifying the width of the outline.\n   * Default value: 1.0\n   */\n  outlineWidth?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the number of vertical lines to draw along the perimeter for the outline.\n   * Default value: 16\n   */\n  numberOfVerticalLines?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * The number of edges around the perimeter of the cylinder.\n   * Default value: 128\n   */\n  slices?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * An enum Property specifying whether the corridor casts or receives shadows from light sources.\n   * Default value: Cesium.ShadowMode.DISABLED\n   */\n  shadows?: number | Cesium.ShadowMode | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying at what distance from the camera that this corridor will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * Triggers before the VcGraphicsCylinder is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsCylinder is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsCylinder 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\nexport type VcGraphicsCylinderRef = VcComponentPublicInstance<VcGraphicsCylinderProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-04 22:19:41\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 {\n  VcCallbackPropertyFunction,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcMaterial,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A boolean Property specifying the visibility of the ellipse.\n   * Default value: truec\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * The numeric Property specifying the semi-major axis.\n   */\n  semiMajorAxis?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * The numeric Property specifying the semi-minor axis.\n   */\n  semiMinorAxis?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the altitude of the ellipse relative to the ellipsoid surface.\n   */\n  height?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the height from the entity position is relative to.\n   * Default value: HeightReference.NONE\n   */\n  heightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * \tA numeric Property specifying the altitude of the ellipse's extruded face relative to the ellipsoid surface.\n   */\n  extrudedHeight?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the extrudedHeight is relative to.\n   * Default value: HeightReference.NONE\n   */\n  extrudedHeightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric property specifying the rotation of the ellipse counter-clockwise from north.\n   * Default value: 0.0\n   */\n  rotation?: number\n  /**\n   * A numeric property specifying the rotation of the ellipse texture counter-clockwise from north.\n   * Default value: 0.01\n   */\n  stRotation?: number\n  /**\n   * A numeric Property specifying the angular distance between points on the ellipse.\n   */\n  granularity?: number\n  /**\n   * A boolean Property specifying whether the cylinder is filled with the provided material.\n   * Default value: true\n   */\n  fill?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the material used to fill the ellipse.\n   * Default value: white\n   */\n  material?: VcMaterial\n  /**\n   * A boolean Property specifying whether the ellipse is outlined.\n   * Default value: false\n   */\n  outline?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the Color of the outline.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * A numeric Property specifying the width of the outline.\n   * Default value: 1.0\n   */\n  outlineWidth?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the number of vertical lines to draw along the perimeter for the outline.\n   * Default value: 16\n   */\n  numberOfVerticalLines?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * An enum Property specifying whether the ellipse casts or receives shadows from light sources.\n   * Default value: Cesium.ShadowMode.DISABLED\n   */\n  shadows?: number | Cesium.ShadowMode | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying at what distance from the camera that this ellipse will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * Triggers before the VcGraphicsEllipse is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsEllipse is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsEllipse 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\nexport type VcGraphicsEllipseRef = VcComponentPublicInstance<VcGraphicsEllipseProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-04 22:25:05\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 {\n  VcCallbackPropertyFunction,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcMaterial,\n  VcPosition,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A boolean Property specifying the visibility of the ellipsoid.\n   * Default value: truec\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A VcPosition Property specifying the radii of the ellipsoid.\n   */\n  radii?: VcPosition\n  /**\n   * A VcPosition Property specifying the inner radii of the ellipsoid.\n   */\n  innerRadii?: VcPosition\n  /**\n   * A Property specifying the minimum clock angle of the ellipsoid.\n   * Default value: 0.0\n   */\n  minimumClock?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the maximum clock angle of the ellipsoid.\n   * Default value: 2*PI\n   */\n  maximumClock?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the minimum cone angle of the ellipsoid.\n   * Default value: 0.0\n   */\n  minimumCone?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the maximum cone angle of the ellipsoid.\n   * Default value: PI\n   */\n  maximumCone?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the height from the entity position is relative to.\n   * Default value: HeightReference.NONE\n   */\n  heightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * \tA numeric Property specifying the altitude of the ellipse's extruded face relative to the ellipsoid surface.\n   */\n  extrudedHeight?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the extrudedHeight is relative to.\n   * Default value: HeightReference.NONE\n   */\n  extrudedHeightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A boolean Property specifying whether the ellipsoid is filled with the provided material.\n   * Default value: true\n   */\n  fill?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the material used to fill the ellipse.\n   * Default value: white\n   */\n  material?: VcMaterial\n  /**\n   * A boolean Property specifying whether the ellipsoid is outlined.\n   * Default value: false\n   */\n  outline?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the Color of the outline.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * A numeric Property specifying the width of the outline.\n   * Default value: 1.0\n   */\n  outlineWidth?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the number of stacks.\n   * Default value: 64\n   */\n  stackPartitions?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the number of radial slices.\n   * Default value: 64\n   */\n  slicePartitions?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the number of samples per outline ring, determining the granularity of the curvature.\n   * Default value: 128\n   */\n  subdivisions?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * An enum Property specifying whether the ellipsoid casts or receives shadows from light sources.\n   * Default value: Cesium.ShadowMode.DISABLED\n   */\n  shadows?: number | Cesium.ShadowMode | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying at what distance from the camera that this ellipsoid will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * Triggers before the VcGraphicsEllipsoid is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsEllipsoid is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsEllipsoid 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\nexport type VcGraphicsEllipsoidRef = VcComponentPublicInstance<VcGraphicsEllipsoidProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 09:23:59\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 {\n  VcCallbackPropertyFunction,\n  VcCartesian2,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcNearFarScalar,\n  VcPosition,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A boolean Property specifying the visibility of the label.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the text. Explicit newlines '\\n' are supported.\n   */\n  text?: string | Cesium.CallbackProperty | VcCallbackPropertyFunction<string>\n  /**\n   * A Property specifying the CSS font.\n   * Default value: 30px sans-serif\n   */\n  font?: string | Cesium.CallbackProperty | VcCallbackPropertyFunction<string>\n  /**\n   * A Property specifying the LabelStyle.\n   * Default value: Cesium.LabelStyle.FILL\n   */\n  labelStyle?: number | Cesium.LabelStyle | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the scale to apply to the text.\n   * Default value: 1.0\n   */\n  scale?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A boolean Property specifying the visibility of the background behind the label.\n   * Default value: false\n   */\n  showBackground?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the background Color.\n   * Default value: { x: 0.165, y: 0.165, z: 0.165, w: 0.8 }\n   */\n  backgroundColor?: VcColor\n  /**\n   * A VcCartesian2 Property specifying the horizontal and vertical background padding in pixels.\n   * Default value: { x: 7, y: 5 }\n   */\n  backgroundPadding?: VcCartesian2\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: HorizontalOrigin.CENTER\n   */\n  horizontalOrigin?: number | Cesium.HorizontalOrigin | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the VerticalOrigin.\n   * Default value: VerticalOrigin.CENTER\n   */\n  verticalOrigin?: number | Cesium.VerticalOrigin | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the height is relative to.\n   * Default value: HeightReference.NONE\n   */\n  heightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the fill Color.\n   * Default value: white\n   */\n  fillColor?: VcColor\n  /**\n   * A Property specifying the Color of the outline.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * A numeric Property specifying the width of the outline.\n   * Default value: 1.0\n   */\n  outlineWidth?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\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 VcNearFarScalar Property used to set scale based on distance from the camera.\n   */\n  scaleByDistance?: VcNearFarScalar\n  /**\n   * A Property specifying at what distance from the camera that this label 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 VcGraphicsLabel is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsLabel is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsLabel 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\nexport type VcGraphicsLabelRef = VcComponentPublicInstance<VcGraphicsLabelProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 11:11:16\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 {\n  VcCallbackPropertyFunction,\n  VcCartesian2,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A boolean Property specifying the visibility of the model.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A string or Resource Property specifying the URI of the glTF asset.\n   */\n  uri?: string | Cesium.Resource | Cesium.CallbackProperty | VcCallbackPropertyFunction<string>\n  /**\n   * A numeric Property specifying a uniform linear scale.\n   * Default value: 1.0\n   */\n  scale?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the approximate minimum pixel size of the model regardless of zoom.\n   * Default value: 0.0\n   */\n  minimumPixelSize?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * The maximum scale size of a model. An upper limit for minimumPixelSize.\n   */\n  maximumScale?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * Determine if textures may continue to stream in after the model is loaded.\n   * Default value: true\n   */\n  incrementallyLoadTextures?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A boolean Property specifying if glTF animations specified in the model should be started.\n   * Default value: true\n   */\n  runAnimations?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A boolean Property specifying if glTF animations should hold the last pose for time durations with no keyframes.\n   * Default value: true\n   */\n  clampAnimations?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * An enum Property specifying whether the model casts or receives shadows from light sources.\n   */\n  shadows?: number | Cesium.ShadowMode | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the height is relative to.\n   * Default value: HeightReference.NONE\n   */\n  heightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the VcColor of the silhouette.\n   */\n  silhouetteColor?: VcColor\n  /**\n   * A numeric Property specifying the size of the silhouette in pixels.\n   * Default value: 0.0\n   */\n  silhouetteSize?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the Color that blends with the model's rendered color.\n   * Default value: white\n   */\n  color?: VcColor\n  /**\n   * An enum Property specifying how the color blends with the model.\n   * Default value: Cesium.ColorBlendMode.HIGHLIGHT\n   */\n  colorBlendMode?: number | Cesium.ColorBlendMode | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the color strength when the colorBlendMode is MIX. A value of 0.0 results in the model's rendered color while a value of 1.0 results in a solid color, with any value in-between resulting in a mix of the two.\n   * Default value: 0.5\n   */\n  colorBlendAmount?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A property specifying the contribution from diffuse and specular image-based lighting.\n   * Default value: [1.0, 1.0]\n   */\n  imageBasedLightingFactor?: VcCartesian2\n  /**\n   * A property specifying the light color when shading the model. When undefined the scene's light color is used instead.\n   */\n  lightColor?: VcColor\n  /**\n   * A Property specifying at what distance from the camera that this model will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * An object, where keys are names of nodes, and values are TranslationRotationScale Properties describing the transformation to apply to that node. The transformation is applied after the node's existing transformation as specified in the glTF, and does not replace the node's existing transformation.\n   */\n  nodeTransformations?: Cesium.TranslationRotationScale\n  /**\n   * An object, where keys are composed of an articulation name, a single space, and a stage name, and the values are numeric properties.\n   */\n  articulations?: any\n  /**\n   * A property specifying the ClippingPlaneCollection used to selectively disable rendering the model.\n   */\n  clippingPlanes?: Cesium.ClippingPlaneCollection | VcCallbackPropertyFunction<Cesium.ClippingPlaneCollection>\n  /**\n   * Triggers before the VcGraphicsModel is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsModel is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsModel 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\nexport type VcGraphicsModelRef = VcComponentPublicInstance<VcGraphicsModelProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 11:17:48\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 {\n  VcCallbackPropertyFunction,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcMaterial,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-cesium-composables'\nimport { show, width, material, distanceDisplayCondition } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A boolean Property specifying the visibility of the path.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the number of seconds in front the object to show.\n   */\n  leadTime?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the number of seconds behind of the object to show.\n   */\n  trailTime?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the width in pixels.\n   * Default value: 1.0\n   */\n  width?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * Gets or sets the Property specifying whether the box is outlined.\n   * Default value: 60\n   */\n  resolution?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the material used to draw the path.\n   * Default value: white\n   */\n  material?: VcMaterial\n  /**\n   * A Property specifying at what distance from the camera that this path will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * Triggers before the VcGraphicsPath is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsPath is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsPath 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\nexport type VcGraphicsPathRef = VcComponentPublicInstance<VcGraphicsPathProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 11:35:50\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\graphics\\plane\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance, PropType } from 'vue'\nimport type {\n  VcCallbackPropertyFunction,\n  VcCartesian2,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcMaterial,\n  VcPlane,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { makeCartesian2 } from 'casc-cesium-utils/cesium-helpers'\nimport { useGraphics } from 'casc-cesium-composables'\nimport { show, fill, material, outline, outlineColor, outlineWidth, shadows, distanceDisplayCondition, plane } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nexport const planeGraphicsProps = {\n  ...show,\n  ...plane,\n  // 和 BoxGraphics.dimensions 区分\n  dimensions: {\n    type: [Object, Array, Function] as PropType<VcCartesian2>,\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 = {\n  /**\n   * A boolean Property specifying the visibility of the plane.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A VcPlane Property specifying the normal and distance for the plane.\n   */\n  plane?: VcPlane\n  /**\n   * A VcCartesian2 Property specifying the width and height of the plane.\n   */\n  dimensions?: VcCartesian2\n  /**\n   * A boolean Property specifying whether the plane is filled with the provided material.\n   * Default Value: true\n   */\n  fill?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the material used to fill the plane.\n   * Default value: white\n   */\n  material?: VcMaterial\n  /**\n   * A boolean Property specifying whether the plane is outlined.\n   * Default value: false\n   */\n  outline?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the Color of the outline.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * A 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   * An enum Property specifying whether the plane casts or receives shadows from light sources.\n   * Default value: ShadowMode.DISABLED\n   */\n  shadows?: number | Cesium.ShadowMode | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying at what distance from the camera that this plane will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * Triggers before the VcGraphicsPlane is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsPlane is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsPlane 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\nexport type VcGraphicsPlaneRef = VcComponentPublicInstance<VcGraphicsPlaneProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 11:38:31\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 {\n  VcCallbackPropertyFunction,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcNearFarScalar,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A boolean Property specifying the visibility of the point.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A numeric Property specifying the size in pixels.\n   * Default value: 1\n   */\n  pixelSize?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the height is relative to.\n   * Default value: Cesium.HeightReference.NONE\n   */\n  heightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the VcColor of the point.\n   * Default value: white\n   */\n  color?: VcColor\n  /**\n   * A Property specifying the VcColor of the outline.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * A numeric Property specifying the the outline width in pixels.\n   * Default value: 1.0\n   */\n  outlineWidth?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A VcNearFarScalar Property used to scale the point based on distance.\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 Property specifying at what distance from the camera that this point 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 VcGraphicsPoint is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsPoint is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsPoint 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\nexport type VcGraphicsPointRef = VcComponentPublicInstance<VcGraphicsPointProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 13:06:14\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 {\n  VcCallbackPropertyFunction,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcMaterial,\n  VcPolygonHierarchy,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A boolean Property specifying the visibility of the polygon.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the VcPolygonHierarchy.\n   */\n  hierarchy?: VcPolygonHierarchy\n  /**\n   * A numeric Property specifying the altitude of the polygon relative to the ellipsoid surface.\n   */\n  height?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the height is relative to.\n   */\n  heightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the altitude of the polygon's extruded face relative to the ellipsoid surface.\n   */\n  extrudedHeight?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the extrudedHeight is relative to.\n   */\n  extrudedHeightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric property specifying the rotation of the polygon texture counter-clockwise from north.\n   * Default value: 0.0\n   */\n  stRotation?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the angular distance between each latitude and longitude point.\n   */\n  granularity?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A boolean Property specifying whether the polygon is filled with the provided material.\n   */\n  fill?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the material used to fill the polygon.\n   * Default value: white\n   */\n  material?: VcMaterial\n  /**\n   * A boolean Property specifying whether the polygon is outlined.\n   * Default value: false\n   */\n  outline?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the Color of the outline.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * A 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   * A boolean specifying whether or not the height of each position is used.\n   * Default value: false\n   */\n  perPositionHeight?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * When false, leaves off the top of an extruded polygon open.\n   * Default value: true\n   */\n  closeTop?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * When false, leaves off the bottom of an extruded polygon open.\n   * Default value: true\n   */\n  closeBottom?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * The type of line the polygon edges must follow.\n   */\n  arcType?: number | Cesium.ArcType | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * An enum Property specifying whether the polygon casts or receives shadows from light sources.\n   * Default value: Cesium.ShadowMode.DISABLED\n   */\n  shadows?: number | Cesium.ShadowMode | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying at what distance from the camera that this polygon will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * An enum Property specifying whether this polygon will classify terrain, 3D Tiles, or both when on the ground.\n   * Default value: Cesium.ClassificationType.BOTH\n   */\n  classificationType?: number | Cesium.ClassificationType | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A property specifying the zIndex used for ordering ground geometry. Only has an effect if the polygon is constant and neither height or extrudedHeight are specified.\n   */\n  zIndex?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * Triggers before the VcGraphicsPolygon is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsPolygon is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsPolygon 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\nexport type VcGraphicsPolygonRef = VcComponentPublicInstance<VcGraphicsPolygonProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 13:32:13\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 {\n  VcCallbackPropertyFunction,\n  VcCartesian3Array,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcMaterial,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A boolean Property specifying the visibility of the polyline.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the array of VcCartesian3Array positions that define the line strip.\n   */\n  positions?: VcCartesian3Array\n  /**\n   * \tA numeric Property specifying the width in pixels.\n   */\n  width?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the angular distance between each latitude and longitude if arcType is not ArcType.NONE.\n   */\n  granularity?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the material used to draw the polyline.\n   * Default value: white\n   */\n  material?: VcMaterial\n  /**\n   * A property specifying the material used to draw the polyline when it is below the terrain.\n   */\n  depthFailMaterial?: VcMaterial\n  /**\n   * The type of line the polyline segments must follow.\n   */\n  arcType?: number | Cesium.ArcType | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A boolean Property specifying whether the Polyline should be clamped to the ground.\n   * Default value: false\n   */\n  clampToGround?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * An enum Property specifying whether the polyline casts or receives shadows from light sources.\n   * Default value: Cesium.ShadowMode.DISABLED\n   */\n  shadows?: number | Cesium.ShadowMode | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying at what distance from the camera that this polyline will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * An enum Property specifying whether this polyline will classify terrain, 3D Tiles, or both when on the ground.\n   * Default value: Cesium.ClassificationType.BOTH\n   */\n  classificationType?: number | Cesium.ClassificationType | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the zIndex used for ordering ground geometry. Only has an effect if `clampToGround` is true and polylines on terrain is supported.\n   */\n  zIndex?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * Triggers before the VcGraphicsPolyline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsPolyline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsPolyline 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\nexport type VcGraphicsPolylineRef = VcComponentPublicInstance<VcGraphicsPolylineProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 13:37:54\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 {\n  VcCallbackPropertyFunction,\n  VcCartesian2Array,\n  VcCartesian3Array,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcMaterial,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A boolean Property specifying the visibility of the volume.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the array of VcCartesian3Array positions which define the line strip.\n   */\n  positions?: VcCartesian3Array\n  /**\n   * A Property specifying the array of Cartesian2 positions which define the shape to be extruded.\n   */\n  shape?: VcCartesian2Array\n  /**\n   * A CornerType Property specifying the style of the corners.\n   * Default value: Cesium.CornerType.ROUNDED\n   */\n  cornerType?: number | Cesium.CornerType | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the angular distance between each latitude and longitude point.\n   */\n  granularity?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A boolean Property specifying whether the volume is filled with the provided material.\n   * Default value: true\n   */\n  fill?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the material used to fill the volume.\n   * Default value: white\n   */\n  material?: VcMaterial\n  /**\n   * A boolean Property specifying whether the volume is outlined.\n   * Default value: false\n   */\n  outline?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the Color of the outline.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * A numeric Property specifying the the outline width in pixels.\n   * Default value: 1.0\n   */\n  outlineWidth?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * An enum Property specifying whether the volume casts or receives shadows from light sources.\n   * Default value: Cesium.ShadowMode.DISABLED\n   */\n  shadows?: number | Cesium.ShadowMode | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying at what distance from the camera that this volume will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * Triggers before the VcGraphicsPolylineVolume is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsPolylineVolume is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsPolylineVolume 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\nexport type VcGraphicsPolylineVolumeRef = VcComponentPublicInstance<VcGraphicsPolylineVolumeProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 13:50:48\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 {\n  VcCallbackPropertyFunction,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcMaterial,\n  VcReadyObject,\n  VcRectangle\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A boolean Property specifying the visibility of the rectangle.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * The Property specifying the VcRectangle.\n   */\n  coordinates?: VcRectangle\n  /**\n   * A numeric Property specifying the altitude of the rectangle relative to the ellipsoid surface.\n   */\n  height?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A CornerType Property specifying the style of the corners.\n   * Default value: Cesium.HeightReference.NONE\n   */\n  heightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the altitude of the rectangle's extruded face relative to the ellipsoid surface.\n   */\n  extrudedHeight?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying what the extrudedHeight is relative to.\n   * Default value: Cesium.HeightReference.NONE\n   */\n  extrudedHeightReference?: number | Cesium.HeightReference | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric property specifying the rotation of the rectangle clockwise from north.\n   * Default value: 0.0\n   */\n  rotation?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric property specifying the rotation of the rectangle texture counter-clockwise from north.\n   * Default value: 0.0\n   */\n  stRotation?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A numeric Property specifying the angular distance between points on the rectangle.\n   */\n  granularity?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A boolean Property specifying whether the rectangle is filled with the provided material.\n   * Default value: true\n   */\n  fill?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the material used to fill the rectangle.\n   * Default value: white\n   */\n  material?: VcMaterial\n  /**\n   * A boolean Property specifying whether the rectangle is outlined.\n   * Default value: false\n   */\n  outline?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the VcColor of the outline.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * A numeric Property specifying the the outline width in pixels.\n   * Default value: 1.0\n   */\n  outlineWidth?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * An enum Property specifying whether the rectangle casts or receives shadows from light sources.\n   * Default value: Cesium.ShadowMode.DISABLED\n   */\n  shadows?: number | Cesium.ShadowMode | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying at what distance from the camera that this rectangle will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * An enum Property specifying whether this rectangle will classify terrain, 3D Tiles, or both when on the ground.\n   * Default value: Cesium.ClassificationType.BOTH\n   */\n  classificationType?: number | Cesium.ClassificationType | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying the zIndex used for ordering ground geometry. Only has an effect if the rectangle is constant and neither height or extrudedHeight are specified.\n   */\n  zIndex?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * Triggers before the VcGraphicsRectangle is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsRectangle is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsRectangle 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\nexport type VcGraphicsRectangleRef = VcComponentPublicInstance<VcGraphicsRectangleProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 13:53:50\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 { VcCallbackPropertyFunction, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-cesium-composables'\nimport { show, uri, maximumScreenSpaceError } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A boolean Property specifying the visibility of the tileset.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A string or Resource Property specifying the URI of the tileset.\n   */\n  uri?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * Triggers before the VcGraphicsTileset is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsTileset is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsTileset 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\nexport type VcGraphicsTilesetRef = VcComponentPublicInstance<VcGraphicsTilesetProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-04-06 14:01:30\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 {\n  VcCallbackPropertyFunction,\n  VcCartesian3Array,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcDistanceDisplayCondition,\n  VcMaterial,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useGraphics } from 'casc-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 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * A boolean Property specifying the visibility of the wall.\n   * Default value: true\n   */\n  show?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * The Property specifying the VcRectangle.\n   */\n  positions?: VcCartesian3Array\n  /**\n   * A Property specifying an array of heights to be used for the bottom of the wall instead of the globe surface.\n   */\n  minimumHeights?: number[] | Cesium.CallbackProperty | VcCallbackPropertyFunction<number[]>\n  /**\n   * A Property specifying an array of heights to be used for the top of the wall instead of the height of each position.\n   */\n  maximumHeights?: number[] | Cesium.CallbackProperty | VcCallbackPropertyFunction<number[]>\n  /**\n   * A numeric Property specifying the angular distance between each latitude and longitude point.\n   */\n  granularity?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A boolean Property specifying whether the wall is filled with the provided material.\n   * Default value: true\n   */\n  fill?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the material used to fill the wall.\n   * Default value: white\n   */\n  material?: VcMaterial\n  /**\n   * A boolean Property specifying whether the wall is outlined.\n   * Default value: false\n   */\n  outline?: boolean | Cesium.CallbackProperty | VcCallbackPropertyFunction<boolean>\n  /**\n   * A Property specifying the VcColor of the outline.\n   * Default value: black\n   */\n  outlineColor?: VcColor\n  /**\n   * A numeric Property specifying the the outline width in pixels.\n   * Default value: 1.0\n   */\n  outlineWidth?: number | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * An enum Property specifying whether the wall casts or receives shadows from light sources.\n   * Default value: Cesium.ShadowMode.DISABLED\n   */\n  shadows?: number | Cesium.ShadowMode | Cesium.CallbackProperty | VcCallbackPropertyFunction<number>\n  /**\n   * A Property specifying at what distance from the camera that this rectangle will be displayed.\n   */\n  distanceDisplayCondition?: VcDistanceDisplayCondition\n  /**\n   * Triggers before the VcGraphicsWall is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcGraphicsWall is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcGraphicsWall 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\nexport type VcGraphicsWallRef = VcComponentPublicInstance<VcGraphicsWallProps>\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 'casc-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","import { clearColor, scissorRectangle } from 'casc-cesium-utils/cesium-props'\nimport { PropType } from 'vue'\n\nconst defaultProps = {\n  fragmentShader: String,\n  uniforms: Object,\n  textureScale: {\n    type: Number,\n    default: 1.0\n  },\n  forcePowerOfTwo: {\n    type: Boolean,\n    default: false\n  },\n  sampleMode: Number as PropType<Cesium.PostProcessStageSampleMode | number>,\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: 2022-01-27 16:43:45\n * @LastEditTime: 2022-03-24 22:29:53\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\post-processes\\post-process-stage\\index.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance } from 'vue'\nimport type { VcBoundingRectangle, VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useCommon } from 'casc-cesium-composables/index'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport defaultProps from './defaultProps'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * The fragment shader to use. The default sampler2D uniforms are colorTexture and depthTexture. The color texture is the output of rendering the scene or the previous stage. The depth texture is the output from rendering the scene. The shader should contain one or both uniforms. There is also a vec2 varying named v_textureCoordinates that can be used to sample the textures.\n   */\n  fragmentShader: string\n  /**\n   * An object whose properties will be used to set the shaders uniforms. The properties can be constant values or a function. A constant value can also be a URI, data URI, or HTML element to use as a texture.\n   */\n  uniforms?: any\n  /**\n   * A number in the range (0.0, 1.0] used to scale the texture dimensions. A scale of 1.0 will render this post-process stage to a texture the size of the viewport.\n   * Default value: 1.0\n   */\n  textureScale?: number\n  /**\n   * Whether or not to force the texture dimensions to be both equal powers of two. The power of two will be the next power of two of the minimum of the dimensions.\n   * Default value: false\n   */\n  forcePowerOfTwo?: boolean\n  /**\n   * How to sample the input color texture.\n   */\n  sampleMode?: number | Cesium.PostProcessStageSampleMode\n  /**\n   * The color pixel format of the output texture.\n   */\n  pixelFormat?: number | Cesium.PixelFormat\n  /**\n   * The pixel data type of the output texture.\n   */\n  pixelDatatype?: number | Cesium.PixelDatatype\n  /**\n   * The color to clear the output texture to.\n   */\n  clearColor?: VcColor\n  /**\n   * The rectangle to use for the scissor test.\n   */\n  scissorRectangle?: VcBoundingRectangle\n  /**\n   * The unique name of this post-process stage for reference by other stages in a composite. If a name is not supplied, a GUID will be generated.\n   */\n  name?: string\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 load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the component is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcPostProcessStageRef = VcComponentPublicInstance<VcPostProcessStageProps>\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","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-04-29 17:32:46\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\post-processes\\post-process-stage-scan\\use-radar-scan.ts\n */\nimport { VcViewerProvider } from 'casc-cesium-utils/types'\nimport shaderSource from 'casc-cesium-shared/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","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-27 15:54:13\n * @LastEditTime: 2022-04-29 17:32:41\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\post-processes\\post-process-stage-scan\\use-circle-scan.ts\n */\nimport { VcViewerProvider } from 'casc-cesium-utils/types'\nimport shaderSource from 'casc-cesium-shared/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-03-24 22:38:56\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 'casc-cesium-composables'\nimport type { VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-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 'casc-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 = {\n  /**\n   * Specify the scan type, optional values are'radar','circle'.\n   */\n  type?: 'radar' | 'circle'\n  /**\n   * Specify optional parameters.\n   */\n  options?: VcPostProcessStageScanOpts\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 load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the component is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcPostProcessStageScanRef = VcComponentPublicInstance<VcPostProcessStageScanProps>\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-30 13:39:37\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\post-processes\\post-process-stage-collection\\index.ts\n */\nimport type { WatchStopHandle, PropType, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { useCommon } from 'casc-cesium-composables/index'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { commonEmits } from 'casc-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 = {\n  /**\n   * Specify the post-processing collection. The props are consistent with [`vc-post-process-stage`](https://zouyaoji.top/vue-cesium/#/en-US/component/post-processes/vc-post-process-stage#props).\n   */\n  postProcesses?: Array<VcPostProcessStageProps>\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 load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the component is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcPostProcessStageCollectionRef = VcComponentPublicInstance<VcPostProcessStageCollectionProps>\n\nexport type VcPostProcessStageCollectionSlots = {\n  /**\n   * Slot for vc-post-process-stage-scan, vc-post-process-stage\n   */\n  default: () => VNode[]\n}\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 'casc-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-27 15:54:11\n * @LastEditTime: 2022-09-06 01:15:49\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\config-provider\\src\\index.ts\n */\nimport { defineComponent, PropType, renderSlot, VNode } from 'vue'\nimport { provideGlobalConfig } from 'casc-cesium-composables/use-global-config'\nimport { Language } from 'casc-cesium-locale'\nimport Chinese from 'casc-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://unpkg.com/cesium@latest/Build/Cesium/Cesium.js'\n    },\n    accessToken: {\n      type: String,\n      default:\n        'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2OGE2MjZlOC1mMzhiLTRkZjQtOWEwZi1jZTE0MWY0YzhlMTAiLCJpZCI6MjU5LCJpYXQiOjE2NDM3MjU1NzZ9.ptZ5tVXvMmuWRC0WhjtYTg-17nQh14fgxBsx0HJiVXQ'\n    },\n    reloadMode: {\n      type: String as PropType<'once' | 'all'>,\n      default: 'all'\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://unpkg.com/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   * If multiple component properties are changed at once. 'all' means reload them in sequence; 'once' means reload only once after the last property has been changed.\n   */\n  reloadMode?: 'once' | 'all'\n}\n\nexport interface VcConfigProviderSlots {\n  /**\n   * This is where vc-viewer may go into\n   */\n  default: () => VNode[]\n}\n","import { SFCWithInstall } from 'casc-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-08-22 20:31:30\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 'casc-cesium-utils/cesium-props'\nimport { VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcPolygonHierarchy, VcReadyObject } from 'casc-cesium-utils/types'\nimport { makeColor } from 'casc-cesium-utils/cesium-helpers'\nimport { VcPrimitiveClassification } from 'casc-cesium-components/primitives'\nimport { VcGeometryInstance } from 'casc-cesium-components/geometry-instance'\nimport { VcGeometryPolygon } from 'casc-cesium-components/geometries'\nimport { getInstanceListener, getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport { useCommon } from 'casc-cesium-composables'\nimport { commonEmits } from 'casc-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: VcAnalysisFloodProps, 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).creatingPromise?.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 = (height?: number) => {\n      extrudedHeight.value = Cesium.defined(height) ? height : 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      start,\n      pause,\n      stop,\n      getCurrentHeight: () => extrudedHeight.value\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 interface 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 VcAnalysisFlood is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcAnalysisFlood is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcAnalysisFlood 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\nexport interface VcAnalysisFloodRef extends VcComponentPublicInstance<VcAnalysisFloodProps> {\n  /**\n   * Start flood analysis\n   */\n  start: (height?: number) => void\n  /**\n   * Pause flood analysis\n   */\n  pause: () => void\n  /**\n   * Stop flood analysis\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * Get the extrudedHeight value.\n   */\n  getCurrentHeight: () => number\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-18 10:40:15\n * @LastEditTime: 2022-07-05 11:28:27\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\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 'casc-cesium-composables/use-drawing/defaultOpts'\nimport { useDrawingFabProps } from 'casc-cesium-composables/use-drawing/props'\nimport {\n  VcDrawingActiveEvt,\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingOpts,\n  VcPointDrawing,\n  VcPolylineDrawing,\n  VcSegmentDrawing,\n  VcViewshedAnalysisOpts\n} from 'casc-cesium-utils/drawing-types'\nimport type { VcActionTooltipProps, VcComponentInternalInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { getDefaultOptionByProps } from 'casc-cesium-utils/util'\nimport type { 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  viewshedOpts: {\n    fovH: 90,\n    fovV: 60,\n    offsetHeight: 1.8,\n    visibleColor: '#00ff00',\n    invisibleColor: '#ff0000',\n    showGridLine: true,\n    faceColor: 'rgba(255,255,255,0.1)',\n    lineColor: 'rgba(255,255,255,0.4)'\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}\nconst defaultOptions = getDefaultOptionByProps<VcAnalysesProps>(analysesProps)\n\nexport {\n  analysesProps,\n  defaultOptions,\n  sightlineAnalysisActionDefault,\n  sightlineAnalysisDefault,\n  viewshedAnalysisActionDefault,\n  viewshedAnalysisDefault,\n  mainFabDefault\n}\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 VcAnalyses is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcAnalyses is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcAnalyses 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<VcPolylineDrawing | VcSegmentDrawing | VcPointDrawing>, 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: 2022-01-04 21:42:14\n * @LastEditTime: 2022-08-22 20:31:06\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\analyses\\src\\sightline\\index.ts\n */\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport { defineComponent } from 'vue'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport useDrawingPolyline from 'casc-cesium-composables/use-drawing/use-drawing-polyline'\nimport type { VcPrimitiveGroundPolylineProps, VcPrimitiveProps } from '../../../primitives'\nimport type { VcGeometryPolylineProps } from '../../../geometries'\nimport useDrawingSegment from 'casc-cesium-composables/use-drawing/use-drawing-segment'\nimport { VcPointProps, VcPolygonProps } from '../../../primitive-collections'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport {\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcPolylineDrawing,\n  VcSegmentDrawing\n} from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\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  },\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\nexport type VcAnalysisSightlineProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing polygons.\n   */\n  polygonOpts?: VcPolygonProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps & VcPrimitiveGroundPolylineProps\n  /**\n   * Specify the type of sightline.\n   */\n  sightlineType?: 'segment' | 'polyline'\n  /**\n   * Triggers before the VcAnalysisSightline is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcAnalysisSightline is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcAnalysisSightline is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcPolylineDrawing | VcSegmentDrawing>, 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\nexport interface VcAnalysisSightlineRef extends VcComponentPublicInstance<VcAnalysisSightlineProps> {\n  /**\n   * Get the array of rendering models.\n   */\n  renderDatas?: Ref<Array<VcSegmentDrawing | VcPolylineDrawing>>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<Array<VcSegmentDrawing | VcPolylineDrawing>>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-06 16:26:03\n * @LastEditTime: 2022-06-24 16:54:28\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 { ComputedRef, defineComponent, PropType, Ref } from 'vue'\nimport { useDrawingActionProps } from 'casc-cesium-composables/use-drawing/props'\nimport useDrawingSegment from 'casc-cesium-composables/use-drawing/use-drawing-segment'\nimport { VcGeometryPolylineProps } from '../../../geometries'\nimport { VcPrimitiveProps } from '../../../primitives'\nimport { drawingEmit } from 'casc-cesium-utils/emits'\nimport {\n  VcDrawingDrawEvt,\n  VcDrawingEditorEvt,\n  VcDrawingMouseEvt,\n  VcDrawingPreRenderDatas,\n  VcDrawTipOpts,\n  VcEditorOpts,\n  VcPolylineDrawing,\n  VcSegmentDrawing,\n  VcViewshedOpts\n} from 'casc-cesium-utils/drawing-types'\nimport { VcPointProps } from '../../../primitive-collections'\nimport { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nexport default defineComponent({\n  name: 'VcAnalysisViewshed',\n  props: {\n    ...useDrawingActionProps,\n    polylineOpts: Object as PropType<VcGeometryPolylineProps>,\n    primitiveOpts: Object as PropType<VcPrimitiveProps>,\n    viewshedOpts: Object as PropType<VcViewshedOpts>\n  },\n  emits: drawingEmit,\n  setup(props, ctx) {\n    // state\n    return useDrawingSegment(props, ctx, 'VcAnalysisViewshed')\n  }\n})\n\nexport type VcAnalysisViewshedProps = {\n  /**\n   * Specify whether to respond to mouse pick events.\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify Whether the drawing object is visible.\n   */\n  show?: boolean\n  /**\n   * Specify whether the drawing result can be edited.\n   */\n  editable?: boolean\n  /**\n   * Specify drawing hints.\n   */\n  drawtip?: VcDrawTipOpts\n  /**\n   * Specify parameters for drawing points.\n   */\n  pointOpts?: VcPointProps\n  /**\n   * Specify editor options.\n   */\n  editorOpts?: VcEditorOpts\n  /**\n   * Specify editor mode.\n   */\n  mode?: number\n  /**\n   * Specify prerender datas.\n   */\n  preRenderDatas?: VcDrawingPreRenderDatas\n  /**\n   * Specify parameters for drawing polylines.\n   */\n  polylineOpts?: VcGeometryPolylineProps\n  /**\n   * Specify parameters for drawing primitives.\n   */\n  primitiveOpts?: VcPrimitiveProps\n  /**\n   * Specify the options options of viewshed.\n   */\n  viewshedOpts?: VcViewshedOpts\n  /**\n   * Triggers before the VcAnalysisViewshed is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcAnalysisViewshed is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcAnalysisViewshed is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * \tTriggers when drawing.\n   */\n  onDrawEvt?: (evt: VcDrawingDrawEvt<VcPolylineDrawing | VcSegmentDrawing>, 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\nexport interface VcAnalysisViewshedRef extends VcComponentPublicInstance<VcAnalysisViewshedProps> {\n  /**\n   * Get or set the renderDatas.\n   */\n  renderDatas?: Ref<Array<VcSegmentDrawing | VcPolylineDrawing>>\n  /**\n   * Get the computedRenderDatas.\n   */\n  computedRenderDatas?: ComputedRef<Array<VcSegmentDrawing | VcPolylineDrawing>>\n  /**\n   * start a new draw.\n   */\n  startNew: () => void\n  /**\n   * stop drawing.\n   */\n  stop: (removeLatest?: boolean) => void\n  /**\n   * clear and stop drawing.\n   */\n  clear: () => void\n}\n","/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-06 10:23:09\n * @LastEditTime: 2022-05-16 00:29:00\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\analyses\\src\\index.ts\n */\n\nimport type { VcActionTooltipProps, VcComponentInternalInstance, VcComponentPublicInstance } from 'casc-cesium-utils/types'\nimport { defineComponent, getCurrentInstance, reactive, ref, computed, VNode } from 'vue'\nimport { useLocale } from 'casc-cesium-composables'\nimport { defaultOptions, analysesProps, VcAnalysesProps } from './defaultProps'\nimport type { AnalysisActionCmpRef, VcDrawingActionInstance, VcDrawingOpts, VcViewshedAnalysisOpts } from 'casc-cesium-utils/drawing-types'\nimport { camelize } from 'casc-cesium-utils/util'\nimport type { VcFabActionRef, VcFabProps, VcFabRef } from 'casc-cesium-components/ui'\nimport useDrawingFab from 'casc-cesium-composables/use-drawing/use-drawing-fab'\nimport VcAnalysisSightline from './sightline'\nimport VcAnalysisViewshed from './viewshed'\nimport { drawingEmit } from 'casc-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: VcAnalysesProps, 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<VcActionTooltipProps>(Object.assign({}, defaultOptions.clearActionOpts, props.clearActionOpts))\n    const mainFabOpts = reactive<VcActionTooltipProps & VcFabProps>(Object.assign({}, defaultOptions.mainFabOpts, props.mainFabOpts))\n\n    const sightlineActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.sightlineActionOpts, props.sightlineActionOpts))\n    const sightlineAnalysisOpts = reactive<VcDrawingOpts>(Object.assign({}, defaultOptions.sightlineAnalysisOpts, props.sightlineAnalysisOpts))\n\n    const viewshedActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.viewshedActionOpts, props.viewshedActionOpts))\n    const viewshedAnalysisOpts = reactive<VcViewshedAnalysisOpts>(Object.assign({}, defaultOptions.viewshedAnalysisOpts, props.viewshedAnalysisOpts))\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 = computed<Array<VcDrawingActionInstance>>(() => {\n      return 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        actionRef: ref<VcFabActionRef>(null),\n        actionOpts: options[`${camelize(analysisName)}ActionOpts`] as VcActionTooltipProps,\n        cmp: getDrawingCmp(analysisName),\n        cmpRef: ref<AnalysisActionCmpRef>(null!),\n        cmpOpts: options[`${camelize(analysisName)}AnalysisOpts`] as VcDrawingOpts,\n        tip: options[`${camelize(analysisName)}ActionOpts`].tooltip.tip || t(`vc.analysis.${camelize(analysisName)}.tip`),\n        isActive: false\n      }))\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\nexport type { VcAnalysesProps } from './defaultProps'\nexport type VcAnalysesEmits = typeof emits\nexport interface VcAnalysesRef extends VcComponentPublicInstance<VcAnalysesProps> {\n  /**\n   * Get or set the editingActionName.\n   */\n  editingActionName?: string\n  /**\n   * Clear all drawing results.\n   */\n  clearAll: () => void\n  /**\n   * End listening for the ScreenSpaceEventHandler events.\n   */\n  deactivate: () => void\n  /**\n   * Start listening for ScreenSpaceEventHandler events.\n   */\n  activate: () => void\n  /**\n   * Toggle drawing instance.\n   * @param drawingOption drawing instance or drawing instance name.\n   */\n  toggleAction: (drawingOption: VcDrawingActionInstance | string) => void\n  /**\n   * Get the float action button template reference.\n   */\n  getFabRef: () => VcFabRef\n  /**\n   * Get the drawingActionInstance by action name.\n   */\n  getDrawingActionInstance: (actionName: string) => VcDrawingActionInstance\n  /**\n   * Get the drawing action instances.\n   */\n  getDrawingActionInstances: () => Array<VcDrawingActionInstance>\n  /**\n   * Get the selected drawing action instance.\n   */\n  getSelectedDrawingActionInstance: () => VcDrawingActionInstance\n}\n\nexport type VcAnalysesSlots = {\n  /**\n   * body slot content of the component\n   */\n  body: (drawingActionInstances: Array<VcDrawingActionInstance>) => 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 'casc-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 'casc-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 'casc-cesium-components/controls'\n// tools\nimport VcMeasurements from 'casc-cesium-components/measurements'\nimport VcDrawings from 'casc-cesium-components/drawings'\n// ImagerLayer\nimport VcLayerImagery from 'casc-cesium-components/imagery-layer'\nimport {\n  VcImageryProviderAmap,\n  VcImageryProviderArcgis,\n  VcImageryProviderBaidu,\n  VcImageryProviderBing,\n  VcImageryProviderGoogle,\n  VcImageryProviderGrid,\n  VcImageryProviderIon,\n  VcImageryProviderMapbox,\n  VcImageryProviderOsm,\n  VcImageryProviderSingletile,\n  VcImageryProviderSupermap,\n  VcImageryProviderTencent,\n  VcImageryProviderTianditu,\n  VcImageryProviderTileCoordinates,\n  VcImageryProviderTms,\n  VcImageryProviderTiledcache,\n  VcImageryProviderUrltemplate,\n  VcImageryProviderWms,\n  VcImageryProviderWmts,\n  VcTerrainProviderCesium,\n  VcTerrainProviderArcgis,\n  VcTerrainProviderVrTheworld,\n  VcTerrainProviderTianditu\n} from 'casc-cesium-components/providers'\n\n// Datasource\nimport { VcDatasourceCustom, VcDatasourceCzml, VcDatasourceGeojson, VcDatasourceKml } from 'casc-cesium-components/datasources'\n\n// Entity\nimport VcEntity from 'casc-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 'casc-cesium-components/graphics'\n\n// Primitives\nimport {\n  VcPrimitiveClassification,\n  VcPrimitiveGround,\n  VcPrimitiveGroundPolyline,\n  VcPrimitiveModel,\n  VcPrimitive,\n  VcPrimitiveTileset,\n  VcPrimitiveParticle\n} from 'casc-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 'casc-cesium-components/primitive-collections'\n\n// GeometryInstance\nimport VcGeometryInstance from 'casc-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 'casc-cesium-components/geometries'\n\n// Overlay\nimport { VcOverlayHtml, VcOverlayHeatmap, VcOverlayWind, VcOverlayDynamic } from 'casc-cesium-components/overlays'\n\nimport { VcPostProcessStage, VcPostProcessStageScan, VcPostProcessStageCollection } from 'casc-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 'casc-cesium-components/ui'\n\n// config\nimport VcConfigProvider from 'casc-cesium-components/config-provider'\n\n// analyses\nimport { VcAnalysisFlood, VcAnalyses } from 'casc-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  VcImageryProviderAmap,\n  VcImageryProviderArcgis,\n  VcImageryProviderBaidu,\n  VcImageryProviderBing,\n  VcImageryProviderGoogle,\n  VcImageryProviderGrid,\n  VcImageryProviderIon,\n  VcImageryProviderMapbox,\n  VcImageryProviderOsm,\n  VcImageryProviderSingletile,\n  VcImageryProviderSupermap,\n  VcImageryProviderTencent,\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\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 'casc-cesium-components'\nexport * from 'casc-cesium-directives'\nexport * from 'casc-cesium-composables'\nexport * from 'casc-cesium-shared'\n\n// type define\nexport * from 'casc-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","freeGlobal","Symbol","root","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","objectToString","symbolTag","isArray","INFINITY","symbolProto","isObject","identity","funcTag","genTag","isFunction","coreJsData","funcProto","funcToString","defineProperty","baseSetToString","MAX_SAFE_INTEGER","nativeMax","setToString","isArrayLike","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","capitalize","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","camelCase","position","text","translate","differenceBy","isExtended","defaultProps","getDefaultMars3dConfig","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","Feature","PickedFeatures","mainFabDefault","VcEntity","VcLayerImagery","Util.createTexture","CustomPrimitive","Util.createFramebuffer","Util.createRawRenderState","Util.getFullscreenQuad","ParticlesComputing","ParticlesRendering","ParticleSystem","find","VcCumulusCloud","VcGeometryInstance","VcMeasurements","VcDrawings","buildImageResource","AMapImageryProvider","Pixel","BaiduMapMercatorProjection","coordtransform.wgs84togcj02","coordtransform.gcj02tobd09","coordtransform.bd09togcj02","coordtransform.gcj02towgs84","BaiduMapMercatorTilingScheme","BaiduMapImageryProvider","IndexedDBScheduler","SuperMapImageryProvider","TencentImageryProvider","global","require$$0","require$$1","require$$2","TiandituMapsStyle","TiandituImageryProvider","shaderSource","VcPostProcessStage","VcConfigProvider","makeInstaller"],"mappings":"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GAAG;AACtB;AACA,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;AAC/E,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;AAC/E,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG;AAC3B,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG;AAC3B,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;AACrD,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;AACrD,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;AACrD,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;AACrD,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG;AAC3B,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;AAC/E,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;AAC/E,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;AACrD,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;AACrD,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;AACxC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;AAC5B,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;AAC5B,EAAE,MAAM,EAAE,IAAI;AACd;AACA,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,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,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,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,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,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EA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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AACjC;AACA,aAAe,IAAI;;ACtCnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;AAC9B,EAAE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE;AAC/B,EAAE,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnC;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,KAAK,EAAE;AACvB,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;AACjC,EAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAChC,EAAE,OAAO,MAAM,IA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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AClHW,MAAC,aAAa,GAAG;AAC7B,EAAE,GAAG,KAAK;AACV,EAAE,IAAI,EAAE;AACR,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,EAAE;AACf,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,EAAE;AACf,GAAG;AACH,EAAE,YAAY,EAAE;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,GAAG;AAChB,GAAG;AACH,EAAE,YAAY,EAAE;AAChB,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;AACjC,IAAI,OAAO,EAAE,SAAS;AACtB,GAAG;AACH,EAAE,cAAc,EAAE;AAClB,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;AACjC,IAAI,OAAO,EAAE,SAAS;AACtB,GAAG;AACH,EAAE,YAAY,EAAE;AAChB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,OAAO,EAAE,IAAI;AACjB,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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,MAAMX,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,iCAAeA,MAAI;;ACtDnB,MAAM,eAAe,CAAC;AACtB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AAC3C,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACrC,IAAI,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;AACzD,IAAI,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAC/C,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACzC,IAAI,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;AACzD,IAAI,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;AAC7D,IAAI,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AACjD,IAAI,IAAI,CAAC,WAAW,GAA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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;AACF,oBAAeA,MAAI;;AC/BnB,MAAM,IAAI,GAAG,CAAC;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;AACF,qBAAe,IAAI;;ACXnB,MAAM,kBAAkB,CAAC;AACzB,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE;AAC1F,IAAI,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAChD,IAAI,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,C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"}