{"version":3,"file":"zyzgroup_core_vue.umd.cjs","sources":["../src/hooks/useVue.ts","../src/hooks/useVueEffect.ts","../src/components/layout/LayoutPage.vue","../src/components/form/ViewDocument.vue","../../../node_modules/.pnpm/@iconify+vue@4.3.0_vue@3.5.13_typescript@5.8.3_/node_modules/@iconify/vue/dist/iconify.mjs","../src/components/form/Icon.vue","../src/components/loading/Loading11.vue","../src/components/form/Button.vue","../src/vnode.ts","../src/components/pop/Overlay.vue","../src/components/base/Box.vue","../src/components/pop/Pop.vue","../src/components/pop/PopTel.vue","../src/components/svg/SVGClose.vue","../src/components/svg/SVGWarn.vue","../src/components/Container.vue","../src/components/svg/SVGEllipse.vue","../src/components/dialog/Dialog.vue","../src/components/dialog/DialogToast.vue","../src/components/loading/Loading8.vue","../src/components/dialog/DialogLoading.vue","../src/components/form/Text.vue","../src/components/form/Input.vue","../src/components/keyboard/PlateKeyboard.vue","../src/components/keyboard/NumberKeyboard.vue","../src/globalTeleport.ts","../src/components/xg/Footer.vue","../src/components/plate/PlateDisplay.vue","../src/components/base/CSSAnimation.vue","../src/components/base/Page.vue","../src/components/base/Routes.vue","../src/components/image/Image.vue","../src/components/base/Pan.vue","../src/components/image/ImageView.vue","../src/components/xg/Lot.vue","../src/pages/Index.vue","../../../third/stats/stats.js","../src/components/fps/FPSStats.vue","../src/components/form/InputRange.vue","../../../../assets/svgs/china_blank_province_map.svg","../src/pages/ShapeShowCase.vue","../src/components/base/Mouse.vue","../src/components/progress/ProgressBar.vue","../src/components/progress/PageVerticalScrollProgressBar.vue","../src/components/svg/SVGDown.vue","../src/components/form/Accordion.vue","../src/components/form/InputRangeBox.vue","../src/components/layout/LayoutCenter.vue","../src/components/3d/CardFlip.vue","../src/components/form/BooleanBox.vue","../src/components/form/RadioGroup.vue","../src/components/form/CheckboxGroup.vue","../src/components/3d/Cube.vue","../src/components/pop/Popover.vue","../src/components/form/ColorPicker.vue","../src/components/svg/SVGCheck.vue","../src/components/plate/PlateMobile.vue","../../../../assets/images/picture.jpg","../../../../assets/images/logo.png","../../../../assets/images/ad.jpg","../../../../assets/images/bike.png","../src/components/hand/HandWritePanel.vue","../src/components/animate/EaseGraphDisplay.vue","../src/components/animate/EaseGroupGraphDisplay.vue","../src/components/animate/InterpolationGraphDisplay.vue","../src/components/animate/InterpolationGroupGraphDisplay.vue","../src/components/base/CSSTransition.vue","../src/components/video/Video.vue","../../../../server-client/assets/videos/sintel.webm","../src/components/map/MapTianditu.vue","../src/components/loading/Loading1.vue","../src/components/loading/Loading2.vue","../src/components/loading/Loading3.vue","../src/components/loading/Loading4.vue","../src/components/loading/Loading5.vue","../src/components/loading/Loading6.vue","../src/components/loading/Loading7.vue","../src/components/loading/Loading9.vue","../src/components/loading/Loading10.vue","../src/components/chat/RingText.vue","../src/components/clock/ClockFlipper.vue","../src/components/css/BorderFocusText.vue","../src/components/css/Circle.vue","../src/components/chat/RingIndicator.vue","../src/components/svg/SVGPrompt.vue","../src/components/svg/SVGQuestion.vue","../src/components/svg/SVGFail.vue","../src/components/svg/SVGSuccess.vue","../src/components/svg/SVGWaiting.vue","../src/components/svg/SVGLock.vue","../src/components/svg/SVGAdd.vue","../src/components/svg/SVGDelete.vue","../src/components/form/Switch.vue","../src/components/form/Select.vue","../src/components/form/SelectAbsolute.vue","../src/components/base/Tap.vue","../src/components/form/SlideLeftItem.vue","../src/components/form/Status.vue","../src/pages/ComponentShowCase.vue","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/config.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/audit.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Scheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isDate.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/timer.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/auditTime.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/buffer.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/bufferCount.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/args.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/bufferToggle.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/bufferWhen.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/from.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/map.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createObject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/reduce.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/toArray.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/joinAllInternals.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/concatMap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/count.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/debounce.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/concat.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/empty.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/take.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/delay.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/of.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/distinct.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/elementAt.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/every.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/finalize.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/find.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/findIndex.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/first.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/groupBy.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/isEmpty.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/takeLast.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/last.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/max.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/min.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/race.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/repeat.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/sample.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/interval.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/sampleTime.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/scan.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/sequenceEqual.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/share.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/SequenceError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/single.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/skip.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/skipLast.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/skipUntil.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/startWith.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/switchAll.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/switchScan.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/tap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/timeInterval.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/timestamp.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/zip.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/defer.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/generate.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/iif.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/range.js","../src/components/rxmarbles/data/categories.js","../src/components/rxmarbles/data/creation-examples.js","../src/components/rxmarbles/data/combination-examples.js","../src/components/rxmarbles/data/flattern-examples.ts","../src/components/rxmarbles/data/multicasting-examples.js","../src/components/rxmarbles/data/transformation-examples.js","../src/components/rxmarbles/data/filtering-examples.js","../src/components/rxmarbles/data/conditional-examples.js","../src/components/rxmarbles/data/utility-examples.js","../src/components/rxmarbles/data/math-examples.js","../src/components/rxmarbles/data/index.ts","../src/components/rxmarbles/styles.ts","../src/components/rxmarbles/rxMarble.ts","../src/components/rxmarbles/Marble.vue","../src/components/rxmarbles/EndMarker.vue","../src/components/rxmarbles/Sandbox.vue","../src/pages/RxMarbles.vue","../src/hooks/useVueRouter.ts","../src/hooks/useVuex/useVuex.ts"],"sourcesContent":["import { State } from \"@zyzgroup/core-common\";\nimport {\n  AppContext,\n  VNode,\n  createVNode,\n  render,\n  getCurrentInstance,\n  VNodeProps,\n  Component,\n  // ComponentPublicInstance,\n  ComponentInternalInstance,\n  computed\n} from \"vue\";\n\nexport function useMapState(state: State, keys: string[]) {\n  const mapped: Record<string, ReturnType<typeof computed> | any> = {};\n  keys.forEach((key: string) => {\n    mapped[key] = computed(() => state[key]);\n  });\n  return mapped;\n}\n\nexport function getInstance(): ComponentInternalInstance | null {\n  return getCurrentInstance();\n}\n\nexport interface CommonComponentProps extends VNodeProps {\n  [index: string]: any;\n}\n\nexport function getVNode<T extends Component>(\n  component: T,\n  props?: CommonComponentProps\n): VNode {\n  const vNode = createVNode(component, props);\n  // const vm: ComponentPublicInstance<CommonComponentProps> | null | undefined =\n  //   vNode.component?.proxy;\n  // if (vm) {\n  //   for (const prop in props) {\n  //     if (Reflect.has(props, prop) && !Reflect.has(vm.$props, prop)) {\n  //       vm[prop as keyof ComponentPublicInstance] = props[prop];\n  //     }\n  //   }\n  // }\n  return vNode;\n}\n\nexport function renderComponent<T extends Component>(options: {\n  component: T;\n  props?: CommonComponentProps;\n  appContext?: AppContext;\n  selfContainer: HTMLElement;\n  parentContainer?: HTMLElement;\n}) {\n  const vNode = getVNode(options.component, options.props);\n  if (options.appContext) {\n    vNode.appContext = options.appContext;\n  }\n  render(vNode, options.selfContainer);\n  options.parentContainer?.appendChild(options.selfContainer);\n}\n\n// export interface EnhancedComponentOptions extends VNodeProps {\n//   [key: string]: any;\n// }\n// export function enhanceComponent<T extends Component>(\n//   component: T\n// ): (options: EnhancedComponentOptions) => VNode {\n//   const container = document.createElement(\"div\");\n//   return (options: EnhancedComponentOptions): VNode => {\n//     const vNode = renderComponent<T>({\n//       Component: component,\n//       props: options,\n//       selfContainer: container,\n//       appContext: getCurrentInstance()?.appContext\n//     });\n//     const vm = vNode.component\n//       ?.proxy as ComponentPublicInstance<EnhancedComponentOptions>;\n//     for (const prop in options) {\n//       if (Reflect.has(options, prop) && !Reflect.has(vm.$props, prop)) {\n//         vm[prop as keyof ComponentPublicInstance] = options[prop];\n//       }\n//     }\n//     return vNode;\n//   };\n// }\n","import { onMounted, onUnmounted } from \"vue\";\n\nexport function useVueEffect(effect: () => () => void) {\n  let remove: () => void;\n  onMounted(() => {\n    remove = effect();\n  });\n  onUnmounted(() => {\n    remove?.();\n  });\n}\n","<template>\n  <div class=\"page\">\n    <div class=\"page-header\">\n      <slot name=\"header\"></slot>\n    </div>\n\n    <div class=\"page-main\">\n      <div class=\"page-main-scroll\">\n        <slot></slot>\n      </div>\n    </div>\n\n    <div\n      class=\"page-footer\"\n      :style=\"{ paddingBottom: safeAreaBottom }\"\n    >\n      <slot name=\"footer\"></slot>\n    </div>\n\n    <div class=\"page-global\">\n      <slot name=\"global\"></slot>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.page {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  display: flex;\n  flex-direction: column;\n}\n.page-header {\n  position: relative;\n  z-index: 1;\n  flex: 0 0 auto;\n}\n.page-footer {\n  position: relative;\n  z-index: 1;\n  flex: 0 0 auto;\n}\n.page-main {\n  position: relative;\n  z-index: 2;\n  flex: 1 1 auto;\n  width: 100%;\n  overflow: hidden;\n  display: flex;\n  flex-direction: column;\n}\n.page-main-scroll {\n  position: relative;\n  z-index: 3;\n  flex: 1 1 auto;\n  width: 100%;\n  overflow-y: scroll;\n}\n/*\n.page-main-scroll > :nth-child(1) {\n  min-height: 100%;\n}\n*/\n</style>\n\n<script setup lang=\"ts\">\nimport { onMounted, onUnmounted, ref } from \"vue\";\nimport { useSafeArea$ } from \"@zyzgroup/core-web\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst safeAreaBottom = ref(\"0px\");\nlet s;\n\nonMounted(() => {\n  s = useSafeArea$().subscribe((s) => {\n    safeAreaBottom.value = s.bottom;\n  });\n});\nonUnmounted(() => {\n  s?.unsubscribe();\n});\n\ndefineExpose({});\n</script>\n","<script lang=\"tsx\" setup>\nimport { ref } from \"vue\";\nimport {setWindowTitle} from \"@zyzgroup/core-web\"\nimport LayoutPage from \"../layout/LayoutPage.vue\";\nimport { useRoute } from \"../../hooks\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  inheritAttrs: true,\n  customOptions: { LayoutPage }\n});\n\nconst props = withDefaults(\n  defineProps<{\n    src?: string; // https://erichd2.oss-cn-shanghai.aliyuncs.com/0000/0002/2159\n    title?: string;\n  }>(),\n  {\n    src: \"\",\n    title: \"\"\n  }\n);\n\nconst route = useRoute();\nsetWindowTitle(typeof route.params.title == \"string\" ? route.params.title : props.title);\nconst src = decodeURIComponent(typeof route.params.src == \"string\" ? route.params.src : props.src);\n\n</script>\n\n<template>\n  <LayoutPage>\n    <div class=\"view-document\">\n      <img\n        class=\"img\"\n        :src=\"src\"\n      ></img>\n    </div>\n  </LayoutPage>\n</template>\n\n<style scoped>\n.view-document {\n  box-sizing: border-box;\n  width: 100%;\n  padding: 15px;\n}\n.img {\n  width: 100%;\n}\n</style>\n","import { h, defineComponent } from 'vue';\n\nconst matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n  const colonSeparated = value.split(\":\");\n  if (value.slice(0, 1) === \"@\") {\n    if (colonSeparated.length < 2 || colonSeparated.length > 3) {\n      return null;\n    }\n    provider = colonSeparated.shift().slice(1);\n  }\n  if (colonSeparated.length > 3 || !colonSeparated.length) {\n    return null;\n  }\n  if (colonSeparated.length > 1) {\n    const name2 = colonSeparated.pop();\n    const prefix = colonSeparated.pop();\n    const result = {\n      // Allow provider without '@': \"provider:prefix:name\"\n      provider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n      prefix,\n      name: name2\n    };\n    return validate && !validateIconName(result) ? null : result;\n  }\n  const name = colonSeparated[0];\n  const dashSeparated = name.split(\"-\");\n  if (dashSeparated.length > 1) {\n    const result = {\n      provider,\n      prefix: dashSeparated.shift(),\n      name: dashSeparated.join(\"-\")\n    };\n    return validate && !validateIconName(result) ? null : result;\n  }\n  if (allowSimpleName && provider === \"\") {\n    const result = {\n      provider,\n      prefix: \"\",\n      name\n    };\n    return validate && !validateIconName(result, allowSimpleName) ? null : result;\n  }\n  return null;\n};\nconst validateIconName = (icon, allowSimpleName) => {\n  if (!icon) {\n    return false;\n  }\n  return !!// Check prefix: cannot be empty, unless allowSimpleName is enabled\n  // Check name: cannot be empty\n  ((allowSimpleName && icon.prefix === \"\" || !!icon.prefix) && !!icon.name);\n};\n\nconst defaultIconDimensions = Object.freeze(\n  {\n    left: 0,\n    top: 0,\n    width: 16,\n    height: 16\n  }\n);\nconst defaultIconTransformations = Object.freeze({\n  rotate: 0,\n  vFlip: false,\n  hFlip: false\n});\nconst defaultIconProps = Object.freeze({\n  ...defaultIconDimensions,\n  ...defaultIconTransformations\n});\nconst defaultExtendedIconProps = Object.freeze({\n  ...defaultIconProps,\n  body: \"\",\n  hidden: false\n});\n\nfunction mergeIconTransformations(obj1, obj2) {\n  const result = {};\n  if (!obj1.hFlip !== !obj2.hFlip) {\n    result.hFlip = true;\n  }\n  if (!obj1.vFlip !== !obj2.vFlip) {\n    result.vFlip = true;\n  }\n  const rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n  if (rotate) {\n    result.rotate = rotate;\n  }\n  return result;\n}\n\nfunction mergeIconData(parent, child) {\n  const result = mergeIconTransformations(parent, child);\n  for (const key in defaultExtendedIconProps) {\n    if (key in defaultIconTransformations) {\n      if (key in parent && !(key in result)) {\n        result[key] = defaultIconTransformations[key];\n      }\n    } else if (key in child) {\n      result[key] = child[key];\n    } else if (key in parent) {\n      result[key] = parent[key];\n    }\n  }\n  return result;\n}\n\nfunction getIconsTree(data, names) {\n  const icons = data.icons;\n  const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n  const resolved = /* @__PURE__ */ Object.create(null);\n  function resolve(name) {\n    if (icons[name]) {\n      return resolved[name] = [];\n    }\n    if (!(name in resolved)) {\n      resolved[name] = null;\n      const parent = aliases[name] && aliases[name].parent;\n      const value = parent && resolve(parent);\n      if (value) {\n        resolved[name] = [parent].concat(value);\n      }\n    }\n    return resolved[name];\n  }\n  (Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n  return resolved;\n}\n\nfunction internalGetIconData(data, name, tree) {\n  const icons = data.icons;\n  const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n  let currentProps = {};\n  function parse(name2) {\n    currentProps = mergeIconData(\n      icons[name2] || aliases[name2],\n      currentProps\n    );\n  }\n  parse(name);\n  tree.forEach(parse);\n  return mergeIconData(data, currentProps);\n}\n\nfunction parseIconSet(data, callback) {\n  const names = [];\n  if (typeof data !== \"object\" || typeof data.icons !== \"object\") {\n    return names;\n  }\n  if (data.not_found instanceof Array) {\n    data.not_found.forEach((name) => {\n      callback(name, null);\n      names.push(name);\n    });\n  }\n  const tree = getIconsTree(data);\n  for (const name in tree) {\n    const item = tree[name];\n    if (item) {\n      callback(name, internalGetIconData(data, name, item));\n      names.push(name);\n    }\n  }\n  return names;\n}\n\nconst optionalPropertyDefaults = {\n  provider: \"\",\n  aliases: {},\n  not_found: {},\n  ...defaultIconDimensions\n};\nfunction checkOptionalProps(item, defaults) {\n  for (const prop in defaults) {\n    if (prop in item && typeof item[prop] !== typeof defaults[prop]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction quicklyValidateIconSet(obj) {\n  if (typeof obj !== \"object\" || obj === null) {\n    return null;\n  }\n  const data = obj;\n  if (typeof data.prefix !== \"string\" || !obj.icons || typeof obj.icons !== \"object\") {\n    return null;\n  }\n  if (!checkOptionalProps(obj, optionalPropertyDefaults)) {\n    return null;\n  }\n  const icons = data.icons;\n  for (const name in icons) {\n    const icon = icons[name];\n    if (\n      // Name cannot be empty\n      !name || // Must have body\n      typeof icon.body !== \"string\" || // Check other props\n      !checkOptionalProps(\n        icon,\n        defaultExtendedIconProps\n      )\n    ) {\n      return null;\n    }\n  }\n  const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n  for (const name in aliases) {\n    const icon = aliases[name];\n    const parent = icon.parent;\n    if (\n      // Name cannot be empty\n      !name || // Parent must be set and point to existing icon\n      typeof parent !== \"string\" || !icons[parent] && !aliases[parent] || // Check other props\n      !checkOptionalProps(\n        icon,\n        defaultExtendedIconProps\n      )\n    ) {\n      return null;\n    }\n  }\n  return data;\n}\n\nconst dataStorage = /* @__PURE__ */ Object.create(null);\nfunction newStorage(provider, prefix) {\n  return {\n    provider,\n    prefix,\n    icons: /* @__PURE__ */ Object.create(null),\n    missing: /* @__PURE__ */ new Set()\n  };\n}\nfunction getStorage(provider, prefix) {\n  const providerStorage = dataStorage[provider] || (dataStorage[provider] = /* @__PURE__ */ Object.create(null));\n  return providerStorage[prefix] || (providerStorage[prefix] = newStorage(provider, prefix));\n}\nfunction addIconSet(storage, data) {\n  if (!quicklyValidateIconSet(data)) {\n    return [];\n  }\n  return parseIconSet(data, (name, icon) => {\n    if (icon) {\n      storage.icons[name] = icon;\n    } else {\n      storage.missing.add(name);\n    }\n  });\n}\nfunction addIconToStorage(storage, name, icon) {\n  try {\n    if (typeof icon.body === \"string\") {\n      storage.icons[name] = { ...icon };\n      return true;\n    }\n  } catch (err) {\n  }\n  return false;\n}\nfunction listIcons(provider, prefix) {\n  let allIcons = [];\n  const providers = typeof provider === \"string\" ? [provider] : Object.keys(dataStorage);\n  providers.forEach((provider2) => {\n    const prefixes = typeof provider2 === \"string\" && typeof prefix === \"string\" ? [prefix] : Object.keys(dataStorage[provider2] || {});\n    prefixes.forEach((prefix2) => {\n      const storage = getStorage(provider2, prefix2);\n      allIcons = allIcons.concat(\n        Object.keys(storage.icons).map(\n          (name) => (provider2 !== \"\" ? \"@\" + provider2 + \":\" : \"\") + prefix2 + \":\" + name\n        )\n      );\n    });\n  });\n  return allIcons;\n}\n\nlet simpleNames = false;\nfunction allowSimpleNames(allow) {\n  if (typeof allow === \"boolean\") {\n    simpleNames = allow;\n  }\n  return simpleNames;\n}\nfunction getIconData(name) {\n  const icon = typeof name === \"string\" ? stringToIcon(name, true, simpleNames) : name;\n  if (icon) {\n    const storage = getStorage(icon.provider, icon.prefix);\n    const iconName = icon.name;\n    return storage.icons[iconName] || (storage.missing.has(iconName) ? null : void 0);\n  }\n}\nfunction addIcon(name, data) {\n  const icon = stringToIcon(name, true, simpleNames);\n  if (!icon) {\n    return false;\n  }\n  const storage = getStorage(icon.provider, icon.prefix);\n  if (data) {\n    return addIconToStorage(storage, icon.name, data);\n  } else {\n    storage.missing.add(icon.name);\n    return true;\n  }\n}\nfunction addCollection(data, provider) {\n  if (typeof data !== \"object\") {\n    return false;\n  }\n  if (typeof provider !== \"string\") {\n    provider = data.provider || \"\";\n  }\n  if (simpleNames && !provider && !data.prefix) {\n    let added = false;\n    if (quicklyValidateIconSet(data)) {\n      data.prefix = \"\";\n      parseIconSet(data, (name, icon) => {\n        if (addIcon(name, icon)) {\n          added = true;\n        }\n      });\n    }\n    return added;\n  }\n  const prefix = data.prefix;\n  if (!validateIconName({\n    provider,\n    prefix,\n    name: \"a\"\n  })) {\n    return false;\n  }\n  const storage = getStorage(provider, prefix);\n  return !!addIconSet(storage, data);\n}\nfunction iconLoaded(name) {\n  return !!getIconData(name);\n}\nfunction getIcon(name) {\n  const result = getIconData(name);\n  return result ? {\n    ...defaultIconProps,\n    ...result\n  } : result;\n}\n\nconst defaultIconSizeCustomisations = Object.freeze({\n  width: null,\n  height: null\n});\nconst defaultIconCustomisations = Object.freeze({\n  // Dimensions\n  ...defaultIconSizeCustomisations,\n  // Transformations\n  ...defaultIconTransformations\n});\n\nconst unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize(size, ratio, precision) {\n  if (ratio === 1) {\n    return size;\n  }\n  precision = precision || 100;\n  if (typeof size === \"number\") {\n    return Math.ceil(size * ratio * precision) / precision;\n  }\n  if (typeof size !== \"string\") {\n    return size;\n  }\n  const oldParts = size.split(unitsSplit);\n  if (oldParts === null || !oldParts.length) {\n    return size;\n  }\n  const newParts = [];\n  let code = oldParts.shift();\n  let isNumber = unitsTest.test(code);\n  while (true) {\n    if (isNumber) {\n      const num = parseFloat(code);\n      if (isNaN(num)) {\n        newParts.push(code);\n      } else {\n        newParts.push(Math.ceil(num * ratio * precision) / precision);\n      }\n    } else {\n      newParts.push(code);\n    }\n    code = oldParts.shift();\n    if (code === void 0) {\n      return newParts.join(\"\");\n    }\n    isNumber = !isNumber;\n  }\n}\n\nfunction splitSVGDefs(content, tag = \"defs\") {\n  let defs = \"\";\n  const index = content.indexOf(\"<\" + tag);\n  while (index >= 0) {\n    const start = content.indexOf(\">\", index);\n    const end = content.indexOf(\"</\" + tag);\n    if (start === -1 || end === -1) {\n      break;\n    }\n    const endEnd = content.indexOf(\">\", end);\n    if (endEnd === -1) {\n      break;\n    }\n    defs += content.slice(start + 1, end).trim();\n    content = content.slice(0, index).trim() + content.slice(endEnd + 1);\n  }\n  return {\n    defs,\n    content\n  };\n}\nfunction mergeDefsAndContent(defs, content) {\n  return defs ? \"<defs>\" + defs + \"</defs>\" + content : content;\n}\nfunction wrapSVGContent(body, start, end) {\n  const split = splitSVGDefs(body);\n  return mergeDefsAndContent(split.defs, start + split.content + end);\n}\n\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\nfunction iconToSVG(icon, customisations) {\n  const fullIcon = {\n    ...defaultIconProps,\n    ...icon\n  };\n  const fullCustomisations = {\n    ...defaultIconCustomisations,\n    ...customisations\n  };\n  const box = {\n    left: fullIcon.left,\n    top: fullIcon.top,\n    width: fullIcon.width,\n    height: fullIcon.height\n  };\n  let body = fullIcon.body;\n  [fullIcon, fullCustomisations].forEach((props) => {\n    const transformations = [];\n    const hFlip = props.hFlip;\n    const vFlip = props.vFlip;\n    let rotation = props.rotate;\n    if (hFlip) {\n      if (vFlip) {\n        rotation += 2;\n      } else {\n        transformations.push(\n          \"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\"\n        );\n        transformations.push(\"scale(-1 1)\");\n        box.top = box.left = 0;\n      }\n    } else if (vFlip) {\n      transformations.push(\n        \"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\"\n      );\n      transformations.push(\"scale(1 -1)\");\n      box.top = box.left = 0;\n    }\n    let tempValue;\n    if (rotation < 0) {\n      rotation -= Math.floor(rotation / 4) * 4;\n    }\n    rotation = rotation % 4;\n    switch (rotation) {\n      case 1:\n        tempValue = box.height / 2 + box.top;\n        transformations.unshift(\n          \"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n        );\n        break;\n      case 2:\n        transformations.unshift(\n          \"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\"\n        );\n        break;\n      case 3:\n        tempValue = box.width / 2 + box.left;\n        transformations.unshift(\n          \"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n        );\n        break;\n    }\n    if (rotation % 2 === 1) {\n      if (box.left !== box.top) {\n        tempValue = box.left;\n        box.left = box.top;\n        box.top = tempValue;\n      }\n      if (box.width !== box.height) {\n        tempValue = box.width;\n        box.width = box.height;\n        box.height = tempValue;\n      }\n    }\n    if (transformations.length) {\n      body = wrapSVGContent(\n        body,\n        '<g transform=\"' + transformations.join(\" \") + '\">',\n        \"</g>\"\n      );\n    }\n  });\n  const customisationsWidth = fullCustomisations.width;\n  const customisationsHeight = fullCustomisations.height;\n  const boxWidth = box.width;\n  const boxHeight = box.height;\n  let width;\n  let height;\n  if (customisationsWidth === null) {\n    height = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n    width = calculateSize(height, boxWidth / boxHeight);\n  } else {\n    width = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n    height = customisationsHeight === null ? calculateSize(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n  }\n  const attributes = {};\n  const setAttr = (prop, value) => {\n    if (!isUnsetKeyword(value)) {\n      attributes[prop] = value.toString();\n    }\n  };\n  setAttr(\"width\", width);\n  setAttr(\"height\", height);\n  const viewBox = [box.left, box.top, boxWidth, boxHeight];\n  attributes.viewBox = viewBox.join(\" \");\n  return {\n    attributes,\n    viewBox,\n    body\n  };\n}\n\nconst regex = /\\sid=\"(\\S+)\"/g;\nconst randomPrefix = \"IconifyId\" + Date.now().toString(16) + (Math.random() * 16777216 | 0).toString(16);\nlet counter = 0;\nfunction replaceIDs(body, prefix = randomPrefix) {\n  const ids = [];\n  let match;\n  while (match = regex.exec(body)) {\n    ids.push(match[1]);\n  }\n  if (!ids.length) {\n    return body;\n  }\n  const suffix = \"suffix\" + (Math.random() * 16777216 | Date.now()).toString(16);\n  ids.forEach((id) => {\n    const newID = typeof prefix === \"function\" ? prefix(id) : prefix + (counter++).toString();\n    const escapedID = id.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n    body = body.replace(\n      // Allowed characters before id: [#;\"]\n      // Allowed characters after id: [)\"], .[a-z]\n      new RegExp('([#;\"])(' + escapedID + ')([\")]|\\\\.[a-z])', \"g\"),\n      \"$1\" + newID + suffix + \"$3\"\n    );\n  });\n  body = body.replace(new RegExp(suffix, \"g\"), \"\");\n  return body;\n}\n\nconst storage = /* @__PURE__ */ Object.create(null);\nfunction setAPIModule(provider, item) {\n  storage[provider] = item;\n}\nfunction getAPIModule(provider) {\n  return storage[provider] || storage[\"\"];\n}\n\nfunction createAPIConfig(source) {\n  let resources;\n  if (typeof source.resources === \"string\") {\n    resources = [source.resources];\n  } else {\n    resources = source.resources;\n    if (!(resources instanceof Array) || !resources.length) {\n      return null;\n    }\n  }\n  const result = {\n    // API hosts\n    resources,\n    // Root path\n    path: source.path || \"/\",\n    // URL length limit\n    maxURL: source.maxURL || 500,\n    // Timeout before next host is used.\n    rotate: source.rotate || 750,\n    // Timeout before failing query.\n    timeout: source.timeout || 5e3,\n    // Randomise default API end point.\n    random: source.random === true,\n    // Start index\n    index: source.index || 0,\n    // Receive data after time out (used if time out kicks in first, then API module sends data anyway).\n    dataAfterTimeout: source.dataAfterTimeout !== false\n  };\n  return result;\n}\nconst configStorage = /* @__PURE__ */ Object.create(null);\nconst fallBackAPISources = [\n  \"https://api.simplesvg.com\",\n  \"https://api.unisvg.com\"\n];\nconst fallBackAPI = [];\nwhile (fallBackAPISources.length > 0) {\n  if (fallBackAPISources.length === 1) {\n    fallBackAPI.push(fallBackAPISources.shift());\n  } else {\n    if (Math.random() > 0.5) {\n      fallBackAPI.push(fallBackAPISources.shift());\n    } else {\n      fallBackAPI.push(fallBackAPISources.pop());\n    }\n  }\n}\nconfigStorage[\"\"] = createAPIConfig({\n  resources: [\"https://api.iconify.design\"].concat(fallBackAPI)\n});\nfunction addAPIProvider(provider, customConfig) {\n  const config = createAPIConfig(customConfig);\n  if (config === null) {\n    return false;\n  }\n  configStorage[provider] = config;\n  return true;\n}\nfunction getAPIConfig(provider) {\n  return configStorage[provider];\n}\nfunction listAPIProviders() {\n  return Object.keys(configStorage);\n}\n\nconst detectFetch = () => {\n  let callback;\n  try {\n    callback = fetch;\n    if (typeof callback === \"function\") {\n      return callback;\n    }\n  } catch (err) {\n  }\n};\nlet fetchModule = detectFetch();\nfunction setFetch(fetch2) {\n  fetchModule = fetch2;\n}\nfunction getFetch() {\n  return fetchModule;\n}\nfunction calculateMaxLength(provider, prefix) {\n  const config = getAPIConfig(provider);\n  if (!config) {\n    return 0;\n  }\n  let result;\n  if (!config.maxURL) {\n    result = 0;\n  } else {\n    let maxHostLength = 0;\n    config.resources.forEach((item) => {\n      const host = item;\n      maxHostLength = Math.max(maxHostLength, host.length);\n    });\n    const url = prefix + \".json?icons=\";\n    result = config.maxURL - maxHostLength - config.path.length - url.length;\n  }\n  return result;\n}\nfunction shouldAbort(status) {\n  return status === 404;\n}\nconst prepare = (provider, prefix, icons) => {\n  const results = [];\n  const maxLength = calculateMaxLength(provider, prefix);\n  const type = \"icons\";\n  let item = {\n    type,\n    provider,\n    prefix,\n    icons: []\n  };\n  let length = 0;\n  icons.forEach((name, index) => {\n    length += name.length + 1;\n    if (length >= maxLength && index > 0) {\n      results.push(item);\n      item = {\n        type,\n        provider,\n        prefix,\n        icons: []\n      };\n      length = name.length;\n    }\n    item.icons.push(name);\n  });\n  results.push(item);\n  return results;\n};\nfunction getPath(provider) {\n  if (typeof provider === \"string\") {\n    const config = getAPIConfig(provider);\n    if (config) {\n      return config.path;\n    }\n  }\n  return \"/\";\n}\nconst send = (host, params, callback) => {\n  if (!fetchModule) {\n    callback(\"abort\", 424);\n    return;\n  }\n  let path = getPath(params.provider);\n  switch (params.type) {\n    case \"icons\": {\n      const prefix = params.prefix;\n      const icons = params.icons;\n      const iconsList = icons.join(\",\");\n      const urlParams = new URLSearchParams({\n        icons: iconsList\n      });\n      path += prefix + \".json?\" + urlParams.toString();\n      break;\n    }\n    case \"custom\": {\n      const uri = params.uri;\n      path += uri.slice(0, 1) === \"/\" ? uri.slice(1) : uri;\n      break;\n    }\n    default:\n      callback(\"abort\", 400);\n      return;\n  }\n  let defaultError = 503;\n  fetchModule(host + path).then((response) => {\n    const status = response.status;\n    if (status !== 200) {\n      setTimeout(() => {\n        callback(shouldAbort(status) ? \"abort\" : \"next\", status);\n      });\n      return;\n    }\n    defaultError = 501;\n    return response.json();\n  }).then((data) => {\n    if (typeof data !== \"object\" || data === null) {\n      setTimeout(() => {\n        if (data === 404) {\n          callback(\"abort\", data);\n        } else {\n          callback(\"next\", defaultError);\n        }\n      });\n      return;\n    }\n    setTimeout(() => {\n      callback(\"success\", data);\n    });\n  }).catch(() => {\n    callback(\"next\", defaultError);\n  });\n};\nconst fetchAPIModule = {\n  prepare,\n  send\n};\n\nfunction sortIcons(icons) {\n  const result = {\n    loaded: [],\n    missing: [],\n    pending: []\n  };\n  const storage = /* @__PURE__ */ Object.create(null);\n  icons.sort((a, b) => {\n    if (a.provider !== b.provider) {\n      return a.provider.localeCompare(b.provider);\n    }\n    if (a.prefix !== b.prefix) {\n      return a.prefix.localeCompare(b.prefix);\n    }\n    return a.name.localeCompare(b.name);\n  });\n  let lastIcon = {\n    provider: \"\",\n    prefix: \"\",\n    name: \"\"\n  };\n  icons.forEach((icon) => {\n    if (lastIcon.name === icon.name && lastIcon.prefix === icon.prefix && lastIcon.provider === icon.provider) {\n      return;\n    }\n    lastIcon = icon;\n    const provider = icon.provider;\n    const prefix = icon.prefix;\n    const name = icon.name;\n    const providerStorage = storage[provider] || (storage[provider] = /* @__PURE__ */ Object.create(null));\n    const localStorage = providerStorage[prefix] || (providerStorage[prefix] = getStorage(provider, prefix));\n    let list;\n    if (name in localStorage.icons) {\n      list = result.loaded;\n    } else if (prefix === \"\" || localStorage.missing.has(name)) {\n      list = result.missing;\n    } else {\n      list = result.pending;\n    }\n    const item = {\n      provider,\n      prefix,\n      name\n    };\n    list.push(item);\n  });\n  return result;\n}\n\nfunction removeCallback(storages, id) {\n  storages.forEach((storage) => {\n    const items = storage.loaderCallbacks;\n    if (items) {\n      storage.loaderCallbacks = items.filter((row) => row.id !== id);\n    }\n  });\n}\nfunction updateCallbacks(storage) {\n  if (!storage.pendingCallbacksFlag) {\n    storage.pendingCallbacksFlag = true;\n    setTimeout(() => {\n      storage.pendingCallbacksFlag = false;\n      const items = storage.loaderCallbacks ? storage.loaderCallbacks.slice(0) : [];\n      if (!items.length) {\n        return;\n      }\n      let hasPending = false;\n      const provider = storage.provider;\n      const prefix = storage.prefix;\n      items.forEach((item) => {\n        const icons = item.icons;\n        const oldLength = icons.pending.length;\n        icons.pending = icons.pending.filter((icon) => {\n          if (icon.prefix !== prefix) {\n            return true;\n          }\n          const name = icon.name;\n          if (storage.icons[name]) {\n            icons.loaded.push({\n              provider,\n              prefix,\n              name\n            });\n          } else if (storage.missing.has(name)) {\n            icons.missing.push({\n              provider,\n              prefix,\n              name\n            });\n          } else {\n            hasPending = true;\n            return true;\n          }\n          return false;\n        });\n        if (icons.pending.length !== oldLength) {\n          if (!hasPending) {\n            removeCallback([storage], item.id);\n          }\n          item.callback(\n            icons.loaded.slice(0),\n            icons.missing.slice(0),\n            icons.pending.slice(0),\n            item.abort\n          );\n        }\n      });\n    });\n  }\n}\nlet idCounter = 0;\nfunction storeCallback(callback, icons, pendingSources) {\n  const id = idCounter++;\n  const abort = removeCallback.bind(null, pendingSources, id);\n  if (!icons.pending.length) {\n    return abort;\n  }\n  const item = {\n    id,\n    icons,\n    callback,\n    abort\n  };\n  pendingSources.forEach((storage) => {\n    (storage.loaderCallbacks || (storage.loaderCallbacks = [])).push(item);\n  });\n  return abort;\n}\n\nfunction listToIcons(list, validate = true, simpleNames = false) {\n  const result = [];\n  list.forEach((item) => {\n    const icon = typeof item === \"string\" ? stringToIcon(item, validate, simpleNames) : item;\n    if (icon) {\n      result.push(icon);\n    }\n  });\n  return result;\n}\n\n// src/config.ts\nvar defaultConfig = {\n  resources: [],\n  index: 0,\n  timeout: 2e3,\n  rotate: 750,\n  random: false,\n  dataAfterTimeout: false\n};\n\n// src/query.ts\nfunction sendQuery(config, payload, query, done) {\n  const resourcesCount = config.resources.length;\n  const startIndex = config.random ? Math.floor(Math.random() * resourcesCount) : config.index;\n  let resources;\n  if (config.random) {\n    let list = config.resources.slice(0);\n    resources = [];\n    while (list.length > 1) {\n      const nextIndex = Math.floor(Math.random() * list.length);\n      resources.push(list[nextIndex]);\n      list = list.slice(0, nextIndex).concat(list.slice(nextIndex + 1));\n    }\n    resources = resources.concat(list);\n  } else {\n    resources = config.resources.slice(startIndex).concat(config.resources.slice(0, startIndex));\n  }\n  const startTime = Date.now();\n  let status = \"pending\";\n  let queriesSent = 0;\n  let lastError;\n  let timer = null;\n  let queue = [];\n  let doneCallbacks = [];\n  if (typeof done === \"function\") {\n    doneCallbacks.push(done);\n  }\n  function resetTimer() {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n  }\n  function abort() {\n    if (status === \"pending\") {\n      status = \"aborted\";\n    }\n    resetTimer();\n    queue.forEach((item) => {\n      if (item.status === \"pending\") {\n        item.status = \"aborted\";\n      }\n    });\n    queue = [];\n  }\n  function subscribe(callback, overwrite) {\n    if (overwrite) {\n      doneCallbacks = [];\n    }\n    if (typeof callback === \"function\") {\n      doneCallbacks.push(callback);\n    }\n  }\n  function getQueryStatus() {\n    return {\n      startTime,\n      payload,\n      status,\n      queriesSent,\n      queriesPending: queue.length,\n      subscribe,\n      abort\n    };\n  }\n  function failQuery() {\n    status = \"failed\";\n    doneCallbacks.forEach((callback) => {\n      callback(void 0, lastError);\n    });\n  }\n  function clearQueue() {\n    queue.forEach((item) => {\n      if (item.status === \"pending\") {\n        item.status = \"aborted\";\n      }\n    });\n    queue = [];\n  }\n  function moduleResponse(item, response, data) {\n    const isError = response !== \"success\";\n    queue = queue.filter((queued) => queued !== item);\n    switch (status) {\n      case \"pending\":\n        break;\n      case \"failed\":\n        if (isError || !config.dataAfterTimeout) {\n          return;\n        }\n        break;\n      default:\n        return;\n    }\n    if (response === \"abort\") {\n      lastError = data;\n      failQuery();\n      return;\n    }\n    if (isError) {\n      lastError = data;\n      if (!queue.length) {\n        if (!resources.length) {\n          failQuery();\n        } else {\n          execNext();\n        }\n      }\n      return;\n    }\n    resetTimer();\n    clearQueue();\n    if (!config.random) {\n      const index = config.resources.indexOf(item.resource);\n      if (index !== -1 && index !== config.index) {\n        config.index = index;\n      }\n    }\n    status = \"completed\";\n    doneCallbacks.forEach((callback) => {\n      callback(data);\n    });\n  }\n  function execNext() {\n    if (status !== \"pending\") {\n      return;\n    }\n    resetTimer();\n    const resource = resources.shift();\n    if (resource === void 0) {\n      if (queue.length) {\n        timer = setTimeout(() => {\n          resetTimer();\n          if (status === \"pending\") {\n            clearQueue();\n            failQuery();\n          }\n        }, config.timeout);\n        return;\n      }\n      failQuery();\n      return;\n    }\n    const item = {\n      status: \"pending\",\n      resource,\n      callback: (status2, data) => {\n        moduleResponse(item, status2, data);\n      }\n    };\n    queue.push(item);\n    queriesSent++;\n    timer = setTimeout(execNext, config.rotate);\n    query(resource, payload, item.callback);\n  }\n  setTimeout(execNext);\n  return getQueryStatus;\n}\n\n// src/index.ts\nfunction initRedundancy(cfg) {\n  const config = {\n    ...defaultConfig,\n    ...cfg\n  };\n  let queries = [];\n  function cleanup() {\n    queries = queries.filter((item) => item().status === \"pending\");\n  }\n  function query(payload, queryCallback, doneCallback) {\n    const query2 = sendQuery(\n      config,\n      payload,\n      queryCallback,\n      (data, error) => {\n        cleanup();\n        if (doneCallback) {\n          doneCallback(data, error);\n        }\n      }\n    );\n    queries.push(query2);\n    return query2;\n  }\n  function find(callback) {\n    return queries.find((value) => {\n      return callback(value);\n    }) || null;\n  }\n  const instance = {\n    query,\n    find,\n    setIndex: (index) => {\n      config.index = index;\n    },\n    getIndex: () => config.index,\n    cleanup\n  };\n  return instance;\n}\n\nfunction emptyCallback$1() {\n}\nconst redundancyCache = /* @__PURE__ */ Object.create(null);\nfunction getRedundancyCache(provider) {\n  if (!redundancyCache[provider]) {\n    const config = getAPIConfig(provider);\n    if (!config) {\n      return;\n    }\n    const redundancy = initRedundancy(config);\n    const cachedReundancy = {\n      config,\n      redundancy\n    };\n    redundancyCache[provider] = cachedReundancy;\n  }\n  return redundancyCache[provider];\n}\nfunction sendAPIQuery(target, query, callback) {\n  let redundancy;\n  let send;\n  if (typeof target === \"string\") {\n    const api = getAPIModule(target);\n    if (!api) {\n      callback(void 0, 424);\n      return emptyCallback$1;\n    }\n    send = api.send;\n    const cached = getRedundancyCache(target);\n    if (cached) {\n      redundancy = cached.redundancy;\n    }\n  } else {\n    const config = createAPIConfig(target);\n    if (config) {\n      redundancy = initRedundancy(config);\n      const moduleKey = target.resources ? target.resources[0] : \"\";\n      const api = getAPIModule(moduleKey);\n      if (api) {\n        send = api.send;\n      }\n    }\n  }\n  if (!redundancy || !send) {\n    callback(void 0, 424);\n    return emptyCallback$1;\n  }\n  return redundancy.query(query, send, callback)().abort;\n}\n\nfunction emptyCallback() {\n}\nfunction loadedNewIcons(storage) {\n  if (!storage.iconsLoaderFlag) {\n    storage.iconsLoaderFlag = true;\n    setTimeout(() => {\n      storage.iconsLoaderFlag = false;\n      updateCallbacks(storage);\n    });\n  }\n}\nfunction checkIconNamesForAPI(icons) {\n  const valid = [];\n  const invalid = [];\n  icons.forEach((name) => {\n    (name.match(matchIconName) ? valid : invalid).push(name);\n  });\n  return {\n    valid,\n    invalid\n  };\n}\nfunction parseLoaderResponse(storage, icons, data) {\n  function checkMissing() {\n    const pending = storage.pendingIcons;\n    icons.forEach((name) => {\n      if (pending) {\n        pending.delete(name);\n      }\n      if (!storage.icons[name]) {\n        storage.missing.add(name);\n      }\n    });\n  }\n  if (data && typeof data === \"object\") {\n    try {\n      const parsed = addIconSet(storage, data);\n      if (!parsed.length) {\n        checkMissing();\n        return;\n      }\n    } catch (err) {\n      console.error(err);\n    }\n  }\n  checkMissing();\n  loadedNewIcons(storage);\n}\nfunction parsePossiblyAsyncResponse(response, callback) {\n  if (response instanceof Promise) {\n    response.then((data) => {\n      callback(data);\n    }).catch(() => {\n      callback(null);\n    });\n  } else {\n    callback(response);\n  }\n}\nfunction loadNewIcons(storage, icons) {\n  if (!storage.iconsToLoad) {\n    storage.iconsToLoad = icons;\n  } else {\n    storage.iconsToLoad = storage.iconsToLoad.concat(icons).sort();\n  }\n  if (!storage.iconsQueueFlag) {\n    storage.iconsQueueFlag = true;\n    setTimeout(() => {\n      storage.iconsQueueFlag = false;\n      const { provider, prefix } = storage;\n      const icons2 = storage.iconsToLoad;\n      delete storage.iconsToLoad;\n      if (!icons2 || !icons2.length) {\n        return;\n      }\n      const customIconLoader = storage.loadIcon;\n      if (storage.loadIcons && (icons2.length > 1 || !customIconLoader)) {\n        parsePossiblyAsyncResponse(\n          storage.loadIcons(icons2, prefix, provider),\n          (data) => {\n            parseLoaderResponse(storage, icons2, data);\n          }\n        );\n        return;\n      }\n      if (customIconLoader) {\n        icons2.forEach((name) => {\n          const response = customIconLoader(name, prefix, provider);\n          parsePossiblyAsyncResponse(response, (data) => {\n            const iconSet = data ? {\n              prefix,\n              icons: {\n                [name]: data\n              }\n            } : null;\n            parseLoaderResponse(storage, [name], iconSet);\n          });\n        });\n        return;\n      }\n      const { valid, invalid } = checkIconNamesForAPI(icons2);\n      if (invalid.length) {\n        parseLoaderResponse(storage, invalid, null);\n      }\n      if (!valid.length) {\n        return;\n      }\n      const api = prefix.match(matchIconName) ? getAPIModule(provider) : null;\n      if (!api) {\n        parseLoaderResponse(storage, valid, null);\n        return;\n      }\n      const params = api.prepare(provider, prefix, valid);\n      params.forEach((item) => {\n        sendAPIQuery(provider, item, (data) => {\n          parseLoaderResponse(storage, item.icons, data);\n        });\n      });\n    });\n  }\n}\nconst loadIcons = (icons, callback) => {\n  const cleanedIcons = listToIcons(icons, true, allowSimpleNames());\n  const sortedIcons = sortIcons(cleanedIcons);\n  if (!sortedIcons.pending.length) {\n    let callCallback = true;\n    if (callback) {\n      setTimeout(() => {\n        if (callCallback) {\n          callback(\n            sortedIcons.loaded,\n            sortedIcons.missing,\n            sortedIcons.pending,\n            emptyCallback\n          );\n        }\n      });\n    }\n    return () => {\n      callCallback = false;\n    };\n  }\n  const newIcons = /* @__PURE__ */ Object.create(null);\n  const sources = [];\n  let lastProvider, lastPrefix;\n  sortedIcons.pending.forEach((icon) => {\n    const { provider, prefix } = icon;\n    if (prefix === lastPrefix && provider === lastProvider) {\n      return;\n    }\n    lastProvider = provider;\n    lastPrefix = prefix;\n    sources.push(getStorage(provider, prefix));\n    const providerNewIcons = newIcons[provider] || (newIcons[provider] = /* @__PURE__ */ Object.create(null));\n    if (!providerNewIcons[prefix]) {\n      providerNewIcons[prefix] = [];\n    }\n  });\n  sortedIcons.pending.forEach((icon) => {\n    const { provider, prefix, name } = icon;\n    const storage = getStorage(provider, prefix);\n    const pendingQueue = storage.pendingIcons || (storage.pendingIcons = /* @__PURE__ */ new Set());\n    if (!pendingQueue.has(name)) {\n      pendingQueue.add(name);\n      newIcons[provider][prefix].push(name);\n    }\n  });\n  sources.forEach((storage) => {\n    const list = newIcons[storage.provider][storage.prefix];\n    if (list.length) {\n      loadNewIcons(storage, list);\n    }\n  });\n  return callback ? storeCallback(callback, sortedIcons, sources) : emptyCallback;\n};\nconst loadIcon = (icon) => {\n  return new Promise((fulfill, reject) => {\n    const iconObj = typeof icon === \"string\" ? stringToIcon(icon, true) : icon;\n    if (!iconObj) {\n      reject(icon);\n      return;\n    }\n    loadIcons([iconObj || icon], (loaded) => {\n      if (loaded.length && iconObj) {\n        const data = getIconData(iconObj);\n        if (data) {\n          fulfill({\n            ...defaultIconProps,\n            ...data\n          });\n          return;\n        }\n      }\n      reject(icon);\n    });\n  });\n};\n\nfunction setCustomIconsLoader(loader, prefix, provider) {\n  getStorage(provider || \"\", prefix).loadIcons = loader;\n}\nfunction setCustomIconLoader(loader, prefix, provider) {\n  getStorage(provider || \"\", prefix).loadIcon = loader;\n}\n\nfunction mergeCustomisations(defaults, item) {\n  const result = {\n    ...defaults\n  };\n  for (const key in item) {\n    const value = item[key];\n    const valueType = typeof value;\n    if (key in defaultIconSizeCustomisations) {\n      if (value === null || value && (valueType === \"string\" || valueType === \"number\")) {\n        result[key] = value;\n      }\n    } else if (valueType === typeof result[key]) {\n      result[key] = key === \"rotate\" ? value % 4 : value;\n    }\n  }\n  return result;\n}\n\nconst separator = /[\\s,]+/;\nfunction flipFromString(custom, flip) {\n  flip.split(separator).forEach((str) => {\n    const value = str.trim();\n    switch (value) {\n      case \"horizontal\":\n        custom.hFlip = true;\n        break;\n      case \"vertical\":\n        custom.vFlip = true;\n        break;\n    }\n  });\n}\n\nfunction rotateFromString(value, defaultValue = 0) {\n  const units = value.replace(/^-?[0-9.]*/, \"\");\n  function cleanup(value2) {\n    while (value2 < 0) {\n      value2 += 4;\n    }\n    return value2 % 4;\n  }\n  if (units === \"\") {\n    const num = parseInt(value);\n    return isNaN(num) ? 0 : cleanup(num);\n  } else if (units !== value) {\n    let split = 0;\n    switch (units) {\n      case \"%\":\n        split = 25;\n        break;\n      case \"deg\":\n        split = 90;\n    }\n    if (split) {\n      let num = parseFloat(value.slice(0, value.length - units.length));\n      if (isNaN(num)) {\n        return 0;\n      }\n      num = num / split;\n      return num % 1 === 0 ? cleanup(num) : 0;\n    }\n  }\n  return defaultValue;\n}\n\nfunction iconToHTML(body, attributes) {\n  let renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : ' xmlns:xlink=\"http://www.w3.org/1999/xlink\"';\n  for (const attr in attributes) {\n    renderAttribsHTML += \" \" + attr + '=\"' + attributes[attr] + '\"';\n  }\n  return '<svg xmlns=\"http://www.w3.org/2000/svg\"' + renderAttribsHTML + \">\" + body + \"</svg>\";\n}\n\nfunction encodeSVGforURL(svg) {\n  return svg.replace(/\"/g, \"'\").replace(/%/g, \"%25\").replace(/#/g, \"%23\").replace(/</g, \"%3C\").replace(/>/g, \"%3E\").replace(/\\s+/g, \" \");\n}\nfunction svgToData(svg) {\n  return \"data:image/svg+xml,\" + encodeSVGforURL(svg);\n}\nfunction svgToURL(svg) {\n  return 'url(\"' + svgToData(svg) + '\")';\n}\n\nconst defaultExtendedIconCustomisations = {\n    ...defaultIconCustomisations,\n    inline: false,\n};\n\n/**\n * Default SVG attributes\n */\nconst svgDefaults = {\n    'xmlns': 'http://www.w3.org/2000/svg',\n    'xmlns:xlink': 'http://www.w3.org/1999/xlink',\n    'aria-hidden': true,\n    'role': 'img',\n};\n/**\n * Style modes\n */\nconst commonProps = {\n    display: 'inline-block',\n};\nconst monotoneProps = {\n    backgroundColor: 'currentColor',\n};\nconst coloredProps = {\n    backgroundColor: 'transparent',\n};\n// Dynamically add common props to variables above\nconst propsToAdd = {\n    Image: 'var(--svg)',\n    Repeat: 'no-repeat',\n    Size: '100% 100%',\n};\nconst propsToAddTo = {\n    webkitMask: monotoneProps,\n    mask: monotoneProps,\n    background: coloredProps,\n};\nfor (const prefix in propsToAddTo) {\n    const list = propsToAddTo[prefix];\n    for (const prop in propsToAdd) {\n        list[prefix + prop] = propsToAdd[prop];\n    }\n}\n/**\n * Aliases for customisations.\n * In Vue 'v-' properties are reserved, so v-flip must be renamed\n */\nconst customisationAliases = {};\n['horizontal', 'vertical'].forEach((prefix) => {\n    const attr = prefix.slice(0, 1) + 'Flip';\n    // vertical-flip\n    customisationAliases[prefix + '-flip'] = attr;\n    // v-flip\n    customisationAliases[prefix.slice(0, 1) + '-flip'] = attr;\n    // verticalFlip\n    customisationAliases[prefix + 'Flip'] = attr;\n});\n/**\n * Fix size: add 'px' to numbers\n */\nfunction fixSize(value) {\n    return value + (value.match(/^[-0-9.]+$/) ? 'px' : '');\n}\n/**\n * Render icon\n */\nconst render = (\n// Icon must be validated before calling this function\nicon, \n// Partial properties\nprops) => {\n    // Split properties\n    const customisations = mergeCustomisations(defaultExtendedIconCustomisations, props);\n    const componentProps = { ...svgDefaults };\n    // Check mode\n    const mode = props.mode || 'svg';\n    // Copy style\n    const style = {};\n    const propsStyle = props.style;\n    const customStyle = typeof propsStyle === 'object' && !(propsStyle instanceof Array)\n        ? propsStyle\n        : {};\n    // Get element properties\n    for (let key in props) {\n        const value = props[key];\n        if (value === void 0) {\n            continue;\n        }\n        switch (key) {\n            // Properties to ignore\n            case 'icon':\n            case 'style':\n            case 'onLoad':\n            case 'mode':\n            case 'ssr':\n                break;\n            // Boolean attributes\n            case 'inline':\n            case 'hFlip':\n            case 'vFlip':\n                customisations[key] =\n                    value === true || value === 'true' || value === 1;\n                break;\n            // Flip as string: 'horizontal,vertical'\n            case 'flip':\n                if (typeof value === 'string') {\n                    flipFromString(customisations, value);\n                }\n                break;\n            // Color: override style\n            case 'color':\n                style.color = value;\n                break;\n            // Rotation as string\n            case 'rotate':\n                if (typeof value === 'string') {\n                    customisations[key] = rotateFromString(value);\n                }\n                else if (typeof value === 'number') {\n                    customisations[key] = value;\n                }\n                break;\n            // Remove aria-hidden\n            case 'ariaHidden':\n            case 'aria-hidden':\n                // Vue transforms 'aria-hidden' property to 'ariaHidden'\n                if (value !== true && value !== 'true') {\n                    delete componentProps['aria-hidden'];\n                }\n                break;\n            default: {\n                const alias = customisationAliases[key];\n                if (alias) {\n                    // Aliases for boolean customisations\n                    if (value === true || value === 'true' || value === 1) {\n                        customisations[alias] = true;\n                    }\n                }\n                else if (defaultExtendedIconCustomisations[key] === void 0) {\n                    // Copy missing property if it does not exist in customisations\n                    componentProps[key] = value;\n                }\n            }\n        }\n    }\n    // Generate icon\n    const item = iconToSVG(icon, customisations);\n    const renderAttribs = item.attributes;\n    // Inline display\n    if (customisations.inline) {\n        style.verticalAlign = '-0.125em';\n    }\n    if (mode === 'svg') {\n        // Add style\n        componentProps.style = {\n            ...style,\n            ...customStyle,\n        };\n        // Add icon stuff\n        Object.assign(componentProps, renderAttribs);\n        // Counter for ids based on \"id\" property to render icons consistently on server and client\n        let localCounter = 0;\n        let id = props.id;\n        if (typeof id === 'string') {\n            // Convert '-' to '_' to avoid errors in animations\n            id = id.replace(/-/g, '_');\n        }\n        // Add innerHTML and style to props\n        componentProps['innerHTML'] = replaceIDs(item.body, id ? () => id + 'ID' + localCounter++ : 'iconifyVue');\n        // Render icon\n        return h('svg', componentProps);\n    }\n    // Render <span> with style\n    const { body, width, height } = icon;\n    const useMask = mode === 'mask' ||\n        (mode === 'bg' ? false : body.indexOf('currentColor') !== -1);\n    // Generate SVG\n    const html = iconToHTML(body, {\n        ...renderAttribs,\n        width: width + '',\n        height: height + '',\n    });\n    // Generate style\n    componentProps.style = {\n        ...style,\n        '--svg': svgToURL(html),\n        'width': fixSize(renderAttribs.width),\n        'height': fixSize(renderAttribs.height),\n        ...commonProps,\n        ...(useMask ? monotoneProps : coloredProps),\n        ...customStyle,\n    };\n    return h('span', componentProps);\n};\n\n/**\n * Enable cache\n *\n * @deprecated No longer used\n */\nfunction enableCache(storage) {\n    //\n}\n/**\n * Disable cache\n *\n * @deprecated No longer used\n */\nfunction disableCache(storage) {\n    //\n}\n/**\n * Initialise stuff\n */\n// Enable short names\nallowSimpleNames(true);\n// Set API module\nsetAPIModule('', fetchAPIModule);\n/**\n * Browser stuff\n */\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n    const _window = window;\n    // Load icons from global \"IconifyPreload\"\n    if (_window.IconifyPreload !== void 0) {\n        const preload = _window.IconifyPreload;\n        const err = 'Invalid IconifyPreload syntax.';\n        if (typeof preload === 'object' && preload !== null) {\n            (preload instanceof Array ? preload : [preload]).forEach((item) => {\n                try {\n                    if (\n                    // Check if item is an object and not null/array\n                    typeof item !== 'object' ||\n                        item === null ||\n                        item instanceof Array ||\n                        // Check for 'icons' and 'prefix'\n                        typeof item.icons !== 'object' ||\n                        typeof item.prefix !== 'string' ||\n                        // Add icon set\n                        !addCollection(item)) {\n                        console.error(err);\n                    }\n                }\n                catch (e) {\n                    console.error(err);\n                }\n            });\n        }\n    }\n    // Set API from global \"IconifyProviders\"\n    if (_window.IconifyProviders !== void 0) {\n        const providers = _window.IconifyProviders;\n        if (typeof providers === 'object' && providers !== null) {\n            for (let key in providers) {\n                const err = 'IconifyProviders[' + key + '] is invalid.';\n                try {\n                    const value = providers[key];\n                    if (typeof value !== 'object' ||\n                        !value ||\n                        value.resources === void 0) {\n                        continue;\n                    }\n                    if (!addAPIProvider(key, value)) {\n                        console.error(err);\n                    }\n                }\n                catch (e) {\n                    console.error(err);\n                }\n            }\n        }\n    }\n}\n/**\n * Empty icon data, rendered when icon is not available\n */\nconst emptyIcon = {\n    ...defaultIconProps,\n    body: '',\n};\nconst Icon = defineComponent({\n    // Do not inherit other attributes: it is handled by render()\n    inheritAttrs: false,\n    // Set initial data\n    data() {\n        return {\n            // Current icon name\n            _name: '',\n            // Loading\n            _loadingIcon: null,\n            // Mounted status\n            iconMounted: false,\n            // Callback counter to trigger re-render\n            counter: 0,\n        };\n    },\n    mounted() {\n        // Mark as mounted\n        this.iconMounted = true;\n    },\n    unmounted() {\n        this.abortLoading();\n    },\n    methods: {\n        abortLoading() {\n            if (this._loadingIcon) {\n                this._loadingIcon.abort();\n                this._loadingIcon = null;\n            }\n        },\n        // Get data for icon to render or null\n        getIcon(icon, onload, customise) {\n            // Icon is an object\n            if (typeof icon === 'object' &&\n                icon !== null &&\n                typeof icon.body === 'string') {\n                // Stop loading\n                this._name = '';\n                this.abortLoading();\n                return {\n                    data: icon,\n                };\n            }\n            // Invalid icon?\n            let iconName;\n            if (typeof icon !== 'string' ||\n                (iconName = stringToIcon(icon, false, true)) === null) {\n                this.abortLoading();\n                return null;\n            }\n            // Load icon\n            let data = getIconData(iconName);\n            if (!data) {\n                // Icon data is not available\n                if (!this._loadingIcon || this._loadingIcon.name !== icon) {\n                    // New icon to load\n                    this.abortLoading();\n                    this._name = '';\n                    if (data !== null) {\n                        // Icon was not loaded\n                        this._loadingIcon = {\n                            name: icon,\n                            abort: loadIcons([iconName], () => {\n                                this.counter++;\n                            }),\n                        };\n                    }\n                }\n                return null;\n            }\n            // Icon data is available\n            this.abortLoading();\n            if (this._name !== icon) {\n                this._name = icon;\n                if (onload) {\n                    onload(icon);\n                }\n            }\n            // Customise icon\n            if (customise) {\n                // Clone data and customise it\n                data = Object.assign({}, data);\n                const customised = customise(data.body, iconName.name, iconName.prefix, iconName.provider);\n                if (typeof customised === 'string') {\n                    data.body = customised;\n                }\n            }\n            // Add classes\n            const classes = ['iconify'];\n            if (iconName.prefix !== '') {\n                classes.push('iconify--' + iconName.prefix);\n            }\n            if (iconName.provider !== '') {\n                classes.push('iconify--' + iconName.provider);\n            }\n            return { data, classes };\n        },\n    },\n    // Render icon\n    render() {\n        // Re-render when counter changes\n        this.counter;\n        const props = this.$attrs;\n        // Get icon data\n        const icon = this.iconMounted || props.ssr\n            ? this.getIcon(props.icon, props.onLoad, props.customise)\n            : null;\n        // Validate icon object\n        if (!icon) {\n            return render(emptyIcon, props);\n        }\n        // Add classes\n        let newProps = props;\n        if (icon.classes) {\n            newProps = {\n                ...props,\n                class: (typeof props['class'] === 'string'\n                    ? props['class'] + ' '\n                    : '') + icon.classes.join(' '),\n            };\n        }\n        // Render icon\n        return render({\n            ...defaultIconProps,\n            ...icon.data,\n        }, newProps);\n    },\n});\n/**\n * Internal API\n */\nconst _api = {\n    getAPIConfig,\n    setAPIModule,\n    sendAPIQuery,\n    setFetch,\n    getFetch,\n    listAPIProviders,\n};\n\nexport { Icon, _api, addAPIProvider, addCollection, addIcon, iconToSVG as buildIcon, calculateSize, disableCache, enableCache, getIcon, iconLoaded as iconExists, iconLoaded, listIcons, loadIcon, loadIcons, replaceIDs, setCustomIconLoader, setCustomIconsLoader };\n","<script setup lang=\"ts\">\n// https://icon-sets.iconify.design/\n\n// SUCCESS\n// import IconAccessibility from \"~icons/carbon/accessibility\";\n// <icon-accessibility />\n// import IconAccountBox from \"~icons/mdi/account-box\";\n// <icon-account-box style=\"font-size: 2em; color: red\" />\n\n// import { ChevronUpDownIcon } from \"@heroicons/vue/24/solid\";\n\n// UNSUCCESS : 使用 unplugin-icons 和 unplugin-auto-import 从 iconify 中自动导入任何图标集\n// in Vite\n// pnpm i unplugin-icons --save-dev\n// pnpm i unplugin-vue-component --save-dev\n// pnpm i @iconify/json --save-dev\n// pnpm i @iconify-json/mdi --save-dev\n// <icon-carbon-accessibility />\n// <icon-mdi-account-box style=\"font-size: 2em; color: red\" />\n\nimport { Icon } from \"@iconify/vue\";\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    icon?: string;\n    color?: string;\n  }>(),\n  { icon: \"mdi-light:home\", color: getCSSVar(\"--yz-xg-blue\", \"#5a82f0\") }\n);\n</script>\n\n<template>\n  <span\n    class=\"icon\"\n    :style=\"[\n      'display: inline-flex',\n      'justify-content: center',\n      'align-items: center',\n      'cursor: pointer',\n      'font-size: 1em',\n      'color: ' + props.color\n    ]\"\n  >\n    <Icon\n      :icon=\"props.icon\"\n      :color=\"props.color\"\n    />\n  </span>\n</template>\n\n<style scoped></style>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n    width?: string;\n  }>(),\n  {\n    color: getCSSVar(\"--xg-blue\"),\n    width: \"0.8em\"\n  }\n);\n</script>\n\n<template>\n  <div\n    class=\"loading-11\"\n    ref=\"loading11\"\n  >\n    <div\n      class=\"loading-11-inner\"\n      :style=\"{ width: props.width, height: props.width }\"\n    >\n      <div class=\"container container-1\">\n        <div\n          class=\"dot dot-1\"\n          :style=\"{ backgroundColor: props.color }\"\n        ></div>\n        <div\n          class=\"dot dot-2\"\n          :style=\"{ backgroundColor: props.color }\"\n        ></div>\n        <div\n          class=\"dot dot-3\"\n          :style=\"{ backgroundColor: props.color }\"\n        ></div>\n        <div\n          class=\"dot dot-4\"\n          :style=\"{ backgroundColor: props.color }\"\n        ></div>\n      </div>\n      <div class=\"container container-2\">\n        <div\n          class=\"dot dot-1\"\n          :style=\"{ backgroundColor: props.color }\"\n        ></div>\n        <div\n          class=\"dot dot-2\"\n          :style=\"{ backgroundColor: props.color }\"\n        ></div>\n        <div\n          class=\"dot dot-3\"\n          :style=\"{ backgroundColor: props.color }\"\n        ></div>\n        <div\n          class=\"dot dot-4\"\n          :style=\"{ backgroundColor: props.color }\"\n        ></div>\n      </div>\n      <div class=\"container container-3\">\n        <div\n          class=\"dot dot-1\"\n          :style=\"{ backgroundColor: props.color }\"\n        ></div>\n        <div\n          class=\"dot dot-2\"\n          :style=\"{ backgroundColor: props.color }\"\n        ></div>\n        <div\n          class=\"dot dot-3\"\n          :style=\"{ backgroundColor: props.color }\"\n        ></div>\n        <div\n          class=\"dot dot-4\"\n          :style=\"{ backgroundColor: props.color }\"\n        ></div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.loading-11 {\n  position: relative;\n  display: inline-flex;\n  justify-content: center;\n  align-items: center;\n  width: 100%;\n  height: 100%;\n}\n.loading-11-inner {\n  position: relative;\n}\n.loading-11-inner .container {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n}\n.loading-11-inner .container .dot {\n  width: 20%;\n  height: 20%;\n  border-radius: 100%;\n  position: absolute;\n  animation: bouncedelay 1.2s infinite ease-in-out;\n  animation-fill-mode: both;\n}\n.loading-11-inner .container .dot-1 {\n  top: 0;\n  left: 0;\n}\n.loading-11-inner .container .dot-2 {\n  top: 0;\n  right: 0;\n}\n.loading-11-inner .container .dot-3 {\n  right: 0;\n  bottom: 0;\n}\n.loading-11-inner .container .dot-4 {\n  left: 0;\n  bottom: 0;\n}\n.loading-11-inner .container-1 .dot-2 {\n  animation-delay: -0.9s;\n}\n.loading-11-inner .container-1 .dot-3 {\n  animation-delay: -0.6s;\n}\n.loading-11-inner .container-1 .dot-4 {\n  animation-delay: -0.3s;\n}\n.loading-11-inner .container-2 {\n  transform: rotateZ(45deg);\n}\n.loading-11-inner .container-2 .dot-1 {\n  animation-delay: -1.1s;\n}\n.loading-11-inner .container-2 .dot-2 {\n  animation-delay: -0.8s;\n}\n.loading-11-inner .container-2 .dot-3 {\n  animation-delay: -0.5s;\n}\n.loading-11-inner .container-2 .dot-4 {\n  animation-delay: -0.2s;\n}\n.loading-11-inner .container-3 {\n  transform: rotateZ(90deg);\n}\n.loading-11-inner .container-3 .dot-1 {\n  animation-delay: -1s;\n}\n.loading-11-inner .container-3 .dot-2 {\n  animation-delay: -0.7s;\n}\n.loading-11-inner .container-3 .dot-3 {\n  animation-delay: -0.4s;\n}\n.loading-11-inner .container-3 .dot-4 {\n  animation-delay: -0.1s;\n}\n@keyframes bouncedelay {\n  0%,\n  80%,\n  100% {\n    transform: scale(0.3);\n  }\n  40% {\n    transform: scale(1);\n  }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, watch } from \"vue\";\nimport { throttle } from \"@zyzgroup/core-common\";\nimport { __color, getCSSVar } from \"@zyzgroup/core-web\";\nimport Icon from \"./Icon.vue\";\nimport Loading11 from \"../loading/Loading11.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Loading11 },\n  inheritAttrs: true\n});\n\nexport type ButtonModeType = \"fullfill\" | \"outline\" | \"transparent\";\n\nconst props = withDefaults(\n  defineProps<{\n    label?: string;\n    icon?: string;\n    iconPosition?: \"left\" | \"right\";\n    disabled?: boolean;\n    width?: string;\n    height?: string;\n    padding?: string;\n    fontSize?: string;\n    fontWeight?: string;\n    borderRadius?: string; // border-radius:x/y\n    stylePattern?: ButtonModeType;\n    fontColor?: string;\n    borderColor?: string;\n    bgColor?: string;\n    bgColorStart?: string; // 渐变背景色-开始\n    bgColorEnd?: string; // 渐变背景色-结束\n    asyncClick?: () => Promise<void>;\n  }>(),\n  {\n    iconPosition: \"left\",\n    disabled: false,\n    width: \"auto\",\n    height: \"44px\",\n    padding: \"20px\",\n    fontSize: \"16px\",\n    fontWeight: \"normal\", // normal bold\n    borderRadius: \"4px\",\n    stylePattern: \"fullfill\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"click\", e: Event): void;\n  (event: \"throttleClick\", e: Event): void; // for ce element\n}>();\n\nconst el = ref<HTMLElement>();\n\nconst xgBlue = getCSSVar(\"--yz-xg-blue\", \"#5a82f0\");\n\nconst fontColor = ref(props.fontColor);\nconst borderColor = ref(props.borderColor);\nconst bgColor = ref(props.bgColor);\n\nconst baseFontColor = ref(fontColor.value);\nconst baseBorderColor = ref(borderColor.value);\nconst baseBgColor = ref(bgColor.value);\nconst baseBgColorStart = ref(props.bgColorStart || \"\");\nconst baseBgColorEnd = ref(props.bgColorEnd || \"\");\n\nconst isBgColorGradient = props.bgColorStart && props.bgColorEnd;\n\nfunction setStylePattern(stylePattern: ButtonModeType) {\n  switch (stylePattern) {\n    case \"transparent\":\n      borderColor.value = props.borderColor || \"rgba(255,255,255,0)\";\n      bgColor.value = props.bgColor || \"rgba(255,255,255,0)\";\n      fontColor.value = props.fontColor || xgBlue;\n      break;\n    case \"outline\":\n      borderColor.value = props.borderColor || xgBlue;\n      bgColor.value = props.bgColor || \"rgba(255,255,255,0)\";\n      fontColor.value = props.fontColor || xgBlue;\n      break;\n    case \"fullfill\":\n    default:\n      borderColor.value = props.borderColor || \"rgba(255,255,255,0)\";\n      bgColor.value = props.bgColor || xgBlue;\n      fontColor.value =\n        props.fontColor || __color.set(bgColor.value).opposite(true).toString();\n      break;\n  }\n  baseFontColor.value = fontColor.value;\n  baseBorderColor.value = borderColor.value;\n  baseBgColor.value = bgColor.value;\n  // 背景色-渐变\n  if (isBgColorGradient) {\n    baseBgColorStart.value = props.bgColorStart;\n    baseBgColorEnd.value = props.bgColorEnd;\n    bgColor.value = `linear-gradient(180deg, ${baseBgColorStart.value} 0%, ${baseBgColorEnd.value} 100%)`;\n  }\n}\n\nwatch(\n  () => props.stylePattern,\n  () => {\n    setStylePattern(props.stylePattern);\n  },\n  { immediate: true }\n);\n\nconst opacity = ref(props.disabled ? \"0.6\" : \"1\");\nconst cursor = ref(props.disabled ? \"not-allowed\" : \"pointer\");\n\nlet isMouseOver = false;\nconst darkenOver = 0.03;\nconst darkenClick = 0.06;\n\nconst mouseover = () => {\n  if (props.disabled) return;\n  isMouseOver = true;\n  if (props.stylePattern == \"transparent\") {\n    fontColor.value = __color\n      .set(baseFontColor.value)\n      .darken(darkenOver)\n      .toString();\n  }\n  borderColor.value = __color\n    .set(baseBorderColor.value)\n    .darken(darkenOver)\n    .toString();\n  // 背景色-渐变\n  if (isBgColorGradient) {\n    bgColor.value = `linear-gradient(180deg, ${baseBgColorEnd.value} 0%, ${baseBgColorStart.value} 100%)`;\n  } else {\n    bgColor.value = __color\n      .set(baseBgColor.value)\n      .darken(darkenOver)\n      .toString();\n  }\n};\n\nconst mouseleave = () => {\n  if (props.disabled) return;\n  isMouseOver = false;\n  fontColor.value = baseFontColor.value;\n  borderColor.value = baseBorderColor.value;\n  // 背景色-渐变\n  if (isBgColorGradient) {\n    bgColor.value = `linear-gradient(180deg, ${baseBgColorStart.value} 0%, ${baseBgColorEnd.value} 100%)`;\n  } else {\n    bgColor.value = baseBgColor.value;\n  }\n};\n\nconst asyncClickPending = ref(false);\n\nconst throttleClick = throttle((e: Event) => {\n  if (props.disabled || asyncClickPending.value) {\n    return;\n  }\n  if (props.stylePattern == \"transparent\") {\n    fontColor.value = __color\n      .set(baseFontColor.value)\n      .darken(darkenClick)\n      .toString();\n  }\n  borderColor.value = __color\n    .set(baseBorderColor.value)\n    .darken(darkenClick)\n    .toString();\n  // 背景色-渐变\n  if (isBgColorGradient) {\n    bgColor.value = `linear-gradient(180deg, ${baseBgColorStart.value} 0%, ${baseBgColorEnd.value} 100%)`;\n  } else {\n    bgColor.value = __color\n      .set(baseBgColor.value)\n      .darken(darkenClick)\n      .toString();\n  }\n  setTimeout(() => {\n    if (isMouseOver) {\n      mouseover();\n    } else {\n      mouseleave();\n    }\n  }, 150);\n  emits(\"click\", e);\n  emits(\"throttleClick\", e);\n  if (props.asyncClick) {\n    asyncClickPending.value = true;\n    props\n      .asyncClick()\n      .then(() => {\n        asyncClickPending.value = false;\n      })\n      .catch(() => {\n        asyncClickPending.value = false;\n      });\n  }\n}, 300);\n\ndefineExpose({\n  // 父组件ref子Button组件时：xxx.value.el.getBoundingClientRect()\n  el\n});\n</script>\n\n<template>\n  <div\n    ref=\"el\"\n    class=\"button\"\n    :style=\"[\n      `opacity: ${opacity}`,\n      `border: 1px solid ${borderColor}`,\n      `background: ${bgColor}`,\n      `color: ${fontColor}`,\n      `border-radius: ${props.borderRadius}`,\n      `width: ${props.width}`,\n      `height: ${props.height}`,\n      `line-height: ${props.height}`,\n      `font-size: ${props.fontSize}`,\n      `cursor: ${cursor}`,\n      `user-select: none`,\n      `box-sizing: border-box`,\n      `display: inline-flex`,\n      `justify-content: center`,\n      `align-items: center`,\n      `z-index: 0`\n    ]\"\n    @mouseover=\"mouseover\"\n    @mouseleave=\"mouseleave\"\n    @click=\"throttleClick\"\n  >\n    <label\n      class=\"label truncate\"\n      :style=\"{\n        padding: '0 ' + padding,\n        cursor: cursor,\n        display: 'inline-flex',\n        justifyContent: 'center',\n        alignItems: 'center',\n        fontWeight: props.fontWeight || 'normal'\n      }\"\n    >\n      <div\n        v-if=\"asyncClickPending\"\n        class=\"loading\"\n        style=\"margin-right: 6px\"\n      >\n        <Loading11 :color=\"fontColor\"></Loading11>\n      </div>\n      <slot>\n        <Icon\n          v-if=\"icon && iconPosition === 'left'\"\n          :icon=\"icon\"\n          :color=\"fontColor\"\n          :style=\"{\n            marginRight: '4px',\n            cursor: cursor\n          }\"\n        ></Icon>\n        <span\n          :style=\"{\n            cursor: cursor\n          }\"\n        >\n          {{ label }}\n        </span>\n        <Icon\n          v-if=\"icon && iconPosition === 'right'\"\n          :icon=\"icon\"\n          :color=\"fontColor\"\n          :style=\"{\n            marginLeft: '4px',\n            cursor: cursor\n          }\"\n        ></Icon>\n      </slot>\n    </label>\n  </div>\n</template>\n","import { VNode, h } from \"vue\";\n\nexport function vnodeToString(vnode: any) {\n  if (\n    [\"string\", \"boolean\", \"undefined\", \"null\", \"number\"].includes(typeof vnode)\n  ) {\n    return vnode;\n  }\n  const attrs = Object.keys(vnode.attrs || {})\n    .map((key) => `${key}=\"${vnode.attrs[key]}\"`)\n    .join(\" \");\n  const children = (vnode.children || []).map(vnodeToString).join(\"\");\n  return `<${vnode.tag} ${attrs}>${children}</${vnode.tag}>`;\n}\n\nexport const getElementAttrs = (node: HTMLElement) => {\n  const attrs: Record<string, string> = {};\n  if (node.attributes) {\n    for (let i = 0, atts = node.attributes, n = atts.length; i < n; i++) {\n      const att = atts[i];\n      if (att.nodeName && att.nodeValue) {\n        attrs[att.nodeName] = att.nodeValue;\n      }\n    }\n  }\n  // for (const attr of node.attributes) attrs[attr.name] = attr.value;\n  return attrs;\n};\n\nexport const elementsToVNodes = (\n  elements: HTMLElement | HTMLElement[]\n): VNode[] => {\n  if (!Array.isArray(elements)) {\n    elements = [elements];\n  }\n  return elements.map((element) => {\n    // 3 is #text, not sure how else to build this one\n    if (element.nodeType === 3) {\n      return h(\"span\", element.nodeValue || \"\");\n    }\n    if (element.childNodes && element.childNodes.length) {\n      return h(\n        element.tagName,\n        getElementAttrs(element),\n        elementsToVNodes(element.childNodes as unknown as HTMLElement[])\n      );\n    } else {\n      return h(element.tagName, getElementAttrs(element), element.innerHTML);\n    }\n  });\n};\n\nexport const stringToVNodes = (html: string) => {\n  const div = document.createElement(\"div\");\n  div.innerHTML = html;\n  return elementsToVNodes(div.childNodes as unknown as HTMLElement[]);\n};\n","<script setup lang=\"ts\">\nimport { watchEffect, ref, computed } from \"vue\";\nimport { atomReadStyle, atomWriteStyle } from \"@zyzgroup/core-web\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    global?: boolean;\n    color?: string;\n  }>(),\n  {\n    global: true,\n    color: \"rgba(0, 0, 0, 0.25)\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"open\"): void;\n  (event: \"close\"): void;\n}>();\n\nconst el = ref();\n\nconst visible = ref(false);\n\n// FOUC: flash of unstyled content 未样式化文本闪烁\nconst style = computed(\n  () =>\n    ({\n      // v-if=\"visible\" 使子元素重新创建 或 子元素 传不同 key 重新创建\n      display: visible.value ? \"block\" : \"none\",\n      // display: \"block\",\n      position: \"fixed\",\n      width: \"100%\",\n      height: \"100%\",\n      \"z-index\": \"99999\",\n      inset: \"0\",\n      \"background-color\": props.color,\n      overflow: \"hidden\"\n      // 'overscroll-behavior-y': 'contain' /* avoid scroll chaining */,\n      // 'scrollbar-gutter': 'stable',\n    } as Record<string, string>)\n);\n\n// fixScroll\nlet parentOverflow = \"\";\nif (props.global) {\n  parentOverflow =\n    atomReadStyle(document.documentElement, \"overflow\") || \"visible\";\n} else {\n  watchEffect(() => {\n    if (!el.value || parentOverflow) {\n      // not mounted yet, or the element was unmounted (e.g. by v-if)\n      return;\n    }\n    parentOverflow =\n      atomReadStyle(el.value.parentElement, \"overflow\") || \"visible\";\n    setOverflow();\n  });\n}\n\nfunction setOverflow() {\n  if (!parentOverflow) {\n    return;\n  }\n  atomWriteStyle(\n    props.global ? document.documentElement : el.value.parentElement,\n    \"overflow\",\n    visible.value ? \"hidden\" : parentOverflow\n  );\n}\n\nfunction open() {\n  visible.value = true;\n  setOverflow();\n  emits(\"open\");\n}\n\nfunction close() {\n  visible.value = false;\n  setOverflow();\n  emits(\"close\");\n}\n\ndefineExpose({ open, close });\n</script>\n\n<template>\n  <div\n    ref=\"el\"\n    class=\"overlay\"\n    :style=\"style\"\n  >\n    <slot></slot>\n  </div>\n</template>\n","<script setup lang=\"tsx\">\nimport {\n  StyleValue,\n  onMounted,\n  onUnmounted,\n  ref,\n  watch,\n  watchEffect\n} from \"vue\";\nimport { throttle } from \"@zyzgroup/core-common\";\nimport {\n  getInnerText,\n  useClipboard,\n  tap$,\n  DrawShape,\n  DrawType,\n  DrawContext,\n  requestAnimationFrameCycle\n} from \"@zyzgroup/core-web\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nexport type DisplayType = \"full\" | \"shrink\" | \"empty\";\n\nconst props = withDefaults(\n  defineProps<{\n    type?: DrawType;\n    shapes?: DrawShape[]; // const shapes = ref([]);\n    loop?: boolean;\n    enableCustomContext?: boolean;\n    supportCopyToClipboard?: boolean; // 是否支持复制文字\n    displayType?: DisplayType;\n    enableClickEffect?: boolean; // 点击时是否添加遮罩\n    clickedCoverColor?: string; // 点击时增加的遮罩颜色\n  }>(),\n  {\n    type: \"div\",\n    shapes: () => [],\n    loop: false,\n    enableCustomContext: false,\n    supportCopyToClipboard: false,\n    displayType: \"full\",\n    enableClickEffect: false,\n    clickedCoverColor: \"rgba(0,0,0,0.1)\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"mount\", box: { el: HTMLElement; rect: DOMRect }): void;\n  (event: \"resize\", box: { el: HTMLElement; rect: DOMRect }): void;\n  (\n    event: \"start\",\n    drawContext: DrawContext,\n    box: { el: HTMLElement; rect: DOMRect }\n  ): void;\n  (\n    event: \"frame\",\n    drawContext: DrawContext,\n    box: { el: HTMLElement; rect: DOMRect }\n  ): void;\n  (\n    event: \"end\",\n    drawContext: DrawContext,\n    box: { el: HTMLElement; rect: DOMRect }\n  ): void;\n  (event: \"copyToClipboardSuccess\", text: string): void;\n  (event: \"copyToClipboardError\", err: string): void;\n  (event: \"throttleClick\", e: Event): void;\n}>();\n\nconst r = ref();\n\nlet drawContext;\nlet resizeSubscription;\nlet tapSubscription;\nlet cancelAnimationFrame;\n\nlet isEmitMount = false;\n\nlet isShapesUpdated = true;\n// props.shapes 地址更新时，重新 emits(\"start\")\nwatch(\n  () => props.shapes,\n  (newVal, oldVal) => {\n    isShapesUpdated = newVal !== oldVal;\n    if (!drawContext) {\n      return;\n    }\n    if (!r.value) {\n      return;\n    }\n    if (isShapesUpdated) {\n      startAnimationFrame(drawContext, {\n        el: r.value,\n        rect: drawContext.rect\n      });\n    }\n  }\n);\n\nfunction startAnimationFrame(drawContext, box) {\n  cancelAnimationFrame?.();\n  emits(\"start\", drawContext, box);\n  cancelAnimationFrame = requestAnimationFrameCycle(() => {\n    emits(\"frame\", drawContext, box);\n    // if (props.shapes.length) {\n    // if (isShapesUpdated) {\n    drawContext.draw(...props.shapes);\n    // } else {\n    //   drawContext.draw(); // 传入空数组：保持原 shapes 以提高性能\n    // }\n    // } else {\n    //   drawContext.clear();\n    //   cancelAnimationFrame?.();\n    //   emits(\"end\", drawContext, box);\n    // }\n    isShapesUpdated = false;\n    return props.loop;\n  });\n}\n\nwatchEffect(() => {\n  if (!r.value) {\n    // not mounted yet, or the element was unmounted (e.g. by v-if)\n    return;\n  }\n\n  if (!drawContext) {\n    drawContext = new DrawContext(\n      r.value,\n      props.type,\n      props.enableCustomContext\n    );\n    resizeSubscription = drawContext.size$.subscribe((rect) => {\n      if (rect) {\n        const box = { el: r.value, rect };\n        if (!isEmitMount) {\n          isEmitMount = true;\n          emits(\"mount\", box);\n        }\n        emits(\"resize\", box);\n        startAnimationFrame(drawContext, box);\n      }\n    });\n  }\n\n  if (props.supportCopyToClipboard && !tapSubscription) {\n    tapSubscription = tap$(r.value).subscribe(() => {\n      const text = getInnerText(r.value);\n      useClipboard(text)\n        .then(() => {\n          emits(\"copyToClipboardSuccess\", text);\n        })\n        .catch((err) => {\n          emits(\"copyToClipboardError\", err.toString());\n        });\n    });\n  }\n});\n\nconst isClicked = ref(false);\nconst throttleClick = throttle((e: Event) => {\n  isClicked.value = true;\n  setTimeout(() => {\n    isClicked.value = false;\n    emits(\"throttleClick\", e);\n    //  const dataset = (e.target as HTMLElement).dataset;\n  }, 100);\n  // const dataset = (e.currentTarget as HTMLElement).dataset;\n}, 300);\n\nonMounted(() => {});\n\nonUnmounted(() => {\n  cancelAnimationFrame?.();\n  resizeSubscription?.unsubscribe();\n  tapSubscription?.unsubscribe();\n  drawContext?.destroy();\n});\n\n// 不推荐使用\ndefineExpose({\n  getElement: () => r.value,\n  getRect: () => r.value.getBoundingClientRect()\n});\n</script>\n\n<template>\n  <!-- v-bind=\"$attrs\" -->\n  <div\n    ref=\"r\"\n    class=\"box\"\n    :style=\"\n      Object.assign(\n        props.displayType == 'empty' ? {} : {\n          position: 'relative',\n          display: props.displayType == 'shrink' ? 'inline-block' : 'block',\n          width: props.displayType == 'shrink' ? 'auto' : '100%',\n          height: props.displayType == 'shrink' ? 'auto' : '100%',\n          boxSizing: 'border-box',\n          /* overflow: 'hidden', */\n          /* pointer-events: 'none', */\n          /* cursor: 'pointer' */\n        },\n        props.enableClickEffect\n          ? {\n            position: 'relative',\n            userSelect: 'none',\n          }\n          : {\n            userSelect: 'auto',\n          },\n      ) as StyleValue\n    \"\n    @click=\"throttleClick\"\n  >\n    <slot></slot>\n    <div\n      v-if=\"props.enableClickEffect\"\n      :style=\"[\n        `display: ${isClicked ? 'block' : 'none'}`,\n        `position: absolute`,\n        `top: 0`,\n        `left: 0`,\n        `width: 100%`,\n        `height: 100%`,\n        `background: ${props.clickedCoverColor}`,\n        `z-index: 1`\n      ]\"\n    ></div>\n  </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, reactive, StyleValue, watchEffect, watch } from \"vue\";\nimport { Timeline, Easing, hasClass } from \"@zyzgroup/core-web\";\nimport Overlay from \"./Overlay.vue\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Overlay, Box },\n  inheritAttrs: true\n});\n\n// 需传入 key 使子元素重新创建，从而使浏览器计算 popContentStyle inset 正确\nconst props = withDefaults(\n  defineProps<{\n    closeWhenClickOverlay?: boolean;\n    directionFrom?:\n      | \"bottom\"\n      | \"top\"\n      | \"left\"\n      | \"right\"\n      | \"center\"\n      | \"absolute\"\n      | \"full\";\n    dur?: number;\n    global?: boolean;\n    overlayBgColor?: string;\n    contentBgColor?: string;\n    fixed?: number; // fixed 单位px, 强制设置弹起高度或宽度, 如果不传，默认 slot width or height\n    popLeft?: string; // absolute left position\n    popTop?: string; // absolute top position\n  }>(),\n  {\n    closeWhenClickOverlay: true,\n    directionFrom: \"bottom\",\n    dur: 200,\n    global: true,\n    popLeft: \"0%\",\n    popTop: \"0%\",\n    contentBgColor: \"rgba(255,255,255,0)\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"open\"): void;\n  (event: \"close\"): void;\n  (event: \"resize\", rect: DOMRect): void;\n  (event: \"clickOverlay\"): void;\n}>();\n\nconst overlayRef = ref();\n\nconst popContentRef = ref();\nconst popContentStyle = reactive<{\n  // 特性属性\n  width?: string;\n  height?: string;\n  top?: string;\n  bottom?: string;\n  left?: string;\n  right?: string;\n  transform?: string;\n  // 通用属性\n  display: string;\n  position: string;\n  opacity?: String;\n  transformOrigin?: string;\n  willChange?: string; // 优化动画性能, 让浏览器提前为动画做准备，避免抖动或延迟\n  backgroundColor?: string;\n  inset?: string; // top right bottom left\n}>({\n  display: \"block\",\n  position: \"absolute\",\n  opacity: \"1\",\n  transformOrigin: \"center\",\n  willChange: \"transform\",\n  backgroundColor: props.contentBgColor\n});\n\nconst tl = new Timeline({ frameDuration: props.dur });\n\nconst boxStyle = reactive<{\n  width?: string;\n  height?: string;\n}>({});\n\n// Overlay open() close() 会改变 Box.resize\nlet boxWidth = 0;\nlet boxHeight = 0;\nconst boxResize = (box) => {\n  // box.rect.x 或 box.rect.y 变化时不触发\n  if (boxWidth != box.rect.width || boxHeight != box.rect.height) {\n    boxWidth = box.rect.width;\n    boxHeight = box.rect.height;\n    if (action == \"open\") {\n      computePopValue(isShow);\n      tl.play();\n    }\n  }\n};\n\nwatchEffect(() => {\n  switch (props.directionFrom) {\n    case \"left\":\n    case \"right\":\n      delete boxStyle.width;\n      boxStyle.height = \"100%\";\n      break;\n    case \"top\":\n    case \"bottom\":\n      boxStyle.width = \"100%\";\n      delete boxStyle.height;\n      break;\n    case \"full\":\n      boxStyle.width = \"100%\";\n      boxStyle.height = \"100%\";\n      break;\n    case \"center\":\n    case \"absolute\":\n      delete boxStyle.width;\n      delete boxStyle.height;\n      break;\n  }\n});\n\nwatch(\n  () => [props.popLeft, props.popTop],\n  () => {\n    if (props.directionFrom == \"absolute\") {\n      computePopValue(true);\n    }\n  }\n);\n\nconst popUnit = \"px\";\nlet update = false;\nlet lastPopValue;\n\nconst computePopValue = (_update = false) => {\n  tl.clear();\n\n  update = _update;\n\n  let diffValue;\n  switch (props.directionFrom) {\n    case \"left\":\n      diffValue = update\n        ? props.fixed\n          ? 0\n          : lastPopValue - boxWidth\n        : props.fixed\n        ? props.fixed\n        : boxWidth;\n      lastPopValue = props.fixed ? props.fixed : boxWidth;\n      popContentStyle.width = `${lastPopValue}${popUnit}`;\n      popContentStyle.height = \"100%\";\n      popContentStyle.top = \"0\";\n      popContentStyle.bottom = \"0\";\n      delete popContentStyle.right;\n      popContentStyle.left = `-${diffValue}${popUnit}`;\n      if (diffValue) {\n        tl.addTween(\n          {\n            left: diffValue\n          },\n          { left: 0 },\n          {\n            easeFunction: Easing.Quadratic.Out,\n            onUpdate(data) {\n              popContentStyle.left = `-${data.left}${popUnit}`;\n            },\n            onComplete\n          }\n        );\n      }\n      break;\n    case \"right\":\n      diffValue = update\n        ? props.fixed\n          ? 0\n          : lastPopValue - boxWidth\n        : props.fixed\n        ? props.fixed\n        : boxWidth;\n      lastPopValue = props.fixed ? props.fixed : boxWidth;\n      popContentStyle.width = `${lastPopValue}${popUnit}`;\n      popContentStyle.height = \"100%\";\n      popContentStyle.top = \"0\";\n      popContentStyle.bottom = \"0\";\n      delete popContentStyle.left;\n      popContentStyle.right = `-${diffValue}${popUnit}`;\n      if (diffValue) {\n        tl.addTween(\n          {\n            right: diffValue\n          },\n          { right: 0 },\n          {\n            easeFunction: Easing.Quadratic.Out,\n            onUpdate(data) {\n              popContentStyle.right = `-${data.right}${popUnit}`;\n            },\n            onComplete\n          }\n        );\n      }\n      break;\n    case \"top\":\n      diffValue = update\n        ? props.fixed\n          ? 0\n          : lastPopValue - boxHeight\n        : props.fixed\n        ? props.fixed\n        : boxHeight;\n      lastPopValue = props.fixed ? props.fixed : boxHeight;\n      popContentStyle.width = \"100%\";\n      popContentStyle.height = `${lastPopValue}${popUnit}`;\n      popContentStyle.left = \"0\";\n      popContentStyle.right = \"0\";\n      delete popContentStyle.bottom;\n      popContentStyle.top = `-${diffValue}${popUnit}`;\n      if (diffValue) {\n        tl.addTween(\n          {\n            top: diffValue\n          },\n          { top: 0 },\n          {\n            easeFunction: Easing.Quadratic.Out,\n            onUpdate(data) {\n              popContentStyle.top = `-${data.top}${popUnit}`;\n            },\n            onComplete\n          }\n        );\n      }\n      break;\n    case \"bottom\":\n      diffValue = update\n        ? props.fixed\n          ? 0\n          : lastPopValue - boxHeight\n        : props.fixed\n        ? props.fixed\n        : boxHeight;\n      lastPopValue = props.fixed ? props.fixed : boxHeight;\n      popContentStyle.width = \"100%\";\n      popContentStyle.height = `${lastPopValue}${popUnit}`;\n      popContentStyle.left = \"0\";\n      popContentStyle.right = \"0\";\n      delete popContentStyle.top;\n      popContentStyle.bottom = `-${diffValue}${popUnit}`;\n      if (diffValue) {\n        tl.addTween(\n          {\n            bottom: diffValue\n          },\n          { bottom: 0 },\n          {\n            easeFunction: Easing.Quadratic.Out,\n            onUpdate(data) {\n              popContentStyle.bottom = `-${data.bottom}${popUnit}`;\n            },\n            onComplete\n          }\n        );\n      }\n      break;\n    case \"center\":\n      if (!update) {\n        delete popContentStyle.width;\n        delete popContentStyle.height;\n        delete popContentStyle.right;\n        delete popContentStyle.bottom;\n        popContentStyle.left = \"50%\";\n        popContentStyle.top = \"50%\";\n        popContentStyle.transform = `translate(-50%, -50%) scale(${0.8})`;\n        popContentStyle.opacity = `0`;\n        tl.addTween(\n          {\n            scale: 0.8,\n            opacity: 0\n          },\n          {\n            scale: 1,\n            opacity: 1\n          },\n          {\n            easeFunction: Easing.Quadratic.Out,\n            onUpdate(data) {\n              popContentStyle.transform = `translate(-50%, -50%) scale(${data.scale})`;\n              popContentStyle.opacity = `${data.opacity}`;\n            },\n            onComplete\n          }\n        );\n      }\n      break;\n    case \"absolute\":\n      popContentStyle.width = boxWidth + popUnit;\n      popContentStyle.height = boxHeight + popUnit;\n      delete popContentStyle.right;\n      delete popContentStyle.bottom;\n      popContentStyle.left = props.popLeft;\n      popContentStyle.top = props.popTop;\n      onComplete();\n      break;\n    case \"full\":\n      popContentStyle.width = \"100%\";\n      popContentStyle.height = \"100%\";\n      delete popContentStyle.right;\n      delete popContentStyle.bottom;\n      popContentStyle.left = \"0%\";\n      popContentStyle.top = \"0%\";\n      onComplete();\n      break;\n  }\n\n  switch (props.directionFrom) {\n    case \"center\":\n      break;\n    default:\n      delete popContentStyle.transform;\n      popContentStyle.opacity = \"1\";\n      break;\n  }\n};\n\nlet action: \"open\" | \"close\" = \"open\";\nlet isShow = false;\n\nfunction onComplete() {\n  if (!update) {\n    switch (action) {\n      case \"open\":\n        isShow = true;\n        emits(\"open\");\n        break;\n      case \"close\":\n        isShow = false;\n        overlayRef.value?.close();\n        emits(\"close\");\n        break;\n    }\n  }\n  // resize 顺序很重要！\n  if (popContentRef.value) {\n    emits(\"resize\", popContentRef.value.getBoundingClientRect());\n  }\n}\n\nconst popOpen = () => {\n  switch (props.directionFrom) {\n    case \"full\":\n      computePopValue();\n      break;\n  }\n};\n\nfunction open() {\n  action = \"open\";\n  update = false;\n  overlayRef.value?.open();\n  // 等待 resize 执行 或 popOpen\n}\n\nfunction close() {\n  action = \"close\";\n  update = false;\n  switch (props.directionFrom) {\n    case \"absolute\":\n    case \"full\":\n      onComplete();\n      break;\n    default:\n      computePopValue();\n      tl.reverse();\n      break;\n  }\n}\n\nfunction clickOverlay(e: Event) {\n  // console.log(e.target);\n  // console.log(popRef.value.contains(e.target));\n  const className =\n    props.directionFrom == \"full\"\n      ? // ||\n        // (props.directionFrom == \"absolute\" &&\n        //   props.popLeft == \"0%\" &&\n        //   props.popTop == \"0%\") // 默认 boxWidth==100% boxHeight==100%\n        \"pop-content\"\n      : \"pop\";\n  if (e.target && hasClass(e.target as HTMLElement, className)) {\n    if (props.closeWhenClickOverlay) {\n      close();\n    }\n    emits(\"clickOverlay\");\n  }\n}\n\ndefineExpose({ open, close });\n</script>\n\n<template>\n  <Overlay\n    ref=\"overlayRef\"\n    class=\"pop\"\n    :global=\"props.global\"\n    :color=\"props.overlayBgColor\"\n    @open=\"popOpen\"\n    @click=\"clickOverlay\"\n  >\n    <div\n      ref=\"popContentRef\"\n      class=\"pop-content\"\n      :style=\"popContentStyle as StyleValue\"\n    >\n      <Box\n        displayType=\"shrink\"\n        :style=\"boxStyle\"\n        @resize=\"boxResize\"\n      >\n        <slot></slot>\n      </Box>\n    </div>\n  </Overlay>\n</template>\n","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport Pop from \"./Pop.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Pop },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    tel: string;\n  }>(),\n  {}\n);\n\nconst emits = defineEmits<{\n  (event: \"open\"): void;\n  (event: \"close\"): void;\n}>();\n\nconst el = ref();\n\nfunction open() {\n  el.value?.open();\n}\nfunction close() {\n  el.value?.close();\n}\n\ndefineExpose({ open, close });\n</script>\n\n<template>\n  <Pop\n    ref=\"el\"\n    directionFrom=\"bottom\"\n    :closeWhenClickOverlay=\"false\"\n    @open=\"() => emits('open')\"\n    @close=\"() => emits('close')\"\n  >\n    <div class=\"pop-tel\">\n      <div>{{ tel }}</div>\n      <a\n        class=\"pop-tel-call\"\n        :href=\"`tel:${tel}`\"\n        @click=\"close\"\n      >\n        呼叫\n      </a>\n      <div\n        class=\"pop-tel-cancel\"\n        @click=\"close\"\n      >\n        取消\n      </div>\n    </div>\n  </Pop>\n</template>\n\n<style scoped>\n.pop-tel {\n  background-color: #ffffff;\n  color: #333333;\n  border-top-left-radius: 8px;\n  border-top-right-radius: 8px;\n}\n.pop-tel > div,\n.pop-tel-call {\n  display: block;\n  height: 64px;\n  line-height: 64px;\n  font-size: 18px;\n  text-align: center;\n}\n.pop-tel-cancel,\n.pop-tel-call {\n  border-top: 1px solid #e6e6e6;\n}\n.pop-tel > div:nth-child(1) {\n  color: #999999;\n}\n.pop-tel-call {\n  color: #333333;\n  font-weight: bold;\n}\n.pop-tel-call,\n.pop-tel-call:link,\n.pop-tel-call:visited,\n.pop-tel-call:hover,\n.pop-tel-call:active {\n  /* 禁止长按链接与图片弹出菜单 */\n  -webkit-touch-callout: none;\n  text-decoration: none;\n}\n.pop-tel-call:focus {\n  outline: none;\n}\n</style>\n","<script setup lang=\"tsx\">\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: \"#666666\"\n  }\n);\n</script>\n\n<template>\n  <!-- origin viewBox : x y width height : 0 0 24 24 , 目前 viewBox 是为了切除四周多余空白 -->\n  <!-- 不设置 width height , 自适应父元素 -->\n  <svg\n    viewBox=\"6 6 12 12\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    preserveAspectRatio=\"none\"\n    fill=\"none\"\n    :style=\"{\n      display: 'block',\n      transformOrigin: 'center'\n    }\"\n  >\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M6.22785 6.22781C6.53159 5.92407 7.02405 5.92407 7.32779 6.22781L17.7722 16.6722C18.0759 16.976 18.0759 17.4685 17.7722 17.7722C17.4685 18.0759 16.976 18.0759 16.6723 17.7722L6.22785 7.32775C5.92411 7.02401 5.92411 6.53155 6.22785 6.22781Z\"\n      :fill=\"props.color\"\n    />\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M17.7722 6.22781C18.0759 6.53155 18.0759 7.02401 17.7722 7.32775L7.32775 17.7722C7.02401 18.0759 6.53155 18.0759 6.22781 17.7722C5.92406 17.4685 5.92407 16.976 6.22781 16.6722L16.6722 6.22781C16.976 5.92406 17.4684 5.92406 17.7722 6.22781Z\"\n      :fill=\"props.color\"\n    />\n  </svg>\n</template>\n","<script setup lang=\"tsx\">\nimport { computed } from \"vue\";\nimport { __color, getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    colorStart?: string;\n    colorEnd?: string;\n  }>(),\n  {\n    colorStart: getCSSVar(\"--xg-red\", \"#fa503c\"),\n    colorEnd: getCSSVar(\"--xg-red-light\", \"#fa8c78\")\n  }\n);\n\nconst opposite = computed(() =>\n  __color.set(props.colorStart).opposite(true).toString()\n);\n</script>\n\n<template>\n  <!-- origin viewBox : x y width height : 0 0 24 24 , 目前 viewBox 是为了切除四周多余空白 -->\n  <!-- 不设置 width height , 自适应父元素 -->\n  <svg\n    viewBox=\"4 4 16 16\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n    :style=\"{\n      display: 'block',\n      transformOrigin: 'center'\n    }\"\n  >\n    <defs>\n      <!-- 对于同一个id，浏览器可能会渲染优化，导致后面更新的linearGradient不起作用 -->\n      <linearGradient\n        :id=\"`circle_bg_${colorStart}_${colorEnd}`\"\n        x1=\"12\"\n        y1=\"4\"\n        x2=\"12\"\n        y2=\"16\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop\n          offset=\"0\"\n          :stop-color=\"colorStart\"\n        />\n        <stop\n          offset=\"1\"\n          :stop-color=\"colorEnd\"\n        />\n      </linearGradient>\n      <!-- <pattern\n        :id=\"`charge_line_${colorStart}`\"\n        patternContentUnits=\"objectBoundingBox\"\n        width=\"1\"\n        height=\"1\"\n      >\n        <use\n          xlink:href=\"#image0_10315_2409\"\n          transform=\"scale(0.01)\"\n        />\n      </pattern>\n      <image\n        id=\"image0_10315_2409\"\n        width=\"100\"\n        height=\"100\"\n        preserveAspectRatio=\"none\"\n        xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAArJJREFUeF7tnVFSg1AMRe2PK3CJLsslugJ/dBgHpyJUuORCQo7fzeVxDslri+LtiZ9UBG6pVsNinhCS7CJACEKSEUi2HDoEIckIJFsOHVJVyOvHy+eRa397fm95saw+6aOF3MvvJKeEkEFOFyllhHSRslrIkfvHcKylEXn1TkkrZLwA5sRcWUp6IUvdclUpJYTMSUHI0ZvI5HjT0YWQk4V06ZIyIwshCTpiuoQOY4sOSXbhIQQhOgFGls7OUokQC1Y9FCE6O0slQixY9VCE6OwslQixYNVDEaKzs1QixIJVD0WIzs5SiRALVj0UITo7SyVCLFj1UITo7CyVCLFg1UMRorOzVCLEglUPRYjOzlKJEAtWPRQhOjtLJUIsWPVQhOjsLJUIsWDVQxGis7NUIsSCVQ9FiM7OUokQC1Y9FCE6O0slQixY9VCE6OwslQixYNVDEaKzs1QixIJVD0WIzs5SiRALVj30aCHT4+krX/80I/7GcIZypIgxfu2DDhByJ8QhAiHiXHHKGJZEh2wQ80jGWpAbDvfwpYyshYelHS1itNReyFx3nCVjkIKQyeNvz5TRXki27kBIsu5ACEL2vTmM/uokOm/f2X1Xt93UM8pAyN0lffa7q/afQ+iQgAEbCTEyK+DUfiJa7iFZZbTdQxAS1NNRIKNygk7rVwwja8O9CoeAaWY7IZm7o+UegpDAPo+AGZEReEp/ohhZyf49Xysh2buj3R6CkOBhuxfo3vrg05mNazOyMt6unTPSVkiWr9tLfzAcFq+MnSrdUW5TV4RUknEJIcNJLI2fajJKCpnrki3vfrLuHSVv4Y6LVn9TPbuMsh2ytUsqiCjdIfcj6r9uqSSjdIds2TcqvbbUB8NKYNW1IkQlZ6pDiAmsGosQlZypDiEmsGosQlRypjqEmMCqsV9WddB0Dtx5kgAAAABJRU5ErkJggg==\"\n      /> -->\n    </defs>\n    <!-- <rect\n      width=\"50\"\n      height=\"50\"\n      :fill=\"`url(#charge_line_${colorStart})`\"\n    /> -->\n    <circle\n      cx=\"12\"\n      cy=\"12\"\n      r=\"8\"\n      :fill=\"`url(#circle_bg_${colorStart}_${colorEnd})`\"\n    />\n    <!-- 竖线 -->\n    <path\n      d=\"M11.4666 8.80006C11.4666 8.50551 11.7053 8.26672 11.9999 8.26672C12.2944 8.26672 12.5332 8.50551 12.5332 8.80006V13.0667C12.5332 13.3613 12.2944 13.6001 11.9999 13.6001C11.7053 13.6001 11.4666 13.3613 11.4666 13.0667V8.80006Z\"\n      :fill=\"opposite\"\n    />\n    <!-- 小圆点 -->\n    <path\n      d=\"M11.4666 15.2001C11.4666 14.9055 11.7053 14.6667 11.9999 14.6667C12.2944 14.6667 12.5332 14.9055 12.5332 15.2001C12.5332 15.4946 12.2944 15.7334 11.9999 15.7334C11.7053 15.7334 11.4666 15.4946 11.4666 15.2001Z\"\n      :fill=\"opposite\"\n    />\n  </svg>\n</template>\n","<script setup lang=\"tsx\">\nimport { onMounted, onUnmounted, ref, watchEffect } from \"vue\";\nimport {\n  ElementEventBusController,\n  getInnerText,\n  useClipboard,\n  useElementEventBus\n} from \"@zyzgroup/core-web\";\n\nexport type ContainerType = \"block\" | \"shrink\" | \"full\";\n\n/// 效果触发时机\nexport type EffectTriggerTiming =\n  | \"manual\"\n  | \"mouseMove\"\n  | \"click\"\n  | \"immediate\";\n\n/// 效果状态\nexport type EffectStatus = \"start\" | \"end\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    type?: ContainerType;\n    /// 效果触发时机\n    effectTriggerTiming?: EffectTriggerTiming;\n    /// 是否支持复制文字\n    supportCopyText?: boolean;\n  }>(),\n  {\n    type: \"block\",\n    effectTriggerTiming: \"manual\",\n    supportCopyText: false\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"ready\", controller: ElementEventBusController): void;\n  (event: \"update\", controller: ElementEventBusController): void;\n  (event: \"clipboard_success\", text: string): void;\n  (event: \"clipboard_error\", text: string): void;\n  /// 效果\n  (event: \"start\"): void;\n  (event: \"end\"): void;\n}>();\n\nlet effectStatus: EffectStatus = \"start\";\nconst start = () => {\n  effectStatus = \"start\";\n  emits(\"start\");\n};\nconst end = () => {\n  effectStatus = \"end\";\n  emits(\"end\");\n};\nconst next = () => {\n  effectStatus == \"start\" ? end() : start();\n};\n\nconst r = ref();\n\nlet controller: ElementEventBusController;\n\nlet getControllerResolve: (\n  value: ElementEventBusController | PromiseLike<ElementEventBusController>\n) => void;\n\nlet isEmitReady = false;\n\nwatchEffect(() => {\n  if (!r.value) {\n    // not mounted yet, or the element was unmounted (e.g. by v-if)\n    return;\n  }\n  if (controller) {\n    return;\n  }\n\n  controller = useElementEventBus(r.value);\n\n  controller.eb.on(\"resize\", () => {\n    if (isEmitReady) {\n      emits(\"update\", controller);\n    }\n  });\n\n  controller.eb.on(\"mouseEnter\", () => {\n    if (props.effectTriggerTiming == \"mouseMove\") {\n      next();\n    }\n  });\n\n  controller.eb.on(\"mouseLeave\", () => {\n    if (props.effectTriggerTiming == \"mouseMove\") {\n      next();\n    }\n  });\n\n  controller.eb.on(\"tap\", () => {\n    if (props.effectTriggerTiming == \"click\") {\n      next();\n    }\n    if (props.supportCopyText) {\n      const text = getInnerText(r.value);\n      useClipboard(text)\n        .then(() => {\n          emits(\"clipboard_success\", text);\n        })\n        .catch((err) => {\n          emits(\"clipboard_error\", err.toString());\n        });\n    }\n  });\n\n  if (props.effectTriggerTiming !== \"manual\") {\n    start();\n  }\n\n  if (props.effectTriggerTiming == \"immediate\") {\n    next();\n  }\n\n  controller.start().then(() => {\n    getControllerResolve?.(controller);\n    emits(\"ready\", controller);\n    isEmitReady = true;\n  });\n});\n\nonMounted(() => {});\n\nonUnmounted(() => {\n  controller?.end();\n});\n\n// 不推荐使用，只推荐使用 @ready + @update\ndefineExpose({\n  getController: () =>\n    new Promise<ElementEventBusController>((resolve) => {\n      if (controller) {\n        return resolve(controller);\n      }\n      getControllerResolve = resolve;\n    }),\n  getElement: () => r.value,\n  getRect: () => r.value.getBoundingClientRect()\n});\n</script>\n\n<template>\n  <div\n    ref=\"r\"\n    class=\"container\"\n    :style=\"{\n      position: 'relative',\n      boxSizing: 'border-box',\n      display: props.type == 'shrink' ? 'inline-block' : 'block',\n      width: props.type == 'full' ? '100%' : 'auto',\n      height: props.type == 'full' ? '100%' : 'auto'\n      /* overflow: 'hidden', */\n      /* pointer-events: none; */\n    }\"\n    v-bind=\"$attrs\"\n  >\n    <slot></slot>\n  </div>\n</template>\n","<script setup lang=\"tsx\">\nimport { ref } from \"vue\";\nimport Container from \"../Container.vue\";\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: \"#e6e6e6\"\n  }\n);\n\nconst width = ref(0);\nconst height = ref(0);\n\nfunction ready(controller) {\n  width.value = controller.rect.width;\n  height.value = controller.rect.height;\n}\n</script>\n\n<template>\n  <Container\n    type=\"full\"\n    @ready=\"ready\"\n  >\n    <!-- 不设置 width height , 自适应父元素 -->\n    <svg\n      :viewBox=\"`0 0 ${width} ${height}`\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      preserveAspectRatio=\"none\"\n      fill=\"none\"\n      :style=\"{\n        display: 'block',\n        transformOrigin: 'center'\n      }\"\n    >\n      <ellipse\n        :cx=\"width * 0.5\"\n        :cy=\"height * 0.5\"\n        :rx=\"width * 0.5\"\n        :ry=\"height * 0.5\"\n        :fill=\"props.color\"\n      />\n    </svg>\n  </Container>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, watch } from \"vue\";\nimport { getCSSVar } from \"@zyzgroup/core-web\";\nimport Pop from \"../pop/Pop.vue\";\nimport Button, { ButtonModeType } from \"../form/Button.vue\";\n// import Icon from \"../form/Icon.vue\";\nimport SVGClose from \"../svg/SVGClose.vue\";\nimport SVGWarn from \"../svg/SVGWarn.vue\";\nimport SVGEllipse from \"../svg/SVGEllipse.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Pop, Button, SVGClose, SVGWarn, SVGEllipse },\n  inheritAttrs: true\n});\n\nexport type DialogStylePatternType =\n  | \"fullfill\"\n  | \"transparent\"\n  | \"icon-warn-red\"\n  | \"icon-warn-blue\";\n\nconst props = withDefaults(\n  defineProps<{\n    title?: string;\n    content?: string;\n    showClose?: boolean;\n    cancelText?: string;\n    confirmText?: string;\n    closeWhenClickOverlay?: boolean;\n    dur?: number;\n    minWidth?: string;\n    maxWidth?: string;\n    overlayBgColor?: string;\n    stylePattern?: DialogStylePatternType;\n    borderRadius?: string; // border-radius:x/y\n  }>(),\n  {\n    title: \"\",\n    content: \"\",\n    showClose: false,\n    cancelText: \"\",\n    confirmText: \"\",\n    closeWhenClickOverlay: false,\n    dur: 200,\n    minWidth: \"280px\",\n    maxWidth: \"320px\",\n    stylePattern: \"fullfill\",\n    borderRadius: \"12px\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"open\"): void;\n  (event: \"close\"): void;\n  (event: \"cancel\"): void;\n  (event: \"confirm\"): void;\n}>();\n\nconst popRef = ref();\n\nconst stylePattern = ref<DialogStylePatternType>(props.stylePattern);\nconst cancelButtonStylePattern = ref<ButtonModeType>(\"transparent\");\nconst confirmButtonStylePattern = ref<ButtonModeType>(\"transparent\");\n\nconst showTopIcon = ref(false);\nconst colorStart = ref(\"\");\nconst colorEnd = ref(\"\");\n\nconst isBtnsVertical = ref(false);\n\nfunction setStylePattern(s: DialogStylePatternType) {\n  stylePattern.value = s;\n  switch (s) {\n    case \"fullfill\":\n      cancelButtonStylePattern.value = \"fullfill\";\n      confirmButtonStylePattern.value = \"fullfill\";\n      showTopIcon.value = false;\n      colorStart.value = \"\";\n      colorEnd.value = \"\";\n      isBtnsVertical.value = false;\n      break;\n    case \"transparent\":\n      cancelButtonStylePattern.value = \"transparent\";\n      confirmButtonStylePattern.value = \"transparent\";\n      showTopIcon.value = false;\n      colorStart.value = \"\";\n      colorEnd.value = \"\";\n      isBtnsVertical.value = false;\n      break;\n    case \"icon-warn-red\":\n      cancelButtonStylePattern.value = \"transparent\";\n      confirmButtonStylePattern.value = \"fullfill\";\n      showTopIcon.value = true;\n      colorStart.value = getCSSVar(\"--xg-red\", \"#fa503c\");\n      colorEnd.value = getCSSVar(\"--xg-red-light\", \"#fa8c78\");\n      isBtnsVertical.value = true;\n      break;\n    case \"icon-warn-blue\":\n      cancelButtonStylePattern.value = \"transparent\";\n      confirmButtonStylePattern.value = \"fullfill\";\n      showTopIcon.value = true;\n      colorStart.value = getCSSVar(\"--xg-blue\", \"#5a82f0\");\n      colorEnd.value = getCSSVar(\"--xg-blue-light\", \"#66b3ff\");\n      isBtnsVertical.value = true;\n      break;\n  }\n}\n\nwatch(\n  () => props.stylePattern,\n  () => {\n    setStylePattern(props.stylePattern);\n  },\n  { immediate: true }\n);\n\nconst popOpen = () => {\n  emits(\"open\");\n};\nconst popClose = () => {\n  emits(\"close\");\n  switch (action) {\n    case \"close\":\n      emits(\"cancel\");\n      break;\n    case \"confirm\":\n      emits(\"confirm\");\n      break;\n  }\n};\n\nlet action: \"open\" | \"close\" | \"confirm\";\n\nfunction open() {\n  action = \"open\";\n  popRef.value?.open();\n}\n\nfunction close() {\n  action = \"close\";\n  popRef.value?.close();\n}\n\nfunction confirm() {\n  action = \"confirm\";\n  popRef.value?.close();\n}\n\ndefineExpose({\n  open,\n  close\n});\n</script>\n\n<template>\n  <Pop\n    ref=\"popRef\"\n    directionFrom=\"center\"\n    :closeWhenClickOverlay=\"props.closeWhenClickOverlay\"\n    :dur=\"props.dur\"\n    :overlayBgColor=\"props.overlayBgColor\"\n    @open=\"popOpen\"\n    @close=\"popClose\"\n  >\n    <div class=\"dialog-parent\">\n      <div\n        class=\"dialog\"\n        :style=\"{ minWidth: props.minWidth, maxWidth: props.maxWidth }\"\n      >\n        <!-- 头部提示图片 -->\n        <div\n          class=\"top-icon\"\n          v-if=\"showTopIcon\"\n        >\n          <div class=\"top-icon-warn\">\n            <SVGWarn\n              :colorStart=\"colorStart\"\n              :colorEnd=\"colorEnd\"\n            ></SVGWarn>\n          </div>\n          <div class=\"top-icon-warn-shadow\"><SVGEllipse></SVGEllipse></div>\n        </div>\n        <!-- 主体 -->\n        <div\n          class=\"dialog-inner\"\n          :style=\"{\n            paddingTop: showTopIcon ? '24px' : '0px',\n            borderRadius: props.borderRadius\n          }\"\n        >\n          <!-- 标题 -->\n          <div\n            class=\"title\"\n            v-if=\"title || showClose\"\n          >\n            <div\n              class=\"title-inner\"\n              v-if=\"title\"\n            >\n              {{ title }}\n            </div>\n            <div\n              v-if=\"showClose\"\n              class=\"close\"\n              @click=\"close\"\n            >\n              <!-- <Icon icon=\"ic:baseline-close\" color=\"#cccccc\"></Icon> -->\n              <div><SVGClose></SVGClose></div>\n            </div>\n          </div>\n          <!-- 内容 -->\n          <div class=\"custom-content\">\n            <slot>\n              <div class=\"custom-content-default\">{{ content }}</div>\n            </slot>\n          </div>\n          <!-- 按钮 -->\n          <div\n            class=\"btns\"\n            :class=\"[stylePattern, isBtnsVertical ? 'vertical' : '']\"\n            v-if=\"cancelText || confirmText\"\n          >\n            <Button\n              v-if=\"cancelText\"\n              class=\"btn\"\n              fontColor=\"#333333\"\n              :stylePattern=\"cancelButtonStylePattern\"\n              :borderRadius=\"showTopIcon ? '44px' : '0'\"\n              :borderColor=\"showTopIcon ? '#cccccc' : ''\"\n              :bgColor=\"\n                cancelButtonStylePattern == 'transparent'\n                  ? '#ffffff'\n                  : '#f5f5f5'\n              \"\n              @click=\"close\"\n            >\n              {{ cancelText }}\n            </Button>\n            <Button\n              v-if=\"confirmText\"\n              class=\"btn\"\n              :stylePattern=\"confirmButtonStylePattern\"\n              :borderRadius=\"showTopIcon ? '44px' : '0'\"\n              :bgColor=\"\n                confirmButtonStylePattern == 'transparent' ? '#ffffff' : ''\n              \"\n              :bgColorStart=\"colorStart\"\n              :bgColorEnd=\"colorEnd\"\n              :fontWeight=\"\n                confirmButtonStylePattern == 'transparent' ? 'bold' : ''\n              \"\n              @click=\"confirm\"\n            >\n              {{ confirmText }}\n            </Button>\n          </div>\n        </div>\n      </div>\n    </div>\n  </Pop>\n</template>\n\n<style scoped>\n.dialog-parent {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n.dialog {\n  position: relative;\n}\n.top-icon {\n  position: absolute;\n  top: 0;\n  left: 50%;\n  transform: translate(-50%, -50%);\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n}\n.top-icon-warn {\n  width: 60px;\n  height: 60px;\n}\n.top-icon-warn-shadow {\n  width: 40px;\n  height: 4px;\n  margin-top: 4px;\n}\n.dialog-inner {\n  background-color: #ffffff;\n  overflow: hidden;\n}\n.title {\n  position: relative;\n  font-size: 20px;\n  margin-top: 20px;\n  color: #333333;\n}\n.title-inner {\n  padding: 0 42px;\n  text-align: center;\n  font-weight: bold;\n}\n.close {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 32px;\n  height: 100%;\n  text-align: center;\n  display: flex;\n  justify-content: left;\n  align-items: center;\n  cursor: pointer;\n}\n.close > div {\n  width: 12px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n.custom-content {\n  font-size: 16px;\n  color: #666666;\n  word-break: break-all;\n  text-align: center;\n}\n.custom-content-default {\n  padding: 15px 20px 20px;\n}\n.btns {\n  display: flex;\n  justify-content: center;\n}\n.btns.vertical {\n  flex-direction: column;\n}\n.btns.vertical > .btn {\n  margin-left: 20px;\n  margin-right: 20px;\n}\n.btns.vertical > .btn:nth-child(1) {\n  order: 2;\n  margin-top: 10px;\n  margin-bottom: 20px;\n}\n.btns.vertical > .btn:nth-child(2) {\n  order: 1;\n}\n.btns.transparent {\n  border-top: 1px solid #cccccc;\n}\n.btns.transparent > .btn + .btn {\n  border-left: 1px solid #cccccc !important;\n}\n.btn {\n  flex: 1 1 auto;\n  border-radius: 0;\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { ref } from \"vue\";\nimport Dialog from \"./Dialog.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Dialog },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    content?: string;\n    during?: number;\n    closeWhenClickOverlay?: boolean;\n    dur?: number;\n  }>(),\n  {\n    content: \"\",\n    during: 1500,\n    closeWhenClickOverlay: false,\n    dur: 200\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"open\"): void;\n  (event: \"close\"): void;\n}>();\n\nconst dialog = ref();\n\nfunction open() {\n  dialog.value.open();\n  setTimeout(() => {\n    close();\n  }, props.during);\n}\n\nfunction close() {\n  dialog.value.close();\n}\n\ndefineExpose({\n  open,\n  close\n});\n</script>\n\n<template>\n  <Dialog\n    ref=\"dialog\"\n    :showConfirm=\"false\"\n    :showTitle=\"false\"\n    :closeWhenClickOverlay=\"props.closeWhenClickOverlay\"\n    :dur=\"props.dur\"\n    overlayBgColor=\"transparent\"\n    minWidth=\"160px\"\n    borderRadius=\"8px\"\n    @open=\"() => emits('open')\"\n    @close=\"() => emits('close')\"\n  >\n    <div class=\"toast\">\n      <div class=\"content\">\n        {{ content }}\n      </div>\n    </div>\n  </Dialog>\n</template>\n\n<style scoped>\n.toast {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  background-color: #333333;\n  color: #cccccc;\n  padding: 1em 1em;\n}\n.content {\n  font-size: 1em;\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: getCSSVar(\"--xg-blue\")\n  }\n);\n</script>\n\n<template>\n  <div class=\"loading-8\">\n    <svg viewBox=\"25 25 50 50\">\n      <circle\n        cx=\"50\"\n        cy=\"50\"\n        r=\"20\"\n        :style=\"['stroke: ' + props.color]\"\n      />\n    </svg>\n  </div>\n</template>\n\n<style scoped>\n.loading-8 {\n  position: relative;\n  display: inline-flex;\n  justify-content: center;\n  align-items: center;\n  width: 100%;\n  height: 100%;\n}\n.loading-8 svg {\n  transform-origin: center;\n  animation: rotate 2s linear infinite;\n  width: 50%;\n  aspect-ratio: 1 / 1;\n}\n.loading-8 circle {\n  fill: none;\n  stroke-width: 3;\n  stroke-dasharray: 1, 200;\n  stroke-dashoffset: 0;\n  stroke-linecap: round;\n  animation: dash 1.5s ease-in-out infinite;\n}\n\n@keyframes rotate {\n  100% {\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes dash {\n  0% {\n    stroke-dasharray: 1, 200;\n    stroke-dashoffset: 0;\n  }\n  50% {\n    stroke-dasharray: 90, 200;\n    stroke-dashoffset: -35px;\n  }\n  100% {\n    stroke-dashoffset: -125px;\n  }\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { ref } from \"vue\";\nimport Dialog from \"./Dialog.vue\";\nimport Loading8 from \"../loading/Loading8.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Dialog, Loading8 },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    content?: string;\n    closeWhenClickOverlay?: boolean;\n    dur?: number;\n  }>(),\n  {\n    content: \"\",\n    closeWhenClickOverlay: false,\n    dur: 200\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"open\"): void;\n  (event: \"close\"): void;\n}>();\n\nconst dialog = ref();\n\nfunction open() {\n  dialog.value.open();\n}\n\nfunction close() {\n  dialog.value.close();\n}\n\ndefineExpose({\n  open,\n  close\n});\n</script>\n\n<template>\n  <Dialog\n    ref=\"dialog\"\n    :showConfirm=\"false\"\n    :showTitle=\"false\"\n    :closeWhenClickOverlay=\"props.closeWhenClickOverlay\"\n    :dur=\"props.dur\"\n    @open=\"() => emits('open')\"\n    @close=\"() => emits('close')\"\n  >\n    <div class=\"loading\">\n      <div class=\"icon\">\n        <slot>\n          <div style=\"width: 8em\"><Loading8></Loading8></div>\n        </slot>\n      </div>\n      <div\n        v-if=\"content\"\n        class=\"content\"\n      >\n        {{ content }}\n      </div>\n    </div>\n  </Dialog>\n</template>\n\n<style scoped>\n.loading {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  padding: 1em 1em;\n}\n.icon {\n  padding: 2em 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n.content {\n  font-size: 1em;\n  margin-top: -1em;\n  margin-bottom: 1em;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport SVGWarn from \"../svg/SVGWarn.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { SVGWarn },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    type?: \"none\" | \"warn\";\n    text?: string;\n    color?: string;\n  }>(),\n  {\n    type: \"none\",\n    text: \"\",\n    color: \"#333333\"\n  }\n);\n\nconst isNotTypeNone = computed(() => props.type !== \"none\");\nconst isTypeWarn = computed(() => props.type == \"warn\");\n\ndefineExpose({});\n</script>\n\n<template>\n  <div\n    class=\"text\"\n    :style=\"{\n      color: props.color\n    }\"\n  >\n    <div class=\"icon\">\n      <slot name=\"icon\">\n        <SVGWarn v-if=\"isTypeWarn\"></SVGWarn>\n      </slot>\n    </div>\n    <div\n      class=\"ellipsis\"\n      :style=\"{ marginLeft: isNotTypeNone ? '0.3em' : '0' }\"\n    >\n      <slot>{{ props.text }}</slot>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.text {\n  display: flex;\n  justify-content: flex-start;\n  align-items: center;\n  font-size: 1em;\n  line-height: 1;\n  max-width: 100%;\n}\n.icon {\n  font-size: 0;\n  flex: 0 0 auto;\n}\n.ellipsis {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  word-wrap: normal;\n  word-break: break-all;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { onMounted, onUnmounted, ref, computed } from \"vue\";\nimport { Validator } from \"@zyzgroup/core-common\";\nimport Text from \"./Text.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Text },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    placeholder?: string;\n    placeholderType?: \"normal\" | \"underline\" | \"jump\" | \"jump-each\";\n    required?: boolean;\n\n    showError?: boolean;\n    validator?: Validator;\n    defaultValue?: string;\n\n    height?: string;\n    type?: string;\n    borderColor?: string;\n    focusColor?: string;\n    errorColor?: string;\n    placeholderColor?: string;\n    fontColor?: string;\n    borderRadius?: string;\n    duration?: number;\n  }>(),\n  {\n    placeholder: \"\",\n    placeholderType: \"normal\",\n    required: false,\n    showError: true,\n\n    height: \"44px\",\n    type: \"text\",\n    borderColor: \"#cccccc\",\n    focusColor: \"#5a82f0\",\n    errorColor: \"#ff5050\",\n    placeholderColor: \"#8f8f8f\",\n    fontColor: \"#333333\",\n    borderRadius: \"4px\",\n    duration: 500\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"focus\"): void;\n  (event: \"yz-focus\"): void;\n  (event: \"blur\"): void;\n  (event: \"yz-blur\"): void;\n  (event: \"input\", text: string): void;\n  (event: \"yz-input\", text: string): void;\n  (event: \"error\", text: string): void;\n  (event: \"yz-error\", text: string): void;\n}>();\n\nconst isTypeNormal = computed(() => props.placeholderType == \"normal\");\nconst isTypeUnderline = computed(() => props.placeholderType == \"underline\");\nconst isTypeJump = computed(() => props.placeholderType == \"jump\");\nconst isTypeJumpEach = computed(() => props.placeholderType == \"jump-each\");\n\nconst placeholders = props.placeholder.split(\"\");\nconst placeholderJumpEachDuration = props.duration / placeholders.length;\n\nconst inputEl = ref();\n\nconst isFocus = ref(false);\nconst errorText = ref(\"\");\nconst inputText = ref(props.defaultValue || \"\");\n\nfunction focus() {\n  isFocus.value = true;\n  emits(\"focus\");\n  emits(\"yz-focus\");\n}\n\nfunction blur() {\n  isFocus.value = false;\n  emits(\"blur\");\n  emits(\"yz-blur\");\n  validate();\n}\n\nfunction input(e: Event) {\n  inputText.value = (e.target as HTMLInputElement).value;\n  validate();\n}\n\nfunction validate() {\n  if (inputText.value && props.validator) {\n    const result = props.validator(inputText.value);\n    if (!result.valid) {\n      errorText.value = result.errors[0];\n      emits(\"error\", errorText.value);\n      emits(\"yz-error\", errorText.value);\n      return;\n    }\n  }\n  errorText.value = \"\";\n  if (inputText.value) {\n    emits(\"input\", inputText.value);\n    emits(\"yz-input\", inputText.value);\n  }\n}\n\nonMounted(() => {\n  if (props.defaultValue) {\n    inputEl.value.value = props.defaultValue;\n  }\n});\n\nonUnmounted(() => {});\n\ndefineExpose({});\n</script>\n\n<template>\n  <div class=\"input\">\n    <!-- error prompt top -->\n    <div\n      v-if=\"props.showError && errorText && !isTypeUnderline\"\n      class=\"error-prompt-top\"\n    >\n      <Text\n        type=\"warn\"\n        :color=\"props.errorColor\"\n      >\n        {{ errorText }}\n      </Text>\n    </div>\n    <!-- input wrap -->\n    <div\n      class=\"input-wrap\"\n      :class=\"isFocus || inputText ? 'focus' : ''\"\n    >\n      <!-- placeholder -->\n      <div\n        class=\"placeholder\"\n        :style=\"{\n          lineHeight: isFocus || inputText ? 1.3 : props.height,\n          color: props.placeholderColor,\n          transition: isTypeNormal ? '' : props.duration + 'ms',\n          transform: isTypeNormal\n            ? ''\n            : isFocus || inputText\n            ? `translateY(-100%)`\n            : 'none'\n        }\"\n      >\n        <!-- placeholder normal -->\n        <div\n          v-if=\"!errorText && isTypeNormal && !isFocus && !inputText\"\n          :style=\"{\n            paddingLeft: '0.5em'\n          }\"\n        >\n          {{ props.placeholder }}\n        </div>\n        <!-- placeholder jump -->\n        <div v-if=\"!errorText && isTypeJump\">\n          {{ props.placeholder }}\n        </div>\n        <!-- placeholder jump-each -->\n        <span\n          v-if=\"!errorText && isTypeJumpEach\"\n          v-for=\"(item, index) in placeholders\"\n          :key=\"index\"\n          :style=\"{\n            transition:\n              props.duration + 'ms cubic-bezier(0.68, -0.55, 0.265, 1.55)',\n            transitionDelay: `${placeholderJumpEachDuration * index}ms`,\n            transform:\n              isFocus || inputText\n                ? `translateX(${100 * index}%) translateY(-100%)`\n                : `translateX(${100 * index}%)`\n          }\"\n          class=\"single\"\n        >\n          {{ item }}\n        </span>\n      </div>\n      <input\n        ref=\"inputEl\"\n        class=\"input-raw\"\n        :type=\"props.type\"\n        :required=\"props.required\"\n        autocomplete=\"off\"\n        :style=\"{\n          height: props.height,\n          lineHeight: props.height,\n          color: props.fontColor,\n          padding: isTypeUnderline ? '0.6em 0' : '0.6em',\n          border: `${isTypeUnderline ? '0' : '1'}px solid transparent`,\n          borderBottom: `1px solid transparent`,\n          borderRadius: isTypeUnderline ? '0' : props.borderRadius,\n          borderColor: errorText\n            ? props.errorColor\n            : isFocus\n            ? props.focusColor\n            : inputText || isTypeNormal || isTypeUnderline\n            ? props.borderColor\n            : 'transparent',\n          transition: props.duration + 'ms'\n        }\"\n        @focus=\"focus\"\n        @blur=\"blur\"\n        @input=\"input\"\n        @change=\"input\"\n      />\n      <!-- background color and height -->\n      <div\n        class=\"background\"\n        v-if=\"!isTypeUnderline\"\n        :style=\"{\n          transition: props.duration + 'ms',\n          backgroundColor:\n            isTypeNormal || isFocus || inputText\n              ? 'transparent'\n              : props.borderColor,\n          height: isTypeNormal || isFocus || inputText ? props.height : '2px',\n          borderRadius: props.borderRadius\n        }\"\n      ></div>\n    </div>\n    <!-- error prompt bottom -->\n    <div\n      v-if=\"props.showError && errorText && isTypeUnderline\"\n      class=\"error-prompt-bottom\"\n    >\n      <Text\n        type=\"warn\"\n        :color=\"props.errorColor\"\n      >\n        {{ errorText }}\n      </Text>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.input {\n  position: relative;\n  box-sizing: border-box;\n  font-size: 1em;\n}\n/*\n.error-prompt-top {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  font-size: 0.75em;\n  line-height: 1;\n  transform: translateY(-100%);\n}\n*/\n.error-prompt-top {\n  width: 100%;\n  font-size: 0.75em;\n  line-height: 1;\n  margin-bottom: 0.5em;\n}\n.error-prompt-bottom {\n  width: 100%;\n  font-size: 0.75em;\n  line-height: 1;\n  margin-top: 0.5em;\n}\n.input-wrap {\n  position: relative;\n  box-sizing: border-box;\n}\n.input-raw {\n  display: block;\n  box-sizing: border-box;\n  position: relative;\n  width: 100%;\n  background: transparent;\n  outline: none;\n  box-shadow: none;\n  z-index: 10;\n}\n.background {\n  position: absolute;\n  left: 0;\n  bottom: 0;\n  width: 100%;\n  pointer-events: none;\n  z-index: 9;\n}\n.placeholder {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  pointer-events: none;\n}\n.focus .placeholder {\n  font-size: 0.75em;\n}\n.placeholder > div {\n  width: 100%;\n  display: flex;\n  justify-content: flex-start;\n  align-items: center;\n}\n.placeholder > span.single {\n  position: absolute;\n  left: 0;\n  top: 0;\n}\n/*\ninput:-moz-placeholder,\ntextarea:-moz-placeholder,\ninput:-ms-input-placeholder,\ntextarea:-ms-input-placeholder,\ninput::-webkit-input-placeholder,\ntextarea::-webkit-input-placeholder {\n  color: #C0C4CC;\n}\n*/\n</style>\n","<script setup lang=\"ts\">\nimport { ref, reactive, watch, onMounted, onUnmounted } from \"vue\";\nimport { flushArray } from \"@zyzgroup/core-common\";\nimport { useSafeArea$ } from \"@zyzgroup/core-web\";\nimport Pop from \"../pop/Pop.vue\";\nimport SVGCleanLeft from \"../svg/SVGCleanLeft.vue\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Pop, SVGCleanLeft }\n});\n\nconst props = withDefaults(\n  defineProps<{\n    initPlates?: string[];\n    completePlateLength?: number;\n  }>(),\n  {\n    initPlates: () => [],\n    completePlateLength: 7\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"open\"): void;\n  (event: \"close\"): void;\n  (event: \"resize\", rect: DOMRect): void;\n  (event: \"plates\", plates: string[]): void;\n}>();\n\nconst safeAreaBottom = ref(\"0px\");\nlet subcription;\nonMounted(() => {\n  subcription = useSafeArea$().subscribe((s) => {\n    safeAreaBottom.value = s.bottom;\n  });\n});\nonUnmounted(() => {\n  subcription?.unsubscribe();\n});\n\nconst FIRST = [\n  \"京\",\n  \"沪\",\n  \"津\",\n  \"渝\",\n  \"黑\",\n  \"吉\",\n  \"辽\",\n  \"蒙\",\n  \"冀\",\n  \"新\",\n  \"甘\",\n  \"青\",\n  \"陕\",\n  \"宁\",\n  \"豫\",\n  \"鲁\",\n  \"晋\",\n  \"皖\",\n  \"鄂\",\n  \"湘\",\n  \"苏\",\n  \"川\",\n  // \"黔\",\n  // \"滇\",\n  \"云\",\n  \"桂\",\n  \"藏\",\n  \"浙\",\n  \"赣\",\n  \"粤\",\n  \"闽\",\n  \"琼\",\n  \"贵\"\n];\nconst NUMBER = [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"0\"];\nconst ENGLISH = [\n  \"A\",\n  \"B\",\n  \"C\",\n  \"D\",\n  \"E\",\n  \"F\",\n  \"G\",\n  \"H\",\n  \"J\",\n  \"K\",\n  \"L\",\n  \"M\",\n  \"N\",\n  \"P\",\n  \"Q\",\n  \"R\",\n  \"S\",\n  \"T\",\n  \"U\",\n  \"V\",\n  \"W\",\n  \"X\",\n  \"Y\",\n  \"Z\"\n];\nconst CHINESE = [\n  // \"台\",\n  \"港\",\n  \"澳\",\n  \"学\",\n  \"警\",\n  \"使\",\n  \"领\",\n  \"挂\",\n  \"应\",\n  \"急\"\n];\n\nconst popRef = ref();\n\n// 0 中文 1 英文 2 英文+数字+中文\nconst keyboardStep = ref(0);\n\nconst plates = reactive<string[]>([]);\n\nfunction platesChangeCallback() {\n  if (plates.length == 0) {\n    keyboardStep.value = 0;\n  } else if (plates.length == 1) {\n    keyboardStep.value = 1;\n  } else {\n    keyboardStep.value = 2;\n  }\n  if (plates.length >= props.completePlateLength) {\n    close();\n  }\n}\n\nwatch(\n  () => [...props.initPlates],\n  () => {\n    flushArray(plates, props.initPlates);\n    platesChangeCallback();\n  },\n  {\n    immediate: true\n  }\n);\n\nconst open = () => {\n  popRef.value?.open();\n};\n\nconst close = () => {\n  popRef.value?.close();\n};\n\nconst back = () => {\n  plates.pop();\n  platesChangeCallback();\n  emits(\"plates\", plates);\n};\n\nconst click = (e: Event) => {\n  const dataset = ((e.currentTarget || e.target) as HTMLElement).dataset;\n  if (!!dataset.unactive) {\n    return;\n  }\n  let number = dataset.number;\n  if (number) {\n    plates.push(number);\n    platesChangeCallback();\n    emits(\"plates\", plates);\n  }\n};\n\ndefineExpose({ open, close });\n</script>\n\n<template>\n  <Pop\n    ref=\"popRef\"\n    directionFrom=\"bottom\"\n    :global=\"true\"\n    :closeWhenClickOverlay=\"false\"\n    @open=\"() => emits('open')\"\n    @close=\"() => emits('close')\"\n    @resize=\"(rect) => emits('resize', rect)\"\n  >\n    <div>\n      <div\n        class=\"popup-plate\"\n        :style=\"{\n          paddingBottom: safeAreaBottom\n        }\"\n      >\n        <div class=\"popup-plate-close\">\n          <Box\n            class=\"popup-plate-close-content\"\n            displayType=\"empty\"\n            :enableClickEffect=\"true\"\n            @throttleClick=\"close\"\n          >\n            关闭\n          </Box>\n        </div>\n        <div\n          class=\"step\"\n          :class=\"keyboardStep == 0 ? '' : 'hide'\"\n        >\n          <Box\n            v-for=\"item in FIRST\"\n            :key=\"item\"\n            class=\"popitem\"\n            displayType=\"empty\"\n            :enableClickEffect=\"true\"\n            @throttleClick=\"click\"\n            :data-number=\"item\"\n          >\n            {{ item }}\n          </Box>\n          <Box\n            class=\"popitem popitem-clear\"\n            displayType=\"empty\"\n            :enableClickEffect=\"true\"\n            @throttleClick=\"back\"\n          >\n            <div style=\"width: 16px\">\n              <SVGCleanLeft></SVGCleanLeft>\n            </div>\n          </Box>\n        </div>\n        <div\n          class=\"step\"\n          :class=\"keyboardStep != 0 ? '' : 'hide'\"\n        >\n          <Box\n            v-for=\"item in NUMBER\"\n            :key=\"item\"\n            class=\"popitem\"\n            :class=\"keyboardStep != 2 ? 'unactive' : ''\"\n            displayType=\"empty\"\n            :enableClickEffect=\"true\"\n            @throttleClick=\"click\"\n            :data-number=\"item\"\n            :data-unactive=\"keyboardStep != 2 ? 'unactive' : ''\"\n          >\n            {{ item }}\n          </Box>\n          <Box\n            v-for=\"item in ENGLISH\"\n            :key=\"item\"\n            class=\"popitem\"\n            displayType=\"empty\"\n            :enableClickEffect=\"true\"\n            @throttleClick=\"click\"\n            :data-number=\"item\"\n          >\n            {{ item }}\n          </Box>\n          <Box\n            v-for=\"item in CHINESE\"\n            :key=\"item\"\n            class=\"popitem\"\n            :class=\"keyboardStep != 2 ? 'unactive' : ''\"\n            displayType=\"empty\"\n            :enableClickEffect=\"true\"\n            @throttleClick=\"click\"\n            :data-number=\"item\"\n            :data-unactive=\"keyboardStep != 2 ? 'unactive' : ''\"\n          >\n            {{ item }}\n          </Box>\n          <Box\n            class=\"popitem popitem-clear\"\n            displayType=\"empty\"\n            :enableClickEffect=\"true\"\n            @throttleClick=\"back\"\n          >\n            <div style=\"width: 16px\">\n              <SVGCleanLeft></SVGCleanLeft>\n            </div>\n          </Box>\n        </div>\n      </div>\n    </div>\n  </Pop>\n</template>\n\n<style scoped>\n.popup-plate {\n  box-sizing: border-box;\n  width: 100%;\n  background-color: #dddddd;\n  color: #333333;\n}\n.hide {\n  display: none !important;\n}\n.popup-plate-close {\n  display: flex;\n  justify-content: flex-end;\n  background-color: #ffffff;\n  border-top: 1px solid #e6e6e6;\n}\n.popup-plate-close-content {\n  flex: 0 0 auto;\n  padding: 0 15px;\n  color: #5a82f0;\n  font-size: 16px;\n  line-height: 2.6;\n  cursor: pointer;\n}\n.step {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  padding: 10px 10px 5px;\n}\n.popitem {\n  flex: 0 0 auto;\n  width: 50px;\n  padding: 010px 0;\n  border: 1px solid #e6e6e6;\n  border-radius: 4px;\n  margin-right: 5px;\n  margin-bottom: 5px;\n  font-size: 16px;\n  line-height: 1;\n  text-align: center;\n  background-color: #fff;\n  cursor: pointer;\n}\n.popitem:not(.unactive):active {\n  background-color: #eee;\n}\n.popitem.unactive {\n  color: #cccccc;\n}\n.popitem.popitem-clear {\n  background-color: #eee;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted } from \"vue\";\nimport { clearArray, isNaN, maxDotNumber } from \"@zyzgroup/core-common\";\nimport { useSafeArea$ } from \"@zyzgroup/core-web\";\nimport Pop from \"../pop/Pop.vue\";\nimport SVGClose from \"../svg/SVGClose.vue\";\nimport SVGCleanLeft from \"../svg/SVGCleanLeft.vue\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {}\n});\n\nconst props = withDefaults(\n  defineProps<{\n    min?: number;\n    max?: number;\n    title?: string;\n  }>(),\n  {\n    title: \"自定义金额\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"open\"): void;\n  (event: \"close\"): void;\n  (event: \"number\", n: number): void;\n  (event: \"error\", msg: string): void;\n}>();\n\nconst safeAreaBottom = ref(\"0px\");\nlet subcription;\nonMounted(() => {\n  subcription = useSafeArea$().subscribe((s) => {\n    safeAreaBottom.value = s.bottom;\n  });\n});\nonUnmounted(() => {\n  subcription?.unsubscribe();\n});\n\n// 小数点前数字\nconst dotBefore: number[] = [];\n// 小数点后数字\nconst dotAfter: number[] = [];\n// 是否点击了小数点\nlet hasTapDot = false;\n// 最终结果\nconst result = ref(\"\");\n\nconst popRef = ref();\n\nconst open = () => {\n  clearArray(dotBefore);\n  clearArray(dotAfter);\n  hasTapDot = false;\n  // if (props.min) {\n  //   _setResult(props.min);\n  // }\n  _computeResult();\n  popRef.value?.open();\n};\n\nconst close = () => {\n  popRef.value?.close();\n};\n\nconst confirm = () => {\n  if (result.value == \"\") {\n    emits(\"error\", `请输入金额！`);\n    return;\n  }\n  const n = parseFloat(result.value);\n  if (isNaN(n)) {\n    emits(\"error\", `${n} is NaN!`);\n    return;\n  }\n  // min 拦截\n  if (typeof props.min == \"number\") {\n    const min = maxDotNumber(props.min, 2);\n    if (!isNaN(n) && n < min) {\n      emits(\"error\", `${props.title} 不能小于 ${min}`);\n      // _setResult(min);\n      // _computeResult();\n      return;\n    }\n  }\n  // max 拦截\n  if (typeof props.max == \"number\") {\n    const max = maxDotNumber(props.max, 2);\n    if (!isNaN(n) && n > max) {\n      emits(\"error\", `${props.title} 不能大于 ${max}`);\n      // _setResult(max);\n      // _computeResult();\n      return;\n    }\n  }\n  emits(\"number\", n);\n  close();\n};\n\nfunction _setResult(n: number) {\n  n = maxDotNumber(n, 2);\n  hasTapDot = String(n).indexOf(\".\") > -1;\n  clearArray(dotBefore);\n  clearArray(dotAfter);\n  let b = Math.floor(n);\n  let t = b % 10;\n  while (t || b) {\n    dotBefore.unshift(t);\n    b = Math.floor(b / 10);\n    t = b % 10;\n  }\n  let a = maxDotNumber(n - Math.floor(n), 2);\n  let i = 1;\n  t = Math.floor(a * Math.pow(10, i));\n  while (t || a) {\n    dotAfter.push(t);\n    a = maxDotNumber(a - t / Math.pow(10, i), 2);\n    i++;\n    t = Math.floor(a * Math.pow(10, i));\n  }\n}\n\nfunction _computeResult() {\n  result.value = \"\";\n  dotBefore.forEach((d) => {\n    result.value += \"\" + d;\n  });\n  if (hasTapDot) {\n    result.value += \".\";\n  }\n  // 只保留2位小数\n  for (let i = 0, c = Math.min(dotAfter.length, 2); i < c; i++) {\n    result.value += \"\" + dotAfter[i];\n  }\n}\n\nconst _forward = (v: number | string) => {\n  if (typeof v == \"number\") {\n    if (!hasTapDot) {\n      dotBefore.push(v);\n    } else {\n      if (dotAfter.length < 2) {\n        dotAfter.push(v);\n      }\n    }\n  } else {\n    hasTapDot = true;\n  }\n  _computeResult();\n};\n\nconst _back = () => {\n  if (dotAfter.length) {\n    dotAfter.pop();\n  } else if (hasTapDot) {\n    hasTapDot = false;\n  } else if (dotBefore.length) {\n    dotBefore.pop();\n  }\n  _computeResult();\n};\n\ndefineExpose({ open, close });\n</script>\n\n<template>\n  <Pop\n    ref=\"popRef\"\n    directionFrom=\"bottom\"\n    :global=\"true\"\n    :closeWhenClickOverlay=\"false\"\n    @open=\"() => emits('open')\"\n    @close=\"() => emits('close')\"\n  >\n    <div class=\"number-keyboard\">\n      <!-- 头部 -->\n      <div class=\"top\">\n        <div @click=\"close\">\n          <div style=\"width: 12px\"><SVGClose></SVGClose></div>\n        </div>\n        <div>{{ title }}</div>\n        <div @click=\"confirm\">完成</div>\n      </div>\n      <!-- 结果显示 -->\n      <div class=\"result\">\n        <!-- <div><input type=\"number\" step=\"any\" :value=\"result\" disabled /></div> -->\n        <div>\n          <div class=\"input\">\n            <span>{{ result }}</span>\n            <span class=\"cursor\">\n              <span class=\"line\"></span>\n            </span>\n          </div>\n        </div>\n      </div>\n      <!-- 选择项 -->\n      <div\n        class=\"numbers\"\n        :style=\"{\n          paddingBottom: safeAreaBottom\n        }\"\n      >\n        <div>\n          <div class=\"item\">\n            <Box\n              :enableClickEffect=\"true\"\n              @throttleClick=\"() => _forward(1)\"\n            >\n              <div class=\"item-inner\">1</div>\n            </Box>\n          </div>\n          <div class=\"item\">\n            <Box\n              :enableClickEffect=\"true\"\n              @throttleClick=\"() => _forward(2)\"\n            >\n              <div class=\"item-inner\">2</div>\n            </Box>\n          </div>\n          <div class=\"item\">\n            <Box\n              :enableClickEffect=\"true\"\n              @throttleClick=\"() => _forward(3)\"\n            >\n              <div class=\"item-inner\">3</div>\n            </Box>\n          </div>\n          <div class=\"item\">\n            <Box\n              :enableClickEffect=\"true\"\n              @throttleClick=\"() => _forward(4)\"\n            >\n              <div class=\"item-inner\">4</div>\n            </Box>\n          </div>\n          <div class=\"item\">\n            <Box\n              :enableClickEffect=\"true\"\n              @throttleClick=\"() => _forward(5)\"\n            >\n              <div class=\"item-inner\">5</div>\n            </Box>\n          </div>\n          <div class=\"item\">\n            <Box\n              :enableClickEffect=\"true\"\n              @throttleClick=\"() => _forward(6)\"\n            >\n              <div class=\"item-inner\">6</div>\n            </Box>\n          </div>\n          <div class=\"item\">\n            <Box\n              :enableClickEffect=\"true\"\n              @throttleClick=\"() => _forward(7)\"\n            >\n              <div class=\"item-inner\">7</div>\n            </Box>\n          </div>\n          <div class=\"item\">\n            <Box\n              :enableClickEffect=\"true\"\n              @throttleClick=\"() => _forward(8)\"\n            >\n              <div class=\"item-inner\">8</div>\n            </Box>\n          </div>\n          <div class=\"item\">\n            <Box\n              :enableClickEffect=\"true\"\n              @throttleClick=\"() => _forward(9)\"\n            >\n              <div class=\"item-inner\">9</div>\n            </Box>\n          </div>\n          <div class=\"item\">\n            <Box\n              :enableClickEffect=\"true\"\n              @throttleClick=\"() => _forward('.')\"\n            >\n              <div class=\"item-inner no-bg\">.</div>\n            </Box>\n          </div>\n          <div class=\"item\">\n            <Box\n              :enableClickEffect=\"true\"\n              @throttleClick=\"() => _forward(0)\"\n            >\n              <div class=\"item-inner\">0</div>\n            </Box>\n          </div>\n          <div class=\"item\">\n            <Box\n              :enableClickEffect=\"true\"\n              @throttleClick=\"_back\"\n            >\n              <div class=\"item-inner no-bg\">\n                <div style=\"width: 20px\"><SVGCleanLeft></SVGCleanLeft></div>\n              </div>\n            </Box>\n          </div>\n        </div>\n      </div>\n    </div>\n  </Pop>\n</template>\n\n<style scoped>\n@keyframes cursor-blinks {\n  0% {\n    opacity: 1;\n    display: block;\n  }\n  50% {\n    opacity: 0;\n    display: none;\n  }\n  100% {\n    opacity: 1;\n    display: block;\n  }\n}\n\n.number-keyboard {\n  box-sizing: border-box;\n  width: 100%;\n  background-color: #ffffff;\n  color: #333333;\n  border-top-left-radius: 16px;\n  border-top-right-radius: 16px;\n}\n.top {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  height: 56px;\n  line-height: 56px;\n  padding: 0 15px;\n  border-bottom: 1px solid #e6e6e6;\n}\n.top > div:nth-child(1) {\n  flex: 0 0 auto;\n  width: 24px;\n  height: 24px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  padding-right: 10px;\n}\n.top > div:nth-child(2) {\n  flex: 1 1 auto;\n  text-align: center;\n  font-size: 20px;\n  font-weight: bold;\n  color: #333333;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  word-wrap: normal;\n  word-break: break-all;\n}\n.top > div:nth-child(3) {\n  flex: 0 0 auto;\n  font-size: 16px;\n  font-weight: bold;\n  color: #5a82f0;\n  padding-left: 10px;\n}\n.result {\n  padding: 15px;\n}\n.result > div {\n  overflow: hidden;\n  display: flex;\n}\n.result > div > .input {\n  position: relative;\n  flex: 1 1 auto;\n  height: 44px;\n  line-height: 44px;\n  border: 1px solid #c8dcff;\n  background: #e6f0ff;\n  border-radius: 4px;\n  font-size: 20px;\n  font-weight: bold;\n  color: #5a82f0;\n  padding: 0 15px;\n  display: flex;\n  justify-content: flex-start;\n  align-items: center;\n}\n.cursor {\n  width: 0;\n  overflow: visible;\n  position: relative;\n}\n.line {\n  position: absolute;\n  width: 1px;\n  height: 24px;\n  background: #5a82f0;\n  left: 0;\n  top: 50%;\n  transform: translate(0, -50%);\n  animation: cursor-blinks 1.5s infinite steps(1, start);\n}\n.numbers {\n  background-color: #c6cad1;\n}\n.numbers > div {\n  display: flex;\n  flex-wrap: wrap;\n  padding: 4px;\n}\n.item {\n  flex: 0 0 33%;\n  padding: 4px;\n  box-sizing: border-box;\n}\n.item-inner {\n  background: #ffffff;\n  width: 100%;\n  height: 44px;\n  line-height: 44px;\n  text-align: center;\n  color: #333333;\n  font-size: 20px;\n  border-radius: 4px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  box-shadow: 0 2px #aaaaaa;\n}\n.item-inner.no-bg {\n  background: rgba(255, 255, 255, 0);\n  box-shadow: none;\n}\n</style>\n","import { h, render, VNode, Component } from \"vue\";\nimport { isUndefined, tryGet } from \"@zyzgroup/core-common\";\nimport { getElementAttrs } from \"./vnode\";\n\nimport Pop from \"./components/pop/Pop.vue\";\nimport PopTel from \"./components/pop/PopTel.vue\";\nimport DialogToast from \"./components/dialog/DialogToast.vue\";\nimport DialogLoading from \"./components/dialog/DialogLoading.vue\";\nimport Dialog, { DialogStylePatternType } from \"./components/dialog/Dialog.vue\";\n\nimport Input from \"./components/form/Input.vue\";\n\nimport PlateKeyboard from \"./components/keyboard/PlateKeyboard.vue\";\nimport NumberKeyboard from \"./components/keyboard/NumberKeyboard.vue\";\n\nfunction isInCE() {\n  return import.meta.env.MODE === \"ce\";\n}\n\n// https://cn.vitejs.dev/guide/env-and-mode\nconst CEMAPS: Record<string, Component> = { \"yz-pop\": Pop, \"yz-input\": Input };\nexport function getCEComponent(name: string) {\n  if (isInCE()) {\n    return name;\n  } else {\n    return CEMAPS[name];\n  }\n}\n\nexport const teleport =\n  document.getElementById(\"teleport\") || document.documentElement;\n\nfunction temp() {\n  const div = document.createElement(\"div\");\n  teleport.appendChild(div);\n  return {\n    el: div,\n    remove: () => {\n      try {\n        teleport.removeChild(div);\n      } catch (e) {\n        // div 的子元素先一步被删除时，可能报错？\n        console.log(e);\n      }\n    }\n  };\n}\n\nlet uniqueKey = 0;\n\ntype PopOptions = {\n  fixed?: number;\n  popLeft?: string;\n  popTop?: string;\n  overlayBgColor?: string;\n  contentBgColor?: string;\n  dur?: number;\n  global?: boolean;\n  closeWhenClickOverlay?: boolean;\n};\n// https://cn.vuejs.org/api/render-function.html\n// https://cn.vuejs.org/guide/extras/render-function.html\n// https://vuejs.org/guide/essentials/template-refs.html\nexport function pop(\n  el: HTMLElement | VNode,\n  directionFrom:\n    | \"center\"\n    | \"bottom\"\n    | \"top\"\n    | \"left\"\n    | \"right\"\n    | \"absolute\" = \"bottom\",\n  options?: PopOptions\n) {\n  const t = temp();\n  let vnode: VNode;\n  if (el instanceof HTMLElement) {\n    // 丧失 reactive\n    vnode = h(\n      Pop,\n      {\n        key: ++uniqueKey, // 使子元素重新创建，从而使浏览器计算子元素 inset 正确\n        directionFrom,\n        ...options,\n        onClose: () => {\n          t.remove();\n        }\n      },\n      () =>\n        h(\"div\", {\n          ...getElementAttrs(el),\n          innerHTML: el.innerHTML // () => stringToVNodes(el.innerHTML)\n        })\n    );\n  } else {\n    // 保留 reactive\n    vnode = h(\n      Pop,\n      {\n        key: ++uniqueKey, // 使子元素重新创建，从而使浏览器计算子元素 inset 正确\n        directionFrom,\n        ...options,\n        onClose: () => {\n          t.remove();\n        }\n      },\n      () => el\n    );\n  }\n  render(vnode, t.el);\n  vnode.component?.exposed?.open();\n  return () => {\n    vnode.component?.exposed?.close();\n  };\n}\nexport function popBottom(el: HTMLElement | VNode, options?: PopOptions) {\n  return pop(el, \"bottom\", options);\n}\nexport function popTop(el: HTMLElement | VNode, options?: PopOptions) {\n  return pop(el, \"top\", options);\n}\nexport function popLeft(el: HTMLElement | VNode, options?: PopOptions) {\n  return pop(el, \"left\", options);\n}\nexport function popRight(el: HTMLElement | VNode, options?: PopOptions) {\n  return pop(el, \"right\", options);\n}\nexport function popCenter(el: HTMLElement | VNode, options?: PopOptions) {\n  return pop(el, \"center\", options);\n}\nexport function popAbsolute(el: HTMLElement | VNode, options?: PopOptions) {\n  return pop(el, \"absolute\", options);\n}\n\nexport function popTel(tel: string) {\n  if (isInCE()) {\n    // const ce = document.querySelector(\"yz-pop-tel#globalPopTel\");\n    const ce = document.createElement(\"yz-pop-tel\") as any;\n    // 传入prop\n    ce.tel = tel;\n    // 监听事件\n    ce.addEventListener(\"close\", () => {\n      teleport.removeChild(ce);\n    });\n    teleport.appendChild(ce);\n    if (ce && \"_instance\" in ce) {\n      (ce._instance as any).exposed.open();\n    }\n    return () => {\n      if (ce && \"_instance\" in ce) {\n        (ce._instance as any).exposed.close();\n      }\n    };\n  } else {\n    const t = temp();\n    const vnode: VNode = h(PopTel, {\n      tel,\n      onClose: () => {\n        t.remove();\n      }\n    });\n    render(vnode, t.el);\n    vnode.component?.exposed?.open();\n    return () => {\n      vnode.component?.exposed?.close();\n    };\n  }\n}\n\nexport function dialog(options?: {\n  title?: string;\n  content?: string;\n  showClose?: boolean;\n  cancelText?: string;\n  confirmText?: string;\n  stylePattern?: DialogStylePatternType;\n  onCancel?: () => void;\n  onConfirm?: () => void;\n  onOpen?: () => void;\n  onClose?: () => void;\n}) {\n  if (isInCE()) {\n    // const ce = document.querySelector(\"yz-dialog#globalDialog\");\n    const ce = document.createElement(\"yz-dialog\") as any;\n    // 传入prop\n    ce.title = options?.title;\n    ce.content = options?.content;\n    ce.showClose = options?.showClose;\n    ce.cancelText = options?.cancelText;\n    ce.confirmText = options?.confirmText;\n    ce.stylePattern = options?.stylePattern;\n    // 监听事件\n    ce.addEventListener(\"open\", () => {\n      options?.onOpen?.();\n    });\n    ce.addEventListener(\"close\", () => {\n      teleport.removeChild(ce);\n      options?.onClose?.();\n    });\n    ce.addEventListener(\"cancel\", () => {\n      options?.onCancel?.();\n    });\n    ce.addEventListener(\"confirm\", () => {\n      options?.onConfirm?.();\n    });\n    teleport.appendChild(ce);\n    if (ce && \"_instance\" in ce) {\n      (ce._instance as any).exposed.open();\n    }\n    return () => {\n      if (ce && \"_instance\" in ce) {\n        (ce._instance as any).exposed.close();\n      }\n    };\n  } else {\n    const t = temp();\n    const vnode = h(Dialog, {\n      ...options,\n      onClose: () => {\n        t.remove();\n        options?.onClose?.();\n      }\n    });\n    render(vnode, t.el);\n    vnode.component?.exposed?.open();\n    return () => {\n      vnode.component?.exposed?.close();\n    };\n  }\n}\n\nexport function toast(\n  content: string,\n  during?: number,\n  options?: {\n    onOpen?: () => void;\n    onClose?: () => void;\n  }\n) {\n  if (isInCE()) {\n    // const ce = document.querySelector(\n    //   \"yz-dialog-toast#globalDialogToast\"\n    // );\n    const ce = document.createElement(\"yz-dialog-toast\") as any;\n    ce.content = content;\n    ce.during = during;\n    ce.addEventListener(\"open\", () => {\n      options?.onOpen?.();\n    });\n    ce.addEventListener(\"close\", () => {\n      teleport.removeChild(ce);\n      options?.onClose?.();\n    });\n    teleport.appendChild(ce);\n    if (ce && \"_instance\" in ce) {\n      (ce._instance as any).exposed.open();\n    }\n    return () => {\n      if (ce && \"_instance\" in ce) {\n        (ce._instance as any).exposed.close();\n      }\n    };\n  } else {\n    const t = temp();\n    const vnode = h(DialogToast, {\n      content,\n      during,\n      ...options,\n      onClose: () => {\n        t.remove();\n        options?.onClose?.();\n      }\n    });\n    render(vnode, t.el);\n    vnode.component?.exposed?.open();\n    return () => {\n      vnode.component?.exposed?.close();\n    };\n  }\n}\n\nexport function loading(\n  content?: string,\n  options?: {\n    onOpen?: () => void;\n    onClose?: () => void;\n  }\n) {\n  if (isInCE()) {\n    // const ce = document.querySelector(\n    //   \"yz-dialog-loading#globalDialogLoading\"\n    // );\n    const ce = document.createElement(\"yz-dialog-loading\") as any;\n    ce.content = content;\n    ce.addEventListener(\"open\", () => {\n      options?.onOpen?.();\n    });\n    ce.addEventListener(\"close\", () => {\n      teleport.removeChild(ce);\n      options?.onClose?.();\n    });\n    teleport.appendChild(ce);\n    if (ce && \"_instance\" in ce) {\n      (ce._instance as any).exposed.open();\n    }\n    return () => {\n      if (ce && \"_instance\" in ce) {\n        (ce._instance as any).exposed.close();\n      }\n    };\n  } else {\n    const t = temp();\n    const vnode = h(DialogLoading, {\n      content,\n      ...options,\n      onClose: () => {\n        t.remove();\n        options?.onClose?.();\n      }\n    });\n    render(vnode, t.el);\n    vnode.component?.exposed?.open();\n    return () => {\n      vnode.component?.exposed?.close();\n    };\n  }\n}\n\nexport function plateKeyboard(options?: {\n  initPlates?: string[];\n  completePlateLength?: number;\n  onPlates?: (plates: string[]) => void;\n  onOpen?: () => void;\n  onClose?: () => void;\n  onResize?: (rect: DOMRect) => void;\n}) {\n  if (isInCE()) {\n    // const ce = document.querySelector(\n    //   \"yz-plate-keyboard#globalPlateKeyboard\"\n    // );\n    const ce = document.createElement(\"yz-plate-keyboard\") as any;\n    ce.initPlates = options?.initPlates;\n    ce.completePlateLength = options?.completePlateLength;\n    ce.addEventListener(\"plates\", (e) => {\n      const plate = tryGet(e, \"detail\", \"0\"); // e.detail[0]\n      if (!isUndefined(plate)) {\n        options?.onPlates?.(plate);\n      }\n    });\n    ce.addEventListener(\"open\", () => {\n      options?.onOpen?.();\n    });\n    ce.addEventListener(\"close\", () => {\n      teleport.removeChild(ce);\n      options?.onClose?.();\n    });\n    ce.addEventListener(\"resize\", (e) => {\n      const rect = tryGet(e, \"detail\", \"0\"); // e.detail[0]\n      if (!isUndefined(rect)) {\n        options?.onResize?.(rect);\n      }\n    });\n    teleport.appendChild(ce);\n    if (ce && \"_instance\" in ce) {\n      (ce._instance as any).exposed.open();\n    }\n    return () => {\n      if (ce && \"_instance\" in ce) {\n        (ce._instance as any).exposed.close();\n      }\n    };\n  } else {\n    const t = temp();\n    const vnode = h(PlateKeyboard, {\n      ...options,\n      onClose: () => {\n        t.remove();\n        options?.onClose?.();\n      }\n    });\n    render(vnode, t.el);\n    vnode.component?.exposed?.open();\n    return () => {\n      vnode.component?.exposed?.close();\n    };\n  }\n}\n\nexport function numberKeyboard(options?: {\n  min?: number;\n  max?: number;\n  title?: string;\n  onOpen?: () => void;\n  onClose?: () => void;\n  onNumber?: (n: number) => void;\n  onError?: (msg: string) => void;\n}) {\n  if (isInCE()) {\n    // const ce = document.querySelector(\n    //   \"yz-number-keyboard#globalNumberKeyboard\"\n    // );\n    const ce = document.createElement(\"yz-number-keyboard\") as any;\n    ce.min = options?.min;\n    ce.max = options?.max;\n    ce.title = options?.title;\n    ce.addEventListener(\"number\", (e) => {\n      const number = tryGet(e, \"detail\", \"0\"); // e.detail[0]\n      if (!isUndefined(number)) {\n        options?.onNumber?.(number);\n      }\n    });\n    ce.addEventListener(\"error\", (e) => {\n      const error = tryGet(e, \"detail\", \"0\"); // e.detail[0]\n      if (!isUndefined(error)) {\n        options?.onError?.(error);\n      }\n    });\n    ce.addEventListener(\"open\", () => {\n      options?.onOpen();\n    });\n    ce.addEventListener(\"close\", () => {\n      teleport.removeChild(ce);\n      options?.onClose();\n    });\n    teleport.appendChild(ce);\n    if (ce && \"_instance\" in ce) {\n      (ce._instance as any).exposed.open();\n    }\n    return () => {\n      if (ce && \"_instance\" in ce) {\n        (ce._instance as any).exposed.close();\n      }\n    };\n  } else {\n    const t = temp();\n    const vnode = h(NumberKeyboard, {\n      ...options,\n      onClose: () => {\n        t.remove();\n        options?.onClose?.();\n      }\n    });\n    render(vnode, t.el);\n    vnode.component?.exposed?.open();\n    return () => {\n      vnode.component?.exposed?.close();\n    };\n  }\n}\n","<script setup lang=\"tsx\">\nimport { inject } from \"vue\";\nimport { Context } from \"@zyzgroup/core-web\";\nimport { useRouter } from \"../../hooks\";\nimport Button from \"../form/Button.vue\";\nimport { dialog } from \"../../globalTeleport\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Button },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    billsn: number;\n  }>(),\n  {\n    billsn: 0\n  }\n);\n\nconst context = inject<Context>(\"context\");\n\nconst router = useRouter();\n\nfunction gotoPay() {\n  // https://yaoyao.cebbank.com/LifePayment/webApp/h5/router.html?transType=01&canalType=13&canal=njczfs&ItemCode=860729765&userNo=32010025101035852255\n  // router.push(\"/park\");\n  context.axios\n    .post(\n      `/api/v6/bill/${props.billsn}/pay`,\n      {\n        type: \"B\",\n        openid: \"quickpassapp\"\n      },\n      {\n        retry: 4,\n        cache: 30\n      }\n    )\n    .then((result) => {\n      // console.log(result);\n      // console.log(JSON.stringify(result));\n      dialog({\n        title: \"\",\n        content: \"请求成功，自行查看结果\",\n        confirmText: \"知道了\"\n      });\n    })\n    .catch((result) => {\n      // console.log(result);\n      // console.log(JSON.stringify(result));\n      dialog({\n        title: \"接口出错\",\n        content: result.data.error,\n        confirmText: \"知道了\"\n      });\n    });\n}\n</script>\n\n<template>\n  <div class=\"xg-footer\">\n    <div class=\"xg-footer-inner\">\n      <Button\n        label=\"去支付\"\n        width=\"100%\"\n        @click=\"gotoPay\"\n      ></Button>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.xg-footer {\n  box-sizing: border-box;\n  background-color: #ffffff;\n  border-top: 1px solid #cccccc;\n}\n.xg-footer-inner {\n  box-sizing: border-box;\n  width: 100%;\n  padding: 0.2rem 0.3rem;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { watchEffect, ref } from \"vue\";\nimport { getEmSize } from \"@zyzgroup/core-web\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    plate: string; // 无牌车\n    plateType?:\n      | \"蓝牌\"\n      | \"b\"\n      | \"绿牌\"\n      | \"g\"\n      | \"黄牌\"\n      | \"y\"\n      | \"黄绿\"\n      | \"q\"\n      | \"黑牌\"\n      | \"d\"\n      | \"白牌\"\n      | \"w\"\n      | \"未知\";\n    displayType?: \"dot\" | \"chinese\" | \"plaintext\";\n    // fontSize : 1em\n  }>(),\n  { displayType: \"chinese\" }\n);\n\nconst emits = defineEmits<{\n  // (event: \"void\"): void;\n}>();\n\nconst PLATE_TYPES: { name: string; style: Record<string, string> }[] = [\n  {\n    name: \"蓝牌\",\n    style: {\n      \"background-color\": \"#0078f0\",\n      color: \"#ffffff\"\n    }\n  },\n  {\n    name: \"绿牌\",\n    style: {\n      \"background-color\": \"#00f08c\",\n      color: \"#000000\"\n    }\n  },\n  {\n    name: \"黄牌\",\n    style: {\n      \"background-color\": \"#fac800\",\n      color: \"#000000\"\n    }\n  },\n  {\n    name: \"黄绿\",\n    style: {\n      background: \"linear-gradient(90deg, #fac800 51.5%, #00f08c 51.51%)\",\n      color: \"#000000\"\n    }\n  },\n  {\n    name: \"黑牌\",\n    style: {\n      \"background-color\": \"#222222\",\n      color: \"#ffffff\"\n    }\n  },\n  {\n    name: \"白牌\",\n    style: {\n      \"background-color\": \"#ffffff\",\n      color: \"#000000\",\n      border: \"1px solid #999999\"\n    }\n  },\n  {\n    name: \"未知\",\n    style: {\n      \"background-color\": \"#cccccc\",\n      color: \"#ffffff\"\n    }\n  }\n];\n\nfunction getPlateType(name: string): {\n  name: string;\n  style: Record<string, string>;\n} {\n  switch (name) {\n    case \"b\":\n    case \"蓝牌\":\n      name = \"蓝牌\";\n      break;\n    case \"g\":\n    case \"绿牌\":\n      name = \"绿牌\";\n      break;\n    case \"y\":\n    case \"黄牌\":\n      name = \"黄牌\";\n      break;\n    case \"q\":\n    case \"黄绿\":\n      name = \"黄绿\";\n      break;\n    case \"d\":\n    case \"黑牌\":\n      name = \"黑牌\";\n      break;\n    case \"w\":\n    case \"白牌\":\n      name = \"白牌\";\n      break;\n    default:\n      name = \"未知\";\n      break;\n  }\n  const result = PLATE_TYPES.filter((item) => item.name === name);\n  return result.length ? result[0] : getPlateType(\"未知\");\n}\n\nconst plateType = ref(getPlateType(props.plateType || \"\"));\n\nconst el = ref();\n\nconst dotSize = ref(14);\nwatchEffect(() => {\n  if (!el.value) {\n    return;\n  }\n  dotSize.value = getEmSize(el.value);\n});\n\ndefineExpose({});\n</script>\n\n<template>\n  <div\n    class=\"plate-display\"\n    ref=\"el\"\n  >\n    <div\n      v-if=\"displayType == 'dot' && plate !== '无牌车'\"\n      class=\"leading\"\n      :class=\"displayType\"\n      :style=\"{\n        ...plateType.style,\n        width: dotSize + 'px',\n        height: dotSize + 'px',\n        marginRight: 0.36 * dotSize + 'px'\n      }\"\n    >\n      {{ plateType.name }}\n    </div>\n    <div\n      v-if=\"displayType == 'chinese' && plate !== '无牌车'\"\n      class=\"leading\"\n      :class=\"displayType\"\n      :style=\"plateType.style\"\n    >\n      {{ plateType.name }}\n    </div>\n    <div\n      v-if=\"displayType == 'plaintext' && plate !== '无牌车'\"\n      class=\"leading\"\n      :class=\"displayType\"\n    >\n      {{ plateType.name }}\n    </div>\n    <div class=\"text\">\n      {{ plate }}\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.plate-display {\n  display: inline-flex;\n  justify-content: center;\n  align-items: center;\n}\n.leading {\n  box-sizing: border-box;\n  font-size: 0.86em;\n  line-height: 1;\n  border-radius: 0.3em;\n  margin-right: 0.36em;\n}\n.leading.chinese {\n  padding: 0.3em;\n}\n.leading.dot {\n  font-size: 0;\n  border-radius: 50%;\n}\n.leading.plaintext {\n  padding-right: 0.36em;\n  border-right: 1px solid #e6e6e6;\n  border-radius: 0;\n}\n.text {\n  line-height: 1;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, reactive, onUnmounted } from \"vue\";\nimport {\n  SupportedEaseNameToCubicBezier,\n  animationEnd$,\n  animationStart$\n} from \"@zyzgroup/core-web\";\nimport Box from \"./Box.vue\";\n\nexport type SupportedCSSAnimation =\n  | \"jelly\"\n  | \"bounce\"\n  | \"flash\"\n  | \"pulse\"\n  | \"rubberBand\"\n  | \"shakeX\"\n  | \"shakeY\"\n  | \"headShake\"\n  | \"swing\"\n  | \"tada\"\n  | \"wobble\"\n  | \"jello\"\n  | \"heartBeat\"\n  | \"backInLeft\"\n  | \"backInRight\"\n  | \"backInUp\"\n  | \"backInDown\"\n  | \"backOutLeft\"\n  | \"backOutRight\"\n  | \"backOutUp\"\n  | \"backOutDown\"\n  | \"bounceIn\"\n  | \"bounceInLeft\"\n  | \"bounceInRight\"\n  | \"bounceInUp\"\n  | \"bounceInDown\"\n  | \"bounceOut\"\n  | \"bounceOutLeft\"\n  | \"bounceOutRight\"\n  | \"bounceOutUp\"\n  | \"bounceOutDown\"\n  | \"fadeIn\"\n  | \"fadeInLeft\"\n  | \"fadeInLeftBig\"\n  | \"fadeInRight\"\n  | \"fadeInRightBig\"\n  | \"fadeInUp\"\n  | \"fadeInUpBig\"\n  | \"fadeInDown\"\n  | \"fadeInDownBig\"\n  | \"fadeInTopLeft\"\n  | \"fadeInTopRight\"\n  | \"fadeInBottomLeft\"\n  | \"fadeInBottomRight\"\n  | \"fadeOut\"\n  | \"fadeOutLeft\"\n  | \"fadeOutLeftBig\"\n  | \"fadeOutRight\"\n  | \"fadeOutRightBig\"\n  | \"fadeOutUp\"\n  | \"fadeOutUpBig\"\n  | \"fadeOutDown\"\n  | \"fadeOutDownBig\"\n  | \"fadeOutTopLeft\"\n  | \"fadeOutTopRight\"\n  | \"fadeOutBottomRight\"\n  | \"fadeOutBottomLeft\"\n  | \"flip\"\n  | \"flipInX\"\n  | \"flipInY\"\n  | \"flipOutX\"\n  | \"flipOutY\"\n  | \"flipOutRight\"\n  | \"flipInLeft\"\n  | \"flipOutLeft\"\n  | \"flipInRight\"\n  | \"flipOutTop\"\n  | \"flipInBottom\"\n  | \"flipOutBottom\"\n  | \"flipInTop\"\n  | \"lightSpeedInLeft\"\n  | \"lightSpeedInRight\"\n  | \"lightSpeedOutLeft\"\n  | \"lightSpeedOutRight\"\n  | \"rotateIn\"\n  | \"rotateInUpLeft\"\n  | \"rotateInUpRight\"\n  | \"rotateInDownLeft\"\n  | \"rotateInDownRight\"\n  | \"rotateOut\"\n  | \"rotateOutUpLeft\"\n  | \"rotateOutUpRight\"\n  | \"rotateOutDownLeft\"\n  | \"rotateOutDownRight\"\n  | \"hinge\"\n  | \"rotateFall\"\n  | \"rotateOutNewspaper\"\n  | \"rotateInNewspaper\"\n  | \"jackInTheBox\"\n  | \"rollIn\"\n  | \"rollOut\"\n  | \"zoomIn\"\n  | \"zoomInLeft\"\n  | \"zoomInRight\"\n  | \"zoomInUp\"\n  | \"zoomInDown\"\n  | \"zoomOut\"\n  | \"zoomOutLeft\"\n  | \"zoomOutRight\"\n  | \"zoomOutUp\"\n  | \"zoomOutDown\"\n  | \"fade\"\n  | \"moveFromLeft\"\n  | \"moveToLeft\"\n  | \"moveFromRight\"\n  | \"moveToRight\"\n  | \"moveFromTop\"\n  | \"moveToTop\"\n  | \"moveFromBottom\"\n  | \"moveToBottom\"\n  | \"moveFromLeftFade\"\n  | \"moveToLeftFade\"\n  | \"moveFromRightFade\"\n  | \"moveToRightFade\"\n  | \"moveFromTopFade\"\n  | \"moveToTopFade\"\n  | \"moveFromBottomFade\"\n  | \"moveToBottomFade\"\n  | \"scaleFromSmall\"\n  | \"scaleToSmall\"\n  | \"scaleFromLarge\"\n  | \"scaleToLarge\"\n  | \"scaleFromSmallCenter\"\n  | \"scaleToSmallCenter\"\n  | \"slideInLeft\"\n  | \"slideInRight\"\n  | \"slideInUp\"\n  | \"slideInDown\"\n  | \"slideOutLeft\"\n  | \"slideOutRight\"\n  | \"slideOutUp\"\n  | \"slideOutDown\"\n  | \"rotateRightSideFirst\"\n  | \"rotateLeftSideFirst\"\n  | \"rotateTopSideFirst\"\n  | \"rotateBottomSideFirst\"\n  | \"rotatePushLeft\"\n  | \"rotatePushRight\"\n  | \"rotatePushTop\"\n  | \"rotatePushBottom\"\n  | \"rotatePullRight\"\n  | \"rotatePullLeft\"\n  | \"rotatePullTop\"\n  | \"rotatePullBottom\"\n  | \"rotateFoldRight\"\n  | \"rotateFoldLeft\"\n  | \"rotateFoldTop\"\n  | \"rotateFoldBottom\"\n  | \"rotateUnfoldLeft\"\n  | \"rotateUnfoldRight\"\n  | \"rotateUnfoldTop\"\n  | \"rotateUnfoldBottom\"\n  | \"rotateRoomLeftOut\"\n  | \"rotateRoomLeftIn\"\n  | \"rotateRoomRightOut\"\n  | \"rotateRoomRightIn\"\n  | \"rotateRoomTopOut\"\n  | \"rotateRoomTopIn\"\n  | \"rotateRoomBottomOut\"\n  | \"rotateRoomBottomIn\"\n  | \"rotateCubeLeftOut\"\n  | \"rotateCubeLeftIn\"\n  | \"rotateCubeRightOut\"\n  | \"rotateCubeRightIn\"\n  | \"rotateCubeTopOut\"\n  | \"rotateCubeTopIn\"\n  | \"rotateCubeBottomOut\"\n  | \"rotateCubeBottomIn\"\n  | \"rotateCarouselLeftOut\"\n  | \"rotateCarouselLeftIn\"\n  | \"rotateCarouselRightOut\"\n  | \"rotateCarouselRightIn\"\n  | \"rotateCarouselTopOut\"\n  | \"rotateCarouselTopIn\"\n  | \"rotateCarouselBottomOut\"\n  | \"rotateCarouselBottomIn\"\n  | \"rotateSidesOut\"\n  | \"rotateSidesIn\"\n  | \"rotateSlideOut\"\n  | \"rotateSlideIn\"\n  | \"superRainbow\"\n  | \"statusProcessing\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\n// timingFunction :\n// linear\n// ease\n// ease-in\n// ease-out\n// ease-in-out\n// step-start=steps(1, start) 动画执行时以开始端点为开始\n// step-end=steps(1, end) 动画执行时以结尾端点为开始、\n// cubic-bezier()\n// steps()\n\n// animation: moveObject 2s ease-in-out, fadeBox 3s linear;\n// animation-name: moveObject, fadeBox;\n// animation-duation: 2s, 3s;\n// animation-timing-function: ease-in-out, linear;\n\n// .exmaple {\n//   animation-play-state: paused;\n// }\n// .exmaple:hover {\n//   animation-play-state: running;\n// }\n\nconst props = withDefaults(\n  defineProps<{\n    name?: SupportedCSSAnimation;\n    timingFunction?: SupportedEaseNameToCubicBezier;\n    duration?: number;\n    delay?: number;\n    repeat?: number | \"infinite\";\n    direction?: \"normal\" | \"reverse\" | \"alternate\" | \"alternate-reverse\";\n    fillMode?: \"none\" | \"forwards\" | \"backwards\" | \"both\";\n    playState?: \"running\" | \"paused\";\n    perspective?: string;\n  }>(),\n  {\n    name: \"jelly\",\n    fillMode: \"both\",\n    playState: \"running\",\n    perspective: \"1200px\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"cssanimationstart\", e: AnimationEvent): void;\n  (event: \"cssanimationend\", e: AnimationEvent): void;\n}>();\n\nconst animationRef = ref();\n\nconst style = reactive<Record<string, string>>({\n  cursor: \"pointer\",\n  transformStyle: \"preserve-3d\"\n});\n\nlet duration = props.duration;\nlet timingFunction = props.timingFunction;\nlet delay = props.delay;\nlet repeat = props.repeat;\nlet direction = props.direction;\n\nfunction changeEffect(animationName: SupportedCSSAnimation) {\n  // duration\n  switch (animationName) {\n    case \"superRainbow\":\n      duration = props.duration || 15000;\n      break;\n    case \"heartBeat\":\n      duration = props.duration || 1300;\n      break;\n    case \"statusProcessing\":\n      duration = props.duration || 1200;\n      break;\n    case \"rotateFall\":\n    case \"rotateSlideOut\":\n    case \"rotateSlideIn\":\n      duration = props.duration || 1000;\n      break;\n    case \"rotateRightSideFirst\":\n    case \"rotateLeftSideFirst\":\n    case \"rotateTopSideFirst\":\n    case \"rotateBottomSideFirst\":\n    case \"rotatePushLeft\":\n    case \"rotatePushRight\":\n    case \"rotatePushTop\":\n    case \"rotatePushBottom\":\n    case \"rotateRoomLeftOut\":\n    case \"rotateRoomLeftIn\":\n    case \"rotateRoomRightOut\":\n    case \"rotateRoomRightIn\":\n    case \"rotateRoomTopOut\":\n    case \"rotateRoomTopIn\":\n    case \"rotateRoomBottomOut\":\n    case \"rotateRoomBottomIn\":\n    case \"rotateCarouselLeftOut\":\n    case \"rotateCarouselLeftIn\":\n    case \"rotateCarouselRightOut\":\n    case \"rotateCarouselRightIn\":\n    case \"rotateCarouselTopOut\":\n    case \"rotateCarouselTopIn\":\n    case \"rotateCarouselBottomOut\":\n    case \"rotateCarouselBottomIn\":\n      duration = props.duration || 800;\n      break;\n    case \"bounceIn\":\n    case \"bounceOut\":\n    case \"flipOutX\":\n    case \"hinge\":\n      duration = props.duration || 750;\n      break;\n    case \"rotateFoldRight\":\n    case \"rotateFoldLeft\":\n    case \"rotateFoldTop\":\n    case \"rotateFoldBottom\":\n    case \"rotateUnfoldLeft\":\n    case \"rotateUnfoldRight\":\n    case \"rotateUnfoldTop\":\n    case \"rotateUnfoldBottom\":\n    case \"fade\":\n    case \"moveFromLeftFade\":\n    case \"moveToLeftFade\":\n    case \"moveFromRightFade\":\n    case \"moveToRightFade\":\n    case \"moveFromTopFade\":\n    case \"moveToTopFade\":\n    case \"moveFromBottomFade\":\n    case \"moveToBottomFade\":\n      duration = props.duration || 700;\n      break;\n    case \"moveFromLeft\":\n    case \"moveToLeft\":\n    case \"moveFromRight\":\n    case \"moveToRight\":\n    case \"moveFromTop\":\n    case \"moveToTop\":\n    case \"moveFromBottom\":\n    case \"moveToBottom\":\n    case \"rotateCubeLeftOut\":\n    case \"rotateCubeLeftIn\":\n    case \"rotateCubeRightOut\":\n    case \"rotateCubeRightIn\":\n    case \"rotateCubeTopOut\":\n    case \"rotateCubeTopIn\":\n    case \"rotateCubeBottomOut\":\n    case \"rotateCubeBottomIn\":\n      duration = props.duration || 600;\n      break;\n    default:\n      duration = props.duration || 500;\n      break;\n  }\n\n  // timingFunction\n  switch (animationName) {\n    case \"superRainbow\":\n      timingFunction = props.timingFunction || \"linear\";\n      break;\n    case \"lightSpeedOutLeft\":\n    case \"lightSpeedOutRight\":\n    case \"rotateRightSideFirst\":\n    case \"rotateLeftSideFirst\":\n    case \"rotateTopSideFirst\":\n    case \"rotateBottomSideFirst\":\n    case \"flipOutRight\":\n    case \"flipOutLeft\":\n    case \"flipOutTop\":\n    case \"flipOutBottom\":\n    case \"rotateFall\":\n    case \"rotateOutNewspaper\":\n    case \"rotateCubeLeftOut\":\n    case \"rotateCubeLeftIn\":\n    case \"rotateCubeRightOut\":\n    case \"rotateCubeRightIn\":\n    case \"rotateCubeTopOut\":\n    case \"rotateCubeTopIn\":\n    case \"rotateCubeBottomOut\":\n    case \"rotateCubeBottomIn\":\n    case \"rotateSidesOut\":\n      timingFunction = props.timingFunction || \"ease-in\";\n      break;\n    case \"lightSpeedInLeft\":\n    case \"lightSpeedInRight\":\n    case \"flipInLeft\":\n    case \"flipInRight\":\n    case \"flipInBottom\":\n    case \"flipInTop\":\n    case \"rotateInNewspaper\":\n    case \"rotateSidesIn\":\n      timingFunction = props.timingFunction || \"ease-out\";\n      break;\n    case \"pulse\":\n    case \"headShake\":\n    case \"heartBeat\":\n    case \"statusProcessing\":\n      timingFunction = props.timingFunction || \"ease-in-out\";\n      break;\n    default:\n      timingFunction = props.timingFunction || \"ease\";\n      break;\n  }\n\n  // delay\n  switch (animationName) {\n    default:\n      delay = props.delay || 0;\n      break;\n  }\n\n  // repeat\n  switch (animationName) {\n    case \"superRainbow\":\n    case \"statusProcessing\":\n      repeat = props.repeat || \"infinite\";\n      break;\n    default:\n      repeat = props.repeat || 1;\n      break;\n  }\n\n  // direction\n  switch (animationName) {\n    case \"superRainbow\":\n      direction = props.direction || \"alternate\";\n      break;\n    default:\n      direction = props.direction || \"normal\";\n      break;\n  }\n\n  // transformOrigin: x-offset y-offset\n  switch (animationName) {\n    case \"hinge\":\n    case \"rotateFall\":\n      style.transformOrigin = \"left top\";\n      // style.transformOrigin = \"0% 0%\";\n      break;\n    case \"zoomOutLeft\":\n    case \"rotateRightSideFirst\":\n    case \"rotatePushLeft\":\n    case \"rotatePullLeft\":\n    case \"rotateFoldRight\":\n    case \"rotateUnfoldRight\":\n    case \"rotateRoomLeftIn\":\n    case \"rotateRoomRightOut\":\n    case \"rotateCubeLeftIn\":\n    case \"rotateCubeRightOut\":\n      style.transformOrigin = \"left center\";\n      // style.transformOrigin = \"0% 50%\";\n      break;\n    case \"rotateInUpLeft\":\n    case \"rotateInDownLeft\":\n    case \"rotateOutUpLeft\":\n    case \"rotateOutDownLeft\":\n      style.transformOrigin = \"left bottom\";\n      // style.transformOrigin = \"0% 100%\";\n      break;\n    case \"swing\":\n    case \"zoomOutUp\":\n    case \"rotateBottomSideFirst\":\n    case \"rotatePushTop\":\n    case \"rotatePullTop\":\n    case \"rotateFoldBottom\":\n    case \"rotateUnfoldBottom\":\n    case \"rotateRoomTopIn\":\n    case \"rotateRoomBottomOut\":\n    case \"rotateCubeTopIn\":\n    case \"rotateCubeBottomOut\":\n      style.transformOrigin = \"center top\";\n      // style.transformOrigin = \"50% 0%\";\n      break;\n    case \"bounce\":\n    case \"zoomOutDown\":\n    case \"rotateTopSideFirst\":\n    case \"rotatePushBottom\":\n    case \"rotatePullBottom\":\n    case \"rotateFoldTop\":\n    case \"rotateUnfoldTop\":\n    case \"rotateRoomTopOut\":\n    case \"rotateRoomBottomIn\":\n    case \"rotateCubeTopOut\":\n    case \"rotateCubeBottomIn\":\n      style.transformOrigin = \"center bottom\";\n      // style.transformOrigin = \"50% 100%\";\n      break;\n    // case \"xxx\":\n    //   style.transformOrigin = \"right top\";\n    //   style.transformOrigin = \"100% 0%\";\n    //   break;\n    case \"zoomOutRight\":\n    case \"rotateLeftSideFirst\":\n    case \"rotatePushRight\":\n    case \"rotatePullRight\":\n    case \"rotateFoldLeft\":\n    case \"rotateUnfoldLeft\":\n    case \"rotateRoomLeftOut\":\n    case \"rotateRoomRightIn\":\n    case \"rotateCubeLeftOut\":\n    case \"rotateCubeRightIn\":\n      style.transformOrigin = \"right center\";\n      // style.transformOrigin = \"100% 50%\";\n      break;\n    case \"rotateInUpRight\":\n    case \"rotateInDownRight\":\n    case \"rotateOutUpRight\":\n    case \"rotateOutDownRight\":\n      style.transformOrigin = \"right bottom\";\n      // style.transformOrigin = \"100% 100%\";\n      break;\n    default:\n      // style.transformOrigin = \"center\"; // default\n      // style.transformOrigin = \"50% 50%\"; // default\n      delete style.transformOrigin;\n      break;\n  }\n\n  // overflow\n  switch (animationName) {\n    case \"jelly\":\n    case \"bounce\":\n    case \"flash\":\n    case \"pulse\":\n    case \"rubberBand\":\n    case \"shakeX\":\n    case \"shakeY\":\n    case \"headShake\":\n    case \"swing\":\n    case \"tada\":\n    case \"wobble\":\n    case \"jello\":\n    case \"heartBeat\":\n    case \"bounceIn\":\n    case \"fadeIn\":\n    case \"fadeOut\":\n    case \"flip\":\n    case \"flipInX\":\n    case \"flipInY\":\n    case \"flipOutX\":\n    case \"flipOutY\":\n    case \"hinge\":\n    case \"jackInTheBox\":\n      // style.overflow = \"visible\";\n      if (animationRef.value) {\n        animationRef.value.getElement().parentElement.style.overflow =\n          \"visible\";\n      }\n      break;\n    default:\n      // style.overflow = \"hidden\";\n      if (animationRef.value) {\n        animationRef.value.getElement().parentElement.style.overflow = \"hidden\";\n      }\n      break;\n  }\n\n  // backfaceVisibility\n  switch (animationName) {\n    case \"flip\":\n    case \"flipInX\":\n    case \"flipInY\":\n    case \"flipOutX\":\n    case \"flipOutY\":\n      style.backfaceVisibility = \"visible\";\n      break;\n    default:\n      delete style.backfaceVisibility;\n      break;\n  }\n}\n\nlet s1;\nlet s2;\nconst mount = (box) => {\n  s1 = animationStart$(box.el).subscribe((e) => {\n    emits(\"cssanimationstart\", e);\n  });\n  s2 = animationEnd$(box.el).subscribe((e) => {\n    emits(\"cssanimationend\", e);\n  });\n};\n\n// 清除\nconst clear = () => {\n  style.animation = \"none\";\n};\n\nconst set = (animationName: SupportedCSSAnimation) => {\n  if (animationRef.value) {\n    // restart css animation\n    const el = animationRef.value.getElement();\n    el.style.animation = \"none\";\n    el.offsetHeight; /* trigger reflow */\n    el.style.animation = null;\n  }\n  // style.animationName = `${animationName}`;\n  // style.animationDuration = `${duration}ms`;\n  // style.animationDelay = `${delay}ms`;\n  // style.animationIterationCount = `${repeat}`;\n  // style.animationFillMode = `${props.fillMode}`;\n  // style.animationTimingFunction = `${timingFunction}`;\n  // style.animationDirection = `${direction}`;\n  // style.animationPlayState = `${props.playState}`;\n  style.animation = `${duration}ms ${timingFunction} ${delay}ms ${repeat} ${direction} ${props.fillMode} ${props.playState} ${animationName}`;\n};\n\nconst trigger = (newAnimationName?: SupportedCSSAnimation) => {\n  clear();\n  changeEffect(newAnimationName || props.name);\n  direction = \"normal\";\n  set(newAnimationName || props.name);\n};\n\nconst triggerReverse = (newAnimationName?: SupportedCSSAnimation) => {\n  clear();\n  changeEffect(newAnimationName || props.name);\n  direction = \"reverse\";\n  set(newAnimationName || props.name);\n};\n\nonUnmounted(() => {\n  s1?.unsubscribe();\n  s2?.unsubscribe();\n});\n\ndefineExpose({ trigger, triggerReverse, clear });\n</script>\n\n<template>\n  <Box\n    ref=\"animationRef\"\n    class=\"css-animation\"\n    display-type=\"empty\"\n    :style=\"style\"\n    @mount=\"mount\"\n  >\n    <slot></slot>\n  </Box>\n</template>\n\n<style>\n@import \"../../../../../css/animate_ce.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref, reactive } from \"vue\";\nimport {\n  Easing,\n  EasingFunction,\n  SupportedEaseNameToCubicBezier,\n  Timeline,\n  TweenValue\n} from \"@zyzgroup/core-web\";\nimport Box from \"./Box.vue\";\nimport CSSAnimation, { SupportedCSSAnimation } from \"./CSSAnimation.vue\";\n\nexport type SupportedPageEffect =\n  | \"static\"\n  | \"fade\"\n  | \"moveFromLeft\"\n  | \"moveToLeft\"\n  | \"moveFromRight\"\n  | \"moveToRight\"\n  | \"moveFromTop\"\n  | \"moveToTop\"\n  | \"moveFromBottom\"\n  | \"moveToBottom\"\n  | \"moveFromLeftFade\"\n  | \"moveToLeftFade\"\n  | \"moveFromRightFade\"\n  | \"moveToRightFade\"\n  | \"moveFromTopFade\"\n  | \"moveToTopFade\"\n  | \"moveFromBottomFade\"\n  | \"moveToBottomFade\"\n  | \"scaleFromSmall\"\n  | \"scaleToSmall\"\n  | \"scaleFromLarge\"\n  | \"scaleToLarge\"\n  | \"scaleFromSmallCenter\"\n  | \"scaleToSmallCenter\"\n  | \"rotateRightSideFirst\"\n  | \"rotateLeftSideFirst\"\n  | \"rotateTopSideFirst\"\n  | \"rotateBottomSideFirst\"\n  | \"flipOutRight\"\n  | \"flipInLeft\"\n  | \"flipOutLeft\"\n  | \"flipInRight\"\n  | \"flipOutTop\"\n  | \"flipInBottom\"\n  | \"flipOutBottom\"\n  | \"flipInTop\"\n  | \"rotateFall\"\n  | \"rotateOutNewspaper\"\n  | \"rotateInNewspaper\"\n  | \"rotatePushLeft\"\n  | \"rotatePushRight\"\n  | \"rotatePushTop\"\n  | \"rotatePushBottom\"\n  | \"rotatePullRight\"\n  | \"rotatePullLeft\"\n  | \"rotatePullTop\"\n  | \"rotatePullBottom\"\n  | \"rotateFoldRight\"\n  | \"rotateFoldLeft\"\n  | \"rotateFoldTop\"\n  | \"rotateFoldBottom\"\n  | \"rotateUnfoldLeft\"\n  | \"rotateUnfoldRight\"\n  | \"rotateUnfoldTop\"\n  | \"rotateUnfoldBottom\"\n  | \"rotateRoomLeftOut\"\n  | \"rotateRoomLeftIn\"\n  | \"rotateRoomRightOut\"\n  | \"rotateRoomRightIn\"\n  | \"rotateRoomTopOut\"\n  | \"rotateRoomTopIn\"\n  | \"rotateRoomBottomOut\"\n  | \"rotateRoomBottomIn\"\n  | \"rotateCubeLeftOut\"\n  | \"rotateCubeLeftIn\"\n  | \"rotateCubeRightOut\"\n  | \"rotateCubeRightIn\"\n  | \"rotateCubeTopOut\"\n  | \"rotateCubeTopIn\"\n  | \"rotateCubeBottomOut\"\n  | \"rotateCubeBottomIn\"\n  | \"rotateCarouselLeftOut\"\n  | \"rotateCarouselLeftIn\"\n  | \"rotateCarouselRightOut\"\n  | \"rotateCarouselRightIn\"\n  | \"rotateCarouselTopOut\"\n  | \"rotateCarouselTopIn\"\n  | \"rotateCarouselBottomOut\"\n  | \"rotateCarouselBottomIn\"\n  | \"rotateSidesOut\"\n  | \"rotateSidesIn\"\n  | \"rotateSlideOut\"\n  | \"rotateSlideIn\";\n\n// type AtomEffect =\n//   | \"moveFromLeft\"\n//   | \"moveToLeft\"\n//   | \"moveFromRight\"\n//   | \"moveToRight\"\n//   | \"moveFromTop\"\n//   | \"moveToTop\"\n//   | \"moveFromBottom\"\n//   | \"moveToBottom\"\n//   | \"fadeOut\"\n//   | \"fadeIn\"\n//   | \"disappear\"\n//   | \"appear\"\n//   | \"scaleFromSmall\"\n//   | \"scaleToSmall\"\n//   | \"scaleFromLarge\"\n//   | \"scaleToLarge\"\n//   | \"scaleFromSmallCenter\"\n//   | \"scaleToSmallCenter\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { CSSAnimation },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    effect?: SupportedPageEffect;\n    duration?: number;\n    /// js ease\n    easeFunction?: EasingFunction;\n    /// css ease\n    timingFunction?: SupportedEaseNameToCubicBezier;\n    delay?: number;\n  }>(),\n  {\n    effect: \"moveFromLeft\",\n    duration: 500,\n    easeFunction: Easing.Cubic.InOut,\n    timingFunction: \"ease\",\n    delay: 0\n  }\n);\n\nconst emits = defineEmits<{\n  (\n    event: \"mount\",\n    open: (effect?: SupportedPageEffect) => void,\n    close: (effect?: SupportedPageEffect) => void\n  ): void;\n  (event: \"pageOpenStart\"): void;\n  (event: \"pageOpenEnd\"): void;\n  (event: \"pageCloseStart\"): void;\n  (event: \"pageCloseEnd\"): void;\n}>();\n\nconst pageRef = ref();\nconst style = reactive<Record<string, string>>({});\n\nconst cssAnimationRef = ref();\nlet cssAnimationName: SupportedCSSAnimation = \"rotateRightSideFirst\";\n\nfunction runDependOnEffectType(\n  cssAnimationTask: () => void,\n  jsAnimationTask: () => void\n) {\n  switch (props.effect) {\n    case \"static\":\n      // JS Animation\n      jsAnimationTask();\n      break;\n    default:\n      // CSS Animation\n      cssAnimationTask();\n      break;\n  }\n}\n\n// const _addAtomEffect = (\n//   attrFrom: Record<string, number>,\n//   attrTo: Record<string, number>,\n//   effect: AtomEffect\n// ) => {\n//   switch (effect) {\n//     case \"moveFromLeft\":\n//       attrFrom.x = -100;\n//       attrTo.x = 0;\n//       break;\n//     case \"moveToLeft\":\n//       attrFrom.x = 0;\n//       attrTo.x = -100;\n//       break;\n//     case \"moveFromRight\":\n//       attrFrom.x = 100;\n//       attrTo.x = 0;\n//       break;\n//     case \"moveToRight\":\n//       attrFrom.x = 0;\n//       attrTo.x = 100;\n//       break;\n//     case \"moveFromTop\":\n//       attrFrom.y = -100;\n//       attrTo.y = 0;\n//       break;\n//     case \"moveToTop\":\n//       attrFrom.y = 0;\n//       attrTo.y = -100;\n//       break;\n//     case \"moveFromBottom\":\n//       attrFrom.y = 100;\n//       attrTo.y = 0;\n//       break;\n//     case \"moveToBottom\":\n//       attrFrom.y = 0;\n//       attrTo.y = 100;\n//       break;\n//     case \"fadeOut\":\n//       attrFrom.opacity = 1;\n//       attrTo.opacity = 0.3;\n//       break;\n//     case \"fadeIn\":\n//       attrFrom.opacity = 0.3;\n//       attrTo.opacity = 1;\n//       break;\n//     case \"disappear\":\n//       attrFrom.opacity = 1;\n//       attrTo.opacity = 0;\n//       break;\n//     case \"appear\":\n//       attrFrom.opacity = 0;\n//       attrTo.opacity = 1;\n//       break;\n//     case \"scaleFromSmall\":\n//       attrFrom.scale = 0.8;\n//       attrTo.scale = 1;\n//       break;\n//     case \"scaleToSmall\":\n//       attrFrom.scale = 1;\n//       attrTo.scale = 0.8;\n//       break;\n//     case \"scaleFromLarge\":\n//       attrFrom.scale = 1.2;\n//       attrTo.scale = 1;\n//       break;\n//     case \"scaleToLarge\":\n//       attrFrom.scale = 1;\n//       attrTo.scale = 1.2;\n//       break;\n//     case \"scaleFromSmallCenter\":\n//       attrFrom.scale = 0.7;\n//       attrTo.scale = 1;\n//       break;\n//     case \"scaleToSmallCenter\":\n//       attrFrom.scale = 1;\n//       attrTo.scale = 0.7;\n//       break;\n//   }\n// };\n\nlet isOpen = true;\n\nconst timeline = new Timeline();\nconst changeEffect = (effect: SupportedPageEffect) => {\n  const triggerFrom: Record<string, number> = {};\n  const triggerTo: Record<string, number> = {};\n  switch (effect) {\n    case \"static\":\n      break;\n    // 统一用 css animation ，抹平与 js animation 的差异\n    // case \"moveFromLeft\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveFromLeft\");\n    //   break;\n    // case \"moveToLeft\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveToLeft\");\n    //   break;\n    // case \"moveFromRight\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveFromRight\");\n    //   break;\n    // case \"moveToRight\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveToRight\");\n    //   break;\n    // case \"moveFromTop\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveFromTop\");\n    //   break;\n    // case \"moveToTop\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveToTop\");\n    //   break;\n    // case \"moveFromBottom\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveFromBottom\");\n    //   break;\n    // case \"moveToBottom\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveToBottom\");\n    //   break;\n    // case \"fade\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"fadeOut\");\n    //   break;\n    // case \"moveFromLeftFade\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveFromLeft\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"fadeIn\");\n    //   break;\n    // case \"moveToLeftFade\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveToLeft\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"fadeOut\");\n    //   break;\n    // case \"moveFromRightFade\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveFromRight\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"fadeIn\");\n    //   break;\n    // case \"moveToRightFade\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveToRight\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"fadeOut\");\n    //   break;\n    // case \"moveFromTopFade\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveFromTop\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"fadeIn\");\n    //   break;\n    // case \"moveToTopFade\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveToTop\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"fadeOut\");\n    //   break;\n    // case \"moveFromBottomFade\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveFromBottom\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"fadeIn\");\n    //   break;\n    // case \"moveToBottomFade\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"moveToBottom\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"fadeOut\");\n    //   break;\n    // case \"scaleFromSmall\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"scaleFromSmall\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"appear\");\n    //   break;\n    // case \"scaleToSmall\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"scaleToSmall\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"disappear\");\n    //   break;\n    // case \"scaleFromLarge\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"scaleFromLarge\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"appear\");\n    //   break;\n    // case \"scaleToLarge\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"scaleToLarge\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"disappear\");\n    //   break;\n    // case \"scaleFromSmallCenter\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"scaleFromSmallCenter\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"appear\");\n    //   break;\n    // case \"scaleToSmallCenter\":\n    //   _addAtomEffect(triggerFrom, triggerTo, \"scaleToSmallCenter\");\n    //   _addAtomEffect(triggerFrom, triggerTo, \"disappear\");\n    //   break;\n  }\n  timeline.clear();\n  timeline.frameDuration = props.duration;\n  runDependOnEffectType(\n    () => {\n      // CSS Animation\n      cssAnimationName = effect as SupportedCSSAnimation;\n    },\n    () => {\n      // JS Animation\n      timeline.addTween(triggerFrom, triggerTo, {\n        delay: props.delay / props.duration,\n        easeFunction: props.easeFunction,\n        onStart: () => {\n          if (isOpen) {\n            emits(\"pageOpenStart\");\n          } else {\n            emits(\"pageCloseStart\");\n          }\n        },\n        onUpdate: (attrs: TweenValue) => {\n          style.transform = \"\";\n          if (\"x\" in attrs) {\n            style.transform += ` translateX(${attrs.x}%)`;\n          }\n          if (\"y\" in attrs) {\n            style.transform += ` translateY(${attrs.y}%)`;\n          }\n          if (\"rx\" in attrs) {\n            style.transform += ` rotateX(${attrs.rx}deg)`;\n          }\n          if (\"ry\" in attrs) {\n            style.transform += ` rotateY(${attrs.ry}deg)`;\n          }\n          if (\"scale\" in attrs) {\n            style.transform += ` scale(${attrs.scale})`;\n          }\n          if (\"opacity\" in attrs) {\n            style.opacity = `${attrs.opacity}`;\n          }\n        },\n        onComplete: () => {\n          if (isOpen) {\n            emits(\"pageOpenEnd\");\n          } else {\n            emits(\"pageCloseEnd\");\n          }\n        }\n      });\n    }\n  );\n};\n\nconst cssanimationstart = () => {\n  if (isOpen) {\n    emits(\"pageOpenStart\");\n  } else {\n    emits(\"pageCloseStart\");\n  }\n};\n\nconst cssanimationend = () => {\n  if (isOpen) {\n    emits(\"pageOpenEnd\");\n  } else {\n    emits(\"pageCloseEnd\");\n  }\n};\n\n// 清除\nconst clear = () => {\n  // clear js style\n  style.transform = \"none\";\n  style.opacity = \"1\";\n  // clear css style\n  cssAnimationRef.value?.clear();\n};\n\nconst open = (newEffect?: SupportedPageEffect) => {\n  changeEffect(newEffect || props.effect);\n  isOpen = true;\n  runDependOnEffectType(\n    () => {\n      // CSS Animation\n      // clear js style\n      style.transform = \"none\";\n      style.opacity = \"1\";\n      cssAnimationRef.value?.trigger(cssAnimationName);\n    },\n    () => {\n      // JS Animation\n      // clear css style\n      cssAnimationRef.value?.clear();\n      timeline.play();\n    }\n  );\n};\n\nconst close = (newEffect?: SupportedPageEffect) => {\n  changeEffect(newEffect || props.effect);\n  isOpen = false;\n  runDependOnEffectType(\n    () => {\n      // CSS Animation\n      cssAnimationRef.value?.triggerReverse(cssAnimationName);\n    },\n    () => {\n      // JS Animation\n      timeline.reverse();\n    }\n  );\n};\n\ndefineExpose({\n  open,\n  close,\n  clear\n});\n</script>\n\n<template>\n  <CSSAnimation\n    ref=\"cssAnimationRef\"\n    class=\"page-inner\"\n    :style=\"{\n      position: 'relative',\n      display: 'block',\n      width: '100%',\n      height: '100%',\n      overflow: 'scroll',\n      backfaceVisibility: 'hidden',\n      transformStyle: 'preserve-3d',\n      ...style\n    }\"\n    :duration=\"props.duration\"\n    :delay=\"props.delay\"\n    :timingFunction=\"props.timingFunction\"\n    @cssanimationstart=\"cssanimationstart\"\n    @cssanimationend=\"cssanimationend\"\n  >\n    <Box\n      ref=\"pageRef\"\n      class=\"page\"\n      display-type=\"full\"\n      :style=\"{\n        overflow: 'hidden'\n      }\"\n      @mount=\"() => emits('mount', open, close)\"\n    >\n      <slot></slot>\n    </Box>\n  </CSSAnimation>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, VNode, render, h, Component, isVNode } from \"vue\";\nimport {\n  createTask,\n  generateUUID,\n  ScheduleDependOnResult\n} from \"@zyzgroup/core-common\";\nimport {\n  Easing,\n  EasingFunction,\n  // CSSToJSEasing,\n  // reverseCSSToJSEasing,\n  SupportedEaseNameToCubicBezier\n} from \"@zyzgroup/core-web\";\n// import { elementsToVNodes } from \"../vnode\";\nimport Page, { SupportedPageEffect } from \"./Page.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Page },\n  inheritAttrs: true\n});\n\nexport type SupportedRouteEffect =\n  | \"moveToLeft\"\n  | \"moveToRight\"\n  | \"moveToTop\"\n  | \"moveToBottom\"\n  | \"moveFromLeftPrevFade\"\n  | \"moveFromRightPrevFade\"\n  | \"moveFromTopPrevFade\"\n  | \"moveFromBottomPrevFade\"\n  | \"moveToLeftFade\"\n  | \"moveToRightFade\"\n  | \"moveToTopFade\"\n  | \"moveToBottomFade\"\n  | \"moveToLeftEasing\"\n  | \"moveToRightEasing\"\n  | \"moveToTopEasing\"\n  | \"moveToBottomEasing\"\n  | \"moveFromLeftPrevScaleToSmall\"\n  | \"moveFromRightPrevScaleToSmall\"\n  | \"moveFromTopPrevScaleToSmall\"\n  | \"moveFromBottomPrevScaleToSmall\" // ⭐\n  | \"scaleSmall\"\n  | \"scaleLarge\"\n  | \"scaleToLargePrevScaleToSmall\"\n  | \"scaleFromSmallPrevMoveToLeft\"\n  | \"scaleFromSmallPrevMoveToRight\"\n  | \"scaleFromSmallPrevMoveToTop\"\n  | \"scaleFromSmallPrevMoveToBottom\"\n  | \"glueToLeft\"\n  | \"glueToRight\"\n  | \"glueToTop\"\n  | \"glueToBottom\"\n  | \"flipToLeft\"\n  | \"flipToRight\"\n  | \"flipToTop\"\n  | \"flipToBottom\"\n  | \"rotateFall\"\n  | \"newspaper\"\n  | \"moveFromLeftPrevPush\"\n  | \"moveFromRightPrevPush\"\n  | \"moveFromTopPrevPush\"\n  | \"moveFromBottomPrevPush\"\n  | \"pullFromLeftPrevPush\"\n  | \"pullFromRightPrevPush\"\n  | \"pullFromTopPrevPush\"\n  | \"pullFromBottomPrevPush\"\n  | \"moveFromLeftFadePrevFold\"\n  | \"moveFromRightFadePrevFold\"\n  | \"moveFromTopFadePrevFold\"\n  | \"moveFromBottomFadePrevFold\"\n  | \"moveToLeftFadePrevUnfold\"\n  | \"moveToRightFadePrevUnfold\"\n  | \"moveToTopFadePrevUnfold\"\n  | \"moveToBottomFadePrevUnfold\"\n  | \"rotateRoomLeftIn\"\n  | \"rotateRoomRightIn\"\n  | \"rotateRoomTopIn\"\n  | \"rotateRoomBottomIn\"\n  | \"rotateCubeLeftIn\"\n  | \"rotateCubeRightIn\"\n  | \"rotateCubeTopIn\"\n  | \"rotateCubeBottomIn\"\n  | \"rotateCarouselLeftIn\"\n  | \"rotateCarouselRightIn\"\n  | \"rotateCarouselTopIn\"\n  | \"rotateCarouselBottomIn\"\n  | \"rotateSidesIn\"\n  | \"rotateSlideIn\";\n\nconst props = withDefaults(\n  defineProps<{\n    effect?: SupportedRouteEffect;\n    duration?: number;\n    // js ease\n    easeFunction?: EasingFunction;\n    // differentEaseFunction?: EasingFunction;\n    // css ease\n    timingFunction?: SupportedEaseNameToCubicBezier;\n    delay?: number;\n  }>(),\n  {\n    effect: \"moveToLeft\",\n    duration: 500,\n    easeFunction: Easing.Cubic.InOut,\n    // differentEaseFunction: Easing.Quintic.InOut,\n    timingFunction: \"ease\",\n    delay: 0\n  }\n);\n\nconst emits = defineEmits<{\n  (\n    event: \"routeChangeStart\",\n    fromPageIndex: number,\n    toPageIndex: number,\n    totalPages: number\n  ): void;\n  (\n    event: \"routeChangeEnd\",\n    fromPageIndex: number,\n    toPageIndex: number,\n    totalPages: number\n  ): void;\n  (event: \"renderComplete\"): void;\n}>();\n\ntype VNodeChildAtom =\n  | VNode\n  | string\n  | number\n  | boolean\n  | null\n  | undefined\n  | void;\ntype VNodeArrayChildren = Array<VNodeArrayChildren | VNodeChildAtom>;\ntype RawChildren =\n  | string\n  | number\n  | boolean\n  | VNode\n  | VNodeArrayChildren\n  | (() => any);\ntype RawSlots = {\n  [name: string]: unknown;\n  $stable?: boolean;\n};\n\nexport type PageArgument = {\n  pageKey?: string;\n  // pageAttributes?: InstanceType<typeof Page>;\n  component: VNode | Component | HTMLElement;\n  attributes?: Record<string, any>;\n  child?: RawChildren | RawSlots;\n};\n\nlet currentPageIndex = -1;\nlet nextPageIndex = -1;\n\nlet onRenderComplete: () => void;\n\nconst onRouteCompletes: (() => void)[] = [];\n\nlet pages: PageArgument[] = [];\nlet pageActions: {\n  open: () => void;\n  close: () => void;\n}[] = [];\nlet pageElements: HTMLElement[] = [];\n\nfunction isValidPageIndex(pageIndex: number): boolean {\n  return pageIndex >= 0 && pageIndex < pages.length;\n}\n\nfunction isForward(): boolean {\n  return nextPageIndex > currentPageIndex;\n}\n\n// page effect\nfunction _getPageEffect(\n  pageIndex: number,\n  currentPageEffect: SupportedPageEffect,\n  nextPageEffect: SupportedPageEffect\n): SupportedPageEffect {\n  switch (pageIndex) {\n    case currentPageIndex:\n      return isForward() ? currentPageEffect : nextPageEffect;\n    case nextPageIndex:\n      return isForward() ? nextPageEffect : currentPageEffect;\n    default:\n      return \"static\";\n  }\n}\nfunction getPageEffect(\n  routeEffect: SupportedRouteEffect,\n  pageIndex: number\n): SupportedPageEffect {\n  switch (routeEffect) {\n    case \"moveToLeft\":\n      return _getPageEffect(pageIndex, \"moveToLeft\", \"moveFromRight\");\n    case \"moveToRight\":\n      return _getPageEffect(pageIndex, \"moveToRight\", \"moveFromLeft\");\n    case \"moveToTop\":\n      return _getPageEffect(pageIndex, \"moveToTop\", \"moveFromBottom\");\n    case \"moveToBottom\":\n      return _getPageEffect(pageIndex, \"moveToBottom\", \"moveFromTop\");\n\n    case \"moveFromLeftPrevFade\":\n      return _getPageEffect(pageIndex, \"fade\", \"moveFromLeft\");\n    case \"moveFromRightPrevFade\":\n      return _getPageEffect(pageIndex, \"fade\", \"moveFromRight\");\n    case \"moveFromTopPrevFade\":\n      return _getPageEffect(pageIndex, \"fade\", \"moveFromTop\");\n    case \"moveFromBottomPrevFade\":\n      return _getPageEffect(pageIndex, \"fade\", \"moveFromBottom\");\n\n    case \"moveToLeftFade\":\n      return _getPageEffect(pageIndex, \"moveToLeftFade\", \"moveFromRightFade\");\n    case \"moveToRightFade\":\n      return _getPageEffect(pageIndex, \"moveToRightFade\", \"moveFromLeftFade\");\n    case \"moveToTopFade\":\n      return _getPageEffect(pageIndex, \"moveToTopFade\", \"moveFromBottomFade\");\n    case \"moveToBottomFade\":\n      return _getPageEffect(pageIndex, \"moveToBottomFade\", \"moveFromTopFade\");\n\n    case \"moveToLeftEasing\":\n      return _getPageEffect(pageIndex, \"moveToLeft\", \"moveFromRight\");\n    case \"moveToRightEasing\":\n      return _getPageEffect(pageIndex, \"moveToRight\", \"moveFromLeft\");\n    case \"moveToTopEasing\":\n      return _getPageEffect(pageIndex, \"moveToTop\", \"moveFromBottom\");\n    case \"moveToBottomEasing\":\n      return _getPageEffect(pageIndex, \"moveToBottom\", \"moveFromTop\");\n\n    case \"moveFromLeftPrevScaleToSmall\":\n      return _getPageEffect(pageIndex, \"scaleToSmall\", \"moveFromLeft\");\n    case \"moveFromRightPrevScaleToSmall\":\n      return _getPageEffect(pageIndex, \"scaleToSmall\", \"moveFromRight\");\n    case \"moveFromTopPrevScaleToSmall\":\n      return _getPageEffect(pageIndex, \"scaleToSmall\", \"moveFromTop\");\n    case \"moveFromBottomPrevScaleToSmall\":\n      return _getPageEffect(pageIndex, \"scaleToSmall\", \"moveFromBottom\");\n\n    case \"scaleSmall\":\n      return _getPageEffect(pageIndex, \"scaleToSmall\", \"scaleFromLarge\");\n    case \"scaleLarge\":\n      return _getPageEffect(pageIndex, \"scaleToLarge\", \"scaleFromSmall\");\n    case \"scaleToLargePrevScaleToSmall\":\n      return _getPageEffect(\n        pageIndex,\n        \"scaleToSmallCenter\",\n        \"scaleFromSmallCenter\"\n      );\n\n    case \"scaleFromSmallPrevMoveToLeft\":\n      return _getPageEffect(pageIndex, \"moveToLeft\", \"scaleFromSmall\");\n    case \"scaleFromSmallPrevMoveToRight\":\n      return _getPageEffect(pageIndex, \"moveToRight\", \"scaleFromSmall\");\n    case \"scaleFromSmallPrevMoveToTop\":\n      return _getPageEffect(pageIndex, \"moveToTop\", \"scaleFromSmall\");\n    case \"scaleFromSmallPrevMoveToBottom\":\n      return _getPageEffect(pageIndex, \"moveToBottom\", \"scaleFromSmall\");\n\n    case \"glueToLeft\":\n      return _getPageEffect(pageIndex, \"rotateRightSideFirst\", \"moveFromRight\");\n    case \"glueToRight\":\n      return _getPageEffect(pageIndex, \"rotateLeftSideFirst\", \"moveFromLeft\");\n    case \"glueToTop\":\n      return _getPageEffect(\n        pageIndex,\n        \"rotateBottomSideFirst\",\n        \"moveFromBottom\"\n      );\n    case \"glueToBottom\":\n      return _getPageEffect(pageIndex, \"rotateTopSideFirst\", \"moveFromTop\");\n\n    case \"flipToLeft\":\n      return _getPageEffect(pageIndex, \"flipOutLeft\", \"flipInRight\");\n    case \"flipToRight\":\n      return _getPageEffect(pageIndex, \"flipOutRight\", \"flipInLeft\");\n    case \"flipToTop\":\n      return _getPageEffect(pageIndex, \"flipOutTop\", \"flipInBottom\");\n    case \"flipToBottom\":\n      return _getPageEffect(pageIndex, \"flipOutBottom\", \"flipInTop\");\n\n    case \"rotateFall\":\n      return _getPageEffect(pageIndex, \"rotateFall\", \"scaleFromSmall\");\n\n    case \"newspaper\":\n      return _getPageEffect(\n        pageIndex,\n        \"rotateOutNewspaper\",\n        \"rotateInNewspaper\"\n      );\n\n    case \"moveFromLeftPrevPush\":\n      return _getPageEffect(pageIndex, \"rotatePushRight\", \"moveFromLeft\");\n    case \"moveFromRightPrevPush\":\n      return _getPageEffect(pageIndex, \"rotatePushLeft\", \"moveFromRight\");\n    case \"moveFromTopPrevPush\":\n      return _getPageEffect(pageIndex, \"rotatePushBottom\", \"moveFromTop\");\n    case \"moveFromBottomPrevPush\":\n      return _getPageEffect(pageIndex, \"rotatePushTop\", \"moveFromBottom\");\n\n    case \"pullFromLeftPrevPush\":\n      return _getPageEffect(pageIndex, \"rotatePushRight\", \"rotatePullLeft\");\n    case \"pullFromRightPrevPush\":\n      return _getPageEffect(pageIndex, \"rotatePushLeft\", \"rotatePullRight\");\n    case \"pullFromTopPrevPush\":\n      return _getPageEffect(pageIndex, \"rotatePushBottom\", \"rotatePullTop\");\n    case \"pullFromBottomPrevPush\":\n      return _getPageEffect(pageIndex, \"rotatePushTop\", \"rotatePullBottom\");\n\n    case \"moveFromLeftFadePrevFold\":\n      return _getPageEffect(pageIndex, \"rotateFoldRight\", \"moveFromLeftFade\");\n    case \"moveFromRightFadePrevFold\":\n      return _getPageEffect(pageIndex, \"rotateFoldLeft\", \"moveFromRightFade\");\n    case \"moveFromTopFadePrevFold\":\n      return _getPageEffect(pageIndex, \"rotateFoldBottom\", \"moveFromTopFade\");\n    case \"moveFromBottomFadePrevFold\":\n      return _getPageEffect(pageIndex, \"rotateFoldTop\", \"moveFromBottomFade\");\n\n    case \"moveToLeftFadePrevUnfold\":\n      return _getPageEffect(pageIndex, \"moveToLeftFade\", \"rotateUnfoldRight\");\n    case \"moveToRightFadePrevUnfold\":\n      return _getPageEffect(pageIndex, \"moveToRightFade\", \"rotateUnfoldLeft\");\n    case \"moveToTopFadePrevUnfold\":\n      return _getPageEffect(pageIndex, \"moveToTopFade\", \"rotateUnfoldBottom\");\n    case \"moveToBottomFadePrevUnfold\":\n      return _getPageEffect(pageIndex, \"moveToBottomFade\", \"rotateUnfoldTop\");\n\n    case \"rotateRoomLeftIn\":\n      return _getPageEffect(pageIndex, \"rotateRoomLeftOut\", \"rotateRoomLeftIn\");\n    case \"rotateRoomRightIn\":\n      return _getPageEffect(\n        pageIndex,\n        \"rotateRoomRightOut\",\n        \"rotateRoomRightIn\"\n      );\n    case \"rotateRoomTopIn\":\n      return _getPageEffect(pageIndex, \"rotateRoomTopOut\", \"rotateRoomTopIn\");\n    case \"rotateRoomBottomIn\":\n      return _getPageEffect(\n        pageIndex,\n        \"rotateRoomBottomOut\",\n        \"rotateRoomBottomIn\"\n      );\n\n    case \"rotateCubeLeftIn\":\n      return _getPageEffect(pageIndex, \"rotateCubeLeftOut\", \"rotateCubeLeftIn\");\n    case \"rotateCubeRightIn\":\n      return _getPageEffect(\n        pageIndex,\n        \"rotateCubeRightOut\",\n        \"rotateCubeRightIn\"\n      );\n    case \"rotateCubeTopIn\":\n      return _getPageEffect(pageIndex, \"rotateCubeTopOut\", \"rotateCubeTopIn\");\n    case \"rotateCubeBottomIn\":\n      return _getPageEffect(\n        pageIndex,\n        \"rotateCubeBottomOut\",\n        \"rotateCubeBottomIn\"\n      );\n\n    case \"rotateCarouselLeftIn\":\n      return _getPageEffect(\n        pageIndex,\n        \"rotateCarouselLeftOut\",\n        \"rotateCarouselLeftIn\"\n      );\n    case \"rotateCarouselRightIn\":\n      return _getPageEffect(\n        pageIndex,\n        \"rotateCarouselRightOut\",\n        \"rotateCarouselRightIn\"\n      );\n    case \"rotateCarouselTopIn\":\n      return _getPageEffect(\n        pageIndex,\n        \"rotateCarouselTopOut\",\n        \"rotateCarouselTopIn\"\n      );\n    case \"rotateCarouselBottomIn\":\n      return _getPageEffect(\n        pageIndex,\n        \"rotateCarouselBottomOut\",\n        \"rotateCarouselBottomIn\"\n      );\n\n    case \"rotateSidesIn\":\n      return _getPageEffect(pageIndex, \"rotateSidesOut\", \"rotateSidesIn\");\n    case \"rotateSlideIn\":\n      return _getPageEffect(pageIndex, \"rotateSlideOut\", \"rotateSlideIn\");\n  }\n}\n\n// duration\nfunction _getPageDuration(\n  pageIndex: number,\n  currentDuration = 600,\n  nextDuration = 600\n): number {\n  switch (pageIndex) {\n    case currentPageIndex:\n      return currentDuration;\n    case nextPageIndex:\n      return nextDuration;\n    default:\n      return props.duration;\n  }\n}\nfunction getPageDuration(\n  routeEffect: SupportedRouteEffect,\n  pageIndex: number\n): number {\n  switch (routeEffect) {\n    case \"moveFromLeftFadePrevFold\":\n    case \"moveFromRightFadePrevFold\":\n    case \"moveFromTopFadePrevFold\":\n    case \"moveFromBottomFadePrevFold\":\n      return _getPageDuration(pageIndex, 700, 700);\n    case \"moveToLeftEasing\":\n    case \"moveToRightEasing\":\n    case \"moveToTopEasing\":\n    case \"moveToBottomEasing\":\n    case \"moveFromLeftPrevScaleToSmall\":\n    case \"moveFromRightPrevScaleToSmall\":\n    case \"moveFromTopPrevScaleToSmall\":\n    case \"moveFromBottomPrevScaleToSmall\":\n      return _getPageDuration(pageIndex, 700, 600);\n    case \"scaleSmall\":\n      return _getPageDuration(pageIndex, 700, 500);\n    case \"scaleLarge\":\n      return _getPageDuration(pageIndex, 500, 700);\n    case \"scaleToLargePrevScaleToSmall\":\n      return _getPageDuration(pageIndex, 400, 400);\n    case \"scaleFromSmallPrevMoveToLeft\":\n    case \"scaleFromSmallPrevMoveToRight\":\n    case \"scaleFromSmallPrevMoveToTop\":\n    case \"scaleFromSmallPrevMoveToBottom\":\n      return _getPageDuration(pageIndex, 600, 700);\n    case \"glueToLeft\":\n    case \"glueToRight\":\n    case \"glueToTop\":\n    case \"glueToBottom\":\n      return _getPageDuration(pageIndex, 800, 600);\n    default:\n      return props.duration;\n  }\n}\n\n// js ease\nlet timingFunction = props.timingFunction;\n// function _getPageEaseFunctionFromCSS(pageIndex: number): EasingFunction {\n//   switch (pageIndex) {\n//     case currentPageIndex:\n//     case nextPageIndex:\n//       return isForward()\n//         ? CSSToJSEasing(timingFunction)\n//         : reverseCSSToJSEasing(timingFunction);\n//     default:\n//       return props.easeFunction;\n//   }\n// }\nfunction _getPageEaseFunction(pageIndex: number): EasingFunction {\n  switch (pageIndex) {\n    // case currentPageIndex:\n    //   return props.differentEaseFunction;\n    // case nextPageIndex:\n    default:\n      return props.easeFunction;\n  }\n}\nfunction getPageEaseFunction(\n  routeEffect: SupportedRouteEffect,\n  pageIndex: number\n): EasingFunction {\n  /// css animation 和 js animation 混合\n  // switch (routeEffect) {\n  //   case \"moveFromLeftFadePrevFold\":\n  //   case \"moveFromRightFadePrevFold\":\n  //   case \"moveFromTopFadePrevFold\":\n  //   case \"moveFromBottomFadePrevFold\":\n  //     timingFunction = \"ease\";\n  //     return _getPageEaseFunctionFromCSS(pageIndex);\n  //   default:\n  //     timingFunction = props.timingFunction;\n  //     break;\n  // }\n  /// js animation\n  switch (routeEffect) {\n    case \"moveToLeftEasing\":\n    case \"moveToRightEasing\":\n    case \"moveToTopEasing\":\n    case \"moveToBottomEasing\":\n      switch (pageIndex) {\n        case currentPageIndex:\n          timingFunction = isForward() ? \"ease-in-out\" : \"ease\";\n          break;\n        case nextPageIndex:\n        default:\n          timingFunction = isForward() ? \"ease\" : \"ease-in-out\";\n      }\n      return _getPageEaseFunction(pageIndex);\n    default:\n      timingFunction = props.timingFunction;\n      return props.easeFunction;\n  }\n}\n\n// delay\nfunction _getPageDelay(pageIndex: number, delay = 300): number {\n  switch (pageIndex) {\n    case nextPageIndex:\n      return props.delay + delay;\n    default:\n      return props.delay;\n  }\n}\nfunction getPageDelay(\n  routeEffect: SupportedRouteEffect,\n  pageIndex: number\n): number {\n  switch (routeEffect) {\n    case \"flipToLeft\":\n    case \"flipToRight\":\n    case \"flipToTop\":\n    case \"flipToBottom\":\n    case \"newspaper\":\n      return _getPageDelay(pageIndex, 500);\n    case \"scaleSmall\":\n    case \"scaleLarge\":\n      return _getPageDelay(pageIndex, 300);\n    case \"scaleToLargePrevScaleToSmall\":\n      return _getPageDelay(pageIndex, 400);\n    case \"glueToLeft\":\n    case \"glueToRight\":\n    case \"glueToTop\":\n    case \"glueToBottom\":\n    case \"rotateSidesIn\":\n      return _getPageDelay(pageIndex, 200);\n    case \"pullFromLeftPrevPush\":\n    case \"pullFromRightPrevPush\":\n    case \"pullFromTopPrevPush\":\n    case \"pullFromBottomPrevPush\":\n      return _getPageDelay(pageIndex, 180);\n    default:\n      return props.delay;\n  }\n}\n\nlet currentZIndex = 2;\nlet nextZIndex = 2;\nconst sameOnTop = () => {\n  currentZIndex = 2;\n  nextZIndex = 2;\n};\nconst nextOnTop = () => {\n  currentZIndex = 2;\n  nextZIndex = 3;\n};\nconst currentOnTop = () => {\n  currentZIndex = 3;\n  nextZIndex = 2;\n};\nfunction setRunningStyle(pageIndex: number) {\n  switch (props.effect) {\n    case \"moveToLeftEasing\":\n    case \"moveToRightEasing\":\n    case \"moveToTopEasing\":\n    case \"moveToBottomEasing\":\n      currentOnTop();\n      break;\n    case \"scaleFromSmallPrevMoveToLeft\":\n    case \"scaleFromSmallPrevMoveToRight\":\n    case \"scaleFromSmallPrevMoveToTop\":\n    case \"scaleFromSmallPrevMoveToBottom\":\n    case \"rotateFall\":\n    case \"rotateRoomLeftIn\":\n    case \"rotateRoomRightIn\":\n    case \"rotateRoomTopIn\":\n    case \"rotateRoomBottomIn\":\n    case \"rotateCubeLeftIn\":\n    case \"rotateCubeRightIn\":\n    case \"rotateCubeTopIn\":\n    case \"rotateCubeBottomIn\":\n    case \"rotateCarouselLeftIn\":\n    case \"rotateCarouselRightIn\":\n    case \"rotateCarouselTopIn\":\n    case \"rotateCarouselBottomIn\":\n      isForward() ? currentOnTop() : nextOnTop();\n      break;\n    case \"moveFromLeftPrevFade\":\n    case \"moveFromRightPrevFade\":\n    case \"moveFromTopPrevFade\":\n    case \"moveFromBottomPrevFade\":\n    case \"moveFromLeftPrevScaleToSmall\":\n    case \"moveFromRightPrevScaleToSmall\":\n    case \"moveFromTopPrevScaleToSmall\":\n    case \"moveFromBottomPrevScaleToSmall\":\n    case \"glueToLeft\":\n    case \"glueToRight\":\n    case \"glueToTop\":\n    case \"glueToBottom\":\n      isForward() ? nextOnTop() : currentOnTop();\n      break;\n    default:\n      sameOnTop();\n      break;\n  }\n  if (isValidPageIndex(currentPageIndex) && currentPageIndex == pageIndex) {\n    pageElements[currentPageIndex].style.zIndex = `${currentZIndex}`;\n    pageElements[currentPageIndex].style.visibility = \"visible\";\n  }\n  if (isValidPageIndex(nextPageIndex) && nextPageIndex == pageIndex) {\n    pageElements[nextPageIndex].style.zIndex = `${nextZIndex}`;\n    pageElements[nextPageIndex].style.visibility = \"visible\";\n  }\n}\n\n// css animation 与 js animation 有时间差\nfunction emitsEnd(pageIndex: number) {\n  nextOnTop();\n  if (pageIndex == currentPageIndex) {\n    pageElements[currentPageIndex].style.zIndex = `${currentZIndex}`;\n    pageElements[currentPageIndex].style.visibility = \"hidden\";\n  }\n  if (pageIndex == nextPageIndex) {\n    pageElements[nextPageIndex].style.zIndex = `${nextZIndex}`;\n    pageElements[nextPageIndex].style.visibility = \"visible\";\n    onRouteCompletes.shift()?.();\n    emits(\"routeChangeEnd\", currentPageIndex, nextPageIndex, pages.length);\n    currentPageIndex = nextPageIndex;\n  }\n}\n\nconst routesRef = ref();\nfunction renderPages(appendCount = 0, isReset = false) {\n  if (!routesRef.value) {\n    return;\n  }\n  let renderCount = 0;\n  render(\n    h(\n      \"div\",\n      {\n        class: \"routes-pages\",\n        style: {\n          display: \"block\",\n          width: \"100%\",\n          height: \"100%\",\n          overflow: \"hidden\",\n          position: \"relative\"\n        }\n      },\n      pages.map((page, index) => {\n        // 初始化\n        const pageEffect = getPageEffect(props.effect, index);\n        return h(\n          \"div\",\n          Object.assign(\n            {\n              class: \"routes-page\",\n              style: {\n                display: \"block\",\n                width: \"100%\",\n                height: \"100%\",\n                overflow: \"hidden\",\n                position: \"absolute\",\n                top: \"0\",\n                left: \"0\",\n                backfaceVisibility: \"hidden\",\n                transform: \"translate3d(0, 0, 0)\",\n                transformStyle: \"preserve-3d\",\n                visibility: currentPageIndex == index ? \"visible\" : \"hidden\",\n                zIndex: isReset ? \"1\" : \"0\"\n              }\n            },\n            page.pageKey\n              ? { key: page.pageKey }\n              : {\n                  // 无 key 不会重复利用\n                }\n          ),\n          h(\n            Page,\n            {\n              // ...page.pageAttributes,\n              effect: pageEffect,\n              duration: getPageDuration(props.effect, index),\n              easeFunction: getPageEaseFunction(props.effect, index),\n              timingFunction: timingFunction,\n              delay: getPageDelay(props.effect, index),\n              onMount: (open, close) => {\n                // console.log(\"onMount \", index);\n                pageActions[index] = {\n                  open,\n                  close\n                };\n                // 渲染结束\n                if (++renderCount == appendCount) {\n                  onRenderComplete?.();\n                  emits(\"renderComplete\");\n                }\n              },\n              onPageOpenStart: () => {\n                // console.log(\"onPageOpenStart \", index);\n                setRunningStyle(index);\n              },\n              onPageOpenEnd: () => {\n                // console.log(\"onPageOpenEnd \", index);\n                emitsEnd(index);\n              },\n              onPageCloseStart: () => {\n                // console.log(\"onPageCloseStart \", index);\n                setRunningStyle(index);\n              },\n              onPageCloseEnd: () => {\n                // console.log(\"onPageCloseEnd \", index);\n                emitsEnd(index);\n              }\n            },\n            // () => h(page.component, page.attributes)\n            {\n              default: () =>\n                page.component instanceof HTMLElement\n                  ? h(\n                      \"div\",\n                      {\n                        ...page.attributes,\n                        innerHTML: page.component.innerHTML // ce 动态设置的 props 丢失 ！\n                      }\n                      // elementsToVNodes(page.component)\n                    )\n                  : isVNode(page.component)\n                  ? page.component\n                  : h(page.component, page.attributes, () => page.child)\n            }\n          )\n        );\n      })\n    ),\n    routesRef.value\n  );\n  pageElements = routesRef.value.children[0].children;\n}\n\nfunction reset(resetPages: PageArgument[] = []) {\n  pages = [...resetPages];\n  pages.forEach((p) => {\n    p.pageKey = p.pageKey || generateUUID();\n  });\n  onRenderComplete = () => {\n    currentPageIndex = -1;\n    goto(0);\n  };\n  renderPages(pages.length, true);\n}\n\nfunction push(page: PageArgument) {\n  page.pageKey = page.pageKey || generateUUID();\n  pages.push(page);\n  onRenderComplete = () => {\n    goto(pages.length - 1);\n  };\n  renderPages(1, pages.length == 1);\n}\n\nfunction pop() {\n  if (pages.length <= 1) {\n    return;\n  }\n  goto(pages.length - 2, () => {\n    pages.splice(pages.length - 1, 1);\n    // pop 中 onRenderComplete 不会执行\n    currentPageIndex = pages.length - 1;\n    renderPages();\n  });\n}\n\nfunction forward() {\n  goto(currentPageIndex + 1);\n}\n\nfunction back() {\n  goto(currentPageIndex - 1);\n}\n\n// const schedule = new ScheduleDependOnResult({ concurrency: 1 });\n\nfunction goto(index: number, cb?: () => void) {\n  // schedule.asap(\n  //   createTask({\n  //     fn: () =>\n  new Promise<void>((resolve) => {\n    const onRouteComplete = () => {\n      cb?.();\n      resolve();\n    };\n    if (!isValidPageIndex(index)) {\n      onRouteComplete();\n      return;\n    }\n    nextPageIndex = index;\n    if (nextPageIndex == currentPageIndex) {\n      onRouteComplete();\n      return;\n    }\n    // 执行动画\n    onRouteCompletes.push(onRouteComplete);\n    // 修改 page prop\n    renderPages();\n    emits(\"routeChangeStart\", currentPageIndex, nextPageIndex, pages.length);\n    if (isForward()) {\n      // forward\n      if (isValidPageIndex(currentPageIndex)) {\n        pageActions[currentPageIndex].open();\n      }\n      if (isValidPageIndex(nextPageIndex)) {\n        pageActions[nextPageIndex].open();\n      }\n    } else {\n      // back\n      if (isValidPageIndex(currentPageIndex)) {\n        pageActions[currentPageIndex].close();\n      }\n      if (isValidPageIndex(nextPageIndex)) {\n        pageActions[nextPageIndex].close();\n      }\n    }\n  });\n  //   })\n  // );\n}\n\ndefineExpose({\n  reset,\n  push,\n  pop,\n  forward,\n  back,\n  goto,\n  currentPageIndex: () => currentPageIndex,\n  totalPages: () => pages.length\n});\n</script>\n\n<template>\n  <div\n    ref=\"routesRef\"\n    class=\"routes\"\n    style=\"\n      display: block;\n      position: relative;\n      width: 100%;\n      height: 100%;\n      overflow: hidden;\n    \"\n  ></div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport {\n  useLoadImage,\n  Timeline,\n  ImageDisplayMode,\n  computeImageDisplayRect,\n  getViewportSize,\n  Easing\n} from \"@zyzgroup/core-web\";\nimport Box from \"../base/Box.vue\";\nimport Pop from \"../pop/Pop.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  name: \"Image\",\n  customOptions: { Pop },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    src: string;\n    mode?: ImageDisplayMode;\n    dur?: number;\n    bgColor?: string;\n    openImageDetailWhenClick?: boolean;\n  }>(),\n  {\n    mode: \"scaleToFill\",\n    dur: 300,\n    bgColor: \"transparent\",\n    openImageDetailWhenClick: true\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"mount\", rect: DOMRect): void;\n}>();\n\nconst popRef = ref();\nlet isOpenPop = false;\n\nconst imageRef = ref();\n\nconst tl = new Timeline({\n  frameDuration: props.dur\n});\n\n// 所占空间\nlet containerWidth = 0;\nlet containerHeight = 0;\n// 图片原始\nlet sourceWidth = 0;\nlet sourceHeight = 0;\n// 图片显示\nconst showWidth = ref(0);\nconst showHeight = ref(0);\n// pop最终位置\nlet finalX = 0;\nlet finalY = 0;\nlet finalWidth = 0;\nlet finalHeight = 0;\n// pop动态位置\nconst popX = ref(0);\nconst popY = ref(0);\nconst popWidth = ref(0);\nconst popHeight = ref(0);\n\n// const isCORS = ref(false);\n\nconst outterResize = (box) => {\n  containerWidth = box.rect.width;\n  containerHeight = box.rect.height;\n  if (!sourceWidth || !sourceHeight) {\n    // 初始化获取图片信息\n    useLoadImage(props.src)\n      .then((info: { width: number; height: number }) => {\n        // isCORS.value = false;\n        sourceWidth = info.width;\n        sourceHeight = info.height;\n      })\n      .catch(() => {\n        // isCORS.value = true;\n        sourceWidth = containerWidth;\n        sourceHeight = containerHeight;\n      })\n      .then(() => {\n        setImageWidthHeight();\n      });\n  } else {\n    setImageWidthHeight();\n  }\n};\n\nconst innerResize = (box) => {\n  if (box.rect.width || box.rect.height) {\n    emits(\"mount\", box.rect);\n  }\n};\n\nfunction setImageWidthHeight() {\n  if (!containerWidth || !containerHeight || !sourceWidth || !sourceHeight) {\n    return;\n  }\n  const wrapImageRect = computeImageDisplayRect(\n    props.mode,\n    sourceWidth,\n    sourceHeight,\n    containerWidth,\n    containerHeight\n  );\n  showWidth.value = wrapImageRect.width;\n  showHeight.value = wrapImageRect.height;\n  const { width: viewportWidth, height: viewportHeight } = getViewportSize();\n  const viewportImageRect = computeImageDisplayRect(\n    \"aspectFit\",\n    sourceWidth,\n    sourceHeight,\n    viewportWidth,\n    viewportHeight\n  );\n  finalWidth = viewportImageRect.width;\n  finalHeight = viewportImageRect.height;\n  finalX = (viewportWidth - finalWidth) / 2;\n  finalY = (viewportHeight - finalHeight) / 2;\n}\n\nfunction click() {\n  if (!props.openImageDetailWhenClick) {\n    return;\n  }\n  const rect = imageRef.value.getRect();\n  tl.clear();\n  tl.addTween(\n    {\n      left: rect.x,\n      top: rect.y,\n      width: showWidth.value,\n      height: showHeight.value\n    },\n    {\n      left: finalX,\n      top: finalY,\n      width: finalWidth,\n      height: finalHeight\n    },\n    {\n      easeFunction: Easing.Quadratic.Out,\n      onUpdate(data) {\n        popX.value = data.left;\n        popY.value = data.top;\n        popWidth.value = data.width;\n        popHeight.value = data.height;\n      },\n      onComplete() {\n        if (isOpenPop) {\n          popRef.value?.close();\n        }\n        isOpenPop = !isOpenPop;\n      }\n    }\n  );\n  if (!isOpenPop) {\n    popRef.value?.open();\n    tl.play();\n  }\n}\n\nfunction clickOverlay() {\n  if (isOpenPop) {\n    tl.reverse();\n  }\n}\n\ndefineExpose({});\n</script>\n\n<template>\n  <Box\n    class=\"image\"\n    displayType=\"full\"\n    :style=\"{ backgroundColor: props.bgColor }\"\n    @resize=\"outterResize\"\n    @throttle-click=\"click\"\n  >\n    <!-- <Box\n      v-if=\"!isCORS\"\n      display-type=\"shrink\"\n      @resize=\"innerResize\"\n    >\n      <img\n        :src=\"props.src\"\n        :style=\"{ display: 'block', objectFit: 'contain' }\"\n      />\n    </Box> -->\n    <!-- v-if=\"isCORS\" -->\n    <Box\n      ref=\"imageRef\"\n      class=\"image-inner\"\n      displayType=\"shrink\"\n      :style=\"{\n        width: showWidth + 'px',\n        height: showHeight + 'px',\n        backgroundImage: `url(${props.src})`,\n        backgroundSize: `${showWidth}px ${showHeight}px`\n      }\"\n      @resize=\"innerResize\"\n    ></Box>\n    <Pop\n      ref=\"popRef\"\n      direction-from=\"absolute\"\n      :pop-left=\"`${popX}px`\"\n      :pop-top=\"`${popY}px`\"\n      :close-when-click-overlay=\"false\"\n      @clickOverlay=\"clickOverlay\"\n    >\n      <div\n        class=\"image-pop\"\n        :style=\"{\n          width: popWidth + 'px',\n          height: popHeight + 'px',\n          backgroundImage: `url(${props.src})`,\n          backgroundSize: '100% 100%'\n        }\"\n      ></div>\n    </Pop>\n  </Box>\n</template>\n\n<style scoped>\n.image {\n  overflow: hidden;\n  display: flex !important;\n  justify-content: center;\n  align-items: center;\n}\n.image-inner,\n.image-pop {\n  background-repeat: no-repeat;\n  background-position: center center;\n  /* background-size: contain; */\n}\n/*\n.none {\n  object-fit: none;\n}\n.fill {\n  object-fit: fill;\n}\n.cover {\n  object-fit: cover;\n}\n.contain {\n  object-fit: contain;\n}\n.scale-down {\n  object-fit: scale-down;\n}\n*/\n</style>\n","<script setup lang=\"ts\">\nimport { onUnmounted } from \"vue\";\nimport { panLeft$, panRight$ } from \"@zyzgroup/core-web\";\nimport Box from \"./Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(defineProps<{}>(), {});\n\nconst emits = defineEmits<{\n  (event: \"left\", e: HammerInput): void;\n  (event: \"right\", e: HammerInput): void;\n}>();\n\nlet s1;\nlet s2;\n\nconst mount = (box) => {\n  if (!s1) {\n    s1 = panLeft$(box.el).subscribe((e) => {\n      emits(\"left\", e);\n    });\n  }\n  if (!s2) {\n    s2 = panRight$(box.el).subscribe((e) => {\n      emits(\"right\", e);\n    });\n  }\n};\n\nonUnmounted(() => {\n  s1?.unsubscribe();\n  s2?.unsubscribe();\n});\n\ndefineExpose({});\n</script>\n\n<template>\n  <Box\n    class=\"pan\"\n    display-type=\"empty\"\n    @mount=\"mount\"\n  >\n    <slot></slot>\n  </Box>\n</template>\n\n<style></style>\n","<script setup lang=\"ts\">\nimport { ref, h, watchEffect } from \"vue\";\nimport { hasClass } from \"@zyzgroup/core-web\";\nimport Routes, { SupportedRouteEffect } from \"../base/Routes.vue\";\nimport Pop from \"../pop/Pop.vue\";\nimport Image from \"./Image.vue\";\nimport Pan from \"../base/Pan.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Image, Routes },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    urls: string[];\n    effect?: SupportedRouteEffect;\n  }>(),\n  {\n    urls: () => [],\n    effect: \"moveToLeftFade\"\n  }\n);\n\nconst emits = defineEmits<{\n  // (event: \"click\"): void;\n}>();\n\nconst currentIndex = ref(0);\nfunction routeChangeEnd(fromPageIndex: number, toPageIndex: number) {\n  currentIndex.value = toPageIndex;\n}\n\nconst routesRef = ref();\n\nwatchEffect(() => {\n  if (!routesRef.value) {\n    return;\n  }\n  routesRef.value.reset(\n    props.urls.map((url) => ({\n      component: h(Image, {\n        mode: \"aspectFit\",\n        src: url,\n        openImageDetailWhenClick: false\n      })\n    }))\n  );\n});\n\nconst panLeft = () => {\n  routesRef.value?.forward();\n};\nconst panRight = () => {\n  routesRef.value?.back();\n};\n\nconst popRef = ref();\nfunction open() {\n  popRef.value?.open();\n}\nfunction close() {\n  popRef.value?.close();\n}\n\nconst checkClose = (e: Event) => {\n  // console.log(e.target);\n  if (e.target && hasClass(e.target as HTMLElement, \"image\")) {\n    close();\n  }\n};\n\ndefineExpose({ open, close });\n</script>\n\n<template>\n  <Pop\n    ref=\"popRef\"\n    directionFrom=\"full\"\n    @click=\"checkClose\"\n  >\n    <div\n      v-if=\"props.urls.length > 1\"\n      style=\"\n        position: absolute;\n        top: 30px;\n        left: 50%;\n        transform: translate(-50%, 0);\n        color: #ffffff;\n        font-size: 1em;\n        z-index: 98;\n      \"\n    >\n      {{ currentIndex + 1 }} / {{ props.urls.length }}\n    </div>\n    <Pan\n      style=\"\n        position: absolute;\n        top: 50%;\n        transform: translate(0, -50%);\n        width: 100%;\n        height: 100%;\n        z-index: 97;\n      \"\n      @left=\"panLeft\"\n      @right=\"panRight\"\n    >\n      <Routes\n        ref=\"routesRef\"\n        :effect=\"props.effect\"\n        @routeChangeEnd=\"routeChangeEnd\"\n      />\n    </Pan>\n  </Pop>\n</template>\n","<script setup lang=\"tsx\">\nimport { ref, onMounted, inject } from \"vue\";\nimport { Context } from \"@zyzgroup/core-web\";\nimport { useRouter } from \"../../hooks\";\nimport LayoutPage from \"../layout/LayoutPage.vue\";\nimport Footer from \"./Footer.vue\";\nimport PlateDisplay from \"../plate/PlateDisplay.vue\";\nimport ImageView from \"../image/ImageView.vue\";\nimport ViewDocument from \"../form/ViewDocument.vue\";\nimport PopTel from \"../pop/PopTel.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {\n    LayoutPage,\n    Footer,\n    PlateDisplay,\n    ViewDocument,\n    PopTel,\n    ImageView\n  },\n  inheritAttrs: true\n});\n\nconst router = useRouter();\n\nlet billsn = ref(0);\nlet fee = ref(0);\n\nfunction viewDocument() {\n  router.push({\n    name: \"view-document\",\n    params: {\n      title: \"收费标准\",\n      src: encodeURIComponent(\n        \"https://erichd2.oss-cn-shanghai.aliyuncs.com/0000/0002/2159\"\n      )\n    }\n  });\n}\n\nconst popTelEl = ref();\nfunction call() {\n  popTelEl.value?.open();\n}\n\nconst imageViewEl = ref();\nfunction viewPhotos() {\n  imageViewEl.value?.open();\n}\n\nconst context = inject<Context>(\"context\");\n\nonMounted(() => {\n  context.axios\n    .post(`/api/v6/lot/740/getwithorder6`, {\n      openid: \"quickpassapp\"\n    })\n    .then((result) => {\n      // console.log(result);\n      // console.log(JSON.stringify(result));\n      billsn.value = result.data.bill.sn;\n      fee.value = result.data.bill.fee;\n    })\n    .catch((result) => {\n      // console.log(result);\n      // console.log(JSON.stringify(result));\n    });\n});\n</script>\n\n<template>\n  <LayoutPage class=\"lot\">\n    <div class=\"lot-main-bg\"></div>\n    <div class=\"lot-main\">\n      <div>若临测试泊位机器人停车场</div>\n      <div>\n        <div></div>\n        <div>编号</div>\n        <div></div>\n      </div>\n      <div>\n        <span>103</span>\n        <span>003</span>\n      </div>\n      <div>\n        <!-- <div>停车场主页</div>\n        <div>更换附近车位</div>\n        <div @click=\"viewDocument\">收费标准</div> -->\n      </div>\n      <div class=\"lot-detail\">\n        <div>\n          <div>待支付</div>\n          <div class=\"red\">￥{{ (fee / 100).toFixed(2) }}</div>\n        </div>\n        <!-- <div>\n          <div>已支付</div>\n          <div>￥0.01</div>\n        </div> -->\n        <div>\n          <div>订单编号</div>\n          <div>33333333333</div>\n        </div>\n        <div>\n          <div>开始时间</div>\n          <div>2025-04-08 09:41:25</div>\n        </div>\n        <div>\n          <div>停车时长</div>\n          <div>1小时53分钟15秒</div>\n        </div>\n        <!-- <div>\n          <div>优惠券</div>\n          <div class=\"red\">1分钟</div>\n        </div>\n        <div>\n          <div>优惠信息</div>\n          <div class=\"red\">xxxx</div>\n        </div> -->\n        <!-- <div>\n          <div>包月开始时间</div>\n          <div>2025-04-08 09:41:25</div>\n        </div>\n        <div>\n          <div>包月结束时间</div>\n          <div>2025-04-08 09:41:25</div>\n        </div> -->\n        <div class=\"lot-detail-gap\"></div>\n        <div>\n          <div>车牌号</div>\n          <div class=\"bold\">\n            <PlateDisplay\n              plate=\"苏U77777\"\n              plate-type=\"b\"\n            ></PlateDisplay>\n          </div>\n        </div>\n        <!-- <div>\n          <div>现场照片</div>\n          <div @click=\"viewPhotos\">查看</div>\n        </div> -->\n      </div>\n      <div class=\"lot-actions\">\n        <div @click=\"call\">联系客服</div>\n      </div>\n    </div>\n    <template #footer><Footer :billsn=\"billsn\"></Footer></template>\n    <template #global>\n      <PopTel\n        tel=\"15851575410\"\n        ref=\"popTelEl\"\n      ></PopTel>\n      <ImageView\n        :urls=\"[\n          'https://erichd2.oss-cn-shanghai.aliyuncs.com/0000/0002/2159',\n          'https://erichd2.oss-cn-shanghai.aliyuncs.com/0000/0002/2159'\n        ]\"\n        ref=\"imageViewEl\"\n      ></ImageView>\n    </template>\n  </LayoutPage>\n</template>\n\n<style scoped>\n.lot-main-bg {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1;\n  width: 100%;\n  height: 5.2rem;\n  border-bottom-left-radius: 2rem 0.5rem;\n  border-bottom-right-radius: 2rem 0.5rem;\n  background: linear-gradient(180deg, #5a82f0 0%, #66b3ff 100%);\n}\n.lot-main {\n  position: relative;\n  z-index: 2;\n  width: 100%;\n  overflow: hidden;\n  box-sizing: border-box;\n  line-height: 1;\n  color: #ffffff;\n  padding: 0 0.3rem;\n  margin-bottom: 0.3rem;\n  text-align: center;\n}\n.lot-main > div:nth-child(1) {\n  font-size: 0.32rem;\n  padding-top: 0.4rem;\n  word-break: break-all;\n  font-weight: bold;\n}\n.lot-main > div:nth-child(2) > div:nth-child(1) {\n  width: 2.4rem;\n  height: 0.04rem;\n  background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, #ffffff 100%);\n}\n.lot-main > div:nth-child(2) > div:nth-child(3) {\n  width: 2.4rem;\n  height: 0.04rem;\n  background: linear-gradient(90deg, #ffffff 0%, rgba(255, 255, 255, 0) 100%);\n}\n.lot-main > div:nth-child(2) > div:nth-child(2) {\n  width: 1rem;\n  font-size: 0.28rem;\n  line-height: 0.32rem;\n}\n.lot-main > div:nth-child(2) {\n  display: flex;\n  align-items: center;\n  margin: 0.28rem auto 0;\n  width: 4.8rem;\n  position: relative;\n}\n.lot-main > div:nth-child(3) {\n  font-family: \"D-DINExp-Bold-number\";\n  margin-top: 0.12rem;\n  font-size: 0.8rem;\n  letter-spacing: 0.06rem;\n}\n.lot-main > div:nth-child(3) > span + span {\n  margin-left: 0.3rem;\n}\n.lot-main > div:nth-child(4) {\n  display: flex;\n  justify-content: space-between;\n  font-size: 0.28rem;\n  line-height: 0.28rem;\n  margin: 0.3rem 0;\n}\n.lot-main > div:nth-child(4) > div {\n  flex: 1 1 auto;\n  text-align: center;\n}\n.lot-main > div:nth-child(4) > div + div {\n  border-left: 1px solid rgba(255, 255, 255, 0.4);\n}\n.lot-detail {\n  position: relative;\n  background: #ffffff;\n  box-shadow: 0 0.04rem 0.1rem rgba(0, 0, 0, 0.1);\n  border-radius: 0.08rem;\n  padding: 0 0.3rem 0.1rem;\n  font-size: 0.28rem;\n  color: #666666;\n}\n.lot-detail > div {\n  line-height: 0.4rem;\n  margin: 0.2rem auto;\n  display: flex;\n  justify-content: space-between;\n}\n.lot-detail > div:nth-child(1) {\n  border-bottom: 1px solid var(--yz-xg-border-color);\n  line-height: 0.88rem;\n  margin: 0 0 0.2rem;\n  font-weight: bold;\n}\n.lot-detail > div:nth-child(1) > div:nth-child(2) {\n  font-size: 0.4rem;\n}\n.lot-detail > div > div:nth-child(1) {\n  flex: 0 0 auto;\n  padding-right: 0.2rem;\n}\n.lot-detail > div > div:nth-child(2) {\n  color: #333333;\n}\n.lot-detail-gap {\n  border-top: 1px solid var(--yz-xg-border-color);\n}\n.lot-actions {\n  margin: 0.2rem 0;\n  background: #ffffff;\n  box-shadow: 0px 0.04rem 0.1rem rgba(0, 0, 0, 0.1);\n  border-radius: 0.08rem;\n  display: flex;\n  align-items: center;\n  font-size: 0.28rem;\n}\n.lot-actions > div {\n  flex: 1;\n  line-height: 0.88rem;\n  position: relative;\n  cursor: pointer;\n  color: var(--yz-xg-primary);\n  text-align: center;\n  font-weight: 700;\n}\n</style>\n","<script setup lang=\"ts\">\nimport Button from \"../components/form/Button.vue\";\n\nimport { useRouter } from \"../hooks\";\nconst router = useRouter();\n\nfunction gotoShape() {\n  router.push(\"/shape\");\n}\n\nfunction gotoShowcase() {\n  router.push(\"/cs\");\n}\n\nfunction gotoXGLot() {\n  router.push(\"/lot\");\n}\n\nfunction gotoRxmarbles() {\n  router.push(\"/rx\");\n}\n</script>\n<template>\n  <div>\n    <div class=\"gap\">\n      <Button @throttle-click=\"gotoShape\">Shape</Button>\n    </div>\n    <div class=\"gap\">\n      <Button @throttle-click=\"gotoShowcase\">Component ShowCase</Button>\n    </div>\n    <div class=\"gap\">\n      <Button @throttle-click=\"gotoXGLot\">XG lot</Button>\n    </div>\n    <div class=\"gap\">\n      <Button @throttle-click=\"gotoRxmarbles\">Rx Marbles</Button>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.gap {\n  padding: 10px;\n}\n</style>\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Stats = function () {\n  var mode = 0;\n\n  var container = document.createElement(\"div\");\n  container.style.cssText =\n    \"position:fixed;top:0;right:0;cursor:pointer;opacity:0.9;z-index:10000\";\n  container.addEventListener(\n    \"click\",\n    function (event) {\n      event.preventDefault();\n      showPanel(++mode % container.children.length);\n    },\n    false\n  );\n\n  //\n\n  function addPanel(panel) {\n    container.appendChild(panel.dom);\n    return panel;\n  }\n\n  function showPanel(id) {\n    for (var i = 0; i < container.children.length; i++) {\n      container.children[i].style.display = i === id ? \"block\" : \"none\";\n    }\n\n    mode = id;\n  }\n\n  //\n\n  var beginTime = (performance || Date).now(),\n    prevTime = beginTime,\n    frames = 0;\n\n  var fpsPanel = addPanel(new Stats.Panel(\"FPS\", \"#0ff\", \"#002\"));\n  var msPanel = addPanel(new Stats.Panel(\"MS\", \"#0f0\", \"#020\"));\n\n  if (self.performance && self.performance.memory) {\n    var memPanel = addPanel(new Stats.Panel(\"MB\", \"#f08\", \"#201\"));\n  }\n\n  showPanel(0);\n\n  return {\n    REVISION: 16,\n\n    dom: container,\n\n    addPanel: addPanel,\n    showPanel: showPanel,\n\n    begin: function () {\n      beginTime = (performance || Date).now();\n    },\n\n    end: function () {\n      frames++;\n\n      var time = (performance || Date).now();\n\n      msPanel.update(time - beginTime, 200);\n\n      if (time > prevTime + 1000) {\n        fpsPanel.update((frames * 1000) / (time - prevTime), 100);\n\n        prevTime = time;\n        frames = 0;\n\n        if (memPanel) {\n          var memory = performance.memory;\n          memPanel.update(\n            memory.usedJSHeapSize / 1048576,\n            memory.jsHeapSizeLimit / 1048576\n          );\n        }\n      }\n\n      return time;\n    },\n\n    update: function () {\n      beginTime = this.end();\n    },\n\n    // Backwards Compatibility\n\n    domElement: container,\n    setMode: showPanel\n  };\n};\n\nStats.Panel = function (name, fg, bg) {\n  var min = Infinity,\n    max = 0,\n    round = Math.round;\n  var PR = round(window.devicePixelRatio || 1);\n\n  var WIDTH = 80 * PR,\n    HEIGHT = 48 * PR,\n    TEXT_X = 3 * PR,\n    TEXT_Y = 2 * PR,\n    GRAPH_X = 3 * PR,\n    GRAPH_Y = 15 * PR,\n    GRAPH_WIDTH = 74 * PR,\n    GRAPH_HEIGHT = 30 * PR;\n\n  var canvas = document.createElement(\"canvas\");\n  canvas.width = WIDTH;\n  canvas.height = HEIGHT;\n  canvas.style.cssText = \"width:80px;height:48px\";\n\n  var context = canvas.getContext(\"2d\");\n  context.font = \"bold \" + 9 * PR + \"px Helvetica,Arial,sans-serif\";\n  context.textBaseline = \"top\";\n\n  context.fillStyle = bg;\n  context.fillRect(0, 0, WIDTH, HEIGHT);\n\n  context.fillStyle = fg;\n  context.fillText(name, TEXT_X, TEXT_Y);\n  context.fillRect(GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT);\n\n  context.fillStyle = bg;\n  context.globalAlpha = 0.9;\n  context.fillRect(GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT);\n\n  return {\n    dom: canvas,\n\n    update: function (value, maxValue) {\n      min = Math.min(min, value);\n      max = Math.max(max, value);\n\n      context.fillStyle = bg;\n      context.globalAlpha = 1;\n      context.fillRect(0, 0, WIDTH, GRAPH_Y);\n      context.fillStyle = fg;\n      context.fillText(\n        round(value) + \" \" + name + \" (\" + round(min) + \"-\" + round(max) + \")\",\n        TEXT_X,\n        TEXT_Y\n      );\n\n      context.drawImage(\n        canvas,\n        GRAPH_X + PR,\n        GRAPH_Y,\n        GRAPH_WIDTH - PR,\n        GRAPH_HEIGHT,\n        GRAPH_X,\n        GRAPH_Y,\n        GRAPH_WIDTH - PR,\n        GRAPH_HEIGHT\n      );\n\n      context.fillRect(GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT);\n\n      context.fillStyle = bg;\n      context.globalAlpha = 0.9;\n      context.fillRect(\n        GRAPH_X + GRAPH_WIDTH - PR,\n        GRAPH_Y,\n        PR,\n        round((1 - value / maxValue) * GRAPH_HEIGHT)\n      );\n    }\n  };\n};\n\nexport { Stats as default };\n","<script setup>\nimport { ref, onMounted } from \"vue\";\nimport { requestAnimationFrameCycle } from \"@zyzgroup/core-web\";\nimport Stats from \"@lib/third/stats/stats.js\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst containerRef = ref();\n\nonMounted(() => {\n  const stats = new Stats();\n  stats.domElement.style.margin = \"1em\";\n  containerRef.value.appendChild(stats.domElement);\n  requestAnimationFrameCycle(() => {\n    stats.update();\n    return true;\n  });\n});\n\ndefineExpose({});\n</script>\n\n<template>\n  <div ref=\"containerRef\"></div>\n</template>\n","<script setup lang=\"ts\">\nimport { onUnmounted, ref, watch } from \"vue\";\nimport { lerpMap, maxDotNumber, stepMap } from \"@zyzgroup/core-common\";\nimport { getCSSVar, injectStyle } from \"@zyzgroup/core-web\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    min?: number;\n    max?: number;\n    step?: number;\n    defaultValue?: number;\n    unit?: string;\n    showValue?: boolean;\n    autofocus?: boolean;\n    color?: string;\n    barColor?: string;\n    handleSize?: number;\n    barHeight?: number;\n  }>(),\n  {\n    min: 0,\n    max: 100,\n    step: 1,\n    defaultValue: 0,\n    unit: \"\",\n    showValue: true,\n    autofocus: false,\n    color: getCSSVar(\"--yz-xg-blue\", \"#5a82f0\"),\n    barColor: \"#f5f5f5\",\n    handleSize: 20,\n    barHeight: 4\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"change\", value: number): void;\n}>();\n\nconst getStep = stepMap(props.min, props.max, props.step);\nconst getPercent = lerpMap(props.min, props.max, 0, 100);\n\nconst value = ref(getStep(props.defaultValue));\nconst percent = ref(maxDotNumber(getPercent(value.value), 2));\n\nfunction change(e: Event) {\n  value.value = getStep(parseFloat((e.target as HTMLInputElement).value));\n  percent.value = maxDotNumber(getPercent(value.value), 2);\n  emits(\"change\", value.value);\n}\n\nconst r = ref();\nwatch(r, () => {\n  if (!r.value) {\n    return;\n  }\n  /// for ce\n  injectStyle(\n    `\n  :root {\n    --input-range-color: ${props.color};\n    --input-range-thumb-size: ${props.handleSize}px;\n    --input-range-thumb-top: ${(props.handleSize - props.barHeight) * -0.5}px;\n    --input-range-track-size: ${props.barHeight}px;\n  }\n  :host {\n    --input-range-color: ${props.color};\n    --input-range-thumb-size: ${props.handleSize}px;\n    --input-range-thumb-top: ${(props.handleSize - props.barHeight) * -0.5}px;\n    --input-range-track-size: ${props.barHeight}px;\n  }\n`,\n    r.value\n  );\n});\n\nonUnmounted(() => {});\n\ndefineExpose({});\n</script>\n\n<template>\n  <div\n    class=\"input-range\"\n    ref=\"r\"\n    :style=\"{ height: props.handleSize + 'px' }\"\n  >\n    <input\n      type=\"range\"\n      :max=\"props.max\"\n      :min=\"props.min\"\n      :step=\"props.step\"\n      :value=\"value\"\n      :autofocus=\"props.autofocus\"\n      @input=\"change\"\n      :style=\"{\n        background: `linear-gradient(to right, ${props.color} 0%, ${props.color} ${percent}%, ${props.barColor} ${percent}%, ${props.barColor})`\n      }\"\n    />\n    <!-- <slot :value=\"value\">\n      <label\n        class=\"label\"\n        v-if=\"showValue\"\n      >\n        {{ value }}{{ props.unit }}\n      </label>\n    </slot> -->\n  </div>\n</template>\n\n<!--\n  ce 中不要使用v-bind\n-->\n<style scoped>\n.input-range {\n  position: relative;\n  box-sizing: border-box;\n  font-size: 1em;\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  align-items: center;\n  width: 100%;\n  overflow: hidden;\n}\n.label {\n  min-width: 3em;\n  text-align: right;\n}\ninput[type=\"range\"] {\n  flex: 1 1 auto;\n  -webkit-appearance: none;\n  appearance: none;\n  border-radius: 9999px;\n  margin: 0;\n  padding: 0;\n  position: relative;\n}\ninput[type=\"range\"]:focus {\n  outline: none;\n}\n/*\ninput[type=\"range\"]::-webkit-slider-container {\n  overflow: hidden;\n}\n*/\ninput[type=\"range\"]::-webkit-slider-runnable-track {\n  height: var(--input-range-track-size);\n  border-radius: 9999px;\n}\ninput[type=\"range\"]::-webkit-slider-thumb {\n  -webkit-appearance: none;\n  appearance: none;\n  height: var(--input-range-thumb-size);\n  width: var(--input-range-thumb-size);\n  margin-top: var(--input-range-thumb-top);\n  background: var(--input-range-color);\n  border-radius: 50%;\n  cursor: pointer;\n}\n</style>\n","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"1000\\\" height=\\\"850\\\">\\n<title>Blank map of China (provinces only)</title>\\n<defs>\\n  <style type=\\\"text/css\\\">\\n\\t<!-- For colouring of individual provinces, append to the bottom of the list   #p<province> {fill:<color>}, for example #pHE {fill:#8080ff} . -->\\n\\t<!-- Options for disputed areas are #pXJd and #pXZd for PRC-controlled areas, and #pTW for Taiwan. -->\\n\\n\\t.province {fill:#d3d3d3}\\n\\t#pXJd, #pXZd {fill:#e8e8e8}\\n\\n  </style>\\n</defs>\\n  <g\\n     id=\\\"layer3\\\"\\n\\t class=\\\"disputed\\\"\\n\\t style=\\\"display:inline;fill-opacity:1;fill:#e8e8e8;stroke:#808080;stroke-width:0.5\\\">\\n    <path\\n       id=\\\"AksaiChin\\\"\\n\\t   style=\\\"fill:#e8e8e8;fill-opacity:1\\\"\\n       d=\\\"m76.224,451.63 0.631,-2.72 -0.253,-0.88 0.316,-1.27 0.632,-0.18 1.325,0.5 0.505,-0.13 -0.189,-1.89 0.316,-0.63 -0.758,-1.2 -0.06,-2.46 -0.505,-1.01 0.757,-0.82 1.263,-0.45 1.642,0.89 0.947,-0.44 1.262,0.31 1.2,0.1 2.778,0.89 0.694,-0.63 1.705,-1.27 -0.126,-1.26 0.379,-0.57 0.694,0.45 0.316,-0.76 0.06,-3.35 0.252,-0.88 0.884,-0.32 1.831,1.01 1.326,-0.5 -0.253,-1.64 0.316,-0.57 2.084,-0.19 1.073,-1.83 2.972,0.63 0.44,-0.38 1.26,-2.27 1.64,-1.39 0.95,-3.73 0.1,-1.45 2.27,-1.77 0.45,-0.94 -0.19,-1.46 0.56,-1.01 1.71,-0.94 0.82,-2.09 -0.63,-0.44 -1.07,0.1 -0.95,-1.19 -0.76,-0.1 -0.95,1.71 -1.83,1.01 -0.75,-0.57 v-2.72 l-0.89,-1.89 -1.2,1.01 -0.69,-0.32 -0.25,-1.45 -1.84,-0.63 -0.31,-1.7 -0.317,-1.14 0.757,-0.69 -0.32,-0.83 -0.627,-0.12 -0.126,-0.82 -1.578,0.12 -0.947,-0.75 0.442,-1.58 -0.442,-0.7 -1.452,-0.56 -1.579,0.31 -1.01,0.1 -1.389,-0.44 -3.662,0.7 -1.389,-1.14 -1.389,-0.38 -1.136,0.25 -0.821,1.27 -2.967,0.88 -1.389,-0.13 -1.263,0.7 -1.325,0.1 -1.389,1.07 -1.137,0.1 -1.01,0.69 -0.442,1.01 -0.694,-0.12 -1.453,-0.95 h-0.631 l-0.757,0.88 h-1.666 l0.456,0.94 3.104,-0.32 0.568,0.64 -1.705,2.96 -0.568,1.77 1.136,4.23 0.127,1.58 -0.19,2.21 0.695,1.58 0.252,2.59 -0.252,1.45 1.01,2.27 2.02,0.88 3.346,1.46 1.452,1.83 0.695,1.39 1.894,1.13 0.758,1.33 -0.442,2.4 -1.2,1.07 -3.977,0.63 -0.442,2.09 0.126,2.08 0.252,2.21 -0.315,1.7 -1.01,3.67 0.947,3.72z\\\"/>\\n\\t<g id=\\\"pTW\\\">\\n\\t  <path\\n\\t\\t id=\\\"pTW_1\\\"\\n\\t\\t d=\\\"m883.26,721.47 2.33,-0.71 0.53,-4.82 -1.07,-4.47 1.25,-5.89 3.57,-5.71 1.97,-6.79 1.07,-6.43 0.71,-18.39 0.72,-5.54 0.89,-1.42 v-3.75 l-1.25,-1.43 -1.07,-2.86 1.78,-2.86 0.72,-1.6 -1.25,-1.43 -3.57,-0.9 h-1.61 l-1.79,-2.14 h-2.5 l-1.25,1.97 0.54,2.14 -4.29,1.61 -3.03,2.5 -1.43,3.21 -0.54,3.93 -2.32,2.5 -1.61,5.89 -1.78,5.18 -2.68,6.25 -1.43,5.18 -0.53,5.53 0.35,5.18 1.43,2.32 2.14,3.22 1.97,5.71 2.5,3.4 3.03,1.25 2.86,0.71 2.32,3.04 1.43,3.75 v2.14z\\\"/>\\n\\t  <path\\n\\t\\t id=\\\"pTW_2\\\"\\n\\t\\t d=\\\"m826.3,673.26 1.96,0.36 -0.89,1.43 h-1.96z\\\"/>\\n\\t  <path\\n\\t\\t id=\\\"pTW_3\\\"\\n\\t\\t d=\\\"m803.82,761.15 -0.63,0.88 h1.52 l0.5,-0.75z\\\"/>\\n\\t</g>\\n\\t<g id=\\\"Kashmir\\\" style=\\\"stroke:none\\\">\\n\\t\\t<path\\n\\t\\t\\tid=\\\"Kash_302\\\"\\n\\t\\t\\td=\\\"m77.49,471.85 1.199,-0.19 2.336,-1.26 1.547,-3.03 -1.547,-5.18 1.168,-2.52 -0.6,-1.77 -2.178,-0.95 -0.537,1.45 -0.789,0.98 -0.284,0.89 0.505,0.85 0.821,0.35 0.568,1.92 -0.536,1.3 -0.663,0.41 0.473,0.97 0.03,0.89 -0.663,1.51 0.252,0.89 -0.883,1.07z\\\"/>\\n\\t\\t<path\\n\\t\\t\\tid=\\\"Kash_304\\\"\\n\\t\\t\\td=\\\"m62.088,475.82 -1.263,0.38 0.09,1.7 0.789,-0.22 1.231,2.09 1.358,2.27 0.378,1.92 1.074,-1.35 -0.62,-1.6 -2.032,-2.54z\\\"/>\\n\\t\\t<path\\n\\t\\t\\tid=\\\"Kash_306\\\"\\n\\t\\t\\td=\\\"m64.929,497.25 0.915,1.87 0.06,1.8 0.536,1.1 2.967,1.23 h1.295 l1.041,0.1 -2.178,-7.29 -1.673,-0.44 -1.894,1.33z\\\"/>\\n\\t\\t<path\\n\\t\\t\\tid=\\\"Kash_308\\\"\\n\\t\\t\\td=\\\"m87.633,515.59 -1.01,-1.77 -1.452,0.1 -0.978,-1.1 -0.19,1.45 -0.09,0.94 1.042,0.41 0.884,1.17z\\\"/>\\n\\t</g>\\n\\t<path\\n\\t\\tid=\\\"SouthTibet\\\"\\n\\t\\tstyle=\\\"stroke:none\\\"\\n\\t\\td=\\\"m300.72,635.09 3.84,0.13 3.88,-0.71 2.99,-0.98 2.73,2.05 3.39,0.14 3.48,0.75 3.4,-0.44 1.69,0.31 0.98,-0.27 4.2,-0.8 2.37,-0.58 0.76,-3.35 3.08,-2.86 2.72,-1.65 2.86,-3.08 4.01,-0.76 6.83,-1.38 3,-1.88 2.5,-0.62 2.09,-1.25 2.1,-0.81 1.25,-3.48 11.43,-3.52 0.63,1.38 1.65,1.07 h2.77 l1.74,-0.72 1.29,2.15 1.43,0.22 0.45,-0.49 3.52,2.85 3.93,3.26 2.81,1.07 1.39,1.57 0.13,1.34 6.83,-4.42 0.58,-1.88 -0.62,-2.5 0.62,-1.96 -1.78,-0.14 -3.17,-3.08 -1.74,0.18 -0.85,0.49 -1.12,-0.44 -1.03,-0.63 -1.38,0.18 -1.96,-1.52 -2.15,-0.85 -2.41,0.9 -1.69,1.16 -2.06,-1.61 1.79,-0.85 -0.18,-1.11 0.45,-1.12 2.01,-0.94 0.17,-1.25 2.37,-1.2 0.1,-2.01 -1.12,-1.7 -0.8,-1.78 0.36,-1.66 h-0.99 l-2.81,1.12 -1.96,1.74 h-0.98 l0.1,-2.15 -0.18,-1.25 4.1,-2 1.08,-1.79 -0.67,-0.71 -2.15,0.66 -1.38,-1.25 -1.79,-3.43 -9.51,3.97 -1.2,2.68 -2.46,1.74 -2.99,-0.54 -0.94,-1.2 -7.45,-2.32 -0.31,-0.94 -2.55,-2.5 -1.87,1.7 -1.57,0.62 -2.9,1.12 -1.43,1.11 -2.27,2.19 -1.92,0.31 -0.14,2.1 -6.65,3.22 -7.72,0.13 -1.92,0.67 -1.56,4.51 -6.61,4.42 -0.85,-0.45 -2.59,2.1 0.98,1.38 -0.84,1.7 -5,2.23 h-2.64 l-0.85,-1.16 -0.71,0.85 -2.46,0.1 -1.56,1.25 -2.19,-0.1 -4.95,-1.74 -1.83,3.93 0.98,2.81 1.92,2.01 4.55,0.23 1.52,1.6 -0.22,1.97 -1.83,2.32 v2.14 l1.16,0.9 0.63,2.27z\\\"/>\\n  </g>\\n  <g\\n     id=\\\"layer4\\\"\\n\\t class=\\\"province\\\"\\n\\t style=\\\"fill-opacity:1; stroke:#000000; stroke-width:1\\\">\\n\\t<path\\n       id=\\\"pHJ\\\"\\n       d=\\\"m770,26.125 19.69,-6.906 7.22,-2.313 16.68,5.719 5.41,-2.375 8.31,2.562 6.78,5.625 1,2.5 4.94,3.469 3.69,6.188 0.97,4.062 10.09,12.906 0.47,4.188 9.19,9.156 1.15,7.344 3.94,2.187 0.28,5.563 6.13,6.437 6.65,-0.187 5.78,-3.469 8.47,3.938 3.69,-1.844 14.72,7.937 5.72,-1.25 1.4,5.878 5.54,6.25 -1.07,4.5 5.5,4.72 1.6,2.4 6.97,-2.59 5,-0.44 10.15,-4.53 1.41,-4.44 6.15,-6.9 4.16,-0.47 2.78,-4.128 7.81,-6.875 6.04,0.938 0.1,7.25 4.56,4.965 -1.47,6.88 -3.69,2.69 1.57,16.65 -0.6,3.31 1.63,6.1 -1.6,3.37 -1,13.57 -2.93,3.09 1.06,9.12 -1.75,1.1 -14.56,0.4 -3.19,-1.62 -4.22,9.62 -5.59,3.72 0.1,1.44 9.25,14.81 0.72,10.6 1.31,2.03 -4.5,2.06 -4.87,-2.62 -3.16,-0.52 -3.31,-5.86 -3.38,3.14 -2.87,-2.37 -2.06,0.47 -0.33,3.82 -4.58,1.3 -2.88,2.09 0.68,3.24 -1.3,2.44 -3.92,0.7 -3.89,-4.69 -0.25,-1.31 -3.69,-1 -3.8,-4.24 -0.72,-6.09 -1.82,-2.08 -3.77,-0.1 -0.62,2.77 2.07,7.09 -0.61,1.99 -2.57,1.19 -6.64,-6.41 -0.66,-3.48 -2.86,-1.35 -1.7,1.22 -2.58,0.55 -2.56,-3 0.96,-2.92 -3.26,-4.58 h-3.09 l-2.46,-1.66 -2.2,0.27 -3.36,3.79 -6.22,-0.53 -2.64,-1.54 -0.1,-2.41 -1.33,-1.14 -2.89,0.48 -1.85,2.99 -3.82,0.53 -2.43,-1.77 -1.93,1.74 -3.75,1.86 -2.77,-0.77 -6.25,-4.92 -2.31,-4.72 0.39,-2.03 -1.8,-2.72 -2.19,-1.45 -5.67,1.98 -3.25,0.33 -2.11,1.03 -2.45,-0.44 -0.67,-1.4 0.7,-2.81 -0.87,-2.13 0.84,-1.53 4.5,-0.23 1.98,-1.65 0.79,-2.39 -0.68,-1.53 -0.86,1.96 -1.98,0.51 -3.97,-0.69 -1.67,-0.89 -4.03,-4.06 -2.33,-0.51 -4.19,-4.43 0.6,-4.11 8.47,-8.29 0.81,-3.71 3.2,-3.03 6.7,-11.68 1.61,-1.04 1.11,0.32 1.78,4.01 2.16,2.13 0.63,-1 -0.13,-2.78 -0.75,-1.83 -0.44,-8.13 1.46,-8.79 1.46,-0.82 2.63,-0.39 1.06,-6.03 -3.08,-4.764 0.46,-2.703 -1.1,-2.937 -0.62,-5.938 2.12,-1.516 0.21,-4.406 3.51,-4.219 v-2.562 l-1.54,-1.516 0.12,-2.156 1.95,-2.328 0.47,-2.391 -1.28,-3.328 -2.56,-0.359 -7.89,-8.11 -5.19,-0.14 -1.67,4.828 -1.63,2.859 -3.84,0.09 -1.75,1.969 -3.34,-0.438 -1.61,1.297 -2.05,0.172 -1.63,3.172 -2.01,-0.156 -1.81,-1.313 -1.75,1.141 -3.11,-0.36 -3.85,-2.64 -3.78,-6.297 v-3.516 l-2.01,-3.922 -0.1,-1.625 0.37,-1.437 -0.98,-0.953 -2.8,-0.485 -2.53,-3.031 -1.65,-0.844 -1.71,0.813 -0.18,3.484 -1.77,1.578 -1.72,0.09 -2,-2.453 -3.09,-0.641 -4.57,-2.14 0.33,-1.75 4.69,-6.906 0.89,-3 -1.37,-2.266z\\\"/>\\n\\t<path\\n       id=\\\"pJL\\\"\\n       d=\\\"m824.59,181.91 2.32,-1.25 3.25,-0.13 5.5,-2.09 1.93,1.15 2.16,2.94 -0.63,2.09 2.54,4.88 6.07,4.78 2.61,0.89 3.96,-1.89 1.75,-1.7 2.97,1.83 3.54,-0.57 1.85,-3.11 2.79,-0.46 1.39,1.01 v2.3 l2.58,1.81 6.14,0.39 3.37,-3.64 2.05,-0.28 2.81,1.69 3.1,-0.1 3.26,4.28 -0.95,2.89 2.31,3.09 3.1,-0.48 1.37,-1.16 2.77,1.27 0.5,3.26 6.64,6.96 2.65,-1.27 0.88,-2.01 -2.2,-7.22 0.43,-2.63 3.85,0.1 1.82,1.83 0.88,6.2 3.58,4.33 3.81,0.78 0.38,1.55 3.76,4.7 3.86,-0.75 1.41,-2.31 -0.63,-3.19 2.61,-2.34 4.74,-1.13 0.35,-3.84 2.24,-0.42 2.58,2.21 3.51,-2.87 3.39,5.67 3.13,0.6 4.78,2.46 5.83,-2.43 v8.76 l-2.89,6.89 -4.99,3.13 -0.37,2.23 1.47,1.71 -2.89,0.26 -6.39,-6.33 -3.16,1.35 -0.39,12.62 -6.27,2.97 -0.4,5.34 -6.55,4.91 -8.12,1.45 -1.19,3.21 5.47,6.45 -0.64,4.09 -15.21,1.41 -5.81,-4.53 -5.97,3.94 -0.36,8.07 -7.29,12.21 -2.1,0.62 -1.5,-2.22 0.88,-2.59 -0.32,-4.22 -4.68,-4.37 -2.5,-3.29 -1.69,-0.37 -2.03,-4.16 1.78,-4.75 -0.28,-2.28 -2.47,-0.31 -5.81,-7.66 -2.16,-1.18 -0.41,-2.41 -2.28,-1.44 -0.68,-4.19 -1.32,-1.15 -1.9,1.59 -1.03,3.44 -2.1,1.31 -1.19,-1.22 -0.1,-2.81 -2.97,-3.19 -4.53,-1.28 -3.9,-2.06 -0.85,0.59 -0.1,2.25 -5.06,-1.47 -1.04,-0.9 -0.1,-1.66 1.56,-1.28 v-0.97 l-2.5,-5.59 -2.22,-1.72 -0.16,-2.97 -1.16,-0.56 -3.09,-4.22 -0.62,-1.97 -1.13,0.34 -8.47,7.54 -2,0.9 -2.94,-1.65 1.35,-1.97 -1.22,-2.44 -3.59,-3.28 -1.32,-6.25 -0.75,-1.91 0.57,-2 1.93,-1.72 0.35,-2.93 -2,-2.41 -2.66,-1.09 -1.19,-2.82 -1.43,-0.97 -2.35,0.5 -1.06,-1.12 0.87,-2.38 v-3.28 l3.16,-0.59 4.5,2.94 1.06,-1.69 1.1,-0.5 2.03,1 1.75,1.84 1.34,0.1 0.84,-1.69 -0.12,-3.25 -0.78,-1.66 0.37,-1.97 2.44,-0.5 1.13,-1.06z\\\"/>\\n\\t<g id=\\\"pLN\\\">\\n\\t\\t<path\\n\\t\\t   id=\\\"pLN_1\\\"\\n\\t\\t   d=\\\"m798.71,329.04 -2.05,-1.07 -0.75,-3.31 -2.85,-2.07 -0.97,-3.78 -5.34,-0.62 -1.78,-2.22 -3.13,0.28 -3.25,-3.59 1.91,-2.19 -0.16,-2.94 2.5,-2.59 -0.12,-1.75 2.37,-2.72 0.44,-2.88 -2.28,-3.03 -0.66,-3.12 v-7.1 l-1.93,-2.03 -0.19,-1.75 3.41,-3.28 2.96,2.69 h3 l0.1,1.81 3.69,4.1 1.37,3.37 1,0.47 0.81,-2.78 3.94,-5.19 1.28,-2.31 3.91,-3.44 3.5,-0.59 4.15,-6.1 1.88,-0.97 3,0.66 2.94,-1.75 -0.28,-3.25 1.78,-1.03 2.47,-0.44 2.25,0.53 1.78,-1.4 -1.47,-2 0.4,-1.44 h3.5 l2.6,1.69 5.59,-2.66 0.63,-3.25 1.47,-2 4.21,-2.62 1.04,-8.53 0.71,-0.35 3.97,2.13 4.6,1.03 3.03,3.31 -0.16,3.06 1.1,0.94 2.34,-1.16 0.87,-3.62 2.1,-1.47 1.19,1.03 0.65,4.25 2.16,1.56 0.72,2.29 2.22,1.34 5.37,7.47 2.63,0.34 0.15,2.03 -1.47,4.85 1.75,4.28 1.75,0.34 3.19,3.94 4.22,3.91 0.12,3.93 -0.9,2.5 1.4,2.82 -3.15,4.46 -5.69,3.41 -1.94,3.59 -1.84,1.19 -5.13,7.06 -0.53,4.94 -2.79,2.39 -1.38,0.84 -5.46,0.5 -2.1,2.09 -4.65,0.83 -1.12,2.45 -2.46,0.24 -5.38,4.42 -7.6,6.85 -1.78,4.06 -2.22,2.47 -4.05,2.78 -3.54,4.06 -3.83,3.1 -1.27,-1.49 0.93,-3.5 2.24,-0.24 1.03,-2.08 2.81,-1.53 0.54,-2.64 1.65,-4.71 -3.86,1.1 -1.93,-1.68 -3.18,-1.82 2.01,-1.12 0.25,-5.1 1.7,-1.94 4.08,-3.06 1.3,-3.89 3.59,-8.21 -2.92,-2.12 -5.07,-5.09 -3.21,-0.8 -3.57,2.04 -5.06,0.25 -3.43,2.11 -0.51,3.31 -1.47,1.48 -3.84,5.38 -0.25,5 -2.94,1.95z\\\"/>\\n\\t\\t<path\\n\\t\\t   id=\\\"pLN_2\\\"\\n\\t\\t   style=\\\"stroke-width:0.5\\\"\\n\\t\\t   d=\\\"m845.94,336.83 2.15,-0.18 -0.54,1.43 h-1.79z\\\"/>\\n\\t</g>\\n    <path\\n       id=\\\"pNM\\\"\\n       d=\\\"m420.75,295.25 2.56,-0.56 27.69,4.06 16.31,-2.44 26.44,4.44 5.75,7.06 14.37,3 12.69,4.38 12.25,-0.69 1.19,4 5.75,1.62 13.19,-9.68 16.43,-7.69 7,-1.63 2,-2.31 h3 l5.44,1.06 4.56,-1.62 21,-1.75 8.32,-4.31 7,-3.57 10.18,-14.37 7.69,-3.75 2.44,-2.94 3.94,-3.12 -0.25,-1.75 -9.94,-11.32 5.81,-15.93 10.06,-0.57 2.94,3.38 15,0.56 11.63,-10 2.87,-6.37 15.19,-1.5 9,-10.07 -0.69,-2.81 2.81,-7.19 4.69,-5.18 7.44,-0.69 2.31,-4.69 3.5,0.81 8.56,-6.18 10.32,-1.07 6.43,1.13 5.19,-1.56 2.25,-3.69 0.1,-1.5 -4.81,-7.19 -9.44,-6.19 -2.43,-4.25 -4,-0.25 -6.19,-3.75 -10.81,1.63 -4.38,8 -5.81,-3.25 -12.94,2.44 -2.44,3.62 -5.43,-3.37 -2.69,-6.25 4.06,-3.32 0.44,-8.43 2.31,-3.32 -0.69,-3.31 6.5,-22.25 4.5,2.31 12.57,2.07 3.18,-1.57 7.25,-9.37 7.19,-2.13 2.69,-4.12 -3.19,-6.313 0.81,-3.937 1.94,-3.813 5.31,-21.625 6.5,-7.75 0.44,-7.687 -2.44,-2.875 0.19,-2.75 -1.62,-1.875 -3.69,-0.375 -4.13,0.812 0.1,-4.937 3.12,-2.813 3.94,-7.687 10.62,-6.25 5.47,6.437 -1.06,3.407 -4.62,6.562 -0.32,1.688 4.91,2.281 2.72,0.375 2.06,2.562 1.63,0.219 1.71,-1.844 0.35,-3.187 1.47,-1.063 1.93,0.907 2.91,3.156 2.5,0.25 0.97,0.812 -0.38,1.844 0.13,1.938 1.78,3.437 v3.875 l3.97,5.688 3.72,2.937 3.31,0.25 1.81,-1.156 2,1.5 1.6,-0.219 1.34,-2.75 2.38,-0.437 1.62,-1.438 3.03,0.719 1.85,-1.938 3.87,-0.375 2.19,-3.812 1,-3.5 2.59,-0.531 3.41,0.875 7.34,7.687 2.44,0.5 1.38,3.094 -0.57,2.5 -2.03,2.25 v2.312 l1.34,1.532 0.16,2.312 -3.59,4.156 -0.19,4.657 -2.06,1.312 0.68,6.344 1,2.719 -0.4,2.625 3,4.626 -0.6,5.65 -0.87,0.85 -2.44,0.12 -1.44,1.03 -1.09,9.69 0.47,7.13 0.81,2.37 -0.19,2.35 -0.59,1 -2,-2.19 -1.81,-4.22 -1.44,-0.25 -1.09,0.75 -7.44,12.56 -2.59,2.38 -0.97,4.15 -8.35,7.57 -0.65,4.28 4.06,4.62 2.34,0.44 3.94,4.03 2.69,1.16 4.31,0.31 1.06,-0.63 0.85,-1.84 0.56,1.63 -1,2.78 -2,1.18 -4.28,0.35 -1,1.44 1.06,1.9 -0.84,2.69 0.72,1.87 2.28,0.47 0.1,2.19 -1.12,1.25 -2.44,0.41 -0.25,1.97 0.78,1.68 v3.41 l-0.69,1.5 -1.25,-0.1 -1.84,-1.97 -2.13,-1.16 -1.22,0.63 -0.68,1.65 -4.44,-2.65 -3.13,0.22 -0.25,3.59 -0.81,2.22 1,1.34 2.63,-0.5 1.06,0.88 1.5,3 2.72,0.84 1.31,2.16 v3.43 l-1.88,1.25 -0.46,1.79 2.21,8.84 3.66,3.06 0.94,2.22 -1.31,1.88 2.84,2.06 1.94,-0.85 8.53,-7.96 h1.15 l0.75,1.9 3.54,4.63 0.53,0.56 0.25,2.47 2.22,1.84 2.43,5.66 -0.18,0.94 -1.16,0.96 v2.38 l5.88,2.03 -0.66,5.75 -5.28,3.66 -1.41,4.37 -5.5,2.72 -2.37,-1.75 -3.38,-0.1 -0.4,1.34 1.06,2.13 -1.56,1.53 -2.07,-0.85 -3.12,0.57 -1.19,1.18 0.34,3.07 -3.03,1.93 -3.09,-1 -1.84,1.44 -4.22,5.94 -3.53,0.47 -3.91,3.44 -6.22,10.21 -0.75,-0.37 -1.5,-3.28 -3.5,-4.13 -0.25,-2 -2.69,0.1 -3.18,-2.44 -3.5,2.97 0.43,1.81 1.63,2.16 0.56,9.87 2.41,3.35 -0.32,3.06 -2.53,2.31 -1.12,-0.53 -2.25,0.25 -1.81,1.03 -8.5,-0.19 -1.25,-1.37 -0.41,-2.97 -4.19,-4.66 0.97,-1.84 -0.34,-3.34 -4.32,-3.29 -1.59,-3.9 -3.94,-4.44 -2.25,0.22 -3.65,3.34 h-2.91 l-4.12,2.97 -0.47,1.56 1.28,2.88 -0.16,4.62 -1.47,1.25 h-4.06 l-2.09,-0.87 -2.25,1.78 -0.63,1.5 -2.56,1.19 -2.47,-0.79 -1.91,0.6 -6,5.5 -1.56,2.62 -1.75,0.41 -3.31,-0.16 -1.19,-1.15 -0.19,-7.5 -2.15,-3 -4.6,0.12 -1.78,3.91 -2.5,3.62 -0.12,4.47 -1.19,1.6 -1.91,2.09 -0.56,3.47 1.56,2.37 -1.93,2.85 2.5,2.53 3.59,5.34 -2.91,4.72 -3.87,2 -3.56,2.75 -2.41,0.22 -2.97,-1.56 -2.09,0.68 -1.69,1.66 -1.25,2.25 -2.06,1.38 -5.1,-1.85 -2.09,0.94 -2.94,5.91 -2.59,7.37 -2.66,1.75 -3.93,-0.44 -1.13,1.35 -0.87,2.75 -2.22,1.75 -1.85,-0.19 -2.03,-2.78 -3.87,3.9 -1.5,2.19 -0.88,0.53 -2.47,-1.59 -4.31,1.12 -0.25,-1.53 -0.87,-0.34 -1.63,3.53 -3.94,4.16 -0.59,5.47 1.31,1.59 -0.28,2.06 -1.19,1.06 -4.12,1.04 -1.38,2.87 -2.22,1.97 -2.84,4.72 -2.75,2.34 -1.81,4 -1.81,4.75 -1.6,1.44 -4.44,0.19 -2.84,-3.78 -1.44,0.1 -1.53,1.65 -4.31,0.1 -4.75,1.12 -0.63,-4.34 -1.96,-2.91 -3.57,-1.72 -3.9,0.16 -4.66,-1.56 -2.16,-1.81 0.1,-1.19 6.75,-15.5 -3.47,-2.5 -0.22,-3.94 h-3.13 l-2.56,1.81 -2.25,0.19 -1.09,2.22 -3.47,2.44 -0.13,3.37 -3.34,5.09 0.53,10.47 -8.65,7.57 -3.29,4.96 -2.75,2.13 -4.28,0.81 -2.87,0.1 -2.38,1.78 -3.47,0.18 -5.31,-1.93 -0.56,-2.22 -3.16,-1.1 -2.53,-1.65 -0.31,-4.91 1.19,-1.5 0.72,-2.72 -0.22,-3.5 5.28,-1.59 1.9,-2 0.19,-4.69 -0.69,-2.59 2.47,-3.16 -0.59,-4.5 -5.69,-4.78 -2.03,-0.91 -6.84,0.32 -1.63,1.18 -7.34,7.44 -8.38,3.28 -11.81,0.28 -5.31,-1.53 -1.53,-1.31 -3.25,-0.53 -2.57,-1.94 -0.65,-4.5 0.94,-2.44 -0.82,-1.59 -7.47,-0.5 -2.15,-3.37 -4.97,-2.16 -3.78,-3.63 0.19,-1.34 2.28,-1.97 2.34,-3.47 6.34,-4.28 0.69,-2.75 -0.97,-4.5 -5.06,-3.34 h-16.94 l-2.68,1.12 -5.54,5.66 -3.65,0.44 -2.5,-1.78 -2.6,-3.82 -4.53,-4.31 -5.65,-12.16 0.1,-4.12 2.56,-6.59 -2.53,-4.32z\\\"/>\\n\\t<path\\n       id=\\\"pNX\\\"\\n       d=\\\"m540.21,409.06 1.07,-1.04 h3.66 l3.49,-0.82 3.23,-2.12 3.23,-5.24 8.43,-7.14 -0.43,-10.63 3.41,-5.2 -0.14,-3.13 2.55,-2.08 1,-0.39 1.12,-2.23 2.11,-0.36 2.62,-1.87 3.13,0.11 0.36,3.74 3.05,2.58 -0.4,2.23 -5.96,13.06 -0.14,1.76 2.41,1.83 4.37,1.51 3.88,-0.25 3.77,1.54 1.94,3.09 0.57,4.02 -0.93,0.72 -2.15,2.87 -0.94,5.1 1.26,3.01 -0.47,1.65 -2.83,0.33 -3.05,0.82 -2.48,-2.08 h-2.01 l-1.62,6.25 1.51,2.44 -0.57,1.51 -2.3,0.79 -0.47,5.38 1.37,3.84 7.32,3.34 0.61,3.09 -1.01,2.33 -0.64,3.2 -2.23,0.97 -2.55,-0.69 -1.61,0.83 -0.36,6.96 -0.86,1.22 -2.51,0.26 -2.95,-2.12 -3.87,-0.18 -2.45,-5.57 -5.88,-1.54 -2.37,-3.19 0.18,-1.98 1.94,-2.87 0.14,-4.09 -2.33,-2.8 -1.37,-4.17 -0.46,-5.42 -1.48,-1.76 -4.02,-3.12 -1.65,-3.05 -2.8,-0.14 0.25,-2.23 -1.54,-2.01z\\\"/>\\n\\t<path\\n       id=\\\"pGS\\\"\\n       d=\\\"m405.21,291.55 15.31,3.99 0.17,8.65 2.31,3.96 -0.55,2.29 -2.14,4.69 0.11,4.19 2.43,5.25 3.45,6.63 4.42,4.34 2.31,3.91 2.72,1.55 3.73,-0.26 5.23,-5.38 2.74,-1.5 17.11,0.11 4.82,3.14 1.04,4.85 -0.48,2.51 -6.35,4.32 -2.89,4.06 -1.8,1.32 -0.23,1.27 3.75,3.86 5.11,1.93 1.82,3.47 7.57,0.46 1.04,1.35 -0.86,2.33 0.17,4.67 2.87,2.16 3.28,0.63 1.85,1.55 4.8,1.2 12.08,-0.31 8.12,-3.35 9.04,-8.58 7.03,-0.18 3.5,2.14 3.96,3.57 0.61,4.32 -2.34,3.22 0.74,3.2 -0.35,4.01 -1.6,2.11 -5.11,1.04 -0.55,5.46 -1.5,3.42 0.28,4.7 5.78,2.46 0.61,2.13 5.59,2.01 3.17,-0.38 0.74,-0.61 2.13,0.89 1.75,1.65 v2.33 l2.53,0.26 1.93,3.17 5.36,4.37 0.38,5.76 1.42,4.34 2.51,2.46 -0.35,4.21 -1.91,2.95 v2.05 l1.93,3.05 6.32,1.65 0.69,2.49 1.4,2.97 4.11,0.17 3.2,2.26 2.33,-0.58 0.69,-1.17 0.38,-6.62 1.77,-1.12 2.52,0.69 1.95,-0.79 0.66,-3.53 1.12,-2.08 -0.38,-2.87 -7.57,-3.68 -1.44,-3.91 0.43,-5.1 2.08,-0.84 0.96,-1.32 -1.65,-2.76 1.53,-6.02 2.21,-0.1 2.56,1.98 5.79,-0.91 0.58,2.91 1.07,1.83 2.25,0.56 0.74,0.61 6.73,1.93 3.65,3.58 2.39,-0.84 8.78,5.2 0.28,7.62 -3.22,3.02 0.25,4.69 2.03,2.8 -0.56,4.79 -1.95,1.27 -5.66,-0.28 -2.82,1.5 -3.25,-1.29 -1.06,0.23 -0.1,3.57 1.7,2.62 -11.22,2.41 -3.55,-3.12 -3,-0.33 -5.2,0.94 -0.86,2.43 0.99,2.14 -0.46,2.94 -2.79,2.64 0.15,1.4 3.83,1.42 2.06,1.72 0.23,1.76 -1.37,1.62 -3.05,6.35 1.24,1.75 -0.28,4.31 0.66,1.09 -0.5,1.04 -2.21,-0.33 -5.79,0.54 -3.1,1.62 -1.39,2.21 2.89,1.42 1.14,2.82 -0.76,3.81 -4.03,3.83 -4.09,0.1 -1.12,1.01 -0.1,4.09 -5.41,2.74 -2.81,-1.65 -1.55,0.28 -1.52,-0.97 -4.19,-0.2 -3.56,-3.83 0.1,-4.01 -1.93,-3.4 -1.14,-3.94 -1.32,0.1 -3.91,2.82 h-2.01 l-6.82,-6.12 -1.5,-4.39 -4.01,-1.19 -1.47,-3.2 0.58,-5.38 -1.37,-0.43 -1.14,-0.99 -2.19,0.3 -4.44,2.21 -4.62,1.17 -3.02,2.46 0.26,3.48 0.61,1.8 -7.54,-0.2 -2.09,-4.93 -4.41,-2.33 -7.54,-0.26 -2.23,-1.75 0.3,-6.47 2.84,-0.56 5.13,4.44 5.51,1.3 2.21,-0.64 2.18,-3.93 -0.79,-3.48 -0.1,-7.28 3.45,-1.32 4.29,-2.85 0.84,-2.2 -1.91,-2.97 1.02,-2.54 2.1,-0.89 1.83,-3.76 2.87,1.63 4.14,-6.93 0.4,-4.95 0.97,-2.79 -2.39,-2.52 -0.91,-3.91 -2.97,-1.37 -0.25,-5.07 -2.72,-2.49 -0.58,-4.88 -1.63,-2.51 -0.94,-3.83 -4.14,-3.25 -0.58,-3.1 h-1.18 l-3.52,2.25 -5.5,-2.27 -6.02,-4.01 -0.94,-2.43 -4.87,-4.47 -3.1,-1.46 -3.06,-2.9 -3.15,-1.77 -1.43,3.74 -2.78,-0.56 -8.79,-10.12 -1.93,-0.31 -3.81,-4.42 -5.99,-2.05 -2.72,2.39 -2.94,-2.36 -4.93,4.8 -3.95,-2.92 -1.87,-2.5 -12.22,-3.71 -2.27,1.94 1.51,3.97 -0.13,4.43 -3.78,5.13 -0.82,5.53 -3.58,0.58 -3.33,1.58 -4.91,-2.96 -5.92,0.36 -10.16,-3.6 -10.72,1.68 -4.1,-8.4 -6.84,0.36 -1.65,-4.01 -9.25,0.69 -2.63,-5.6 -8.39,-3.89 4.66,-3.42 1.47,-4.69 0.39,-13.24 2.13,-9.38 7.42,0.45 4.34,-3.41 1.21,-3.27 6.36,-6.56 7.23,-5.03 3.63,-4.39 7.72,-3.5 3.83,-1.3 3.56,-2.51 8.52,-1.01 5.41,-4.52 -0.94,-4.27z\\\"/>\\n\\t<path\\n       id=\\\"pQH\\\"\\n       d=\\\"m280.84,422.12 1.16,0.1 7.56,3.65 h3.6 l4.37,-2.34 5.06,-1.09 0.75,-1.94 -0.9,-1.03 -4.72,-0.22 -1.06,-6.25 3.06,-2.78 3.31,-0.91 2.41,-1.84 -0.19,-3.97 2.5,-2.25 -0.25,-1.28 -13.97,-10.66 -0.22,-12.56 8.6,-5.53 11.93,-0.19 12.16,-1.72 6.47,-3.37 11.47,5.46 2.62,5.5 9.41,-0.59 1.69,3.91 6.71,-0.35 4.1,8.38 10.75,-1.69 10.25,3.66 6.06,-0.44 4.78,3.09 3.16,-1.5 3.9,-0.59 0.6,-5.78 3.78,-5.1 0.1,-4.37 -1.34,-4 2.19,-1.94 12.21,3.56 1.88,2.54 4.06,3.25 4.94,-5.07 2.53,2.47 2.84,-2.47 6.29,2.25 3.96,4.57 1.85,0.12 8.56,10.06 2.88,0.28 1.4,-3.46 3.1,1.62 3.46,3.19 3,1.56 4.88,4.34 0.72,2.35 5.53,3.87 1.22,-0.1 4.78,2.53 3.5,-2.25 1.31,0.16 0.28,2.62 4,3.35 1.32,3.87 1.68,2.56 0.5,4.85 2.63,2.59 0.37,5.13 2.72,1.43 1.03,3.69 2.32,2.66 -0.97,3.06 -0.35,5.13 -4.22,6.46 -2.78,-1.62 -1.5,3.69 -2.28,0.93 -1.09,2.35 1.59,3.25 -0.56,2.19 -4,2.71 -3.84,1.22 v7.19 l0.81,3.59 -1.72,4.04 -2.94,0.81 -5.37,-1.6 -4.63,-4.21 -2.78,0.15 -0.62,6.6 2.09,1.9 7.19,0.31 4.84,2.5 2.41,4.72 3.81,0.41 h3.78 l0.75,2.16 1.78,1 0.38,2.31 -1.69,3.37 -0.44,3.38 -2.19,0.4 -2.25,-2.15 -2.53,0.1 -3.59,3.5 -1.47,-0.1 -1.28,-2.53 -1.81,-2.22 h-2.22 l-5.66,3.22 -1.97,3.68 0.44,3.44 -1.69,2.97 -2.43,-0.12 -2.35,0.56 -3.84,-0.6 -1.13,-1.5 -8.34,-9.18 -1.34,-3.22 -4.04,-0.1 -4.34,3.46 -1.97,-1.5 -2.47,-0.4 -4.68,-2.94 -2.47,-0.97 -3.53,1.03 -2.47,-0.81 -4.19,0.78 -3.31,-1.12 -5.25,1.5 -4.44,2.97 -0.34,2.21 1.46,2.22 -1.25,2.35 -6.75,2.03 -0.43,2.03 0.9,1.09 0.13,3 -1.85,1.82 -0.59,3.15 -8.34,11.16 -1.38,0.81 -4.65,-2.84 -2.22,0.1 -1.94,1.59 -2.63,-0.31 -3.96,-3 -4.41,-0.94 -1.63,-6.93 -2.46,-0.69 -5.6,-4.03 -1.9,-3.66 -3.54,-1.84 -7.84,-0.6 -1.47,-0.75 -13.69,-0.37 -4.56,-2.88 -5.31,0.16 -1.47,-2.34 -2.31,-0.1 -2.69,1.47 -4.84,-1.87 -4.32,-4.54 -5.06,-2.78 -3.75,-0.31 -3.4,-1.75 -3.91,-0.84 -2.75,-1.69 -9,-0.84 -1.94,-5.94 -1.78,-3.72 -2.97,-4 -0.78,-4.78 -3.66,-4.63 -1.37,-2.87 -0.63,-2.53 0.94,-3.03 -1.47,-1.41 -0.34,-2.5 0.75,-1.91 5.16,-0.34 1.34,-3.5 -1.69,-2.31 2.38,-7.88 2.72,-4.53 0.4,-5.12 -1.09,-1.66 -4.31,-0.81 0.18,-1.63 4.97,-2.4z\\\"/>\\n\\t<path\\n       id=\\\"pXJ\\\"\\n       d=\\\"m286.25,133.87 -0.63,3.44 -1.81,3.31 3.31,4.69 -0.12,3.13 7.06,4.75 4.31,10 5.13,0.81 2.62,-1.69 5.69,5.88 3.38,-0.44 4.56,7.75 2,8.69 5.81,11.06 -0.81,5.06 -2.56,3.81 1.5,5.82 -6.75,9.81 -0.38,6.5 2.13,2.25 19.68,7.19 13.44,0.56 8,2.44 6.81,6.62 9.19,5.63 2.5,2.87 4.56,2 5.38,0.88 -0.94,3.75 3.56,2.43 5.38,18 6,7.32 0.94,3.12 -2.38,6.19 0.99,4.05 -5.61,4.68 -8.57,1.02 -3.5,2.43 -4.9,1.64 -6.67,3.31 -3.81,4.47 -6.89,4.77 -6.45,6.58 -1.5,3.45 -4.47,3.27 -7.33,-0.44 -2.04,9.54 -0.35,12.6 -1.41,5.13 -4.56,3.36 -3.31,-1.33 -6.06,3 -12.55,1.95 -11.97,0.31 -8.4,5.26 0.1,12.81 13.57,10.48 0.83,1.32 -2.6,2.35 0.22,3.84 -2.43,1.9 -3.23,1.11 -3.49,2.47 1.37,6.32 4.6,0.49 0.84,0.88 -0.62,1.81 -5.08,1.24 -4.11,2.03 -3.72,0.31 -7.2,-3.75 -5.83,-0.36 -6.06,0.53 -6.67,-3.97 -2.34,-0.4 -6.77,-4.2 -6.63,-1.5 -7.99,-0.58 -5.48,3.1 -10.08,-0.1 -7.07,1.23 -12.42,7.16 -1.46,0.23 -6.85,-2.21 -18.25,4.86 -2.3,-1.64 -6.14,-0.53 -6.85,-6.14 -3.94,-0.58 -2.51,-1.72 -5.71,0.22 -2.51,-2.21 -2.44,0.13 -4.5,1.99 -4.64,6.85 -5.48,0.8 -2.96,-4.38 -4.78,-1.85 -2.56,0.93 -8.49,-3.98 -2.82,-2.92 -3.32,5.17 -3.84,2.79 v2.87 l-3.05,0.57 0.62,4.86 -4.818,5.4 -5.171,-2.39 -3.138,0.62 -2.474,-0.75 -3.403,0.62 -2.077,-1.33 -2.873,-3.8 -4.817,-2.3 -1.017,-2.03 -0.09,-3.76 -0.796,-2.25 0.31,-2.96 -1.282,-4.82 2.431,-5.48 -3.536,0.88 -11.755,-4.59 -7.292,-5.44 -2.299,-3.76 -5.082,-1.37 -2.917,-7.07 1.503,-3.58 -0.398,-9.06 -2.43,-2.82 -3.492,-0.31 -0.84,-4.38 -3.977,-2.65 -3.491,-0.27 -6.232,-3.58 -0.353,-3.75 11.888,0.1 0.663,-2.61 -1.503,-3.54 1.768,-9.19 -1.193,-4.51 2.342,-4.46 0.133,-1.99 -6.983,-5.35 -4.994,-0.92 -2.475,2.07 -2.121,-4.28 0.751,-4.6 2.519,-1.81 -1.944,-5.48 1.502,-4.86 4.508,-0.45 1.547,-2.91 -0.486,-3.41 1.414,-3 4.287,-2.21 4.861,1.06 2.696,-1.55 5.701,-0.92 1.282,-3.54 6.187,3 6.01,-2.12 1.061,3.45 v3.67 l2.298,1.06 3.491,-1.41 4.42,1.63 4.331,-2.65 7.424,-9.06 3.492,0.18 7.027,2.96 6.938,0.26 2.784,1.24 8.8,-7.2 13.56,-4.25 4.69,-0.13 5.7,-1.86 2.21,-1.14 3.8,0.7 1.68,-0.97 1.68,-8.97 -0.22,-3.01 2.69,-3.62 3.94,-0.84 -0.71,-3.4 6.5,-2.12 -0.1,-1.95 -0.93,-1.94 1.41,-4.33 -2.96,-13.84 1.06,-1.81 0.62,-7.03 2.83,-4.15 -3.09,-2.7 -3.67,-0.61 -0.97,-1.51 3.36,-2.52 15.33,-0.7 10.52,-1.33 3.49,4.95 5.57,-0.31 2.87,2.34 2.65,-0.92 1.24,-4.87 -4.11,-3.75 4.73,-9.55 0.93,-2.87 10.03,-16.18 2.21,-5.87 3.14,0.79 8.97,6.54 11,1.28 2.74,4.25 0.98,-0.1 5.03,-2.57 5.44,-0.57 3.67,-4.38 -1.73,-5.52 1.2,-9.5 4.73,-10.17 6.63,1.02 7.6,-3.09 2.3,-4.47 0.48,-5.17 6.67,-1.41 4.16,2.3 2.56,-1.33z\\\"/>\\n\\t<path\\n       id=\\\"pXJd\\\"\\n\\t   style=\\\"stroke:none\\\"\\n\\t   d=\\\"m70.291,403.06 2.497,-2.32 5.171,-1.96 0.906,-0.64 4.132,-0.75 0.95,-1.18 1.348,-0.81 2.541,2.03 3.469,-0.6 2.254,0.33 2.519,-0.37 0.928,2.96 0.994,0.66 2.52,-0.1 -0.8,2.57 0.53,1.79 1.84,0.93 0.22,1.7 0.77,0.48 2.12,-0.55 0.1,3.03 0.16,1.19 0.92,0.66 2.21,-2.25 1.06,-0.29 0.53,1.26 -3.62,5.04 -3.62,2.92 -0.25,2.91 -2.96,0.47 0.67,4.82 -4.807,5.56 -5.125,-2.31 -3.313,0.56 -2,-0.94 -3.437,0.57 -2.688,-1.57 -2.187,-3 -5.188,-2.93 -1.062,-1.88 0.06,-2.37 -0.5,-6.44 -1.312,-5.06z\\\"/>\\n    <path\\n       id=\\\"pXZ\\\"\\n       d=\\\"m95.415,432.67 4.905,-5.43 -0.75,-4.95 3.14,-0.66 0.17,-2.61 3.8,-3.23 2.57,-3.89 0.35,-1.15 3.36,3.01 8.31,4.11 2.96,-0.88 4.55,1.72 2.7,4.37 5.39,-0.84 4.33,-6.45 5.13,-2.21 h2.21 l2.87,2.08 5.26,-0.18 2.69,1.64 4.03,0.57 6.67,5.88 6.32,0.75 2.25,1.5 15.56,-3.66 2.39,-1.02 7.33,2.12 1.86,-0.44 11.53,-6.98 6.76,-1.2 10.66,0.18 5.12,-2.96 7.78,0.35 7.07,1.64 6.76,4.06 2.48,0.58 6.49,3.89 6.1,-0.67 3.98,0.4 -0.35,3.67 -4.86,2.12 -0.14,1.77 4.25,0.97 1.06,1.46 -0.14,5.08 -2.74,4.24 -2.52,8.09 1.64,2.34 -1.15,3.54 -5.04,0.44 -1.15,1.55 0.62,3 1.42,1.24 -1.24,3.58 0.66,1.99 3.27,5.3 2.08,2.35 0.66,4.46 3.54,4.9 3.09,9.02 8.97,0.84 2.79,1.72 3.75,0.71 3.23,1.72 4.29,0.4 4.59,2.52 4.6,5 4.99,1.63 2.74,-1.41 2.48,0.17 1.28,2.26 5.08,0.1 5,2.74 13.17,0.22 1.72,0.88 7.82,0.57 3.49,1.77 1.95,3.54 5.17,3.84 2.83,1.06 1.54,6.9 4.03,0.88 4.15,2.92 2.65,0.44 2.39,-1.81 2.07,0.22 4.56,2.7 1.41,-0.67 8.4,-11.49 0.35,-2.65 2.03,-1.94 -0.1,-3.05 -0.93,-1.29 0.44,-2.12 3.71,-0.92 2.87,3.35 3.14,2.17 5.26,1.41 4.2,3.14 0.49,3.8 2.74,3.18 0.39,6.1 2.92,3.94 4.46,4.42 -0.31,1.54 -2.38,1.77 -1.73,0.13 0.36,2.35 2.52,3 1.06,4.51 1.59,1.5 0.35,12.99 1.06,2.79 -0.22,4.06 -0.62,1.11 1.02,11.71 -1.9,-0.13 -1.68,1.37 -0.26,3.22 -1.99,2.43 -2.88,0.89 0.53,3.49 -1.28,2.65 0.67,1.42 -0.14,5.52 -3.58,1.68 -2.78,-1.86 -4.2,3.54 -1.9,-2.87 -3.01,-0.58 -2.38,-3.49 -2.56,-0.49 -5.66,5.66 -3.71,-3.67 -2.61,1.06 -2.08,-1.01 -2.12,0.13 -3.31,-2.43 -3.98,1.55 -1.73,-1.2 1.6,-3.27 4.55,-3.58 -0.14,-1.46 -2.6,-4.86 -2.7,0.8 -2.38,2.12 -0.84,-3.98 3.58,-1.59 1.14,-2.21 -3.27,-0.88 -2.21,-3.45 -9.5,3.8 -1.9,3.49 -1.63,0.84 -3.14,-0.57 -4.16,-2.26 -4.37,-1.37 -2.08,-3.31 -2.3,1.72 -2.96,1.15 -5.21,3.85 -2.43,0.39 0.13,1.99 -7.2,3.76 -7.03,-0.27 -2.3,0.93 -1.5,4.42 -4.42,2.92 -4.82,3.18 -0.17,3.23 -4.69,1.85 -6.94,0.1 -1.72,0.97 -2.61,-0.17 -8.7,-4.11 -3.41,-2.83 -7.51,-0.13 -4.64,-1.37 -4.69,-5.88 -6.67,-2.04 -10.43,4.34 -6.89,5.96 -4.02,5.53 -2.97,1.68 -2.07,-3.5 3.31,-6.93 -0.62,-3.41 -2.91,-2.74 -2.79,0.4 -7.91,2.34 -9.32,1.55 -3.8,-2.3 -3.89,1.46 -10.79,-8.84 -4.86,2.79 -2.56,-0.31 -2.43,-3.94 -4.16,2.61 -1.54,-4.33 -6.1,-4.99 -5.88,-0.76 -1.46,-4.95 1.46,-1.94 -1.1,-1.46 -4.6,1.11 -5.22,-4.16 -7.24,-3.31 0.79,-6.59 -1.06,-4.37 -2.52,-1.11 -3.4,4.47 -1.99,0.44 -4.24,-4.91 -0.44,-5.7 -6.15,-6.5 -2.25,-1.06 -3.71,-5.83 -4.42,-1.81 -3.49,-4.11 -6.5,-3.36 -0.88,-3.89 -10.88,7.07 -1.59,-5.21 -3.135,-2.17 -2.121,-3.58 -7.292,-6.14 1.812,-1.77 -1.282,-1.46 -1.989,-0.48 -3.182,-4.42 -3.314,-1.33 -3.669,-0.22 -3.535,-4.64 -2.166,-7.91 -5.656,1.63 -0.663,-3.66 1.767,-3.36 -0.883,-3.14 1.988,-5.61 -3.8,-6.85 0.751,-2.12 -0.221,-2.44 1.061,-1.72 4.817,0.13 0.309,3.63 2.563,2.47 5.304,-1.59 3.977,-0.84 2.652,-3.84 -1.591,-4.6 1.149,-3.53 -5.745,-4.69 -1.37,-3.45 -0.631,-1.77 1.326,-5.05 v-3.02 l-0.379,-3.91 0.379,-1.39 1.326,-0.44 2.651,-0.38 1.515,-1.33 0.379,-1.83 -0.568,-1.58 3.337,-0.68 2.232,0.77 3.071,-0.44 2.707,1.245z\\\"/>\\n    <g id=\\\"pXZd\\\" style=\\\"stroke:none\\\">\\n\\t\\t<path\\n\\t\\t   id=\\\"pXZd1\\\"\\n\\t\\t   d=\\\"m102.99,421.85 v-2.86 l3.68,-2.7 3.35,-5.13 1.69,1.63 -0.73,0.88 -1.65,3.67 -1.43,1.04 -1.87,5 -3.52,4.93 -1.98,-0.8 -0.64,-4.97z\\\"/>\\n\\t\\t<path\\n\\t\\t   id=\\\"pXZd2\\\"\\n\\t\\t   d=\\\"m75.188,449.96 -0.631,-1.77 1.826,-5.05 v-1.52 l-0.379,-3.91 0.379,-1.39 1.326,-0.44 2.651,-0.38 1.515,-1.33 0.379,-1.83 -0.568,-1.58 3.337,-0.68 2.232,0.77 3.071,-0.44 2.707,1.245 -0.309,4.38 -0.486,1.23 -0.708,-0.13 -0.132,1.64 -0.663,0.7 -1.679,1.11 -4.641,-1.15 -1.414,0.44 -1.724,-0.88 -1.458,0.62 -0.177,1.5 0.04,2.34 0.973,1.55 -0.221,2.34 -2.298,-0.22 -0.486,1.9 -0.663,2.56z\\\"/>\\n\\t</g>\\n\\t<path\\n       id=\\\"pSC\\\"\\n       d=\\\"m410.78,511.47 2.34,-0.6 1,-2.59 -1.31,-2.12 0.41,-1.97 4.81,-3.5 4.91,-1.19 2.9,1.03 4.6,-0.75 2.5,0.78 4.25,-0.87 6.62,3.75 2.03,0.47 1.97,1.4 4.53,-3.34 h3.97 l1.44,3.31 10.06,10.72 3.47,0.62 2,-0.78 2.25,0.56 2.03,-3.25 -0.22,-3.56 1.82,-3.44 5.53,-3.43 2.4,0.37 1.75,1.97 1.22,2.5 h1.1 l3.96,-3.41 h2.75 l1.91,2.07 2.13,-0.35 0.53,-3.15 1.9,-3.35 -0.47,-2.47 -2.06,-1.5 -1.59,-4.81 -0.22,-2.59 3.03,-2.31 4.72,-1.25 4.34,-2.44 1.88,-0.28 2.9,1.56 -0.46,5.06 1.56,3.47 4.03,1.22 1.47,4.41 6.75,5.93 2.22,0.28 3.56,-3.03 h1.31 l2.19,5.35 1.06,1.87 -0.15,3.97 3.65,3.94 4.31,0.4 1.5,1.04 1.1,-0.66 2.9,1.72 5.44,-2.69 0.22,-3.97 1.38,-1.25 9.25,0.38 1.56,1.06 0.5,3.16 2.09,1.15 8.66,-1.94 2.25,-1.03 4.34,0.25 1.38,4.07 1.28,1.18 2.15,0.1 1.66,-1.25 2.34,2.31 2.94,0.5 5.16,4.03 h0.94 l4.9,-2.28 3.91,-0.34 3.06,1.87 -0.12,1.19 0.37,2.06 -2.37,2.81 0.1,1.13 3.94,2.62 0.1,0.85 -0.5,2.09 -2.72,1.81 -2.22,3 -5.22,12.13 -1.93,1.5 -5.16,-0.38 -1.69,1.03 -1.12,6.72 -6.22,9.38 -2.38,0.69 -4.37,-0.91 -4.44,-5.34 -1.16,0.56 -1.75,1.5 -2.28,0.15 -4.59,-2.84 -2.63,-1.03 -2.37,0.66 -2.88,5 2.91,3.84 -0.16,1.22 -0.68,0.75 -9.03,7.4 5,6.29 3.37,0.53 2.25,6.37 7.13,1.19 2.25,2.5 0.9,3.66 -0.4,2.68 -6.19,-4.81 -1.28,0.53 -0.69,2.66 -2.69,0.28 -1.59,2.22 0.4,3.84 7.13,3.03 2.87,0.63 1.29,3.44 1.9,3.18 -1.06,1.57 h-4 l-7.13,2.66 -2.9,-2.19 -4.69,0.69 -1.22,-1.19 0.38,-3.84 -1.1,-0.22 -2.06,-2.16 -2.12,0.38 -2.07,4.12 -4.65,0.91 -3.35,-0.62 -2.53,-2.35 1.19,-1.65 -0.31,-3.69 -2.41,-1.66 -0.69,-4 1.53,-1.75 -1.78,-1.81 -3.68,1.44 -3.6,-0.75 -1.72,2.84 1.5,3.72 -1.22,1.66 -5.03,0.87 -1.4,3.94 1.22,2.03 -0.88,4.19 -4.84,4.56 -2.72,3.25 -1.85,0.22 -1.21,1.37 -0.85,10.19 2.88,4.16 -0.38,6.31 -0.28,1 -6.37,3.69 -1.57,-3 -2.03,0.28 -6.75,4.15 -0.87,1.54 -6.13,-0.22 -1.72,-2.69 -2.37,-0.66 -0.38,-5.47 -2.72,-1.9 0.66,-3.66 -1.16,-0.75 -1.28,-2.69 -2.31,-1.81 -0.5,-5.72 -4.72,-4.62 -0.5,-3.44 -6.06,-6.87 -3.06,-0.1 -6.19,-2.15 -0.56,-3.66 -1.35,-3.09 1.75,-2.6 v-2.84 l-2,-1.06 -2.71,0.56 -5.82,5.69 -1.78,-0.32 -2.56,2.53 -3.41,-4.71 -2.47,-31.16 0.66,-1.72 v-3.72 l-0.94,-2.34 -0.34,-13.25 -1.81,-1.35 -0.97,-4.5 -2.35,-2.84 -0.37,-2.34 1.53,-0.19 2.63,-1.88 0.1,-1.46 -4.31,-4.13 -2.85,-4.56 -0.43,-5.78 -2.72,-3.07 -0.5,-3.81 -4.28,-3.34 -5.32,-1.25 -3.25,-2.31z\\\"/>\\n\\t<path\\n       id=\\\"pCQ\\\"\\n       d=\\\"m579.61,606.9 1.68,-0.97 1.08,-2.37 -0.32,-2.55 2.19,1.94 -0.22,2.55 2.77,1.54 1.79,-1.79 1.37,-3.99 1.54,-2.69 2.91,-1.26 2.8,1.3 2.15,-0.22 2.58,-2.01 -1.61,-4.09 0.72,-2.51 1.11,-0.15 2.66,1.44 2.01,0.32 1.07,2.48 1.62,0.64 2.33,-1.93 5.1,0.1 1.94,5.21 -0.61,2.33 1.54,1.15 3.59,0.93 0.22,3.77 0.79,2.37 1.25,-1.15 -0.46,-1.9 0.75,-0.32 1.29,1.33 -0.29,2.33 1.58,1.44 4.02,0.21 1.94,-2.66 v-2.19 l1.83,-1.18 -0.9,-13.64 -2.8,-1.26 -4.27,-5.17 -0.36,-4.63 -2.62,-0.79 -3.27,-3.59 -2.19,1.76 1.08,-10.3 -3.05,-4.2 4.13,-3.02 2.91,0.1 4.16,-1.83 4.31,0.28 4.84,-1.58 5.75,-6.28 3.8,1.51 1.47,-3.09 -0.68,-3.95 1.01,-2.26 -0.79,-3.55 -2.37,-2.91 -2.16,-1.44 -0.1,-4.48 -5.71,-0.18 -6.93,1.25 -1.61,-0.39 -0.83,-3.2 -5.03,-0.53 -4.73,-3.09 -0.65,0.54 0.57,2.37 -2.54,3.01 0.21,0.94 3.84,2.87 0.4,0.93 -0.76,1.8 -2.87,1.93 -2.22,3.31 -4.89,11.38 -2.22,1.72 -5.17,-0.25 -1.62,0.82 -1,6.97 -6.53,9.22 -2.3,0.86 -4.35,-1.14 -4.05,-5.14 -1.33,0.43 -2.08,1.65 h-1.83 l-5.03,-3.15 -2.76,-0.72 -2.16,0.93 -2.4,3.95 v1.36 l2.33,2.52 0.36,1.61 -1.18,1.4 -8.37,6.68 v0.9 l4.49,5.95 3.19,0.29 1.22,1.87 1.33,4.77 7.15,1.08 2.33,2.44 0.86,3.84 -0.25,2.73z\\\"/>\\n\\t<path\\n       id=\\\"pGZ\\\"\\n       d=\\\"m579.45,606.45 0.54,0.11 1.65,-0.72 1.18,-2.26 -0.64,-3.09 2.4,2.08 -0.36,2.84 2.55,1.38 2.3,-1.83 1.02,-4.22 1.64,-2.44 2.83,-1.19 3.04,1.49 2.11,-0.37 2.25,-1.94 -1.33,-4.27 0.82,-2.46 1.24,0.12 2.19,1.28 2.07,0.34 1.24,2.58 1.49,0.49 2.31,-1.89 5.01,0.17 1.69,3.28 0.28,1.96 -0.32,2.19 1.51,1.11 3.48,0.75 v3.95 l1.02,2.3 1.25,-1.06 -0.46,-2.01 h0.72 l1.49,1.18 -0.44,2.41 1.85,1.36 3.75,0.1 1.67,-2.53 0.27,-2.46 1.87,-0.68 1.02,2.68 1.6,1.81 -0.48,2.31 0.35,4.63 0.72,3.68 2.03,2.36 -0.43,2.35 -1.53,1.22 -1.11,1.9 -3,1.27 -5.81,5.69 1.2,2 1.38,0.35 3.2,-2.31 2.31,-0.16 1.8,-0.81 1.92,0.16 1.6,1.44 0.66,4.81 -0.54,1.18 -3,2.5 2.09,2.78 -0.47,1.88 -1.4,1.94 v2.08 l3.17,4.42 0.45,2.01 -3.97,5.96 -3.14,-0.99 -2.51,1.17 v1.29 l1.42,1.29 -0.58,1.82 -4.45,0.18 -1.59,0.91 v0 l-1.51,3.61 -4.65,-2.77 -2.76,1.3 -1.73,2.08 -1.18,3.86 -2.95,0.37 -1.75,1.48 -4.4,-3.49 -2.77,0.63 -2.45,-1.9 -0.94,-2.94 -1.24,-0.74 -4.25,3.88 -1.45,2.96 -1.73,1.56 -3.86,0.36 -7.34,4.72 -2.6,0.74 -0.1,3.85 -4.15,2.75 -1.25,-1.22 -2.34,-0.1 -1.36,-1.11 -4.76,-0.47 -1.36,-2.82 -5.57,-0.66 -1.27,0.77 -1.81,3.16 -2.21,0.66 -2.41,2.12 -2.9,-0.12 -2.07,-0.92 0.74,-2.51 2.33,-3.34 0.49,-5.49 -2.28,-2.98 -3.39,-1.47 -2.61,-5.84 3.72,-7.66 0.25,-4.9 2.94,-3.41 -5.11,-6.32 -1.74,1.08 h-3.86 l-1.87,2.5 -1.52,0.16 -3.79,-0.7 v-3.12 l-1.33,-2.3 1.24,-2.66 -0.5,-1.81 -2.96,-1.33 5.54,-6.8 2.05,-0.25 3.46,1.86 3,-2.72 3.7,1.68 h7.32 l2.25,-1.04 2.87,-0.56 3.25,-8.13 4.59,-0.7 3.16,1.94 7.16,-2.37 3.7,-0.1 1.2,-1.42 -2.35,-3.89 -0.92,-3 -3.23,-0.61 -6.62,-2.89 -0.61,-3.73 1.6,-2.08 2.6,-0.58 0.75,-2.37 1.64,-0.55z\\\"/>\\n\\t<path\\n       id=\\\"pYN\\\"\\n       d=\\\"m420.16,614.72 3.78,-3.41 2.68,1.63 3.69,-1.6 0.31,-5.12 -0.78,-1.85 1.13,-2.75 -0.5,-3.56 3.06,-0.4 1.91,-2.54 0.18,-3.03 1.63,-1.59 h1.97 l1.47,19.25 3.43,4.97 2.63,-2.6 2.03,0.29 5.53,-5.69 2.85,-0.56 1.75,0.9 0.21,3.13 -1.59,2.34 1.28,3.25 0.38,3.47 6.28,2.44 h3.15 l5.88,6.84 0.59,3.38 4.57,4.68 0.53,5.63 2.47,2.03 1.21,2.59 1.1,0.44 -0.63,3.94 2.53,1.84 0.6,5.35 2.53,1.06 1.44,2.28 5.84,0.41 1.47,-1.66 6.69,-4 1.65,-0.22 1.66,3 6.47,-3.91 0.59,-2.09 v-5 l-2.69,-4.12 0.85,-10.19 1.28,-1.72 1.81,-0.19 7.56,-7.65 0.72,-4.16 -1.15,-2.19 1.65,-3.65 4.81,-0.89 1.19,-1.66 -1.42,-4.02 1.58,-2.57 3.64,0.68 3.81,-1.33 1.75,1.72 -1.5,1.55 0.55,4.02 2.44,1.64 0.2,3.81 -1.2,1.7 3.11,2.53 3.4,0.41 4.17,-0.95 1.97,-3.8 2.22,-0.63 2.09,2.21 0.86,0.25 -0.26,3.78 1.34,1.22 -3.15,8.19 -3.18,0.29 -2.18,1.44 -2.85,-0.39 -4.33,0.26 -1.82,-1.34 -2.28,-0.34 -2.71,2.84 -3.4,-2.26 h-1.27 l-6.05,6.34 v1.05 l2.8,1.04 0.69,1.75 -1.56,2.88 1.53,2.2 0.2,3.13 3.69,0.93 1.68,-0.68 1.22,-1.94 3.96,-0.23 1.82,-1.19 5.3,6.31 -2.8,3.38 -0.26,4.89 -3.97,7.82 2.66,5.74 3.42,1.48 2.05,3.03 -0.47,5.86 -2.18,2.77 -1.37,5.37 2.55,4.58 1.25,0.85 0.89,-2 3.22,-0.13 1.28,0.72 1.79,-1.05 2.85,2.32 0.67,4.71 5.27,2.02 2.71,-2.33 2.75,1.88 2.14,0.67 2.6,-0.85 1.3,-0.57 3.87,4.32 -1.41,8.55 -2.04,0.49 -2.63,-0.58 -7.4,7.47 -4.32,-1.88 -8.82,6.16 0.15,4.62 -10.73,3.83 -2.57,-2.62 -2.82,2.45 -2.19,5.23 -6.45,-6.5 -2.44,4.52 -3.33,-4.38 -7.69,7.64 -8.78,-6.81 -2.44,0.66 -1.15,2.76 -5.03,4.43 -9.66,-1.08 -2.92,5.67 4.01,7.7 0.89,8.32 -1.07,7.42 -2.68,-1.28 -6.84,0.12 -3.75,-11.73 -6.14,2.22 -4.72,3.96 -4.22,-1.61 -3.47,2.07 -2.29,-5.71 -2.69,-2.21 0.25,-6.25 -16.06,-3.08 1.56,-5.42 2.55,-3.54 -0.39,-5.15 3.46,-3.78 -0.68,-3.72 -8.28,-0.1 -3.38,-2.91 -1.08,-8.19 -2.62,-7.3 2.65,-4.48 -4.95,0.19 -6.2,-1.42 -6.17,1.17 -4.52,4.22 -3.03,0.28 v-2.61 l2.3,-4.66 -0.72,-3.98 -1.55,-1.56 -0.85,-4.55 1.23,-3.22 3.62,-1.19 -0.79,-2.4 2.48,-6.43 5.36,-1.36 1.89,-4.79 3.16,-0.36 3.36,-4.78 2.42,-0.66 1.23,-1.67 -1.75,-3.69 2.74,-3.97 1.55,-15.5 -1.4,-5.98 0.86,-3.53 -0.2,-4.24 -4.17,-2.7 -2.52,2.87 -4.14,-9.23z\\\"/>\\n\\t<path\\n       id=\\\"pBJ\\\"\\n       d=\\\"m736.53,323.36 -1.15,-4.09 2.09,0.72 v-1.15 l1.65,-2.73 2.58,-0.71 5.82,5.45 2.15,0.61 1.4,-1.33 0.97,0.54 2.8,-0.5 0.83,1.72 -2.01,1.87 -0.54,2.48 0.93,2.19 2.59,2.47 -2.7,3.74 -2.44,0.14 -1.4,0.86 -1.83,0.15 -2.26,1.68 1.47,1.83 2.41,1.91 0.28,2.15 -1.79,2.12 -4.2,0.43 -1.36,1.36 -0.36,1.69 -1.48,0.39 -3.33,-1.72 -7.47,1.72 -4.06,-2.65 -1.76,-3.23 1.08,-5.06 1.83,-2.77 2.98,-1.11 0.5,-3.05 -1.79,-2.26 0.65,-2.19 2.8,-2.19 1,-1.01z\\\"/>\\n\\t<path\\n       id=\\\"pTJ\\\"\\n       d=\\\"m753.8,343.78 0.36,-3.69 -0.22,-5.39 2.3,-3.48 2.19,-0.36 2.8,1.22 -0.18,3.05 -1.08,1.08 0.54,3.52 2.37,3.19 2.05,-0.21 1.22,1.11 0.61,2.69 2.47,0.4 1.3,1.47 -0.29,4.4 -0.95,0.22 -4.14,2.85 -1.81,4.41 0.42,5.56 -2.62,0.95 -5.69,-2.27 -2.3,0.86 -1.97,-0.4 -2.66,-3.09 -0.29,-1.93 1.48,-3.31 -0.1,-2.8 -1.22,-2.08 0.65,-3.87 -0.54,-2.45 1.65,-1.83z\\\"/>\\n\\t<g id=\\\"pHE\\\">\\n\\t\\t<path\\n\\t\\t   id=\\\"pHE_1\\\"\\n\\t\\t   d=\\\"m798.72,329.16 -2.22,-1.16 -0.72,-3.16 -2.75,-1.9 -1.25,-4.1 -5.34,-0.59 -1.53,-2.16 -3,0.22 -3.44,-3.78 2.12,-2.12 -0.28,-2.75 2.47,-2.69 v-1.72 l-1.03,-0.53 -2.63,0.1 -1.62,0.88 -8.66,-0.13 -1.15,-1.09 -0.32,-3.03 -4.22,-4.75 0.94,-2.13 -0.53,-2.94 -4.12,-3.34 -1.88,-4.12 -3.78,-4.35 -2.53,0.38 -3.28,2.9 -2.78,0.16 -4.54,3.25 -0.12,1.62 1.25,2.79 -0.13,4.28 -1.15,1.25 -4.35,0.1 -2.28,-0.81 -4.31,4.22 -1.41,0.43 -2.5,-1.03 -6.18,4.72 -3,4.06 -4.91,0.5 -1.19,-1.5 -0.25,-7.12 -2.09,-3.25 -4.31,0.1 -2.44,4.88 -2.13,2.65 -0.15,4.81 -3.22,3.32 -0.56,3.62 1.65,1.97 -1.75,2.91 0.47,1.28 1.75,1.28 6.1,9 0.62,3.31 2.41,1.03 0.15,1.07 -2.62,1.81 -2.83,0.91 -1.17,2.61 1.02,2.03 1.94,1.06 3.03,0.29 0.97,1.17 0.64,3.2 2.01,1.9 0.84,2.19 -1.13,3.2 -0.48,4.69 -2.5,1.63 -5.48,1.18 -2.16,2.56 0.24,1.88 1.3,1.23 -0.17,1.18 -4.14,4.42 0.36,6.14 1.9,1.48 3.2,1.39 1.19,3.25 5.68,7.53 -3.38,7.23 -0.48,3.14 -1.09,1.1 0.2,2.54 0.62,1.99 -2.52,3.76 -2.19,0.4 v3.11 l2.98,4.16 2.34,1.1 5.24,0.44 1.33,0.98 5.94,0.33 1.88,1.52 1.94,0.22 1.81,-1.39 1.35,-0.22 2.68,1.72 2.54,-2.27 2.25,-0.1 3.65,1.28 0.22,-2.36 -3.6,-5.19 0.17,-4 2.72,-3.63 2.17,-1.5 2.82,-6.32 1.57,-5.88 2.99,-1.08 0.99,-3.78 1.42,-1.68 1.83,0.98 1.39,-0.87 2.79,-3.91 1.56,-2.41 2.17,-0.73 3.93,-0.5 2.83,0.22 1.75,-1.04 v-2.61 l2.69,-2.63 1.73,-2.4 -2.81,-2.28 -2.83,-5.38 -0.1,-0.92 -2.45,0.75 -6.16,-2.41 -1.86,1.06 -2.3,-0.64 -2.47,-2.69 -0.24,-2.59 1.19,-2.87 0.1,-2.85 -1.2,-1.84 0.71,-4.28 -0.73,-2.26 -3.87,0.4 -1.79,1.53 -0.11,1.74 h-2.3 l-2.63,-1.32 -7.42,1.48 -4.02,-2.54 -1.53,-3.25 0.6,-4.38 1.86,-3.29 3.09,-1.17 0.82,-3.23 -2.19,-2.34 0.91,-2.21 2.78,-2.1 0.97,-0.82 3.05,-0.61 -0.95,-3.83 1.73,0.25 0.15,-1.17 1.88,-2.72 2.5,-0.44 5.81,5.34 1.94,0.58 1.81,-1.22 0.89,0.62 2.45,-0.55 0.95,1.74 -2.12,1.84 -0.53,2.19 1.02,2.43 2.89,2.58 h1.77 l2.54,1 0.11,3.42 -1.55,0.69 0.64,3.95 2.24,2.66 2.47,0.3 0.93,0.91 0.68,2.72 2.79,0.46 0.79,1 v4.67 l1.34,-0.29 3.52,1.74 2.37,-1.19 1.54,-1.8 h3.59 l1.55,-1.04 1.1,0.44 0.72,-4.76 1.27,-4.6 2.83,-4.62 2.46,-1.48 v-2.25z\\\"/>\\n\\t\\t<path\\n\\t\\t   id=\\\"pHE_2\\\"\\n\\t\\t   d=\\\"m746.11,337.22 2.59,-1.63 1.69,-0.17 1.14,-0.5 2.06,-0.26 0.71,5.61 -0.58,3.62 -3.39,-0.41 -0.39,-2.39z\\\"/>\\n\\t</g>\\n\\t<path\\n       id=\\\"pHA\\\"\\n       d=\\\"m647.06,467.43 5.6,0.5 2.87,-1.18 2.45,-2.82 2.74,-0.72 1.8,-1.45 4.45,-0.45 5.01,-5.4 2.02,-1.21 h2.57 l1.06,-2.93 2.3,-1.09 5.6,0.37 2.01,-2.08 3.51,0.65 3.56,-2.1 5.01,-3.56 3.69,-3.08 0.31,-8.37 0.64,-2.4 v-6.55 h5.6 l1.65,1.23 5.56,0.38 1.91,1.31 2.15,0.23 1.81,-1.43 1.6,0.29 2.41,1.25 2.62,-2.3 1.93,-0.18 1.46,0.88 2.64,0.44 v0.96 l-1.29,1.39 -0.74,3.1 1.1,0.77 5.6,-4.18 2.81,-1.09 2.95,-2.23 0.32,1.98 -3.66,2.87 -8.15,8.52 -0.88,2.44 -2.24,1.51 -1.76,1.96 -0.49,2.17 -1.83,2.03 v1.74 l1.08,0.68 4.74,0.43 3.1,2.5 2.61,1.23 0.3,2.66 2.28,1.8 3.03,-1.49 3.95,0.12 1.4,-0.93 2.39,0.52 0.54,2.12 4.14,3.37 2.59,0.29 0.88,0.88 0.59,3.46 1.78,2.08 -0.76,1.46 -1.31,0.89 -1.24,1.73 -3.5,2.26 h-1.56 l-3.03,-4.06 -2.24,-1.9 -2.86,-0.22 -1.65,1.26 -0.65,2.89 1.49,6.62 -4.02,1.88 -1.07,3.27 0.98,2.32 -1.25,3.34 -2.12,1.47 -3.7,-0.38 -0.45,1.87 0.6,1.29 4.38,1.09 1.29,1.31 0.18,3.2 1,1.69 3.2,0.5 2.99,2.65 1.91,0.31 1.9,-2.35 2.23,-1.24 -0.11,2.33 2.4,7.15 -1,7 -3.93,1.04 -2.89,3.21 -0.54,5.56 -2.96,-0.78 -0.61,-2.07 -1.87,-0.77 -1.06,0.95 -0.45,1.63 -4.61,0.54 -4.67,-2.12 -0.46,-2.67 -1.67,-0.16 -1.55,0.39 -2.71,-1.81 h-0.93 l-1.72,1.61 h-1.74 l-1.51,-1.76 -2.64,-2.14 -0.84,-2.71 -0.56,-6.21 -0.93,-0.7 -1.6,0.63 -1.94,1.92 -2.19,0.84 -4.38,-2.31 -2.85,0.21 -6.07,2.43 -2.39,-0.95 -4.32,1.34 -10.2,-2.55 -1.86,-1.99 -3.74,-0.38 -2.27,-3.21 -3.58,-2.73 -2.85,-4.72 -2.5,-2.51 0.11,-5.46 -3.52,-3.01 -1.41,-3 -2.8,-1.76 0.25,-2.46 -0.83,-3.73 -2.74,-1.13 -0.49,-2.57 -1.87,-1.67 -0.53,-2.72z\\\"/>\\n\\t<path\\n       id=\\\"pSD\\\"\\n       d=\\\"m769.48,374.61 -1.59,2.53 -2.61,1.92 -0.36,3.41 -1.8,0.89 -2.48,-0.22 -6.41,1.14 -1.43,2.91 -4.14,4.47 -1.89,-1.11 -1.25,1.89 -0.96,3.59 -3.09,1.06 -2.2,7.66 -2.46,4.84 -2.54,1.8 -2.16,2.97 -0.24,3.51 1.6,3.1 2,2.44 0.19,3.14 -1.64,1.98 -0.27,2.75 0.8,0.83 5.7,-4.17 3,-1.32 2.81,-2.14 0.39,1.77 -4.64,3.84 -7.47,7.94 -0.5,2.28 -4.09,3.06 -0.5,2.47 -1.94,2.08 -0.14,1.92 5.74,1.19 3.67,2.44 2.09,0.9 0.39,2.82 2.52,1.68 3.14,-1.28 3.65,-0.2 1.63,-0.72 3.39,0.28 2.92,-1.61 0.67,-5.95 5.3,-2.22 2.52,0.88 3.84,3.93 1.34,3.43 1.39,0.96 2.68,-1.78 2.84,1.53 1.44,-0.21 2.75,-2.36 0.89,-2.47 2.9,-0.75 3.49,2.14 0.1,2.3 1.28,1 2.56,-1.58 1.7,-5.64 3.83,-0.89 1.36,-6.13 1.38,-2.51 3.34,-1.24 2.91,-0.23 0.49,-4.11 1.53,-2.28 2.06,-5.15 3.27,-1.01 0.72,-2.41 1.54,-4.1 2.38,-2.14 -2.77,-3.03 1.82,-1.8 2.65,1.32 3.12,0.48 2.6,-2.61 -0.25,-6.02 1.61,-2.94 2.32,-0.52 4.52,-3.76 3.31,-2.3 1.57,-1.19 2.67,-2.05 2.58,-3.36 2.8,0.51 1.34,-1.34 2.8,2.54 2.97,-2.29 -1.23,-3.19 1.03,-2.57 -0.24,-4.33 -3.03,-1.17 -2.78,1.52 -3.31,-1.52 -4.95,1.99 -4.11,2.05 -2.44,-1.07 -1.71,-1.95 -2.22,0.49 -4.37,-2.82 -3.18,-1.47 -3.9,1.47 -4.2,3.2 -0.76,4.04 -4.53,4.03 -0.76,4.29 -3.42,3.67 -7.22,-0.77 -5.48,-2.09 -0.77,-9.67 -3.17,-3.42 -4.77,-1.25 -2.97,-2.22 -2.63,0.95 -3.41,2.1 -3.18,-2.65z\\\"/>\\n\\t<path\\n       id=\\\"pSX\\\"\\n       d=\\\"m700.91,327.25 -0.76,0.47 -1.72,3.77 -4.15,1.93 -4.2,3.15 -2.2,0.1 -2.62,-1.66 -1.92,0.57 -2.21,2.08 -0.99,2.05 -2.35,1.31 -4.79,-1.9 -2.26,0.89 -3.77,8.24 -1.83,5.1 -2.64,1.85 -3.83,-0.61 -1.18,1.88 -0.65,2.32 -2.53,2.08 -0.89,-0.18 -0.1,5.12 -0.37,2.38 -2.41,2.5 v5.53 l-1.01,2.51 -0.59,4.27 -3.55,3.09 -1.78,3.62 0.14,3.72 2.75,2.53 2.64,3.79 -0.1,2.76 -1.2,2.24 0.19,3.09 -3.53,6.66 -0.16,7.57 1.65,2.25 0.3,9.98 3.97,10.42 -0.34,3.24 -2.71,4.52 -1.89,5.69 0.33,7.25 1.07,2.17 5.82,0.18 3.23,-1.2 1.96,-2.64 4.77,-2.01 4.43,-0.83 5.32,-5.7 1.59,-0.74 2.37,-0.1 1.03,-2.64 2.92,-1.04 4.86,0.1 2.61,-2.17 2.76,0.88 1.67,-0.43 2.76,-2.32 5.82,-3.96 2.48,-2.41 0.27,-7.18 0.61,-2.92 -0.1,-7.04 -2.62,-2.42 -2.4,-3.34 0.36,-2.37 0.95,-0.75 1.07,-0.15 2.48,-3.62 -0.66,-3.13 0.27,-1.92 0.68,-1.16 0.64,-3.45 2.05,-3.12 1.04,-3.02 -0.95,-2.28 -4.38,-5.26 -1.27,-3.71 -3.83,-1.42 -1.16,-1.44 -0.69,-5.76 1.4,-1.77 1.39,-1.26 1.4,-1.67 0.1,-1.42 -1.15,-0.99 -0.32,-1.48 2.28,-2.64 4.22,-0.86 3.32,-1.82 0.5,-1.29 0.43,-3.88 1.22,-3.05 -0.99,-2.35 -2.1,-1.96 -0.55,-3.03 -1.04,-1.15 -3.41,-0.32 -2.03,-1.4 -0.49,-1.62 1.12,-2.53 3.28,-1.04 2.26,-1.97 v-0.7 l-2.58,-1.24 -0.56,-3.36z\\\"/>\\n\\t<path\\n       id=\\\"pSN\\\"\\n       d=\\\"m604.56,399.53 2.78,3.72 4.16,-0.28 2,-1.19 1.56,-4.78 2,-4.28 2.88,-2.03 3.09,-5.35 1.88,-1.59 1.37,-2.72 4.03,-1.16 1.47,-1.21 v-1.91 l-1.4,-1.72 0.75,-5.62 3.84,-3.63 1.62,-3.78 0.97,0.62 0.38,1 4.12,-0.68 2.72,1.47 1.06,-0.91 1,-1.84 3.69,-3.88 2.85,3.09 0.34,4.25 -0.38,2.94 -2.59,2.53 -0.1,5.44 -0.82,2.44 -0.53,4.37 -3.72,3.47 -1.78,3.41 0.16,3.37 2.91,3.19 2.43,3.72 v2.59 l-1.18,2.41 0.15,3 -3.5,6.66 -0.25,7.53 1.57,2.34 0.46,9.97 3.75,10.41 -0.31,2.96 -2.53,4.6 -1.87,5.78 0.25,7.34 1.18,2.25 0.88,3.57 1.81,1.84 0.41,2.12 2.72,1.35 0.93,4.31 -0.18,1.91 2.56,1.81 1.94,3.16 3.15,2.84 v4.81 l-3.94,4.47 -3.65,-2.62 -3,2.15 h-4.19 l-1.41,-0.75 -6.97,-0.78 -2.46,0.84 -0.79,1.1 0.6,1.75 3.75,0.5 0.62,3.28 4.28,0.94 2.69,1.81 -0.31,2.81 -3.28,0.66 -3.16,1.53 -2.78,0.4 -1.66,5.38 1.04,2.56 2.65,2.69 -0.84,2.37 v3.04 l-6.5,1.25 -1.85,-0.54 -0.72,-2.87 -4.81,-0.78 -8.12,-5.1 -3.85,0.32 -5.72,2.5 -5.59,-4.35 -2.94,-0.37 -2.09,-2.38 -2.13,1.16 -2.53,-0.28 -1.03,-1.53 -0.81,-3.16 -4.63,-0.47 -2,0.97 -8.71,2.13 -2.19,-1.22 -0.69,-3.41 -1.47,-0.91 -4.81,-0.34 3.41,-3.78 1.06,-3.84 -1.03,-2.6 -3.13,-1.69 1.35,-2.21 3.62,-1.72 7.44,-0.1 0.4,-0.9 -0.34,-1.16 v-4.47 l-1,-1.65 2.75,-6.22 1.5,-1.47 -0.1,-1.72 -2.22,-2.13 -3.91,-1.12 -0.19,-1.5 2.94,-2.66 0.47,-3 -0.97,-2.15 0.69,-2.19 4.84,-1.19 3.69,0.5 3.41,3.06 8.81,-1.53 1.91,-1.15 -1.29,-2.32 0.22,-3.5 1.35,-0.21 2.62,1.21 3.1,-1.65 5.53,0.31 2.09,-1.34 0.5,-4.75 -2.03,-2.72 -0.47,-4.63 3.25,-2.81 -0.28,-7.59 -2.56,-2.32 -1.85,-0.4 -3.9,-2.72 -2.69,0.75 -3.84,-3.75 -6.63,-1.91 -0.75,-0.68 -2.19,-0.5 -1.68,-4.22 0.53,-2.38 -1.44,-2.72 1.12,-5.25 2.6,-2.93 5.23,-1.36 3.99,-0.1 2.28,-1.67z\\\"/>\\n\\t<path\\n       id=\\\"pAH\\\"\\n       d=\\\"m738.08,492.71 2.08,-1.58 0.93,-3.19 -0.68,-2.62 0.97,-3.27 3.91,-1.54 0.11,-1.22 -1.44,-5.57 0.58,-2.98 1.97,-1.07 2.66,0.21 2.08,2.05 3.27,3.88 1.54,-0.1 3.41,-2.08 1.15,-2.15 1.69,-0.97 0.57,-1.19 -1.97,-2.26 -0.22,-3.23 -0.9,-0.97 -2.94,-0.21 -4.09,-3.05 -0.29,-2.55 1.94,-0.47 2.04,-1.29 1.98,0.1 2.04,2.05 7.11,2.26 0.68,3.01 3.63,2.59 2.08,-0.25 2.95,0.82 h3.41 l2.9,2.87 0.65,2.01 1.44,0.72 1.75,-0.9 2.98,-0.93 0.94,0.58 v3.66 l-1.8,6.35 0.22,1.72 4.13,0.94 2.04,2.87 -0.18,1.44 1.47,2.83 2.09,1.58 5.17,-1.15 0.75,-1.36 0.39,-1.98 1.37,-2.01 1.04,-0.1 4.63,2.33 1.79,3.91 -2.15,3.77 -1.47,-0.25 -2.15,-1.62 -4.74,0.76 -0.4,1.58 1.65,2.04 0.86,1.98 -0.75,2.33 -2.3,1.83 -1.32,2.23 -0.33,2.01 1.33,2.04 2.12,1.69 3.3,1.15 1.01,1.08 2.87,0.82 v4.24 l-1.36,1.47 1.4,2.33 3.59,-0.32 2.94,-1.26 2.44,-0.25 2.27,1.33 4.23,0.5 v4.85 l-1.26,4.59 -1.36,1.83 -1.94,1.44 0.18,1.04 1.65,1.33 0.5,1.76 -1.51,1.9 -2.11,0.72 -3.77,-0.25 -1.19,0.93 0.29,3.73 0.47,0.76 0.32,4.81 -1.87,1.08 -0.5,3.26 -5.1,6.07 -1.76,0.5 -2.04,1.87 -2.3,-2.52 -2.01,-0.57 -2.55,0.97 -5.63,-0.5 -2.48,-1.65 -1.76,-2.52 -2.12,-0.32 -0.39,-0.68 -1.62,-0.29 -0.93,1.01 -0.4,3.05 -1.36,1.07 -2.01,3.49 -2.8,0.21 -1.22,-1.65 0.47,-1.9 2.04,-2.19 0.22,-1.9 -1.73,-2.41 -1.68,-0.9 -2.16,1.3 -0.64,1.83 -1.87,1.9 -5.38,2.4 -0.58,-2.9 -1.33,-4.71 -1.43,-2.72 -2.48,-1.69 0.22,-3.16 -2.3,-2.15 -1.37,-2.19 1.51,-2.95 1.9,-2.69 0.36,-1.62 -3.47,-2.54 -1.54,0.1 -2.24,-0.62 h-2.48 l-3.27,-3.39 0.71,-5.8 2.78,-3.02 3.97,-1.09 0.96,-7.06 -2.34,-6.66 0.11,-2.72 -2.06,0.92 -2.16,2.49 -1.94,-0.1 -3.15,-2.91 -3.13,-0.38 -0.87,-1.45 -0.19,-3.5 -1.52,-1.44 -4.09,-0.84 -0.69,-1.23 0.63,-1.91z\\\"/>\\n\\t<path\\n       id=\\\"pJS\\\"\\n       d=\\\"m806.7,437.8 h-3.17 l-1.37,1.09 -1.88,0.32 -1.09,2.31 -1.28,6.12 -3.88,1.16 -1.59,5.28 -2.69,1.66 -1.53,-1.1 -0.1,-2.4 -2.97,-1.88 -3.16,0.69 -0.81,2.53 -3.28,2.72 -1.5,-0.19 -2,-1.43 -3.28,1.71 -1.82,-1.96 -0.97,-2.6 -4,-4.19 -2.56,-0.28 -4.53,1.91 -0.91,3.81 0.1,2.22 2.25,0.41 2.09,1.97 6.63,1.78 0.96,3.06 3.54,2.94 2.25,-0.22 6.96,1.06 2.19,2.16 0.63,2.47 1.06,0.4 4.84,-1.65 1.44,0.78 -0.16,3.47 -2,6.12 0.44,2.06 4.13,0.75 1.93,3 -0.12,1.66 1.5,2.47 2,1.65 5.37,-1.28 0.88,-3.43 2,-2.19 5.19,2.53 1.65,3.87 -2.03,3.85 -1.37,-0.19 -2.38,-1.72 -4.94,1 -0.43,1.44 1.75,1.81 1.03,2.44 -1,2.44 -2.16,1.4 -1.59,3.57 0.59,1.9 3.19,2.97 3.22,0.84 0.97,1.13 2.68,0.84 v4.25 l-1.28,1.5 1.25,1.94 h3.72 l2.66,-1.53 2.9,-0.1 2.32,1.46 4.22,0.32 1.9,-0.78 2.63,-0.32 6.43,4.19 2.66,-1.22 1.56,0.1 0.94,1.5 2,0.37 2.28,-1.84 0.81,-2.16 2.75,-2.06 0.82,-2.06 1.81,-1.32 0.81,-5.03 1.64,-2.85 -0.84,-0.47 -1.99,-2.25 -3.92,-0.73 -5.01,-0.8 -0.51,-2.78 -3.53,-0.7 -3.98,1.98 -1.3,0.44 -0.37,-0.52 1.65,-2.61 3.41,-1.57 4.98,0.52 1.79,2.55 2.65,0.97 h4.78 l3.61,0.51 3.54,2.03 4.46,0.74 2.1,-0.47 0.64,-1.27 -2.68,-3.65 -5.24,-4.74 -4.87,-1.28 -1.77,-5.07 -4.42,-1.72 -5.08,-1.27 -1.94,-1.39 0.77,-3.37 -1.22,-3.18 -6.06,-8.84 -3.75,-6.25 -4.81,-9.12 -2.47,-2.46 -12.38,-3.79 -2.26,-2.52 -5.65,-1.02 -0.55,-4.84z\\\"/>\\n\\t<g id=\\\"pSH\\\">\\n\\t\\t<path\\n\\t\\t   id=\\\"pSH_1\\\"\\n\\t\\t   d=\\\"m856.5,509.2 -1.62,2.26 -1.07,5.56 -1.62,1.44 -0.97,2.08 2.16,1.33 0.86,2.29 4.02,0.83 1.43,2.19 4.73,-3.4 3.24,-3.99 0.71,-3.83 -3.39,-2.91 -5.29,-2.01z\\\"/>\\n\\t\\t<path\\n\\t\\t   id=\\\"pSH_2\\\"\\n\\t\\t   style=\\\"stroke-width:0.5\\\"\\n\\t\\t   d=\\\"m859.26,506.4 6.04,1.54 0.5,1.57 -3.96,-0.54 -3.91,-0.88 -3.55,-2.46 1.74,-1.12z\\\"/>\\n\\t\\t<path\\n\\t\\t   id=\\\"pSH_3\\\"\\n\\t\\t   style=\\\"stroke-width:0.5\\\"\\n\\t\\t   d=\\\"m866.54,511.64 -0.1,0.67 -3.72,-1.33z\\\"/>\\n    </g>\\n\\t<path\\n       id=\\\"pZJ\\\"\\n       d=\\\"m859.63,527.25 -1.69,-2.25 -3.88,-0.94 -0.56,-2.34 -2.13,-1.06 -2.78,1.71 -0.87,2.19 -2.44,2.19 -1.72,-0.63 -0.81,-1.59 h-2 l-2.31,1.31 -6.69,-4.4 -4.41,1.18 -0.12,5.5 -1.66,4.85 -2.9,2.84 2.43,3.69 -1.47,2 -2.87,0.81 -3.78,-0.25 -0.41,0.94 0.75,9.37 -1.84,1.1 -0.19,3.47 -5.41,5.87 -1.87,0.38 -3.31,4.43 -0.32,4.22 6.22,4.91 2.88,3.47 2,7.69 4.62,-0.29 1.5,1.22 0.35,3.32 -0.35,1.06 2.22,2.53 3,6.94 0.41,1.81 5.09,0.59 4.19,-2.53 1.44,-3.06 0.75,-0.84 1.47,0.56 2.9,5.09 2.06,1.28 5.66,-2.34 1.5,-0.94 3,0.56 2.18,1.43 1.59,-2.14 -0.25,-3.72 0.25,-2.32 1.78,-5.08 1.55,-3.62 1.73,-1.23 0.51,-6.1 3.46,-1.44 0.72,4.77 2.44,-3.34 3.15,-2.18 -1.92,-4.08 -1.87,-3.2 2.85,-2.59 v-3.51 l2.75,-3.75 -1.02,-3.07 1.77,-1.51 -0.97,-3.65 -0.43,-5.08 -1.43,3.49 -3.48,0.31 3.89,-5.27 4.31,-3.31 3.41,-1.7 -0.44,-2.21 -5.35,-2.19 -2.08,0.7 -1.51,3.52 -2.75,1.1 -3.39,-2.35 -4.48,-3.48 -3.6,0.48 -4.77,4.27 -2.63,1.06 -4.63,-0.77 -4.15,-1.04 -0.93,-1.58 3.54,-1.91 5.33,-0.51 2.85,-0.95 0.24,-2.97z\\\"/>\\n\\t<path\\n       id=\\\"pJX\\\"\\n       d=\\\"m735.33,663.03 1.78,1.39 0.34,1.38 4.25,0.2 3.13,-1.78 2.75,-0.69 1.78,0.86 1.37,2.56 -0.84,2.53 -3.81,2.68 -1.05,3.92 -2.8,3.72 4.49,3.01 14.15,-5.5 5.52,-2.84 4.98,3.76 2.55,-0.14 0.67,-1.67 -1.43,-4 2.81,-2.12 -1.81,-3.78 -0.11,-2.29 1.65,-1.56 1.07,-9.31 1.42,-1.99 0.12,-3.56 2.6,-1.48 1.81,-3.89 -1.16,-4.16 3.22,-3.33 v-1.25 l-1.97,-3.95 0.48,-5.53 2.38,-1.83 4.67,-1.98 2.95,-4.91 -1.84,-6.03 2.14,-4.99 0.51,-3.15 3.79,-2.21 2,0.21 1.2,1.19 2.14,0.28 0.61,-1.8 3.06,-2.31 7.06,-3.36 -0.2,-2.99 1.8,-2.47 -2.02,-7.67 -3.28,-3.68 -5.95,-4.74 0.2,-3.75 1.72,-2.98 -2.34,-2.72 -2.18,-0.5 -2.2,0.89 -5.81,-0.36 -2.69,-1.92 -1.45,-2.19 -2.14,-0.23 -0.5,-1.08 -1.67,-0.13 -0.86,1.13 -0.54,3.04 -1.31,1.3 -1.89,3.25 -2.5,0.27 -1.44,-1.66 0.38,-2.09 1.97,-2.02 0.36,-2.25 -1.85,-2.2 -1.57,-0.67 -2.27,1.01 -0.55,2.08 -2.09,1.8 -9.56,4.7 -3.18,-1.55 -3.57,-0.2 -2.05,0.53 -0.47,3.44 -1.69,0.87 -2.62,-0.34 -1.39,1.02 0.72,1.82 -2.52,0.6 -2.16,1.95 -0.64,1.66 -5.98,2.06 -3.88,0.37 -1.23,1.77 -4.8,3.16 -0.34,1.48 4.87,6.31 0.13,4.25 2.48,3.92 -0.56,1.88 -2.17,2.3 -1.89,4.73 -3.69,1.28 -0.36,3.28 -1.48,2.19 -0.25,3.83 1.15,4.34 1.18,0.64 1.81,-1.39 1.34,1.11 0.46,1.3 -1.47,2.91 0.56,1.4 2.92,2.47 -1.58,3.27 0.53,1.95 2.35,2.01 2.56,0.83 0.38,2.96 -1.1,1.82 -0.4,3.66 1.51,0.7 2.13,-1.36 0.93,0.68 -2.5,3.34 0.14,3.09 -2.18,4.78 1.53,2.18z\\\"/>\\n\\t<path\\n       id=\\\"pHB\\\"\\n       d=\\\"m661.22,496.26 2.44,2.24 3.59,5.78 3.09,1.78 2.22,3.34 3.61,0.43 1.94,1.72 3.98,0.85 5.87,2.01 4.72,-1.37 2.25,0.61 6.37,-2.17 3.08,-0.11 4.13,2.37 1.92,-0.93 1.74,-2.01 1.71,-0.7 1.02,0.57 0.41,6.97 1.24,2.33 4.11,3.66 1.48,-0.29 2.08,-1.49 3.43,1.93 2.4,-0.44 1.04,0.79 0.1,1.96 4.67,2.41 4.47,-0.78 1.52,-2.58 2.01,0.77 0.54,2.07 2.89,0.93 3.7,3.8 2.33,-0.43 4.06,0.99 3,2.14 -0.51,2.17 -3.3,4.83 1.89,3.19 1.84,1.31 -0.18,3.34 2.53,1.61 2.45,6.48 0.8,4.04 -4.47,2.12 -2.97,-1.49 -3.68,-0.41 -2.12,0.48 -0.34,3.39 -2.1,1.19 -2.28,-0.22 -1.22,0.99 0.46,1.8 -2.19,0.34 -2.33,2.1 -0.74,1.83 -5.9,1.92 -3.95,0.2 -1.6,2.24 -4.23,2.73 -0.77,1.42 -2.66,-0.53 -1.45,0.72 -0.6,-2.33 -1.77,-1.67 0.12,-3.18 1.24,-1.94 -0.59,-2.45 -2.08,-2.36 -0.24,-2.08 -3.98,2.89 -4.88,6.25 -2.88,-0.34 -0.61,-2.16 1.14,-2.81 -1.28,0.35 -1.18,-1.22 -2.23,0.81 -3.09,2.91 h-2.62 l-2.47,1.71 -9.18,-6.27 -8.79,-0.43 -3.16,-1.95 -5.67,-0.86 -3,0.32 -1.83,1.13 -3.62,0.65 -0.36,1.36 3.28,2.73 0.54,2.06 -4.04,2.51 h-3.37 l-1.83,0.59 -1.89,-2.65 -3.44,0.41 -3.38,2.35 -1.94,0.92 -3.28,2.99 -0.45,2.84 -1.81,2.24 -0.51,3.88 -2.85,-0.9 -4.18,-5.36 -0.29,-4.51 -2.91,-0.79 -3.1,-3.48 -2.35,1.56 0.77,-3.27 0.16,-7.61 -2.76,-3.64 3.93,-2.98 3.43,0.11 3.51,-1.83 3.13,0.28 3.89,-0.44 3.63,-2.12 4.65,-5.22 3.85,1.43 1.37,-3.14 -0.61,-3.48 1.04,-2.93 -0.88,-3.12 -1.42,-2.46 -3.19,-2.1 v-4.47 l-6.05,-0.45 0.18,-3.34 0.68,-1.99 -2.78,-2.94 -1,-2.25 1.86,-5.36 3.38,-0.63 2.44,-1.42 3.32,-0.64 0.5,-2.89 -2.82,-1.8 -4.61,-0.82 -0.3,-3.43 -3.76,-0.36 -0.66,-1.53 0.95,-1.33 2.57,-0.7 6.93,0.78 1.61,0.77 3.93,-0.15 2.52,-2.11 3.84,2.51z\\\"/>\\n\\t<path\\n       id=\\\"pHN\\\"\\n       d=\\\"m635.62,590.87 0.54,-3.81 2.81,-5.81 2.62,-2.59 5.6,-3.41 3.4,-0.28 1.88,2.37 2.56,-0.59 2.81,0.25 3.72,-2.44 -0.5,-2.25 -3.47,-2.81 0.41,-1.34 3.84,-0.41 1.66,-1.56 8.44,0.56 3.59,2.16 8.63,0.43 9.31,6.47 2.5,-1.75 2.65,-0.53 4.32,-3.28 3.15,1.12 -0.78,2.38 0.53,2.16 2.75,0.31 4.94,-5.85 3.78,-3.46 0.56,2.37 2.04,2.78 0.5,1.88 -1.25,2.25 v2.9 l1.62,1.75 0.72,2.47 1.19,-0.65 3.09,0.46 4.63,6.1 0.4,4.62 2.53,3.63 -0.72,1.9 -2.18,2.6 -1.82,4.53 -2.75,0.78 -1.15,0.91 -0.19,3.09 -1.5,1.88 -0.31,3.93 1.34,4.53 1.06,0.38 1.79,-1.28 1.75,1.5 0.18,1.22 -1.78,2.56 0.66,1.31 3.12,2.53 -1.53,3.38 0.41,1.75 2.37,2.09 2.63,0.97 0.34,2.91 -1.12,1.78 -0.41,3.75 1.41,0.72 2.37,-1.57 0.75,0.66 -0.37,1 -2.22,2.38 0.12,3.06 -2.06,5 1.69,2.31 v2.81 l-2.97,2.72 -6.78,0.28 -4.1,-2.43 -6.03,4.75 v1.18 l1.31,2.19 -0.25,4.75 -3.15,0.38 -4.88,-4.22 -7.65,0.43 -0.72,4.32 0.9,2.09 -1.28,2.47 -2.9,1.03 -6.29,-0.19 -2.43,3.1 -0.75,0.34 -0.88,-1.34 0.31,-2.5 -0.71,-4.63 -1.75,-1.87 -2,0.15 -2.32,2.22 -1.9,1.94 -1.28,-1.5 0.1,-2.34 2.44,-3.44 0.97,-2.19 1.87,-1.69 0.63,-6.4 1.28,-1.53 0.22,-2.29 -1.35,-0.56 -2.65,0.5 -1.07,-1.75 0.63,-6.25 -2.66,-0.69 -1.59,-1 -2.16,0.25 -1.9,1.75 -4.35,-0.84 -1.81,2.91 -2.84,2.78 -1.1,1.94 -2.62,0.68 -1.07,-0.65 0.1,-3.16 -1.85,-1.75 -1.72,0.34 -1.59,2.97 -0.72,2.41 -1.97,1.97 -1.47,-0.31 -1.31,-1.32 h-2.75 l-0.47,-2.28 -3.09,-4 -0.25,-2.12 1.94,-2.57 0.12,-1.18 -1.94,-2.94 3.07,-2.91 0.31,-1.5 -0.53,-4.15 -1.6,-1.35 -2.31,-0.1 -1.78,0.81 -2.19,-0.12 -3,2.28 -1.4,-0.25 -1.35,-1.72 5.82,-6.09 3.12,-1.16 1.03,-1.81 1.56,-1.13 0.25,-2.31 -1.81,-2.44 -0.84,-3.84 -0.22,-5.53 0.37,-1.44 -1.43,-1.66 -1,-3.47z\\\"/>\\n\\t<g id=\\\"pFJ\\\">\\n\\t\\t<path\\n\\t\\t   id=\\\"pFJ_1\\\"\\n\\t\\t   d=\\\"m804.56,695.18 -0.49,-0.99 -1.42,-0.94 -0.36,-1.42 -2.92,-5.11 -0.55,-4.88 -3.17,-4.34 -1.55,-1.11 -0.89,-2.66 -1.87,-0.21 -2.55,1.35 -2.78,-3.04 -2.88,-1.56 -2.89,0.78 -1.56,-0.88 -2.58,0.16 -1.97,-3.8 -0.1,-2.33 1.83,-1.5 0.8,-9.62 1.51,-1.71 v-3.79 l2.57,-1.3 2.06,-3.86 -1.3,-3.89 1.41,-2.12 1.75,-1.43 v-1.4 l-1.99,-3.44 0.47,-5.87 2.55,-2.04 4.36,-1.68 2.23,-2.96 0.93,-2.54 -1.63,-4.71 0.78,-3.95 1.16,-1.64 0.51,-3.31 2.43,-1.41 1.51,-1.12 1.89,0.39 1.14,1.42 1.96,0.15 0.95,-1.96 3.11,-2.07 6.94,-3.53 -0.21,-2.98 1.47,-2.35 4.77,-0.25 1.26,0.88 0.74,3.53 -0.5,1.02 2.29,2.57 1.77,4.77 1.59,3.11 0.16,0.95 3.59,0.28 1.22,0.43 4.05,-2.58 2.37,-4.07 1.47,0.77 3.3,5.05 2.05,1.18 2.46,-1.4 4.77,-1.86 2.75,0.53 2.04,1.45 -1.05,1.43 h-3.17 l2.16,1.55 -1.88,1.88 -0.26,3.51 -1.42,1.19 -3.36,2.33 -0.67,3.61 -0.73,-0.92 -3.6,-0.55 -0.86,3.14 3.87,3.35 0.91,1.59 -1.69,2.17 -1.31,4.2 1.52,2.54 -0.51,2.26 1.24,2.23 -2.28,3.54 2.3,3.33 -0.41,1.43 -2.01,-0.45 -2.91,-1.85 -1.95,2.23 -0.54,2.96 2.12,2.59 -1.99,0.66 -4.22,3.7 1.54,2.83 -0.88,1.53 -5.5,0.26 0.91,2.42 1.91,1.19 -0.92,2.07 -1.17,1.62 h-4.23 l-3.13,1.56 -1.75,2.5 -4.44,0.83 2.61,2.33 1.17,2.32 -1.92,1.92 -1.96,3.19 h-2.89 v4.22 l-3.87,-1.03 1.02,4.58 -2.64,-0.48 -0.77,3.56z\\\"/>\\n\\t\\t<path\\n\\t\\t   id=\\\"pFJ_2\\\"\\n\\t\\t   style=\\\"stroke-width:0.5\\\"\\n\\t\\t   d=\\\"m850.41,617.37 -0.72,2.5 1.25,1.78 1.07,-2.14z\\\"/>\\n\\t\\t<path\\n\\t\\t   id=\\\"pFJ_3\\\"\\n\\t\\t   style=\\\"stroke-width:0.5\\\"\\n\\t\\t   d=\\\"m848.98,643.08 -0.36,2.32 1.61,1.97 1.61,-1.79 -1.08,-2.14z\\\"/>\\n\\t</g>\\n\\t<g id=\\\"pGD\\\">\\n\\t\\t<path\\n\\t\\t   id=\\\"pGD_1\\\"\\n\\t\\t   d=\\\"m656.59,759.62 1.02,-3.28 2.41,-0.97 1.29,-3.96 1.41,-1.21 6.92,-0.83 -1.02,-1.64 0.15,-4.21 4.2,-0.65 3.53,-2.7 -1.45,-3.72 1.15,-2.39 4.17,-1.73 6.97,-6 1.53,-1.91 0.15,-3.51 -0.94,-2.16 -0.1,-4.14 1.72,-5.44 2.22,-2.01 0.28,-3.1 2.53,-0.76 2.22,-3.13 -0.75,-5.12 2.51,-2.47 0.1,-2.47 -0.91,-1.8 -0.14,-1.53 -1.25,-1.97 -0.11,-1.98 2.81,-1.03 1.74,-2.46 -1.06,-2.28 0.89,-4.06 7.57,-0.59 4.96,4.5 3.15,-0.5 0.16,-4.94 -1.62,-2.27 0.57,-1.5 5.93,-4.37 3.95,2.56 6.86,-0.41 3.03,-2.56 1.62,1.49 0.61,1.53 3.91,0.1 3.45,-1.95 2.66,-0.44 2.03,1.16 1.09,2.45 -0.9,2.61 -3.72,2.51 -0.97,3.68 -2.81,3.62 4.28,3.03 14.22,-5.08 4.29,-2.81 h1.44 l5.1,3.5 1.96,-0.25 0.94,-1.87 -1.28,-3.19 0.69,-1.59 3.81,-1.38 2.47,0.97 3.28,-0.66 2.81,1.6 2.41,2.9 3.5,-1.47 0.91,0.38 0.87,2.5 2.22,1.94 2.84,3.9 0.32,5.03 3.03,5.04 0.1,1.09 1.56,1.03 0.32,0.87 -1.98,2.83 1.9,1.67 -3.4,1.58 -5.77,0.51 -0.1,0.47 1.93,0.73 1.33,2.21 -3.92,1.72 -0.49,5.25 -4.67,0.74 -3.04,2.27 -2.27,0.51 -3.7,2.71 -4.09,-2.29 -1.18,1.48 -0.73,4.14 h-2.35 l-0.24,-2.18 -1.44,-0.86 -3.2,0.26 -3.62,3.37 -1.47,2.45 -2.92,0.22 -0.52,-3.9 -3.97,1.99 -0.26,3.57 -2.67,-1.26 -3.77,1.5 -3.93,1.35 -2.67,0.16 -2.24,-2.1 -1.04,-2.52 -2.28,0.21 -1.29,-1.28 -0.99,-0.74 -0.87,2.3 0.77,1.21 0.22,1.07 0.26,2.61 1.41,3.68 0.24,1.72 -0.11,0.19 -2.35,1.39 -2.39,-2.3 -0.4,0.28 1.24,3.07 -3.26,4.19 -3.45,-4.43 -1.14,2.56 0.39,5.7 h-3.86 l-4.26,3.01 -3.9,-1.04 -0.78,2.32 h-7.2 l-2.32,1.29 -3.18,1.06 v2.32 l-3.11,2.15 h-3.29 l-1.78,1.52 -5.58,0.26 -1.77,2.27 -4.05,0.26 -3.53,4.8 -2.49,0.25 -3.6,2.57 -2.39,2.4 1.09,3.54 2.76,1 0.75,3.48 3.49,3.49 -0.22,1.32 -3.41,3.4 -7.28,0.25 -0.66,-2.19 1.43,-1.13 -4.51,-2.39 -0.51,-5.85 -2.73,-0.74 0.97,-7.82 2.76,-4.26 1.44,-2.6z\\\"/>\\n\\t\\t<g id=\\\"pGDi\\\" style=\\\"stroke-width:0.5\\\">\\n\\t\\t\\t<path\\n\\t\\t\\t   id=\\\"pGD_2\\\"\\n\\t\\t\\t   d=\\\"m672.55,767.9 -1.61,1.07 0.54,0.9 2.5,-0.18 0.53,-1.97z\\\"/>\\n\\t\\t\\t<path\\n\\t\\t\\t   id=\\\"pGD_3\\\"\\n\\t\\t\\t   d=\\\"m731.85,739.93 -0.86,1.21 1.06,0.26z\\\"/>\\n\\t\\t\\t<path\\n\\t\\t\\t   id=\\\"pGD_4\\\"\\n\\t\\t\\t   d=\\\"m719.1,749.28 v1.52 l1.24,0.5 0.1,-3.04z\\\"/>\\n\\t\\t\\t<path\\n\\t\\t\\t   id=\\\"pGD_5\\\"\\n\\t\\t\\t   d=\\\"m716.27,749.7 -1.09,1.98 1.14,-0.1 0.88,-1.07z\\\"/>\\n\\t\\t\\t<path\\n\\t\\t\\t   id=\\\"pGD_6\\\"\\n\\t\\t\\t   d=\\\"m701.17,754.08 -0.13,1.01 1.52,-0.76 v-1.89z\\\"/>\\n\\t\\t</g>\\n\\t</g>\\n\\t<path\\n       id=\\\"pGX\\\"\\n       d=\\\"m567.75,725.59 7.16,-7.15 2.9,0.5 1.85,-0.66 0.59,-6.84 0.5,-1.47 -3.63,-4.53 -4.18,1.68 -4.6,-2.34 -3.25,2 -4.68,-2.19 -0.66,-3.93 -2.72,-3.19 -2.16,1.34 -1.28,-0.9 -3.25,0.28 -0.72,1.97 -1.4,-1 -2.6,-4.6 0.85,-2.4 4.34,1.15 5.28,-3.34 2.66,-3.6 5.81,0.72 1.78,2.78 3.94,0.44 2.13,1.31 2.09,-0.12 1.19,1.16 4.31,-2.75 -0.13,-3.85 2.82,-0.4 7.18,-4.94 3.91,-0.38 1.91,-1.87 1.53,-2.97 3.81,-3.56 1.47,0.81 0.87,2.66 2.82,2.09 2.59,-0.56 4.19,3.34 2.15,-1.47 2.54,-0.44 1.43,-3.81 1.6,-2.12 2.59,-1.32 4.75,2.97 2.41,-4.47 4.78,-0.12 1.03,-1.75 -1.56,-1.94 0.65,-1.15 2.25,-1.07 2.63,1.03 4.22,-5.75 2.37,-0.1 1.81,1.41 h1.5 l1.75,-1.85 0.66,-2.37 1.91,-3.06 1.5,-0.22 1.5,1.53 0.12,3.5 3.31,0.22 5.22,-6.44 1.03,-1.44 4.19,0.75 2.69,-2.09 5.69,1.84 -0.38,6.44 1.13,1.28 3.56,0.16 -0.1,2.34 -1.35,1.94 -0.47,6.22 -2.15,1.37 -0.47,2.35 -2.72,3.25 -0.31,2.4 1.62,1.66 3.94,-4.19 h2.06 l1.88,1.94 0.65,7.31 0.75,0.75 1.63,-1.03 1.16,-2.12 5.96,0.21 0.54,2.25 1.28,2.25 0.12,1.66 0.91,1.5 -0.28,2.09 -2.38,2.22 v2.35 l0.69,3.09 -2.25,3.09 -2.56,0.75 -0.38,3.07 -2.15,2.03 -1.63,5.53 0.1,4.25 1.1,2.16 -0.35,3.62 -5.56,5.5 -4.53,2.84 -2.63,0.88 -1.03,2.47 1.41,3.53 -3.69,2.87 -4,0.63 -0.22,4.09 0.85,1.47 -1.78,0.97 -4.57,0.22 -1.93,1.47 -1.19,3.81 -2.41,0.88 -0.9,3.21 h-0.51 l-3.08,-3.84 -1.66,0.34 1.02,4.3 -5.87,1.21 -1.51,1.09 -0.97,-3.83 -2.87,-0.78 -2.92,-1.6 -1.46,1.46 -2.31,-3.03 -0.82,-3.23 -3.2,0.87 v4.81 l-2.7,0.74 -1,2.23 h-1.76 l-0.58,-0.53 -3.51,1.39 -4.14,-2 -6.25,1.65 -7.97,-3.93 -2.4,-2.72 -6.53,-1.47 -1.35,-7.03 -1.53,-1.5 0.41,-3.13 3.43,-3.19 -0.34,-3.15 -5.41,-2.41 -4.21,1.6 -4.13,-2.82 -4.34,1.66 -7.35,-4.5z\\\"/>\\n\\t<path\\n       id=\\\"pHI\\\"\\n\\t   d=\\\"m658.26,794.33 5.18,0.89 3.22,-0.71 0.89,-1.61 6.61,-0.89 4.28,-1.25 4.82,-2.14 1.43,0.53 v3.57 l1.43,3.93 0.54,3.4 -2.5,2.14 -2.68,3.75 -2.68,5.71 -0.89,6.25 -0.72,4.65 -2.32,1.07 h-2.14 l-3.57,4.46 -0.18,1.97 -3.22,0.17 -3.57,0.9 v3.57 l-4.46,0.71 -2.14,-1.96 -6.08,0.36 -4.28,-1.97 -5.36,-2.32 -0.71,-4.29 -1.25,-3.03 -0.9,-4.82 0.9,-2.32 -0.72,-2.5 1.25,-2.68 7.68,-5.36 2.68,-0.71 1.43,-2.33 -2.5,-0.17 v-2.15 l2.14,-1.43 3.93,0.18 1.43,-0.71 v-1.79 l1.78,-0.89z\\\"/>\\n\\t<g id=\\\"pHK\\\">\\n\\t\\t<path\\n\\t\\t   id=\\\"pHK_1\\\"\\n\\t\\t   d=\\\"m744.14,728.48 3.91,-1.3 2.9,2.46 -1.91,1.18 0.51,1.6 -2.42,-0.44 -1.7,-0.45 -2.22,0.22z\\\"/>\\n\\t\\t<path\\n\\t\\t   id=\\\"pHK_2\\\"\\n\\t\\t   style=\\\"stroke-width:0.5\\\"\\n\\t\\t   d=\\\"m744.14,734.29 -3.42,0.57 3.14,-2.31z\\\"/>\\n\\t\\t<path\\n\\t\\t   id=\\\"pHK_3\\\"\\n\\t\\t   style=\\\"stroke-width:0.5\\\"\\n\\t\\t   d=\\\"m749.31,733.41 -0.97,0.82 -1.29,-1.06z\\\"/>\\n    </g>\\n\\t<g id=\\\"pMO\\\">\\n\\t\\t<path\\n\\t\\t   id=\\\"pMO_1\\\"\\n\\t\\t   d=\\\"m733.31,736.4 1.82,-1.39 -0.61,1.16z\\\"/>\\n\\t\\t<path\\n\\t\\t   id=\\\"pMO_2\\\"\\n\\t\\t   style=\\\"stroke-width:0.5\\\"\\n\\t\\t   d=\\\"m735.77,736.48 -1.79,1.43 1.61,0.89z\\\"/>\\n\\t</g>\\n  </g>\\n  <g\\n     id=\\\"layer7\\\"\\n\\t class=\\\"borders\\\"\\n     style=\\\"display:inline;fill:none;stroke-opacity:1\\\">\\n      <g\\n\\t\\tid=\\\"Claimed_borders\\\"\\n\\t\\tstyle=\\\"stroke:#808080;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:2,4;\\\">\\n\\t\\t<path\\n\\t\\t\\tid=\\\"bSouthTibet_719\\\"\\n\\t\\t\\td=\\\"m 300.89,635.01 3.56,0.29 4.07,-0.75 2.94,-1.01 2.67,2.03 3.47,0.18 3.38,0.75 3.45,-0.51 1.88,0.35 0.68,-0.22 6.61,-1.39 0.84,-3.36 3.25,-3 2.69,-1.59 2.74,-3.08 10.85,-2.16 3.01,-1.81 2.52,-0.62 1.99,-1.28 2.25,-0.8 1.44,-3.47 11.09,-3.47 0.71,1.39 1.54,1.04 2.9,-0.1 1.63,-0.64 1.28,2.04 1.53,0.31 0.33,-0.47 7.58,6.1 2.78,1.11 1.42,1.54 0.1,1.33\\\"/>\\n\\t\\t<path\\n\\t\\t\\tid=\\\"bAksai_721\\\"\\n\\t\\t\\td=\\\"m 76.375,450.5 0.75,-3.63 h1.938 l0.25,-1.56 0.312,-0.87 -0.937,-2 v-1.44 l-0.375,-1.13 1.937,-1.37 1.625,1 0.813,-0.25 1.125,0.1 h1.437 l2.703,0.86 2.547,-1.8 -0.141,-1.4 0.329,-0.41 0.75,0.31 0.281,-0.56 0.05,-3.48 0.203,-0.85 1.078,-0.37 2.359,0.78 0.672,-0.55 -0.281,-1.29 0.359,-0.58 1.782,-0.19 1.921,-1.86 2.418,0.58 1.7,-2.72 1.69,-1.33 0.89,-3.68 0.11,-1.5 2.24,-1.82 0.37,-0.76 -0.15,-1.58 0.6,-1.03 1.68,-0.92 0.78,-2.04 -0.61,-0.5 -0.99,0.21 -0.96,-1.28 -0.85,-0.1 -0.89,1.69 -1.89,0.97 -0.78,-0.58 v-2.78 l-0.85,-1.76 -1.15,0.98 -0.75,-0.33 -0.27,-1.48 -1.81,-0.55 -0.654,-2.84 0.794,-0.72 -0.34,-0.83 -0.61,-0.14 -0.141,-0.8 -1.531,0.1 -0.969,-0.8 0.422,-1.55 -0.39,-0.68 -1.454,-0.54 -1.625,0.32 h-1.031 l-1.406,-0.43 -3.563,0.68 -1.406,-1.11 -1.328,-0.4 -1.172,0.26 -0.859,1.28 -3.016,0.91 -1.297,-0.14 -1.203,0.62 -1.453,0.13 -1.359,1.08 -1.188,0.1 -0.969,0.63 -0.406,0.97 -0.875,-0.13 -1.234,-0.84 h-0.625 l-0.953,1.06\\\"/>\\n\\t\\t<path\\n\\t\\t\\tid=\\\"bAksai_723\\\"\\n\\t\\t\\td=\\\"m 77.688,471.22 0.723,-1.73 v-1.13 l0.6,-1.88 -0.458,-1.55 0.722,-1.05 -0.186,-2.29 -1.156,-1.4 1.125,-2.5\\\"/>\\n\\t\\t<path\\n\\t\\t\\tid=\\\"bAksai_725\\\"\\n\\t\\t\\td=\\\"m 64.839,483.33 -3.09,-5.54 -0.78,0.12 -0.09,-1.69 1.438,-0.5\\\"/>\\n\\t\\t<path\\n\\t\\t\\tid=\\\"bSouthAksai_727\\\"\\n\\t\\t\\td=\\\"m 71.339,503.36 -1.76,-0.1 -3.111,-1.14 -0.499,-1.29 -0.406,-1.9 -0.563,-1.57\\\"/>\\n\\t\\t<path\\n\\t\\t\\tid=\\\"bSouthAksai_729\\\"\\n\\t\\t\\td=\\\"m 85.62,516.3 -0.541,-0.56 -1.018,-0.23 0.158,-2.95\\\"/>\\n    </g>\\n  </g>\\n</svg>\\n\"","<script setup lang=\"ts\">\nimport { nextTick, reactive, ref } from \"vue\";\nimport {\n  clearArray,\n  deleteArrayItem,\n  flushArray,\n  randomInt,\n  toObjectString,\n  withinErrorMarginNumber\n} from \"@zyzgroup/core-common\";\nimport {\n  ArrowShape,\n  BallShape,\n  Color,\n  ConfettiShapeCombo,\n  CrossShape,\n  CurveShape,\n  DrawShape,\n  EllipseShape,\n  FoxShape,\n  HeartShape,\n  HeartVariantShape,\n  LineShape,\n  PointsShape,\n  RabbitShape,\n  RectShape,\n  SegmentShapeCombo,\n  Shape,\n  ShapeCombo,\n  ShipShapeCombo,\n  SliderShapeCombo,\n  StarShape,\n  TextShape,\n  Timeline,\n  TreeShapeCombo,\n  angle,\n  animateShapes,\n  distance,\n  followMouseShape,\n  polymorphTween,\n  targetToAfterDropShape,\n  toDegree\n} from \"@zyzgroup/core-web\";\nimport FPSStats from \"../components/fps/FPSStats.vue\";\nimport Box from \"../components/base/Box.vue\";\nimport Button from \"../components/form/Button.vue\";\nimport InputRange from \"../components/form/InputRange.vue\";\n\nconst SVGShapes = ref([]);\nlet svgStart = (d) => {};\nlet svgFrame = (d) => {};\n\nconst CanvasShapes = ref([]);\nlet canvasStart = (d) => {};\nlet canvasFrame = (d) => {};\n\nimport SVGRawString from \"@root/assets/svgs/china_blank_province_map.svg\";\n// import SVGRawString from \"@root/assets/svgs/userwork.svg\";\nconst linePicture = new ShapeCombo({\n  svg: SVGRawString,\n  forceWidth: 300,\n  attrs: {\n    \"stroke-width\": \"1\"\n    // stroke: \"#ff0000\",\n    // fill: \"none\"\n  },\n  drag: {\n    enable: true,\n    followSibling: true\n  }\n});\nconst linePictureClone = linePicture.clone();\n\nconst strokeDashPath = new Shape({\n  initD:\n    \"M62.9 14.9c-25-7.74-56.6 4.8-60.4 24.3-3.73 19.6 21.6 35 39.6 37.6 42.8 6.2 72.9-53.4 116-58.9 65-18.2 191 101 215 28.8 5-16.7-7-49.1-34-44-34 11.5-31 46.5-14 69.3 9.38 12.6 24.2 20.6 39.8 22.9 91.4 9.05 102-98.9 176-86.7 18.8 3.81 33 17.3 36.7 34.6 2.01 10.2.124 21.1-5.18 30.1\",\n  attrs: {\n    stroke: \"#ff0000\",\n    strokeWidth: \"4\"\n  }\n});\nconst totalLength = ref(+strokeDashPath.pathD().getTotalLength().toFixed(0)); // 988\nconst dasharray = ref(totalLength.value);\nconst dashoffset = ref(Math.floor(totalLength.value / 2));\nstrokeDashPath.setAttr({\n  strokeDasharray: `${dasharray.value} ${dasharray.value}`,\n  strokeDashoffset: `${dashoffset.value}`\n});\nfunction changeDasharray(v: number) {\n  dasharray.value = v;\n  strokeDashPath.setAttr(\n    \"strokeDasharray\",\n    `${dasharray.value} ${dasharray.value}`\n  );\n}\nfunction changeDashoffset(v: number) {\n  dashoffset.value = v;\n  strokeDashPath.setAttr(\"strokeDashoffset\", `${dashoffset.value}`);\n}\n\nconst currentType = ref(\"\");\nconst cases = [\n  {\n    name: \"shapes\",\n    onClick: () => {\n      currentType.value = \"shapes\";\n\n      const marker = new BallShape({\n        ballRadius: 4,\n        attrs: {\n          fill: \"#ff0000\"\n        }\n      });\n      const markerClone = marker.clone();\n\n      const line = new LineShape({\n        lineLength: 100,\n        degree: 0,\n        attrs: { stroke: \"#0000ff\", strokeWidth: \"1\" }\n      });\n      line.moveTo(100, 100);\n      const lineClone = line.clone() as LineShape;\n\n      const lineDegree = line.clone() as LineShape;\n      lineDegree.rotateTo(30);\n      const lineDegreeClone = lineDegree.clone() as LineShape;\n\n      const p = line.intersection(lineDegree);\n      if (p) {\n        marker.moveTo(p.x, p.y);\n      }\n      const p2 = lineClone.intersection(lineDegreeClone);\n      if (p2) {\n        markerClone.moveTo(p2.x, p2.y);\n      }\n\n      const tree = new TreeShapeCombo({\n        attrs: { stroke: \"#ff0000\", strokeWidth: \"1\" },\n        drag: {\n          enable: true\n        }\n      });\n      tree.comboMove(100, 100);\n      tree.comboScale(0.8);\n      const treeClone = tree.clone();\n\n      const treeRotate = tree.clone();\n      treeRotate.setAttr(\"stroke\", \"#00ff00\");\n      treeRotate.comboRotate(30);\n      const treeRotateClone = treeRotate.clone();\n\n      const rect = new RectShape({\n        x: 100,\n        y: 200,\n        scale: 0.5,\n        degree: 5,\n        rectWidth: 100,\n        rectHeight: 60,\n        rectBorderRadius: 10,\n        attrs: {\n          fill: \"pink\",\n          stroke: \"#ff0000\",\n          strokeWidth: \"1\"\n        },\n        drag: {\n          enable: true\n        }\n        // strokeArmyAnts: true\n      });\n      const rect2 = rect.clone() as RectShape;\n      rect2.update({\n        rectBorderRadius: 0\n      });\n      rect2.moveY(40);\n      const rectClone = rect.clone();\n      const rect2Clone = rect2.clone();\n\n      const heart = new HeartShape({\n        x: 200,\n        y: 200,\n        scale: 0.5,\n        degree: -10,\n        attrs: {\n          fill: Color.random().toString(),\n          stroke: \"#ff0000\",\n          strokeWidth: \"3\"\n        },\n        drag: {\n          enable: true\n        }\n        // strokeArmyAnts: true\n      });\n      const heartClone = heart.clone();\n\n      const heartVariant = new HeartVariantShape({\n        x: 220,\n        y: 200,\n        scale: 0.5,\n        degree: 0,\n        attrs: {\n          fill: Color.random().toString(),\n          stroke: \"#ff0000\",\n          strokeWidth: \"3\"\n        },\n        drag: {\n          enable: true\n        }\n        // strokeArmyAnts: true\n      });\n      const heartVariantClone = heartVariant.clone();\n\n      const star = new StarShape({\n        x: 240,\n        y: 200,\n        scale: 1,\n        degree: 0,\n        attrs: {\n          fill: Color.random().toString()\n        },\n        drag: {\n          enable: true\n        }\n        // strokeArmyAnts: true\n      });\n      const starClone = star.clone();\n\n      const fox = new FoxShape({\n        x: 260,\n        y: 200,\n        scale: 1,\n        degree: 0,\n        attrs: {\n          fill: \"rgb(200,80,80)\",\n          stroke: \"#ff0000\",\n          strokeWidth: \"3\"\n        },\n        drag: {\n          enable: true\n        }\n        // strokeArmyAnts: true\n      });\n      const foxClone = fox.clone();\n\n      const rabbit = new RabbitShape({\n        x: 300,\n        y: 200,\n        scale: 1,\n        degree: 0,\n        attrs: {\n          fill: Color.random().toString(),\n          stroke: \"#ff0000\",\n          strokeWidth: \"1\"\n        },\n        drag: {\n          enable: true\n        }\n        // strokeArmyAnts: true\n      });\n      const rabbitClone = rabbit.clone();\n\n      const cross = new CrossShape({\n        x: 320,\n        y: 200,\n        scale: 1,\n        degree: 0,\n        attrs: {\n          fill: Color.random().toString()\n        },\n        drag: {\n          enable: true\n        }\n        // strokeArmyAnts: true\n      });\n      const crossClone = cross.clone();\n\n      const ship = new ShipShapeCombo({\n        showFlame: true,\n        attrs: {\n          stroke: Color.random().toString()\n        },\n        drag: {\n          enable: true\n        }\n      });\n      ship.comboMove(400, 100);\n      ship.comboRotate(30);\n      ship.comboScale(2);\n      const shipClone = ship.clone();\n\n      const segment = new SegmentShapeCombo({\n        segmentWidth: 100,\n        segmentHeight: 20,\n        // segmentCornerRadius: 5\n        attrs: {\n          stroke: Color.random().toString()\n        },\n        drag: {\n          enable: true\n        }\n      });\n      segment.comboMove(200, 100);\n      segment.comboRotate(0);\n      segment.comboScale(1);\n      const segmentRotate = segment.clone();\n      segmentRotate.comboRotate(30);\n      const segmentClone = segment.clone();\n      const segmentRotateClone = segmentRotate.clone();\n\n      const slider = new SliderShapeCombo({\n        sliderMin: 0,\n        sliderMax: 200,\n        sliderStep: 2,\n        sliderDefaultValue: 100,\n        sliderWidth: 200\n      });\n      slider.comboMove(350, 200);\n      // slider.comboRotate(30);\n      slider.value$.subscribe((v) => {\n        console.log(\"slider : \" + v);\n      });\n      const sliderClone = slider.clone() as SliderShapeCombo;\n      sliderClone.value$.subscribe((v) => {\n        console.log(\"sliderClone : \" + v);\n      });\n\n      const ellipse = new EllipseShape({\n        x: 500,\n        y: 100,\n        rx: 50,\n        ry: 10,\n        drag: {\n          enable: true\n        },\n        attrs: {\n          fill: Color.random().toString()\n        }\n      });\n      const ellipseClone = ellipse.clone();\n\n      const text = new TextShape({\n        x: 500,\n        y: 140,\n        // text: \"你好世界！Hello World!\",\n        text: \"你好世界！\\nHello World!\",\n        drag: {\n          enable: true\n        },\n        attrs: {\n          fill: Color.random().toString()\n        }\n      });\n      const textClone = text.clone();\n\n      const curve = new CurveShape({\n        attrs: {\n          stroke: \"#00ff00\",\n          \"stroke-width\": \"2\"\n        },\n        drag: {\n          enable: true\n        },\n        isLineThrough: false,\n        x: 0,\n        y: 0,\n        toX: 100,\n        toY: 0,\n        cx: 50,\n        cy: -50\n      });\n      curve.moveTo(300, 200);\n      const curveClone = curve.clone();\n\n      SVGShapes.value = [\n        line,\n        lineDegree,\n        tree,\n        treeRotate,\n        rect,\n        rect2,\n        heart,\n        heartVariant,\n        star,\n        fox,\n        rabbit,\n        cross,\n        ship,\n        segment,\n        segmentRotate,\n        slider,\n        ellipse,\n        text,\n        curve,\n        marker\n      ];\n      CanvasShapes.value = [\n        lineClone,\n        lineDegreeClone,\n        treeClone,\n        treeRotateClone,\n        rectClone,\n        rect2Clone,\n        heartClone,\n        heartVariantClone,\n        starClone,\n        foxClone,\n        rabbitClone,\n        crossClone,\n        shipClone,\n        segmentClone,\n        segmentRotateClone,\n        sliderClone,\n        ellipseClone,\n        textClone,\n        curveClone,\n        markerClone\n      ];\n\n      svgStart = (d) => {};\n      canvasStart = (d) => {};\n      svgFrame = (d) => {};\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"曲线\",\n    onClick: () => {\n      currentType.value = \"曲线\";\n      const gap = 50;\n      const shape1SVG = new CurveShape({\n        attrs: {\n          stroke: \"#ff0000\",\n          \"stroke-width\": \"2\"\n        },\n        isLineThrough: false\n      });\n      const shape2SVG = new CurveShape({\n        attrs: {\n          stroke: \"#00ff00\",\n          \"stroke-width\": \"2\"\n        },\n        isLineThrough: true\n      });\n      const shape1Canvas = new CurveShape({\n        attrs: {\n          stroke: \"#ff0000\",\n          \"stroke-width\": \"2\"\n        },\n        isLineThrough: false\n      });\n      const shape2Canvas = new CurveShape({\n        attrs: {\n          stroke: \"#00ff00\",\n          \"stroke-width\": \"2\"\n        },\n        isLineThrough: true\n      });\n      SVGShapes.value = [shape1SVG, shape2SVG];\n      CanvasShapes.value = [shape1Canvas, shape2Canvas];\n      svgStart = (d) => {\n        const x = gap;\n        const y = d.rect.height - gap;\n        shape1SVG.update({\n          toX: d.rect.width - gap * 2,\n          toY: 0\n        });\n        shape1SVG.moveTo(x, y);\n        shape2SVG.update({\n          toX: d.rect.width - gap * 2,\n          toY: 0\n        });\n        shape2SVG.moveTo(x, y);\n      };\n      canvasStart = (d) => {\n        const x = gap;\n        const y = d.rect.height - gap;\n        shape1Canvas.update({\n          toX: d.rect.width - gap * 2,\n          toY: 0\n        });\n        shape1Canvas.moveTo(x, y);\n        shape2Canvas.update({\n          toX: d.rect.width - gap * 2,\n          toY: 0\n        });\n        shape2Canvas.moveTo(x, y);\n      };\n      svgFrame = (d) => {\n        shape1SVG.update({\n          cx: d.mpg.current.x - shape1SVG.x,\n          cy: d.mpg.current.y - shape1SVG.y\n        });\n        shape2SVG.update({\n          cx: d.mpg.current.x - shape2SVG.x,\n          cy: d.mpg.current.y - shape2SVG.y\n        });\n      };\n      canvasFrame = (d) => {\n        shape1Canvas.update({\n          cx: d.mpg.current.x - shape1Canvas.x,\n          cy: d.mpg.current.y - shape1Canvas.y\n        });\n        shape2Canvas.update({\n          cx: d.mpg.current.x - shape2Canvas.x,\n          cy: d.mpg.current.y - shape2Canvas.y\n        });\n      };\n    }\n  },\n  {\n    name: \"多边形\",\n    onClick: () => {\n      currentType.value = \"多边形\";\n      const points: { x: number; y: number }[] = [];\n      const ps = new PointsShape({\n        attrs: { stroke: \"#ff0000\", fill: \"rgba(0,0,0,0.1)\" },\n        drag: { enable: true },\n        isStraight: true\n      });\n      const psClone = ps.clone() as PointsShape;\n      psClone.update({\n        isStraight: false\n      });\n      SVGShapes.value = [ps];\n      CanvasShapes.value = [psClone];\n      svgStart = (d) => {\n        const nums = 10;\n        for (let i = 0; i < nums; i++) {\n          const point = {\n            x: Math.random() * d.rect.width,\n            y: Math.random() * d.rect.height\n          };\n          points.push(point);\n          const rect = new RectShape({\n            x: point.x,\n            y: point.y,\n            rectWidth: 6,\n            rectHeight: 6,\n            attrs: {\n              fill: i == 0 ? \"#ff0000\" : i == nums - 1 ? \"#00ff00\" : \"#666666\"\n            }\n          });\n          SVGShapes.value.unshift(rect);\n          CanvasShapes.value.unshift(rect);\n        }\n        ps.update({ points });\n        psClone.update({ points });\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {};\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"followMouse\",\n    onClick: () => {\n      currentType.value = \"followMouse\";\n      const arrow = new ArrowShape({\n        attrs: {\n          fill: Color.random().toString()\n        },\n        scale: 0.5\n      });\n      const arrowClone = arrow.clone();\n      const arrowLine = new LineShape({\n        lineLength: 0,\n        attrs: {\n          \"stroke-width\": \"1\",\n          stroke: \"#666666\"\n        }\n      });\n      const arrowLineClone = arrowLine.clone() as LineShape;\n      SVGShapes.value = [arrowLine, arrow];\n      CanvasShapes.value = [arrowLineClone, arrowClone];\n      svgStart = (d) => {\n        const centerX = d.rect.width * 0.5;\n        const centerY = d.rect.height * 0.5;\n        arrowLine.moveTo(centerX, centerY);\n      };\n      canvasStart = (d) => {\n        const centerX = d.rect.width * 0.5;\n        const centerY = d.rect.height * 0.5;\n        arrowLineClone.moveTo(centerX, centerY);\n      };\n      svgFrame = (d) => {\n        followMouseShape(arrow, d.mpg);\n        arrowLine.lineToAbsolutePoint(arrow);\n      };\n      canvasFrame = (d) => {\n        followMouseShape(arrowClone, d.mpg);\n        arrowLineClone.lineToAbsolutePoint(arrowClone);\n      };\n    }\n  },\n  {\n    name: \"dragBall\",\n    onClick: () => {\n      currentType.value = \"dragBall\";\n      const dragBall = new BallShape({\n        ballRadius: 30,\n        attrs: {\n          fill: Color.random().toString()\n        },\n        drag: {\n          enable: true\n        }\n      });\n      const dragBallClone = dragBall.clone();\n      SVGShapes.value = [dragBall];\n      CanvasShapes.value = [dragBallClone];\n      const centerSVG = { x: 0, y: 0 };\n      const centerCanvas = { x: 0, y: 0 };\n      svgStart = (d) => {\n        const centerX = d.rect.width * 0.5;\n        const centerY = d.rect.height * 0.5;\n        dragBall.moveTo(centerX, centerY);\n        centerSVG.x = centerX;\n        centerSVG.y = centerY;\n      };\n      canvasStart = (d) => {\n        const centerX = d.rect.width * 0.5;\n        const centerY = d.rect.height * 0.5;\n        dragBallClone.moveTo(centerX, centerY);\n        centerCanvas.x = centerX;\n        centerCanvas.y = centerY;\n      };\n      svgFrame = (d) => {\n        targetToAfterDropShape(dragBall, centerSVG);\n      };\n      canvasFrame = (d) => {\n        targetToAfterDropShape(dragBallClone, centerCanvas);\n      };\n    }\n  },\n  {\n    name: \"球体碰撞检测\",\n    onClick: () => {\n      currentType.value = \"球体碰撞检测\";\n      const ball1 = new BallShape({\n        ballRadius: 30,\n        attrs: {\n          fill: Color.random().toString()\n        },\n        mass: 2,\n        vx: 2\n      });\n      const ball2 = new BallShape({\n        ballRadius: 30,\n        attrs: {\n          fill: Color.random().toString()\n        },\n        mass: 1,\n        vx: -2\n      });\n      SVGShapes.value = [ball1, ball2];\n      CanvasShapes.value = [ball1, ball2];\n      svgStart = (d) => {\n        const centerY = d.rect.height * 0.5;\n        ball1.moveTo(50, centerY);\n        ball2.moveTo(d.rect.width - 50, centerY);\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {\n        // ball1.checkCollision(ball2);\n        // ball1.animate();\n        // ball2.animate();\n        animateShapes([ball1, ball2], { enableCollision: true });\n      };\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"球体回弹检测\",\n    onClick: () => {\n      currentType.value = \"球体回弹检测\";\n      const numBalls = 15;\n      const balls: BallShape[] = [];\n      for (let i = 0; i < numBalls; i++) {\n        const ballRadius = Math.random() * 20 + 15;\n        const ball = new BallShape({\n          ballRadius,\n          attrs: {\n            fill: Color.random().toString()\n          },\n          mass: ballRadius,\n          vx: Math.random() * 10 - 5,\n          vy: Math.random() * 10 - 5\n        });\n        balls.push(ball);\n      }\n      const wall = {\n        x: 0,\n        y: 0,\n        width: 0,\n        height: 0\n      };\n      SVGShapes.value = [...balls];\n      CanvasShapes.value = [...balls];\n      svgStart = (d) => {\n        balls.forEach((b) => {\n          b.moveTo(Math.random() * d.rect.width, Math.random() * d.rect.height);\n        });\n        wall.width = d.rect.width;\n        wall.height = d.rect.height;\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {\n        animateShapes(balls, { enableCollision: true, wall });\n      };\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"物体引力\",\n    onClick: () => {\n      currentType.value = \"物体引力\";\n      const sun = new BallShape({\n        ballRadius: 50,\n        attrs: {\n          fill: Color.random().toString()\n        },\n        mass: 10000\n      });\n      sun.mass = 10000;\n      const planet = new BallShape({\n        ballRadius: 10,\n        attrs: {\n          fill: Color.random().toString()\n        },\n        mass: 1,\n        vy: 7\n      });\n      SVGShapes.value = [sun, planet];\n      CanvasShapes.value = [sun, planet];\n      svgStart = (d) => {\n        const centerX = d.rect.width * 0.5;\n        const centerY = d.rect.height * 0.5;\n        sun.moveTo(centerX, centerY);\n        planet.moveTo(centerX + 200, centerY);\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {\n        animateShapes(SVGShapes.value, { enableGravityBetweenObjects: true });\n      };\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"万有引力\",\n    onClick: () => {\n      currentType.value = \"万有引力\";\n      const numBalls = 30;\n      const balls: BallShape[] = [];\n      for (let i = 0; i < numBalls; i++) {\n        const radius = Math.random() * 25 + 5;\n        const ball = new BallShape({\n          ballRadius: radius,\n          attrs: {\n            fill: Color.random().toString()\n          },\n          mass: radius\n        });\n        balls.push(ball);\n      }\n      SVGShapes.value = [...balls];\n      CanvasShapes.value = [...balls];\n      svgStart = (d) => {\n        balls.forEach((b, i) => {\n          b.moveTo(Math.random() * d.rect.width, Math.random() * d.rect.height);\n        });\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {\n        animateShapes(balls, {\n          enableCollision: true,\n          enableGravityBetweenObjects: true\n        });\n      };\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"Spring1\",\n    onClick: () => {\n      currentType.value = \"Spring1\";\n      const lines: LineShape[] = [];\n      const balls: BallShape[] = [];\n      for (let i = 0; i < 3; i++) {\n        lines.push(\n          new LineShape({ attrs: { stroke: \"#666666\" }, interactive: false })\n        );\n        balls.push(\n          new BallShape({\n            ballRadius: 10,\n            attrs: {\n              fill: Color.random().toString()\n            },\n            drag: {\n              enable: true\n            }\n          })\n        );\n      }\n      const point = new BallShape({\n        ballRadius: 20,\n        attrs: {\n          fill: \"#ff0000\"\n        }\n      });\n      SVGShapes.value = [...lines, ...balls, point];\n      CanvasShapes.value = [...lines, ...balls, point];\n      svgStart = (d) => {\n        balls.forEach((handle) => {\n          handle.moveTo(\n            Math.random() * d.rect.width,\n            Math.random() * d.rect.height\n          );\n        });\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {\n        point.animateSpringTo(balls, {\n          spring: 0.03\n        });\n        balls.forEach((handle, index) => {\n          lines[index].moveTo(point.x, point.y);\n          lines[index].lineToAbsolutePoint(handle);\n        });\n      };\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"Spring2\",\n    onClick: () => {\n      currentType.value = \"Spring2\";\n      const lines: LineShape[] = [];\n      const balls: BallShape[] = [];\n      for (let i = 0; i < 3; i++) {\n        lines.push(\n          new LineShape({ attrs: { stroke: \"#666666\" }, interactive: false })\n        );\n        balls.push(\n          new BallShape({\n            ballRadius: 20,\n            attrs: {\n              fill: Color.random().toString()\n            },\n            drag: {\n              enable: i == 0\n            },\n            interactive: i == 0\n          })\n        );\n      }\n      SVGShapes.value = [...lines, ...balls];\n      CanvasShapes.value = [...lines, ...balls];\n      svgStart = (d) => {\n        balls.forEach((b) => {\n          b.moveTo(d.rect.width / 2, d.rect.height / 2);\n        });\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {\n        animateShapes(balls, {\n          spring: 0.03,\n          friction: 0.9,\n          gravity: 2\n        });\n        balls.forEach((ballB, i) => {\n          if (i === 0) {\n            lines[i].moveTo(d.mpg.x, d.mpg.y);\n            lines[i].lineToAbsolutePoint(ballB);\n          } else {\n            const ballA = balls[i - 1];\n            lines[i].moveTo(ballA.x, ballA.y);\n            lines[i].lineToAbsolutePoint(ballB);\n          }\n        });\n      };\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"SpringConnect\",\n    onClick: () => {\n      currentType.value = \"SpringConnect\";\n      const lines: LineShape[] = [];\n      const balls: BallShape[] = [];\n      for (let i = 0; i < 3; i++) {\n        lines.push(\n          new LineShape({ attrs: { stroke: \"#666666\" }, interactive: false })\n        );\n        balls.push(\n          new BallShape({\n            ballRadius: 10,\n            attrs: {\n              fill: Color.random().toString()\n            },\n            drag: {\n              enable: true\n            }\n          })\n        );\n      }\n      SVGShapes.value = [...lines, ...balls];\n      CanvasShapes.value = [...lines, ...balls];\n      svgStart = (d) => {\n        balls.forEach((b) => {\n          b.moveTo(Math.random() * d.rect.width, Math.random() * d.rect.height);\n        });\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {\n        animateShapes(balls, {\n          springLength: 120\n        });\n        lines[0].moveTo(balls[0].x, balls[0].y);\n        lines[0].lineToAbsolutePoint(balls[1]);\n        lines[1].moveTo(balls[1].x, balls[1].y);\n        lines[1].lineToAbsolutePoint(balls[2]);\n        lines[2].moveTo(balls[2].x, balls[2].y);\n        lines[2].lineToAbsolutePoint(balls[0]);\n      };\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"喷泉\",\n    onClick: () => {\n      currentType.value = \"喷泉\";\n      const numBalls = 80;\n      const balls: BallShape[] = [];\n      for (let i = 0; i < numBalls; i++) {\n        const ball = new BallShape({\n          ballRadius: 2,\n          attrs: {\n            fill: Color.random().toString()\n          },\n          vx: Math.random() * 2 - 1, // [-1,1]\n          vy: Math.random() * -10 - 10 // [-20,-10]\n        });\n        balls.push(ball);\n      }\n      SVGShapes.value = [...balls];\n      CanvasShapes.value = [...balls];\n      svgStart = (d) => {\n        balls.forEach((b, i) => {\n          b.moveTo(d.rect.width * 0.5, d.rect.height);\n        });\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {\n        animateShapes(balls, { gravity: 0.5 });\n        balls.forEach((ball) => {\n          if (\n            ball.x - ball.ballRadius > d.rect.width ||\n            ball.x + ball.ballRadius < 0 ||\n            ball.y - ball.ballRadius > d.rect.height ||\n            ball.y + ball.ballRadius < 0\n          ) {\n            ball.moveTo(d.rect.width * 0.5, d.rect.height);\n            ball.vx = Math.random() * 2 - 1;\n            ball.vy = Math.random() * -10 - 10;\n          }\n        });\n      };\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"俄罗斯方块\",\n    onClick: () => {\n      currentType.value = \"俄罗斯方块\";\n      SVGShapes.value = [];\n      CanvasShapes.value = [];\n      const boxes: RectShape[] = [];\n      function createBox(width: number) {\n        const box = new RectShape({\n          x: Math.random() * width,\n          y: 0,\n          rectWidth: 50,\n          rectHeight: 50,\n          attrs: {\n            fill: Color.random().toString()\n          },\n          drag: {\n            enable: true\n          }\n        });\n        boxes.push(box);\n        SVGShapes.value.push(box);\n        CanvasShapes.value.push(box);\n        // SVGShapes.value = [...boxes];\n        // CanvasShapes.value = [...boxes];\n        return box;\n      }\n      let activeBox: RectShape;\n      svgStart = (d) => {\n        activeBox = createBox(d.rect.width);\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {\n        if (d.mpg.current.isDown) {\n          // drag:暂停\n        } else {\n          if (activeBox) {\n            activeBox.animate({ gravity: 0.1 });\n          }\n          // 触底\n          if (\n            activeBox &&\n            activeBox.y + activeBox.rectHeight >= d.rect.height\n          ) {\n            activeBox.y = d.rect.height - activeBox.rectHeight;\n            activeBox = createBox(d.rect.width);\n          }\n          boxes.forEach((box) => {\n            // 相碰\n            if (activeBox && activeBox !== box && activeBox.intersection(box)) {\n              activeBox.y = box.y - activeBox.rectHeight;\n              if (activeBox.y >= activeBox.rectHeight) {\n                activeBox = createBox(d.rect.width);\n              } else {\n                activeBox = null;\n              }\n            }\n          });\n        }\n      };\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"物体距离\",\n    onClick: () => {\n      currentType.value = \"物体距离\";\n      const springMassBalls: BallShape[] = [];\n      const springMassLines: LineShape[] = [];\n      const color0 = new Color(\"#000000\");\n      const numParticles = 30;\n      for (let i = 0; i < numParticles; i++) {\n        const size = Math.random() * 10 + 2;\n        const particle = new BallShape({\n          ballRadius: size,\n          attrs: { fill: Color.random().toString() },\n          interactive: false,\n          vx: Math.random() * 6 - 3,\n          vy: Math.random() * 6 - 3,\n          mass: size\n        });\n        springMassBalls.push(particle);\n      }\n      SVGShapes.value = [...springMassLines, ...springMassBalls];\n      CanvasShapes.value = [...springMassLines, ...springMassBalls];\n      svgStart = (d) => {\n        springMassBalls.forEach((b, i) => {\n          b.moveTo(Math.random() * d.rect.width, Math.random() * d.rect.height);\n        });\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {\n        animateShapes(springMassBalls, {\n          wall: {\n            x: 0,\n            y: 0,\n            width: d.rect.width,\n            height: d.rect.height,\n            cycle: true\n          },\n          // spring: 0.0005, 参数替换?\n          enableSpringMassAlpha: true\n        }).forEach(([fromX, fromY, toX, toY, alpha], i) => {\n          if (!springMassLines[i]) {\n            const l = new LineShape({\n              x: fromX,\n              y: fromY,\n              lineLength: distance(fromX, fromY, toX, toY),\n              degree: toDegree(angle(fromX, fromY, toX, toY)),\n              attrs: {\n                strokeWidth: \"1\",\n                stroke: color0.setAlpha(alpha).toString()\n              },\n              interactive: false\n            });\n            springMassLines.push(l);\n            SVGShapes.value.unshift(l);\n            CanvasShapes.value.unshift(l);\n            // SVGShapes.value = [l, ...SVGShapes.value];\n            // CanvasShapes.value = [l, ...CanvasShapes.value];\n          } else {\n            springMassLines[i].moveTo(fromX, fromY);\n            springMassLines[i].lineToAbsolutePoint({ x: toX, y: toY });\n            springMassLines[i].setAttr(\n              \"stroke\",\n              color0.setAlpha(alpha).toString()\n            );\n          }\n        });\n      };\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"generateRosetta\",\n    onClick: () => {\n      currentType.value = \"generateRosetta\";\n      const rosetta = Shape.generateRosetta(120, 120, 55, 35, 6);\n      const rect = new RectShape({\n        x: 0,\n        y: 0,\n        rectWidth: 20,\n        rectHeight: 10,\n        attrs: {\n          stroke: \"none\",\n          fill: \"rgba(0,255,0,0.2)\"\n        }\n      });\n      const trail = new Shape({\n        attrs: {\n          stroke: \"red\",\n          \"stroke-width\": \"3\",\n          fill: \"none\"\n        }\n      });\n      SVGShapes.value = [trail, rect];\n      CanvasShapes.value = [trail, rect];\n      svgStart = (d) => {\n        const tl = new Timeline({ frameDuration: 15000 });\n        tl.addTween(\n          { progress: 0 },\n          { progress: 1 },\n          {\n            onUpdate: (obj) => {\n              const { point, subPathD } = rosetta.trailPath(obj.progress);\n              trail.pathD(subPathD);\n              rect.moveTo(point.x, point.y);\n              rect.rotateTo(point.alpha + 90);\n            }\n          }\n        );\n        tl.play();\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {};\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"Confetti\",\n    onClick: () => {\n      currentType.value = \"Confetti\";\n      if (\n        SVGShapes.value.findIndex((s) => s instanceof ConfettiShapeCombo) < 0\n      ) {\n        SVGShapes.value = [];\n        CanvasShapes.value = [];\n      } else {\n        SVGShapes.value = [...SVGShapes.value];\n        CanvasShapes.value = [...CanvasShapes.value];\n      }\n      svgStart = (d) => {\n        function fire(particleRatio: number, opts?: Record<string, any>) {\n          return new ConfettiShapeCombo({\n            shapeCreator: () =>\n              new RectShape({ rectWidth: 10, rectHeight: 10 }),\n            // shapeCreator: () => new BallShape({ ballRadius: 5 }),\n            // shapeCreator: () => new HeartShape({ heartRx: 3, heartRy: 3 }),\n            width: d.rect.width,\n            height: d.rect.height,\n            y: 0.7,\n            particleCount: Math.floor(200 * particleRatio),\n            ...opts\n          });\n        }\n        // const confetti = fire(0.5, {\n        //   particleCount: randomInt(50, 100),\n        //   spread: 70,\n        //   y: 0.6\n        // });\n        const confetti = fire(1, {\n          y: 0.6,\n          particleCount: randomInt(50, 100),\n          angle: randomInt(55, 125),\n          spread: randomInt(50, 70)\n        });\n        // const confetti = fire(0.25, {\n        //   spread: 26,\n        //   startVelocity: 55\n        // });\n        // const confetti = fire(0.2, {\n        //   spread: 60\n        // });\n        // const confetti = fire(0.35, {\n        //   spread: 100,\n        //   decay: 0.91,\n        //   scalar: 0.8\n        // });\n        // const confetti = fire(0.1, {\n        //   spread: 120,\n        //   startVelocity: 25,\n        //   decay: 0.92,\n        //   scalar: 1.2\n        // });\n        // const confetti = fire(0.1, {\n        //   spread: 120,\n        //   startVelocity: 45\n        // });\n        const confettiClone = confetti.clone();\n        SVGShapes.value.push(confetti);\n        CanvasShapes.value.push(confettiClone);\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {\n        const deletes = [];\n        SVGShapes.value.forEach((s) => {\n          if (s instanceof ConfettiShapeCombo) {\n            if (!s.update()) {\n              deletes.push(s);\n            }\n          }\n        });\n        deletes.forEach((s) => deleteArrayItem(SVGShapes.value, s));\n      };\n      canvasFrame = (d) => {\n        const deletes = [];\n        CanvasShapes.value.forEach((s) => {\n          if (s instanceof ConfettiShapeCombo) {\n            if (!s.update()) {\n              deletes.push(s);\n            }\n          }\n        });\n        deletes.forEach((s) => deleteArrayItem(CanvasShapes.value, s));\n      };\n    }\n  },\n  {\n    name: \"LinePicture\",\n    onClick: () => {\n      currentType.value = \"LinePicture\";\n      const redPoint = new BallShape({\n        x: 0,\n        y: 0,\n        ballRadius: 5,\n        attrs: { fill: \"rgba(255,0,0,1)\" }\n      });\n      const redPointClone = redPoint.clone();\n      const greenPoint = new BallShape({\n        x: 0,\n        y: 0,\n        ballRadius: 3,\n        attrs: { fill: \"rgba(0,255,0,0.8\" }\n      });\n      const greenPointClone = greenPoint.clone();\n      const boundingRect = new RectShape({\n        x: 0,\n        y: 0,\n        rectWidth: 0,\n        rectHeight: 0,\n        attrs: { fill: \"none\", stroke: \"#0000ff\", strokeWidth: \"2\" }\n      });\n      const boundingRectClone = boundingRect.clone() as RectShape;\n      SVGShapes.value = [linePicture, boundingRect, redPoint, greenPoint];\n      CanvasShapes.value = [\n        linePictureClone,\n        boundingRectClone,\n        redPointClone,\n        greenPointClone\n      ];\n      svgStart = (d) => {\n        let prevColor;\n        let prevShape;\n        d.shapeTap$.subscribe((s) => {\n          if (!s) {\n            return;\n          }\n          if (!prevColor) {\n            prevColor = s.getAttr(\"fill\");\n          }\n          if (prevShape && prevShape !== s) {\n            prevShape.setAttr(\"fill\", prevColor);\n            prevColor = s.getAttr(\"fill\");\n          }\n          s.setAttr(\"fill\", \"pink\");\n          prevShape = s;\n          const rect = s.getRealBoundingClientRect();\n          boundingRect.update({\n            rectWidth: rect.width,\n            rectHeight: rect.height\n          });\n          boundingRect.moveTo(rect.x, rect.y);\n        });\n      };\n      canvasStart = (d) => {\n        let prevColor;\n        let prevShape;\n        d.shapeTap$.subscribe((s) => {\n          if (!s) {\n            return;\n          }\n          if (!prevColor) {\n            prevColor = s.getAttr(\"fill\");\n          }\n          if (prevShape && prevShape !== s) {\n            prevShape.setAttr(\"fill\", prevColor);\n            prevColor = s.getAttr(\"fill\");\n          }\n          s.setAttr(\"fill\", \"pink\");\n          prevShape = s;\n          const rect = s.getRealBoundingClientRect();\n          boundingRectClone.update({\n            rectWidth: rect.width,\n            rectHeight: rect.height\n          });\n          boundingRectClone.moveTo(rect.x, rect.y);\n        });\n      };\n      let t1 = 0;\n      let t2 = 0;\n      const tGap = 0.01;\n      let interpolationPathIndex1 = 0;\n      let interpolationPathIndex2 = 0;\n      let totalLengthOfPath1 =\n        linePicture.shapes[interpolationPathIndex1].getTotalLength();\n      let totalLengthOfPath2 =\n        linePictureClone.shapes[interpolationPathIndex2].getTotalLength();\n      svgFrame = (d) => {\n        if (t1 > 1) {\n          interpolationPathIndex1++;\n          t1 = 0;\n          if (interpolationPathIndex1 > linePicture.shapes.length - 1) {\n            interpolationPathIndex1 = 0;\n          }\n          totalLengthOfPath1 =\n            linePicture.shapes[interpolationPathIndex1].getTotalLength();\n        }\n        t1 += tGap;\n        // 一种方式\n        let { x: x1, y: y1 } = linePicture.shapes[\n          interpolationPathIndex1\n        ].getPointAtLength(t1 * totalLengthOfPath1);\n        redPoint.moveTo(x1, y1);\n        // 另一种方式\n        let { x: x2, y: y2 } =\n          linePicture.shapes[interpolationPathIndex1].interpolate(t1);\n        greenPoint.moveTo(x2, y2);\n      };\n      canvasFrame = (d) => {\n        if (t2 > 1) {\n          interpolationPathIndex2++;\n          t2 = 0;\n          if (interpolationPathIndex2 > linePictureClone.shapes.length - 1) {\n            interpolationPathIndex2 = 0;\n          }\n          totalLengthOfPath2 =\n            linePictureClone.shapes[interpolationPathIndex2].getTotalLength();\n        }\n        t2 += tGap;\n        // 一种方式\n        let { x: x1, y: y1 } = linePictureClone.shapes[\n          interpolationPathIndex2\n        ].getPointAtLength(t2 * totalLengthOfPath2);\n        redPointClone.moveTo(x1, y1);\n        // 另一种方式\n        let { x: x2, y: y2 } =\n          linePictureClone.shapes[interpolationPathIndex2].interpolate(t2);\n        greenPointClone.moveTo(x2, y2);\n      };\n    }\n  },\n  {\n    name: \"StrokeDash\",\n    onClick: () => {\n      currentType.value = \"StrokeDash\";\n      SVGShapes.value = [strokeDashPath];\n      CanvasShapes.value = [strokeDashPath];\n      svgStart = (d) => {};\n      canvasStart = (d) => {};\n      svgFrame = (d) => {};\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"strokeDashTween\",\n    onClick: () => {\n      currentType.value = \"strokeDashTween\";\n      SVGShapes.value = [strokeDashPath];\n      CanvasShapes.value = [strokeDashPath];\n      svgStart = (d) => {\n        strokeDashPath.strokeDashTween(4000, {\n          // easeFunction: props.easeFunction\n        });\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {};\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"strokeDashTweenSequence\",\n    onClick: () => {\n      currentType.value = \"strokeDashTweenSequence\";\n      const s = linePicture.clone();\n      s.setAttr({\n        stroke: \"none\",\n        strokeWidth: \"4\",\n        fill: \"none\"\n      });\n      SVGShapes.value = [s];\n      CanvasShapes.value = [s];\n      svgStart = (d) => {\n        s.setAttr({\n          stroke: \"#ff0000\"\n        });\n        s.strokeDashTween(300, {\n          type: \"sequence\",\n          // easeFunction: props.easeFunction,\n          onGroupStart: () => {}\n        });\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {};\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"strokeDashTweenParallel\",\n    onClick: () => {\n      currentType.value = \"strokeDashTweenParallel\";\n      const s = linePicture.clone();\n      s.setAttr({\n        stroke: \"none\",\n        strokeWidth: \"4\",\n        fill: \"none\"\n      });\n      SVGShapes.value = [s];\n      CanvasShapes.value = [s];\n      svgStart = (d) => {\n        s.setAttr({\n          stroke: \"#ff0000\"\n        });\n        s.strokeDashTween(3000, {\n          type: \"parallel\",\n          // easeFunction: props.easeFunction,\n          onGroupStart: () => {}\n        });\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {};\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"线条动画\",\n    onClick: () => {\n      currentType.value = \"线条动画\";\n      const arrow = new ArrowShape({\n        x: 200,\n        y: 200,\n        attrs: {\n          stroke: Color.random().toString()\n        }\n      });\n      const rect = new RectShape({\n        rectWidth: 100,\n        rectHeight: 60,\n        rectBorderRadius: 10,\n        x: 150,\n        y: 170,\n        attrs: {\n          stroke: Color.random().toString()\n        }\n      });\n      const fox = new FoxShape({\n        x: 200,\n        y: 200,\n        scale: 3,\n        attrs: {\n          stroke: Color.random().toString()\n        }\n      });\n      const before = PointsShape.generate(100, 100, 100, 3);\n      before.moveTo(100, 100);\n      before.setAttr({\n        stroke: Color.random().toString()\n      });\n      const after = PointsShape.generate(100, 100, 100, 6);\n      after.moveTo(100, 100);\n      after.setAttr({\n        stroke: Color.random().toString()\n      });\n      const shapes = [before, after, arrow, rect, fox];\n      SVGShapes.value = [];\n      CanvasShapes.value = [];\n      svgStart = (d) => {\n        const s = polymorphTween(shapes, 6000);\n        // s.enableDrag = true;\n        // s.attrs.stroke = \"#ff0000\";\n        SVGShapes.value.unshift(s);\n        CanvasShapes.value.unshift(s);\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {};\n      canvasFrame = (d) => {};\n    }\n  },\n  {\n    name: \"线条动画Combo\",\n    onClick: () => {\n      currentType.value = \"线条动画Combo\";\n      const arrow = new ArrowShape({\n        x: 200,\n        y: 200,\n        attrs: {\n          stroke: Color.random().toString()\n        }\n      });\n      const rect = new RectShape({\n        rectWidth: 100,\n        rectHeight: 60,\n        rectBorderRadius: 10,\n        x: 150,\n        y: 170,\n        attrs: {\n          stroke: Color.random().toString()\n        }\n      });\n      const fox = new FoxShape({\n        x: 200,\n        y: 200,\n        scale: 3,\n        attrs: {\n          stroke: Color.random().toString()\n        }\n      });\n      const before = PointsShape.generate(100, 100, 100, 3);\n      before.moveTo(100, 100);\n      before.setAttr({\n        stroke: Color.random().toString()\n      });\n      const after = PointsShape.generate(100, 100, 100, 6);\n      after.moveTo(100, 100);\n      after.setAttr({\n        stroke: Color.random().toString()\n      });\n      const ship = new ShipShapeCombo({\n        showFlame: true,\n        attrs: {\n          stroke: Color.random().toString()\n        }\n      });\n      ship.comboMove(400, 100);\n      ship.comboRotate(30);\n      ship.comboScale(2);\n      // const shapes = [before, after, arrow, rect, ship, fox];\n      const shapes = [linePicture, ship];\n      // const shapes = [before, after, arrow, rect, linePicture, ship, fox];\n      SVGShapes.value = [];\n      CanvasShapes.value = [];\n      // SVGShapes.value = [ship];\n      // CanvasShapes.value = [ship];\n      // ship-ship\n      // console.log(\n      //   ship.shapes[1].pathD().startPathX,\n      //   ship.shapes[1].pathD().startPathY,\n      //   ship.shapes[1].transformPathD().startPathX,\n      //   ship.shapes[1].transformPathD().startPathY\n      // );\n      svgStart = (d) => {\n        const s = polymorphTween(shapes, 10000, {\n          shapeOrCombo: (s, t) => {\n            if (\n              withinErrorMarginNumber(t, 0.5, Number.EPSILON * Math.pow(10, 12))\n            ) {\n              // console.log(\"t=\", t);\n              // // ship-ship\n              // console.log(\n              //   s.shapes[1].pathD().startPathX,\n              //   s.shapes[1].pathD().startPathY,\n              //   s.shapes[1].transformPathD().startPathX,\n              //   s.shapes[1].transformPathD().startPathY\n              // );\n              // console.log(toObjectString(s));\n            }\n          }\n        });\n        // console.log(toObjectString(s));\n        // s.enableDrag = true;\n        // s.attrs.stroke = \"#ff0000\";\n        SVGShapes.value.unshift(...s.shapes);\n        CanvasShapes.value.unshift(...s.shapes);\n      };\n      canvasStart = (d) => {};\n      svgFrame = (d) => {};\n      canvasFrame = (d) => {};\n    }\n  }\n];\n</script>\n\n<template>\n  <div style=\"margin: 30px\">\n    <FPSStats></FPSStats>\n\n    <div class=\"btns\">\n      <Button\n        v-for=\"item in cases\"\n        :key=\"item.name\"\n        :item=\"item\"\n        @click=\"item.onClick\"\n        :stylePattern=\"currentType == item.name ? 'fullfill' : 'outline'\"\n      >\n        {{ item.name }}\n      </Button>\n    </div>\n\n    <div\n      v-show=\"currentType == 'StrokeDash'\"\n      class=\"btns sub-btns\"\n    >\n      <div style=\"width: 100%\">\n        <div>stroke-dasharray: {{ dasharray }},{{ dasharray }}</div>\n        <InputRange\n          :max=\"totalLength\"\n          :defaultValue=\"dasharray\"\n          @change=\"changeDasharray\"\n        ></InputRange>\n      </div>\n      <div style=\"width: 100%\">\n        <div>stroke-dashoffset: {{ dashoffset }}</div>\n        <InputRange\n          :max=\"totalLength\"\n          :defaultValue=\"dashoffset\"\n          @change=\"changeDashoffset\"\n        ></InputRange>\n      </div>\n    </div>\n\n    <Box\n      type=\"svg\"\n      :shapes=\"SVGShapes\"\n      :loop=\"true\"\n      style=\"width: 100%; height: 300px; background-color: rgba(0, 0, 0, 0.1)\"\n      @start=\"svgStart\"\n      @frame=\"svgFrame\"\n    ></Box>\n\n    <Box\n      type=\"canvas\"\n      :shapes=\"CanvasShapes\"\n      :loop=\"true\"\n      style=\"width: 100%; height: 300px; background-color: rgba(0, 0, 0, 0.2)\"\n      @start=\"canvasStart\"\n      @frame=\"canvasFrame\"\n    ></Box>\n  </div>\n</template>\n\n<style scoped>\n.btns {\n  display: flex;\n  flex-wrap: wrap;\n}\n.btns > * {\n  margin-right: 10px;\n  margin-bottom: 10px;\n}\n.sub-btns {\n  padding-top: 10px;\n  background-color: #dbffff;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { onUnmounted, ref } from \"vue\";\nimport { mouseEnter$, mouseLeave$ } from \"@zyzgroup/core-web\";\nimport Box from \"./Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(defineProps<{}>(), {});\n\nconst emits = defineEmits<{\n  (event: \"enter\", e: MouseEvent): void;\n  (event: \"leave\", e: MouseEvent): void;\n}>();\n\nconst isEnter = ref(false);\n\nlet s1;\nlet s2;\n\nconst mount = (box) => {\n  if (!s1) {\n    s1 = mouseEnter$(box.el).subscribe((e) => {\n      isEnter.value = true;\n      emits(\"enter\", e);\n    });\n  }\n  if (!s2) {\n    s2 = mouseLeave$(box.el).subscribe((e) => {\n      isEnter.value = false;\n      emits(\"leave\", e);\n    });\n  }\n};\n\nonUnmounted(() => {\n  s1?.unsubscribe();\n  s2?.unsubscribe();\n});\n\ndefineExpose({});\n</script>\n\n<template>\n  <Box\n    class=\"mouse\"\n    display-type=\"shrink\"\n    :style=\"{ cursor: isEnter ? 'pointer' : 'auto' }\"\n    @mount=\"mount\"\n  >\n    <slot></slot>\n  </Box>\n</template>\n\n<style></style>\n","<script setup lang=\"tsx\">\nimport { ref } from \"vue\";\n\nconst props = withDefaults(\n  defineProps<{\n    bgColor?: string;\n    progressColor?: string;\n    borderColor?: string;\n    borderRadius?: string;\n    showText?: boolean;\n  }>(),\n  {\n    bgColor: \"#efefef\",\n    progressColor: \"#a0dde9\",\n    borderColor: \"#eeeeee\",\n    borderRadius: \"4px\",\n    showText: false\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"complete\", currentPercent: number): void;\n}>();\n\nconst barPercent = ref(0);\n\nfunction goto(toValue: number) {\n  barPercent.value = Math.min(Math.max(0, toValue), 100);\n  emits(\"complete\", barPercent.value);\n}\n\ndefineExpose({ goto });\n</script>\n\n<template>\n  <div\n    class=\"bar\"\n    :style=\"{\n      border: `1px solid ${props.borderColor}`,\n      borderRadius: props.borderRadius,\n      backgroundColor: props.bgColor\n    }\"\n  >\n    <div\n      class=\"bar-inner\"\n      :style=\"{ width: barPercent + '%', backgroundColor: props.progressColor }\"\n    >\n      {{ props.showText ? barPercent + \"%\" : \"\" }}\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.bar {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n  height: 100%;\n}\n.bar-inner {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 0;\n  height: 100%;\n  text-align: center;\n  font-size: 12px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  color: #666666;\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { ref, onUnmounted, onMounted, inject } from \"vue\";\nimport {\n  useScroll$,\n  getVerticalScrollTopPercentInPage,\n  Context\n} from \"@zyzgroup/core-web\";\nimport ProgressBar from \"./ProgressBar.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { ProgressBar },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    bgColor?: string;\n    progressColor?: string;\n    borderColor?: string;\n    borderRadius?: string;\n    showText?: boolean;\n  }>(),\n  {\n    bgColor: \"#efefef\",\n    progressColor: \"#07B56D\",\n    borderColor: \"transparent\",\n    borderRadius: \"4px\",\n    showText: false\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"progress\", percent: number): void;\n}>();\n\nconst bar = ref();\n\nfunction set() {\n  const percent = getVerticalScrollTopPercentInPage();\n  emits(\"progress\", percent);\n  bar.value?.goto(percent);\n}\n\nconst subscription = useScroll$().subscribe((e) => {\n  set();\n});\n\n// ce 中 编译-运行 失败\n// const context = inject<Context>(\"context\");\n// context.eb.on(\"globalResize\", () => {\n//   set();\n// });\n\nonMounted(() => {\n  set();\n});\n\nonUnmounted(() => {\n  subscription.unsubscribe();\n});\n\ndefineExpose({});\n</script>\n\n<template>\n  <div class=\"page-vertical-scroll-progress-bar\">\n    <ProgressBar\n      ref=\"bar\"\n      :bgColor=\"props.bgColor\"\n      :progressColor=\"props.progressColor\"\n      :borderColor=\"props.borderColor\"\n      :borderRadius=\"props.borderRadius\"\n      :showText=\"props.showText\"\n    ></ProgressBar>\n  </div>\n</template>\n\n<style scoped>\n.page-vertical-scroll-progress-bar {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n  height: 100%;\n}\n</style>\n","<script setup lang=\"tsx\">\nconst props = withDefaults(\n  defineProps<{\n    width?: string;\n    height?: string;\n    color?: string;\n  }>(),\n  {\n    width: \"1em\",\n    color: \"#cccccc\"\n  }\n);\n</script>\n\n<template>\n  <svg\n    viewBox=\"0 0 20 20\"\n    :width=\"props.width\"\n    :height=\"props.height || props.width\"\n    style=\"transform-origin: center\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      fill-rule=\"evenodd\"\n      d=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\"\n      clip-rule=\"evenodd\"\n      :fill=\"props.color\"\n    />\n  </svg>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, watchEffect, onMounted, nextTick } from \"vue\";\nimport SVGDown from \"../svg/SVGDown.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { SVGDown },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    initOpen?: boolean;\n    titleHeight?: string;\n    bgColor?: string;\n    fontColor?: string;\n    borderColor?: string;\n    borderRadius?: string;\n    padding?: string;\n    duration?: number;\n  }>(),\n  {\n    initOpen: false,\n    titleHeight: \"44px\",\n    bgColor: \"#efefef\",\n    fontColor: \"#333333\",\n    borderColor: \"#dddddd\",\n    borderRadius: \"4px\",\n    padding: \"1em\",\n    duration: 500\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"open\"): void;\n  (event: \"close\"): void;\n}>();\n\nconst open = ref(true);\n\nconst content = ref();\nconst contentMaxHeight = ref(Number.MAX_SAFE_INTEGER + \"px\");\n\nfunction computeHeight() {\n  if (content.value) {\n    contentMaxHeight.value =\n      content.value.getBoundingClientRect().height + \"px\";\n  }\n}\n\nonMounted(() => {\n  nextTick(() => {\n    computeHeight();\n    open.value = props.initOpen;\n  });\n});\n\nfunction toggleOpen() {\n  open.value = !open.value;\n  if (open.value) {\n    emits(\"open\");\n  } else {\n    emits(\"close\");\n  }\n}\n\nconst rotate = ref(0);\nwatchEffect(() => {\n  rotate.value = open.value ? 0 : -90;\n});\n\n// 当子组件是异步组件，例如 Image 时，等 Image.mount 后再重新计算高度\nconst reset = () => {\n  computeHeight();\n};\n\ndefineExpose({ reset });\n</script>\n\n<template>\n  <div>\n    <div\n      class=\"accordion\"\n      :style=\"{\n        background: props.bgColor,\n        color: props.fontColor,\n        borderRadius: props.borderRadius\n      }\"\n    >\n      <div\n        class=\"accordion-title\"\n        @click=\"toggleOpen\"\n        :style=\"{\n          height: props.titleHeight,\n          lineHeight: props.titleHeight,\n          margin: `0 ${props.padding}`,\n          transitionDelay: `${open ? 0 : props.duration}ms`,\n          borderBottom: `${open ? 1 : 0}px solid ${props.borderColor}`\n        }\"\n      >\n        <slot name=\"title\">title</slot>\n        <SVGDown\n          class=\"arrow\"\n          :style=\"{\n            transition: `transform ${props.duration}ms ease-in-out`,\n            transform: `rotate(${rotate}deg)`\n          }\"\n        ></SVGDown>\n      </div>\n\n      <div\n        class=\"accordion-content\"\n        ref=\"content\"\n        :style=\"{\n          margin: `0 ${props.padding}`,\n          transition: `max-height ${props.duration}ms ease-in-out`,\n          maxHeight: open ? contentMaxHeight : '0'\n        }\"\n      >\n        <slot name=\"content\"></slot>\n      </div>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.accordion {\n  width: 100%;\n  font-size: 1em;\n  position: relative;\n  overflow: hidden;\n}\n.accordion-title {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  user-select: none;\n  cursor: pointer;\n}\n.accordion-content {\n  word-break: break-all;\n  overflow: hidden;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { onUnmounted, ref, watch } from \"vue\";\nimport { lerpMap, maxDotNumber, stepMap } from \"@zyzgroup/core-common\";\nimport {\n  __color,\n  injectStyle,\n  usePointerDownMovePoint$\n} from \"@zyzgroup/core-web\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    min?: number;\n    max?: number;\n    step?: number;\n    defaultValue?: number;\n    unit?: string;\n    showValue?: boolean;\n    bgColor?: string;\n    barColor?: string;\n    barHeight?: number;\n  }>(),\n  {\n    min: 0,\n    max: 100,\n    step: 1,\n    defaultValue: 0,\n    unit: \"\",\n    showValue: false,\n    bgColor: \"#2d2d2d\",\n    barColor: \"#2FA1D6\",\n    barHeight: 20\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"change\", value: number): void;\n}>();\n\nconst getStep = stepMap(props.min, props.max, props.step);\nconst getPercent = lerpMap(props.min, props.max, 0, 100);\n\nconst value = ref(getStep(props.defaultValue));\nconst percent = ref(maxDotNumber(getPercent(value.value), 2));\n\nlet mouseSubscription: any;\n\nfunction mount(box) {\n  const lerp = lerpMap(0, box.rect.width, props.min, props.max);\n  const change = (clientX: number) => {\n    value.value = getStep(lerp(clientX));\n    percent.value = maxDotNumber(getPercent(value.value), 2);\n    emits(\"change\", value.value);\n  };\n  mouseSubscription = usePointerDownMovePoint$(box.el, {\n    start: (e, mpg) => {\n      // document.activeElement.blur();\n      // e.preventDefault();\n      change(mpg.current.x);\n    }\n  }).subscribe((mpg) => {\n    change(mpg.current.x);\n  });\n}\n\nconst r = ref();\nwatch(r, () => {\n  if (!r.value) {\n    return;\n  }\n  /// for ce\n  injectStyle(\n    `\n  :root {\n    --input-range-box-background-hover-color: ${__color\n      .set(props.bgColor)\n      .lighten(0.05)\n      .toString()};\n    --input-range-box-foreground-hover-color: ${__color\n      .set(props.barColor)\n      .lighten(0.05)\n      .toString()};\n  }\n  :host {\n    --input-range-box-background-hover-color: ${__color\n      .set(props.bgColor)\n      .lighten(0.05)\n      .toString()};\n    --input-range-box-foreground-hover-color: ${__color\n      .set(props.barColor)\n      .lighten(0.05)\n      .toString()};\n  }\n  `,\n    r.value\n  );\n});\n\nonUnmounted(() => {\n  mouseSubscription?.unsubscribe();\n});\n\ndefineExpose({});\n</script>\n\n<template>\n  <div\n    class=\"input-range-box\"\n    ref=\"r\"\n  >\n    <div\n      class=\"box\"\n      :style=\"{ height: props.barHeight + 'px', cursor: 'ew-resize' }\"\n    >\n      <Box\n        displayType=\"full\"\n        @mount=\"mount\"\n      >\n        <div\n          class=\"background\"\n          :style=\"{\n            backgroundColor: props.bgColor,\n            width: '100%',\n            height: '100%'\n          }\"\n        ></div>\n        <div\n          class=\"foreground\"\n          :style=\"{\n            backgroundColor: props.barColor,\n            width: percent + '%',\n            height: '100%'\n          }\"\n        ></div>\n      </Box>\n    </div>\n    <slot :value=\"value\">\n      <label\n        class=\"label\"\n        v-if=\"showValue\"\n      >\n        {{ value }}{{ props.unit }}\n      </label>\n    </slot>\n  </div>\n</template>\n\n<style scoped>\n.input-range-box {\n  position: relative;\n  box-sizing: border-box;\n  font-size: 1em;\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  align-items: center;\n  width: 100%;\n  overflow: hidden;\n}\n.label {\n  min-width: 3em;\n  text-align: right;\n}\n.box {\n  flex: 1 1 auto;\n  position: relative;\n}\n.foreground {\n  position: absolute;\n  left: 0;\n  top: 0;\n}\n.box:hover .background {\n  background-color: var(--input-range-box-background-hover-color) !important;\n}\n.box:hover .foreground {\n  background-color: var(--input-range-box-foreground-hover-color) !important;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { onUnmounted, reactive } from \"vue\";\nimport { clearObject } from \"@zyzgroup/core-common\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    type?: \"flex\" | \"grid\" | \"transform\" | \"table\";\n  }>(),\n  {\n    type: \"grid\"\n  }\n);\n\nconst emits = defineEmits<{\n  // (event: \"click\"): void;\n}>();\n\nconst parentStyle = reactive<Record<string, string>>({});\nconst childStyle = reactive<Record<string, string>>({});\n\nfunction setStyle() {\n  clearObject(parentStyle);\n  clearObject(childStyle);\n  switch (props.type) {\n    case \"table\":\n      parentStyle.display = \"table\";\n      childStyle.display = \"table-cell\";\n      childStyle.verticalAlign = \"middle\";\n      childStyle.textAlign = \"center\";\n      break;\n    case \"transform\":\n      childStyle.position = \"absolute\";\n      childStyle.top = \"50%\";\n      childStyle.left = \"50%\";\n      childStyle.transform = \"translate(-50%, -50%)\";\n      break;\n    case \"grid\":\n      parentStyle.display = \"grid\";\n      parentStyle.justifyContent = \"center\";\n      parentStyle.alignItems = \"center\";\n      break;\n    case \"flex\":\n    default:\n      parentStyle.display = \"flex\";\n      childStyle.margin = \"auto\";\n  }\n}\nsetStyle();\n\nonUnmounted(() => {});\n\ndefineExpose({});\n</script>\n\n<template>\n  <div\n    class=\"layout-center\"\n    style=\"\n      position: relative;\n      display: block;\n      width: 100%;\n      height: 100%;\n      overflow: hidden;\n    \"\n    :style=\"parentStyle\"\n  >\n    <div :style=\"childStyle\">\n      <slot></slot>\n    </div>\n  </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    type?: \"\" | \"slide\";\n    dur?: number;\n    perspective?: string;\n  }>(),\n  {\n    type: \"\",\n    dur: 500,\n    perspective: \"600px\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"click\", isFlipped: boolean): void;\n}>();\n\nconst flip = ref(false);\nconst click = () => {\n  flip.value = !flip.value;\n  emits(\"click\", flip.value);\n};\n\ndefineExpose({});\n</script>\n\n<template>\n  <div\n    class=\"card-flip-scene\"\n    :style=\"{ perspective: props.perspective }\"\n  >\n    <div\n      class=\"card\"\n      :class=\"[props.type, { flip }]\"\n      :style=\"{\n        transition: `transform ${props.dur}ms`\n      }\"\n      @click=\"click\"\n    >\n      <div class=\"face front\"><slot name=\"front\">front</slot></div>\n      <div class=\"face back\"><slot name=\"back\">back</slot></div>\n    </div>\n  </div>\n</template>\n\n<!--\n  ce 中不要使用v-bind\n  border: 1px solid v-bind(borderColor);\n-->\n<style scoped>\n.card-flip-scene {\n  width: 100%;\n  height: 100%;\n  cursor: pointer;\n}\n.card {\n  width: 100%;\n  height: 100%;\n  position: relative;\n  transform-style: preserve-3d;\n}\n.card.slide {\n  transform-origin: center right;\n}\n.card.flip {\n  transform: rotateY(180deg);\n}\n.card.slide.flip {\n  transform: translateX(-100%) rotateY(-180deg);\n}\n.face {\n  position: absolute;\n  height: 100%;\n  width: 100%;\n  backface-visibility: hidden;\n}\n.face > :nth-child(1) {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.back {\n  transform: rotateY(180deg);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { __color } from \"@zyzgroup/core-web\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {}\n});\n\nconst props = withDefaults(\n  defineProps<{\n    selected?: boolean;\n\n    disabled?: boolean;\n\n    isRounded?: boolean;\n\n    label?: string;\n    labelPadding?: string;\n\n    colorBackground?: string;\n    colorForeground?: string;\n    colorDisabled?: string;\n\n    /// reverse           背景色-前景色 互相转换\n    /// only-foreground   只改变前景色\n    colorChangeMode?: \"reverse\" | \"only-foreground\";\n\n    boxWidth?: string;\n    fontSize?: string;\n  }>(),\n  {\n    selected: false,\n\n    disabled: false,\n\n    isRounded: true,\n\n    label: \"\",\n    labelPadding: \"2px\",\n\n    colorBackground: \"#ffffff\",\n    colorForeground: \"#5a82f0\",\n    colorDisabled: \"#cccccc\",\n\n    colorChangeMode: \"reverse\",\n\n    boxWidth: \"20px\",\n    fontSize: \"14px\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"change\", value: boolean): void;\n}>();\n\nlet realSelected = ref(props.selected);\n\nlet realDisabled = ref(props.disabled);\n\nlet realLabel = ref(props.label);\n\nconst getBackgroundColor = () => {\n  switch (props.colorChangeMode) {\n    case \"only-foreground\":\n      return realDisabled.value ? props.colorDisabled : props.colorBackground;\n    case \"reverse\":\n    default:\n      return realDisabled.value\n        ? props.colorDisabled\n        : realSelected.value\n        ? props.colorForeground\n        : props.colorBackground;\n  }\n};\n\nconst getBorderColor = () => {\n  return realDisabled.value\n    ? props.colorDisabled\n    : __color.set(getBackgroundColor()).darken(0.2).toString();\n};\n\nconst getForegroundColor = () => {\n  switch (props.colorChangeMode) {\n    case \"only-foreground\":\n      return realDisabled.value ? props.colorBackground : props.colorForeground;\n    case \"reverse\":\n    default:\n      return realSelected.value ? props.colorBackground : props.colorForeground;\n  }\n};\n\n/// 主动变化\nconst click = () => {\n  if (realDisabled.value) {\n    return;\n  }\n  toggleValue();\n  emits(\"change\", realSelected.value);\n};\n\n/// 被动变化，不再 emit change\nconst setValue = (v: boolean) => {\n  if (v !== realSelected.value) {\n    realSelected.value = v;\n  }\n};\n\n/// 被动变化，不再 emit change\nconst toggleValue = () => {\n  realSelected.value = !realSelected.value;\n};\n\nconst getValue = () => {\n  return realSelected.value;\n};\n\nconst enable = () => {\n  realDisabled.value = false;\n};\n\nconst disable = () => {\n  realDisabled.value = true;\n};\n\nconst setLabel = (label: string) => {\n  realLabel.value = label;\n};\n\ndefineExpose({ setValue, toggleValue, getValue, enable, disable, setLabel });\n</script>\n\n<template>\n  <div\n    class=\"boolean-box\"\n    :class=\"realDisabled ? 'disabled' : ''\"\n    @click=\"click\"\n  >\n    <slot\n      :selected=\"realSelected\"\n      :disabled=\"realDisabled\"\n      :label=\"realLabel\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        class=\"icon\"\n        :style=\"['width:' + props.boxWidth]\"\n      >\n        <rect\n          v-if=\"!props.isRounded\"\n          x=\"0\"\n          y=\"0\"\n          width=\"22\"\n          height=\"22\"\n          strke-width=\"1\"\n          :stroke=\"getBorderColor()\"\n          :fill=\"getBackgroundColor()\"\n        />\n        <circle\n          v-if=\"props.isRounded\"\n          cx=\"12\"\n          cy=\"12\"\n          r=\"11\"\n          strke-width=\"1\"\n          :stroke=\"getBorderColor()\"\n          :fill=\"getBackgroundColor()\"\n        />\n        <path\n          v-if=\"realSelected\"\n          d=\"m7 13l3 3 7-7\"\n          :stroke=\"getForegroundColor()\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n      <span\n        v-if=\"label\"\n        :style=\"[\n          'font-size:' + props.fontSize,\n          'margin-left:' + props.labelPadding\n        ]\"\n      >\n        {{ label }}\n      </span>\n    </slot>\n  </div>\n</template>\n\n<style scoped>\n.boolean-box {\n  position: relative;\n  display: inline-flex;\n  justify-content: flex-start;\n  align-items: center;\n  cursor: pointer;\n}\n.boolean-box.disabled {\n  cursor: not-allowed;\n  /* pointer-events: none; */\n}\n.icon {\n  flex: 0 0 auto;\n  box-sizing: border-box;\n  display: inline-flex;\n  justify-content: flex-start;\n  align-items: center;\n  transition: border-color 0.2s ease-in-out, background-color 0.2s ease-in-out;\n}\n</style>\n","<script setup lang=\"ts\" generic=\"T extends string\">\nimport { ref } from \"vue\";\nimport BooleanBox from \"./BooleanBox.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { BooleanBox }\n});\n\nconst props = withDefaults(\n  defineProps<{\n    options: Array<T>;\n    disabledIndexs?: Array<number>;\n    initIndex?: number;\n\n    isRounded?: boolean;\n\n    colorBackground?: string;\n    colorForeground?: string;\n    colorDisabled?: string;\n\n    colorChangeMode?: \"reverse\" | \"only-foreground\";\n\n    fontSize?: string;\n    boxWidth?: string;\n    itemPadding?: string;\n    labelPadding?: string;\n  }>(),\n  {\n    initIndex: 0,\n\n    isRounded: true,\n\n    colorBackground: \"#ffffff\",\n    colorForeground: \"#5a82f0\",\n    colorDisabled: \"#cccccc\",\n\n    colorChangeMode: \"reverse\",\n\n    fontSize: \"14px\",\n    boxWidth: \"20px\",\n    itemPadding: \"10px\",\n    labelPadding: \"2px\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"change\", values: T): void;\n}>();\n\nconst booleanBoxRefs = ref<any[]>([]);\nconst setRef = (el: any, index: number) => {\n  if (el) {\n    booleanBoxRefs.value[index] = el;\n  }\n};\n\nlet selectedIndex = ref(props.initIndex);\n\nconst change = (index: number, selected: boolean) => {\n  if (selectedIndex.value !== index) {\n    booleanBoxRefs.value[selectedIndex.value].toggleValue();\n    if (selected) {\n      selectedIndex.value = index;\n      emits(\"change\", props.options[selectedIndex.value]);\n    }\n  } else {\n    if (!selected) {\n      /// 强制选择\n      booleanBoxRefs.value[selectedIndex.value].setValue(true);\n    }\n  }\n};\n</script>\n\n<template>\n  <div\n    class=\"radio-group\"\n    v-for=\"(option, index) in options\"\n    :key=\"index\"\n    :style=\"['margin-left:' + (index > 0 ? props.itemPadding : 0)]\"\n  >\n    <BooleanBox\n      :ref=\"(el) => setRef(el, index)\"\n      :selected=\"selectedIndex == index\"\n      :disabled=\"\n        disabledIndexs && disabledIndexs.findIndex((i) => i === index) >= 0\n      \"\n      :isRounded=\"props.isRounded\"\n      :label=\"option\"\n      :labelPadding=\"props.labelPadding\"\n      :colorBackground=\"props.colorBackground\"\n      :colorForeground=\"props.colorForeground\"\n      :colorDisabled=\"props.colorDisabled\"\n      :colorChangeMode=\"props.colorChangeMode\"\n      :boxWidth=\"props.boxWidth\"\n      :fontSize=\"props.fontSize\"\n      @change=\"(v) => change(index, v)\"\n    ></BooleanBox>\n  </div>\n</template>\n\n<style scoped>\n.radio-group {\n  position: relative;\n  display: inline-flex;\n  justify-content: flex-start;\n  align-items: center;\n}\n</style>\n","<script setup lang=\"ts\" generic=\"T extends string\">\nimport { reactive } from \"vue\";\nimport BooleanBox from \"./BooleanBox.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { BooleanBox }\n});\n\nconst props = withDefaults(\n  defineProps<{\n    options: Array<T>;\n    disabledIndexs?: Array<number>;\n    initIndexs?: Array<number>;\n\n    isRounded?: boolean;\n\n    colorBackground?: string;\n    colorForeground?: string;\n    colorDisabled?: string;\n\n    colorChangeMode?: \"reverse\" | \"only-foreground\";\n\n    fontSize?: string;\n    boxWidth?: string;\n    itemPadding?: string;\n    labelPadding?: string;\n  }>(),\n  {\n    isRounded: false,\n\n    colorBackground: \"#ffffff\",\n    colorForeground: \"#5a82f0\",\n    colorDisabled: \"#cccccc\",\n\n    colorChangeMode: \"reverse\",\n\n    fontSize: \"14px\",\n    boxWidth: \"20px\",\n    itemPadding: \"10px\",\n    labelPadding: \"2px\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"change\", values: T[]): void;\n}>();\n\nlet selectedIndexes = reactive(props.initIndexs ?? []);\n\nconst change = (index: number, selected: boolean) => {\n  const findIndex = selectedIndexes.findIndex((i) => i === index);\n  let isChange = false;\n  if (findIndex >= 0 && !selected) {\n    selectedIndexes.splice(findIndex, 1);\n    isChange = true;\n  } else if (findIndex < 0 && selected) {\n    selectedIndexes.push(index);\n    isChange = true;\n  }\n  if (isChange) {\n    emits(\n      \"change\",\n      selectedIndexes.map((index) => props.options[index])\n    );\n  }\n};\n</script>\n\n<template>\n  <div\n    class=\"checkbox-group\"\n    v-for=\"(option, index) in options\"\n    :key=\"index\"\n    :style=\"['margin-left:' + (index > 0 ? props.itemPadding : 0)]\"\n  >\n    <BooleanBox\n      :selected=\"selectedIndexes.findIndex((i) => i === index) >= 0\"\n      :disabled=\"\n        disabledIndexs && disabledIndexs.findIndex((i) => i === index) >= 0\n      \"\n      :isRounded=\"props.isRounded\"\n      :label=\"option\"\n      :labelPadding=\"props.labelPadding\"\n      :colorBackground=\"props.colorBackground\"\n      :colorForeground=\"props.colorForeground\"\n      :colorDisabled=\"props.colorDisabled\"\n      :colorChangeMode=\"props.colorChangeMode\"\n      :boxWidth=\"props.boxWidth\"\n      :fontSize=\"props.fontSize\"\n      @change=\"(v) => change(index, v)\"\n    ></BooleanBox>\n  </div>\n</template>\n\n<style scoped>\n.checkbox-group {\n  position: relative;\n  display: inline-flex;\n  justify-content: flex-start;\n  align-items: center;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, watch } from \"vue\";\nimport { injectStyle } from \"@zyzgroup/core-web\";\nimport RadioGroup from \"../form/RadioGroup.vue\";\nimport CheckboxGroup from \"../form/CheckboxGroup.vue\";\nimport InputRange from \"../form/InputRange.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { RadioGroup, CheckboxGroup, InputRange },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    width?: number;\n    height?: number;\n    dur?: number;\n    perspective?: number; // perspective 定义摄像机（也就是作为观众的我们）到屏幕的距离 : 100px ~ 2000px | none\n  }>(),\n  { width: 200, height: 200, dur: 1000, perspective: 400 }\n);\n\nconst emits = defineEmits<{\n  // (event: \"click\", isFlipped: boolean): void;\n}>();\n\nconst hW = ref(Math.floor(props.width / 2));\n// const hH = ref(Math.floor(props.height / 2));\nconst styleSheet = `\n  :root {\n    --spin-cube-z: -${hW.value}px;\n  }\n  :host {\n    --spin-cube-z: -${hW.value}px;\n  }\n`;\nconst container = ref();\nwatch(container, () => {\n  if (!container.value) {\n    return;\n  }\n  injectStyle(styleSheet, container.value);\n});\n\n/// perspective: 400px;\nconst p = ref(props.perspective + \"px\");\nconst perspectiveChange = (v: number) => {\n  p.value = v == 2000 ? \"none\" : v + \"px\";\n};\n\n/// perspective-origin 定义摄像机观察到的画面中的灭点（vanishing point）的位置\n/// perspective-origin: 50% 50%;\nconst pox = ref(\"50%\");\nconst perspectiveOriginXChange = (v: number) => {\n  pox.value = v + \"%\";\n};\nconst poy = ref(\"50%\");\nconst perspectiveOriginYChange = (v: number) => {\n  poy.value = v + \"%\";\n};\n\n/// cube transform\nconst b = `translateZ(-${hW.value}px)`;\nconst cubeT = ref(b);\nconst sideChange = (side: string) => {\n  switch (side) {\n    case \"front\":\n      cubeT.value = b + \" rotateY(0deg)\";\n      break;\n    case \"right\":\n      cubeT.value = b + \" rotateY(-90deg)\";\n      break;\n    case \"back\":\n      cubeT.value = b + \" rotateY(-180deg)\";\n      break;\n    case \"left\":\n      cubeT.value = b + \" rotateY(90deg)\";\n      break;\n    case \"top\":\n      cubeT.value = b + \" rotateX(-90deg)\";\n      break;\n    case \"bottom\":\n      cubeT.value = b + \" rotateX(90deg)\";\n      break;\n    default:\n      cubeT.value = b;\n      break;\n  }\n};\n\n/// animation: spinCube 8s infinite ease-in-out;\nconst cubeA = ref(false);\nconst spinCubeChange = (a: string[]) => {\n  if (a.length) {\n    cubeA.value = true;\n  } else {\n    cubeA.value = false;\n  }\n};\n\n/// backface-visibility: hidden;\nconst bv = ref<\"visible\" | \"hidden\">(\"visible\");\nconst backVisibleChange = (a: string[]) => {\n  if (a.length) {\n    bv.value = \"visible\";\n  } else {\n    bv.value = \"hidden\";\n  }\n};\n\ndefineExpose({});\n</script>\n\n<template>\n  <div ref=\"container\">\n    <div\n      class=\"cube-scene\"\n      :style=\"{\n        width: `${props.width}px`,\n        height: `${props.height}px`,\n        perspective: `${p}`,\n        perspectiveOrigin: `${pox} ${poy}`\n      }\"\n    >\n      <div\n        class=\"cube\"\n        :class=\"{ spinning: cubeA }\"\n        :style=\"{\n          transformStyle: `preserve-3d`,\n          transform: cubeT,\n          transition: `transform ${props.dur}ms`\n        }\"\n      >\n        <div\n          class=\"face front\"\n          :style=\"{\n            transform: `rotateY(0deg) translateZ(${hW}px)`,\n            backfaceVisibility: bv\n          }\"\n        >\n          <slot name=\"front\">front</slot>\n        </div>\n        <div\n          class=\"face back\"\n          :style=\"{\n            transform: `rotateY(180deg) translateZ(${hW}px)`,\n            backfaceVisibility: bv\n          }\"\n        >\n          <slot name=\"back\">back</slot>\n        </div>\n        <div\n          class=\"face right\"\n          :style=\"{\n            transform: `rotateY(90deg) translateZ(${hW}px)`,\n            backfaceVisibility: bv\n          }\"\n        >\n          <slot name=\"right\">right</slot>\n        </div>\n        <div\n          class=\"face left\"\n          :style=\"{\n            transform: `rotateY(-90deg) translateZ(${hW}px)`,\n            backfaceVisibility: bv\n          }\"\n        >\n          <slot name=\"left\">left</slot>\n        </div>\n        <div\n          class=\"face top\"\n          :style=\"{\n            transform: `rotateX(90deg) translateZ(${hW}px)`,\n            backfaceVisibility: bv\n          }\"\n        >\n          <slot name=\"top\">top</slot>\n        </div>\n        <div\n          class=\"face bottom\"\n          :style=\"{\n            transform: `rotateX(-90deg) translateZ(${hW}px)`,\n            backfaceVisibility: bv\n          }\"\n        >\n          <slot name=\"bottom\">bottom</slot>\n        </div>\n      </div>\n    </div>\n    <div>\n      <RadioGroup\n        :options=\"['front', 'right', 'back', 'left', 'top', 'bottom']\"\n        @change=\"sideChange\"\n      ></RadioGroup>\n    </div>\n    <div>\n      <CheckboxGroup\n        :options=\"['Backface visible']\"\n        @change=\"backVisibleChange\"\n      ></CheckboxGroup>\n    </div>\n    <div>\n      <CheckboxGroup\n        :options=\"['spin cube']\"\n        @change=\"spinCubeChange\"\n      ></CheckboxGroup>\n    </div>\n    <div>\n      perspective:\n      <InputRange\n        :min=\"1\"\n        :max=\"2000\"\n        :defaultValue=\"props.perspective\"\n        unit=\"px\"\n        @change=\"perspectiveChange\"\n      ></InputRange>\n    </div>\n    <div>\n      perspective-origin x:\n      <InputRange\n        :min=\"0\"\n        :max=\"100\"\n        :defaultValue=\"50\"\n        unit=\"%\"\n        @change=\"perspectiveOriginXChange\"\n      ></InputRange>\n    </div>\n    <div>\n      perspective-origin y:\n      <InputRange\n        :min=\"0\"\n        :max=\"100\"\n        :defaultValue=\"50\"\n        unit=\"%\"\n        @change=\"perspectiveOriginYChange\"\n      ></InputRange>\n    </div>\n  </div>\n</template>\n\n<!--\n  ce 中不要使用v-bind\n  border: 1px solid v-bind(borderColor);\n-->\n<style scoped>\n.cube {\n  position: relative;\n  width: 100%;\n  height: 100%;\n}\n.face {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n}\n.front {\n  background: hsla(0, 100%, 50%, 0.7);\n}\n.right {\n  background: hsla(60, 100%, 50%, 0.7);\n}\n.back {\n  background: hsla(120, 100%, 50%, 0.7);\n}\n.left {\n  background: hsla(180, 100%, 50%, 0.7);\n}\n.top {\n  background: hsla(240, 100%, 50%, 0.7);\n}\n.bottom {\n  background: hsla(300, 100%, 50%, 0.7);\n}\n\n.spinning {\n  animation: spinCube 8s infinite ease-in-out;\n}\n@keyframes spinCube {\n  0% {\n    transform: translateZ(var(--spin-cube-z)) rotateX(0deg) rotateY(0deg);\n  }\n  100% {\n    transform: translateZ(var(--spin-cube-z)) rotateX(360deg) rotateY(360deg);\n  }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { getViewportSize } from \"@zyzgroup/core-web\";\nimport Pop from \"./Pop.vue\";\nimport Button from \"../form/Button.vue\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Pop, Button, Box },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    gap?: number;\n    global?: boolean;\n    closeWhenClickOverlay?: boolean;\n  }>(),\n  {\n    gap: 10,\n    global: true,\n    closeWhenClickOverlay: true\n  }\n);\n\nconst buttonRef = ref();\n\nconst left = ref(0);\nconst top = ref(0);\nlet buttonLeft = 0;\nlet buttonTop = 0;\nlet buttonWidth = 0;\nlet contentWidth = 0;\nlet contentHeight = 0;\n\nconst popOpen = () => {\n  const rect = buttonRef.value.getRect();\n  buttonLeft = rect.x;\n  buttonTop = rect.y;\n  buttonWidth = rect.width;\n  computeLocation();\n};\n\nconst contentResize = (box) => {\n  contentWidth = box.rect.width;\n  contentHeight = box.rect.height;\n  computeLocation();\n};\n\nconst computeLocation = () => {\n  const viewport = getViewportSize();\n  left.value = Math.max(\n    props.gap,\n    Math.min(\n      buttonLeft + buttonWidth + props.gap,\n      viewport.width - contentWidth - props.gap\n    )\n  );\n  top.value = Math.max(\n    props.gap,\n    Math.min(buttonTop, viewport.height - contentHeight - props.gap)\n  );\n};\n\nconst popRef = ref();\nfunction open() {\n  popRef.value?.open();\n}\nfunction close() {\n  popRef.value?.close();\n}\n\ndefineExpose({ open, close });\n</script>\n\n<template>\n  <div>\n    <Box\n      ref=\"buttonRef\"\n      class=\"popover-button\"\n      display-type=\"shrink\"\n      @throttleClick=\"open\"\n    >\n      <slot name=\"button\">\n        <Button>popover</Button>\n      </slot>\n    </Box>\n    <Pop\n      ref=\"popRef\"\n      direction-from=\"absolute\"\n      :pop-left=\"left + 'px'\"\n      :pop-top=\"top + 'px'\"\n      :global=\"props.global\"\n      :closeWhenClickOverlay=\"props.closeWhenClickOverlay\"\n      @open=\"popOpen\"\n    >\n      <Box\n        displayType=\"shrink\"\n        @resize=\"contentResize\"\n      >\n        <slot name=\"panel\">\n          <div>...</div>\n        </slot>\n      </Box>\n    </Pop>\n  </div>\n</template>\n\n<style scoped></style>\n","<script setup lang=\"ts\">\nimport { onUnmounted, ref } from \"vue\";\nimport {\n  __color,\n  Color,\n  useClipboard,\n  useMouseAndPointerDownMovePoint$\n} from \"@zyzgroup/core-web\";\nimport { clamp } from \"@zyzgroup/core-common\";\nimport Popover from \"../pop/Popover.vue\";\nimport Box from \"../base/Box.vue\";\n// import { toast } from \"../../globalTeleport\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Popover }\n});\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: \"#5a82f0\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"color\", color: string): void;\n}>();\n\nconst popover = ref();\n\nconst color = new Color(props.color);\nconst rightColor = new Color(props.color);\n\nconst colorString = ref(\"\");\nconst oppositeColorString = ref(\"\");\nconst rightColorString = ref(\"\");\nconst oppositeRightColorString = ref(\"\");\n\nconst h = ref(0);\nconst s = ref(0);\nconst v = ref(0);\n\nconst hTop = ref(0);\nconst sLeft = ref(0);\nconst vTop = ref(0);\n\nfunction set() {\n  colorString.value = color.toString();\n  oppositeColorString.value = __color.set(color).opposite(true).toString();\n  rightColorString.value = rightColor.toString();\n  oppositeRightColorString.value = __color\n    .set(rightColor)\n    .opposite(true)\n    .toString();\n  const rightColorHSV = rightColor.getHSV();\n  const colorHSV = color.getHSV();\n  h.value = rightColorHSV.h;\n  s.value = colorHSV.s;\n  v.value = colorHSV.v;\n  hTop.value = (1 - h.value) * 100;\n  sLeft.value = 100 * s.value - 6;\n  vTop.value = 100 * (1 - v.value) - 6;\n}\n\n// 初始化\nset();\n\nlet s1;\nlet s2;\n\n// 右侧竖行选择区-指示棒-h\nconst hueFieldReady = (ctx, box) => {\n  const setH = () => {\n    if (!ctx.mpg.current.isDown) {\n      return;\n    }\n    const h = clamp(1 - ctx.mpg.current.y / ctx.rect.height, 0, 1);\n    rightColor.setHSV(h, s.value, v.value);\n    color.setHSV(h, s.value, v.value);\n    set();\n  };\n  s1 = useMouseAndPointerDownMovePoint$(box.el, {\n    start: setH\n  }).subscribe(setH);\n};\n\n// 正方形选择区-叠加黑白渐变背景-s+v\nconst saturationFieldReady = (ctx, box) => {\n  const setSV = () => {\n    if (!ctx.mpg.current.isDown) {\n      return;\n    }\n    color.setHSV(\n      h.value,\n      ctx.mpg.current.x / ctx.rect.width,\n      1 - ctx.mpg.current.y / ctx.rect.height\n    );\n    set();\n  };\n  s2 = useMouseAndPointerDownMovePoint$(box.el, {\n    start: setSV,\n    end: () => {\n      emits(\"color\", colorString.value);\n      popover.value.close();\n      useClipboard(colorString.value).then(() => {\n        // toast(`${colorString.value} 已复制`);\n      });\n    }\n  }).subscribe(setSV);\n};\n\nonUnmounted(() => {\n  s1?.unsubscribe();\n  s2?.unsubscribe();\n});\n\ndefineExpose({});\n</script>\n\n<template>\n  <Popover\n    ref=\"popover\"\n    :closeWhenClickOverlay=\"false\"\n  >\n    <template #button>\n      <slot>\n        <span\n          style=\"\n            display: inline-block;\n            vertical-align: middle;\n            font-size: 1em;\n            padding: 0.3em 0.8em;\n            border-radius: 0.3em;\n            cursor: pointer;\n            outline: 'none';\n            text-align: 'center';\n            border: 0;\n          \"\n          :style=\"{\n            backgroundColor: colorString,\n            color: oppositeColorString\n          }\"\n        >\n          {{ colorString }}\n        </span>\n      </slot>\n    </template>\n    <template #panel>\n      <div\n        class=\"selector\"\n        style=\"\n          position: relative;\n          width: 124px;\n          height: 106px;\n          padding: 3px;\n          background-color: #222222;\n          box-sizing: border-box;\n        \"\n      >\n        <!-- 正方形选择区 -->\n        <div\n          class=\"saturation-field\"\n          style=\"\n            position: relative;\n            width: 100px;\n            height: 100px;\n            display: inline-block;\n            cursor: pointer;\n            box-sizing: border-box;\n          \"\n          :style=\"{\n            background: `linear-gradient(\n              to right,\n              rgb(255, 255, 255) 0%,\n              ${rightColorString} 100%\n            )`\n          }\"\n        >\n          <Box\n            displayType=\"full\"\n            @start=\"saturationFieldReady\"\n          >\n            <!-- 正方形选择区-叠加黑白渐变背景 -->\n            <div\n              style=\"\n                width: 100%;\n                height: 100%;\n                background: linear-gradient(\n                  to bottom,\n                  rgba(0, 0, 0, 0) 0%,\n                  rgb(0, 0, 0) 100%\n                );\n                box-sizing: border-box;\n              \"\n            ></div>\n            <!-- 圆形选择点 -->\n            <div\n              class=\"field-knob\"\n              style=\"\n                position: absolute;\n                width: 12px;\n                height: 12px;\n                box-shadow: rgba(0, 0, 0, 0.5) 0px 1px 3px;\n                border-radius: 12px;\n                z-index: 1;\n                cursor: pointer;\n                box-sizing: border-box;\n              \"\n              :style=\"{\n                left: sLeft + 'px',\n                top: vTop + 'px',\n                backgroundColor: colorString,\n                border: `2px solid ${oppositeColorString}`\n              }\"\n            ></div>\n          </Box>\n        </div>\n        <!-- 右侧竖行选择区 -->\n        <div\n          class=\"hue-field\"\n          style=\"\n            width: 15px;\n            height: 100px;\n            cursor: ns-resize;\n            position: absolute;\n            top: 3px;\n            right: 3px;\n            background: linear-gradient(\n              to bottom,\n              rgb(255, 0, 0) 0%,\n              rgb(255, 0, 255) 17%,\n              rgb(0, 0, 255) 34%,\n              rgb(0, 255, 255) 50%,\n              rgb(0, 255, 0) 67%,\n              rgb(255, 255, 0) 84%,\n              rgb(255, 0, 0) 100%\n            );\n            box-sizing: border-box;\n          \"\n        >\n          <Box\n            displayType=\"full\"\n            @start=\"hueFieldReady\"\n          >\n            <!-- 右侧竖行选择区-指示棒 -->\n            <div\n              class=\"hue-knob\"\n              style=\"\n                position: absolute;\n                width: 15px;\n                height: 2px;\n                z-index: 1;\n                box-sizing: border-box;\n              \"\n              :style=\"{\n                marginTop: hTop + 'px',\n                borderRight: '4px solid ' + oppositeRightColorString\n              }\"\n            ></div>\n          </Box>\n        </div>\n      </div>\n    </template>\n  </Popover>\n</template>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    width?: string;\n    color?: string;\n  }>(),\n  {\n    width: \"10px\",\n    color: getCSSVar(\"--xg-blue\")\n  }\n);\n</script>\n\n<template>\n  <svg\n    :style=\"['transform-origin: center', 'width: ' + props.width]\"\n    viewBox=\"0 0 7 5\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M0.153989 2.49994C-0.0513296 2.28468 -0.0513296 1.93567 0.153989 1.72041C0.359307 1.50514 0.692194 1.50514 0.897512 1.72041L3.12808 4.05902C3.3334 4.27428 3.3334 4.62329 3.12808 4.83855C2.92276 5.05382 2.58988 5.05382 2.38456 4.83855L0.153989 2.49994Z\"\n      :fill=\"props.color\"\n    />\n    <path\n      d=\"M6.10249 0.161447C6.30781 -0.0538159 6.64069 -0.0538157 6.84601 0.161447C7.05133 0.376711 7.05133 0.725721 6.84601 0.940984L3.12808 4.83855C2.92276 5.05382 2.58988 5.05382 2.38456 4.83855C2.17924 4.62329 2.17955 4.27439 2.38487 4.05913L6.10249 0.161447Z\"\n      :fill=\"props.color\"\n    />\n  </svg>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, reactive } from \"vue\";\nimport { flushArray } from \"@zyzgroup/core-common\";\nimport { getDocumentElementPosition } from \"@zyzgroup/core-web\";\nimport { plateKeyboard } from \"../../globalTeleport\";\nimport Box from \"../base/Box.vue\";\nimport SVGCheck from \"../svg/SVGCheck.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { SVGCheck },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    maxWidth?: string;\n    showBottomInfo?: boolean;\n    stylePattern?: \"simple\" | \"dot\";\n  }>(),\n  {\n    maxWidth: \"750px\",\n    showBottomInfo: true,\n    stylePattern: \"simple\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"clear\"): void;\n  (event: \"complete\", type: string, plate: string): void;\n}>();\n\nconst PLATE_TYPES = [\n  {\n    name: \"蓝牌\",\n    style: \"background-color: #0078f0;\",\n    completePlateLength: 7,\n    symbol: \"b\"\n  },\n  {\n    name: \"绿牌\",\n    style: \"background-color: #00f08c;\",\n    completePlateLength: 8,\n    symbol: \"g\"\n  },\n  {\n    name: \"黄牌\",\n    style: \"background-color: #fac800;\",\n    completePlateLength: 7,\n    symbol: \"y\"\n  },\n  {\n    name: \"黄绿\",\n    style: \"background: linear-gradient(90deg, #fac800 51.5%, #00f08c 51.51%);\",\n    completePlateLength: 8,\n    symbol: \"q\"\n  },\n  {\n    name: \"黑牌\",\n    style: \"background-color: #222222;\",\n    completePlateLength: 7,\n    symbol: \"d\"\n  }\n];\n\nconst currentTypeIndex = ref(0);\n\nconst plates = reactive<string[]>([]);\n\nconst focusIndex = ref(-1);\n\nconst isPlateKeyboardOpen = ref(false);\nconst scrollTopWhenKeyboardShow = ref(0);\n\nconst numbersRef = ref();\nlet numbersTop = 0;\n\nfunction openPlateKeyboard() {\n  plateKeyboard({\n    initPlates: plates,\n    completePlateLength:\n      PLATE_TYPES[currentTypeIndex.value].completePlateLength,\n    onPlates: (newPlates: string[]) => {\n      flushArray(plates, newPlates);\n      focusIndex.value = plates.length;\n      if (\n        plates.length ===\n        PLATE_TYPES[currentTypeIndex.value].completePlateLength\n      ) {\n        emits(\n          \"complete\",\n          PLATE_TYPES[currentTypeIndex.value].name,\n          plates.join(\"\")\n        );\n      }\n    },\n    onOpen: () => {\n      // 页面其余元素变化 导致 el.rect.x 或 el.rect.y 变化时，也要触发\n      // const systemHeight = getDocumentElementPosition().clientHeight;\n      if (isPlateKeyboardOpen.value == false) {\n        // 初次打开时才变化\n        const rect = numbersRef.value.getBoundingClientRect();\n        numbersTop = rect.y + rect.height;\n      }\n      isPlateKeyboardOpen.value = true;\n    },\n    onClose: () => {\n      isPlateKeyboardOpen.value = false;\n    },\n    onResize: (rect) => {\n      scrollTopWhenKeyboardShow.value =\n        numbersTop <= rect.y ? 0 : rect.y - numbersTop;\n      // console.log(numbersTop, rect.y, scrollTopWhenKeyboardShow.value);\n    }\n  });\n}\n\nconst changePlateType = (index: number) => {\n  currentTypeIndex.value = index;\n  if (\n    focusIndex.value <= PLATE_TYPES[index].completePlateLength &&\n    plates.length < PLATE_TYPES[index].completePlateLength\n  ) {\n    focusIndex.value = plates.length;\n    openPlateKeyboard();\n    emits(\"clear\");\n  } else {\n    flushArray(plates, plates.slice(0, PLATE_TYPES[index].completePlateLength));\n  }\n  if (PLATE_TYPES[index].completePlateLength === plates.length) {\n    emits(\n      \"complete\",\n      PLATE_TYPES[currentTypeIndex.value].name,\n      plates.join(\"\")\n    );\n  }\n};\n\nconst tapNumber = (index: number) => {\n  flushArray(plates, plates.slice(0, index));\n  focusIndex.value = Math.min(Math.max(0, focusIndex.value), index);\n  openPlateKeyboard();\n  emits(\"clear\");\n};\n\ndefineExpose({});\n</script>\n\n<template>\n  <div\n    class=\"plate-mobile\"\n    :style=\"{\n      maxWidth: props.maxWidth,\n      transform: isPlateKeyboardOpen\n        ? `translate(0, ${scrollTopWhenKeyboardShow}px)`\n        : ''\n    }\"\n  >\n    <div class=\"title\">车牌颜色</div>\n    <div\n      class=\"plate-types\"\n      :class=\"props.stylePattern\"\n    >\n      <div\n        v-for=\"(item, index) in PLATE_TYPES\"\n        :key=\"index\"\n        :class=\"index == currentTypeIndex ? 'checked' : ''\"\n        @click=\"changePlateType(index)\"\n      >\n        <template v-if=\"props.stylePattern == 'dot'\">\n          <div :style=\"item.style\"></div>\n          <div>{{ item.name }}</div>\n          <div>\n            <SVGCheck\n              color=\"#ffffff\"\n              width=\"7px\"\n            ></SVGCheck>\n          </div>\n        </template>\n        <template v-else>\n          <div>{{ item.name }}</div>\n        </template>\n      </div>\n    </div>\n    <div class=\"title\">车牌号码</div>\n    <div ref=\"numbersRef\">\n      <div class=\"plate-numbers\">\n        <div\n          @click=\"tapNumber(0)\"\n          :class=\"0 == focusIndex ? 'current' : ''\"\n        >\n          {{ plates[0] }}\n        </div>\n        <div\n          @click=\"tapNumber(1)\"\n          :class=\"1 == focusIndex ? 'current' : ''\"\n        >\n          {{ plates[1] }}\n        </div>\n        <!-- <div class=\"dot\">·</div> -->\n        <div\n          v-for=\"index in PLATE_TYPES[currentTypeIndex].completePlateLength - 2\"\n          :key=\"index\"\n          :class=\"index + 1 == focusIndex ? 'current' : ''\"\n          @click=\"tapNumber(index + 1)\"\n        >\n          {{ plates[index + 1] }}\n        </div>\n      </div>\n    </div>\n    <div\n      class=\"info\"\n      v-if=\"props.showBottomInfo\"\n    >\n      请输入您真实有效的车牌号，便于正常使用系统功能。\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.plate-mobile {\n  background-color: #ffffff;\n  overflow: hidden;\n  border-radius: 8px;\n  padding-bottom: 15px;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.title {\n  font-size: 16px;\n  line-height: 1;\n  color: #333333;\n  font-weight: bold;\n  text-align: center;\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\n.plate-types {\n  display: flex;\n  justify-content: center;\n}\n.plate-types > div {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  width: 60px;\n  height: 44px;\n  border-radius: 4px;\n  background-color: #f5f5f5;\n  cursor: pointer;\n  overflow: hidden;\n}\n.plate-types > div + div {\n  margin-left: 5px;\n}\n.plate-types.dot > div > div:nth-child(1) {\n  width: 14px;\n  height: 14px;\n  margin-bottom: 5px;\n  border-radius: 50%;\n  background-color: #0078f0;\n}\n.plate-types.dot > div:nth-child(2) > div:nth-child(1) {\n  background-color: #00f08c;\n}\n.plate-types.dot > div:nth-child(3) > div:nth-child(1) {\n  background-color: #fac800;\n}\n.plate-types.dot > div:nth-child(4) > div:nth-child(1) {\n  background: linear-gradient(90deg, #fac800 51.5%, #00f08c 51.51%);\n}\n.plate-types.dot > div:nth-child(5) > div:nth-child(1) {\n  background-color: #222222;\n}\n.plate-types.dot > div > div:nth-child(2) {\n  color: #cccccc;\n  font-size: 14px;\n  line-height: 1;\n  font-weight: bold;\n}\n.plate-types.dot > div > div:nth-child(3) {\n  display: none;\n  position: absolute;\n  right: -1px;\n  bottom: -1px;\n  width: 16px;\n  height: 16px;\n  border-radius: 16px 0 4px 0;\n  background: #5a82f0;\n}\n.plate-types.dot > div > div:nth-child(3) > svg {\n  position: absolute;\n  top: 6px;\n  left: 6px;\n}\n.plate-types.dot > div.checked {\n  border: 1px solid #5a82f0;\n}\n.plate-types.dot > div.checked > div:nth-child(2) {\n  color: #333333;\n}\n.plate-types.dot > div.checked > div:nth-child(3) {\n  display: block;\n}\n.plate-types.simple > div > div:nth-child(1) {\n  color: #666666;\n  font-size: 14px;\n  line-height: 1;\n  font-weight: bold;\n}\n.plate-types.simple > div.checked > div:nth-child(1) {\n  color: #000000;\n}\n.plate-types.simple > div.checked:nth-child(1) {\n  background-color: #0078f0;\n}\n.plate-types.simple > div.checked:nth-child(1) > div {\n  color: #ffffff;\n}\n.plate-types.simple > div.checked:nth-child(2) {\n  background-color: #00f08c;\n}\n.plate-types.simple > div.checked:nth-child(3) {\n  background-color: #fac800;\n}\n.plate-types.simple > div.checked:nth-child(4) {\n  background: linear-gradient(90deg, #fac800 51.5%, #00f08c 51.51%);\n}\n.plate-types.simple > div.checked:nth-child(5) {\n  background-color: #222222;\n}\n.plate-types.simple > div.checked:nth-child(5) > div {\n  color: #ffffff;\n}\n.plate-numbers {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n.plate-numbers > div {\n  flex: 1;\n  max-width: 40px;\n  height: 44px;\n  line-height: 44px;\n  border-radius: 4px;\n  font-size: 18px;\n  color: #333333;\n  text-align: center;\n  border: 1px solid #cccccc;\n}\n.plate-numbers > div.current {\n  border: 1px solid #5a82f0;\n}\n.plate-numbers > div + div {\n  margin-left: 5px;\n}\n.plate-numbers > div.dot {\n  flex: 0;\n  border: 0;\n  padding: 0 2.5px;\n  color: #cccccc;\n  font-size: 46px;\n  margin-right: -5px;\n  margin-left: 0;\n}\n.info {\n  font-size: 12px;\n  line-height: 16px;\n  font-weight: 400;\n  color: #999999;\n  text-align: center;\n  padding: 0 5px;\n  margin-top: 20px;\n}\n</style>\n","export default \"data:image/jpeg;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAACYCAIAAACXoLd2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozYmZjNDc5NC04OGFhLWFkNDEtYTIwMi0wOWM1Zjk0MmU5ZjAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RkZCREQxMDEyMDM1MTFFODk3OTRDMDVBNUVEMkRENjQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RkZCREQxMDAyMDM1MTFFODk3OTRDMDVBNUVEMkRENjQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OGIxZWI0ZTktYTk3ZC0wNzQ2LWFmM2MtZjhlMTQ4MmMyZTI3IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6OWRhZWExNDktMDBkNy0xMWU4LWI4OGIt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\"","export default \"data:image/jpeg;base64,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k8mK3UoRtBbcAQOOMBuOB0KgA4AHJp/Wat9+r7X1vta3fpvZX5rJyd+yt56N/fv/AFc1LbwTpxgcsikk8x7/AJR3xnaTxnoRn6EEUfWqqe7+fy81bVPsumu8DVd79+r/AM/Xr12H3PgOyljIWNYwAAqgBgMjnGVOOcndgkf3edqr61W7+f4Jd0+l993292JzP+v617a3t8rx5VvBkVrIynPXqo6A8gH1I9z0PAOSK6IVpSgm2rrdu/T77X7/AJWsPdat3312/BSf4JO+uxft9KjtiF3EL975vU9u3p7/AKBqr2j68q+f/wBqv67it3VtO9r/AH3tf087O3vMuYrdchY95wOWUDHPI6kkd+D37YpOprv9z0/4cNNd/Lr9/wDX5M52a2tJNw2lecMNq5LeqgckH6L69eK3hUvbW+2jbtoum+l7a26aXuN9nr5q/wB3Rf8Aku2zVrxkh06MqFEb7B1O3B59Mbh79cfUnC9SruMWu/m3t30WuuzX3WuJyULb69m/x0jfy+Hzve8ej07SyclYyqjYcuME9enUfTj355rlrT5r7eVvlv1W3W3fspT7VdXL0/4bm1fW6/8AAvs9hY2qK6jAXgAk9DyOMhRwe+AcdueK4ajcdUtNrq6t1d7J9/L10CdezXvPdbu136WWq22tbe9z0HTZba3KoxRyVxwcjkg89CcevT69Ky56ivo9r212V+9tW0+1rWtK9zJYnXf8PTpzJa6a366pXNqfVba2G0iIk9lIbt+eRkckj05zldKXPVlyO9km+v62/BfddKMTxS5b3bu/T8ed/l91zLk1+3V+dqjB+9tAHBx3Y89OBwSOuRW/1d669bau1ultvn19d3HL6zf+b8/x5l91vmr+7h32u2vzFXR24IRSGycj69Bk+nrg5NXHDu61fya/yfrttromL6z5+nS/4tPpfX7ri2mvMi5O5FIyE6gj0x8uM+xI5yccVr9Xe/vff/wLP1919FHqL6y39p79O60tu9vTyVtSLUdZh8sN0dgQp4yCQQCMkEEH6fjnKL6vezu157X8lZarz2X8snzKKliW4y1bvFrtq1bWzl+f3/Z4bULua7URxyfN5gOWz1HAwcHkE5GPTq3G7eELNa6tpbdNNfi1enl6q1jicua+zf8Aii36W9213a9235rXmox6XduS7yeY55y64+vIGfXrn0yCa9CFZwXZ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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW4AAADECAYAAAC/UsuzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDY2MDVCNkY4OTk0MTFFMEIyMUE5MTExQTI1RDk0N0UiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDY2MDVCNzA4OTk0MTFFMEIyMUE5MTExQTI1RDk0N0UiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NjYwNUI2RDg5OTQxMUUwQjIxQTkxMTFBMjVEOTQ3RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NjYwNUI2RTg5OTQxMUUwQjIxQTkxMTFBMjVEOTQ3RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvcsJ6QAAC4nSURBVHja7F0NiFXl1l53FD8EwQ8/vEzMxTAmvExMTEwoE4qhKIZiJIZhGCNKYiSFYhhKYRhKYShK4pA4JEpxhyRRkiRxSBwakoYkSa40JEnDlTswMDAwMNzvPJ617+w5nv2z3v2/3/XAxp9zzj77vD/Pu/7XX/5TASmyxPnK9XHlGq9cjZWrqXK1Vq4F/GejDpFCoXDjL0rcmeOJyjXo8/rcytXiIvL5lauZ/61QKJS4FRngxcp1wfCzrUzszSypN/LfZ/NrM3R4FQolbkX8mKhc5yrXvsp1L6HvaKtc0/jvDrG7yd9N8HNYqnfgmG8UCoUSt6IGY1S1dR/iv+cRbtJvd/05m1+bxxqAQqFQ4rYKkLrfZSm8iJjDUjwIfRNL+wqFQonbCvRXrh38ZxoAwbYw6TrkCxPKLKqaWe7y1UtVm/x4yPt2VK7PWSJXKBRK3FYAJAn7962Y7tfMpNziIupW4T2GWSPo5YMlyDbfWblO61QqFErctuFy5brK180I9zlQufbG/Gz3mcAfVK7RynWH/x8HA5ybq2iqQ1ShUChxWwsQ5hD/3YkGgTT8N/J2cIJMf9GhUyiUuBX5wjqqZmR64WeSm0cUxcEIVf0RDtzhoIoSYLoOQSmxMYC4YZ8+qMNUWiA3YBH/WYv5rJ25tTRiYm+r0cxm8t+d5C6FStyKBAEzyWMsedUD4q1/12EqNdZUrksJ3BdRRgs8pHl3nP8CPhTm6VQocSvCY3Pl6vZ5/fvKtViHqbQ4Vbm25uA5QNxrK9cW0ph+JW5FIK5UrpU+r2+vXJ/qMJUWcFL/leqbSxzAFLKCqk5uwB0RlAQWVq43qZqYpVDiVtQBNizMJQ88Xod981+kTqsy4wWqhpH64XfyNme4w07vMLETTY1mcjtCseYGQjwXJO/TKoErcSvqA5mXx31ev1i5VuswlRYnKtcbAe/5lLWvuAGiR9IY7Ow9LtJ3gKxc5BTs1mlS4lZMRV/les7ndUSfnNVhKi3CmEuWVa7vEn4OSOVnKtcn9Gjtedi+T6rmp8StmAq/Rg2wcf6bJsO+FOXDcqpm23oBhAmT2ZwUngVS9/tM4G50kpZEEKFBh6D02OjzGsIGL+gQlRrrA16HNH45pWdBKOHhynWt5qDopmpJY4UStyIEcQPndIhKT9xBZoielJ9pKVXDUd2121FIrU+nKxzUVGIHniFvbz+cRH+mpCorssGSynXd5/WsTGb9/GxOiWBEt/zCkrlCJW6Vun1eG89A4lLkS+uCyexqBs+FuO4Drn+jPPCHOl0qcSsmNwSclBM+qus1HabSAnHXj5N/dEknZecgdGsEkLb/IC0DrBK34qEK6pfefp2Sa1SsyB4oEtUR8J4LAcSeJNwFzxB5ckqnTIlbEawuY8N+qUNUamwIeB0x31k5ByFULHP9u1unS4lbUUVQdIFGl5Qbayk4uiTLw3uL6++3VANU4lZUgaiRVT6vI+rktg5TaQFzWRhzSVZYVXOw9OqUKXErqgiKLlBzSbnxUsDr9yi+ptQmgkVLjdStUOJW8Mb1i9VVc0m5sT7Ee7I8vN3EfUenyxvauswuzGTy9iJolOdEUsRCHarEAJNUUPQGassMB7yntq9k2O+bFvD9MJccyGhs3O3RhnWpKHErJrExQLI+VwDiTpLYkv6+vMNxDGbRcsytDY7qVlXiVkwCTqA5PkQEVXlTjiRERfrA4b0ng+8dc/1d096VuBU1qjJiek94vI7OJs/qMFmNSxkR95Dr73N1Gryhzkk7sVGHQOGDPsrGxuyOJGnWaVDiVkxFh6qiCh9kkUmLg8IdSdKq06DErZgKFK1X54/CD5dS/r4emurbWKpT4A2tDmgfoI7Chj2uQ6HwQdo1urEmna7y6P7+k06BStyKKkDWryppK0IAER7nU/quPhdpA5t0+P2hUSV24UPSVGLbACefV21rhGeO+HwW5pI0HNnvuP4O38sWnTYlbkUV/aTdRaIA6ntQdT0/knSAMLeg5BaYJ1pieqagg3yfz+uXWTubkeC4HqepbdXeIm2iEAi1cduj9qLvZNb1H+IkpPkU3CczTpIsI1AN8qmA91ysXKsT+v4rlWsNac9JlbgVdfFuBNJezVJQHCSpyBdwYCHszs98dikh4oYG+KKLtHFQf66krcStqAJNYI9G+PyDyrVCh7G0WB+CuCcomkmmFkip30ZTU9yPkYYAhoZGlZQbcDxtjkEyGtShLC3C1OiOq6XZKBP2qzQ1j2Bv5dquU6HErajibYqnBZTW6S4vWik4SzFqMg5IGk7IJytXV81rqIlyQKdBBnVOlheIwV0neL9fnWbYQn/RIS0tEFniF3G0oHL9KrjfAxYY4PxEfe/L9GimLiJHYNNeq8OvxK2Y3DhP8Z9h4DQS9qtPgUy2Nh3aUgI27qcD3vOzh2R+v3ItJ5nzG85O2LTn69CbQU0l5cQ2AWmj68hJqpZ69YOaS8oJaFlhnNde5pJuAWnD+XiDqiGGStoqcStqNpLEIenE6cLD/zfyLueJUL/fKN7oAkW2wJy/QuG6u6Mr0g91/h+Oy+fJu4xCO1Wbd2wgrfinxK2oi3us8o6EfD9Siz9z/Xtr5Trl8/5rpCFbZQEOaMRRXxd85neqH6uP1Pmrrn87Mf0g6hk61ErcCn8sr9lAfoCqCrulO+HhKt/DC69T1ayiKDZgl36B5HVrPiUN28sF1MZdHhwVkDbMHafp0Sw1SNNNPp/rIa0sWHTAHv0cmRUbO6/Dp8StiA9QVfcJ3v8W1Td5OP0o/dTrKzrchUU/k7ZpbP9VyqalmaIGaiqZjDkF/LqVI5bZKSqfp8JEiApYQuGz2/DcCO3zsj2iLrJfs2CU+TyrW6dwQCw14vrHIt7nLEUv9XqX95qTkXuPJqOgvErN1trLW1g7hMmvXYm7vBLpbb5u8Z8DMdwXi2ceLx7EODfzlWaxpUNULSIVBlj4N0Is9L+Td4hX2p1RFNFxhqqO5zjMXEiR/yrke0dYEHCuOzHtu3pw9uEC3ovL+O9K3AUBJGZ4ynv5zwFK3y6LBbSYqsWZFlNyMavSNmT7K9d7Id73QeV6P2GpS5EOPqlcu2K8n9/BjXV4hfcdzCr9Gf/2Rt5/zl4sTfneshA3CAyOk0s5WCxe0sBillZWxyStjjNph3UytbO0HSY8CxrKkz6v4zdcVE7MPXYxcccNOLY7XVL1eb5A1nluQo0wRWQJw49T6LDWIhM3QpoQc9xNxapehxoNa1liXRXhPu+ymSSsieQnocSxyOcQhBPzXxRco1uRDcbZNHLG4LOI7Ue0kV825WLW3k4xYY8VcIya+PApZGJQ0YgbCxJZXl1UjuiGRl44WECSOiBwRMIhORHy/Ycr186YVWyN6c0nQKJwQl42+CzKqx5gjevvgvVVdECgeZ33YSHaphWFuAeZSFAvo6zhSJBi3qTJgk9egCr6DG+uMIBK+B3JU9Wh0Tzus3nxvN8rT+YK2BsvkJm58BivPwdBWbRlxGwmb4TL5rqWSt6Je5DNAacsOv2xYPbwAqpnj36jcp0IeS+ovD9HWIRBmZheKdCK9IGQupUkb1GHNfY5PRq/P8hSt40JVxBytvA+zCWBN+R4EW7jhdNlEWk7Gwa/vV7R+SsC0gaORFx4QZEjXypf5gJwUD9nQNo42L+pQ9q43y6yN0t2gvfekywojeTtAfMmcSMIHxmA3aSp1Q5g+4Y9GTGpT7MJIwziiPyA6o2KgWM+z/aTTlGmQOjdiyQ3ITby+nDH9GNtvUNawrcWcMLD9p8bn06eiBtk/XYeT7ecYD6Fj57BQvuFN2dUwNHlV6MC39Oi05MJ4Kh/heRRHTBvwe/RzP+GkIQoEsTvj+qw+gpR8AUsVuKuqncwDfTmYFJg26pNZx+gqaaa2n/nEf+gqpMzDqCw1Ms+rzuRCIp0cYr3jXQtIvTtW9ehjvX8GpkVnYqCWbzPnGgqpxSsc7DMdfGD+zC5zQcV/v+uQAONEzAhHnE9o1XEjVMefe4OpWQWmc0LpZUXi/N3k1jkUZpM3x3kBTRAchtjUosqzloi2CSP+WhC0AR+Ux5NFdg3+ww+hwijr3kvjLOEfSgFQQQx08tce66F4nP6jdHUchZwpt9MYQ5w8MGpu8Im4gbBvZgw0c3mxbKKrzSiHx6w5nCFF9DdlMcVG+Rnij8xBh11un1eR0Zmh/JpKthB1Y7pUrzEBzo0yntsYulL6Bln8N7DtZrSN6UN02TJi0sJ8wwiT/ZTyg0jsiDuc6ziJWFLa2ETgVMjJGtAjYMd8kyCm8SNbxOSAHAQrfR5HfG/x5RTE9dQYdIwieRBcgkc3NN4Ll+l8D1JwwL3RkbwFl6Deep8c5v34JmETCto6/YFpRg6mCZxY+HtMpQW/ABb2QZeMHmW+gZ54XRTMin6G3jxJAGo0oguGfJ4Hba+P0n7USaFUdZQrxp89j2WCImCi4dFwWe8B/OOKyw89sQsPIKHTlN8vqVcEDdUMzi44iwA1U6TmYazCrYRocId5cUTp8RzMsHNE6SiJyXt2w4clmtIbredxlrQdjYdQMq+nOBzQmi6UaBxxZh08T4civG+B9l8Unji7uOFF1eq+kKWIFaVYFPCBv4xxZsZ6paw4p7H53xe72SJQxGvlraS5L4SmCnOslBjmlHpdyB4rVXE9LcVbIzHmcAPxWhGgUB5JEkNNOnMSagly2MibZzoyPL6oSSkDTSzlPzPGCVlqMNbKf5IAYy/nw2vqFXi8ooBPiilpD2LtZ/1/NklMZE2nIw/UjX80wtHCzjOM5hosQdRjC2OIlPQTF9Jcj8kKXH3sHoWNdRvPp9eay3YrDd5s8YRHonDDZ1K4uxUgxC0D31ejzN+3Gb0spYqtcE2snDTxsT/QgxmAOy/Y0zcAMJCn/AQxrDWUL9mboHHfpjX+YkY7oUACYRfxl7+OCmJ+xSfOFEICGrGbqqGt621ZMNeovhi2mHPfJ7ijR4Iql2iqdLxCDwrDUgb2tsNJu3rPPdDMe2/1a7/h0TqVSJ4jIpfURAk+ylrF1HrdF9njSfuCJ5EJO44WiXB8XiaCljgPCfSthvwCXxH8TlwnyHvvoGQuP4gbbBgCkh5cAJPGOyXiyxxX2VpfSzB/YdD5XEPqRv5Er9ROSKMMA8fsJY5EXEPfksx1vpuSGDhRSFtTPbBmE67IsGJ0U0igxSRPC/GeG8/qRtkcV751wgI03vDgCCQ5HKNSRuZg1E7uUOa/iFg/0EI8IqcgDP0QknmBHy0nwWfpoh7MOq8JCZxX+CHMz2ZsPAQh7zUwk2bVG9AN2Bu+ioGSQgb8wmfeV7GC10RXqoDYXcZfBax+0i7hoMNERGLyDwyAmR8lsKbJSF1o+zpkCVrAOYOZBBfysEejE3ixonySgTShhH/J0tJG46oNLzxOFi3xnAfp/Gx3++5T4owgAT2siFpv8mCDkgbDsMXIoy7U55X4ksC0e/2eA3mmtslmys4XGGO+igC8V5g8s+FqQQhR1Fsartdqp5tGOWJDHvgLXNJWCbopmq95STNJfgtPaQIgkO2JqYlVGM85iL/NWRe3Q81TODUbDb47HYfE8Lxks7bbj4wTaO1kD39btamEqgPJrGmDhDm95bFm1fS1w+OjZ9Z4kV8/DoyT9mNmp4Mp9RffQ4cOGN+UG72BMwLKw3Itl52LDRd005EW/h+UVR3aItve0jkf1BBmu8aasrryDxHBeS/IQuJe4If3IS0p7HkaDNpXyFZ6NQRmqxwuCKilgKbapSiV4ga8UuC6qf0KyMWBRiXRQakDQnvqxrS7opA2jv5AI9qb/WSukfJv6Jk0QGz7vdkXnV0cwQtKRJxQ+W+bvA5ZwFusnjzDpPM1gV1trPm/9pZxTWpSDbOh26U+FKN6ZajnzXUewYHJcLJ3Dbo2x6SbhggcutwTL8JZrv3fMwlZe4X20LmZqaxKFqzqakERvYXDUn7G7LTCenGqwJig1PkF/LORrvHZGDimFrF80GGC+//yNu3gR6ZvypXT9GwTDZqE89Ra83YP0tmDsAkiiBBEHjS40D6hspTosILqCmzxHAPbmLrQ+ISN+xzJtEJUMlsDfdzo0cojZ4k/xTieSyNmaQZI7vSNKJlJmsCXkB9jJukcLQPkxT2BSzR1cZUv21I2tspmcp1flL3UQvmdz4fUCaJZ06d8MSJe7Ohin2M7Eld9zv0tgnNES+FVNmwcEwcQe+QeeiWmkuCcZTMavYsZNKutaHCpt1lOFdJNrvo9DAZQNOwwd/RynvQJNrkbam0LiXuLjKr6buHctTaPkNAUwnrhW4SbjTYvL82WDjjJAtJdGNVgJTxJZXbxhnmUHzbcFyv1RlbrJ03DO6HMNLTlGwaOu5dr3LghCVSt3PYXjQYZ8zrjqSIG9KiSfwhTvqDytkPI0gkWVenDVSvpYZSVb/h5sIC9QtpghRx3cK5nuDD8GODz27yOYB3kDz8DGr8V5ROKzE8+wIPc8CoJXOPQ/KAwefOkyBCSELcuwwWjVOsxnYMCiUvaCem3WS2kFmM9vtk5lxRc8lUwHEIx323wWcRoueVYHXFYCxxH/iV0oqldmp71GKEyh0aWM/CsNrgc7vCHnBho0oQbP688CEgLf5IKTbQzLH0tZzHMAxgJ0T68ayI5IFIkwEDEj5r8H2oFHfPZx38SflqHpsUINjACWkSI3+YvMulYg2hKqM07hfp2bszWO9P06N+E9uijEZ4zqT9ZfeEsVA0hJwIEzvdZ0raD3FUQNpOYlLUEqxQs/9hIGmdMzRtbAwgs8sWzDMOriUGpD2D53ynz3u6DEh7VQak7Sd137FkHTjA3jMxUaHYXKAzNwxxdxlIblDVXyIFpA6JXwAbLa5O9c18eEqxw+AztptLbjNpS6NzcMDCnu2XjAbVeZ/wvo1kEBscI9AFqV7vyeOW7f82kvd/RbDA+1FNJVC5EVgvsX02sUo0i+zGOJsrwsYyI5zoxwRMClDdpaUoTVqQPeVDXCCof5V0TZg2w4YJCeFjCwPed4jkQQGIbFid8bjA2baujjT+K5llGhaZBxYZCL++jZeDJO4ukjusPlLSfogPBaTtdOVOwg580mA+IOFJw/hsbLCAA9GkGTZis2+EIG2MmzTaZ0MOSJtY426v+T+bQgPde/tTkocIfmBqKhnj016CFSHUZhvQT/5NdWuxn5Lr+AMNSBqeBHuktHiRbeaSbqpGj0jLGbcyaS8I+R2SvpE4oA/naIzqmQlsCg10APPn6wYay20T4j4lXDTOyWI7pAktmNSknUhv1pF+giCNQZ5P/vZ5hLM9KMkcf0xmSUsYn2sUrg3WhMEc7KVoLbbixuo6WoVtoYFuS0RTXHuwwWfRSFUaeMWbSfEuhXdSQUL6nJJvrIr7SxNzYJOTRgHY0GABEVYmzShAYmjnFTapChqKJJQMpJDHMsn1tL3jFvLCLKqfWRq0BoYkxA3bnaS+wByDhyojpG3IPkrxsIO0J03qkW6wDQGHUJHNJdCkXiUzG20nycsRSM2Ue8m8K0uSwJqrbXVnW2igA0TbzROuuS4JcZ8wUMVtd0hK25BhQaddv0Vq674slPrmBhwOiBG/V9C5XWN48MAMJq0T0kuy0MJGerRee56wX6Xuh/CrouiFrnqcUo+4IZpfEaoANneycavQYUkOwfmfZfCMsDdKaiNPkLwSXdmclLDLLxfuCQdHWKuSolv4/p05lbYdLOOrViiwsUsSYvYliYmI6rsQhrilFd3gLZ1DdgOmJdM2ZHmQfoJIRLIeXgogkSIRt9Okot9AsjprKNCMkCyiZzYVo/Lm/jpCwVELuQJrQ2pWPhOGuM8IH2Kn5aSNGF5JY4mXMlZrF5LM1j1E4VP2HQ3Mr+76LYrQay9F4BkXGUiF+P0XyTwsFmFgkhDDt6gYZsrFddadjaGBjlYqEXYvU02uQC1xw64m6VoCsb+J7MY2Ch82CRvwyRw885vC958zWJhx3i9t4KBaQrJwWGd+vyPzyo6AJPJmGsnjg7PEgTraRbeFnDGTZD13cZBf8CNu6YZ6nezGOeFGC2pDlhYQmiYx1ZwnmblkRYBEkWfixm99gUlFgrDZkEHam8SWvrRggtNCejSr87il3CEtvdzjR9wSM8mCiIu06IDTQFKQqZPyU3hrGsnMNSAUSdW7oH6UsB3nscECHLEvk1k25A8UPbQTKrGkxdmmAu6bWlu3raGBrUL+vOpel27ivkWyUK1OshubKXyNCkhjR3L2/FIb7KWY7/9lzsYDtSG2kTwbElLv91QNyYsKyRjjcFxfwH3TXudQt1XqlnDoGJP3I8Qt3ZjryV6cEKq0iOOdnbPfINWYpOsjSI3PSz9KPAP6OL5v8FkQ0Dcxze2EUPKEA7iouRPv1dE0bAwNDEpY89yDbuKWRA60kr3p7VhgkpRneP2X5fS3SEw30MgklSKD+lE+ILPY6DgBs8QrJE84A+Df+QfFFz89QLIqg5sKvIfaagS/CUulbviBJI7s67XEPSEk7tVkJ5wmsGFDmCDV5rlRsnQee4Xvz3N0CeZwJZnVT4HEeJLirTEjsfnjezsKvpf214xfN9kZGrhWKDwNu4kbp73EIbPUUuI+KthgThuyPGe0QXOSRJdIHYrt5F++VBqzHBcQ5rfE4CDCnH5K8iSmMJA4f9uo+ElvLTVSt62hgdLQ0V43cUtPexuJW9qGDNlRC0u2cEya4G4MkHovpPx7YeoyaaTsdExPKktRsgeXlWRP1UrdNppLmoXCU7+buCUpvR05lyKTAGyhr1H4UK12Kk61RAkJ3CZZuFoQcQNpmktusqQt7bwNJ+C3lJxDHvZ+if+gLIITtDG3rd7W0MDFwjX8X+K+ZeGikUDahuw0JdOGLAlItIJxkqerNwd8xyPpvAkBoVTPkzwbEmF+3ye87iVjWjaNd69K3aI9eMsh7nE+6ZI4HcqAPLUhS0pVk2RzDhh8x8aAwyDpfpQIPUQ25KjB2CAbsi3h55MQdwuVq4Qyxriz5iC3LTRQ4miG4DHcwIMkUX8XWDSgcJzBRJKnNmRJQEJMdwzuv56ya7AACe4Vkpt42lnSnp/C+Etqb7eWcJ+959JQbQwNbCVZhNKdBuHphpN+nkUD+q6AqNJqQ5Y1cZtIQ00B6j085fcT+F3oVr/D4HOw+1+jeLIhw+CecJOXDfNqpO5usis0cKaQV+82CBdNc0GJyQSwiea1DVkS6mpYDBp+R1A/yjhT4HE/lNr90OCzSBr6JmVzhGRMy6rxuqVuG0MDJfM62KCLpi6wcDYL3p9FG7KsFo2pZJxWgwWYt9aRrLGFA5S7/YLSdyxL9mBZNV5oZe5qo7aZSyTC09B0A4m7rIBqBsdbPy+ae8KN92yBf7skCQaha9sMv2eWz3fdZCkZGh1s4nOYpCSOU0SnvEhmlQdRKzqLEE48s8T+Pr/Ee3APH7hYI05o4CqyA5LyvA+Je9jyRQObLQoMmWbxnSXzbid5AYjjfwTv32so+UEzednndUdK7qojZcJGjvTg1R6SOzQBRI5IwxVxUCB9fUtGYy/ZfzOo3G0Cm1hz/cQlddtC3BJ/yv0G4cIp26LBwniK1XQT0l5fAtJ2CEEi2T4w/B6QrkklPWg/Z5j0/0rVxszudQvp7DkD0sYB8FWGpE2W77962E2T/gWbQgMlEveIlLjnlmigUH95B8nDxNwn5MkSjYfEGWdaXyQOOzZMWnAaP85zeJVJ+57wPiDBb0lW5EeJOx3J0/EX2RQaKNl/I9NJFnYzuySDdIXM6i+78VnJNpJo4QjvjaQBOAz7Ynze0QhzCOkGkSN5CK2bSGiOigzYuk/wHHdTNekIDvS2EnFQJMGpQbhwyhAKOEFmsb1ubKHylbaVbAjJYe90S+/Lye8EAdyg/MRDS7SXGWQH5tCk+QpCApzhz1PVrHmppL9Zsv/GG4SmgjKc+LCb3Yl4j3ayG2EP+15DM0ZSWMiknaeQunFS1AI+lHpx/XBAm0YNlQkPJe4xy350HCd2TwnHJW5tCk6ldZSfDDhEJ1wjO+zERQd8F0M+QsM+y8dnxnRWv2w69e/EcI/rfPLDkdLMag7sbzOpuCnJcZrMRpm0h3Py21A69LOcmhqmkaKepuaHPl6vZRo7iQA9czqTTVjiHinBAD2I4R4YL78GALOZ0JsKRO5xmszQfPdWTn4Xen4eyfF6TNIpXFSEESLKduCJhOfpTChhF0QZCr+kYafHeN4k/xreeSN3ydz6bRqYos7kZK5RPybv1RqTcgoXGSjy5VcxsaOEv1kU3TddSGRlWDhtlI8Ih7yRu8Ss4Uc2ebE/4hm3FGA9zrRs/4UBMnO/9NCOp1Fxuksltf/mSIn7fgkGCMWOTkS8x1LeRCDfJDO70iT3OBJBELEzkJN5HuF5zvsml2asQqUue1gg1jHi7F+rkbwxVkh6W1HC3ywx4T4kblFxk5KoYW0RCAaL52LNgXefx+YuE8YtJvZbBSH3JpLZ2LyI+1TO5hrPs4fybQ+V1vzGOrOhJj5Cbn+iatE3kDfqJC2k8ibgSEJmHxK3qLhJCQYImxi2TxQkmjD4/Ed1tJQmvtoDNtz9HJN7WHgVOoJXPG/JEajaCLNYntvtOXViHgh+ky3NTGbw3NnQLlFC3E1S4i5LwReoWoepWqxIAtRr7owgWTUakPsYawcjORl/HHbr6kjuNymfOQFXCrDxJcSNcFYbG3aXHaKa7NNJVqr1TokG6i0mnTdCEA6k9AOsdietNocld0z0cA25j6YwRyDuCwWa5/4CPGMzhe87aVsjXVsg2bcPiVvSHOEek8TMkgwWpGfYvHewml9rOsHvRE0SdG5vyckzm5D7bZpsFJEGuecJtwrwjJIORAOkKBuGSWaGbp4uXDQTvBEWlmjQYC/8mn8bpLM+159trJYWrSxAGHJ/wAfxIB9cQyXdFEX4XRLhSYm7fJDMKbT/lr/8p4LKXx4TLPBPqdj9FSW47yJxZ3Db+eDqoPS6gCcJHEr/S+GjStbyuBRJcv835btGCdbYIsH7fyd7HJQ24OPK9Y5AO/t1uouMwkYE9FlE3IgUeYkv9+/HRvuSD7tGJvGOgmoiAyQLBTxWQxqO5L4mx9LtRM7noJUlqbDPiVo5G0lRFvQJ1wo5xN0mIO5eywfZIem3XKo4Bh4VA/e5xrOjIFK5ZNHMrSPpzeWrMcfEnfdyxPClwIdyS7AHlbjLgQkhp3a4iVtSXxrSFTzbzTrmD9FYRyp3zCu1UrljYskTrkoXjQfyaoqYRcVwpncIiPuybrvSABqvJGv5oVbfwP+Qxrle0fEOHFxI5F9QtQb0EZZUEUa3snItp6pNC53ls0xqGhMSt58pKK8HeVEEDEls9j0qRrSMIl4uneYI2dNd6i5UtbCxpDCrbNcxjySVI2EFtsoeJu9Gl0SellTeS7KImaUBpN6V00O0CJAKT9iDrbq1Cg9JU5YOR3ucXrMpwxI3pDRk8s3WcTdGO001UcHJ18dSudMEt81F5k0JPIOk6/qsgAMlr4V/ipJlCI0MyXBhM+iwTvboNio07pKsDMV/+9w21PvPkCr2eR33WAGtB6F2ByvXt3zBAQUbOcwqz1eulyvXJyypR42UGCNZBuRS8i/WNI8PmjwB0smqAq0BybP2kWZRFh3nhO9fWo+4l5HMiXNOxz1xgAhRH+UsVW3liKGHzRbOKRTJgq18F6tb0oa8l0jWUSXMwd6Zs/HDMxepx+TqhDe+Il/4UvBex5T6EE4CjoM1FD4sENLX7wmp8IrwgJMKtup+Ju+5NNVW7iUlv0zh7Wu4x28UnPSBg+Bxyk+LrRtUrG4p0IIeE4wfDvFfSftWFhGIJnlG8P7tLLg9InEDLwluBFW9S8c/c7SyVP65SypvYal8JV+7+HR3pPJhkpVg7aBwmXrweezMkfRatBZXM4V78C5paGBRIa1dv9b9j1qJe5hP/LCZdI0sdc/Qeci9VA67eB+Tt1NVMCwOCwgZUuPTlK39FevxFypmroFjBpMcUBd1iRcKo8yzYVvRQYv+061Z1UrcsAdKHCRDJLPTKLKTyrezVI6WUJI2SVgskiw9SI0nM1bfD1NxE8RWkKydGTSn27rEC4VukvUP3VS7nxo83iTBIZ2HQuEMyVLT20ju4IOj+2BGvw8Ngt8s8Pxgg3YKP/OhLuvCANaMj4WfeWQ91JpKANiu/ybc3F+RzDanyAaY27+TzIyxgaqmlQmW3B3HZ5gGHGhScSLF34dwKYRRFt10h/l5Ukj2v5KWoSgCYNveKng/9tqNMMQN7BOe4pDKfiT1bucdiL1fJ3g/HJK/ueYVKjns5LCXI1FkNk2tjDizzkGxLyWtbD1VTUFlafIBp7IkHRoH7Be6xHMvbeNAloTuIhR4Y1jixo2fIFmSBzbNJp2bUknbaNe21+f1ESZyp9QtFmaLi8wdqRx+kM2UXEMKZBAeLNl8XWHyluAnyl8SlGISkrrbgGfwhxdxA69R1R4qkc7gyZ+l85NLnGDTRVjM5EUzV/g9t5nEe2uk8pmsJsZZHAmmATgi15Z0zhaRrGcmxvl71XxziWGWtiWVAA+SR1kDP+LGBnta+HC7K9dHOkelWDSobngkhu8eoant4PqFz+G3qHdSuUNRETGyRvgZmzpUFQlSfw8Enj+8BGE/4iaSZVISn/Q/qrpW+EUDMoRtO6ms2DtM4ufZJGBiQvkHVe3aZcezJCtENJs1X81ozg/gE1oi/Mx7VG1STibELU3LBFDx7gdV13IDmCyeF34G4XTHUnzGPtbwhlgix+VEKSGSpYseNbHY4owzkbrX88GmyB5jfPhKYu0RfvtP8gnDDSJuQFLTwsERmmztpcgOMFPA3CXxYkM1+zVnEls9pw5s5v+m8kSRxCl1A19TeW3/ZdZ2gUBzV0OImxwkuR1xHxWnA3iZsY3kVQN351DN3uAhyVywZB4PG3xms8HcK+LFBQPShpn59aA3hSFueO6lhYOQzvkKybqHK+IFIoKk5QiaKD9FotxAxFK9glG21IRHYpG0OTAcwOt0D2YGmP22GnwOJspAM3NDyJvtNZDCYB9/W+cvE9wlWeifA0QE5TWcc72HRDNmyZxiQ0tLD9zUPZgJkDPxKslqAhEfzqFa2IUl7llkFuYHNeGUzmOqGGFJa1T4uVUGUl3WxG2TuQSkfcBwD2rDhXSxg2RNuIEZEo5tENx4I5m1gYLkd13nMhWMM2lLk1xmUbpRJCaY5yGN9Fg0v9tJ3lSYWGXv1+2RCg6RWX0e+BJDWzUahDf/zECVBpmsoXgz5hTeG/SqweeKUga1ntR9iewxlxAfsNJggTHeg9qjMlnA5/KuwedQylfkW5ISN06ETw3V9+W6cBI/6c8YfA5k+HpBfiNiu6fVISWbGle3kZnZEvZWNGi4r1slEUCjedXgcygp8bn0Qw0GX4RCUlsMF85yXTiJ4JThSQ/zw8kC/U6v6JIey+b7LTIro3yX9+CQbplY0ceHoonmBytGYxrE7ahrrQafQ1zpSl04seIomYUdQXI9TcXqgu5oCLVAu69Ry+Ydc2di3rrD5K0x3vHgKnOaSf0dZCgbJUmZEjey1ZBSO9vgs0j9XEJqNokDH5B5uBcSbZYV8Dd7mUsuWDb3s3kPzoywB9XvFA1OOQIToQGCr3FBvoYID72AxXwTgLSfI/V0RwFSwN83/CwI+0BBf7eXucTG3qdtZB4NBIn7earWslHIgfW2jszMI/AVfkMRyjU0RHx4qK2mNUke8MK5rGtABETpwDTyseHnoV5/RcUuAlYvBR5VBkcsXA/wN5mWcYV6D9tsj24rERAI8CqZZaXOZtKOVFaiIYYfEaWQvROmdFTXQijc58PONKkJ9uyLZGbiygNAzLsq13GPtYTGA/9buaZT1Y47aMm6OBZxD77M2tuEbjFfwCTyIlUDAUzGagYLTa1RHyRMdcCwkw9CiWL6gO3ydIFJJWnACfIKydNoHUAtu0bV3pBFxVbhoQUy+9qS9RHHHkRyzxektbzrAf4AmEai+OY+I7OIvEQkbocUIMm1RLgHYnFR+7tP10hd1WxlBNJ2TvqFBR8HaWnTQYvWyExWwaNIc8hwRhngC7rlpuAMa3NRSHtvXKQdJ3EDCCT/jqpOS1MMstRwSNfKQ8A08kIE1cwhbXSKXlWC8ZihS8IXc3gPRhGghtkcgHobI5aP5yDvv9coWnYu+kbGGgzQEPMPbYyBvMeZqJ4hu6NOUO8AXdmjOG8d0i5Li6+5Cb+/LGP0HUW3ox7n9XfGwjGEkATn/1MUPXgCpH0w7gdsSOBHwz52LQa1fIDVk60UT3PZIpkD8LtRnCtKUglIu2x9GfdQePsrQh4Pk52AAHWDosfpD7G0aVPMdz8Lje9Q9Bo4+5MgbSAu52Q94Eevo3jC/WbzAKCmRll7WSKuFgk1cZTBRSEw+ByWlvhwq5Uy55GinvaKTjhxlHWdxvvPpDZ/EYCMUkTWfBnTWKGUxJakHjZJ4nZUjm0UX03uZl44m0pE4JBqnFKQcXQrgbQFJ1Wb8paC8Q6Zx/3XI6VNrP0sKMHY3OaxOUPxhENCaEJkzuokHzpp4nbwAZln+dXDfKqWQeyk/HZsCXPCf1K5uim+9lLtVI0eUelTUQvYrN+meGO1N/A+LGK0EtLVuyjeCBocZF+ncaClRdzEJ1pUu20tYELZyBJARwEWC357D5N13KnG2ESIg7eh67nCDMgFgM067gqdrbwPO8mg0l3KwlI3X0MJ7D+TfgW5J25n4JBEMpDAvefzwtnEf88Tenmx9FD8VeyclkdvkUIRDOQCbGaJMwms4D0IU0EeKk/eYakaeSJJ5IhM4/2XapPttImbaDLc75MEvwOq2ypeRIszWCyQaK7w5oCUk1RUDGz+iBxRe7ZCCpSZeIeS7QLfyvsQe3AppZMV/YD3nLP3kqz/DyftF1lwTBbE7eAyq20PEv4eqC4dPLitTHatMX/HAF83+XelUbIWEvYBKq6NX5E9BlgDvpPS90HAaOc92MyacXuE+2G/DfJ+u+n6dxp4nSXtTEp0ZEncAOxMOyib6mQLePE08YKaVrPAptVoCbdcz3yfF8i9FBe9W4o5HXHBKxQOELb7AWvA4xk9Q3MNASLz0+2rGXXts2HKtpQBnu1kRpp8bojbwVUm8Nu6jzyBhYyA/p1U3lh2RXbA3kOym9YK8t5/e/jKvPRCXogbQJgSQpYQNjii62QK4Og5RvlzuirKBySg7CPtUFW7/w5TjuLWG3I0OJAiYbf9JyWYcVQwwKFzjapZkEraijSAsLZfKtcRyndoXxqAb+wG779cJRvlSeKuBexYyGjqpug1A4pI2PupvCnrimIANu8zvA/vWLb/kKG9Iq8PmGfidoCoEzhOkBI+YsGCUcJW5BHnmcDLagOH3RrNXAqRCVoE4nYAzzJSVI9TuQrkI5wPWWfoG6jx2Iq8o5el8J6SCFKIzurkPTinKA9dJOJ2A6UXUfEMjpShgi6YZbxYUHZV27UpigaYUZCz0M1/FsmcOYf33paiCktFJW43LjOBny+ABACbGTLJ4ADSvn6KsgD77gJL4b053YcdvP+WUvQ65UrcCUjiWDjXc7KAFvAiWcaLRiVrhQ3o5Qv7ETbx4Yz23lIWlJZSgcwgNhJ3LZDSi+Se2/z3wQQXkZOB2c4XHByNuocViocRKQO8D2/zPsSfcZhXECbb4rpa6dHM59Kh7MTtpdbd5YWElHXHRj5BwVULnU4rs/hEn8MLp/QLRaFIAGM0NVt6gKbWCx+uIyk7e9DZe1bi/wUYAF9H6YpTaN8sAAAAAElFTkSuQmCC\"","<script setup lang=\"ts\">\nimport { onUnmounted } from \"vue\";\nimport { DOMSVGUtil } from \"@zyzgroup/core-web\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    canvasWidth?: string;\n    canvasHeight?: string;\n    borderColor?: string;\n    brushSize?: number;\n    brushDensity?: number;\n    brushColor?: string;\n    downloadFileName?: string;\n  }>(),\n  {\n    canvasWidth: \"400\",\n    canvasHeight: \"300\",\n    borderColor: \"#000000\",\n    brushSize: 4,\n    brushDensity: 200,\n    brushColor: \"#000000\",\n    downloadFileName: \"手写图片\"\n  }\n);\n\nlet download = () => {};\nlet unsubscribe = () => {};\n\nfunction start(drawContext) {\n  const options = {\n    brushSize: props.brushSize,\n    brushDensity: props.brushDensity,\n    brushColor: props.brushColor\n  };\n  unsubscribe = drawContext.drawMouseMoveLine(options);\n  // unsubscribe = drawContext.drawMouseMoveBrush(options); // brush 暂时无法转换为svg\n\n  download = () => {\n    DOMSVGUtil.downloadFromSVGString(\n      drawContext.ctx.toRawSVG().raw,\n      props.downloadFileName\n    );\n  };\n}\n\nonUnmounted(() => {\n  unsubscribe();\n});\n\ndefineExpose({ download: () => download() });\n</script>\n\n<template>\n  <div\n    class=\"hand-write-panel\"\n    :style=\"{\n      width: props.canvasWidth + 'px',\n      height: props.canvasHeight + 'px',\n      border: `1px solid ${borderColor}`\n    }\"\n  >\n    <Box\n      type=\"canvas\"\n      :enableCustomContext=\"true\"\n      @start=\"start\"\n    ></Box>\n  </div>\n</template>\n","<script setup lang=\"ts\">\nimport { onUnmounted } from \"vue\";\nimport {\n  useVisible$,\n  Timeline,\n  TWEEN,\n  type EasingFunction,\n  DrawContext\n} from \"@zyzgroup/core-web\";\nimport Button from \"../form/Button.vue\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Button, Box },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    easeName: string;\n    easeFunction: EasingFunction;\n    canvasWidth?: number;\n    canvasHeight?: number;\n    graphHorizontalGap?: number;\n    graphVerticalGap?: number;\n    easeDuration?: number;\n    isSelected?: boolean;\n  }>(),\n  {\n    canvasWidth: 180,\n    canvasHeight: 100,\n    graphHorizontalGap: 5,\n    graphVerticalGap: 20,\n    easeDuration: 2000,\n    isSelected: false\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"mount\", easeName: string, easeFunction: EasingFunction): void;\n  (event: \"start\", easeName: string, easeFunction: EasingFunction): void;\n  (event: \"complete\", easeName: string, easeFunction: EasingFunction): void;\n  (event: \"select\", easeName: string, easeFunction: EasingFunction): void;\n}>();\n\nlet drawContext: DrawContext;\nlet subscription: any;\nlet isRunning = false;\n\nconst start = (ctx, box) => {\n  if (subscription) {\n    return;\n  }\n  drawContext = ctx;\n  emits(\"mount\", props.easeName, props.easeFunction);\n  subscription = useVisible$(box.el).subscribe((v) => {\n    if (!v) {\n      return;\n    }\n    if (isRunning) {\n      return;\n    }\n    forceStart();\n  });\n};\n\nconst forceStart = () => {\n  isRunning = true;\n\n  emits(\"start\", props.easeName, props.easeFunction);\n\n  // 背景颜色\n  drawContext.ctx.fillStyle = \"rgb(250,250,250)\";\n  drawContext.ctx.fillRect(0, 0, props.canvasWidth, props.canvasHeight);\n\n  drawContext.ctx.lineWidth = 0.5;\n  drawContext.ctx.strokeStyle = \"rgb(230,230,230)\";\n  drawContext.ctx.beginPath();\n  // 上线\n  drawContext.ctx.moveTo(0, props.graphVerticalGap);\n  drawContext.ctx.lineTo(props.canvasWidth, props.graphVerticalGap);\n  // 下线\n  drawContext.ctx.moveTo(0, props.canvasHeight - props.graphVerticalGap);\n  drawContext.ctx.lineTo(\n    props.canvasWidth,\n    props.canvasHeight - props.graphVerticalGap\n  );\n  drawContext.ctx.closePath();\n  drawContext.ctx.stroke();\n\n  drawContext.ctx.lineWidth = 2;\n  drawContext.ctx.strokeStyle = \"rgb(255,127,127)\";\n\n  const position = {\n    x: props.graphHorizontalGap,\n    y: props.canvasHeight - props.graphVerticalGap\n  };\n  const position_prev = {\n    x: props.graphHorizontalGap,\n    y: props.canvasHeight - props.graphVerticalGap\n  };\n\n  const tl = new Timeline({ frameDuration: props.easeDuration });\n  // x轴匀速变化\n  tl.addTween(\n    position,\n    { x: props.canvasWidth - props.graphHorizontalGap },\n    {\n      frames: 1,\n      delay: 0,\n      easeFunction: TWEEN.Easing.Linear.None,\n      onUpdate: (d) => {\n        position.x = d.x;\n      },\n      onComplete: () => {}\n    }\n  );\n  // y轴 easeFunction 变化\n  tl.addTween(\n    position,\n    { y: props.graphVerticalGap },\n    {\n      frames: 1,\n      delay: 0,\n      easeFunction: props.easeFunction,\n      onUpdate: (d) => {\n        position.y = d.y;\n        drawContext.ctx.beginPath();\n        drawContext.ctx.moveTo(position_prev.x, position_prev.y);\n        drawContext.ctx.lineTo(position.x, position.y);\n        drawContext.ctx.closePath();\n        drawContext.ctx.stroke();\n        position_prev.x = position.x;\n        position_prev.y = position.y;\n      },\n      onComplete: () => {\n        emits(\"complete\", props.easeName, props.easeFunction);\n        isRunning = false;\n      }\n    }\n  );\n  tl.play();\n};\n\nconst select = () => {\n  emits(\"select\", props.easeName, props.easeFunction);\n};\n\nonUnmounted(() => {\n  subscription?.unsubscribe();\n});\n\ndefineExpose({ start: forceStart });\n</script>\n\n<template>\n  <div class=\"ease-graph-display\">\n    <div>缓动：{{ easeName }}</div>\n    <div>\n      <div>\n        <Button\n          stylePattern=\"outline\"\n          height=\"32px\"\n          padding=\"10px\"\n          @click=\"forceStart\"\n        >\n          开始\n        </Button>\n      </div>\n      <div>\n        <Button\n          :stylePattern=\"props.isSelected ? 'fullfill' : 'outline'\"\n          height=\"32px\"\n          padding=\"10px\"\n          @click=\"select\"\n        >\n          选择\n        </Button>\n      </div>\n    </div>\n    <div\n      :style=\"{\n        width: canvasWidth + 'px',\n        height: canvasHeight + 'px',\n        backgroundColor: '#ffffff'\n      }\"\n    >\n      <Box\n        type=\"canvas\"\n        @start=\"start\"\n      ></Box>\n    </div>\n  </div>\n</template>\n\n<!--\n  ce 中不要使用v-bind\n  color: v-bind(fontColor);\n-->\n<style scoped>\n.ease-graph-display {\n  display: inline-block;\n}\n.ease-graph-display > div:nth-child(1) {\n  margin-top: 10px;\n  font-size: 14px;\n}\n.ease-graph-display > div:nth-child(2) {\n  margin-bottom: 10px;\n}\n.ease-graph-display > div:nth-child(2) > div {\n  display: inline-block;\n}\n.ease-graph-display > div:nth-child(2) > div + div {\n  margin-left: 10px;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, onMounted } from \"vue\";\nimport {\n  ScheduleDependOnResult,\n  createTask,\n  deferred\n} from \"@zyzgroup/core-common\";\nimport { TWEEN, type EasingFunction } from \"@zyzgroup/core-web\";\nimport EaseGraphDisplay from \"./EaseGraphDisplay.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { EaseGraphDisplay },\n  inheritAttrs: true\n});\n\nconst defaultEaseDuration = 2000;\n\nconst props = withDefaults(\n  defineProps<{\n    easeList?: {\n      easeName: string;\n      easeFunction?: EasingFunction;\n      easeDuration?: number;\n    }[];\n  }>(),\n  {\n    easeList: () => [\n      {\n        easeName: \"Linear\",\n        easeFunction: TWEEN.Easing.Linear.None\n      },\n      {\n        easeName: \"QuadraticIn\",\n        easeFunction: TWEEN.Easing.Quadratic.In\n      },\n      {\n        easeName: \"QuadraticOut\",\n        easeFunction: TWEEN.Easing.Quadratic.Out\n      },\n      {\n        easeName: \"QuadraticInOut\",\n        easeFunction: TWEEN.Easing.Quadratic.InOut\n      },\n      {\n        easeName: \"CubicIn\",\n        easeFunction: TWEEN.Easing.Cubic.In\n      },\n      {\n        easeName: \"CubicOut\",\n        easeFunction: TWEEN.Easing.Cubic.Out\n      },\n      {\n        easeName: \"CubicInOut\",\n        easeFunction: TWEEN.Easing.Cubic.InOut\n      },\n      {\n        easeName: \"QuarticIn\",\n        easeFunction: TWEEN.Easing.Quartic.In\n      },\n      {\n        easeName: \"QuarticOut\",\n        easeFunction: TWEEN.Easing.Quartic.Out\n      },\n      {\n        easeName: \"QuarticInOut\",\n        easeFunction: TWEEN.Easing.Quartic.InOut\n      },\n      {\n        easeName: \"QuinticIn\",\n        easeFunction: TWEEN.Easing.Quintic.In\n      },\n      {\n        easeName: \"QuinticOut\",\n        easeFunction: TWEEN.Easing.Quintic.Out\n      },\n      {\n        easeName: \"QuinticInOut\",\n        easeFunction: TWEEN.Easing.Quintic.InOut\n      },\n      {\n        easeName: \"SinusoidalIn\",\n        easeFunction: TWEEN.Easing.Sinusoidal.In\n      },\n      {\n        easeName: \"SinusoidalOut\",\n        easeFunction: TWEEN.Easing.Sinusoidal.Out\n      },\n      {\n        easeName: \"SinusoidalInOut\",\n        easeFunction: TWEEN.Easing.Sinusoidal.InOut\n      },\n      {\n        easeName: \"ExponentialIn\",\n        easeFunction: TWEEN.Easing.Exponential.In\n      },\n      {\n        easeName: \"ExponentialOut\",\n        easeFunction: TWEEN.Easing.Exponential.Out\n      },\n      {\n        easeName: \"ExponentialInOut\",\n        easeFunction: TWEEN.Easing.Exponential.InOut\n      },\n      {\n        easeName: \"CircularIn\",\n        easeFunction: TWEEN.Easing.Circular.In\n      },\n      {\n        easeName: \"CircularOut\",\n        easeFunction: TWEEN.Easing.Circular.Out\n      },\n      {\n        easeName: \"CircularInOut\",\n        easeFunction: TWEEN.Easing.Circular.InOut\n      },\n      {\n        easeName: \"ElasticIn\",\n        easeFunction: TWEEN.Easing.Elastic.In\n      },\n      {\n        easeName: \"ElasticOut\",\n        easeFunction: TWEEN.Easing.Elastic.Out\n      },\n      {\n        easeName: \"ElasticInOut\",\n        easeFunction: TWEEN.Easing.Elastic.InOut\n      },\n      {\n        easeName: \"BackIn\",\n        easeFunction: TWEEN.Easing.Back.In\n      },\n      {\n        easeName: \"BackOut\",\n        easeFunction: TWEEN.Easing.Back.Out\n      },\n      {\n        easeName: \"BackInOut\",\n        easeFunction: TWEEN.Easing.Back.InOut\n      },\n      {\n        easeName: \"BounceIn\",\n        easeFunction: TWEEN.Easing.Bounce.In\n      },\n      {\n        easeName: \"BounceOut\",\n        easeFunction: TWEEN.Easing.Bounce.Out\n      },\n      {\n        easeName: \"BounceInOut\",\n        easeFunction: TWEEN.Easing.Bounce.InOut\n      },\n      {\n        easeName: \"generatePow(10)In\",\n        easeFunction: TWEEN.Easing.generatePow(10).In\n      },\n      {\n        easeName: \"generatePow(10)Out\",\n        easeFunction: TWEEN.Easing.generatePow(10).Out\n      },\n      {\n        easeName: \"generatePow(10)InOut\",\n        easeFunction: TWEEN.Easing.generatePow(10).InOut\n      },\n      {\n        easeName: \"4 steps\",\n        easeFunction: TWEEN.Easing.createStep(4)\n      },\n      {\n        easeName: \"8 steps\",\n        easeFunction: TWEEN.Easing.createStep(8)\n      },\n      {\n        easeName: \"12 steps\",\n        easeFunction: TWEEN.Easing.createStep(12)\n      },\n      {\n        easeName: \"16 steps\",\n        easeFunction: TWEEN.Easing.createStep(16)\n      },\n      {\n        easeName: \"Noisy Exponential.InOut\",\n        easeFunction: TWEEN.Easing.createNoisyEasing(\n          TWEEN.Easing.Exponential.InOut,\n          0.1\n        )\n      },\n      {\n        easeName: \"Noisy Elastic.InOut\",\n        easeFunction: TWEEN.Easing.createNoisyEasing(\n          TWEEN.Easing.Elastic.InOut,\n          0.2\n        )\n      },\n      {\n        easeName: \"Noisy Circular.InOut\",\n        easeFunction: TWEEN.Easing.createNoisyEasing(\n          TWEEN.Easing.Circular.InOut,\n          0.1\n        )\n      },\n      {\n        easeName: \"swing\",\n        easeFunction: TWEEN.Easing.swing\n      },\n      {\n        easeName: \"causeSeizures\",\n        easeFunction: TWEEN.Easing.causeSeizures\n      }\n    ]\n  }\n);\n\nconst emits = defineEmits<{\n  (\n    event: \"selectedEaseFunction\",\n    easeName: string,\n    easeFunction: EasingFunction\n  ): void;\n}>();\n\nconst children: Record<string, any> = {};\nfunction setChildRef(el: any, easeName: string) {\n  if (el) {\n    children[easeName] = { el, defer: deferred() };\n  }\n}\n\n// 初次加载全部执行一遍\nconst schedule = new ScheduleDependOnResult({ concurrency: 10 });\nfunction onMount(easeName: string) {\n  schedule.asap(\n    createTask({\n      fn: () => {\n        children[easeName].el.start();\n        return children[easeName].defer.promise;\n      }\n    })\n  );\n}\n\nfunction onComplete(easeName: string) {\n  const child = children[easeName];\n  if (child) {\n    child.defer.resolve();\n    delete children[easeName];\n  }\n}\n\nconst selectedEaseName = ref(\"Linear\");\nfunction onSelect(easeName: string, easeFunction: EasingFunction) {\n  selectedEaseName.value = easeName;\n  emits(\"selectedEaseFunction\", easeName, easeFunction);\n}\n\nonMounted(() => {\n  onSelect(\"Linear\", TWEEN.Easing.Linear.None);\n});\n\ndefineExpose({});\n</script>\n\n<template>\n  <div>\n    <template\n      v-for=\"ease in props.easeList\"\n      :key=\"ease.easeName\"\n    >\n      <div class=\"ease-graph-display-wrap\">\n        <EaseGraphDisplay\n          v-if=\"ease.easeFunction\"\n          :easeName=\"ease.easeName\"\n          :easeFunction=\"ease.easeFunction\"\n          :easeDuration=\"ease.easeDuration || defaultEaseDuration\"\n          :isSelected=\"selectedEaseName == ease.easeName\"\n          @mount=\"onMount\"\n          @select=\"onSelect\"\n          @complete=\"onComplete\"\n          :ref=\"(el) => setChildRef(el, ease.easeName)\"\n        />\n      </div>\n    </template>\n  </div>\n</template>\n\n<!--\n  ce 中不要使用v-bind\n  color: v-bind(fontColor);\n-->\n<style scoped>\n.ease-graph-display-wrap {\n  display: inline-block;\n  margin-right: 10px;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { onUnmounted } from \"vue\";\nimport {\n  useVisible$,\n  Timeline,\n  TWEEN,\n  DrawContext,\n  type InterpolationFunction\n} from \"@zyzgroup/core-web\";\nimport Button from \"../form/Button.vue\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Button, Box },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    interpolationName: string;\n    interpolationFunction: InterpolationFunction;\n    canvasWidth?: number;\n    canvasHeight?: number;\n    interpolationDuration?: number;\n  }>(),\n  {\n    canvasWidth: 240,\n    canvasHeight: 160,\n    interpolationDuration: 2000\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"mount\", easeName: string): void;\n  (event: \"start\", easeName: string): void;\n  (event: \"complete\", easeName: string): void;\n}>();\n\nlet drawContext: DrawContext;\nlet subscription: any;\nlet isRunning = false;\n\nconst start = (ctx, box) => {\n  if (subscription) {\n    return;\n  }\n  drawContext = ctx;\n  emits(\"mount\", props.interpolationName);\n  subscription = useVisible$(box.el).subscribe((v) => {\n    if (!v) {\n      return;\n    }\n    if (isRunning) {\n      return;\n    }\n    forceStart();\n  });\n};\n\nconst min = 1 / 6;\nconst max = 5 / 6;\n\nconst x0 = props.canvasWidth * min;\nconst y0 = props.canvasHeight / 2;\n\nconst xA = [props.canvasWidth * max, props.canvasWidth / 2];\nconst yA = [props.canvasHeight * min, props.canvasHeight * max];\n\n/// start === end\nconst xB = [...xA, x0];\nconst yB = [...yA, y0];\n\nconst forceStart = () => {\n  isRunning = true;\n\n  emits(\"start\", props.interpolationName);\n\n  // 背景颜色\n  drawContext.ctx.fillStyle = \"rgb(250,250,250)\";\n  drawContext.ctx.fillRect(0, 0, props.canvasWidth, props.canvasHeight);\n\n  drawContext.ctx.fillStyle = \"rgb(200,200,200)\";\n  drawContext.ctx.fillRect(x0 - 3, y0 - 3, 6, 6);\n  drawContext.ctx.fillRect(xA[xA.length - 1] - 3, yA[yA.length - 1] - 3, 6, 6);\n\n  for (let i = 0; i < xA.length; i++) {\n    drawContext.ctx.fillRect(xA[i] - 2, yA[i] - 2, 4, 4);\n  }\n\n  const tl = new Timeline({ frameDuration: props.interpolationDuration });\n\n  tl.addTween(\n    { x: x0, y: y0, old: { x: x0, y: y0 } },\n    { x: xA, y: yA },\n    {\n      frames: 1,\n      delay: 0,\n      easeFunction: TWEEN.Easing.Linear.None,\n      interpolationFunction: props.interpolationFunction,\n      onUpdate: (object) => {\n        drawContext.ctx.lineWidth = 2;\n        drawContext.ctx.strokeStyle = \"rgba(255,127,127,0.9)\";\n\n        drawContext.ctx.beginPath();\n        drawContext.ctx.moveTo(object.old.x, object.old.y);\n        drawContext.ctx.lineTo(object.x, object.y);\n        drawContext.ctx.closePath();\n        drawContext.ctx.stroke();\n\n        object.old.x = object.x;\n        object.old.y = object.y;\n      },\n      onComplete: () => {}\n    }\n  );\n\n  tl.addTween(\n    { x: x0, y: y0, old: { x: x0, y: y0 } },\n    { x: xB, y: yB },\n    {\n      frames: 1,\n      delay: 0,\n      easeFunction: TWEEN.Easing.Linear.None,\n      interpolationFunction: props.interpolationFunction,\n      onUpdate: (object) => {\n        drawContext.ctx.lineWidth = 2;\n        drawContext.ctx.strokeStyle = \"rgba(255,127,127,0.5)\";\n\n        drawContext.ctx.beginPath();\n        drawContext.ctx.moveTo(object.old.x, object.old.y);\n        drawContext.ctx.lineTo(object.x, object.y);\n        drawContext.ctx.closePath();\n        drawContext.ctx.stroke();\n\n        object.old.x = object.x;\n        object.old.y = object.y;\n      },\n      onComplete: () => {\n        emits(\"complete\", props.interpolationName);\n        isRunning = false;\n      }\n    }\n  );\n  tl.play();\n};\n\nonUnmounted(() => {\n  subscription?.unsubscribe();\n});\n\ndefineExpose({ start: forceStart });\n</script>\n\n<template>\n  <div class=\"interpolation-graph-display\">\n    <div>\n      插值：{{ interpolationName }}\n      <Button\n        stylePattern=\"outline\"\n        height=\"32px\"\n        @click=\"forceStart\"\n      >\n        开始\n      </Button>\n    </div>\n    <div\n      :style=\"{\n        width: canvasWidth + 'px',\n        height: canvasHeight + 'px',\n        backgroundColor: '#ffffff'\n      }\"\n    >\n      <Box\n        type=\"canvas\"\n        @start=\"start\"\n      ></Box>\n    </div>\n  </div>\n</template>\n\n<!--\n  ce 中不要使用v-bind\n  color: v-bind(fontColor);\n-->\n<style scoped>\n.interpolation-graph-display {\n  display: inline-block;\n}\n.interpolation-graph-display > div:nth-child(1) {\n  margin-top: 10px;\n  margin-bottom: 10px;\n  font-size: 14px;\n}\n</style>\n","<script setup lang=\"ts\">\nimport {\n  ScheduleDependOnResult,\n  createTask,\n  deferred\n} from \"@zyzgroup/core-common\";\nimport { TWEEN, type InterpolationFunction } from \"@zyzgroup/core-web\";\nimport InterpolationGraphDisplay from \"./InterpolationGraphDisplay.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { InterpolationGraphDisplay },\n  inheritAttrs: true\n});\n\nconst defaultEaseDuration = 2000;\n\nconst props = withDefaults(\n  defineProps<{\n    interpolationList?: {\n      interpolationName: string;\n      interpolationFunction: InterpolationFunction;\n      easeDuration?: number;\n    }[];\n  }>(),\n  {\n    interpolationList: () => [\n      {\n        interpolationName: \"Linear\",\n        interpolationFunction: TWEEN.Interpolation.Linear\n      },\n      {\n        interpolationName: \"Bezier\",\n        interpolationFunction: TWEEN.Interpolation.Bezier\n      },\n      {\n        interpolationName: \"CatmullRom\",\n        interpolationFunction: TWEEN.Interpolation.CatmullRom\n      }\n    ]\n  }\n);\n\nconst emits = defineEmits<{\n  // (event: \"click\"): void;\n}>();\n\nconst children: Record<string, any> = {};\nfunction setChild(el: any, interpolationName: string) {\n  if (el) {\n    children[interpolationName] = { el, defer: deferred() };\n  }\n}\n\n// 初次加载全部执行一遍\nconst schedule = new ScheduleDependOnResult({ concurrency: 1 });\nfunction onMount(interpolationName: string) {\n  schedule.asap(\n    createTask({\n      fn: () => {\n        children[interpolationName].el.start();\n        return children[interpolationName].defer.promise;\n      }\n    })\n  );\n}\n\nfunction onComplete(interpolationName: string) {\n  const child = children[interpolationName];\n  if (child) {\n    child.defer.resolve();\n    delete children[interpolationName];\n  }\n}\n\ndefineExpose({});\n</script>\n\n<template>\n  <div>\n    <template\n      v-for=\"interpolation in props.interpolationList\"\n      :key=\"interpolation.interpolationName\"\n    >\n      <div class=\"interpolation-graph-display-wrap\">\n        <InterpolationGraphDisplay\n          :interpolationName=\"interpolation.interpolationName\"\n          :interpolationFunction=\"interpolation.interpolationFunction\"\n          :easeDuration=\"interpolation.easeDuration || defaultEaseDuration\"\n          @mount=\"onMount\"\n          @complete=\"onComplete\"\n          :ref=\"(el) => setChild(el, interpolation.interpolationName)\"\n        />\n      </div>\n    </template>\n  </div>\n</template>\n\n<!--\n  ce 中不要使用v-bind\n  color: v-bind(fontColor);\n-->\n<style scoped>\n.interpolation-graph-display-wrap {\n  display: inline-block;\n  margin-right: 10px;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { reactive, onUnmounted } from \"vue\";\nimport {\n  SupportedEaseNameToCubicBezier,\n  transitionStart$,\n  transitionEnd$\n} from \"@zyzgroup/core-web\";\nimport Box from \"./Box.vue\";\n\n// css-transition 渐变属性 : 某个属性 从 指定的开始状态 过渡到 特定的结束状态\n// 一次性 + 不可暂停 + 不可反转\n\n// transition: 属性名称 duration timing-function delay\n\n// 属性名称:\n// all\n// width\n// height\n// border-width\n// color\n// background-color\n// border-color\n// text-decoration-color\n// fill\n// stroke\n// opacity\n// box-shadow\n// transform\n// filter\n// backdrop-filter\n\n// timing-function:\n// linear\n// ease\n// ease-in\n// ease-in-out\n// ease-out\n// cubic-bezier(0.25, 0.1, 0.25, 1)\n\nexport type SupportedCSSTransition = \"superRainbow\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    name?: SupportedCSSTransition;\n    duration?: number;\n    timingFunction?: SupportedEaseNameToCubicBezier;\n    delay?: number;\n  }>(),\n  {\n    name: \"superRainbow\",\n    duration: 300,\n    timingFunction: \"ease-out\",\n    delay: 0\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"csstransitionstart\", e: TransitionEvent): void;\n  (event: \"csstransitionend\", e: TransitionEvent): void;\n}>();\n\nconst style = reactive<Record<string, string>>({\n  cursor: \"pointer\"\n  // willChange: \"box-shadow, transform\",\n  // transition: `transform ${props.duration}ms ease-in-out, box-shadow ${props.duration}ms ease-in-out`\n});\n\nlet s1;\nlet s2;\nconst mount = (box) => {\n  s1 = transitionStart$(box.el).subscribe((e) => {\n    emits(\"csstransitionstart\", e);\n  });\n  s2 = transitionEnd$(box.el).subscribe((e) => {\n    emits(\"csstransitionend\", e);\n  });\n};\n\n// 清除\nconst clear = () => {\n  style.transition = \"none\";\n};\n\n// 触发\nconst trigger = () => {\n  clear();\n  // switch (props.name) {\n  //   default:\n  //     delete style.transformOrigin; // default: \"center\" | \"50% 50%\"\n  //     delete style.backfaceVisibility;\n  //     parentStyle.overflow = \"hidden\";\n  //     break;\n  // }\n  style.transition = `all ${props.duration}ms ${props.timingFunction} ${props.delay}ms`;\n};\n\nonUnmounted(() => {\n  s1?.unsubscribe();\n  s2?.unsubscribe();\n});\n\ndefineExpose({ trigger, clear });\n</script>\n\n<template>\n  <Box\n    class=\"css-transition\"\n    :class=\"props.name\"\n    display-type=\"empty\"\n    :style=\"style\"\n    @mount=\"mount\"\n  >\n    <slot></slot>\n  </Box>\n</template>\n\n<style>\n@import \"../../../../../css/animate_ce.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { onUnmounted, ref, watch } from \"vue\";\nimport { Timeline, DOMVideo } from \"@zyzgroup/core-web\";\nimport ProgressBar from \"../progress/ProgressBar.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { ProgressBar },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    src: string;\n    type?: string;\n    autoplay?: boolean;\n    width?: string;\n    height?: string;\n  }>(),\n  {\n    type: \"video/webm\",\n    autoplay: true,\n    width: \"320px\",\n    height: \"138px\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"start\"): void;\n  (event: \"complete\"): void;\n}>();\n\nlet tl: Timeline | null;\n\nfunction onPlay(this: any, _e: Event) {\n  if (tl) {\n    tl.resume();\n    return;\n  }\n  // if (video.value.readyState === video.value.HAVE_ENOUGH_DATA) {\n  tl = new Timeline({\n    frameDuration: this.duration * 1000 // e.target.duration\n  });\n  tl.addTween(\n    { x: 0 },\n    { x: 100 },\n    {\n      frames: 1,\n      delay: 0,\n      onStart: () => {\n        emits(\"start\");\n        bar.value?.goto(0);\n      },\n      onUpdate: (obj) => {\n        // console.log(obj, e.target.duration, e.target.currentTime);\n        bar.value?.goto(obj.x);\n      },\n      onComplete: () => {\n        emits(\"complete\");\n        tl = null;\n      }\n    }\n  );\n  tl.play();\n}\n\n// function onPause(this: any, _e: Event) {\n//   console.log(\"onPause\");\n//   tl?.pause(); /// tl.pause() 比 tl.onComplete() 早执行\n// }\n\nconst video = ref();\nconst bar = ref();\n\nwatch(video, () => {\n  if (!video.value) {\n    return;\n  }\n  video.value.addEventListener(\"play\", onPlay);\n  // video.value.addEventListener(\"pause\", onPause);\n  if (props.autoplay) {\n    DOMVideo.tryAutoPlayOrAutoPlayAfterClick(video.value);\n  }\n});\n\nonUnmounted(() => {\n  video.value?.removeEventListener(onPlay);\n  // video.value?.removeEventListener(onPause);\n});\n\nfunction play() {\n  video.value?.play();\n}\n\nfunction pause() {\n  video.value?.pause();\n  tl?.pause();\n}\n\ndefineExpose({ play, pause });\n</script>\n\n<template>\n  <div\n    class=\"video\"\n    :style=\"{ width: props.width, height: props.height }\"\n    @click=\"play\"\n  >\n    <video\n      ref=\"video\"\n      :width=\"props.width\"\n      :height=\"props.height\"\n      preload=\"metadata\"\n    >\n      <source\n        :src=\"props.src\"\n        :type=\"props.type\"\n      />\n    </video>\n    <div class=\"video-progress-bar\">\n      <ProgressBar\n        ref=\"bar\"\n        bgColor=\"#ffffff\"\n      ></ProgressBar>\n    </div>\n  </div>\n</template>\n\n<!--\n  ce 中不要使用v-bind\n  color: v-bind(fontColor);\n-->\n<style scoped>\n.video {\n  position: relative;\n  overflow: hidden;\n  background-color: #f5f5f5;\n}\n.video-progress-bar {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 6px;\n}\n</style>\n","export default \"data:video/webm;base64,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CggcuYNFPjB65Z0fPg4mELqX8Aje4Xilc2dnui/wAwEsLeko0+f+UxSBfbEqo9T8QBLgpwx9O1usGz4f/EuD88xHzVzoEDhAAP7G1x/JH+TkrNrBO19SnFW0cs2glYRvrmQs++65HMnZ0NPn2kcJABaDSSx13jF276bUOgvwSu2/EOqzyYXWH0POiuRdLSAXdFBCp0I8+kgFrtcOYFZqzo9PkrDrgNvWoT+a4rqeWUfk7TQkxHgh19lmNNyS4sJ12CTrT/TTeFNJQxnWgs9Z+TJSplrrO1Wj/fBO+c5dcyI/DHwfNV6kMgiaXElaxzYlepd8+JWGmOyH3NN/K/WWH6MOHdJH7LS5ZqbEVcfmtazzlu6w57FTnjPCtFUPpagHPlddl7D9kTFqrrUgdUiTcLPFHZoyYmYmnTeh5KXsDa29wttqZrkgxoGhUNz4OOxMqQRKU6ZMGottpRe/pEUeNCLmmvCEPpO8RzMm2qtRSKENLLBQbsMtYBk1bA4nryuLcw3p18F9g0UdDDIeUKEFp8z9kMbw657GiNCbDLp+EX+uAtpXlfoElsd8PJ+4Z9qAW3yDh+NqA/xjWGSWiLWIVPLwPQSUDbPBYqmEXrvfJCPrfry/+nYATZ5FYAx7KTsLjXM2mlIC0fbd3z4HN6Zw6Ze52NfI0HSi+B5vfu3ja9SUNtj4iVJXRbu36D35yjJn2YJtL5iETfyu+xXSEhtNxyCMusCWJH0mtNiypbxTnxldifdZM6/wxdlb8V9pSqU80jq497QVPGwpyNByCGe9H4ajmNLs0KOyQJm1lo3OaSg5OmnDZR74rZD+0xsncLJPJ6qq19fkJopN6MwjAQItvFn2naBl0fwWCjeSwE3o9XXiS0JrCeGSmjhYZEzoQlHMlsFKu0sHv7ofmgCRhjIjolGVV8BszeSDf1ymvEGXjTefjUMmrUMjuhJNT7L4shFwyTvJd7dHOwNfMJruzfpoqi+JwZtreHndoAAcU7trAQAAAAAAAUW7jLOBALeH94EB8YIBdLuMs4FTt4f3gQHxggF0u42zggLut4f3gQHxggF0u42zggNBt4f3gQHxggF0u42zggOVt4f3gQHxggF0u42zggWJt4f3gQHxgjYmu42zggd9t4f3gQHxgm03u42zgglxt4f3gQHxgqGHu42zggtlt4f3gQHxgtTGu46zgg1Zt4j3gQHxgwEFU7uOs4IPTbeI94EB8YMBNb+7jrOCEUG3iPeBAfGDAWdwu46zghM1t4j3gQHxgwGXo7uOs4IUBbeI94EB8YMBsqi7jrOCFfm3iPeBAfGDAdkwu46zghftt4j3gQHxgwIPhLuOs4IZ4beI94EB8YMCQlG7jrOCG9W3iPeBAfGDAnOuu46zgh3Jt4j3gQHxgwKnWbuOs4IfvbeI94EB8YMC17O7jrOCIbG3iPeBAfGDAwhy\"","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { useLoadScript, mapTDTJSSDK } from \"@zyzgroup/core-web\";\nimport Box from \"../base/Box.vue\";\n\nconst props = withDefaults(\n  defineProps<{\n    mapKey?: string;\n    mapContainerID?: string;\n    mapWidth?: string;\n    mapHeight?: string;\n    mapZoom?: number;\n    // longitude\n    mapCenterLng?: number;\n    // latitude\n    mapCenterLat?: number;\n  }>(),\n  {\n    mapKey: \"8261564c2f1435b76dc5991adad737e6\",\n    mapContainerID: \"mapTiandituDiv\",\n    mapZoom: 18,\n    mapCenterLng: 120.619585,\n    mapCenterLat: 31.299379\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"click\"): void;\n}>();\n\nfunction mount() {\n  useLoadScript(`http://api.tianditu.gov.cn/api?v=4.0&tk=${props.mapKey}`)\n    .then(() => {\n      new mapTDTJSSDK(\n        props.mapContainerID,\n        props.mapCenterLng,\n        props.mapCenterLat,\n        props.mapZoom\n      );\n    })\n    .catch((e) => {\n      console.log(\"error\", e);\n    });\n}\n\nconst mapWidth = ref(props.mapWidth);\nconst mapHeight = ref(props.mapHeight);\nfunction resize(box) {\n  mapWidth.value = box.rect.width + \"px\";\n  mapHeight.value = box.rect.height + \"px\";\n}\n\ndefineExpose({});\n</script>\n\n<template>\n  <Box\n    display-type=\"full\"\n    @mount=\"mount\"\n    @resize=\"resize\"\n  >\n    <slot\n      :width=\"mapWidth\"\n      :height=\"mapHeight\"\n    >\n      <!-- 天地图动态注入的样式，目前在ce shadow root 中无法使用 -->\n      <!--\n        所以注入\n        <div id=\"mapTiandituDiv\" style=\"width: 100%; height: 100%\"></div>\n      -->\n    </slot>\n  </Box>\n</template>\n\n<style scoped></style>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: getCSSVar(\"--xg-blue\")\n  }\n);\n\nconst rectStyle = { backgroundColor: props.color };\n</script>\n\n<template>\n  <div class=\"loading-1\">\n    <div\n      class=\"rect1\"\n      :style=\"rectStyle\"\n    ></div>\n    <div\n      class=\"rect2\"\n      :style=\"rectStyle\"\n    ></div>\n    <div\n      class=\"rect3\"\n      :style=\"rectStyle\"\n    ></div>\n    <div\n      class=\"rect4\"\n      :style=\"rectStyle\"\n    ></div>\n    <div\n      class=\"rect5\"\n      :style=\"rectStyle\"\n    ></div>\n  </div>\n</template>\n\n<style scoped>\n.loading-1 {\n  position: relative;\n  display: block;\n  overflow: hidden;\n  width: 100%;\n  height: 100%;\n  text-align: center;\n}\n\n.loading-1 > div {\n  width: 6px;\n  height: 100%;\n  margin: auto 2px;\n  display: inline-block;\n  animation: stretchdelay 1.2s infinite ease-in-out;\n}\n\n.loading-1 .rect2 {\n  animation-delay: -1.1s;\n}\n\n.loading-1 .rect3 {\n  animation-delay: -1s;\n}\n\n.loading-1 .rect4 {\n  animation-delay: -0.9s;\n}\n\n.loading-1 .rect5 {\n  animation-delay: -0.8s;\n}\n\n@keyframes stretchdelay {\n  0%,\n  40%,\n  100% {\n    transform: scaleY(0.4);\n  }\n  20% {\n    transform: scaleY(1);\n  }\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: getCSSVar(\"--xg-blue\")\n  }\n);\n\nconst dotStyle = { backgroundColor: props.color };\n</script>\n\n<template>\n  <div class=\"loading-2\">\n    <div\n      class=\"dot1\"\n      :style=\"dotStyle\"\n    ></div>\n    <div\n      class=\"dot2\"\n      :style=\"dotStyle\"\n    ></div>\n  </div>\n</template>\n\n<style scoped>\n.loading-2 {\n  position: relative;\n  display: block;\n  width: 100%;\n  height: 100%;\n  text-align: center;\n  animation: rotate 2s infinite linear;\n}\n\n.dot1,\n.dot2 {\n  width: 60%;\n  height: 60%;\n  display: inline-block;\n  position: absolute;\n  top: 0;\n  border-radius: 100%;\n  animation: bounce 2s infinite ease-in-out;\n}\n\n.dot2 {\n  top: auto;\n  bottom: 0px;\n  animation-delay: -1s;\n}\n\n@keyframes rotate {\n  100% {\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes bounce {\n  0%,\n  100% {\n    transform: scale(0);\n  }\n  50% {\n    transform: scale(1);\n  }\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { onMounted, onUnmounted, ref } from \"vue\";\nimport { getCSSVar, injectStyle } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    fromColor?: string;\n    toColor?: string;\n  }>(),\n  {\n    fromColor: getCSSVar(\"--xg-blue\"),\n    toColor: getCSSVar(\"--xg-red\")\n  }\n);\n\nconst dotStyle = { backgroundColor: props.fromColor, width: \"20%\" };\n\nconst loading3 = ref();\n\nonMounted(() => {\n  /// for ce\n  injectStyle(\n    `\n  @keyframes snake {\n    0% {\n      opacity: 0.3;\n      transform: translateY(0px);\n      box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.1);\n    }\n    50% {\n      opacity: 1;\n      transform: translateY(-10px);\n      background-color: ${props.toColor};\n      box-shadow: 0px 20px 3px rgba(0, 0, 0, 0.05);\n    }\n    100% {\n      opacity: 0.3;\n      transform: translateY(0px);\n      box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.1);\n    }\n  }\n`,\n    loading3.value\n  );\n});\n\nonUnmounted(() => {});\n</script>\n\n<template>\n  <div\n    class=\"loading-3\"\n    ref=\"loading3\"\n  >\n    <div\n      class=\"dot\"\n      :style=\"{ ...dotStyle, left: '0' }\"\n    ></div>\n    <div\n      class=\"dot\"\n      :style=\"{ ...dotStyle, left: '20%' }\"\n    ></div>\n    <div\n      class=\"dot\"\n      :style=\"{ ...dotStyle, left: '40%' }\"\n    ></div>\n    <div\n      class=\"dot\"\n      :style=\"{ ...dotStyle, left: '60%' }\"\n    ></div>\n    <div\n      class=\"dot\"\n      :style=\"{ ...dotStyle, left: '80%' }\"\n    ></div>\n  </div>\n</template>\n\n<style scoped>\n.loading-3 {\n  position: relative;\n  display: inline-block;\n  width: 100%;\n  height: 100%;\n  text-align: center;\n  /* animation: rotate 2s infinite linear; */\n}\n\n.dot {\n  display: inline-block;\n  top: 50%;\n  transform: translateY(-50%);\n  position: absolute;\n  aspect-ratio: 1 / 1;\n  opacity: 0.5;\n  border-radius: 100%;\n  animation: snake 1s infinite ease-in-out;\n}\n\n.loading-3 div:nth-child(1) {\n  animation-delay: 0s;\n}\n.loading-3 div:nth-child(2) {\n  animation-delay: 0.2s;\n}\n.loading-3 div:nth-child(3) {\n  animation-delay: 0.4s;\n}\n.loading-3 div:nth-child(4) {\n  animation-delay: 0.6s;\n}\n.loading-3 div:nth-child(5) {\n  animation-delay: 0.8s;\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: getCSSVar(\"--xg-blue\")\n  }\n);\n\nconst style = { backgroundColor: props.color };\n</script>\n\n<template>\n  <div class=\"loading-4\">\n    <div\n      class=\"rect\"\n      :style=\"style\"\n    ></div>\n  </div>\n</template>\n\n<style scoped>\n.loading-4 {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  overflow: hidden;\n  perspective: 120px;\n}\n.rect {\n  width: 40%;\n  aspect-ratio: 1 / 1;\n  animation: rotateplane 1.2s infinite ease-in-out;\n}\n\n@keyframes rotateplane {\n  0% {\n    transform: perspective(120px) rotateX(0deg) rotateY(0deg);\n  }\n  50% {\n    transform: perspective(120px) rotateX(-180deg) rotateY(0deg);\n  }\n  100% {\n    transform: perspective(120px) rotateX(-180deg) rotateY(-180deg);\n  }\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: getCSSVar(\"--xg-blue\")\n  }\n);\n\nconst cubeStyle = { backgroundColor: props.color };\n</script>\n\n<template>\n  <div class=\"loading-5\">\n    <div\n      class=\"cube1\"\n      :style=\"cubeStyle\"\n    ></div>\n    <div\n      class=\"cube2\"\n      :style=\"cubeStyle\"\n    ></div>\n  </div>\n</template>\n\n<style scoped>\n.loading-5 {\n  position: relative;\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n\n.cube1,\n.cube2 {\n  width: 40%;\n  aspect-ratio: 1 / 1;\n  display: inline-block;\n  position: absolute;\n  top: 10%;\n  left: 10%;\n  transform: translate(-10%, -10%);\n  animation: cubemove 1.8s infinite ease-in-out;\n  transform-origin: center;\n}\n\n.cube2 {\n  animation-delay: -0.9s;\n}\n\n@keyframes cubemove {\n  25% {\n    transform: translateX(42px) rotate(-90deg) scale(0.5);\n  }\n  50% {\n    transform: translateX(42px) translateY(42px) rotate(-179deg);\n  }\n  50.1% {\n    transform: translateX(42px) translateY(42px) rotate(-180deg);\n  }\n  75% {\n    transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);\n  }\n  100% {\n    transform: rotate(-360deg);\n  }\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: getCSSVar(\"--xg-blue\")\n  }\n);\n\nconst style = { backgroundColor: props.color };\n</script>\n\n<template>\n  <div class=\"loading-6\">\n    <div :style=\"style\"></div>\n    <div :style=\"style\"></div>\n    <div :style=\"style\"></div>\n  </div>\n</template>\n\n<style scoped>\n.loading-6 {\n  position: relative;\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n\n.loading-6 > div {\n  border-radius: 100%;\n}\n\n.loading-6 > div:nth-child(2) {\n  animation-delay: -0.4s;\n}\n\n.loading-6 > div:nth-child(3) {\n  animation-delay: -0.2s;\n}\n\n.loading-6 > div {\n  position: absolute;\n  left: 20%;\n  top: 20%;\n  width: 60%;\n  aspect-ratio: 1 / 1;\n  opacity: 0;\n  margin: 0;\n  animation: loading-6 1s 0s linear infinite;\n}\n@keyframes loading-6 {\n  0% {\n    transform: scale(0);\n    opacity: 0;\n  }\n\n  5% {\n    opacity: 1;\n  }\n\n  100% {\n    transform: scale(1);\n    opacity: 0;\n  }\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { onMounted, onUnmounted, ref } from \"vue\";\nimport { getCSSVar, injectStyle } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: getCSSVar(\"--xg-blue\")\n  }\n);\n\nconst loading7 = ref();\n\nonMounted(() => {\n  /// for ce\n  injectStyle(\n    `\n  :root {\n    --loading-7-bg-color: ${props.color}\n  }\n  :host {\n    --loading-7-bg-color: ${props.color}\n  }\n  `,\n    loading7.value\n  );\n});\n\nonUnmounted(() => {});\n</script>\n\n<template>\n  <div\n    class=\"loading-7\"\n    ref=\"loading7\"\n  >\n    <div></div>\n  </div>\n</template>\n\n<style scoped>\n.loading-7 {\n  position: relative;\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.loading-7 > div {\n  width: 50%;\n  height: 50%;\n  margin: auto;\n  position: absolute;\n  left: 0;\n  right: 0;\n  top: 0;\n  bottom: 0;\n}\n.loading-7 > div::before {\n  content: \"\";\n  width: 100%;\n  height: 5px;\n  box-sizing: border-box;\n  background: #000;\n  opacity: 0.1;\n  position: absolute;\n  top: calc(100% + 5px);\n  left: 0;\n  border-radius: 50%;\n  animation: shadow 0.5s linear infinite;\n}\n.loading-7 > div::after {\n  content: \"\";\n  width: 100%;\n  height: 100%;\n  animation: animate 0.5s linear infinite;\n  position: absolute;\n  left: 0;\n  right: 0;\n  top: 0;\n  bottom: 0;\n  border-radius: 3px;\n  background-color: var(--loading-7-bg-color);\n}\n@keyframes animate {\n  17% {\n    border-bottom-right-radius: 3px;\n  }\n  25% {\n    transform: translateY(9px) rotate(22.5deg);\n  }\n  50% {\n    transform: translateY(18px) scale(1, 0.9) rotate(45deg);\n    border-bottom-right-radius: 40px;\n  }\n  75% {\n    transform: translateY(9px) rotate(67.5deg);\n  }\n  100% {\n    transform: translateY(0) rotate(90deg);\n  }\n}\n\n@keyframes shadow {\n  0%,\n  100% {\n    transform: scale(1, 1);\n  }\n  50% {\n    transform: scale(1.2, 1);\n  }\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: getCSSVar(\"--xg-blue\")\n  }\n);\n\nconst style = {\n  borderTopColor: props.color\n};\n</script>\n\n<template>\n  <div class=\"loading-9\">\n    <div :style=\"style\"></div>\n  </div>\n</template>\n\n<style scoped>\n.loading-9 {\n  position: relative;\n  display: inline-flex;\n  justify-content: center;\n  align-items: center;\n  width: 100%;\n  height: 100%;\n}\n.loading-9 div {\n  width: 50%;\n  aspect-ratio: 1 / 1;\n  border: 3px solid rgba(0, 0, 0, 0.1);\n  border-radius: 50%;\n  animation: spin 1s linear infinite;\n}\n@keyframes spin {\n  to {\n    transform: rotate(360deg);\n  }\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: getCSSVar(\"--xg-blue\")\n  }\n);\n</script>\n\n<template>\n  <div class=\"loading-10\">\n    <svg viewBox=\"0 0 50 50\">\n      <circle\n        class=\"ring\"\n        cx=\"25\"\n        cy=\"25\"\n        r=\"20\"\n        :style=\"['stroke: rgba(0,0,0,0.1)']\"\n      ></circle>\n      <circle\n        class=\"ball\"\n        cx=\"25\"\n        cy=\"5\"\n        r=\"3.5\"\n        :style=\"['fill: ' + props.color]\"\n      ></circle>\n    </svg>\n  </div>\n</template>\n\n<style scoped>\n.loading-10 {\n  position: relative;\n  display: inline-flex;\n  justify-content: center;\n  align-items: center;\n  width: 100%;\n  height: 100%;\n}\n.loading-10 svg {\n  width: 50%;\n  aspect-ratio: 1 / 1;\n  transform-origin: center;\n  animation: 1.5s spin ease infinite;\n}\n.ring {\n  fill: none;\n  stroke-width: 2;\n}\n\n.ball {\n  stroke: none;\n}\n\n@keyframes spin {\n  to {\n    transform: rotate(360deg);\n  }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    text?: string;\n    secondText?: string;\n    startColor?: string;\n    endColor?: string;\n    dur?: number;\n  }>(),\n  {\n    text: \"\",\n    secondText: \"\",\n    startColor: \"#5A82F0\",\n    endColor: \"#66B3FF\",\n    dur: 2000\n  }\n);\n\n// const emits = defineEmits<{\n//   (event: \"click\"): void;\n// }>();\n\nconst ringGap = 10;\nconst ringWidth = 4;\n\nconst length = ref(0);\nconst resize = (box) => {\n  length.value = Math.floor(Math.min(box.rect.width, box.rect.height));\n};\n\ndefineExpose({});\n</script>\n\n<template>\n  <Box\n    display-type=\"full\"\n    @resize=\"resize\"\n  >\n    <div\n      class=\"ring\"\n      :style=\"{\n        width: length + 'px',\n        height: length + 'px',\n        padding: ringGap + 'px',\n        background: `linear-gradient(180deg, ${props.startColor} 0%, ${props.endColor} 100%)`\n      }\"\n    >\n      <div\n        class=\"ring-rotate\"\n        :style=\"{\n          animation: `rotate ${props.dur}ms infinite linear`,\n          mask: `radial-gradient(transparent ${\n            length / 2 - ringGap - ringWidth\n          }px, #000 ${length / 2 - ringGap - ringWidth}px)`\n        }\"\n      >\n        <div class=\"left\"></div>\n        <div class=\"right\"></div>\n      </div>\n      <div\n        class=\"ring-content\"\n        :style=\"{\n          top: ringGap + ringWidth + 'px',\n          left: ringGap + ringWidth + 'px',\n          width: length - (ringGap + ringWidth) * 2 + 'px',\n          height: length - (ringGap + ringWidth) * 2 + 'px'\n        }\"\n      >\n        <div v-if=\"props.text\">{{ props.text }}</div>\n        <div v-if=\"props.secondText\">{{ props.secondText }}</div>\n      </div>\n    </div>\n  </Box>\n</template>\n\n<style>\n/* @import \"../../../../../css/animate_ce.css\"; */\n@keyframes rotate {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n</style>\n\n<style scoped>\n.ring {\n  position: relative;\n  display: block;\n  margin: 0 auto;\n  border-radius: 50%;\n  overflow: hidden;\n  box-sizing: border-box;\n}\n.ring-rotate {\n  width: 100%;\n  height: 100%;\n  position: relative;\n  overflow: hidden;\n  box-sizing: border-box;\n  border-radius: 50%;\n}\n.ring-content {\n  position: absolute;\n  overflow: hidden;\n  box-sizing: border-box;\n  border-radius: 50%;\n  color: #ffffff;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n}\n.ring-content > div:nth-child(1) {\n  font-size: 20px;\n  font-weight: bold;\n}\n.ring-content > div:nth-child(2) {\n  font-size: 14px;\n  margin-top: 6px;\n}\n.left,\n.right {\n  position: absolute;\n  top: 0;\n  width: 50%;\n  height: 100%;\n  z-index: 0;\n}\n.left {\n  left: 0;\n  background: linear-gradient(\n    180deg,\n    rgba(255, 255, 255, 0),\n    rgba(255, 255, 255, 0.5)\n  );\n}\n.right {\n  right: 0;\n  background: linear-gradient(\n    180deg,\n    rgba(255, 255, 255, 1),\n    rgba(255, 255, 255, 0.5)\n  );\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, reactive } from \"vue\";\nimport {\n  Time,\n  parseTime,\n  increaseTime,\n  decreaseTime,\n  copyTime,\n  now\n} from \"@zyzgroup/core-common\";\nimport {\n  setTimeoutAccurate,\n  setIntervalAccurate,\n  injectStyle\n} from \"@zyzgroup/core-web\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    startTime?: string;\n    initStart?: boolean;\n    creaseType?: \"increase\" | \"decrease\";\n    flipDirection?: \"down\" | \"up\";\n    dur?: number; // 动画时间\n    bgColor?: string;\n    textColor?: string;\n    borderRadius?: number;\n    gap?: number;\n    perspective?: number;\n  }>(),\n  {\n    startTime: \"00:00:00\",\n    initStart: true,\n    creaseType: \"increase\",\n    flipDirection: \"down\",\n    dur: 800, // 动画时间\n    bgColor: \"#5a82f0\",\n    textColor: \"#ffffff\",\n    borderRadius: 8,\n    gap: 1,\n    perspective: 400\n  }\n);\n\n// const emits = defineEmits<{\n//   (event: \"click\"): void;\n// }>();\n\nconst containerRef = ref();\nconst flipWidth = ref(40);\nconst lineHeight = ref(20);\nconst fontSize = ref(20);\n\nconst resize = (box) => {\n  flipWidth.value = Math.floor(box.rect.width / (6 + 1));\n  lineHeight.value = Math.floor(box.rect.height);\n  fontSize.value = Math.max(12, lineHeight.value);\n};\n\nconst mount = (box) => {\n  // for ce\n  injectStyle(\n    `\n  :root {\n    --yz-clock-flipper-bg-color:${props.bgColor};\n    --yz-clock-flipper-text-color:${props.textColor};\n    --yz-clock-flipper-border-radius:${props.borderRadius}px;\n    --yz-clock-flipper-gap:${props.gap}px;\n    --yz-clock-flipper-gap-double:${props.gap * 2}px;\n    --yz-clock-flipper-gap-four:${props.gap * 4}px;\n    --yz-clock-flipper-animation-duration:${props.dur}ms;\n    --yz-clock-flipper-perspective: ${props.perspective}px;\n  }\n  :host {\n    --yz-clock-flipper-bg-color:${props.bgColor};\n    --yz-clock-flipper-text-color:${props.textColor};\n    --yz-clock-flipper-border-radius:${props.borderRadius}px;\n    --yz-clock-flipper-gap:${props.gap}px;\n    --yz-clock-flipper-gap-double:${props.gap * 2}px;\n    --yz-clock-flipper-gap-four:${props.gap * 4}px;\n    --yz-clock-flipper-animation-duration:${props.dur}ms;\n    --yz-clock-flipper-perspective: ${props.perspective}px;\n  }\n  `,\n    box.el\n  );\n  if (props.initStart) {\n    start(props.startTime);\n  }\n};\n\nconst startTime: Time = [0, 0, 0, 0, 0, 0];\nconst time = reactive<Time>([0, 0, 0, 0, 0, 0]);\nconst timeNext = reactive<Time>([0, 0, 0, 0, 0, 0]);\n\nlet lastTimeOutCount = 0;\n\nconst start = (starttime?: string) => {\n  if (starttime) {\n    copyTime(parseTime(starttime), startTime);\n    startTime.forEach((t, i) => {\n      time[i] = t;\n      timeNext[i] = t;\n    });\n  }\n  pause();\n  lastTimeOutCount = 0;\n  flipAction(now(), 0, false);\n  clearInterval = setIntervalAccurate(\n    (t: DOMHighResTimeStamp, count: number, isTimeOut: boolean) => {\n      flipAction(t, count, isTimeOut);\n    },\n    1000\n  );\n};\n\nlet clearInterval: () => void;\nconst pause = () => {\n  clearInterval?.();\n};\n\nconst flipAction = (\n  _: DOMHighResTimeStamp,\n  count: number,\n  isTimeOut: boolean\n) => {\n  // 当前周期为超时周期\n  if (isTimeOut) {\n    lastTimeOutCount = count;\n    // 超时周期不更新\n  } else {\n    // 当前周期是正常周期，上个周期为超时周期\n    if (lastTimeOutCount > 0) {\n      // 尽量保持与开始时间的偏差\n      startTime.forEach((t, i) => {\n        time[i] = t;\n        timeNext[i] = t;\n      });\n      const currentCount = lastTimeOutCount + 1;\n      if (props.creaseType == \"increase\") {\n        copyTime(increaseTime(time, currentCount), time);\n        copyTime(increaseTime(timeNext, currentCount + 1), timeNext);\n      } else {\n        copyTime(decreaseTime(time, currentCount), time);\n        copyTime(decreaseTime(timeNext, currentCount + 1), timeNext);\n      }\n      lastTimeOutCount = 0;\n    } else {\n      // 正常周期\n      if (props.creaseType == \"increase\") {\n        copyTime(increaseTime(timeNext, 1), timeNext);\n      } else {\n        copyTime(decreaseTime(timeNext, 1), timeNext);\n      }\n    }\n    setTimeoutAccurate(() => {\n      timeNext.forEach((t, i) => {\n        time[i] = t;\n      });\n    }, props.dur);\n  }\n};\n\ndefineExpose({ start, pause });\n</script>\n\n<template>\n  <Box\n    ref=\"containerRef\"\n    display-type=\"full\"\n    :style=\"{ overflow: 'visible' }\"\n    @mount=\"mount\"\n    @resize=\"resize\"\n  >\n    <div\n      class=\"clock-flipper\"\n      :style=\"{\n        fontSize: fontSize + 'px',\n        lineHeight: lineHeight + 'px'\n      }\"\n    >\n      <template\n        v-for=\"(t, i) in time\"\n        :key=\"i\"\n      >\n        <!-- 小时 十位 -->\n        <!-- 小时 个位 -->\n        <!-- gap -->\n        <!-- 分钟 十位 -->\n        <!-- 分钟 个位 -->\n        <!-- gap -->\n        <!-- 秒 十位 -->\n        <!-- 秒 个位 -->\n        <div\n          class=\"flip\"\n          :class=\"[props.flipDirection, timeNext[i] != t ? 'go' : '']\"\n          :style=\"{ width: flipWidth + 'px' }\"\n        >\n          <div\n            class=\"front digital\"\n            :class=\"[`flipper_${i}`, `number_${t}`]\"\n          ></div>\n          <div\n            class=\"back digital\"\n            :class=\"[`number_${timeNext[i]}`]\"\n          ></div>\n        </div>\n        <div\n          v-if=\"i == 1 || i == 3\"\n          class=\"gap\"\n          :style=\"{\n            fontSize: Math.floor(fontSize * 0.6) + 'px',\n            lineHeight: 0\n          }\"\n        >\n          :\n        </div>\n      </template>\n    </div>\n  </Box>\n</template>\n\n<style>\n@keyframes frontFlipDown {\n  0% {\n    transform: perspective(var(--yz-clock-flipper-perspective)) rotateX(0deg);\n  }\n  100% {\n    transform: perspective(var(--yz-clock-flipper-perspective)) rotateX(-180deg);\n  }\n}\n@keyframes backFlipDown {\n  0% {\n    transform: perspective(var(--yz-clock-flipper-perspective)) rotateX(180deg);\n  }\n  100% {\n    transform: perspective(var(--yz-clock-flipper-perspective)) rotateX(0deg);\n  }\n}\n@keyframes frontFlipUp {\n  0% {\n    transform: perspective(var(--yz-clock-flipper-perspective)) rotateX(0deg);\n  }\n  100% {\n    transform: perspective(var(--yz-clock-flipper-perspective)) rotateX(180deg);\n  }\n}\n@keyframes backFlipUp {\n  0% {\n    transform: perspective(var(--yz-clock-flipper-perspective)) rotateX(-180deg);\n  }\n  100% {\n    transform: perspective(var(--yz-clock-flipper-perspective)) rotateX(0deg);\n  }\n}\n</style>\n\n<style scoped>\n.clock-flipper {\n  position: relative;\n  margin: 0 auto;\n  box-sizing: border-box;\n  display: flex;\n  flex-direction: row;\n  justify-content: center;\n  align-items: center;\n  text-align: center;\n  height: 100%;\n  font-family: D-DINCondensed-number;\n}\n.flip {\n  position: relative;\n  height: 100%;\n  box-sizing: border-box;\n  color: var(--yz-clock-flipper-text-color);\n  /* border-radius: var(--yz-clock-flipper-border-radius) 0 0\n    var(--yz-clock-flipper-border-radius); */\n}\n.flip + .flip {\n  margin-left: var(--yz-clock-flipper-gap-double);\n  /* border-radius: 0 var(--yz-clock-flipper-border-radius)\n    var(--yz-clock-flipper-border-radius) 0; */\n}\n\n/*\n-------------- --------------\n.back:before  |  .front:before\n.back:after   |  .front:after\n-------------- ---------------\n*/\n\n/* 向下翻\n                      .back:after{z-index:2}\n                              *    .front:before{z-index:3}\n                              *         *\n                              *     *\n                              *  *\n.back:before{z-index:1} * * * *  *  *  *  *  * .front:after{z-index:1}\n*/\n.flip.down .front:after,\n.flip.down .back:before {\n  z-index: 1;\n}\n.flip.down .front:before {\n  z-index: 3;\n}\n.flip.down .back:after {\n  z-index: 2;\n  transform-origin: 50% 0%;\n  transform: perspective(var(--yz-clock-flipper-perspective)) rotateX(180deg);\n}\n.flip.down.go .front:before {\n  transform-origin: 50% 100%;\n  animation: frontFlipDown var(--yz-clock-flipper-animation-duration)\n    ease-in-out both;\n  backface-visibility: hidden;\n  box-shadow: 0 -2px 6px rgba(255, 255, 255, 0.3);\n}\n.flip.down.go .back:after {\n  animation: backFlipDown var(--yz-clock-flipper-animation-duration) ease-in-out\n    both;\n}\n\n/* 向上翻\n                      .front:after{z-index:3}\n                              *    .back:before{z-index:2}\n                              *         *\n                              *     *\n                              *  *\n.front:before{z-index:1} * * * *  *  *  *  *  * .back:after{z-index:1}\n*/\n.flip.up .front:before,\n.flip.up .back:after {\n  z-index: 1;\n}\n.flip.up .front:after {\n  z-index: 3;\n}\n.flip.up .back:before {\n  z-index: 2;\n  transform-origin: 50% 100%;\n  transform: perspective(var(--yz-clock-flipper-perspective)) rotateX(-180deg);\n}\n.flip.up.go .front:after {\n  transform-origin: 50% 0;\n  animation: frontFlipUp var(--yz-clock-flipper-animation-duration) ease-in-out\n    both;\n  backface-visibility: hidden;\n  box-shadow: 0 -2px 6px rgba(255, 255, 255, 0.3);\n}\n.flip.up.go .back:before {\n  animation: backFlipUp var(--yz-clock-flipper-animation-duration) ease-in-out\n    both;\n}\n\n.gap {\n  margin: 0 var(--yz-clock-flipper-gap-four);\n  color: var(--yz-clock-flipper-bg-color);\n}\n\n.digital:before,\n.digital:after {\n  content: \"\";\n  position: absolute;\n  left: 0;\n  right: 0;\n  height: 50%;\n  box-sizing: border-box;\n  background: var(--yz-clock-flipper-bg-color);\n  overflow: hidden;\n}\n.digital:before {\n  top: 0;\n  bottom: 50%;\n  border-radius: var(--yz-clock-flipper-border-radius)\n    var(--yz-clock-flipper-border-radius) 0 0;\n  border-bottom: solid var(--yz-clock-flipper-gap)\n    var(--yz-clock-flipper-text-color);\n}\n.digital:after {\n  top: 50%;\n  bottom: 0;\n  border-radius: 0 0 var(--yz-clock-flipper-border-radius)\n    var(--yz-clock-flipper-border-radius);\n  border-top: solid var(--yz-clock-flipper-gap)\n    var(--yz-clock-flipper-text-color);\n  /* 下半张”纸牌只显示文字的下半部分，并且与“上半张”纸牌衔接在一起 */\n  line-height: 0;\n}\n\n.digital.number_0:before,\n.digital.number_0:after {\n  content: \"0\";\n}\n.digital.number_1:before,\n.digital.number_1:after {\n  content: \"1\";\n}\n.digital.number_2:before,\n.digital.number_2:after {\n  content: \"2\";\n}\n.digital.number_3:before,\n.digital.number_3:after {\n  content: \"3\";\n}\n.digital.number_4:before,\n.digital.number_4:after {\n  content: \"4\";\n}\n.digital.number_5:before,\n.digital.number_5:after {\n  content: \"5\";\n}\n.digital.number_6:before,\n.digital.number_6:after {\n  content: \"6\";\n}\n.digital.number_7:before,\n.digital.number_7:after {\n  content: \"7\";\n}\n.digital.number_8:before,\n.digital.number_8:after {\n  content: \"8\";\n}\n.digital.number_9:before,\n.digital.number_9:after {\n  content: \"9\";\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { __color } from \"@zyzgroup/core-web\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    text?: string;\n    textSize?: number;\n    borderColor?: string;\n    borderWidth?: number;\n    borderRadius?: number;\n  }>(),\n  {\n    text: \"\",\n    textSize: 12,\n    borderColor: \"#5a82f0\",\n    borderWidth: 2,\n    borderRadius: 8\n  }\n);\n\n// const emits = defineEmits<{\n//   (event: \"click\"): void;\n// }>();\n\nconst isFocus = ref(false);\nconst start = () => {\n  isFocus.value = true;\n};\nconst end = () => {\n  isFocus.value = false;\n};\n\ndefineExpose({ start, end });\n</script>\n\n<template>\n  <Box\n    class=\"border-focus-text\"\n    display-type=\"shrink\"\n  >\n    <div\n      class=\"text\"\n      v-if=\"isFocus\"\n      :style=\"{\n        fontSize: `${textSize}px`,\n        top: `${-Math.ceil(textSize / 2) - 4}px`,\n        padding: '4px 12px',\n        backgroundColor: borderColor,\n        borderRadius: `${textSize}px 0 ${textSize}px 0`,\n        color: __color\n          .set(borderColor)\n          .opposite(true, '#333333', '#ffffff')\n          .toString()\n      }\"\n    >\n      {{ props.text }}\n    </div>\n    <div\n      class=\"inner\"\n      :style=\"{\n        border: `${borderWidth}px solid ${\n          isFocus ? borderColor : 'transparent'\n        }`,\n        borderRadius: `${borderRadius}px`\n      }\"\n    >\n      <slot></slot>\n    </div>\n  </Box>\n</template>\n\n<style scoped>\n.text {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1;\n}\n.inner {\n  position: relative;\n  overflow: hidden;\n  box-sizing: border-box;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, reactive } from \"vue\";\nimport { __color } from \"@zyzgroup/core-web\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n    dur?: number;\n  }>(),\n  {\n    color: \"#3cefff\",\n    dur: 750\n  }\n);\n\n// const emits = defineEmits<{\n//   (event: \"click\"): void;\n// }>();\n\nconst style = reactive<Record<string, string>>({\n  transition: `box-shadow ${props.dur}ms`,\n  borderRadius: \"100%\"\n});\n\nconst resize = (box) => {\n  style.width = style.height =\n    Math.ceil(Math.max(box.rect.width, box.rect.height)) + \"px\";\n  start();\n};\n\nconst start = () => {\n  const c = __color.set(props.color).setAlpha(0.2).toString();\n  style.boxShadow = `\n    inset ${style.width} 0 0 ${c},\n    inset 0 ${style.width} 0 ${c},\n    inset -${style.width} 0 0 ${c},\n    inset 0 -${style.width} 0 ${c}\n  `;\n};\n\nconst end = () => {\n  style.boxShadow = `\n    inset 0.5em 0 0 rgba(255, 0, 0, 0.5),\n    inset 0 0.5em 0 rgba(252, 150, 0, 0.5),\n    inset -0.5em 0 0 rgba(0, 255, 0, 0.5),\n    inset 0 -0.5em 0 rgba(0, 150, 255, 0.5)\n  `;\n};\n\ndefineExpose({ start, end });\n</script>\n\n<template>\n  <Box\n    class=\"circle\"\n    display-type=\"shrink\"\n    @resize=\"resize\"\n  >\n    <div\n      class=\"circle-before\"\n      :style=\"style\"\n    ></div>\n    <div class=\"circle-inner\">\n      <slot></slot>\n    </div>\n  </Box>\n</template>\n\n<style scoped>\n.circle-before {\n  position: absolute;\n  z-index: 2;\n}\n.circle-inner {\n  position: relative;\n  z-index: 1;\n  cursor: pointer;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { reactive, ref } from \"vue\";\nimport { maxDotNumber, clamp } from \"@zyzgroup/core-common\";\nimport {\n  RingIndicatorShapeCombo,\n  createRunCycleInMaxRate\n} from \"@zyzgroup/core-web\";\nimport Box from \"../base/Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    percent?: number;\n    lineWidth?: number;\n    bgColor?: string;\n    startColor?: string;\n    endColor?: string;\n    half?: boolean;\n  }>(),\n  {\n    percent: 0,\n    lineWidth: 12,\n    bgColor: \"#B3C6E7\",\n    startColor: \"#5A82F0\",\n    endColor: \"#66B3FF\",\n    half: false // 半圆 或 全圆\n  }\n);\n\n// const emits = defineEmits<{\n//   (event: \"click\"): void;\n// }>();\n\nlet currentPercent = ref(0);\nconst getPercent = createRunCycleInMaxRate(() => {\n  const percent = clamp(Math.floor(props.percent), 0, 100);\n  if (currentPercent.value < percent) {\n    currentPercent.value = Math.min(currentPercent.value + 1, percent);\n  } else if (currentPercent.value > percent) {\n    currentPercent.value = Math.max(currentPercent.value - 1, percent);\n  }\n  return maxDotNumber(currentPercent.value / 100, 2);\n}, 20);\n\nconst shapes = reactive([]);\nlet ringIndicator;\nfunction start(box) {\n  if (ringIndicator) {\n    return;\n  }\n  ringIndicator = new RingIndicatorShapeCombo({\n    half: props.half,\n    width: box.rect.width,\n    height: box.rect.height,\n    lineWidth: props.lineWidth,\n    bgColor: props.bgColor,\n    startColor: props.startColor,\n    endColor: props.endColor\n  });\n  shapes.push(ringIndicator);\n}\n\nfunction frame() {\n  ringIndicator?.setPercent(getPercent());\n}\n\ndefineExpose({});\n</script>\n\n<template>\n  <div class=\"ring-indicator\">\n    <Box\n      type=\"canvas\"\n      :shapes=\"shapes\"\n      :loop=\"true\"\n      @start=\"start\"\n      @frame=\"frame\"\n    ></Box>\n    <div\n      :class=\"{\n        'ring-text': true,\n        'ring-text-full': !props.half,\n        'ring-text-half': props.half\n      }\"\n    >\n      <span>{{ currentPercent }}</span>\n      <span>%</span>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.ring-indicator {\n  position: relative;\n  width: 100%;\n  height: 100%;\n}\n.ring-text-full {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 100%;\n  transform: translate(-50%, -50%);\n  text-align: center;\n  font-family: D-DINCondensed-number;\n  color: #333333;\n  text-indent: 1em;\n}\n.ring-text-half {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  text-align: center;\n  font-family: D-DINCondensed-number;\n  color: #333333;\n  padding-bottom: 20px;\n  text-indent: 1em;\n}\n.ring-text > span:nth-child(1) {\n  font-size: 64px;\n}\n.ring-text > span:nth-child(2) {\n  font-size: 20px;\n}\n</style>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    width?: string;\n    height?: string;\n    color?: string;\n  }>(),\n  {\n    width: \"1.5em\",\n    color: getCSSVar(\"--xg-red\")\n  }\n);\n</script>\n\n<template>\n  <svg\n    viewBox=\"0 0 24 24\"\n    :width=\"props.width\"\n    :height=\"props.height ?? props.width\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    style=\"transform-origin: center\"\n  >\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12ZM19 12C19 15.866 15.866 19 12 19C8.13401 19 5 15.866 5 12C5 8.13401 8.13401 5 12 5C15.866 5 19 8.13401 19 12Z\"\n      :fill=\"props.color\"\n    />\n    <path\n      d=\"M12.5332 15.2001C12.5332 15.4946 12.2944 15.7334 11.9999 15.7334C11.7053 15.7334 11.4665 15.4946 11.4665 15.2001L11.4665 10.9334C11.4665 10.6388 11.7053 10.4001 11.9999 10.4001C12.2944 10.4001 12.5332 10.6388 12.5332 10.9334L12.5332 15.2001Z\"\n      :fill=\"props.color\"\n    />\n    <path\n      d=\"M12.5332 8.80006C12.5332 9.09462 12.2944 9.3334 11.9999 9.3334C11.7053 9.3334 11.4665 9.09462 11.4665 8.80006C11.4665 8.50551 11.7053 8.26673 11.9999 8.26673C12.2944 8.26673 12.5332 8.50551 12.5332 8.80006Z\"\n      :fill=\"props.color\"\n    />\n  </svg>\n</template>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    width?: string;\n    height?: string;\n    color?: string;\n  }>(),\n  {\n    width: \"24px\",\n    color: getCSSVar(\"--xg-red\")\n  }\n);\n</script>\n\n<template>\n  <svg\n    viewBox=\"0 0 24 24\"\n    :width=\"props.width\"\n    :height=\"props.height ?? props.width\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    style=\"transform-origin: center\"\n  >\n    <path\n      d=\"M12 19.5C7.85786 19.5 4.5 16.1421 4.5 12C4.5 7.85786 7.85786 4.5 12 4.5C16.1421 4.5 19.5 7.85786 19.5 12C19.5 16.1421 16.1421 19.5 12 19.5Z\"\n      :fill=\"props.color\"\n      :stroke=\"props.color\"\n    />\n    <path\n      d=\"M12.1159 8C12.8297 8 13.4036 8.19414 13.8377 8.58242C14.2792 8.96337 14.5 9.48718 14.5 10.1538C14.5 10.6886 14.3602 11.1355 14.0806 11.4945C13.9849 11.6117 13.6759 11.8974 13.1534 12.3516C12.9474 12.5201 12.7929 12.7106 12.6898 12.9231C12.5721 13.1355 12.5132 13.3773 12.5132 13.6484V13.8352H11.3322V13.6484C11.3322 13.2234 11.4058 12.8755 11.553 12.6044C11.6928 12.3114 12.1085 11.8571 12.8002 11.2418L12.9879 11.033C13.1939 10.7692 13.2969 10.5018 13.2969 10.2308C13.2969 9.85714 13.1902 9.55678 12.9768 9.32967C12.7561 9.10989 12.4433 9 12.0386 9C11.5383 9 11.1777 9.15751 10.957 9.47253C10.7583 9.73626 10.6589 10.1099 10.6589 10.5934H9.5C9.5 9.79487 9.73179 9.16484 10.1954 8.7033C10.6589 8.23443 11.2991 8 12.1159 8ZM11.9172 14.4286C12.16 14.4286 12.355 14.5018 12.5022 14.6484C12.6567 14.7875 12.734 14.9744 12.734 15.2088C12.734 15.4286 12.6531 15.619 12.4912 15.7802C12.3293 15.9267 12.138 16 11.9172 16C11.6891 16 11.4978 15.9231 11.3433 15.7692C11.1887 15.6154 11.1115 15.4286 11.1115 15.2088C11.1115 14.9744 11.1887 14.7875 11.3433 14.6484C11.4904 14.5018 11.6818 14.4286 11.9172 14.4286Z\"\n      fill=\"white\"\n    />\n  </svg>\n</template>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    width?: string;\n    height?: string;\n    color?: string;\n  }>(),\n  {\n    width: \"24px\",\n    color: getCSSVar(\"--xg-red\")\n  }\n);\n</script>\n\n<template>\n  <svg\n    viewBox=\"0 0 48 48\"\n    :width=\"props.width\"\n    :height=\"props.height ?? props.width\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    style=\"transform-origin: center\"\n  >\n    <path\n      d=\"M24 46.5C36.4264 46.5 46.5 36.4264 46.5 24C46.5 11.5736 36.4264 1.5 24 1.5C11.5736 1.5 1.5 11.5736 1.5 24C1.5 36.4264 11.5736 46.5 24 46.5Z\"\n      :fill=\"props.color\"\n    />\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M26.1514 24L33.3033 16.8481C33.8989 16.2525 33.8989 15.2924 33.3033 14.6967C32.7076 14.1011 31.7475 14.1011 31.1519 14.6967L24 21.8486L16.8481 14.6967C16.2525 14.1011 15.2924 14.1011 14.6967 14.6967C14.1011 15.2924 14.1011 16.2525 14.6967 16.8481L21.8486 24L14.6967 31.1519C14.1011 31.7475 14.1011 32.7076 14.6967 33.3033C15.2924 33.8989 16.2525 33.8989 16.8481 33.3033L24 26.1514L31.1519 33.3033C31.7475 33.8989 32.7076 33.8989 33.3033 33.3033C33.8989 32.7076 33.8989 31.7475 33.3033 31.1519L26.1514 24Z\"\n      fill=\"white\"\n    />\n  </svg>\n</template>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    width?: string;\n    height?: string;\n    color?: string;\n  }>(),\n  {\n    width: \"24px\",\n    color: getCSSVar(\"--xg-green\")\n  }\n);\n</script>\n\n<template>\n  <svg\n    viewBox=\"0 0 48 48\"\n    :width=\"props.width\"\n    :height=\"props.height ?? props.width\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    style=\"transform-origin: center\"\n  >\n    <path\n      d=\"M24 46.5C36.4264 46.5 46.5 36.4264 46.5 24C46.5 11.5736 36.4264 1.5 24 1.5C11.5736 1.5 1.5 11.5736 1.5 24C1.5 36.4264 11.5736 46.5 24 46.5Z\"\n      :fill=\"props.color\"\n    />\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M35.5611 16.2017C34.9759 15.5994 34.0326 15.5994 33.4474 16.2017L21.0958 28.5444L14.5526 21.8106C13.9674 21.2084 13.0241 21.2084 12.4389 21.8106C11.8537 22.4129 11.8537 23.3836 12.4389 23.9859L20.0303 31.7983C20.6155 32.4006 21.5588 32.4006 22.144 31.7983L35.5611 18.3769C36.1463 17.7747 36.1463 16.8039 35.5611 16.2017Z\"\n      fill=\"white\"\n    />\n  </svg>\n</template>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    width?: string;\n    height?: string;\n    color?: string;\n  }>(),\n  {\n    width: \"24px\",\n    color: getCSSVar(\"--xg-orange\")\n  }\n);\n</script>\n\n<template>\n  <svg\n    viewBox=\"0 0 48 48\"\n    :width=\"props.width\"\n    :height=\"props.height ?? props.width\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    style=\"transform-origin: center\"\n  >\n    <path\n      d=\"M24 46.5C36.4264 46.5 46.5 36.4264 46.5 24C46.5 11.5736 36.4264 1.5 24 1.5C11.5736 1.5 1.5 11.5736 1.5 24C1.5 36.4264 11.5736 46.5 24 46.5Z\"\n      :fill=\"props.color\"\n    />\n    <rect\n      x=\"22.5\"\n      y=\"10.5\"\n      width=\"3\"\n      height=\"16.5\"\n      rx=\"1.5\"\n      fill=\"white\"\n    />\n    <rect\n      x=\"37.5\"\n      y=\"24\"\n      width=\"3\"\n      height=\"15\"\n      rx=\"1.5\"\n      transform=\"rotate(90 37.5 24)\"\n      fill=\"white\"\n    />\n  </svg>\n</template>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    width?: string;\n    height?: string;\n    color?: string;\n  }>(),\n  {\n    width: \"16px\",\n    color: getCSSVar(\"--xg-blue\")\n  }\n);\n</script>\n\n<template>\n  <svg\n    viewBox=\"0 0 24 24\"\n    :width=\"props.width\"\n    :height=\"props.height ?? props.width\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    style=\"transform-origin: center\"\n  >\n    <path\n      d=\"M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zM8.9 6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1v2H8.9V6z\"\n      :fill=\"props.color\"\n    ></path>\n  </svg>\n</template>\n","<script setup lang=\"tsx\">\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: \"#cccccc\"\n  }\n);\n</script>\n\n<template>\n  <svg\n    viewBox=\"0 0 32 32\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    style=\"transform-origin: center\"\n  >\n    <rect\n      x=\"2\"\n      y=\"15\"\n      width=\"28\"\n      height=\"2\"\n      rx=\"1\"\n      :fill=\"props.color\"\n    />\n    <rect\n      x=\"17\"\n      y=\"2\"\n      width=\"28\"\n      height=\"2\"\n      rx=\"1\"\n      transform=\"rotate(90 17 2)\"\n      :fill=\"props.color\"\n    />\n  </svg>\n</template>\n","<script setup lang=\"tsx\">\nimport { getCSSVar } from \"@zyzgroup/core-web\";\n\nconst props = withDefaults(\n  defineProps<{\n    color?: string;\n  }>(),\n  {\n    color: getCSSVar(\"--xg-red\", \"#fa503c\")\n  }\n);\n</script>\n\n<template>\n  <!-- 不设置 width height , 自适应父元素 -->\n  <svg\n    viewBox=\"0 0 24 24\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n    :style=\"{\n      display: 'block',\n      transformOrigin: 'center'\n    }\"\n  >\n    <path\n      d=\"M7 21q-.825 0-1.412-.587T5 19V6H4V4h5V3h6v1h5v2h-1v13q0 .825-.587 1.413T17 21zM17 6H7v13h10zM9 17h2V8H9zm4 0h2V8h-2zM7 6v13z\"\n      :fill=\"props.color\"\n    />\n  </svg>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, watch } from \"vue\";\nimport { __color } from \"@zyzgroup/core-web\";\nimport { extractNumber } from \"@zyzgroup/core-common\";\n\n// https://headlessui.com/v1/vue/switch\n\nconst props = withDefaults(\n  defineProps<{\n    init: boolean;\n    width?: string;\n    height?: string;\n    padding?: string;\n    colorPrimary?: string;\n    colorBgOn?: string;\n    colorBgOff?: string;\n  }>(),\n  {\n    init: false,\n    width: \"44px\",\n    height: \"26px\",\n    padding: \"3px\",\n    colorPrimary: \"#5a82f0\",\n    colorBgOn: \"#efefef\",\n    colorBgOff: \"#f5f5f5\"\n  }\n);\n\nconst widthObj = extractNumber(props.width);\nconst heightObj = extractNumber(props.height);\nconst paddingObj = extractNumber(props.padding);\nconst roundLength = heightObj.number - paddingObj.number * 2 + heightObj.suffix;\nconst roundPositionStart = props.padding;\nconst roundPositionEnd =\n  widthObj.number -\n  extractNumber(roundPositionStart).number -\n  extractNumber(roundLength).number +\n  widthObj.suffix;\nconst emits = defineEmits<{\n  (event: \"change\", value: boolean): void;\n}>();\n\nconst enabled = ref(props.init);\n\nwatch(enabled, function () {\n  emits(\"change\", enabled.value);\n});\n\nfunction click() {\n  enabled.value = !enabled.value;\n}\n</script>\n\n<template>\n  <div\n    class=\"switch\"\n    @click=\"click\"\n    :style=\"[\n      'width: ' + props.width,\n      'height: ' + props.height,\n      'background-color: ' + (enabled ? props.colorBgOn : props.colorBgOff)\n    ]\"\n  >\n    <span\n      class=\"round\"\n      :style=\"[\n        'width: ' + roundLength,\n        'height: ' + roundLength,\n        'background-color: ' +\n          (enabled\n            ? props.colorPrimary\n            : __color.set(props.colorPrimary).lighten(0.5).toString()),\n        'transform: translate(' +\n          (enabled ? roundPositionEnd : roundPositionStart) +\n          ', 0)'\n      ]\"\n    />\n  </div>\n</template>\n\n<style scoped>\n.switch {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  flex-shrink: 0;\n  cursor: pointer;\n  border-radius: 9999px;\n  box-sizing: border-box;\n  transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.round {\n  pointer-events: none;\n  display: inline-block;\n  box-sizing: border-box;\n  border-radius: 9999px;\n  transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n</style>\n","<script setup lang=\"ts\" generic=\"T extends string\">\nimport { ref, watch, onMounted } from \"vue\";\nimport { injectStyle } from \"@zyzgroup/core-web\";\nimport Icon from \"./Icon.vue\";\nimport Button from \"./Button.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { Icon, Button }\n});\n\nconst props = withDefaults(\n  defineProps<{\n    options: Array<T>;\n    initIndex?: number;\n    fontSize?: string;\n  }>(),\n  { initIndex: 0, fontSize: \"14px\" }\n);\n\nconst emits = defineEmits<{\n  (event: \"change\", index: number, value: T): void;\n}>();\n\nonMounted(() => {\n  injectStyle(`\n    :root {\n      --select-option-bg-color: #ffffff;\n      --select-option-bg-color-hover: #f5f5f5;\n    }\n  `);\n});\n\nconst open = ref(false);\n\nconst selectedIndex = ref(props.initIndex);\n\nwatch(selectedIndex, function () {\n  emits(\"change\", selectedIndex.value, props.options[selectedIndex.value]);\n});\n\nfunction click() {\n  open.value = !open.value;\n}\nfunction change(index: number) {\n  selectedIndex.value = index;\n  open.value = false;\n}\n</script>\n\n<template>\n  <div\n    class=\"select\"\n    :style=\"['font-size:' + fontSize]\"\n  >\n    <div @click=\"click\">\n      <slot\n        name=\"button\"\n        :selectedIndex=\"selectedIndex\"\n      >\n        <Button\n          icon=\"carbon:chevron-sort\"\n          iconPosition=\"right\"\n          :label=\"options[selectedIndex]\"\n          style=\"width: 100%\"\n        ></Button>\n      </slot>\n    </div>\n\n    <div\n      v-show=\"open\"\n      class=\"options\"\n      :style=\"{ border: '1px solid #cccccc' }\"\n    >\n      <div\n        @click=\"change(index)\"\n        class=\"option\"\n        v-for=\"(option, index) in options\"\n        :key=\"index\"\n        :value=\"index\"\n        :style=\"{\n          borderTop: (index == 0 ? '0' : '1px') + ' solid #cccccc'\n        }\"\n      >\n        <div class=\"option-inner\">\n          <slot\n            :item=\"option\"\n            :index=\"index\"\n          >\n            <span>\n              {{ option }}\n            </span>\n            <Icon\n              v-if=\"index == selectedIndex\"\n              icon=\"mingcute:check-fill\"\n              class=\"icon\"\n            ></Icon>\n          </slot>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.select {\n  display: inline-block;\n  position: relative;\n}\n.options {\n  position: relative;\n  width: 100%;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n  background-color: #ffffff;\n}\n.option {\n  cursor: pointer;\n}\n.option-inner {\n  padding: 0.5em 1em 0.5em 0.5em;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  position: relative;\n  background-color: var(--select-option-bg-color);\n}\n.option-inner:hover {\n  background-color: var(--select-option-bg-color-hover);\n}\n.icon {\n  position: absolute;\n  right: 0.5em;\n  top: 50%;\n  transform: translate(0, -50%);\n}\n</style>\n","<script setup lang=\"ts\" generic=\"T extends string\">\nimport { ref, watch, onMounted, watchEffect } from \"vue\";\nimport { getCSSVar, injectStyle } from \"@zyzgroup/core-web\";\nimport SVGDown from \"../svg/SVGDown.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { SVGDown }\n});\n\nconst props = withDefaults(\n  defineProps<{\n    options: Array<T>;\n    initIndex?: number;\n    fontSize?: string;\n    bgColor?: string;\n    hoverColor?: string;\n    selectedColor?: string;\n    fontColor?: string;\n    duration?: number;\n  }>(),\n  {\n    initIndex: 0,\n    fontSize: \"16px\",\n    bgColor: \"#ffffff\",\n    hoverColor: \"#f5f5f5\",\n    selectedColor: getCSSVar(\"--xg-blue\"),\n    fontColor: \"#333333\",\n    duration: 300\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"change\", index: number, value: T): void;\n}>();\n\nonMounted(() => {\n  injectStyle(`\n    :root {\n      --select-option-bg-color: ${props.bgColor};\n      --select-option-bg-color-hover: ${props.hoverColor};\n    }\n  `);\n});\n\nconst open = ref(false);\n\nconst selectedIndex = ref(props.initIndex);\n\nwatch(selectedIndex, function () {\n  emits(\"change\", selectedIndex.value, props.options[selectedIndex.value]);\n});\n\nfunction click() {\n  open.value = !open.value;\n}\nfunction change(index: number) {\n  selectedIndex.value = index;\n  open.value = false;\n}\n\nconst rotateSvg = ref(\"rotate(-180deg)\");\nwatchEffect(() => {\n  rotateSvg.value = open.value ? \"rotate(0deg)\" : \"rotate(-90deg)\";\n});\n</script>\n\n<template>\n  <div\n    class=\"select-absolute\"\n    :style=\"{ fontSize: props.fontSize, backgroundColor: props.bgColor }\"\n  >\n    <div\n      class=\"select-absolute-button\"\n      @click=\"click\"\n    >\n      <slot\n        name=\"button\"\n        :selectedIndex=\"selectedIndex\"\n      >\n        <div class=\"button-default\">\n          <div class=\"truncate\">{{ options[selectedIndex] }}</div>\n          <SVGDown\n            class=\"icon-down\"\n            width=\"20px\"\n            :style=\"{\n              transition: `transform ${props.duration}ms ease-in-out`,\n              transform: rotateSvg\n            }\"\n          ></SVGDown>\n        </div>\n      </slot>\n    </div>\n\n    <div\n      class=\"options\"\n      :style=\"{\n        maxHeight: open ? '200px' : 0,\n        transition: `all ${props.duration}ms ease-in-out`,\n        borderTop: `${open ? 1 : 0}px solid #e6e6e6`\n      }\"\n    >\n      <div\n        @click=\"change(index)\"\n        class=\"option\"\n        v-for=\"(option, index) in options\"\n        :key=\"index\"\n        :value=\"index\"\n      >\n        <slot\n          :item=\"option\"\n          :index=\"index\"\n        >\n          <div\n            class=\"option-default\"\n            :style=\"{\n              color:\n                selectedIndex == index ? props.selectedColor : props.fontColor\n            }\"\n          >\n            {{ option }}\n          </div>\n        </slot>\n      </div>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.select-absolute {\n  display: block;\n  position: relative;\n  width: 100%;\n}\n.select-absolute-button {\n  overflow: hidden;\n}\n.button-default {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 0 10px 0 15px;\n  height: 44px;\n  line-height: 44px;\n  /*\n  height: 32px;\n  line-height: 32px;\n  margin: 10px 15px;\n  border: 1px solid #e6e6e6;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  */\n}\n.icon-down {\n  flex: 0 0 auto;\n}\n.truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  word-wrap: normal;\n  word-break: break-all;\n}\n.options {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  transform: translateY(100%);\n  z-index: 99;\n  width: 100%;\n  box-sizing: border-box;\n  overflow-y: scroll;\n  box-sizing: border-box;\n}\n/* scroll bar start */\n.options::-webkit-scrollbar {\n  /* 隐藏默认的滚动条 */\n  -webkit-appearance: none;\n}\n.options::-webkit-scrollbar:vertical {\n  width: 2px;\n}\n/*\n.options::-webkit-scrollbar:horizontal{\n\theight: 2px;\n}\n*/\n.options::-webkit-scrollbar-track {\n  background-color: var(--select-option-bg-color);\n}\n/*\n.options::-webkit-scrollbar-track-piece {\n  width: 2px;\n}\n*/\n.options::-webkit-scrollbar-thumb {\n  /* 滚动条的其他样式定制，注意，这个一定也要定制，否则就是一个透明的滚动条 */\n  border-radius: 2px;\n  background-color: rgba(0, 0, 0, 0.3);\n}\n/* scroll bar end */\n.option {\n  cursor: pointer;\n}\n.option-default {\n  padding: 14px 15px;\n  line-height: 1;\n  background-color: var(--select-option-bg-color);\n}\n.option-default:hover {\n  background-color: var(--select-option-bg-color-hover);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { onUnmounted } from \"vue\";\nimport { tapOutSide$ } from \"@zyzgroup/core-web\";\nimport Box from \"./Box.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: {},\n  inheritAttrs: true\n});\n\nconst props = withDefaults(defineProps<{}>(), {});\n\nconst emits = defineEmits<{\n  (event: \"outSide\", e: HammerInput): void;\n}>();\n\nlet s1;\n\nconst mount = (box) => {\n  if (!s1) {\n    s1 = tapOutSide$(box.el).subscribe((e) => {\n      emits(\"outSide\", e);\n    });\n  }\n};\n\nonUnmounted(() => {\n  s1?.unsubscribe();\n});\n\ndefineExpose({});\n</script>\n\n<template>\n  <Box\n    class=\"tap\"\n    display-type=\"empty\"\n    @mount=\"mount\"\n  >\n    <slot></slot>\n  </Box>\n</template>\n\n<style></style>\n","<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\nimport { __color, getCSSVar } from \"@zyzgroup/core-web\";\nimport SVGDelete from \"../svg/SVGDelete.vue\";\nimport Box from \"../base/Box.vue\";\nimport Pan from \"../base/Pan.vue\";\nimport Tap from \"../base/Tap.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { SVGDelete },\n  inheritAttrs: true\n});\n\nconst props = withDefaults(\n  defineProps<{\n    deleteColor?: string;\n    borderRadius?: string;\n    deleteWidth?: string;\n    transtionDuration?: string;\n  }>(),\n  {\n    deleteColor: getCSSVar(\"--yz-xg-red\", \"#fa503c\"),\n    borderRadius: \"4px\",\n    deleteWidth: \"44px\",\n    transtionDuration: \"150ms\"\n  }\n);\n\nconst emits = defineEmits<{\n  (event: \"delete\"): void;\n}>();\n\nconst isShowDelete = ref(false);\n\nconst oppositeDeleteColor = computed(() =>\n  __color.set(props.deleteColor).opposite(true).toString()\n);\n\nconst click = () => {\n  isShowDelete.value = false;\n  emits(\"delete\");\n};\n\nfunction open() {\n  isShowDelete.value = true;\n}\nfunction close() {\n  isShowDelete.value = false;\n}\n\ndefineExpose({ open, close });\n</script>\n\n<template>\n  <Box\n    class=\"slide-left-item\"\n    :style=\"{\n      overflow: 'hidden',\n      borderRadius: props.borderRadius\n    }\"\n  >\n    <Tap @out-side=\"close\">\n      <Pan\n        @left=\"open\"\n        @right=\"close\"\n      >\n        <div\n          class=\"content\"\n          :style=\"{\n            transition: 'all ease-in ' + props.transtionDuration,\n            transform: isShowDelete\n              ? 'translate(-' + props.deleteWidth + ', 0)'\n              : 'translate(0, 0)'\n          }\"\n        >\n          <slot></slot>\n        </div>\n        <div\n          class=\"delete\"\n          @click=\"click\"\n          :style=\"{\n            backgroundColor: props.deleteColor,\n            width: props.deleteWidth,\n            transition: 'all ease-in ' + props.transtionDuration,\n            transform: isShowDelete\n              ? 'translate(0, 0)'\n              : 'translate(' + props.deleteWidth + ', 0)'\n          }\"\n        >\n          <div style=\"width: 38%\">\n            <SVGDelete :color=\"oppositeDeleteColor\"></SVGDelete>\n          </div>\n        </div>\n      </Pan>\n    </Tap>\n  </Box>\n</template>\n\n<style scoped>\n.content {\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n}\n.delete {\n  position: absolute;\n  right: 0;\n  top: 0;\n  height: 100%;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  cursor: pointer;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, watch, watchEffect } from \"vue\";\nimport CSSAnimation from \"../base/CSSAnimation.vue\";\n\n// for merge ce shadow-root styles\ndefineOptions({\n  customOptions: { CSSAnimation }\n});\n\nconst props = withDefaults(\n  defineProps<{\n    status?: \"wait\" | \"processing\" | \"success\" | \"error\";\n    color?: string;\n  }>(),\n  {\n    status: \"processing\"\n  }\n);\n\nconst emits = defineEmits<{\n  // (event: \"change\", value: boolean): void;\n}>();\n\nconst p = ref();\n\nwatch(\n  () => p.value,\n  () => {\n    p.value?.trigger();\n  }\n);\n\nlet color = ref(\"\");\nwatchEffect(() => {\n  switch (props.status) {\n    case \"wait\":\n      color.value = \"#d9d9d9\";\n      break;\n    case \"success\":\n      color.value = \"#52c41a\";\n      break;\n    case \"error\":\n      color.value = \"#ff4d4f\";\n      break;\n    case \"processing\":\n    default:\n      color.value = \"#1677ff\";\n      break;\n  }\n  if (props.color) {\n    color.value = props.color;\n  }\n});\n\ndefineExpose({});\n</script>\n\n<template>\n  <div\n    class=\"status\"\n    :style=\"{\n      position: 'relative',\n      display: 'inline-block',\n      width: '12px',\n      height: '12px',\n      borderRadius: '50%',\n      overflow: 'hidden'\n    }\"\n  >\n    <CSSAnimation\n      v-if=\"status === 'processing'\"\n      ref=\"p\"\n      name=\"statusProcessing\"\n      :style=\"{\n        width: '100%',\n        height: '100%',\n        borderRadius: '50%',\n        backgroundColor: color\n      }\"\n    ></CSSAnimation>\n    <div\n      :style=\"{\n        position: 'absolute',\n        top: '3px',\n        left: '3px',\n        width: '6px',\n        height: '6px',\n        borderRadius: '50%',\n        backgroundColor: color\n      }\"\n    ></div>\n  </div>\n</template>\n","<script setup lang=\"ts\">\nimport { onMounted, ref, h, nextTick } from \"vue\";\nimport { commonEmailValidator, formatTime } from \"@zyzgroup/core-common\";\nimport {\n  TWEEN,\n  type EasingFunction,\n  Color,\n  getCSSVar\n} from \"@zyzgroup/core-web\";\nimport {\n  getCEComponent,\n  popTel,\n  popBottom,\n  popTop,\n  popLeft,\n  popRight,\n  popCenter,\n  popAbsolute,\n  toast,\n  loading,\n  dialog,\n  numberKeyboard\n} from \"../globalTeleport\";\n\nimport Mouse from \"../components/base/Mouse.vue\";\n\nimport PageVerticalScrollProgressBar from \"../components/progress/PageVerticalScrollProgressBar.vue\";\nimport FPSStats from \"../components/fps/FPSStats.vue\";\nimport Button from \"../components/form/Button.vue\";\nimport Accordion from \"../components/form/Accordion.vue\";\nimport Input from \"../components/form/Input.vue\";\nimport InputRange from \"../components/form/InputRange.vue\";\nimport InputRangeBox from \"../components/form/InputRangeBox.vue\";\n\nimport LayoutPage from \"../components/layout/LayoutPage.vue\";\nimport LayoutCenter from \"../components/layout/LayoutCenter.vue\";\nimport CardFlip from \"../components/3d/CardFlip.vue\";\nimport Cube from \"../components/3d/Cube.vue\";\n\nimport Popover from \"../components/pop/Popover.vue\";\nimport ColorPicker from \"../components/form/ColorPicker.vue\";\n\nimport PlateDisplay from \"../components/plate/PlateDisplay.vue\";\nimport PlateMobile from \"../components/plate/PlateMobile.vue\";\n\nimport Image from \"../components/image/Image.vue\";\nimport imagesrc1 from \"@root/assets/images/picture.jpg\";\nimport imagesrc2 from \"@root/assets/images/logo.png\";\nimport imagesrc3 from \"@root/assets/images/ad.jpg\";\nimport imagemarilyn from \"@root/assets/images/marilyn.png\";\nimport imagebike from \"@root/assets/images/bike.png\";\nimport ImageView from \"../components/image/ImageView.vue\";\nconst imageViewMultiRef = ref();\nfunction openImageViewMulti() {\n  imageViewMultiRef.value?.open();\n}\n\nimport HandWritePanel from \"../components/hand/HandWritePanel.vue\";\nconst handRef = ref();\nconst downloadHandWrite = () => {\n  handRef.value.download();\n};\n\nimport EaseGroupGraphDisplay from \"../components/animate/EaseGroupGraphDisplay.vue\";\nconst easeName = ref<string>(\"\");\nconst easeFunction = ref<EasingFunction>(TWEEN.Easing.Linear.None);\nfunction selectedEaseFunction(\n  selectedEaseName: string,\n  selectedEaseFunction: EasingFunction\n) {\n  easeName.value = selectedEaseName;\n  easeFunction.value = selectedEaseFunction;\n}\n\nimport InterpolationGroupGraphDisplay from \"../components/animate/InterpolationGroupGraphDisplay.vue\";\n\nimport CSSTransition from \"../components/base/CSSTransition.vue\";\nconst effectsRef = ref();\nconst superRainbowRef = ref();\nconst superRainbowEnter = () => {\n  superRainbowRef.value?.trigger();\n};\nconst imageMount = () => {\n  effectsRef.value?.reset();\n};\nimport CSSAnimation, {\n  SupportedCSSAnimation\n} from \"../components/base/CSSAnimation.vue\";\nconst CSSAnimationRefs = [];\nconst animationEnter = (index) => {\n  CSSAnimationRefs[index]?.trigger();\n};\nconst animationLeave = (index) => {\n  CSSAnimationRefs[index]?.triggerReverse();\n};\n\nimport Page, { SupportedPageEffect } from \"../components/base/Page.vue\";\nconst pageEffect = ref<SupportedPageEffect>(\"static\");\nconst changePageEffect = (effect: SupportedPageEffect) => {\n  pageEffect.value = effect;\n};\nconst pageRef = ref();\nfunction openPage() {\n  pageRef.value?.open(pageEffect.value);\n}\nfunction closePage() {\n  pageRef.value?.close(pageEffect.value);\n}\n\nimport Routes, { SupportedRouteEffect } from \"../components/base/Routes.vue\";\nconst routeEffect = ref<SupportedRouteEffect>(\"moveToLeft\");\nconst changeRouteEffect = (effect: SupportedRouteEffect) => {\n  routeEffect.value = effect;\n};\nconst routesRef = ref();\nlet totals = 0;\nconst routeChangeStart = (\n  fromPageIndex: number,\n  toPageIndex: number,\n  totalPages: number\n) => {\n  // console.log(\n  //   `routeChangeStart: ${fromPageIndex} to ${toPageIndex}, total ${totalPages}`\n  // );\n};\nconst routeChangeEnd = (\n  fromPageIndex: number,\n  toPageIndex: number,\n  totalPages: number\n) => {\n  // console.log(\n  //   `routeChangeEnd: ${fromPageIndex} to ${toPageIndex}, total ${totalPages}`\n  // );\n  totals = totalPages;\n};\nfunction resetPage() {\n  routesRef.value?.reset([\n    {\n      // component: PlateMobile,\n      // attributes: {}\n      component: LayoutCenter,\n      child: \"Page 1\",\n      attributes: {\n        style: {\n          backgroundColor: Color.next(0)\n        }\n      }\n    },\n    {\n      // component: PlateMobile,\n      // attributes: {}\n      component: LayoutCenter,\n      child: \"Page 2\",\n      attributes: {\n        style: {\n          backgroundColor: Color.next()\n        }\n      }\n    },\n    {\n      // component: PlateMobile,\n      // attributes: {}\n      component: LayoutCenter,\n      child: \"Page 3\",\n      attributes: {\n        style: {\n          backgroundColor: Color.next()\n        }\n      }\n    }\n  ]);\n}\nfunction pushPage() {\n  routesRef.value?.push({\n    // component: PlateMobile,\n    component: LayoutCenter,\n    child: `Page ${totals + 1}`,\n    attributes: {\n      style: {\n        backgroundColor: Color.next()\n      }\n    }\n  });\n}\nfunction popPage() {\n  routesRef.value?.pop();\n}\nfunction forwardPage() {\n  routesRef.value?.forward();\n}\nfunction backPage() {\n  routesRef.value?.back();\n}\nfunction gotoPage() {\n  routesRef.value?.goto(0);\n}\n\nimport Video from \"../components/video/Video.vue\";\nimport videosrc from \"@root/server-client/assets/videos/sintel.webm\";\nconst videoRef = ref();\nconst playVideo = () => {\n  videoRef.value?.play();\n};\nconst pauseVideo = () => {\n  videoRef.value?.pause();\n};\n\nimport MapTianditu from \"../components/map/MapTianditu.vue\";\n\nconst popBottomSample = () => {\n  return popBottom(\n    h(\n      \"div\",\n      {\n        style: \"width: 100%;padding: 30px;background-color:#ffffff; \"\n      },\n      h(getCEComponent(\"yz-input\"), {\n        placeholder: \"请输入邮箱\",\n        validator: commonEmailValidator\n      })\n    )\n  );\n};\nconst popBottomFixedSample = () => {\n  return popBottom(\n    h(\n      \"div\",\n      {\n        style: \"width: 100%;padding: 30px;background-color:#ffffff; \"\n      },\n      h(getCEComponent(\"yz-input\"), {\n        placeholder: \"请输入邮箱\",\n        validator: commonEmailValidator\n      })\n    ),\n    {\n      fixed: 400, // 固定高度\n      contentBgColor: \"pink\"\n    }\n  );\n};\nconst popTopSample = () => {\n  return popTop(\n    h(\n      \"div\",\n      {\n        style: \"width: 100%;padding: 30px;background-color:#ffffff; \"\n      },\n      h(getCEComponent(\"yz-input\"), {\n        placeholder: \"请输入邮箱\",\n        validator: commonEmailValidator\n      })\n    )\n  );\n};\nconst popLeftSample = () => {\n  return popLeft(\n    h(\n      \"div\",\n      {\n        style: \"height: 100%;padding: 30px;background-color:#ffffff; \"\n      },\n      h(getCEComponent(\"yz-input\"), {\n        placeholder: \"请输入邮箱\",\n        validator: commonEmailValidator\n      })\n    )\n  );\n};\nconst popRightSample = () => {\n  return popRight(\n    h(\n      \"div\",\n      {\n        style: \"height: 100%;padding: 30px;background-color:#ffffff; \"\n      },\n      h(getCEComponent(\"yz-input\"), {\n        placeholder: \"请输入邮箱\",\n        validator: commonEmailValidator\n      })\n    )\n  );\n};\nconst popCenterSample = () => {\n  return popCenter(\n    h(\n      \"div\",\n      {\n        style:\n          \"width: 200px;height: 200px;padding: 30px;background-color:#ffffff;\"\n      },\n      h(getCEComponent(\"yz-input\"), {\n        placeholder: \"请输入邮箱\",\n        validator: commonEmailValidator\n      })\n    )\n  );\n};\nconst popAbsoluteSample = () => {\n  return popAbsolute(\n    h(\n      \"div\",\n      {\n        style:\n          \"width: 200px;height: 200px;padding: 30px;background-color:#ffffff;\"\n      },\n      h(getCEComponent(\"yz-input\"), {\n        placeholder: \"请输入邮箱\",\n        validator: commonEmailValidator\n      })\n    ),\n    {\n      popLeft: \"50%\",\n      popTop: \"50%\"\n    }\n  );\n};\nconst openDialogSample = () => {\n  dialog({\n    title: \"标题\",\n    content:\n      \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    showClose: true,\n    cancelText: \"取消\",\n    confirmText: \"确认\",\n    onCancel: () => {\n      console.log(\"cancel\");\n    },\n    onConfirm: () => {\n      console.log(\"confirm\");\n    }\n  });\n};\nconst dialogToastSample = () => {\n  toast(\"toast\");\n};\nconst openDialogLoadingSample = () => {\n  const close = loading(\"加载中...\");\n  setTimeout(() => {\n    close();\n  }, 2000);\n};\nconst openDialogMiniSample = () => {\n  dialog({\n    title: \"标题\",\n    content: \"ttttttttt\",\n    cancelText: \"取消\",\n    confirmText: \"确认\",\n    stylePattern: \"transparent\",\n    onCancel: () => {\n      console.log(\"cancel\");\n    },\n    onConfirm: () => {\n      console.log(\"confirm\");\n    }\n  });\n};\nconst openDialogRedSample = () => {\n  dialog({\n    title: \"标题\",\n    content: \"redredredredredredredredredredredredredredred\",\n    cancelText: \"\",\n    confirmText: \"确认\",\n    stylePattern: \"icon-warn-red\",\n    onCancel: () => {\n      console.log(\"cancel\");\n    },\n    onConfirm: () => {\n      console.log(\"confirm\");\n    }\n  });\n};\nconst openDialogBlueSample = () => {\n  dialog({\n    title: \"标题\",\n    content: \"blueblueblueblueblueblueblueblueblueblueblueblueblueblueblue\",\n    cancelText: \"取消\",\n    confirmText: \"确认\",\n    stylePattern: \"icon-warn-blue\",\n    onCancel: () => {\n      console.log(\"cancel\");\n    },\n    onConfirm: () => {\n      console.log(\"confirm\");\n    }\n  });\n};\nconst openNumberKeyboardSample = () => {\n  numberKeyboard({\n    min: 100.02,\n    max: 200.345,\n    onNumber: (n) => {\n      console.log(\"numberKeyboard: \" + n);\n    },\n    onError: (msg) => {\n      toast(msg);\n    }\n  });\n};\n\nimport Loading1 from \"../components/loading/Loading1.vue\";\nimport Loading2 from \"../components/loading/Loading2.vue\";\nimport Loading3 from \"../components/loading/Loading3.vue\";\nimport Loading4 from \"../components/loading/Loading4.vue\";\nimport Loading5 from \"../components/loading/Loading5.vue\";\nimport Loading6 from \"../components/loading/Loading6.vue\";\nimport Loading7 from \"../components/loading/Loading7.vue\";\nimport Loading8 from \"../components/loading/Loading8.vue\";\nimport Loading9 from \"../components/loading/Loading9.vue\";\nimport Loading10 from \"../components/loading/Loading10.vue\";\nimport Loading11 from \"../components/loading/Loading11.vue\";\n\nimport RingText from \"../components/chat/RingText.vue\";\n\nimport ClockFlipper from \"../components/clock/ClockFlipper.vue\";\nconst clockFlipper = ref();\nconst startClockFlipper = () => {\n  clockFlipper.value?.start(formatTime(new Date()));\n};\nconst pauseClockFlipper = () => {\n  clockFlipper.value?.pause();\n};\n\nimport BorderFocusText from \"../components/css/BorderFocusText.vue\";\nconst borderFocusTextRef = ref();\nimport Circle from \"../components/css/Circle.vue\";\nconst circleRef = ref();\nconst cssMouseEnter = (r) => {\n  switch (r) {\n    case \"borderFocusTextRef\":\n      borderFocusTextRef.value?.start();\n      break;\n    case \"circleRef\":\n      circleRef.value?.start();\n      break;\n  }\n};\nconst cssMouseLeave = (r) => {\n  switch (r) {\n    case \"borderFocusTextRef\":\n      borderFocusTextRef.value?.end();\n      break;\n    case \"circleRef\":\n      circleRef.value?.end();\n      break;\n  }\n};\n\nimport RingIndicator from \"../components/chat/RingIndicator.vue\";\nconst percent = ref(0);\nconst resetRingIndicator = () => {\n  percent.value = 0;\n};\nconst addRingIndicator = () => {\n  percent.value += Math.random() * 30;\n};\n\nlet timestamp = ref(\"1695000491000\");\nsetTimeout(() => {\n  timestamp.value = new Date().getTime().toFixed(0);\n  // console.log(timestamp.value)\n}, 3000);\n\nimport SVGPrompt from \"../components/svg/SVGPrompt.vue\";\nimport SVGQuestion from \"../components/svg/SVGQuestion.vue\";\nimport SVGFail from \"../components/svg/SVGFail.vue\";\nimport SVGSuccess from \"../components/svg/SVGSuccess.vue\";\nimport SVGWaiting from \"../components/svg/SVGWaiting.vue\";\nimport SVGLock from \"../components/svg/SVGLock.vue\";\nimport SVGDown from \"../components/svg/SVGDown.vue\";\nimport SVGWarn from \"../components/svg/SVGWarn.vue\";\nimport SVGAdd from \"../components/svg/SVGAdd.vue\";\nimport SVGDelete from \"../components/svg/SVGDelete.vue\";\nconst blue = getCSSVar(\"--xg-blue\");\nimport Icon from \"../components/form/Icon.vue\";\nconst icon = ref(\"carbon:accessibility\");\nconst color = ref(blue);\nconst count = ref(0);\nconst iconClick = () => {\n  icon.value =\n    count.value++ % 2 == 0 ? \"icon-park:add-subtract\" : \"carbon:accessibility\";\n};\n\nimport RadioGroup from \"../components/form/RadioGroup.vue\";\nimport CheckboxGroup from \"../components/form/CheckboxGroup.vue\";\nimport Switch from \"../components/form/Switch.vue\";\nimport Select from \"../components/form/Select.vue\";\nimport SelectAbsolute from \"../components/form/SelectAbsolute.vue\";\nimport SlideLeftItem from \"../components/form/SlideLeftItem.vue\";\nimport Status from \"../components/form/Status.vue\";\n\nonMounted(() => {});\n</script>\n\n<template>\n  <div style=\"position: relative; overflow: hidden\">\n    <div\n      style=\"\n        position: fixed;\n        top: 0;\n        left: 0;\n        z-index: 100;\n        width: 100%;\n        height: 6px;\n      \"\n    >\n      <PageVerticalScrollProgressBar></PageVerticalScrollProgressBar>\n    </div>\n\n    <FPSStats></FPSStats>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Form Widgets - Button</template>\n      <template #content>\n        <div>\n          <Button\n            :icon=\"icon\"\n            @throttleClick=\"iconClick\"\n          >\n            <div>fullfill</div>\n          </Button>\n          <Button\n            stylePattern=\"transparent\"\n            @throttleClick=\"iconClick\"\n          >\n            <div>transparent</div>\n          </Button>\n          <Button\n            width=\"100%\"\n            @throttleClick=\"iconClick\"\n          >\n            <div>100%</div>\n          </Button>\n          <Button\n            label=\"Disabled\"\n            :icon=\"icon\"\n            @click=\"iconClick\"\n            :disabled=\"true\"\n          ></Button>\n          <Button\n            label=\"outline\"\n            stylePattern=\"outline\"\n            borderRadius=\"22px\"\n            bgColor=\"#ffffff\"\n            :icon=\"icon\"\n            @click=\"iconClick\"\n          ></Button>\n          <Button\n            label=\"Disabled\"\n            stylePattern=\"outline\"\n            borderRadius=\"22px\"\n            bgColor=\"#ffffff\"\n            :icon=\"icon\"\n            @click=\"iconClick\"\n            :disabled=\"true\"\n          ></Button>\n          <Button\n            label=\"gradient\"\n            bgColorStart=\"#fa503c\"\n            bgColorEnd=\"#fa8c78\"\n          ></Button>\n          <Button\n            label=\"gradient\"\n            bgColorStart=\"#fa503c\"\n            bgColorEnd=\"#fa8c78\"\n            :disabled=\"true\"\n          ></Button>\n          <Button\n            label=\"gradient\"\n            bgColorStart=\"#5a82f0\"\n            bgColorEnd=\"#66b3ff\"\n          ></Button>\n          <Button\n            label=\"gradient\"\n            bgColorStart=\"#5a82f0\"\n            bgColorEnd=\"#66b3ff\"\n            :disabled=\"true\"\n          ></Button>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Form Widgets - RadioGroup</template>\n      <template #content>\n        <div>\n          <RadioGroup\n            :options=\"['111', '222', '333', '444']\"\n            :initIndex=\"1\"\n            :disabledIndexs=\"[3]\"\n            @change=\"console.log\"\n          ></RadioGroup>\n        </div>\n        <div>\n          <RadioGroup\n            :isRounded=\"false\"\n            :options=\"['111', '222', '333', '444']\"\n            :initIndex=\"1\"\n            :disabledIndexs=\"[3]\"\n            @change=\"console.log\"\n          ></RadioGroup>\n        </div>\n        <div>\n          <RadioGroup\n            colorBackground=\"#ffffff\"\n            :colorForeground=\"blue\"\n            colorChangeMode=\"only-foreground\"\n            :options=\"['111', '222', '333', '444']\"\n            :initIndex=\"1\"\n            :disabledIndexs=\"[3]\"\n            @change=\"console.log\"\n          ></RadioGroup>\n        </div>\n        <div>\n          <RadioGroup\n            colorBackground=\"#ffffff\"\n            :colorForeground=\"blue\"\n            colorChangeMode=\"only-foreground\"\n            :isRounded=\"false\"\n            :options=\"['111', '222', '333', '444']\"\n            :initIndex=\"1\"\n            :disabledIndexs=\"[3]\"\n            @change=\"console.log\"\n          ></RadioGroup>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Form Widgets - CheckboxGroup</template>\n      <template #content>\n        <div>\n          <CheckboxGroup\n            :options=\"['111', '222', '333', '444']\"\n            :initIndexs=\"[1, 2]\"\n            :disabledIndexs=\"[2, 3]\"\n            @change=\"console.log\"\n          ></CheckboxGroup>\n        </div>\n        <div>\n          <CheckboxGroup\n            :isRounded=\"true\"\n            :options=\"['111', '222', '333', '444']\"\n            :initIndexs=\"[1, 2]\"\n            :disabledIndexs=\"[2, 3]\"\n            @change=\"console.log\"\n          ></CheckboxGroup>\n        </div>\n        <div>\n          <CheckboxGroup\n            colorBackground=\"#ffffff\"\n            :colorForeground=\"blue\"\n            colorChangeMode=\"only-foreground\"\n            :options=\"['111', '222', '333', '444']\"\n            :initIndexs=\"[1, 2]\"\n            :disabledIndexs=\"[2, 3]\"\n            @change=\"console.log\"\n          ></CheckboxGroup>\n        </div>\n        <div>\n          <CheckboxGroup\n            :isRounded=\"true\"\n            colorBackground=\"#ffffff\"\n            :colorForeground=\"blue\"\n            colorChangeMode=\"only-foreground\"\n            :options=\"['111', '222', '333', '444']\"\n            :initIndexs=\"[1, 2]\"\n            :disabledIndexs=\"[2, 3]\"\n            @change=\"console.log\"\n          ></CheckboxGroup>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Form Widgets - Switch</template>\n      <template #content>\n        <div>\n          <Switch\n            :init=\"true\"\n            color-bg-on=\"#ffffff\"\n            color-bg-off=\"#ffffff\"\n            @change=\"console.log\"\n          ></Switch>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Form Widgets - Select</template>\n      <template #content>\n        <div style=\"height: 300px\">\n          <Select\n            :options=\"['options1', 'options2', 'options33333333333']\"\n            :initIndex=\"2\"\n            @change=\"console.log\"\n          ></Select>\n          <div style=\"width: 200px\">\n            <SelectAbsolute\n              :options=\"[\n                'options1',\n                'options2',\n                'options33333333333',\n                'options4',\n                'options5555',\n                'options666666666666666666666666666666666666666666666666',\n                'options7',\n                'options8'\n              ]\"\n              :initIndex=\"1\"\n              @change=\"console.log\"\n            ></SelectAbsolute>\n          </div>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Form Widgets - SlideLeftItem</template>\n      <template #content>\n        <div style=\"margin: 30px\">\n          <SlideLeftItem @delete=\"() => console.log('delete')\">\n            <div style=\"background-color: #ffffff\">\n              <Button>测试slide</Button>\n            </div>\n          </SlideLeftItem>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Form Widgets - Input</template>\n      <template #content>\n        <div style=\"margin-top: 20px\">\n          <Input :validator=\"commonEmailValidator\"></Input>\n        </div>\n        <div style=\"margin-top: 20px\">\n          <Input\n            placeholderType=\"underline\"\n            :showError=\"true\"\n            :validator=\"commonEmailValidator\"\n          ></Input>\n        </div>\n        <div style=\"margin-top: 20px\">\n          <Input\n            placeholder=\"请输入邮箱\"\n            :validator=\"commonEmailValidator\"\n            defaultValue=\"489573239@qq.com\"\n            @input=\"console.log\"\n          ></Input>\n        </div>\n        <div style=\"margin-top: 20px\">\n          <Input\n            placeholder=\"请输入邮箱\"\n            placeholderType=\"jump\"\n            :validator=\"commonEmailValidator\"\n          ></Input>\n        </div>\n        <div style=\"margin-top: 20px\">\n          <Input\n            placeholder=\"请输入邮箱\"\n            placeholderType=\"jump-each\"\n            :validator=\"commonEmailValidator\"\n          ></Input>\n        </div>\n        <div style=\"width: 200px; margin-top: 20px; margin-bottom: 20px\">\n          <InputRange\n            :defaultValue=\"20\"\n            :min=\"0\"\n            :max=\"200\"\n            :step=\"2\"\n          ></InputRange>\n          <InputRangeBox\n            :defaultValue=\"20\"\n            :min=\"0\"\n            :max=\"200\"\n            :step=\"2\"\n          ></InputRangeBox>\n        </div>\n\n        <div v-timestamp=\"`yyyy-mm-dd hh:ii:ss`\">1695000491000</div>\n        <div v-timestamp>{{ timestamp }}</div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Icon + SVG</template>\n      <template #content>\n        <div style=\"margin-top: 30px\">\n          <Status status=\"wait\"></Status>\n          <Status status=\"processing\"></Status>\n          <Status status=\"success\"></Status>\n          <Status status=\"error\"></Status>\n        </div>\n        <div style=\"margin: 30px\">\n          <icon\n            :icon=\"icon\"\n            :color=\"color\"\n            @click=\"iconClick\"\n          ></icon>\n          <SVGPrompt></SVGPrompt>\n          <SVGQuestion></SVGQuestion>\n          <SVGFail></SVGFail>\n          <SVGSuccess></SVGSuccess>\n          <SVGWaiting></SVGWaiting>\n          <SVGLock></SVGLock>\n          <SVGDown></SVGDown>\n          <div style=\"display: inline-block; width: 24px; height: 24px\">\n            <SVGAdd></SVGAdd>\n          </div>\n          <div style=\"display: inline-block; width: 24px; height: 24px\">\n            <SVGDelete></SVGDelete>\n          </div>\n          <div style=\"display: inline-block; width: 64px; height: 64px\">\n            <SVGWarn></SVGWarn>\n          </div>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Plate</template>\n      <template #content>\n        <div>\n          <PlateDisplay\n            plate=\"苏U888888\"\n            plateType=\"蓝牌\"\n            displayType=\"chinese\"\n          ></PlateDisplay>\n          <br />\n          <PlateDisplay\n            plate=\"苏U888888\"\n            plateType=\"蓝牌\"\n            displayType=\"dot\"\n          ></PlateDisplay>\n          <br />\n          <PlateDisplay\n            plate=\"苏U888888\"\n            plateType=\"b\"\n            displayType=\"plaintext\"\n          ></PlateDisplay>\n          <br />\n          <PlateDisplay plate=\"苏U666666\"></PlateDisplay>\n          <br />\n          <PlateDisplay\n            plate=\"无牌车\"\n            plateType=\"b\"\n          ></PlateDisplay>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Pop</template>\n      <template #content>\n        <div>\n          <div style=\"margin-top: 30px\">\n            <Button\n              label=\"pop-bottom\"\n              @click=\"popBottomSample\"\n            ></Button>\n            <Button\n              label=\"pop-bottom-fixed\"\n              @click=\"popBottomFixedSample\"\n            ></Button>\n            <Button\n              label=\"pop-top\"\n              @click=\"popTopSample\"\n            ></Button>\n            <Button\n              label=\"pop-left\"\n              @click=\"popLeftSample\"\n            ></Button>\n            <Button\n              label=\"pop-right\"\n              @click=\"popRightSample\"\n            ></Button>\n            <Button\n              label=\"pop-center\"\n              @click=\"popCenterSample\"\n            ></Button>\n            <Button\n              label=\"pop-absolute\"\n              @click=\"popAbsoluteSample\"\n            ></Button>\n            <Button\n              label=\"pop-tel\"\n              @click=\"() => popTel('400-158-8363')\"\n            ></Button>\n          </div>\n\n          <div style=\"margin-top: 30px\">\n            <Popover>\n              <template #panel>\n                <div\n                  style=\"width: 300px; height: 200px; background-color: white\"\n                >\n                  Panel\n                </div>\n              </template>\n            </Popover>\n            <ColorPicker @color=\"console.log\"></ColorPicker>\n          </div>\n\n          <!-- <div style=\"margin-top: 30px\">\n            <icon\n              :icon=\"icon\"\n              :color=\"color\"\n              @click=\"click\"\n            ></icon>\n            <SVGPrompt></SVGPrompt>\n            <SVGQuestion></SVGQuestion>\n            <SVGFail></SVGFail>\n            <SVGSuccess></SVGSuccess>\n            <SVGWaiting></SVGWaiting>\n            <SVGLock></SVGLock>\n            <SVGDown></SVGDown>\n            <div style=\"display: inline-block; width: 24px; height: 24px\">\n              <SVGAdd></SVGAdd>\n            </div>\n            <div style=\"display: inline-block; width: 24px; height: 24px\">\n              <SVGDelete></SVGDelete>\n            </div>\n            <div style=\"display: inline-block; width: 64px; height: 64px\">\n              <SVGWarn></SVGWarn>\n            </div>\n          </div> -->\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Dialog</template>\n      <template #content>\n        <div>\n          <Button\n            label=\"dialog\"\n            @click=\"openDialogSample\"\n          ></Button>\n          <Button\n            label=\"dialog-loading\"\n            @click=\"openDialogLoadingSample\"\n          ></Button>\n          <Button\n            label=\"dialog-toast\"\n            @click=\"dialogToastSample\"\n          ></Button>\n          <Button\n            label=\"dialog-mini\"\n            @click=\"openDialogMiniSample\"\n          ></Button>\n          <Button\n            label=\"dialog-icon-warn-red\"\n            @click=\"openDialogRedSample\"\n          ></Button>\n          <Button\n            label=\"dialog-icon-warn-blue\"\n            @click=\"openDialogBlueSample\"\n          ></Button>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Keyboard</template>\n      <template #content>\n        <div>\n          <Button\n            label=\"NumberKeyboard\"\n            @click=\"openNumberKeyboardSample\"\n          ></Button>\n\n          <PlateMobile @complete=\"console.log\"></PlateMobile>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Image + ImageView</template>\n      <template #content>\n        <div style=\"width: 100%; height: 200px\">\n          <Image\n            :src=\"imagesrc1\"\n            mode=\"aspectFill\"\n          ></Image>\n        </div>\n        <div>\n          <Button\n            label=\"open image view\"\n            @click=\"openImageViewMulti\"\n          ></Button>\n          <ImageView\n            ref=\"imageViewMultiRef\"\n            :urls=\"[imagesrc1, imagesrc2, imagesrc3, imagesrc2]\"\n          ></ImageView>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>手写板</template>\n      <template #content>\n        <div>\n          <HandWritePanel ref=\"handRef\"></HandWritePanel>\n          <Button\n            label=\"下载\"\n            @click=\"downloadHandWrite\"\n          ></Button>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>缓动函数 {{ easeName }}</template>\n      <template #content>\n        <div>\n          <EaseGroupGraphDisplay\n            @selectedEaseFunction=\"selectedEaseFunction\"\n          ></EaseGroupGraphDisplay>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>插值函数</template>\n      <template #content>\n        <div>\n          <InterpolationGroupGraphDisplay></InterpolationGroupGraphDisplay>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion\n      ref=\"effectsRef\"\n      style=\"margin: 30px\"\n    >\n      <template #title>CSSTransition + CSSAnimation + Effects</template>\n      <template #content>\n        <Mouse @enter=\"superRainbowEnter\">\n          <CSSTransition\n            ref=\"superRainbowRef\"\n            name=\"superRainbow\"\n          >\n            <div style=\"width: 100px; height: 100px\">\n              <Image\n                :src=\"imagebike\"\n                @mount=\"imageMount\"\n              />\n            </div>\n          </CSSTransition>\n        </Mouse>\n\n        <div>\n          <div\n            v-for=\"(item, index) in [\n            'jelly',\n            'bounce',\n            'flash',\n            'pulse',\n            'rubberBand',\n            'shakeX',\n            'shakeY',\n            'headShake',\n            'swing',\n            'tada',\n            'wobble',\n            'jello',\n            'heartBeat',\n            'backInLeft',\n            'backInRight',\n            'backInUp',\n            'backInDown',\n            'backOutLeft',\n            'backOutRight',\n            'backOutUp',\n            'backOutDown',\n            'bounceIn',\n            'bounceInLeft',\n            'bounceInRight',\n            'bounceInUp',\n            'bounceInDown',\n            'bounceOut',\n            'bounceOutLeft',\n            'bounceOutRight',\n            'bounceOutUp',\n            'bounceOutDown',\n            'fadeIn',\n            'fadeInLeft',\n            'fadeInLeftBig',\n            'fadeInRight',\n            'fadeInRightBig',\n            'fadeInUp',\n            'fadeInUpBig',\n            'fadeInDown',\n            'fadeInDownBig',\n            'fadeInTopLeft',\n            'fadeInTopRight',\n            'fadeInBottomLeft',\n            'fadeInBottomRight',\n            'fadeOut',\n            'fadeOutLeft',\n            'fadeOutLeftBig',\n            'fadeOutRight',\n            'fadeOutRightBig',\n            'fadeOutUp',\n            'fadeOutUpBig',\n            'fadeOutDown',\n            'fadeOutDownBig',\n            'fadeOutTopLeft',\n            'fadeOutTopRight',\n            'fadeOutBottomRight',\n            'fadeOutBottomLeft',\n            'flip',\n            'flipInX',\n            'flipInY',\n            'flipOutX',\n            'flipOutY',\n            'flipOutRight',\n            'flipInLeft',\n            'flipOutLeft',\n            'flipInRight',\n            'flipOutTop',\n            'flipInBottom',\n            'flipOutBottom',\n            'flipInTop',\n            'lightSpeedInLeft',\n            'lightSpeedInRight',\n            'lightSpeedOutLeft',\n            'lightSpeedOutRight',\n            'rotateIn',\n            'rotateInUpLeft',\n            'rotateInUpRight',\n            'rotateInDownLeft',\n            'rotateInDownRight',\n            'rotateOut',\n            'rotateOutUpLeft',\n            'rotateOutUpRight',\n            'rotateOutDownLeft',\n            'rotateOutDownRight',\n            'hinge',\n            'rotateFall',\n            'rotateOutNewspaper',\n            'rotateInNewspaper',\n            'jackInTheBox',\n            'rollIn',\n            'rollOut',\n            'zoomIn',\n            'zoomInLeft',\n            'zoomInRight',\n            'zoomInUp',\n            'zoomInDown',\n            'zoomOut',\n            'zoomOutLeft',\n            'zoomOutRight',\n            'zoomOutUp',\n            'zoomOutDown',\n            'fade',\n            'moveFromLeft',\n            'moveToLeft',\n            'moveFromRight',\n            'moveToRight',\n            'moveFromTop',\n            'moveToTop',\n            'moveFromBottom',\n            'moveToBottom',\n            'moveFromLeftFade',\n            'moveToLeftFade',\n            'moveFromRightFade',\n            'moveToRightFade',\n            'moveFromTopFade',\n            'moveToTopFade',\n            'moveFromBottomFade',\n            'moveToBottomFade',\n            'scaleFromSmall',\n            'scaleToSmall',\n            'scaleFromLarge',\n            'scaleToLarge',\n            'scaleFromSmallCenter',\n            'scaleToSmallCenter',\n            'slideInLeft',\n            'slideInRight',\n            'slideInUp',\n            'slideInDown',\n            'slideOutLeft',\n            'slideOutRight',\n            'slideOutUp',\n            'slideOutDown',\n            'rotateRightSideFirst',\n            'rotateLeftSideFirst',\n            'rotateTopSideFirst',\n            'rotateBottomSideFirst',\n            'rotatePushLeft',\n            'rotatePushRight',\n            'rotatePushTop',\n            'rotatePushBottom',\n            'rotatePullRight',\n            'rotatePullLeft',\n            'rotatePullTop',\n            'rotatePullBottom',\n            'rotateFoldRight',\n            'rotateFoldLeft',\n            'rotateFoldTop',\n            'rotateFoldBottom',\n            'rotateUnfoldLeft',\n            'rotateUnfoldRight',\n            'rotateUnfoldTop',\n            'rotateUnfoldBottom',\n            'rotateRoomLeftOut',\n            'rotateRoomLeftIn',\n            'rotateRoomRightOut',\n            'rotateRoomRightIn',\n            'rotateRoomTopOut',\n            'rotateRoomTopIn',\n            'rotateRoomBottomOut',\n            'rotateRoomBottomIn',\n            'rotateCubeLeftOut',\n            'rotateCubeLeftIn',\n            'rotateCubeRightOut',\n            'rotateCubeRightIn',\n            'rotateCubeTopOut',\n            'rotateCubeTopIn',\n            'rotateCubeBottomOut',\n            'rotateCubeBottomIn',\n            'rotateCarouselLeftOut',\n            'rotateCarouselLeftIn',\n            'rotateCarouselRightOut',\n            'rotateCarouselRightIn',\n            'rotateCarouselTopOut',\n            'rotateCarouselTopIn',\n            'rotateCarouselBottomOut',\n            'rotateCarouselBottomIn',\n            'rotateSidesOut',\n            'rotateSidesIn',\n            'rotateSlideOut',\n            'rotateSlideIn',\n            'statusProcessing'\n            ] as SupportedCSSAnimation[]\"\n            :key=\"item\"\n            style=\"padding: 10px 0; border: 1px solid #cccccc\"\n          >\n            <Mouse\n              @enter=\"\n                (e) => {\n                  animationEnter(index);\n                }\n              \"\n              @leave=\"\n                (e) => {\n                  animationLeave(index);\n                }\n              \"\n            >\n              <CSSAnimation\n                :ref=\"(el) => CSSAnimationRefs.push(el)\"\n                :name=\"item\"\n              >\n                CSSAnimation {{ item }}\n              </CSSAnimation>\n            </Mouse>\n          </div>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Page + Routes</template>\n      <template #content>\n        <div class=\"btns\">\n          <RadioGroup\n            :options=\"[\n              'static',\n              'moveFromLeft',\n              'moveToLeft',\n              'moveFromRight',\n              'moveToRight',\n              'moveFromTop',\n              'moveToTop',\n              'moveFromBottom',\n              'moveToBottom',\n              'fade',\n              'moveFromLeftFade',\n              'moveToLeftFade',\n              'moveFromRightFade',\n              'moveToRightFade',\n              'moveFromTopFade',\n              'moveToTopFade',\n              'moveFromBottomFade',\n              'moveToBottomFade',\n              'scaleFromSmall',\n              'scaleToSmall',\n              'scaleFromLarge',\n              'scaleToLarge',\n              'scaleFromSmallCenter',\n              'scaleToSmallCenter',\n              'rotateRightSideFirst',\n              'rotateLeftSideFirst',\n              'rotateTopSideFirst',\n              'rotateBottomSideFirst',\n              'flipOutRight',\n              'flipInLeft',\n              'flipOutLeft',\n              'flipInRight',\n              'flipOutTop',\n              'flipInBottom',\n              'flipOutBottom',\n              'flipInTop',\n              'rotateFall',\n              'rotateOutNewspaper',\n              'rotateInNewspaper',\n              'rotatePushLeft',\n              'rotatePushRight',\n              'rotatePushTop',\n              'rotatePushBottom',\n              'rotatePullRight',\n              'rotatePullLeft',\n              'rotatePullTop',\n              'rotatePullBottom',\n              'rotateFoldRight',\n              'rotateFoldLeft',\n              'rotateFoldTop',\n              'rotateFoldBottom',\n              'rotateUnfoldLeft',\n              'rotateUnfoldRight',\n              'rotateUnfoldTop',\n              'rotateUnfoldBottom',\n              'rotateRoomLeftOut',\n              'rotateRoomLeftIn',\n              'rotateRoomRightOut',\n              'rotateRoomRightIn',\n              'rotateRoomTopOut',\n              'rotateRoomTopIn',\n              'rotateRoomBottomOut',\n              'rotateRoomBottomIn',\n              'rotateCubeLeftOut',\n              'rotateCubeLeftIn',\n              'rotateCubeRightOut',\n              'rotateCubeRightIn',\n              'rotateCubeTopOut',\n              'rotateCubeTopIn',\n              'rotateCubeBottomOut',\n              'rotateCubeBottomIn',\n              'rotateCarouselLeftOut',\n              'rotateCarouselLeftIn',\n              'rotateCarouselRightOut',\n              'rotateCarouselRightIn',\n              'rotateCarouselTopOut',\n              'rotateCarouselTopIn',\n              'rotateCarouselBottomOut',\n              'rotateCarouselBottomIn',\n              'rotateSidesOut',\n              'rotateSidesIn',\n              'rotateSlideOut',\n              'rotateSlideIn'\n            ]\"\n            @change=\"changePageEffect\"\n          ></RadioGroup>\n        </div>\n        <div>\n          <Button @click=\"openPage\">page: open</Button>\n          <Button @click=\"closePage\">page: close</Button>\n        </div>\n        <div\n          style=\"\n            width: 100%;\n            height: 300px;\n            border: 1px solid black;\n            background-color: #333;\n          \"\n        >\n          <Page\n            ref=\"pageRef\"\n            :effect=\"pageEffect\"\n          >\n            <PlateMobile></PlateMobile>\n          </Page>\n        </div>\n        <div style=\"padding: 30px 0; font-size: 16px\">\n          <div class=\"btns\">\n            <RadioGroup\n              :options=\"[\n                'moveToLeft',\n                'moveToRight',\n                'moveToTop',\n                'moveToBottom',\n                'moveFromLeftPrevFade',\n                'moveFromRightPrevFade',\n                'moveFromTopPrevFade',\n                'moveFromBottomPrevFade',\n                'moveToLeftFade',\n                'moveToRightFade',\n                'moveToTopFade',\n                'moveToBottomFade',\n                'moveToLeftEasing',\n                'moveToRightEasing',\n                'moveToTopEasing',\n                'moveToBottomEasing',\n                'moveFromLeftPrevScaleToSmall',\n                'moveFromRightPrevScaleToSmall',\n                'moveFromTopPrevScaleToSmall',\n                'moveFromBottomPrevScaleToSmall',\n                'scaleSmall',\n                'scaleLarge',\n                'scaleToLargePrevScaleToSmall',\n                'scaleFromSmallPrevMoveToLeft',\n                'scaleFromSmallPrevMoveToRight',\n                'scaleFromSmallPrevMoveToTop',\n                'scaleFromSmallPrevMoveToBottom',\n                'glueToLeft',\n                'glueToRight',\n                'glueToTop',\n                'glueToBottom',\n                'flipToLeft',\n                'flipToRight',\n                'flipToTop',\n                'flipToBottom',\n                'rotateFall',\n                'newspaper',\n                'moveFromLeftPrevPush',\n                'moveFromRightPrevPush',\n                'moveFromTopPrevPush',\n                'moveFromBottomPrevPush',\n                'pullFromLeftPrevPush',\n                'pullFromRightPrevPush',\n                'pullFromTopPrevPush',\n                'pullFromBottomPrevPush',\n                'moveFromLeftFadePrevFold',\n                'moveFromRightFadePrevFold',\n                'moveFromTopFadePrevFold',\n                'moveFromBottomFadePrevFold',\n                'moveToLeftFadePrevUnfold',\n                'moveToRightFadePrevUnfold',\n                'moveToTopFadePrevUnfold',\n                'moveToBottomFadePrevUnfold',\n                'rotateRoomLeftIn',\n                'rotateRoomRightIn',\n                'rotateRoomTopIn',\n                'rotateRoomBottomIn',\n                'rotateCubeLeftIn',\n                'rotateCubeRightIn',\n                'rotateCubeTopIn',\n                'rotateCubeBottomIn',\n                'rotateCarouselLeftIn',\n                'rotateCarouselRightIn',\n                'rotateCarouselTopIn',\n                'rotateCarouselBottomIn',\n                'rotateSidesIn',\n                'rotateSlideIn'\n              ]\"\n              @change=\"changeRouteEffect\"\n            ></RadioGroup>\n          </div>\n          <div>\n            <Button @click=\"pushPage\">push</Button>\n            <Button @click=\"popPage\">pop</Button>\n            <Button @click=\"gotoPage\">goto0</Button>\n            <Button @click=\"resetPage\">reset</Button>\n            <Button @click=\"backPage\">back</Button>\n            <Button @click=\"forwardPage\">forward</Button>\n          </div>\n          <div\n            style=\"\n              width: 100%;\n              height: 200px;\n              border: 1px solid black;\n              background-color: #333;\n            \"\n          >\n            <Routes\n              ref=\"routesRef\"\n              :effect=\"routeEffect\"\n              @routeChangeStart=\"routeChangeStart\"\n              @routeChangeEnd=\"routeChangeEnd\"\n            />\n          </div>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Video</template>\n      <template #content>\n        <div>\n          <div>\n            <Button @click=\"playVideo\">play</Button>\n            <Button @click=\"pauseVideo\">pause</Button>\n          </div>\n          <Video\n            ref=\"videoRef\"\n            :src=\"videosrc\"\n            :autoplay=\"false\"\n          ></Video>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>天地图</template>\n      <template #content>\n        <div style=\"height: 500px\">\n          <MapTianditu>\n            <template v-slot=\"map\">\n              <div\n                id=\"mapTiandituDiv\"\n                :style=\"{\n                  width: map.width,\n                  height: map.height\n                }\"\n              ></div>\n            </template>\n          </MapTianditu>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Layout</template>\n      <template #content>\n        <div style=\"padding: 30px 0; font-size: 16px\">\n          <div style=\"display: inline-block; width: 2rem; height: 4rem\">\n            <LayoutPage>\n              <template #header>\n                <div :style=\"{ height: '1rem', backgroundColor: '#5a82f0' }\">\n                  header\n                </div>\n              </template>\n              <template #footer>\n                <div :style=\"{ height: '1rem', backgroundColor: '#5a82f0' }\">\n                  footer\n                </div>\n              </template>\n              <div>\n                <div>main1</div>\n                <div>main2</div>\n                <div>main3</div>\n                <div>main4</div>\n                <div>main5</div>\n                <div>main6</div>\n                <div>main7</div>\n                <div>main8</div>\n                <div>main9</div>\n                <div>main10</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main</div>\n                <div>main-last</div>\n              </div>\n            </LayoutPage>\n          </div>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>3D</template>\n      <template #content>\n        <div style=\"padding: 30px 0; font-size: 16px; display: flex\">\n          <div style=\"width: 100px; height: 200px\">\n            <CardFlip>\n              <template #front>\n                <div style=\"background-color: #ff0000\">front1</div>\n              </template>\n              <template #back>\n                <div style=\"background-color: #00ff00\">back1</div>\n              </template>\n            </CardFlip>\n          </div>\n          <div style=\"width: 100px; height: 200px\">\n            <CardFlip type=\"slide\">\n              <template #front>\n                <div style=\"background-color: #0000ff\">front2</div>\n              </template>\n              <template #back>\n                <div style=\"background-color: #00ff00\">back2</div>\n              </template>\n            </CardFlip>\n          </div>\n          <div>\n            <Cube></Cube>\n          </div>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Loading</template>\n      <template #content>\n        <div\n          style=\"padding: 30px 0; font-size: 16px\"\n          class=\"loadings\"\n        >\n          <div>\n            <Loading1></Loading1>\n          </div>\n          <div>\n            <Loading2></Loading2>\n          </div>\n          <div>\n            <Loading3></Loading3>\n          </div>\n          <div>\n            <Loading4></Loading4>\n          </div>\n          <div>\n            <Loading5></Loading5>\n          </div>\n          <div>\n            <Loading6></Loading6>\n          </div>\n          <div>\n            <Loading7></Loading7>\n          </div>\n          <div>\n            <Loading8></Loading8>\n          </div>\n          <div>\n            <Loading9></Loading9>\n          </div>\n          <div>\n            <Loading10></Loading10>\n          </div>\n          <div>\n            <Loading11></Loading11>\n          </div>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>ClockFlipper</template>\n      <template #content>\n        <Button\n          label=\"start\"\n          @click=\"startClockFlipper\"\n        ></Button>\n        <Button\n          label=\"pause\"\n          @click=\"pauseClockFlipper\"\n        ></Button>\n        <div style=\"width: 460px; height: 120px\">\n          <ClockFlipper ref=\"clockFlipper\"></ClockFlipper>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Chat - RingText</template>\n      <template #content>\n        <div style=\"width: 200px; height: 200px\">\n          <RingText\n            :text=\"'开启中...'\"\n            :secondText=\"'请您耐心等待'\"\n          ></RingText>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>Chat - RingIndicator</template>\n      <template #content>\n        <Button\n          label=\"reset\"\n          @click=\"resetRingIndicator\"\n        ></Button>\n        <Button\n          label=\"random\"\n          @click=\"addRingIndicator\"\n        ></Button>\n        <div style=\"width: 400px; height: 200px\">\n          <RingIndicator :percent=\"percent\"></RingIndicator>\n        </div>\n        <div style=\"width: 400px; height: 200px\">\n          <RingIndicator\n            :half=\"true\"\n            :percent=\"percent\"\n          ></RingIndicator>\n        </div>\n      </template>\n    </Accordion>\n\n    <Accordion style=\"margin: 30px\">\n      <template #title>CSS Effect</template>\n      <template #content>\n        <div style=\"margin: 30px\">\n          <Mouse\n            @enter=\"() => cssMouseEnter('borderFocusTextRef')\"\n            @leave=\"() => cssMouseLeave('borderFocusTextRef')\"\n          >\n            <BorderFocusText\n              ref=\"borderFocusTextRef\"\n              :text=\"'当前时段'\"\n            >\n              <div\n                style=\"\n                  width: 200px;\n                  line-height: 50px;\n                  background-color: #ffffff;\n                \"\n              >\n                something inner\n              </div>\n            </BorderFocusText>\n          </Mouse>\n          <Mouse\n            @enter=\"() => cssMouseEnter('circleRef')\"\n            @leave=\"() => cssMouseLeave('circleRef')\"\n          >\n            <Circle ref=\"circleRef\">\n              <div\n                style=\"\n                  width: 4em;\n                  height: 4em;\n                  line-height: 4em;\n                  text-align: center;\n                  background-color: pink;\n                  border-radius: 100%;\n                \"\n              >\n                Circle\n              </div>\n            </Circle>\n          </Mouse>\n        </div>\n      </template>\n    </Accordion>\n  </div>\n</template>\n\n<style scoped>\n.loadings > div {\n  display: inline-block;\n  width: 100px;\n  height: 100px;\n  overflow: hidden;\n  border: 1px solid green;\n}\n</style>\n","export function isFunction(value) {\n    return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n    return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n    return function (source) {\n        if (hasLift(source)) {\n            return source.lift(function (liftedSource) {\n                try {\n                    return init(liftedSource, this);\n                }\n                catch (err) {\n                    this.error(err);\n                }\n            });\n        }\n        throw new TypeError('Unable to lift unknown Observable type');\n    };\n}\n//# sourceMappingURL=lift.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n    return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","export function createErrorClass(createImpl) {\n    var _super = function (instance) {\n        Error.call(instance);\n        instance.stack = new Error().stack;\n    };\n    var ctorFunc = createImpl(_super);\n    ctorFunc.prototype = Object.create(Error.prototype);\n    ctorFunc.prototype.constructor = ctorFunc;\n    return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n    return function UnsubscriptionErrorImpl(errors) {\n        _super(this);\n        this.message = errors\n            ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n  ')\n            : '';\n        this.name = 'UnsubscriptionError';\n        this.errors = errors;\n    };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n    if (arr) {\n        var index = arr.indexOf(item);\n        0 <= index && arr.splice(index, 1);\n    }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n    function Subscription(initialTeardown) {\n        this.initialTeardown = initialTeardown;\n        this.closed = false;\n        this._parentage = null;\n        this._finalizers = null;\n    }\n    Subscription.prototype.unsubscribe = function () {\n        var e_1, _a, e_2, _b;\n        var errors;\n        if (!this.closed) {\n            this.closed = true;\n            var _parentage = this._parentage;\n            if (_parentage) {\n                this._parentage = null;\n                if (Array.isArray(_parentage)) {\n                    try {\n                        for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n                            var parent_1 = _parentage_1_1.value;\n                            parent_1.remove(this);\n                        }\n                    }\n                    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                    finally {\n                        try {\n                            if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n                        }\n                        finally { if (e_1) throw e_1.error; }\n                    }\n                }\n                else {\n                    _parentage.remove(this);\n                }\n            }\n            var initialFinalizer = this.initialTeardown;\n            if (isFunction(initialFinalizer)) {\n                try {\n                    initialFinalizer();\n                }\n                catch (e) {\n                    errors = e instanceof UnsubscriptionError ? e.errors : [e];\n                }\n            }\n            var _finalizers = this._finalizers;\n            if (_finalizers) {\n                this._finalizers = null;\n                try {\n                    for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n                        var finalizer = _finalizers_1_1.value;\n                        try {\n                            execFinalizer(finalizer);\n                        }\n                        catch (err) {\n                            errors = errors !== null && errors !== void 0 ? errors : [];\n                            if (err instanceof UnsubscriptionError) {\n                                errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n                            }\n                            else {\n                                errors.push(err);\n                            }\n                        }\n                    }\n                }\n                catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                finally {\n                    try {\n                        if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n                    }\n                    finally { if (e_2) throw e_2.error; }\n                }\n            }\n            if (errors) {\n                throw new UnsubscriptionError(errors);\n            }\n        }\n    };\n    Subscription.prototype.add = function (teardown) {\n        var _a;\n        if (teardown && teardown !== this) {\n            if (this.closed) {\n                execFinalizer(teardown);\n            }\n            else {\n                if (teardown instanceof Subscription) {\n                    if (teardown.closed || teardown._hasParent(this)) {\n                        return;\n                    }\n                    teardown._addParent(this);\n                }\n                (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n            }\n        }\n    };\n    Subscription.prototype._hasParent = function (parent) {\n        var _parentage = this._parentage;\n        return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n    };\n    Subscription.prototype._addParent = function (parent) {\n        var _parentage = this._parentage;\n        this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n    };\n    Subscription.prototype._removeParent = function (parent) {\n        var _parentage = this._parentage;\n        if (_parentage === parent) {\n            this._parentage = null;\n        }\n        else if (Array.isArray(_parentage)) {\n            arrRemove(_parentage, parent);\n        }\n    };\n    Subscription.prototype.remove = function (teardown) {\n        var _finalizers = this._finalizers;\n        _finalizers && arrRemove(_finalizers, teardown);\n        if (teardown instanceof Subscription) {\n            teardown._removeParent(this);\n        }\n    };\n    Subscription.EMPTY = (function () {\n        var empty = new Subscription();\n        empty.closed = true;\n        return empty;\n    })();\n    return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n    return (value instanceof Subscription ||\n        (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n    if (isFunction(finalizer)) {\n        finalizer();\n    }\n    else {\n        finalizer.unsubscribe();\n    }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n    onUnhandledError: null,\n    onStoppedNotification: null,\n    Promise: undefined,\n    useDeprecatedSynchronousErrorHandling: false,\n    useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n    setTimeout: function (handler, timeout) {\n        var args = [];\n        for (var _i = 2; _i < arguments.length; _i++) {\n            args[_i - 2] = arguments[_i];\n        }\n        var delegate = timeoutProvider.delegate;\n        if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n            return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n        }\n        return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n    },\n    clearTimeout: function (handle) {\n        var delegate = timeoutProvider.delegate;\n        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n    },\n    delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n    timeoutProvider.setTimeout(function () {\n        var onUnhandledError = config.onUnhandledError;\n        if (onUnhandledError) {\n            onUnhandledError(err);\n        }\n        else {\n            throw err;\n        }\n    });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n    if (config.useDeprecatedSynchronousErrorHandling) {\n        var isRoot = !context;\n        if (isRoot) {\n            context = { errorThrown: false, error: null };\n        }\n        cb();\n        if (isRoot) {\n            var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n            context = null;\n            if (errorThrown) {\n                throw error;\n            }\n        }\n    }\n    else {\n        cb();\n    }\n}\nexport function captureError(err) {\n    if (config.useDeprecatedSynchronousErrorHandling && context) {\n        context.errorThrown = true;\n        context.error = err;\n    }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n    __extends(Subscriber, _super);\n    function Subscriber(destination) {\n        var _this = _super.call(this) || this;\n        _this.isStopped = false;\n        if (destination) {\n            _this.destination = destination;\n            if (isSubscription(destination)) {\n                destination.add(_this);\n            }\n        }\n        else {\n            _this.destination = EMPTY_OBSERVER;\n        }\n        return _this;\n    }\n    Subscriber.create = function (next, error, complete) {\n        return new SafeSubscriber(next, error, complete);\n    };\n    Subscriber.prototype.next = function (value) {\n        if (this.isStopped) {\n            handleStoppedNotification(nextNotification(value), this);\n        }\n        else {\n            this._next(value);\n        }\n    };\n    Subscriber.prototype.error = function (err) {\n        if (this.isStopped) {\n            handleStoppedNotification(errorNotification(err), this);\n        }\n        else {\n            this.isStopped = true;\n            this._error(err);\n        }\n    };\n    Subscriber.prototype.complete = function () {\n        if (this.isStopped) {\n            handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n        }\n        else {\n            this.isStopped = true;\n            this._complete();\n        }\n    };\n    Subscriber.prototype.unsubscribe = function () {\n        if (!this.closed) {\n            this.isStopped = true;\n            _super.prototype.unsubscribe.call(this);\n            this.destination = null;\n        }\n    };\n    Subscriber.prototype._next = function (value) {\n        this.destination.next(value);\n    };\n    Subscriber.prototype._error = function (err) {\n        try {\n            this.destination.error(err);\n        }\n        finally {\n            this.unsubscribe();\n        }\n    };\n    Subscriber.prototype._complete = function () {\n        try {\n            this.destination.complete();\n        }\n        finally {\n            this.unsubscribe();\n        }\n    };\n    return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n    return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n    function ConsumerObserver(partialObserver) {\n        this.partialObserver = partialObserver;\n    }\n    ConsumerObserver.prototype.next = function (value) {\n        var partialObserver = this.partialObserver;\n        if (partialObserver.next) {\n            try {\n                partialObserver.next(value);\n            }\n            catch (error) {\n                handleUnhandledError(error);\n            }\n        }\n    };\n    ConsumerObserver.prototype.error = function (err) {\n        var partialObserver = this.partialObserver;\n        if (partialObserver.error) {\n            try {\n                partialObserver.error(err);\n            }\n            catch (error) {\n                handleUnhandledError(error);\n            }\n        }\n        else {\n            handleUnhandledError(err);\n        }\n    };\n    ConsumerObserver.prototype.complete = function () {\n        var partialObserver = this.partialObserver;\n        if (partialObserver.complete) {\n            try {\n                partialObserver.complete();\n            }\n            catch (error) {\n                handleUnhandledError(error);\n            }\n        }\n    };\n    return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n    __extends(SafeSubscriber, _super);\n    function SafeSubscriber(observerOrNext, error, complete) {\n        var _this = _super.call(this) || this;\n        var partialObserver;\n        if (isFunction(observerOrNext) || !observerOrNext) {\n            partialObserver = {\n                next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n                error: error !== null && error !== void 0 ? error : undefined,\n                complete: complete !== null && complete !== void 0 ? complete : undefined,\n            };\n        }\n        else {\n            var context_1;\n            if (_this && config.useDeprecatedNextContext) {\n                context_1 = Object.create(observerOrNext);\n                context_1.unsubscribe = function () { return _this.unsubscribe(); };\n                partialObserver = {\n                    next: observerOrNext.next && bind(observerOrNext.next, context_1),\n                    error: observerOrNext.error && bind(observerOrNext.error, context_1),\n                    complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n                };\n            }\n            else {\n                partialObserver = observerOrNext;\n            }\n        }\n        _this.destination = new ConsumerObserver(partialObserver);\n        return _this;\n    }\n    return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n    if (config.useDeprecatedSynchronousErrorHandling) {\n        captureError(error);\n    }\n    else {\n        reportUnhandledError(error);\n    }\n}\nfunction defaultErrorHandler(err) {\n    throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n    var onStoppedNotification = config.onStoppedNotification;\n    onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n    closed: true,\n    next: noop,\n    error: defaultErrorHandler,\n    complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n    return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n    var fns = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        fns[_i] = arguments[_i];\n    }\n    return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n    if (fns.length === 0) {\n        return identity;\n    }\n    if (fns.length === 1) {\n        return fns[0];\n    }\n    return function piped(input) {\n        return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n    };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n    function Observable(subscribe) {\n        if (subscribe) {\n            this._subscribe = subscribe;\n        }\n    }\n    Observable.prototype.lift = function (operator) {\n        var observable = new Observable();\n        observable.source = this;\n        observable.operator = operator;\n        return observable;\n    };\n    Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n        var _this = this;\n        var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n        errorContext(function () {\n            var _a = _this, operator = _a.operator, source = _a.source;\n            subscriber.add(operator\n                ?\n                    operator.call(subscriber, source)\n                : source\n                    ?\n                        _this._subscribe(subscriber)\n                    :\n                        _this._trySubscribe(subscriber));\n        });\n        return subscriber;\n    };\n    Observable.prototype._trySubscribe = function (sink) {\n        try {\n            return this._subscribe(sink);\n        }\n        catch (err) {\n            sink.error(err);\n        }\n    };\n    Observable.prototype.forEach = function (next, promiseCtor) {\n        var _this = this;\n        promiseCtor = getPromiseCtor(promiseCtor);\n        return new promiseCtor(function (resolve, reject) {\n            var subscriber = new SafeSubscriber({\n                next: function (value) {\n                    try {\n                        next(value);\n                    }\n                    catch (err) {\n                        reject(err);\n                        subscriber.unsubscribe();\n                    }\n                },\n                error: reject,\n                complete: resolve,\n            });\n            _this.subscribe(subscriber);\n        });\n    };\n    Observable.prototype._subscribe = function (subscriber) {\n        var _a;\n        return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n    };\n    Observable.prototype[Symbol_observable] = function () {\n        return this;\n    };\n    Observable.prototype.pipe = function () {\n        var operations = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            operations[_i] = arguments[_i];\n        }\n        return pipeFromArray(operations)(this);\n    };\n    Observable.prototype.toPromise = function (promiseCtor) {\n        var _this = this;\n        promiseCtor = getPromiseCtor(promiseCtor);\n        return new promiseCtor(function (resolve, reject) {\n            var value;\n            _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n        });\n    };\n    Observable.create = function (subscribe) {\n        return new Observable(subscribe);\n    };\n    return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n    var _a;\n    return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n    return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n    return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n    return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n    return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n    return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n    if (typeof Symbol !== 'function' || !Symbol.iterator) {\n        return '@@iterator';\n    }\n    return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n    return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n    return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n        var reader, _a, value, done;\n        return __generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    reader = readableStream.getReader();\n                    _b.label = 1;\n                case 1:\n                    _b.trys.push([1, , 9, 10]);\n                    _b.label = 2;\n                case 2:\n                    if (!true) return [3, 8];\n                    return [4, __await(reader.read())];\n                case 3:\n                    _a = _b.sent(), value = _a.value, done = _a.done;\n                    if (!done) return [3, 5];\n                    return [4, __await(void 0)];\n                case 4: return [2, _b.sent()];\n                case 5: return [4, __await(value)];\n                case 6: return [4, _b.sent()];\n                case 7:\n                    _b.sent();\n                    return [3, 2];\n                case 8: return [3, 10];\n                case 9:\n                    reader.releaseLock();\n                    return [7];\n                case 10: return [2];\n            }\n        });\n    });\n}\nexport function isReadableStreamLike(obj) {\n    return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n    if (input instanceof Observable) {\n        return input;\n    }\n    if (input != null) {\n        if (isInteropObservable(input)) {\n            return fromInteropObservable(input);\n        }\n        if (isArrayLike(input)) {\n            return fromArrayLike(input);\n        }\n        if (isPromise(input)) {\n            return fromPromise(input);\n        }\n        if (isAsyncIterable(input)) {\n            return fromAsyncIterable(input);\n        }\n        if (isIterable(input)) {\n            return fromIterable(input);\n        }\n        if (isReadableStreamLike(input)) {\n            return fromReadableStreamLike(input);\n        }\n    }\n    throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n    return new Observable(function (subscriber) {\n        var obs = obj[Symbol_observable]();\n        if (isFunction(obs.subscribe)) {\n            return obs.subscribe(subscriber);\n        }\n        throw new TypeError('Provided object does not correctly implement Symbol.observable');\n    });\n}\nexport function fromArrayLike(array) {\n    return new Observable(function (subscriber) {\n        for (var i = 0; i < array.length && !subscriber.closed; i++) {\n            subscriber.next(array[i]);\n        }\n        subscriber.complete();\n    });\n}\nexport function fromPromise(promise) {\n    return new Observable(function (subscriber) {\n        promise\n            .then(function (value) {\n            if (!subscriber.closed) {\n                subscriber.next(value);\n                subscriber.complete();\n            }\n        }, function (err) { return subscriber.error(err); })\n            .then(null, reportUnhandledError);\n    });\n}\nexport function fromIterable(iterable) {\n    return new Observable(function (subscriber) {\n        var e_1, _a;\n        try {\n            for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n                var value = iterable_1_1.value;\n                subscriber.next(value);\n                if (subscriber.closed) {\n                    return;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        subscriber.complete();\n    });\n}\nexport function fromAsyncIterable(asyncIterable) {\n    return new Observable(function (subscriber) {\n        process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n    });\n}\nexport function fromReadableStreamLike(readableStream) {\n    return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n    var asyncIterable_1, asyncIterable_1_1;\n    var e_2, _a;\n    return __awaiter(this, void 0, void 0, function () {\n        var value, e_2_1;\n        return __generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    _b.trys.push([0, 5, 6, 11]);\n                    asyncIterable_1 = __asyncValues(asyncIterable);\n                    _b.label = 1;\n                case 1: return [4, asyncIterable_1.next()];\n                case 2:\n                    if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n                    value = asyncIterable_1_1.value;\n                    subscriber.next(value);\n                    if (subscriber.closed) {\n                        return [2];\n                    }\n                    _b.label = 3;\n                case 3: return [3, 1];\n                case 4: return [3, 11];\n                case 5:\n                    e_2_1 = _b.sent();\n                    e_2 = { error: e_2_1 };\n                    return [3, 11];\n                case 6:\n                    _b.trys.push([6, , 9, 10]);\n                    if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n                    return [4, _a.call(asyncIterable_1)];\n                case 7:\n                    _b.sent();\n                    _b.label = 8;\n                case 8: return [3, 10];\n                case 9:\n                    if (e_2) throw e_2.error;\n                    return [7];\n                case 10: return [7];\n                case 11:\n                    subscriber.complete();\n                    return [2];\n            }\n        });\n    });\n}\n//# sourceMappingURL=innerFrom.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n    return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n    __extends(OperatorSubscriber, _super);\n    function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n        var _this = _super.call(this, destination) || this;\n        _this.onFinalize = onFinalize;\n        _this.shouldUnsubscribe = shouldUnsubscribe;\n        _this._next = onNext\n            ? function (value) {\n                try {\n                    onNext(value);\n                }\n                catch (err) {\n                    destination.error(err);\n                }\n            }\n            : _super.prototype._next;\n        _this._error = onError\n            ? function (err) {\n                try {\n                    onError(err);\n                }\n                catch (err) {\n                    destination.error(err);\n                }\n                finally {\n                    this.unsubscribe();\n                }\n            }\n            : _super.prototype._error;\n        _this._complete = onComplete\n            ? function () {\n                try {\n                    onComplete();\n                }\n                catch (err) {\n                    destination.error(err);\n                }\n                finally {\n                    this.unsubscribe();\n                }\n            }\n            : _super.prototype._complete;\n        return _this;\n    }\n    OperatorSubscriber.prototype.unsubscribe = function () {\n        var _a;\n        if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n            var closed_1 = this.closed;\n            _super.prototype.unsubscribe.call(this);\n            !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n        }\n    };\n    return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function audit(durationSelector) {\n    return operate(function (source, subscriber) {\n        var hasValue = false;\n        var lastValue = null;\n        var durationSubscriber = null;\n        var isComplete = false;\n        var endDuration = function () {\n            durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n            durationSubscriber = null;\n            if (hasValue) {\n                hasValue = false;\n                var value = lastValue;\n                lastValue = null;\n                subscriber.next(value);\n            }\n            isComplete && subscriber.complete();\n        };\n        var cleanupDuration = function () {\n            durationSubscriber = null;\n            isComplete && subscriber.complete();\n        };\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            hasValue = true;\n            lastValue = value;\n            if (!durationSubscriber) {\n                innerFrom(durationSelector(value)).subscribe((durationSubscriber = createOperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n            }\n        }, function () {\n            isComplete = true;\n            (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n        }));\n    });\n}\n//# sourceMappingURL=audit.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n    __extends(Action, _super);\n    function Action(scheduler, work) {\n        return _super.call(this) || this;\n    }\n    Action.prototype.schedule = function (state, delay) {\n        if (delay === void 0) { delay = 0; }\n        return this;\n    };\n    return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n    setInterval: function (handler, timeout) {\n        var args = [];\n        for (var _i = 2; _i < arguments.length; _i++) {\n            args[_i - 2] = arguments[_i];\n        }\n        var delegate = intervalProvider.delegate;\n        if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n            return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n        }\n        return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n    },\n    clearInterval: function (handle) {\n        var delegate = intervalProvider.delegate;\n        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n    },\n    delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n    __extends(AsyncAction, _super);\n    function AsyncAction(scheduler, work) {\n        var _this = _super.call(this, scheduler, work) || this;\n        _this.scheduler = scheduler;\n        _this.work = work;\n        _this.pending = false;\n        return _this;\n    }\n    AsyncAction.prototype.schedule = function (state, delay) {\n        var _a;\n        if (delay === void 0) { delay = 0; }\n        if (this.closed) {\n            return this;\n        }\n        this.state = state;\n        var id = this.id;\n        var scheduler = this.scheduler;\n        if (id != null) {\n            this.id = this.recycleAsyncId(scheduler, id, delay);\n        }\n        this.pending = true;\n        this.delay = delay;\n        this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n        return this;\n    };\n    AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n        if (delay === void 0) { delay = 0; }\n        return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n    };\n    AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        if (delay != null && this.delay === delay && this.pending === false) {\n            return id;\n        }\n        if (id != null) {\n            intervalProvider.clearInterval(id);\n        }\n        return undefined;\n    };\n    AsyncAction.prototype.execute = function (state, delay) {\n        if (this.closed) {\n            return new Error('executing a cancelled action');\n        }\n        this.pending = false;\n        var error = this._execute(state, delay);\n        if (error) {\n            return error;\n        }\n        else if (this.pending === false && this.id != null) {\n            this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n        }\n    };\n    AsyncAction.prototype._execute = function (state, _delay) {\n        var errored = false;\n        var errorValue;\n        try {\n            this.work(state);\n        }\n        catch (e) {\n            errored = true;\n            errorValue = e ? e : new Error('Scheduled action threw falsy error');\n        }\n        if (errored) {\n            this.unsubscribe();\n            return errorValue;\n        }\n    };\n    AsyncAction.prototype.unsubscribe = function () {\n        if (!this.closed) {\n            var _a = this, id = _a.id, scheduler = _a.scheduler;\n            var actions = scheduler.actions;\n            this.work = this.state = this.scheduler = null;\n            this.pending = false;\n            arrRemove(actions, this);\n            if (id != null) {\n                this.id = this.recycleAsyncId(scheduler, id, null);\n            }\n            this.delay = null;\n            _super.prototype.unsubscribe.call(this);\n        }\n    };\n    return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","export var dateTimestampProvider = {\n    now: function () {\n        return (dateTimestampProvider.delegate || Date).now();\n    },\n    delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n    function Scheduler(schedulerActionCtor, now) {\n        if (now === void 0) { now = Scheduler.now; }\n        this.schedulerActionCtor = schedulerActionCtor;\n        this.now = now;\n    }\n    Scheduler.prototype.schedule = function (work, delay, state) {\n        if (delay === void 0) { delay = 0; }\n        return new this.schedulerActionCtor(this, work).schedule(state, delay);\n    };\n    Scheduler.now = dateTimestampProvider.now;\n    return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n    __extends(AsyncScheduler, _super);\n    function AsyncScheduler(SchedulerAction, now) {\n        if (now === void 0) { now = Scheduler.now; }\n        var _this = _super.call(this, SchedulerAction, now) || this;\n        _this.actions = [];\n        _this._active = false;\n        return _this;\n    }\n    AsyncScheduler.prototype.flush = function (action) {\n        var actions = this.actions;\n        if (this._active) {\n            actions.push(action);\n            return;\n        }\n        var error;\n        this._active = true;\n        do {\n            if ((error = action.execute(action.state, action.delay))) {\n                break;\n            }\n        } while ((action = actions.shift()));\n        this._active = false;\n        if (error) {\n            while ((action = actions.shift())) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n    return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","export function isValidDate(value) {\n    return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n    if (dueTime === void 0) { dueTime = 0; }\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    var intervalDuration = -1;\n    if (intervalOrScheduler != null) {\n        if (isScheduler(intervalOrScheduler)) {\n            scheduler = intervalOrScheduler;\n        }\n        else {\n            intervalDuration = intervalOrScheduler;\n        }\n    }\n    return new Observable(function (subscriber) {\n        var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n        if (due < 0) {\n            due = 0;\n        }\n        var n = 0;\n        return scheduler.schedule(function () {\n            if (!subscriber.closed) {\n                subscriber.next(n++);\n                if (0 <= intervalDuration) {\n                    this.schedule(undefined, intervalDuration);\n                }\n                else {\n                    subscriber.complete();\n                }\n            }\n        }, due);\n    });\n}\n//# sourceMappingURL=timer.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler) {\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    return audit(function () { return timer(duration, scheduler); });\n}\n//# sourceMappingURL=auditTime.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function buffer(closingNotifier) {\n    return operate(function (source, subscriber) {\n        var currentBuffer = [];\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n            subscriber.next(currentBuffer);\n            subscriber.complete();\n        }));\n        innerFrom(closingNotifier).subscribe(createOperatorSubscriber(subscriber, function () {\n            var b = currentBuffer;\n            currentBuffer = [];\n            subscriber.next(b);\n        }, noop));\n        return function () {\n            currentBuffer = null;\n        };\n    });\n}\n//# sourceMappingURL=buffer.js.map","import { __values } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nexport function bufferCount(bufferSize, startBufferEvery) {\n    if (startBufferEvery === void 0) { startBufferEvery = null; }\n    startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize;\n    return operate(function (source, subscriber) {\n        var buffers = [];\n        var count = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            var e_1, _a, e_2, _b;\n            var toEmit = null;\n            if (count++ % startBufferEvery === 0) {\n                buffers.push([]);\n            }\n            try {\n                for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n                    var buffer = buffers_1_1.value;\n                    buffer.push(value);\n                    if (bufferSize <= buffer.length) {\n                        toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : [];\n                        toEmit.push(buffer);\n                    }\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            if (toEmit) {\n                try {\n                    for (var toEmit_1 = __values(toEmit), toEmit_1_1 = toEmit_1.next(); !toEmit_1_1.done; toEmit_1_1 = toEmit_1.next()) {\n                        var buffer = toEmit_1_1.value;\n                        arrRemove(buffers, buffer);\n                        subscriber.next(buffer);\n                    }\n                }\n                catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                finally {\n                    try {\n                        if (toEmit_1_1 && !toEmit_1_1.done && (_b = toEmit_1.return)) _b.call(toEmit_1);\n                    }\n                    finally { if (e_2) throw e_2.error; }\n                }\n            }\n        }, function () {\n            var e_3, _a;\n            try {\n                for (var buffers_2 = __values(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) {\n                    var buffer = buffers_2_1.value;\n                    subscriber.next(buffer);\n                }\n            }\n            catch (e_3_1) { e_3 = { error: e_3_1 }; }\n            finally {\n                try {\n                    if (buffers_2_1 && !buffers_2_1.done && (_a = buffers_2.return)) _a.call(buffers_2);\n                }\n                finally { if (e_3) throw e_3.error; }\n            }\n            subscriber.complete();\n        }, undefined, function () {\n            buffers = null;\n        }));\n    });\n}\n//# sourceMappingURL=bufferCount.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n    return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n    return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n    return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n    return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n    if (delay === void 0) { delay = 0; }\n    if (repeat === void 0) { repeat = false; }\n    var scheduleSubscription = scheduler.schedule(function () {\n        work();\n        if (repeat) {\n            parentSubscription.add(this.schedule(null, delay));\n        }\n        else {\n            this.unsubscribe();\n        }\n    }, delay);\n    parentSubscription.add(scheduleSubscription);\n    if (!repeat) {\n        return scheduleSubscription;\n    }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { __values } from \"tslib\";\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { asyncScheduler } from '../scheduler/async';\nimport { popScheduler } from '../util/args';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function bufferTime(bufferTimeSpan) {\n    var _a, _b;\n    var otherArgs = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        otherArgs[_i - 1] = arguments[_i];\n    }\n    var scheduler = (_a = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;\n    var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n    var maxBufferSize = otherArgs[1] || Infinity;\n    return operate(function (source, subscriber) {\n        var bufferRecords = [];\n        var restartOnEmit = false;\n        var emit = function (record) {\n            var buffer = record.buffer, subs = record.subs;\n            subs.unsubscribe();\n            arrRemove(bufferRecords, record);\n            subscriber.next(buffer);\n            restartOnEmit && startBuffer();\n        };\n        var startBuffer = function () {\n            if (bufferRecords) {\n                var subs = new Subscription();\n                subscriber.add(subs);\n                var buffer = [];\n                var record_1 = {\n                    buffer: buffer,\n                    subs: subs,\n                };\n                bufferRecords.push(record_1);\n                executeSchedule(subs, scheduler, function () { return emit(record_1); }, bufferTimeSpan);\n            }\n        };\n        if (bufferCreationInterval !== null && bufferCreationInterval >= 0) {\n            executeSchedule(subscriber, scheduler, startBuffer, bufferCreationInterval, true);\n        }\n        else {\n            restartOnEmit = true;\n        }\n        startBuffer();\n        var bufferTimeSubscriber = createOperatorSubscriber(subscriber, function (value) {\n            var e_1, _a;\n            var recordsCopy = bufferRecords.slice();\n            try {\n                for (var recordsCopy_1 = __values(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) {\n                    var record = recordsCopy_1_1.value;\n                    var buffer = record.buffer;\n                    buffer.push(value);\n                    maxBufferSize <= buffer.length && emit(record);\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a = recordsCopy_1.return)) _a.call(recordsCopy_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        }, function () {\n            while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) {\n                subscriber.next(bufferRecords.shift().buffer);\n            }\n            bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe();\n            subscriber.complete();\n            subscriber.unsubscribe();\n        }, undefined, function () { return (bufferRecords = null); });\n        source.subscribe(bufferTimeSubscriber);\n    });\n}\n//# sourceMappingURL=bufferTime.js.map","import { __values } from \"tslib\";\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { arrRemove } from '../util/arrRemove';\nexport function bufferToggle(openings, closingSelector) {\n    return operate(function (source, subscriber) {\n        var buffers = [];\n        innerFrom(openings).subscribe(createOperatorSubscriber(subscriber, function (openValue) {\n            var buffer = [];\n            buffers.push(buffer);\n            var closingSubscription = new Subscription();\n            var emitBuffer = function () {\n                arrRemove(buffers, buffer);\n                subscriber.next(buffer);\n                closingSubscription.unsubscribe();\n            };\n            closingSubscription.add(innerFrom(closingSelector(openValue)).subscribe(createOperatorSubscriber(subscriber, emitBuffer, noop)));\n        }, noop));\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            var e_1, _a;\n            try {\n                for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n                    var buffer = buffers_1_1.value;\n                    buffer.push(value);\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        }, function () {\n            while (buffers.length > 0) {\n                subscriber.next(buffers.shift());\n            }\n            subscriber.complete();\n        }));\n    });\n}\n//# sourceMappingURL=bufferToggle.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function bufferWhen(closingSelector) {\n    return operate(function (source, subscriber) {\n        var buffer = null;\n        var closingSubscriber = null;\n        var openBuffer = function () {\n            closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n            var b = buffer;\n            buffer = [];\n            b && subscriber.next(b);\n            innerFrom(closingSelector()).subscribe((closingSubscriber = createOperatorSubscriber(subscriber, openBuffer, noop)));\n        };\n        openBuffer();\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) { return buffer === null || buffer === void 0 ? void 0 : buffer.push(value); }, function () {\n            buffer && subscriber.next(buffer);\n            subscriber.complete();\n        }, undefined, function () { return (buffer = closingSubscriber = null); }));\n    });\n}\n//# sourceMappingURL=bufferWhen.js.map","var isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nexport function argsArgArrayOrObject(args) {\n    if (args.length === 1) {\n        var first_1 = args[0];\n        if (isArray(first_1)) {\n            return { args: first_1, keys: null };\n        }\n        if (isPOJO(first_1)) {\n            var keys = getKeys(first_1);\n            return {\n                args: keys.map(function (key) { return first_1[key]; }),\n                keys: keys,\n            };\n        }\n    }\n    return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n    return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n    if (delay === void 0) { delay = 0; }\n    return operate(function (source, subscriber) {\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n    });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n    if (delay === void 0) { delay = 0; }\n    return operate(function (source, subscriber) {\n        subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n    });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n    return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n    return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n    return new Observable(function (subscriber) {\n        var i = 0;\n        return scheduler.schedule(function () {\n            if (i === input.length) {\n                subscriber.complete();\n            }\n            else {\n                subscriber.next(input[i++]);\n                if (!subscriber.closed) {\n                    this.schedule();\n                }\n            }\n        });\n    });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n    return new Observable(function (subscriber) {\n        var iterator;\n        executeSchedule(subscriber, scheduler, function () {\n            iterator = input[Symbol_iterator]();\n            executeSchedule(subscriber, scheduler, function () {\n                var _a;\n                var value;\n                var done;\n                try {\n                    (_a = iterator.next(), value = _a.value, done = _a.done);\n                }\n                catch (err) {\n                    subscriber.error(err);\n                    return;\n                }\n                if (done) {\n                    subscriber.complete();\n                }\n                else {\n                    subscriber.next(value);\n                }\n            }, 0, true);\n        });\n        return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n    });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n    if (!input) {\n        throw new Error('Iterable cannot be null');\n    }\n    return new Observable(function (subscriber) {\n        executeSchedule(subscriber, scheduler, function () {\n            var iterator = input[Symbol.asyncIterator]();\n            executeSchedule(subscriber, scheduler, function () {\n                iterator.next().then(function (result) {\n                    if (result.done) {\n                        subscriber.complete();\n                    }\n                    else {\n                        subscriber.next(result.value);\n                    }\n                });\n            }, 0, true);\n        });\n    });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n    return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n    if (input != null) {\n        if (isInteropObservable(input)) {\n            return scheduleObservable(input, scheduler);\n        }\n        if (isArrayLike(input)) {\n            return scheduleArray(input, scheduler);\n        }\n        if (isPromise(input)) {\n            return schedulePromise(input, scheduler);\n        }\n        if (isAsyncIterable(input)) {\n            return scheduleAsyncIterable(input, scheduler);\n        }\n        if (isIterable(input)) {\n            return scheduleIterable(input, scheduler);\n        }\n        if (isReadableStreamLike(input)) {\n            return scheduleReadableStreamLike(input, scheduler);\n        }\n    }\n    throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n    return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n    return operate(function (source, subscriber) {\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            subscriber.next(project.call(thisArg, value, index++));\n        }));\n    });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n    return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n    return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","export function createObject(keys, values) {\n    return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\n//# sourceMappingURL=createObject.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var scheduler = popScheduler(args);\n    var resultSelector = popResultSelector(args);\n    var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n    if (observables.length === 0) {\n        return from([], scheduler);\n    }\n    var result = new Observable(combineLatestInit(observables, scheduler, keys\n        ?\n            function (values) { return createObject(keys, values); }\n        :\n            identity));\n    return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform) {\n    if (valueTransform === void 0) { valueTransform = identity; }\n    return function (subscriber) {\n        maybeSchedule(scheduler, function () {\n            var length = observables.length;\n            var values = new Array(length);\n            var active = length;\n            var remainingFirstValues = length;\n            var _loop_1 = function (i) {\n                maybeSchedule(scheduler, function () {\n                    var source = from(observables[i], scheduler);\n                    var hasFirstValue = false;\n                    source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n                        values[i] = value;\n                        if (!hasFirstValue) {\n                            hasFirstValue = true;\n                            remainingFirstValues--;\n                        }\n                        if (!remainingFirstValues) {\n                            subscriber.next(valueTransform(values.slice()));\n                        }\n                    }, function () {\n                        if (!--active) {\n                            subscriber.complete();\n                        }\n                    }));\n                }, subscriber);\n            };\n            for (var i = 0; i < length; i++) {\n                _loop_1(i);\n            }\n        }, subscriber);\n    };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n    if (scheduler) {\n        executeSchedule(subscription, scheduler, execute);\n    }\n    else {\n        execute();\n    }\n}\n//# sourceMappingURL=combineLatest.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n    var buffer = [];\n    var active = 0;\n    var index = 0;\n    var isComplete = false;\n    var checkComplete = function () {\n        if (isComplete && !buffer.length && !active) {\n            subscriber.complete();\n        }\n    };\n    var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n    var doInnerSub = function (value) {\n        expand && subscriber.next(value);\n        active++;\n        var innerComplete = false;\n        innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n            onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n            if (expand) {\n                outerNext(innerValue);\n            }\n            else {\n                subscriber.next(innerValue);\n            }\n        }, function () {\n            innerComplete = true;\n        }, undefined, function () {\n            if (innerComplete) {\n                try {\n                    active--;\n                    var _loop_1 = function () {\n                        var bufferedValue = buffer.shift();\n                        if (innerSubScheduler) {\n                            executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n                        }\n                        else {\n                            doInnerSub(bufferedValue);\n                        }\n                    };\n                    while (buffer.length && active < concurrent) {\n                        _loop_1();\n                    }\n                    checkComplete();\n                }\n                catch (err) {\n                    subscriber.error(err);\n                }\n            }\n        }));\n    };\n    source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n        isComplete = true;\n        checkComplete();\n    }));\n    return function () {\n        additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n    };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n    if (concurrent === void 0) { concurrent = Infinity; }\n    if (isFunction(resultSelector)) {\n        return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n    }\n    else if (typeof resultSelector === 'number') {\n        concurrent = resultSelector;\n    }\n    return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { createOperatorSubscriber } from './OperatorSubscriber';\nexport function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n    return function (source, subscriber) {\n        var hasState = hasSeed;\n        var state = seed;\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            var i = index++;\n            state = hasState\n                ?\n                    accumulator(state, value, i)\n                :\n                    ((hasState = true), value);\n            emitOnNext && subscriber.next(state);\n        }, emitBeforeComplete &&\n            (function () {\n                hasState && subscriber.next(state);\n                subscriber.complete();\n            })));\n    };\n}\n//# sourceMappingURL=scanInternals.js.map","import { scanInternals } from './scanInternals';\nimport { operate } from '../util/lift';\nexport function reduce(accumulator, seed) {\n    return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n//# sourceMappingURL=reduce.js.map","import { reduce } from './reduce';\nimport { operate } from '../util/lift';\nvar arrReducer = function (arr, value) { return (arr.push(value), arr); };\nexport function toArray() {\n    return operate(function (source, subscriber) {\n        reduce(arrReducer, [])(source).subscribe(subscriber);\n    });\n}\n//# sourceMappingURL=toArray.js.map","import { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { mergeMap } from './mergeMap';\nimport { toArray } from './toArray';\nexport function joinAllInternals(joinFn, project) {\n    return pipe(toArray(), mergeMap(function (sources) { return joinFn(sources); }), project ? mapOneOrManyArgs(project) : identity);\n}\n//# sourceMappingURL=joinAllInternals.js.map","import { combineLatest } from '../observable/combineLatest';\nimport { joinAllInternals } from './joinAllInternals';\nexport function combineLatestAll(project) {\n    return joinAllInternals(combineLatest, project);\n}\n//# sourceMappingURL=combineLatestAll.js.map","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n    return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n    if (concurrent === void 0) { concurrent = Infinity; }\n    return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n    return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMap(project, resultSelector) {\n    return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n//# sourceMappingURL=concatMap.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n    return function ObjectUnsubscribedErrorImpl() {\n        _super(this);\n        this.name = 'ObjectUnsubscribedError';\n        this.message = 'object unsubscribed';\n    };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n    __extends(Subject, _super);\n    function Subject() {\n        var _this = _super.call(this) || this;\n        _this.closed = false;\n        _this.currentObservers = null;\n        _this.observers = [];\n        _this.isStopped = false;\n        _this.hasError = false;\n        _this.thrownError = null;\n        return _this;\n    }\n    Subject.prototype.lift = function (operator) {\n        var subject = new AnonymousSubject(this, this);\n        subject.operator = operator;\n        return subject;\n    };\n    Subject.prototype._throwIfClosed = function () {\n        if (this.closed) {\n            throw new ObjectUnsubscribedError();\n        }\n    };\n    Subject.prototype.next = function (value) {\n        var _this = this;\n        errorContext(function () {\n            var e_1, _a;\n            _this._throwIfClosed();\n            if (!_this.isStopped) {\n                if (!_this.currentObservers) {\n                    _this.currentObservers = Array.from(_this.observers);\n                }\n                try {\n                    for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n                        var observer = _c.value;\n                        observer.next(value);\n                    }\n                }\n                catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                finally {\n                    try {\n                        if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                    }\n                    finally { if (e_1) throw e_1.error; }\n                }\n            }\n        });\n    };\n    Subject.prototype.error = function (err) {\n        var _this = this;\n        errorContext(function () {\n            _this._throwIfClosed();\n            if (!_this.isStopped) {\n                _this.hasError = _this.isStopped = true;\n                _this.thrownError = err;\n                var observers = _this.observers;\n                while (observers.length) {\n                    observers.shift().error(err);\n                }\n            }\n        });\n    };\n    Subject.prototype.complete = function () {\n        var _this = this;\n        errorContext(function () {\n            _this._throwIfClosed();\n            if (!_this.isStopped) {\n                _this.isStopped = true;\n                var observers = _this.observers;\n                while (observers.length) {\n                    observers.shift().complete();\n                }\n            }\n        });\n    };\n    Subject.prototype.unsubscribe = function () {\n        this.isStopped = this.closed = true;\n        this.observers = this.currentObservers = null;\n    };\n    Object.defineProperty(Subject.prototype, \"observed\", {\n        get: function () {\n            var _a;\n            return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Subject.prototype._trySubscribe = function (subscriber) {\n        this._throwIfClosed();\n        return _super.prototype._trySubscribe.call(this, subscriber);\n    };\n    Subject.prototype._subscribe = function (subscriber) {\n        this._throwIfClosed();\n        this._checkFinalizedStatuses(subscriber);\n        return this._innerSubscribe(subscriber);\n    };\n    Subject.prototype._innerSubscribe = function (subscriber) {\n        var _this = this;\n        var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n        if (hasError || isStopped) {\n            return EMPTY_SUBSCRIPTION;\n        }\n        this.currentObservers = null;\n        observers.push(subscriber);\n        return new Subscription(function () {\n            _this.currentObservers = null;\n            arrRemove(observers, subscriber);\n        });\n    };\n    Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n        var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n        if (hasError) {\n            subscriber.error(thrownError);\n        }\n        else if (isStopped) {\n            subscriber.complete();\n        }\n    };\n    Subject.prototype.asObservable = function () {\n        var observable = new Observable();\n        observable.source = this;\n        return observable;\n    };\n    Subject.create = function (destination, source) {\n        return new AnonymousSubject(destination, source);\n    };\n    return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n    __extends(AnonymousSubject, _super);\n    function AnonymousSubject(destination, source) {\n        var _this = _super.call(this) || this;\n        _this.destination = destination;\n        _this.source = source;\n        return _this;\n    }\n    AnonymousSubject.prototype.next = function (value) {\n        var _a, _b;\n        (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n    };\n    AnonymousSubject.prototype.error = function (err) {\n        var _a, _b;\n        (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n    };\n    AnonymousSubject.prototype.complete = function () {\n        var _a, _b;\n        (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n    };\n    AnonymousSubject.prototype._subscribe = function (subscriber) {\n        var _a, _b;\n        return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n    };\n    return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { reduce } from './reduce';\nexport function count(predicate) {\n    return reduce(function (total, value, i) { return (!predicate || predicate(value, i) ? total + 1 : total); }, 0);\n}\n//# sourceMappingURL=count.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function debounce(durationSelector) {\n    return operate(function (source, subscriber) {\n        var hasValue = false;\n        var lastValue = null;\n        var durationSubscriber = null;\n        var emit = function () {\n            durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n            durationSubscriber = null;\n            if (hasValue) {\n                hasValue = false;\n                var value = lastValue;\n                lastValue = null;\n                subscriber.next(value);\n            }\n        };\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n            hasValue = true;\n            lastValue = value;\n            durationSubscriber = createOperatorSubscriber(subscriber, emit, noop);\n            innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n        }, function () {\n            emit();\n            subscriber.complete();\n        }, undefined, function () {\n            lastValue = durationSubscriber = null;\n        }));\n    });\n}\n//# sourceMappingURL=debounce.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    return operate(function (source, subscriber) {\n        var activeTask = null;\n        var lastValue = null;\n        var lastTime = null;\n        var emit = function () {\n            if (activeTask) {\n                activeTask.unsubscribe();\n                activeTask = null;\n                var value = lastValue;\n                lastValue = null;\n                subscriber.next(value);\n            }\n        };\n        function emitWhenIdle() {\n            var targetTime = lastTime + dueTime;\n            var now = scheduler.now();\n            if (now < targetTime) {\n                activeTask = this.schedule(undefined, targetTime - now);\n                subscriber.add(activeTask);\n                return;\n            }\n            emit();\n        }\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            lastValue = value;\n            lastTime = scheduler.now();\n            if (!activeTask) {\n                activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n                subscriber.add(activeTask);\n            }\n        }, function () {\n            emit();\n            subscriber.complete();\n        }, undefined, function () {\n            lastValue = activeTask = null;\n        }));\n    });\n}\n//# sourceMappingURL=debounceTime.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n    return operate(function (source, subscriber) {\n        var hasValue = false;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            hasValue = true;\n            subscriber.next(value);\n        }, function () {\n            if (!hasValue) {\n                subscriber.next(defaultValue);\n            }\n            subscriber.complete();\n        }));\n    });\n}\n//# sourceMappingURL=defaultIfEmpty.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n    return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n    return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n    return count <= 0\n        ?\n            function () { return EMPTY; }\n        : operate(function (source, subscriber) {\n            var seen = 0;\n            source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n                if (++seen <= count) {\n                    subscriber.next(value);\n                    if (count <= seen) {\n                        subscriber.complete();\n                    }\n                }\n            }));\n        });\n}\n//# sourceMappingURL=take.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n    return operate(function (source, subscriber) {\n        source.subscribe(createOperatorSubscriber(subscriber, noop));\n    });\n}\n//# sourceMappingURL=ignoreElements.js.map","import { map } from './map';\nexport function mapTo(value) {\n    return map(function () { return value; });\n}\n//# sourceMappingURL=mapTo.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n    if (subscriptionDelay) {\n        return function (source) {\n            return concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n        };\n    }\n    return mergeMap(function (value, index) { return innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler) {\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    var duration = timer(due, scheduler);\n    return delayWhen(function () { return duration; });\n}\n//# sourceMappingURL=delay.js.map","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var scheduler = popScheduler(args);\n    return from(args, scheduler);\n}\n//# sourceMappingURL=of.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { innerFrom } from '../observable/innerFrom';\nexport function distinct(keySelector, flushes) {\n    return operate(function (source, subscriber) {\n        var distinctKeys = new Set();\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            var key = keySelector ? keySelector(value) : value;\n            if (!distinctKeys.has(key)) {\n                distinctKeys.add(key);\n                subscriber.next(value);\n            }\n        }));\n        flushes && innerFrom(flushes).subscribe(createOperatorSubscriber(subscriber, function () { return distinctKeys.clear(); }, noop));\n    });\n}\n//# sourceMappingURL=distinct.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector) {\n    if (keySelector === void 0) { keySelector = identity; }\n    comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n    return operate(function (source, subscriber) {\n        var previousKey;\n        var first = true;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            var currentKey = keySelector(value);\n            if (first || !comparator(previousKey, currentKey)) {\n                first = false;\n                previousKey = currentKey;\n                subscriber.next(value);\n            }\n        }));\n    });\n}\nfunction defaultCompare(a, b) {\n    return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { createErrorClass } from './createErrorClass';\nexport var ArgumentOutOfRangeError = createErrorClass(function (_super) {\n    return function ArgumentOutOfRangeErrorImpl() {\n        _super(this);\n        this.name = 'ArgumentOutOfRangeError';\n        this.message = 'argument out of range';\n    };\n});\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n    return operate(function (source, subscriber) {\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n    });\n}\n//# sourceMappingURL=filter.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) {\n    return function EmptyErrorImpl() {\n        _super(this);\n        this.name = 'EmptyError';\n        this.message = 'no elements in sequence';\n    };\n});\n//# sourceMappingURL=EmptyError.js.map","import { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory) {\n    if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }\n    return operate(function (source, subscriber) {\n        var hasValue = false;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            hasValue = true;\n            subscriber.next(value);\n        }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); }));\n    });\n}\nfunction defaultErrorFactory() {\n    return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","import { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { filter } from './filter';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { take } from './take';\nexport function elementAt(index, defaultValue) {\n    if (index < 0) {\n        throw new ArgumentOutOfRangeError();\n    }\n    var hasDefaultValue = arguments.length >= 2;\n    return function (source) {\n        return source.pipe(filter(function (v, i) { return i === index; }), take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new ArgumentOutOfRangeError(); }));\n    };\n}\n//# sourceMappingURL=elementAt.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function every(predicate, thisArg) {\n    return operate(function (source, subscriber) {\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            if (!predicate.call(thisArg, value, index++, source)) {\n                subscriber.next(false);\n                subscriber.complete();\n            }\n        }, function () {\n            subscriber.next(true);\n            subscriber.complete();\n        }));\n    });\n}\n//# sourceMappingURL=every.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustMap(project, resultSelector) {\n    if (resultSelector) {\n        return function (source) {\n            return source.pipe(exhaustMap(function (a, i) { return innerFrom(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }));\n        };\n    }\n    return operate(function (source, subscriber) {\n        var index = 0;\n        var innerSub = null;\n        var isComplete = false;\n        source.subscribe(createOperatorSubscriber(subscriber, function (outerValue) {\n            if (!innerSub) {\n                innerSub = createOperatorSubscriber(subscriber, undefined, function () {\n                    innerSub = null;\n                    isComplete && subscriber.complete();\n                });\n                innerFrom(project(outerValue, index++)).subscribe(innerSub);\n            }\n        }, function () {\n            isComplete = true;\n            !innerSub && subscriber.complete();\n        }));\n    });\n}\n//# sourceMappingURL=exhaustMap.js.map","import { exhaustMap } from './exhaustMap';\nimport { identity } from '../util/identity';\nexport function exhaustAll() {\n    return exhaustMap(identity);\n}\n//# sourceMappingURL=exhaustAll.js.map","import { operate } from '../util/lift';\nexport function finalize(callback) {\n    return operate(function (source, subscriber) {\n        try {\n            source.subscribe(subscriber);\n        }\n        finally {\n            subscriber.add(callback);\n        }\n    });\n}\n//# sourceMappingURL=finalize.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function find(predicate, thisArg) {\n    return operate(createFind(predicate, thisArg, 'value'));\n}\nexport function createFind(predicate, thisArg, emit) {\n    var findIndex = emit === 'index';\n    return function (source, subscriber) {\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            var i = index++;\n            if (predicate.call(thisArg, value, i, source)) {\n                subscriber.next(findIndex ? i : value);\n                subscriber.complete();\n            }\n        }, function () {\n            subscriber.next(findIndex ? -1 : undefined);\n            subscriber.complete();\n        }));\n    };\n}\n//# sourceMappingURL=find.js.map","import { operate } from '../util/lift';\nimport { createFind } from './find';\nexport function findIndex(predicate, thisArg) {\n    return operate(createFind(predicate, thisArg, 'index'));\n}\n//# sourceMappingURL=findIndex.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n    var hasDefaultValue = arguments.length >= 2;\n    return function (source) {\n        return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n    };\n}\n//# sourceMappingURL=first.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber, OperatorSubscriber } from './OperatorSubscriber';\nexport function groupBy(keySelector, elementOrOptions, duration, connector) {\n    return operate(function (source, subscriber) {\n        var element;\n        if (!elementOrOptions || typeof elementOrOptions === 'function') {\n            element = elementOrOptions;\n        }\n        else {\n            (duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector);\n        }\n        var groups = new Map();\n        var notify = function (cb) {\n            groups.forEach(cb);\n            cb(subscriber);\n        };\n        var handleError = function (err) { return notify(function (consumer) { return consumer.error(err); }); };\n        var activeGroups = 0;\n        var teardownAttempted = false;\n        var groupBySourceSubscriber = new OperatorSubscriber(subscriber, function (value) {\n            try {\n                var key_1 = keySelector(value);\n                var group_1 = groups.get(key_1);\n                if (!group_1) {\n                    groups.set(key_1, (group_1 = connector ? connector() : new Subject()));\n                    var grouped = createGroupedObservable(key_1, group_1);\n                    subscriber.next(grouped);\n                    if (duration) {\n                        var durationSubscriber_1 = createOperatorSubscriber(group_1, function () {\n                            group_1.complete();\n                            durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe();\n                        }, undefined, undefined, function () { return groups.delete(key_1); });\n                        groupBySourceSubscriber.add(innerFrom(duration(grouped)).subscribe(durationSubscriber_1));\n                    }\n                }\n                group_1.next(element ? element(value) : value);\n            }\n            catch (err) {\n                handleError(err);\n            }\n        }, function () { return notify(function (consumer) { return consumer.complete(); }); }, handleError, function () { return groups.clear(); }, function () {\n            teardownAttempted = true;\n            return activeGroups === 0;\n        });\n        source.subscribe(groupBySourceSubscriber);\n        function createGroupedObservable(key, groupSubject) {\n            var result = new Observable(function (groupSubscriber) {\n                activeGroups++;\n                var innerSub = groupSubject.subscribe(groupSubscriber);\n                return function () {\n                    innerSub.unsubscribe();\n                    --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe();\n                };\n            });\n            result.key = key;\n            return result;\n        }\n    });\n}\n//# sourceMappingURL=groupBy.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function isEmpty() {\n    return operate(function (source, subscriber) {\n        source.subscribe(createOperatorSubscriber(subscriber, function () {\n            subscriber.next(false);\n            subscriber.complete();\n        }, function () {\n            subscriber.next(true);\n            subscriber.complete();\n        }));\n    });\n}\n//# sourceMappingURL=isEmpty.js.map","import { __values } from \"tslib\";\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function takeLast(count) {\n    return count <= 0\n        ? function () { return EMPTY; }\n        : operate(function (source, subscriber) {\n            var buffer = [];\n            source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n                buffer.push(value);\n                count < buffer.length && buffer.shift();\n            }, function () {\n                var e_1, _a;\n                try {\n                    for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {\n                        var value = buffer_1_1.value;\n                        subscriber.next(value);\n                    }\n                }\n                catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                finally {\n                    try {\n                        if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1);\n                    }\n                    finally { if (e_1) throw e_1.error; }\n                }\n                subscriber.complete();\n            }, undefined, function () {\n                buffer = null;\n            }));\n        });\n}\n//# sourceMappingURL=takeLast.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\nexport function last(predicate, defaultValue) {\n    var hasDefaultValue = arguments.length >= 2;\n    return function (source) {\n        return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n    };\n}\n//# sourceMappingURL=last.js.map","import { reduce } from './reduce';\nimport { isFunction } from '../util/isFunction';\nexport function max(comparer) {\n    return reduce(isFunction(comparer) ? function (x, y) { return (comparer(x, y) > 0 ? x : y); } : function (x, y) { return (x > y ? x : y); });\n}\n//# sourceMappingURL=max.js.map","import { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nexport function mergeScan(accumulator, seed, concurrent) {\n    if (concurrent === void 0) { concurrent = Infinity; }\n    return operate(function (source, subscriber) {\n        var state = seed;\n        return mergeInternals(source, subscriber, function (value, index) { return accumulator(state, value, index); }, concurrent, function (value) {\n            state = value;\n        }, false, undefined, function () { return (state = null); });\n    });\n}\n//# sourceMappingURL=mergeScan.js.map","import { reduce } from './reduce';\nimport { isFunction } from '../util/isFunction';\nexport function min(comparer) {\n    return reduce(isFunction(comparer) ? function (x, y) { return (comparer(x, y) < 0 ? x : y); } : function (x, y) { return (x < y ? x : y); });\n}\n//# sourceMappingURL=min.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n    return operate(function (source, subscriber) {\n        var prev;\n        var hasPrev = false;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            var p = prev;\n            prev = value;\n            hasPrev && subscriber.next([p, value]);\n            hasPrev = true;\n        }));\n    });\n}\n//# sourceMappingURL=pairwise.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n    __extends(BehaviorSubject, _super);\n    function BehaviorSubject(_value) {\n        var _this = _super.call(this) || this;\n        _this._value = _value;\n        return _this;\n    }\n    Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n        get: function () {\n            return this.getValue();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    BehaviorSubject.prototype._subscribe = function (subscriber) {\n        var subscription = _super.prototype._subscribe.call(this, subscriber);\n        !subscription.closed && subscriber.next(this._value);\n        return subscription;\n    };\n    BehaviorSubject.prototype.getValue = function () {\n        var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n        if (hasError) {\n            throw thrownError;\n        }\n        this._throwIfClosed();\n        return _value;\n    };\n    BehaviorSubject.prototype.next = function (value) {\n        _super.prototype.next.call(this, (this._value = value));\n    };\n    return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n    __extends(ReplaySubject, _super);\n    function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n        if (_bufferSize === void 0) { _bufferSize = Infinity; }\n        if (_windowTime === void 0) { _windowTime = Infinity; }\n        if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n        var _this = _super.call(this) || this;\n        _this._bufferSize = _bufferSize;\n        _this._windowTime = _windowTime;\n        _this._timestampProvider = _timestampProvider;\n        _this._buffer = [];\n        _this._infiniteTimeWindow = true;\n        _this._infiniteTimeWindow = _windowTime === Infinity;\n        _this._bufferSize = Math.max(1, _bufferSize);\n        _this._windowTime = Math.max(1, _windowTime);\n        return _this;\n    }\n    ReplaySubject.prototype.next = function (value) {\n        var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n        if (!isStopped) {\n            _buffer.push(value);\n            !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n        }\n        this._trimBuffer();\n        _super.prototype.next.call(this, value);\n    };\n    ReplaySubject.prototype._subscribe = function (subscriber) {\n        this._throwIfClosed();\n        this._trimBuffer();\n        var subscription = this._innerSubscribe(subscriber);\n        var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n        var copy = _buffer.slice();\n        for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n            subscriber.next(copy[i]);\n        }\n        this._checkFinalizedStatuses(subscriber);\n        return subscription;\n    };\n    ReplaySubject.prototype._trimBuffer = function () {\n        var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n        var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n        _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n        if (!_infiniteTimeWindow) {\n            var now = _timestampProvider.now();\n            var last = 0;\n            for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n                last = i;\n            }\n            last && _buffer.splice(0, last + 1);\n        }\n    };\n    return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function race() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    sources = argsOrArgArray(sources);\n    return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\nexport function raceInit(sources) {\n    return function (subscriber) {\n        var subscriptions = [];\n        var _loop_1 = function (i) {\n            subscriptions.push(innerFrom(sources[i]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n                if (subscriptions) {\n                    for (var s = 0; s < subscriptions.length; s++) {\n                        s !== i && subscriptions[s].unsubscribe();\n                    }\n                    subscriptions = null;\n                }\n                subscriber.next(value);\n            })));\n        };\n        for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n            _loop_1(i);\n        }\n    };\n}\n//# sourceMappingURL=race.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { timer } from '../observable/timer';\nexport function repeat(countOrConfig) {\n    var _a;\n    var count = Infinity;\n    var delay;\n    if (countOrConfig != null) {\n        if (typeof countOrConfig === 'object') {\n            (_a = countOrConfig.count, count = _a === void 0 ? Infinity : _a, delay = countOrConfig.delay);\n        }\n        else {\n            count = countOrConfig;\n        }\n    }\n    return count <= 0\n        ? function () { return EMPTY; }\n        : operate(function (source, subscriber) {\n            var soFar = 0;\n            var sourceSub;\n            var resubscribe = function () {\n                sourceSub === null || sourceSub === void 0 ? void 0 : sourceSub.unsubscribe();\n                sourceSub = null;\n                if (delay != null) {\n                    var notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(soFar));\n                    var notifierSubscriber_1 = createOperatorSubscriber(subscriber, function () {\n                        notifierSubscriber_1.unsubscribe();\n                        subscribeToSource();\n                    });\n                    notifier.subscribe(notifierSubscriber_1);\n                }\n                else {\n                    subscribeToSource();\n                }\n            };\n            var subscribeToSource = function () {\n                var syncUnsub = false;\n                sourceSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, function () {\n                    if (++soFar < count) {\n                        if (sourceSub) {\n                            resubscribe();\n                        }\n                        else {\n                            syncUnsub = true;\n                        }\n                    }\n                    else {\n                        subscriber.complete();\n                    }\n                }));\n                if (syncUnsub) {\n                    resubscribe();\n                }\n            };\n            subscribeToSource();\n        });\n}\n//# sourceMappingURL=repeat.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function sample(notifier) {\n    return operate(function (source, subscriber) {\n        var hasValue = false;\n        var lastValue = null;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            hasValue = true;\n            lastValue = value;\n        }));\n        innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, function () {\n            if (hasValue) {\n                hasValue = false;\n                var value = lastValue;\n                lastValue = null;\n                subscriber.next(value);\n            }\n        }, noop));\n    });\n}\n//# sourceMappingURL=sample.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period, scheduler) {\n    if (period === void 0) { period = 0; }\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    if (period < 0) {\n        period = 0;\n    }\n    return timer(period, period, scheduler);\n}\n//# sourceMappingURL=interval.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { sample } from './sample';\nimport { interval } from '../observable/interval';\nexport function sampleTime(period, scheduler) {\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    return sample(interval(period, scheduler));\n}\n//# sourceMappingURL=sampleTime.js.map","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n    return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n//# sourceMappingURL=scan.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function sequenceEqual(compareTo, comparator) {\n    if (comparator === void 0) { comparator = function (a, b) { return a === b; }; }\n    return operate(function (source, subscriber) {\n        var aState = createState();\n        var bState = createState();\n        var emit = function (isEqual) {\n            subscriber.next(isEqual);\n            subscriber.complete();\n        };\n        var createSubscriber = function (selfState, otherState) {\n            var sequenceEqualSubscriber = createOperatorSubscriber(subscriber, function (a) {\n                var buffer = otherState.buffer, complete = otherState.complete;\n                if (buffer.length === 0) {\n                    complete ? emit(false) : selfState.buffer.push(a);\n                }\n                else {\n                    !comparator(a, buffer.shift()) && emit(false);\n                }\n            }, function () {\n                selfState.complete = true;\n                var complete = otherState.complete, buffer = otherState.buffer;\n                complete && emit(buffer.length === 0);\n                sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe();\n            });\n            return sequenceEqualSubscriber;\n        };\n        source.subscribe(createSubscriber(aState, bState));\n        innerFrom(compareTo).subscribe(createSubscriber(bState, aState));\n    });\n}\nfunction createState() {\n    return {\n        buffer: [],\n        complete: false,\n    };\n}\n//# sourceMappingURL=sequenceEqual.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n    return function (wrapperSource) {\n        var connection;\n        var resetConnection;\n        var subject;\n        var refCount = 0;\n        var hasCompleted = false;\n        var hasErrored = false;\n        var cancelReset = function () {\n            resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n            resetConnection = undefined;\n        };\n        var reset = function () {\n            cancelReset();\n            connection = subject = undefined;\n            hasCompleted = hasErrored = false;\n        };\n        var resetAndUnsubscribe = function () {\n            var conn = connection;\n            reset();\n            conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n        };\n        return operate(function (source, subscriber) {\n            refCount++;\n            if (!hasErrored && !hasCompleted) {\n                cancelReset();\n            }\n            var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n            subscriber.add(function () {\n                refCount--;\n                if (refCount === 0 && !hasErrored && !hasCompleted) {\n                    resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n                }\n            });\n            dest.subscribe(subscriber);\n            if (!connection &&\n                refCount > 0) {\n                connection = new SafeSubscriber({\n                    next: function (value) { return dest.next(value); },\n                    error: function (err) {\n                        hasErrored = true;\n                        cancelReset();\n                        resetConnection = handleReset(reset, resetOnError, err);\n                        dest.error(err);\n                    },\n                    complete: function () {\n                        hasCompleted = true;\n                        cancelReset();\n                        resetConnection = handleReset(reset, resetOnComplete);\n                        dest.complete();\n                    },\n                });\n                innerFrom(source).subscribe(connection);\n            }\n        })(wrapperSource);\n    };\n}\nfunction handleReset(reset, on) {\n    var args = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        args[_i - 2] = arguments[_i];\n    }\n    if (on === true) {\n        reset();\n        return;\n    }\n    if (on === false) {\n        return;\n    }\n    var onSubscriber = new SafeSubscriber({\n        next: function () {\n            onSubscriber.unsubscribe();\n            reset();\n        },\n    });\n    return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { createErrorClass } from './createErrorClass';\nexport var SequenceError = createErrorClass(function (_super) {\n    return function SequenceErrorImpl(message) {\n        _super(this);\n        this.name = 'SequenceError';\n        this.message = message;\n    };\n});\n//# sourceMappingURL=SequenceError.js.map","import { createErrorClass } from './createErrorClass';\nexport var NotFoundError = createErrorClass(function (_super) {\n    return function NotFoundErrorImpl(message) {\n        _super(this);\n        this.name = 'NotFoundError';\n        this.message = message;\n    };\n});\n//# sourceMappingURL=NotFoundError.js.map","import { EmptyError } from '../util/EmptyError';\nimport { SequenceError } from '../util/SequenceError';\nimport { NotFoundError } from '../util/NotFoundError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function single(predicate) {\n    return operate(function (source, subscriber) {\n        var hasValue = false;\n        var singleValue;\n        var seenValue = false;\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            seenValue = true;\n            if (!predicate || predicate(value, index++, source)) {\n                hasValue && subscriber.error(new SequenceError('Too many matching values'));\n                hasValue = true;\n                singleValue = value;\n            }\n        }, function () {\n            if (hasValue) {\n                subscriber.next(singleValue);\n                subscriber.complete();\n            }\n            else {\n                subscriber.error(seenValue ? new NotFoundError('No matching values') : new EmptyError());\n            }\n        }));\n    });\n}\n//# sourceMappingURL=single.js.map","import { filter } from './filter';\nexport function skip(count) {\n    return filter(function (_, index) { return count <= index; });\n}\n//# sourceMappingURL=skip.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function skipLast(skipCount) {\n    return skipCount <= 0\n        ?\n            identity\n        : operate(function (source, subscriber) {\n            var ring = new Array(skipCount);\n            var seen = 0;\n            source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n                var valueIndex = seen++;\n                if (valueIndex < skipCount) {\n                    ring[valueIndex] = value;\n                }\n                else {\n                    var index = valueIndex % skipCount;\n                    var oldValue = ring[index];\n                    ring[index] = value;\n                    subscriber.next(oldValue);\n                }\n            }));\n            return function () {\n                ring = null;\n            };\n        });\n}\n//# sourceMappingURL=skipLast.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function skipUntil(notifier) {\n    return operate(function (source, subscriber) {\n        var taking = false;\n        var skipSubscriber = createOperatorSubscriber(subscriber, function () {\n            skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe();\n            taking = true;\n        }, noop);\n        innerFrom(notifier).subscribe(skipSubscriber);\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) { return taking && subscriber.next(value); }));\n    });\n}\n//# sourceMappingURL=skipUntil.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function skipWhile(predicate) {\n    return operate(function (source, subscriber) {\n        var taking = false;\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) { return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); }));\n    });\n}\n//# sourceMappingURL=skipWhile.js.map","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith() {\n    var values = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        values[_i] = arguments[_i];\n    }\n    var scheduler = popScheduler(values);\n    return operate(function (source, subscriber) {\n        (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n    });\n}\n//# sourceMappingURL=startWith.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n    return operate(function (source, subscriber) {\n        var innerSubscriber = null;\n        var index = 0;\n        var isComplete = false;\n        var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n            var innerIndex = 0;\n            var outerIndex = index++;\n            innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n                innerSubscriber = null;\n                checkComplete();\n            })));\n        }, function () {\n            isComplete = true;\n            checkComplete();\n        }));\n    });\n}\n//# sourceMappingURL=switchMap.js.map","import { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\nexport function switchAll() {\n    return switchMap(identity);\n}\n//# sourceMappingURL=switchAll.js.map","import { switchMap } from './switchMap';\nimport { operate } from '../util/lift';\nexport function switchScan(accumulator, seed) {\n    return operate(function (source, subscriber) {\n        var state = seed;\n        switchMap(function (value, index) { return accumulator(state, value, index); }, function (_, innerValue) { return ((state = innerValue), innerValue); })(source).subscribe(subscriber);\n        return function () {\n            state = null;\n        };\n    });\n}\n//# sourceMappingURL=switchScan.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n    return operate(function (source, subscriber) {\n        innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop));\n        !subscriber.closed && source.subscribe(subscriber);\n    });\n}\n//# sourceMappingURL=takeUntil.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function takeWhile(predicate, inclusive) {\n    if (inclusive === void 0) { inclusive = false; }\n    return operate(function (source, subscriber) {\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            var result = predicate(value, index++);\n            (result || inclusive) && subscriber.next(value);\n            !result && subscriber.complete();\n        }));\n    });\n}\n//# sourceMappingURL=takeWhile.js.map","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n    var tapObserver = isFunction(observerOrNext) || error || complete\n        ?\n            { next: observerOrNext, error: error, complete: complete }\n        : observerOrNext;\n    return tapObserver\n        ? operate(function (source, subscriber) {\n            var _a;\n            (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n            var isUnsub = true;\n            source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n                var _a;\n                (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n                subscriber.next(value);\n            }, function () {\n                var _a;\n                isUnsub = false;\n                (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n                subscriber.complete();\n            }, function (err) {\n                var _a;\n                isUnsub = false;\n                (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n                subscriber.error(err);\n            }, function () {\n                var _a, _b;\n                if (isUnsub) {\n                    (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n                }\n                (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n            }));\n        })\n        :\n            identity;\n}\n//# sourceMappingURL=tap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n    return operate(function (source, subscriber) {\n        var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n        var hasValue = false;\n        var sendValue = null;\n        var throttled = null;\n        var isComplete = false;\n        var endThrottling = function () {\n            throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n            throttled = null;\n            if (trailing) {\n                send();\n                isComplete && subscriber.complete();\n            }\n        };\n        var cleanupThrottling = function () {\n            throttled = null;\n            isComplete && subscriber.complete();\n        };\n        var startThrottle = function (value) {\n            return (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n        };\n        var send = function () {\n            if (hasValue) {\n                hasValue = false;\n                var value = sendValue;\n                sendValue = null;\n                subscriber.next(value);\n                !isComplete && startThrottle(value);\n            }\n        };\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            hasValue = true;\n            sendValue = value;\n            !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n        }, function () {\n            isComplete = true;\n            !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n        }));\n    });\n}\n//# sourceMappingURL=throttle.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    var duration$ = timer(duration, scheduler);\n    return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function timeInterval(scheduler) {\n    if (scheduler === void 0) { scheduler = asyncScheduler; }\n    return operate(function (source, subscriber) {\n        var last = scheduler.now();\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            var now = scheduler.now();\n            var interval = now - last;\n            last = now;\n            subscriber.next(new TimeInterval(value, interval));\n        }));\n    });\n}\nvar TimeInterval = (function () {\n    function TimeInterval(value, interval) {\n        this.value = value;\n        this.interval = interval;\n    }\n    return TimeInterval;\n}());\nexport { TimeInterval };\n//# sourceMappingURL=timeInterval.js.map","import { dateTimestampProvider } from '../scheduler/dateTimestampProvider';\nimport { map } from './map';\nexport function timestamp(timestampProvider) {\n    if (timestampProvider === void 0) { timestampProvider = dateTimestampProvider; }\n    return map(function (value) { return ({ value: value, timestamp: timestampProvider.now() }); });\n}\n//# sourceMappingURL=timestamp.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom() {\n    var inputs = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        inputs[_i] = arguments[_i];\n    }\n    var project = popResultSelector(inputs);\n    return operate(function (source, subscriber) {\n        var len = inputs.length;\n        var otherValues = new Array(len);\n        var hasValue = inputs.map(function () { return false; });\n        var ready = false;\n        var _loop_1 = function (i) {\n            innerFrom(inputs[i]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n                otherValues[i] = value;\n                if (!ready && !hasValue[i]) {\n                    hasValue[i] = true;\n                    (ready = hasValue.every(identity)) && (hasValue = null);\n                }\n            }, noop));\n        };\n        for (var i = 0; i < len; i++) {\n            _loop_1(i);\n        }\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            if (ready) {\n                var values = __spreadArray([value], __read(otherValues));\n                subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);\n            }\n        }));\n    });\n}\n//# sourceMappingURL=withLatestFrom.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { EMPTY } from './empty';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { popResultSelector } from '../util/args';\nexport function zip() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var resultSelector = popResultSelector(args);\n    var sources = argsOrArgArray(args);\n    return sources.length\n        ? new Observable(function (subscriber) {\n            var buffers = sources.map(function () { return []; });\n            var completed = sources.map(function () { return false; });\n            subscriber.add(function () {\n                buffers = completed = null;\n            });\n            var _loop_1 = function (sourceIndex) {\n                innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n                    buffers[sourceIndex].push(value);\n                    if (buffers.every(function (buffer) { return buffer.length; })) {\n                        var result = buffers.map(function (buffer) { return buffer.shift(); });\n                        subscriber.next(resultSelector ? resultSelector.apply(void 0, __spreadArray([], __read(result))) : result);\n                        if (buffers.some(function (buffer, i) { return !buffer.length && completed[i]; })) {\n                            subscriber.complete();\n                        }\n                    }\n                }, function () {\n                    completed[sourceIndex] = true;\n                    !buffers[sourceIndex].length && subscriber.complete();\n                }));\n            };\n            for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {\n                _loop_1(sourceIndex);\n            }\n            return function () {\n                buffers = completed = null;\n            };\n        })\n        : EMPTY;\n}\n//# sourceMappingURL=zip.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nvar VirtualTimeScheduler = (function (_super) {\n    __extends(VirtualTimeScheduler, _super);\n    function VirtualTimeScheduler(schedulerActionCtor, maxFrames) {\n        if (schedulerActionCtor === void 0) { schedulerActionCtor = VirtualAction; }\n        if (maxFrames === void 0) { maxFrames = Infinity; }\n        var _this = _super.call(this, schedulerActionCtor, function () { return _this.frame; }) || this;\n        _this.maxFrames = maxFrames;\n        _this.frame = 0;\n        _this.index = -1;\n        return _this;\n    }\n    VirtualTimeScheduler.prototype.flush = function () {\n        var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n        var error;\n        var action;\n        while ((action = actions[0]) && action.delay <= maxFrames) {\n            actions.shift();\n            this.frame = action.delay;\n            if ((error = action.execute(action.state, action.delay))) {\n                break;\n            }\n        }\n        if (error) {\n            while ((action = actions.shift())) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    VirtualTimeScheduler.frameTimeFactor = 10;\n    return VirtualTimeScheduler;\n}(AsyncScheduler));\nexport { VirtualTimeScheduler };\nvar VirtualAction = (function (_super) {\n    __extends(VirtualAction, _super);\n    function VirtualAction(scheduler, work, index) {\n        if (index === void 0) { index = (scheduler.index += 1); }\n        var _this = _super.call(this, scheduler, work) || this;\n        _this.scheduler = scheduler;\n        _this.work = work;\n        _this.index = index;\n        _this.active = true;\n        _this.index = scheduler.index = index;\n        return _this;\n    }\n    VirtualAction.prototype.schedule = function (state, delay) {\n        if (delay === void 0) { delay = 0; }\n        if (Number.isFinite(delay)) {\n            if (!this.id) {\n                return _super.prototype.schedule.call(this, state, delay);\n            }\n            this.active = false;\n            var action = new VirtualAction(this.scheduler, this.work);\n            this.add(action);\n            return action.schedule(state, delay);\n        }\n        else {\n            return Subscription.EMPTY;\n        }\n    };\n    VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        this.delay = scheduler.frame + delay;\n        var actions = scheduler.actions;\n        actions.push(this);\n        actions.sort(VirtualAction.sortActions);\n        return 1;\n    };\n    VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) { delay = 0; }\n        return undefined;\n    };\n    VirtualAction.prototype._execute = function (state, delay) {\n        if (this.active === true) {\n            return _super.prototype._execute.call(this, state, delay);\n        }\n    };\n    VirtualAction.sortActions = function (a, b) {\n        if (a.delay === b.delay) {\n            if (a.index === b.index) {\n                return 0;\n            }\n            else if (a.index > b.index) {\n                return 1;\n            }\n            else {\n                return -1;\n            }\n        }\n        else if (a.delay > b.delay) {\n            return 1;\n        }\n        else {\n            return -1;\n        }\n    };\n    return VirtualAction;\n}(AsyncAction));\nexport { VirtualAction };\n//# sourceMappingURL=VirtualTimeScheduler.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nexport function defer(observableFactory) {\n    return new Observable(function (subscriber) {\n        innerFrom(observableFactory()).subscribe(subscriber);\n    });\n}\n//# sourceMappingURL=defer.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './innerFrom';\nimport { popResultSelector } from '../util/args';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nexport function forkJoin() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var resultSelector = popResultSelector(args);\n    var _a = argsArgArrayOrObject(args), sources = _a.args, keys = _a.keys;\n    var result = new Observable(function (subscriber) {\n        var length = sources.length;\n        if (!length) {\n            subscriber.complete();\n            return;\n        }\n        var values = new Array(length);\n        var remainingCompletions = length;\n        var remainingEmissions = length;\n        var _loop_1 = function (sourceIndex) {\n            var hasValue = false;\n            innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n                if (!hasValue) {\n                    hasValue = true;\n                    remainingEmissions--;\n                }\n                values[sourceIndex] = value;\n            }, function () { return remainingCompletions--; }, undefined, function () {\n                if (!remainingCompletions || !hasValue) {\n                    if (!remainingEmissions) {\n                        subscriber.next(keys ? createObject(keys, values) : values);\n                    }\n                    subscriber.complete();\n                }\n            }));\n        };\n        for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n            _loop_1(sourceIndex);\n        }\n    });\n    return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n//# sourceMappingURL=forkJoin.js.map","import { __generator } from \"tslib\";\nimport { identity } from '../util/identity';\nimport { isScheduler } from '../util/isScheduler';\nimport { defer } from './defer';\nimport { scheduleIterable } from '../scheduled/scheduleIterable';\nexport function generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) {\n    var _a, _b;\n    var resultSelector;\n    var initialState;\n    if (arguments.length === 1) {\n        (_a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? identity : _b, scheduler = _a.scheduler);\n    }\n    else {\n        initialState = initialStateOrOptions;\n        if (!resultSelectorOrScheduler || isScheduler(resultSelectorOrScheduler)) {\n            resultSelector = identity;\n            scheduler = resultSelectorOrScheduler;\n        }\n        else {\n            resultSelector = resultSelectorOrScheduler;\n        }\n    }\n    function gen() {\n        var state;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    state = initialState;\n                    _a.label = 1;\n                case 1:\n                    if (!(!condition || condition(state))) return [3, 4];\n                    return [4, resultSelector(state)];\n                case 2:\n                    _a.sent();\n                    _a.label = 3;\n                case 3:\n                    state = iterate(state);\n                    return [3, 1];\n                case 4: return [2];\n            }\n        });\n    }\n    return defer((scheduler\n        ?\n            function () { return scheduleIterable(gen(), scheduler); }\n        :\n            gen));\n}\n//# sourceMappingURL=generate.js.map","import { defer } from './defer';\nexport function iif(condition, trueResult, falseResult) {\n    return defer(function () { return (condition() ? trueResult : falseResult); });\n}\n//# sourceMappingURL=iif.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var scheduler = popScheduler(args);\n    var concurrent = popNumber(args, Infinity);\n    var sources = args;\n    return !sources.length\n        ?\n            EMPTY\n        : sources.length === 1\n            ?\n                innerFrom(sources[0])\n            :\n                mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { Observable } from '../Observable';\nimport { EMPTY } from './empty';\nexport function range(start, count, scheduler) {\n    if (count == null) {\n        count = start;\n        start = 0;\n    }\n    if (count <= 0) {\n        return EMPTY;\n    }\n    var end = count + start;\n    return new Observable(scheduler\n        ?\n            function (subscriber) {\n                var n = start;\n                return scheduler.schedule(function () {\n                    if (n < end) {\n                        subscriber.next(n++);\n                        this.schedule();\n                    }\n                    else {\n                        subscriber.complete();\n                    }\n                });\n            }\n        :\n            function (subscriber) {\n                var n = start;\n                while (n < end && !subscriber.closed) {\n                    subscriber.next(n++);\n                }\n                subscriber.complete();\n            });\n}\n//# sourceMappingURL=range.js.map","import { creationExamples } from \"./creation-examples\";\nimport { combinationExamples } from \"./combination-examples\";\nimport { conditionalExamples } from \"./conditional-examples\";\nimport { filteringExamples } from \"./filtering-examples\";\nimport { mathExamples } from \"./math-examples\";\nimport { transformationExamples } from \"./transformation-examples\";\nimport { utilityExamples } from \"./utility-examples\";\nimport { flatternExamples } from \"./flattern-examples\";\nimport { multicastingExamples } from \"./multicasting-examples\";\n\n// https://rxjs.dev/api/operators/merge\nexport const categories = {\n  \"Creation Observables\": creationExamples,\n  \"Combination Operators\": combinationExamples,\n  \"Flattern Operators\": flatternExamples,\n  \"Multicasting Operators\": multicastingExamples,\n  \"Transformation Operators\": transformationExamples,\n  \"Filtering Operators\": filteringExamples,\n  \"Conditional Operators\": conditionalExamples,\n  \"Utility Operators\": utilityExamples,\n  \"Mathematical Operators\": mathExamples\n};\n","import {\n  bindCallback,\n  bindNodeCallback,\n  defer,\n  EMPTY,\n  fromEvent,\n  fromEventPattern,\n  from,\n  generate,\n  iif,\n  interval,\n  of,\n  range,\n  throwError,\n  timer\n} from \"rxjs\";\nimport { delayWhen } from \"rxjs/operators\";\n\nexport const creationExamples = {\n  // Creates the Observable lazily, that is, only when it is subscribed.\n  defer: {\n    label: \"defer(() => of(10, 20, 30))\",\n    inputs: [],\n    apply: function (inputs, scheduler) {\n      return defer(() =>\n        of(10, 20, 30).pipe(delayWhen((x) => timer(x, scheduler)))\n      );\n    }\n  },\n\n  // Just emits 'complete', and nothing else.\n  EMPTY: {\n    label: \"EMPTY\",\n    inputs: [],\n    apply: function (inputs, scheduler) {\n      return EMPTY;\n    }\n  },\n\n  from: {\n    label: \"from([10, 20, 30])\",\n    inputs: [],\n    apply: function (inputs, scheduler) {\n      return from([10, 20, 30]).pipe(delayWhen((x) => timer(x, scheduler)));\n    }\n  },\n\n  fromEvent: {\n    label: \"fromEvent(document, 'click')\",\n    inputs: [],\n    apply: function (inputs, scheduler) {\n      let t = 30;\n      return from([\"ev\", \"ev\"]).pipe(\n        delayWhen((ev) => timer((t += 20), scheduler))\n      );\n    }\n  },\n\n  fromEventPattern: {\n    label: \"fromEventPattern(addHandler, removeHandler)\",\n    inputs: [],\n    apply: function (inputs, scheduler) {\n      let t = 30;\n      return from([\"ev\", \"ev\"]).pipe(\n        delayWhen((ev) => timer((t += 20), scheduler))\n      );\n    }\n  },\n\n  generate: {\n    label:\n      \"generate({initialState: 0,condition: (x) => x < 3,iterate: (x) => x + 1,resultSelector: (x) => x})\",\n    inputs: [],\n    apply: function (inputs, scheduler) {\n      return generate({\n        initialState: 0,\n        condition: (x) => x < 3,\n        iterate: (x) => x + 1,\n        resultSelector: (x) => x\n      }).pipe(delayWhen((x) => timer(x * 10, scheduler)));\n    }\n  },\n\n  iif: {\n    label: \"iif(() => boolean, trueObservable, falseObservable)\",\n    inputs: [],\n    apply: function (inputs, scheduler) {\n      return iif(() => true, of(\"true\"), of(\"false\"));\n    }\n  },\n\n  interval: {\n    label: \"interval(10, scheduler)\",\n    inputs: [],\n    apply: function (inputs, scheduler) {\n      return interval(10, scheduler);\n    }\n  },\n\n  of: {\n    label: \"of(1,2,3)\",\n    inputs: [],\n    apply: function (inputs, scheduler) {\n      return of(1, 2, 3).pipe(delayWhen((x) => timer(x * 10, scheduler)));\n    }\n  },\n\n  range: {\n    label: \"range(1, 10)\",\n    inputs: [],\n    apply: function (inputs, scheduler) {\n      return range(1, 10).pipe(delayWhen((x) => timer(x * 10, scheduler)));\n    }\n  },\n\n  timer: {\n    label: \"timer(start: 30, interval: 10)\",\n    inputs: [],\n    apply: function (inputs, scheduler) {\n      return timer(30, 10, scheduler);\n    }\n  }\n};\n","import { combineLatest, concat, forkJoin, merge, race, zip } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\n\nexport const combinationExamples = {\n  combineLatest: {\n    label: \"combineLatest([$0, $1])\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 20, c: 2 },\n        { t: 65, c: 3 },\n        { t: 75, c: 4 },\n        { t: 92, c: 5 }\n      ],\n      [\n        { t: 10, c: \"A\" },\n        { t: 25, c: \"B\" },\n        { t: 50, c: \"C\" },\n        { t: 57, c: \"D\" }\n      ]\n    ],\n    apply: function (inputs) {\n      return combineLatest([inputs[0], inputs[1]]).pipe(\n        map(([x, y]) => `[${x.content},${y.content}]`)\n      );\n    }\n  },\n\n  concat: {\n    label: \"concat\",\n    inputs: [\n      [{ t: 0, c: 1 }, { t: 15, c: 1 }, { t: 50, c: 1 }, 57],\n      [{ t: 0, c: 2 }, { t: 8, c: 2 }, 12]\n    ],\n    apply: function (inputs) {\n      return concat(...inputs);\n    }\n  },\n\n  forkJoin: {\n    label: \"forkJoin\",\n    inputs: [\n      [{ t: 0, c: \"A\" }, { t: 15, c: \"B\" }, { t: 30, c: \"C\" }, 50],\n      [{ t: 37, c: \"D\" }, { t: 68, c: \"E\" }, 80]\n    ],\n    apply: function (inputs) {\n      return forkJoin(inputs).pipe(\n        map(([x, y]) => `[${x.content},${y.content}]`)\n      );\n    }\n  },\n\n  merge: {\n    label: \"merge\",\n    inputs: [\n      [{ t: 0, c: 1 }, { t: 15, c: 1 }, { t: 50, c: 1 }, 57],\n      [{ t: 0, c: 2 }, { t: 8, c: 2 }, 12]\n    ],\n    apply: function (inputs) {\n      return merge(...inputs);\n    }\n  },\n\n  race: {\n    label: \"race\",\n    inputs: [\n      [\n        { t: 10, c: 20 },\n        { t: 20, c: 40 },\n        { t: 30, c: 60 }\n      ],\n      [\n        { t: 5, c: 1 },\n        { t: 15, c: 2 },\n        { t: 25, c: 3 }\n      ],\n      [\n        { t: 20, c: 0 },\n        { t: 32, c: 0 },\n        { t: 44, c: 0 }\n      ]\n    ],\n    apply: function (inputs) {\n      return race(inputs);\n    }\n  },\n\n  zip: {\n    label: \"zip\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 20, c: 2 },\n        { t: 65, c: 3 },\n        { t: 75, c: 4 },\n        { t: 92, c: 5 }\n      ],\n      [\n        { t: 10, c: \"A\" },\n        { t: 25, c: \"B\" },\n        { t: 50, c: \"C\" },\n        { t: 57, c: \"D\" }\n      ]\n    ],\n    apply: function (inputs) {\n      return zip(inputs[0], inputs[1], (x, y) => \"\" + x.content + y.content);\n    }\n  }\n};\n","import { range, timer } from \"rxjs\";\nimport {\n  map,\n  delayWhen,\n  combineLatestAll,\n  concatAll,\n  exhaustAll,\n  mergeAll,\n  switchAll\n} from \"rxjs/operators\";\nimport { Examples } from \"./index\";\n\nexport const flatternExamples = {\n  combineLatestAll: {\n    label: \"combineLatestAll\",\n    inputs: [\n      [{ t: 0, c: \"A\" }, { t: 10, c: \"B\" }, { t: 20, c: \"C\" }, 25],\n      [{ t: 0, c: \"D\" }, { t: 10, c: \"E\" }, { t: 20, c: \"F\" }, 25]\n    ],\n    apply: function (inputs, scheduler) {\n      const highOrder$ = range(0, inputs.length).pipe(\n        delayWhen((i) => timer(i * 20, scheduler)),\n        map((i) => inputs[i])\n      );\n      return highOrder$.pipe(\n        combineLatestAll(),\n        map(([x, y]) => `[${x.content},${y.content}]`)\n      );\n    }\n  },\n\n  concatAll: {\n    label: \"concatAll\",\n    inputs: [\n      [{ t: 0, c: \"A\" }, { t: 10, c: \"B\" }, { t: 20, c: \"C\" }, 25],\n      [{ t: 0, c: \"D\" }, { t: 10, c: \"E\" }, { t: 20, c: \"F\" }, 25],\n      [{ t: 0, c: \"G\" }, { t: 10, c: \"H\" }, { t: 20, c: \"I\" }, 25]\n    ],\n    apply: function (inputs, scheduler) {\n      const highOrder$ = range(0, inputs.length).pipe(\n        delayWhen((i) => timer(i * 20, scheduler)),\n        map((i) => inputs[i])\n      );\n      return highOrder$.pipe(concatAll());\n    }\n  },\n\n  exhaustAll: {\n    label: \"exhaustAll\",\n    inputs: [\n      [{ t: 0, c: \"A\" }, { t: 10, c: \"B\" }, { t: 20, c: \"C\" }, 25],\n      [{ t: 0, c: \"D\" }, { t: 10, c: \"E\" }, { t: 20, c: \"F\" }, 25],\n      [{ t: 0, c: \"G\" }, { t: 10, c: \"H\" }, { t: 20, c: \"I\" }, 25]\n    ],\n    apply: function (inputs, scheduler) {\n      const highOrder$ = range(0, inputs.length).pipe(\n        delayWhen((i) => timer(i * 20, scheduler)),\n        map((i) => inputs[i])\n      );\n      return highOrder$.pipe(exhaustAll());\n    }\n  },\n\n  mergeAll: {\n    label: \"mergeAll\",\n    inputs: [\n      [{ t: 0, c: \"A\" }, { t: 5, c: \"B\" }, { t: 15, c: \"C\" }, 25],\n      [{ t: 0, c: \"D\" }, { t: 8, c: \"E\" }, { t: 18, c: \"F\" }, 25],\n      [{ t: 0, c: \"G\" }, { t: 10, c: \"H\" }, { t: 20, c: \"I\" }, 25]\n    ],\n    apply: function (inputs, scheduler) {\n      const highOrder$ = range(0, inputs.length).pipe(\n        delayWhen((i) => timer(i * 20, scheduler)),\n        map((i) => inputs[i])\n      );\n      return highOrder$.pipe(mergeAll());\n    }\n  },\n\n  switchAll: {\n    label: \"switchAll\",\n    inputs: [\n      [{ t: 0, c: \"A\" }, { t: 10, c: \"B\" }, { t: 20, c: \"C\" }, 25],\n      [{ t: 0, c: \"D\" }, { t: 10, c: \"E\" }, { t: 20, c: \"F\" }, 25],\n      [{ t: 0, c: \"G\" }, { t: 10, c: \"H\" }, { t: 20, c: \"I\" }, 25]\n    ],\n    apply: function (inputs, scheduler) {\n      const highOrder$ = range(0, inputs.length).pipe(\n        delayWhen((i) => timer(i * 20, scheduler)),\n        map((i) => inputs[i])\n      );\n      return highOrder$.pipe(switchAll());\n    }\n  }\n} as Examples;\n","import {\n  map,\n  /////////////////\n  share\n} from \"rxjs/operators\";\n\nexport const multicastingExamples = {\n  share: {\n    label: \"share\",\n    inputs: [\n      [\n        { t: 10, c: \"1\" },\n        { t: 20, c: \"2\" },\n        { t: 70, c: \"1\" }\n      ]\n    ],\n    apply: (inputs, scheduler) =>\n      inputs[0].pipe(\n        map((x) => x.content),\n        share()\n      )\n  }\n};\n","import { timer, EMPTY, of } from \"rxjs\";\nimport {\n  reduce,\n  tap,\n  delayWhen,\n  /////////////////\n  buffer,\n  bufferCount,\n  bufferTime,\n  bufferToggle,\n  bufferWhen,\n  concatMap,\n  exhaustMap,\n  expand,\n  groupBy,\n  map,\n  mergeMap,\n  mergeScan,\n  pairwise,\n  partition,\n  repeat,\n  scan,\n  startWith,\n  switchMap,\n  switchScan,\n  window,\n  windowCount,\n  windowTime,\n  windowToggle,\n  windowWhen,\n  withLatestFrom\n} from \"rxjs/operators\";\n\nexport const transformationExamples = {\n  buffer: {\n    label: \"buffer\",\n    inputs: [\n      [\n        { t: 9, c: \"A\" },\n        { t: 23, c: \"B\" },\n        { t: 40, c: \"C\" },\n        { t: 54, c: \"D\" },\n        { t: 60, c: \"E\" },\n        { t: 85, c: \"F\" }\n      ],\n      [\n        { t: 33, c: 0 },\n        { t: 66, c: 0 },\n        { t: 90, c: 0 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(\n        map((i) => i.content),\n        buffer(inputs[1]),\n        map((x) => `[${x}]`)\n      );\n    }\n  },\n\n  bufferCount: {\n    label: \"bufferCount(3, 2)\",\n    inputs: [\n      [\n        { t: 9, c: \"A\" },\n        { t: 23, c: \"B\" },\n        { t: 40, c: \"C\" },\n        { t: 54, c: \"D\" },\n        { t: 71, c: \"E\" },\n        { t: 85, c: \"F\" },\n        90\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(\n        map((i) => i.content),\n        bufferCount(3, 2),\n        map((arr) => `[${arr}]`),\n        tap(console.log)\n      );\n    }\n  },\n\n  bufferTime: {\n    label: \"bufferTime(30)\",\n    inputs: [\n      [\n        { t: 0, c: \"A\" },\n        { t: 10, c: \"B\" },\n        { t: 22, c: \"C\" },\n        { t: 61, c: \"D\" },\n        { t: 71, c: \"E\" },\n        { t: 95, c: \"F\" }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        map((i) => i.content),\n        bufferTime(30, scheduler),\n        map((x) => `[${x}]`)\n      );\n    }\n  },\n\n  bufferToggle: {\n    label: \"bufferToggle(open$, x => timer(x))\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 10, c: 2 },\n        { t: 20, c: 3 },\n        { t: 30, c: 4 },\n        { t: 40, c: 5 },\n        { t: 50, c: 6 },\n        { t: 60, c: 7 },\n        { t: 70, c: 8 },\n        { t: 80, c: 9 }\n      ],\n      [\n        { t: 15, c: 10 },\n        { t: 45, c: 30 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        map((i) => i.content),\n        bufferToggle(inputs[1], (x) => timer(x.content, scheduler)),\n        map((x) => `[${x}]`)\n      );\n    }\n  },\n\n  bufferWhen: {\n    label: \"bufferWhen\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 10, c: 2 },\n        { t: 20, c: 3 },\n        { t: 30, c: 4 },\n        { t: 40, c: 5 },\n        { t: 50, c: 6 },\n        { t: 60, c: 7 },\n        { t: 70, c: 8 },\n        { t: 80, c: 9 }\n      ],\n      [\n        { t: 35, c: 0 },\n        { t: 50, c: 0 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(\n        map((i) => i.content),\n        bufferWhen(() => inputs[1]),\n        map((x) => `[${x}]`)\n      );\n    }\n  },\n\n  concatMap: {\n    label: \"concatMap\",\n    inputs: [\n      [\n        { t: 0, c: \"A\" },\n        { t: 42, c: \"B\" },\n        { t: 55, c: \"C\" }\n      ],\n      [{ t: 0, c: 1 }, { t: 10, c: 2 }, { t: 20, c: 3 }, 20]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        concatMap((x) => inputs[1].pipe(map((y) => \"\" + x.content + y.content)))\n      );\n    }\n  },\n\n  exhaustMap: {\n    label: \"exhaustMap\",\n    inputs: [\n      [\n        { t: 0, c: \"A\" },\n        { t: 42, c: \"B\" },\n        { t: 55, c: \"C\" }\n      ],\n      [{ t: 0, c: 1 }, { t: 10, c: 2 }, { t: 20, c: 3 }, 20]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        exhaustMap((x) =>\n          inputs[1].pipe(map((y) => \"\" + x.content + y.content))\n        )\n      );\n    }\n  },\n\n  // // It's similar to mergeMap, but applies the projection function to every source value as well as every output value. It's recursive.\n  // expand: {\n  //   label: \"expand:recursive\",\n  //   inputs: [\n  //     [{ t: 0, c: 2 }, 30],\n  //     [{ t: 0, c: 3 }, 10]\n  //   ],\n  //   apply: function (inputs, scheduler) {\n  //     return inputs[0].pipe(\n  //       expand((x) =>\n  //         x >= 18 ? EMPTY : inputs[1].pipe(map((y) => x.content * y.content))\n  //       )\n  //     );\n  //   }\n  // },\n\n  groupBy: {\n    label: \"groupBy(i => i.content)【结果3,4重合】\",\n    inputs: [\n      [\n        { t: 10, c: 1 },\n        { t: 20, c: 2 },\n        { t: 30, c: 1 },\n        { t: 40, c: 2 },\n        { t: 50, c: 1 },\n        60\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        groupBy((i) => i.content),\n        mergeMap((group$) =>\n          group$.pipe(reduce((acc, cur) => acc + cur.content, 0))\n        ),\n        tap(console.log)\n      );\n    }\n  },\n\n  map: {\n    label: \"map(x => 10 * x)\",\n    inputs: [\n      [\n        { t: 10, c: 1 },\n        { t: 20, c: 2 },\n        { t: 50, c: 3 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(map((i) => i.content * 10));\n    }\n  },\n\n  mergeMap: {\n    label: \"mergeMap\",\n    inputs: [\n      [\n        { t: 0, c: \"A\" },\n        { t: 42, c: \"B\" },\n        { t: 55, c: \"C\" }\n      ],\n      [{ t: 0, c: 1 }, { t: 10, c: 2 }, { t: 20, c: 3 }, 20]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        mergeMap((x) => inputs[1].pipe(map((y) => \"\" + x.content + y.content)))\n      );\n    }\n  },\n\n  // It's like scan, but the Observables returned by the accumulator are merged into the outer Observable.\n  mergeScan: {\n    label: \"mergeScan\",\n    inputs: [\n      [\n        { t: 5, c: 1 },\n        { t: 15, c: 2 },\n        { t: 25, c: 3 },\n        { t: 35, c: 4 },\n        { t: 65, c: 5 },\n        70\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(mergeScan((acc, x) => of(acc + x.content), 0));\n    }\n  },\n\n  pairwise: {\n    label: \"pairwise\",\n    inputs: [\n      [\n        { t: 9, c: \"A\" },\n        { t: 23, c: \"B\" },\n        { t: 40, c: \"C\" },\n        { t: 54, c: \"D\" },\n        { t: 71, c: \"E\" },\n        { t: 85, c: \"F\" }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(\n        map((x) => x.content),\n        pairwise(),\n        map((x) => `[${x}]`)\n      );\n    }\n  },\n\n  // partition\n  // const observableValues = of(1, 2, 3, 4, 5, 6);\n  // const [evens$, odds$] = partition(observableValues, value => value % 2 === 0);\n\n  repeat: {\n    label: \"repeat(3)\",\n    inputs: [[{ t: 0, c: \"A\" }, { t: 12, c: \"B\" }, 26]],\n    apply: function (inputs) {\n      return inputs[0].pipe(repeat(3));\n    }\n  },\n\n  scan: {\n    label: \"scan\",\n    inputs: [\n      [\n        { t: 5, c: 1 },\n        { t: 15, c: 2 },\n        { t: 25, c: 3 },\n        { t: 35, c: 4 },\n        { t: 65, c: 5 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(scan((acc, x) => acc + x.content, 0));\n    }\n  },\n\n  startWith: {\n    label: \"startWith(1)\",\n    inputs: [\n      [\n        { t: 30, c: 2 },\n        { t: 40, c: 3 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(startWith(1, scheduler));\n    }\n  },\n\n  switchMap: {\n    label: \"switchMap\",\n    inputs: [\n      [\n        { t: 0, c: \"A\" },\n        { t: 42, c: \"B\" },\n        { t: 55, c: \"C\" }\n      ],\n      [{ t: 0, c: 1 }, { t: 10, c: 2 }, { t: 20, c: 3 }, 25]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        map((x) => x.content),\n        switchMap(\n          () => inputs[1].pipe(map((x) => x.content)),\n          (x, y) => \"\" + x + y\n        )\n      );\n    }\n  },\n\n  // It's like mergeScan, but only the most recent Observable returned by the accumulator is merged into the outer Observable.\n  switchScan: {\n    label: \"switchScan\",\n    inputs: [\n      [\n        { t: 5, c: 1 },\n        { t: 15, c: 2 },\n        { t: 25, c: 3 },\n        { t: 35, c: 4 },\n        { t: 65, c: 5 },\n        70\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(switchScan((acc, x) => of(acc + x.content), 0));\n    }\n  },\n\n  withLatestFrom: {\n    label: 'withLatestFrom(input, (x, y) => \"\" + x + y)',\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 20, c: 2 },\n        { t: 65, c: 3 },\n        { t: 75, c: 4 },\n        { t: 92, c: 5 }\n      ],\n      [\n        { t: 10, c: \"A\" },\n        { t: 25, c: \"B\" },\n        { t: 50, c: \"C\" },\n        { t: 57, c: \"D\" }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(\n        withLatestFrom(inputs[1], (x, y) => \"\" + x.content + y.content)\n      );\n    }\n  }\n};\n","import { timer } from \"rxjs\";\nimport {\n  tap,\n  /////////////////\n  audit,\n  auditTime,\n  debounce,\n  debounceTime,\n  distinct,\n  distinctUntilChanged,\n  distinctUntilKeyChanged,\n  elementAt,\n  filter,\n  find,\n  findIndex,\n  first,\n  ignoreElements,\n  last,\n  sample,\n  sampleTime,\n  single,\n  skip,\n  skipLast,\n  skipUntil,\n  skipWhile,\n  take,\n  takeLast,\n  takeUntil,\n  takeWhile,\n  throttle,\n  throttleTime\n} from \"rxjs/operators\";\n\nexport const filteringExamples = {\n  audit: {\n    label: \"audit\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 26, c: 2 },\n        { t: 34, c: 3 },\n        { t: 40, c: 4 },\n        { t: 45, c: 5 },\n        { t: 79, c: 6 }\n      ],\n      [\n        { t: 30, c: \"A\" },\n        { t: 60, c: \"B\" }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        audit(() => inputs[1].pipe(tap(console.log)), scheduler)\n      );\n    }\n  },\n\n  auditTime: {\n    label: \"auditTime(30)\",\n    inputs: [\n      [\n        { t: 0, c: 0 },\n        { t: 26, c: 26 },\n        { t: 34, c: 34 },\n        { t: 40, c: 40 },\n        { t: 45, c: 45 },\n        { t: 79, c: 79 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(auditTime(30, scheduler));\n    }\n  },\n\n  debounce: {\n    label: \"debounce\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 26, c: 2 },\n        { t: 34, c: 1 },\n        { t: 40, c: 1 },\n        { t: 45, c: 2 },\n        { t: 79, c: 1 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        // debounce((x) => timer(x.content * 10, 1000, scheduler))\n        debounce((x) => timer(x.content * 10, scheduler))\n      );\n    }\n  },\n\n  debounceTime: {\n    label: \"debounceTime(10)\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 26, c: 2 },\n        { t: 34, c: 3 },\n        { t: 40, c: 4 },\n        { t: 45, c: 5 },\n        { t: 79, c: 6 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(debounceTime(10, scheduler));\n    }\n  },\n\n  distinct: {\n    label: \"distinct\",\n    inputs: [\n      [\n        { t: 5, c: 1 },\n        { t: 20, c: 2 },\n        { t: 35, c: 2 },\n        { t: 60, c: 1 },\n        { t: 70, c: 3 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(distinct((x) => x.content));\n    }\n  },\n\n  distinctUntilChanged: {\n    label: \"distinctUntilChanged\",\n    inputs: [\n      [\n        { t: 5, c: 1 },\n        { t: 20, c: 2 },\n        { t: 35, c: 2 },\n        { t: 60, c: 1 },\n        { t: 70, c: 3 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(distinctUntilChanged(undefined, (x) => x.content));\n    }\n  },\n\n  elementAt: {\n    label: \"elementAt(2)\",\n    inputs: [\n      [\n        { t: 30, c: 1 },\n        { t: 40, c: 2 },\n        { t: 65, c: 3 },\n        { t: 75, c: 4 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(elementAt(2));\n    }\n  },\n\n  filter: {\n    label: \"filter(x => x > 10)\",\n    inputs: [\n      [\n        { t: 5, c: 2 },\n        { t: 15, c: 30 },\n        { t: 25, c: 22 },\n        { t: 35, c: 5 },\n        { t: 45, c: 60 },\n        { t: 55, c: 1 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(filter((x) => x.content > 10));\n    }\n  },\n\n  find: {\n    label: \"find(x => x > 10)\",\n    inputs: [\n      [\n        { t: 5, c: 2 },\n        { t: 15, c: 30 },\n        { t: 25, c: 22 },\n        { t: 35, c: 5 },\n        { t: 45, c: 60 },\n        { t: 55, c: 1 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(find((x) => x.content > 10));\n    }\n  },\n\n  findIndex: {\n    label: \"findIndex(x => x > 10)\",\n    inputs: [\n      [\n        { t: 5, c: 2 },\n        { t: 15, c: 30 },\n        { t: 25, c: 22 },\n        { t: 35, c: 5 },\n        { t: 45, c: 60 },\n        { t: 55, c: 1 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(findIndex(({ content }) => content > 10));\n    }\n  },\n\n  first: {\n    label: \"first\",\n    inputs: [\n      [{ t: 30, c: 1 }, { t: 40, c: 2 }, { t: 65, c: 3 }, { t: 75, c: 4 }, 85]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(first());\n    }\n  },\n\n  ignoreElements: {\n    label: \"ignoreElements\",\n    inputs: [\n      [\n        { t: 20, c: \"A\" },\n        { t: 40, c: \"B\" },\n        { t: 50, c: \"C\" },\n        { t: 75, c: \"D\" },\n        90\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(ignoreElements());\n    }\n  },\n\n  last: {\n    label: \"last\",\n    inputs: [\n      [{ t: 30, c: 1 }, { t: 40, c: 2 }, { t: 65, c: 3 }, { t: 75, c: 4 }, 85]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(last());\n    }\n  },\n\n  // Emits the most recently emitted value from the source Observable whenever another Observable, the notifier, emits.\n  sample: {\n    label: \"sample\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 20, c: 2 },\n        { t: 40, c: 3 },\n        { t: 60, c: 4 },\n        { t: 80, c: 5 }\n      ],\n      [\n        { t: 10, c: \"A\" },\n        { t: 25, c: \"B\" },\n        { t: 33, c: \"C\" },\n        { t: 70, c: \"D\" },\n        90\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(sample(inputs[1]));\n    }\n  },\n\n  sampleTime: {\n    label: \"sampleTime(10)\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 20, c: 2 },\n        { t: 40, c: 3 },\n        { t: 60, c: 4 },\n        { t: 80, c: 5 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(sampleTime(10, scheduler));\n    }\n  },\n\n  single: {\n    label: \"single\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 20, c: 2 },\n        { t: 40, c: 3 },\n        { t: 60, c: 4 },\n        { t: 80, c: 5 },\n        100\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(single((x) => x.content == 3));\n    }\n  },\n\n  skip: {\n    label: \"skip(2)\",\n    inputs: [\n      [\n        { t: 30, c: 1 },\n        { t: 40, c: 2 },\n        { t: 65, c: 3 },\n        { t: 75, c: 4 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(skip(2));\n    }\n  },\n\n  skipLast: {\n    label: \"skipLast(2)\",\n    inputs: [\n      [\n        { t: 30, c: 1 },\n        { t: 40, c: 2 },\n        { t: 65, c: 3 },\n        { t: 75, c: 4 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(skipLast(2));\n    }\n  },\n\n  skipUntil: {\n    label: \"skipUntil\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 10, c: 2 },\n        { t: 20, c: 3 },\n        { t: 30, c: 4 },\n        { t: 40, c: 5 },\n        { t: 50, c: 6 },\n        { t: 60, c: 7 },\n        { t: 70, c: 8 },\n        { t: 80, c: 9 }\n      ],\n      [\n        { t: 45, c: 0 },\n        { t: 73, c: 0 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(skipUntil(inputs[1]));\n    }\n  },\n\n  skipWhile: {\n    label: \"skipWhile(x => x < 5)\",\n    inputs: [\n      [\n        { t: 5, c: 1 },\n        { t: 20, c: 3 },\n        { t: 35, c: 6 },\n        { t: 50, c: 4 },\n        { t: 65, c: 7 },\n        { t: 80, c: 2 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(skipWhile((x) => x.content < 5));\n    }\n  },\n\n  take: {\n    label: \"take(2)\",\n    inputs: [\n      [{ t: 30, c: 1 }, { t: 40, c: 2 }, { t: 65, c: 3 }, { t: 75, c: 4 }, 85]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(take(2, scheduler));\n    }\n  },\n\n  takeLast: {\n    label: \"takeLast(1)\",\n    inputs: [\n      [{ t: 30, c: 1 }, { t: 40, c: 2 }, { t: 65, c: 3 }, { t: 75, c: 4 }, 85]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(takeLast(1));\n    }\n  },\n\n  takeUntil: {\n    label: \"takeUntil\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 10, c: 2 },\n        { t: 20, c: 3 },\n        { t: 30, c: 4 },\n        { t: 40, c: 5 },\n        { t: 50, c: 6 },\n        { t: 60, c: 7 },\n        { t: 70, c: 8 },\n        { t: 80, c: 9 }\n      ],\n      [\n        { t: 45, c: 0 },\n        { t: 73, c: 0 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(takeUntil(inputs[1]));\n    }\n  },\n\n  takeWhile: {\n    label: \"takeWhile(x => x < 5)\",\n    inputs: [\n      [\n        { t: 5, c: 1 },\n        { t: 20, c: 3 },\n        { t: 35, c: 6 },\n        { t: 50, c: 4 },\n        { t: 65, c: 7 },\n        { t: 80, c: 2 }\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(takeWhile((x) => x.content < 5));\n    }\n  },\n\n  throttle: {\n    label: \"throttle\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 26, c: 2 },\n        { t: 34, c: 1 },\n        { t: 40, c: 1 },\n        { t: 45, c: 2 },\n        { t: 79, c: 1 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        throttle((x) => timer(x.content * 10, 1000, scheduler))\n      );\n    }\n  },\n\n  throttleTime: {\n    label: \"throttleTime(25)\",\n    inputs: [\n      [\n        { t: 0, c: \"A\" },\n        { t: 8, c: \"B\" },\n        { t: 16, c: \"C\" },\n        { t: 40, c: \"D\" },\n        { t: 55, c: \"E\" },\n        { t: 60, c: \"F\" },\n        { t: 70, c: \"G\" }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(throttleTime(25, scheduler));\n    }\n  }\n};\n","import { defaultIfEmpty, every, isEmpty, sequenceEqual } from \"rxjs/operators\";\n\nexport const conditionalExamples = {\n  defaultIfEmpty: {\n    label: \"defaultIfEmpty(true)\",\n    inputs: [[99]],\n    apply: function (inputs) {\n      return inputs[0].pipe(defaultIfEmpty(true));\n    }\n  },\n\n  every: {\n    label: \"every(x => x < 10)\",\n    inputs: [\n      [\n        { t: 5, c: 1 },\n        { t: 15, c: 2 },\n        { t: 25, c: 3 },\n        { t: 35, c: 4 },\n        { t: 65, c: 5 },\n        80\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(every(({ content }) => content < 10));\n    }\n  },\n\n  isEmpty: {\n    label: \"isEmpty(true)\",\n    inputs: [[99]],\n    apply: function (inputs) {\n      return inputs[0].pipe(isEmpty(true));\n    }\n  },\n\n  sequenceEqual: {\n    label: \"sequenceEqual\",\n    inputs: [\n      [\n        { t: 5, c: 1 },\n        { t: 15, c: 2 },\n        { t: 25, c: 3 },\n        { t: 35, c: 4 },\n        { t: 65, c: 5 },\n        85\n      ],\n      [\n        { t: 2, c: 1 },\n        { t: 20, c: 2 },\n        { t: 40, c: 3 },\n        { t: 70, c: 4 },\n        { t: 77, c: 5 },\n        85\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(\n        sequenceEqual(inputs[1], (x, y) => x.content === y.content)\n      );\n    }\n  }\n};\n","import { timer } from \"rxjs\";\nimport {\n  map,\n  /////////////////\n  catchError,\n  delay,\n  delayWhen,\n  dematerialize,\n  finalize,\n  materialize,\n  observeOn,\n  repeat,\n  retry,\n  subscribeOn,\n  tap,\n  timeInterval,\n  timeout,\n  timestamp,\n  toArray\n} from \"rxjs/operators\";\n\nexport const utilityExamples = {\n  delay: {\n    label: \"delay(20)\",\n    inputs: [\n      [\n        { t: 10, c: \"1\" },\n        { t: 20, c: \"2\" },\n        { t: 70, c: \"1\" }\n      ]\n    ],\n    apply: (inputs, scheduler) =>\n      inputs[0].pipe(\n        map((x) => x.content),\n        delay(20, scheduler)\n      )\n  },\n\n  delayWhen: {\n    label: \"delayWhen(x => timer(20 * x))\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 10, c: 2 },\n        { t: 20, c: 1 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        delayWhen(({ content }) => timer(content * 20, 1000, scheduler))\n      );\n    }\n  },\n\n  finalize: {\n    label: \"finalize\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 10, c: 2 },\n        { t: 20, c: 3 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(finalize(() => console.log(\"finalize\")));\n    }\n  },\n\n  tap: {\n    label: \"tap\",\n    inputs: [\n      [\n        { t: 0, c: 1 },\n        { t: 10, c: 2 },\n        { t: 20, c: 1 }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(tap((x) => x.content));\n    }\n  },\n\n  timeInterval: {\n    label: \"timeInterval\",\n    inputs: [\n      [\n        { t: 10, c: \"A\" },\n        { t: 20, c: \"B\" },\n        { t: 60, c: \"C\" },\n        { t: 90, c: \"D\" }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        timeInterval(scheduler),\n        map(({ value, interval }) => parseInt(interval))\n      );\n    }\n  },\n\n  timestamp: {\n    label: \"timestamp\",\n    inputs: [\n      [\n        { t: 10, c: \"A\" },\n        { t: 20, c: \"B\" },\n        { t: 60, c: \"C\" },\n        { t: 90, c: \"D\" }\n      ]\n    ],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        timestamp(scheduler),\n        map(({ value, timestamp }) => parseInt(timestamp))\n      );\n    }\n  },\n\n  toArray: {\n    label: \"toArray\",\n    inputs: [[{ t: 10, c: \"A\" }, { t: 20, c: \"B\" }, { t: 60, c: \"C\" }, 70]],\n    apply: function (inputs, scheduler) {\n      return inputs[0].pipe(\n        map((x) => x.content),\n        toArray(),\n        map((arr) => `[${arr}]`)\n      );\n    }\n  }\n};\n","import { count, max, min, reduce } from \"rxjs/operators\";\n\nexport const mathExamples = {\n  count: {\n    label: \"count(x => x > 10)\",\n    inputs: [\n      [\n        { t: 5, c: 2 },\n        { t: 15, c: 30 },\n        { t: 25, c: 22 },\n        { t: 35, c: 5 },\n        { t: 45, c: 60 },\n        { t: 55, c: 1 },\n        80\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(count(({ content }) => content > 10));\n    }\n  },\n\n  max: {\n    label: \"max\",\n    inputs: [\n      [\n        { t: 5, c: 2 },\n        { t: 15, c: 30 },\n        { t: 25, c: 22 },\n        { t: 35, c: 5 },\n        { t: 45, c: 60 },\n        { t: 55, c: 1 },\n        80\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(\n        max((x, y) => {\n          if (x.content > y.content) {\n            return 1;\n          }\n          if (x.content < y.content) {\n            return -1;\n          }\n          return 0;\n        })\n      );\n    }\n  },\n\n  min: {\n    label: \"min\",\n    inputs: [\n      [\n        { t: 5, c: 2 },\n        { t: 15, c: 30 },\n        { t: 25, c: 22 },\n        { t: 35, c: 5 },\n        { t: 45, c: 60 },\n        { t: 55, c: 1 },\n        80\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(\n        min((x, y) => {\n          if (x.content > y.content) {\n            return 1;\n          }\n          if (x.content < y.content) {\n            return -1;\n          }\n          return 0;\n        })\n      );\n    }\n  },\n\n  reduce: {\n    label: \"reduce((x, y) => x + y)\",\n    inputs: [\n      [\n        { t: 5, c: 1 },\n        { t: 15, c: 2 },\n        { t: 25, c: 3 },\n        { t: 35, c: 4 },\n        { t: 65, c: 5 },\n        80\n      ]\n    ],\n    apply: function (inputs) {\n      return inputs[0].pipe(\n        reduce((x, y) =>\n          Object.assign(x, { content: x.content + y.content, id: x.id + y.id })\n        )\n      );\n    }\n  }\n};\n","import { Observable, SchedulerLike } from \"rxjs\";\nimport { categories } from \"./categories\";\n\nexport type MarbleInput = {\n  t: number; // time: 0 ~ 100\n  c: number | string; // 显示字符\n};\n\nexport type MarbleInputArray = MarbleInput[];\n// export type MultiMarbleInputArray = MarbleInputArray[];\n\nexport type TimelineInput = (MarbleInput | number)[]; // last of array 如果是 number = EndMarkerTime\nexport type TimelineInputArray = TimelineInput[];\n\nexport type Props = { minTime: number; maxTime: number; isTall?: boolean };\n\nexport type Marble = {\n  marbleID: number;\n  time: number; // time: 0 ~ 100\n  content: string | number; // 显示字符\n};\n\nexport type EndMarker = Pick<Marble, \"time\">;\nexport type ErrorMarker = Pick<Marble, \"time\">;\n\nexport type Timeline = {\n  timelineID: number;\n  marbles: Marble[];\n  end: EndMarker;\n  error?: ErrorMarker;\n  interactive: boolean;\n};\n\nexport type Example = {\n  label: string;\n  inputs: TimelineInputArray;\n  apply: (\n    inputs: Observable<Marble>[],\n    scheduler: SchedulerLike\n  ) => Observable<any>;\n};\n\nexport type Examples = {\n  [index: string]: Example;\n};\n\nexport const examples: Examples = Object.values<Examples>(categories).reduce(\n  (acc, o) => Object.assign(acc, o),\n  {}\n);\n\nexport { categories };\n","export const MAX_TIME = 100;\nexport const MARBLE_SIZE = 2.3;\nexport const STROKE_WIDTH = 0.3;\n\nexport const containerWidth = { width: \"1060px\" };\n\nexport const userSelectNone = {\n  userSelect: \"none\"\n};\n\nexport const COLORS = {\n  blue: \"#3EA1CB\",\n  yellow: \"#FFCB46\",\n  red: \"#FF6946\",\n  green: \"#82D736\",\n  white: \"#FFFFFF\",\n  almostWhite: \"#ECECEC\",\n  greyLight: \"#D4D4D4\",\n  grey: \"#A7A7A7\",\n  greyDark: \"#7C7C7C\",\n  black: \"#323232\"\n};\nexport const blue = { color: COLORS.blue };\nexport const yellow = { color: COLORS.yellow };\nexport const red = { color: COLORS.red };\nexport const green = { color: COLORS.green };\nexport const white = { color: COLORS.white };\nexport const almostWhite = { color: COLORS.almostWhite };\nexport const greyLight = { color: COLORS.greyLight };\nexport const grey = { color: COLORS.grey };\nexport const greyDark = { color: COLORS.greyDark };\nexport const black = { color: COLORS.black };\nexport const bgWhite = { backgroundColor: COLORS.white };\n\nexport const DIMENS = {\n  spaceTiny: \"5px\",\n  spaceSmall: \"10px\",\n  spaceMedium: \"22px\",\n  spaceLarge: \"32px\",\n  spaceHuge: \"42px\",\n\n  animationDurationQuick: \"100ms\",\n  animationDurationNormal: \"200ms\",\n  animationDurationSlow: \"400ms\"\n};\n\nexport const FONTS = {\n  base: \"'Source Sans Pro', sans-serif\",\n  code: \"'Source Code Pro', monospace\",\n  special: \"'Signika', Helvetica, serif\"\n};\nexport const fontBase = { fontFamily: FONTS.base };\nexport const fontCode = { fontFamily: FONTS.code };\nexport const fontSpecial = { fontFamily: FONTS.special };\n\nexport const elevation1 = {\n  \"box-shadow\": \"0px 1px 2px 1px rgba(0,0,0,0.17)\"\n};\n\nexport const timelineStyle = {\n  padding: `${DIMENS.spaceSmall} ${DIMENS.spaceMedium}`\n};\n\nexport const POSSIBLE_COLORS = [\n  COLORS.blue,\n  COLORS.green,\n  COLORS.yellow,\n  COLORS.red\n];\n\nexport const operatorsMenuItemStyle = Object.assign(\n  {\n    fontSize: \"1rem\",\n    lineHeight: \"1.6rem\"\n  },\n  greyDark\n);\n\nexport const operatorsMenuStyle = {\n  marginRight: DIMENS.spaceLarge,\n  boxSizing: \"border-box\",\n  overflowY: \"scroll\",\n  height: \"calc(100vh - 150px)\"\n};\n\nexport const sandboxStyle = Object.assign(bgWhite, elevation1, {\n  borderRadius: \"2px\"\n});\n\nexport function getElevationPseudoElementStyle(\n  dy: string,\n  blur: string,\n  opacity: string\n) {\n  return `\n    display: block;\n    position: absolute;\n    left: 0;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    -webkit-box-shadow: 0 ${dy} ${blur} 0 rgba(0,0,0,${opacity});\n    -moz-box-shadow: 0 ${dy} ${blur} 0 rgba(0,0,0,${opacity});\n    box-shadow: 0 ${dy} ${blur} 0 rgba(0,0,0,${opacity});\n  `;\n}\n","import {\n  Observable,\n  Subject,\n  ReplaySubject,\n  BehaviorSubject,\n  of,\n  VirtualTimeScheduler,\n  timer,\n  combineLatest\n} from \"rxjs\";\nimport {\n  observeOn,\n  map,\n  reduce,\n  mergeAll,\n  distinctUntilChanged,\n  switchMap,\n  share,\n  takeUntil,\n  debounceTime,\n  timestamp\n} from \"rxjs/operators\";\nimport { curry, last, assoc, clamp } from \"@zyzgroup/core-common\";\nimport { useHashChange$ } from \"@zyzgroup/core-web\";\nimport {\n  examples,\n  TimelineInputArray,\n  TimelineInput,\n  MarbleInputArray,\n  Example,\n  Props,\n  Timeline,\n  Marble,\n  EndMarker\n} from \"./data\";\nimport { MAX_TIME } from \"./styles\";\n\n// operator name\nexport const store$: Observable<string> = useHashChange$().pipe(\n  map((route) => {\n    let r = \"merge\";\n    if (route && route.split(\"/rx/\")[1]) {\n      r = route.split(\"/rx/\")[1];\n    }\n    return r;\n  })\n);\n\n// operator 示例\nexport const example$: Observable<Example> = store$.pipe(\n  map((route) => examples[route]),\n  share({\n    connector: () => new ReplaySubject(1),\n    resetOnError: false,\n    resetOnComplete: false,\n    resetOnRefCountZero: false\n  })\n);\n\n// input timelines\nexport const inputTimelines$: Observable<Timeline[]> = example$.pipe(\n  switchMap((example) => of(inputsToTimelines(example.inputs))),\n  share({\n    connector: () => new ReplaySubject(1),\n    resetOnError: false,\n    resetOnComplete: false,\n    resetOnRefCountZero: false\n  })\n);\n\n// 移动的 Marble Subject\nexport const changedMarbleSubject$ = new BehaviorSubject<{\n  marbleID?: number;\n  time?: number;\n}>({});\n\n// 移动的 Marble\nconst changedMarble$ = changedMarbleSubject$.pipe(\n  debounceTime(100),\n  distinctUntilChanged()\n);\n\n// 移动的 EndMarker Subject\nexport const changedEndMarkerSubject$ = new BehaviorSubject<{\n  timelineID?: number;\n  time?: number;\n}>({});\n\n// 移动的 EndMarker\nconst changedEndMarker$ = changedEndMarkerSubject$.pipe(\n  debounceTime(100),\n  distinctUntilChanged()\n);\n\n// EndMarker 的最终time\nexport const endMarkerMinTime$ = combineLatest([\n  inputTimelines$,\n  changedEndMarker$\n]).pipe(\n  map(([inputTimelines, changedEndMarker]) => {\n    let time = changedEndMarker.time ?? 0;\n    for (const tl of inputTimelines) {\n      time = Math.max(time, tl.end.time);\n    }\n    return time;\n  })\n);\n\nexport const outputTimeline$: Observable<Timeline> = combineLatest([\n  inputTimelines$,\n  example$,\n  changedMarble$,\n  changedEndMarker$,\n  endMarkerMinTime$\n]).pipe(\n  debounceTime(100),\n  map(\n    ([\n      inputTimelines,\n      example,\n      changedMarble,\n      changedEndMarker,\n      endMarkerMinTime\n    ]) => {\n      for (const tl of inputTimelines) {\n        const marbleIndex = tl.marbles.findIndex(\n          (m) => m.marbleID == changedMarble.marbleID\n        );\n        // 更改 移动的 marble 的 time\n        if (marbleIndex >= 0 && changedMarble.time) {\n          tl.marbles[marbleIndex].time = changedMarble.time;\n        }\n        // 更改 EndMarker 的 time\n        if (\n          tl.timelineID == changedEndMarker.timelineID &&\n          changedEndMarker.time\n        ) {\n          tl.end.time = changedEndMarker.time;\n        }\n      }\n      // 生成 scheduler\n      const vtScheduler = new VirtualTimeScheduler(undefined, MAX_TIME);\n      const inputTimelineMarbles$Array: Observable<Marble>[] =\n        inputTimelines.map((tl) => toVTStream(vtScheduler, tl));\n      const outputline$: Observable<any> = example\n        .apply(inputTimelineMarbles$Array, vtScheduler)\n        .pipe(\n          // add 0.01 or else things at exactly MAX_TIME will cut off\n          takeUntil(timer(MAX_TIME + 0.01, vtScheduler))\n        );\n      return formatOutputTimeline$(vtScheduler, outputline$, endMarkerMinTime);\n    }\n  ),\n  mergeAll(),\n  share({\n    connector: () => new ReplaySubject(1),\n    resetOnError: false,\n    resetOnComplete: false,\n    resetOnRefCountZero: false\n  })\n);\n\nfunction formatOutputTimeline$(\n  scheduler: VirtualTimeScheduler,\n  stream: Observable<any>,\n  endMarkerMinTime: number\n): Observable<Timeline> {\n  const subject$ = new ReplaySubject<Marble[]>(1);\n  const stop$ = new Subject<void>();\n  let endTime: number;\n  stream\n    .pipe(\n      observeOn(scheduler),\n      timestamp(scheduler),\n      map(({ value, timestamp }) => {\n        const marble =\n          typeof value !== \"object\"\n            ? {\n                marbleID: calculateNotificationContentHash(value),\n                content: value\n              }\n            : value;\n        return assoc(\"time\", (timestamp / MAX_TIME) * 100, marble);\n      }),\n      takeUntil(stop$),\n      reduce((a, b) => a.concat(b), [])\n      // map((items) =>\n      //   items.map(\n      //     (item, i) =>\n      //       Object.assign(item, {\n      //         // itemId: i\n      //       }) as Marble\n      //   )\n      // )\n    )\n    .subscribe({\n      next: (items) => {\n        subject$.next(items);\n      },\n      error: undefined,\n      complete: () => {\n        endTime = scheduler.now();\n      }\n    });\n  scheduler.flush();\n  stop$.next();\n  return subject$.pipe(\n    map((marbles) => ({\n      timelineID: 0,\n      marbles,\n      end: { time: clamp(endTime, endMarkerMinTime, 100) },\n      interactive: false\n    }))\n  );\n}\n\nconst toVTStream = curry(function (scheduler, data: Timeline) {\n  return new Observable<Marble>((observer) => {\n    data.marbles.forEach((item) =>\n      scheduler.schedule(() => observer.next(item), item.time)\n    );\n  }).pipe(takeUntil(timer(data.end.time + 1, scheduler)));\n});\n\nfunction inputsToTimelines(inputs: TimelineInputArray): Timeline[] {\n  return inputs.map((input, index) => ({\n    timelineID: index,\n    marbles: inputToMarbles(getInput(input)),\n    end: { time: getTime(input) },\n    interactive: true\n  }));\n}\n\nfunction getInput(input: TimelineInput): MarbleInputArray {\n  const lastInput = last(input);\n  return (\n    typeof lastInput === \"number\" ? input.slice(0, -1) : input\n  ) as MarbleInputArray;\n}\n\nfunction getTime(input: TimelineInput) {\n  const lastInput = last(input);\n  return typeof lastInput === \"number\" ? lastInput : 100;\n}\n\nfunction inputToMarbles(stream: MarbleInputArray): Marble[] {\n  return stream.map(({ t: time, c: content }) => ({\n    marbleID: calculateNotificationHash({ time, content }),\n    time,\n    content\n  }));\n}\n\nfunction calculateNotificationContentHash(content: string | number | boolean) {\n  const SMALL_PRIME_1 = 59;\n  const SMALL_PRIME_2 = 97;\n  const SOME_PRIME_NUMBER = 877;\n  if (typeof content === \"string\") {\n    return content\n      .split(\"\")\n      .map((x) => x.charCodeAt(0))\n      .reduce((x, y) => x * SMALL_PRIME_1 + y * SMALL_PRIME_2);\n  } else if (typeof content === \"number\") {\n    return content * SOME_PRIME_NUMBER;\n  } else {\n    return content ? SOME_PRIME_NUMBER : SOME_PRIME_NUMBER * 3;\n  }\n}\n\nfunction calculateNotificationHash({\n  time,\n  content\n}: {\n  time: number;\n  content: string | number | boolean;\n}) {\n  const SMALL_PRIME = 7;\n  const LARGE_PRIME = 1046527;\n  const MAX = 100000;\n  const contentHash = calculateNotificationContentHash(content);\n  return ((time + contentHash + SMALL_PRIME) * LARGE_PRIME) % MAX;\n}\n\nexport function getPercentageFn(parentElement: HTMLElement) {\n  const { width, left } = parentElement.getBoundingClientRect();\n  const ratio = 100 / width || 0.15;\n  const elementLeft = left + window.scrollX;\n  return (x: number) => (x - elementLeft) * ratio;\n}\n\n// export function getTimeChange$(element: HTMLElement) {\n//   const timeChange$: Observable<number> = mouseDown$(element).pipe(\n//     map((e) => (e.currentTarget as HTMLElement)!.parentElement!),\n//     map(getPercentageFn),\n//     switchMap((getPercentage: (x: number) => number) =>\n//       documentMouseMove$.pipe(\n//         takeUntil(documentMouseUp$),\n//         map((e) => e.pageX),\n//         map(getPercentage),\n//         distinctUntilChanged()\n//       )\n//     )\n//   );\n//   return timeChange$;\n// }\n\n// export function getTime$(\n//   props$: Observable<Props>,\n//   timeSource$: Observable<number>,\n//   timeChange$: Observable<number>,\n//   isDraggable$: Observable<boolean>\n// ): Observable<number> {\n//   const restrictedTimeChange$: Observable<number> = pausable$<number>(\n//     isDraggable$,\n//     timeChange$\n//   ).pipe(map((n) => (n >= 100 ? 100 : n <= 0 ? 0 : n)));\n//   const minChange$: Observable<number> = props$.pipe(\n//     map((p) => p.minTime),\n//     distinctUntilChanged(),\n//     withLatestFrom(timeSource$),\n//     map(([propsMinTime, sourceTime]) => Math.max(propsMinTime, sourceTime))\n//   );\n//   const maxChange$: Observable<number> = props$.pipe(\n//     map((p) => p.maxTime),\n//     distinctUntilChanged(),\n//     withLatestFrom(timeSource$),\n//     map(([propsMaxTime, sourceTime]) => Math.min(propsMaxTime, sourceTime))\n//   );\n//   return merge(\n//     // order matters\n//     timeSource$,\n//     restrictedTimeChange$,\n//     minChange$,\n//     maxChange$\n//   ).pipe(\n//     distinctUntilChanged(),\n//     share({\n//       connector: () => new ReplaySubject(1),\n//       resetOnError: false,\n//       resetOnComplete: false,\n//       resetOnRefCountZero: false\n//     })\n//   );\n// }\n","<template>\n  <svg\n    style=\"overflow: visible\"\n    @mouseenter=\"mouseenter\"\n    @mouseleave=\"mouseleave\"\n    @mousedown=\"mousedown\"\n  >\n    <g\n      class=\"marble\"\n      :transform=\"`translate(${time}, 5)`\"\n      :style=\"{\n        cursor: isHighlighted ? 'ew-resize' : 'default'\n      }\"\n    >\n      <circle\n        r=\"2.3\"\n        :style=\"circleStyle\"\n      ></circle>\n      <text\n        text-anchor=\"middle\"\n        y=\"0.8\"\n        :style=\"textStyle\"\n      >\n        {{ props.content }}\n      </text>\n    </g>\n\n    <filter\n      id=\"#dropshadow\"\n      height=\"130%\"\n    >\n      <feGaussianBlur\n        in=\"SourceAlpha\"\n        stdDeviation=\"0.3\"\n      ></feGaussianBlur>\n      <feOffset\n        dx=\"0\"\n        dy=\"0.25\"\n        result=\"offsetblur\"\n      ></feOffset>\n      <feFlood flood-color=\"rgba(0,0,0,0.4)\"></feFlood>\n      <feComposite\n        in2=\"offsetblur\"\n        operator=\"in\"\n      ></feComposite>\n      <feMerge>\n        <feMergeNode></feMergeNode>\n        <feMergeNode in=\"SourceGraphic\"></feMergeNode>\n      </feMerge>\n    </filter>\n  </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, onUnmounted, onMounted } from \"vue\";\nimport { getPercentageFn, changedMarbleSubject$ } from \"./rxMarble\";\nimport { POSSIBLE_COLORS, STROKE_WIDTH, fontBase } from \"./styles\";\n\nconst props = defineProps<{\n  marbleID: number;\n  time: number;\n  isInteractive: boolean;\n  content: number | string;\n}>();\n\nconst time = ref<number>(props.time);\n\nwatch(\n  () => props.time,\n  (t) => {\n    time.value = t;\n  }\n);\n\nconst isHighlighted = ref<boolean>(false);\nconst isDraggable = ref<boolean>(false);\n\nconst mouseenter = () => {\n  if (!props.isInteractive) return;\n  isHighlighted.value = true;\n};\n\nconst mouseleave = () => {\n  if (!props.isInteractive) return;\n  isHighlighted.value = false;\n};\n\nlet parentElement: HTMLElement;\nconst mousedown = (e: MouseEvent) => {\n  if (!props.isInteractive) return;\n\n  isDraggable.value = true;\n  parentElement = (e.currentTarget as HTMLElement).parentElement!;\n};\n\nfunction moveMarble(e: MouseEvent) {\n  if (!props.isInteractive) return;\n  if (isDraggable.value) {\n    time.value = getPercentageFn(parentElement)(e.pageX);\n    changedMarbleSubject$.next({ marbleID: props.marbleID, time: time.value });\n  }\n}\n\nfunction mouseUp(e: MouseEvent) {\n  if (!props.isInteractive) return;\n  isDraggable.value = false;\n}\n\nconst circleStyle = ref<Record<string, any>>();\nwatch(\n  isHighlighted,\n  () => {\n    circleStyle.value = Object.assign(\n      {\n        fill: POSSIBLE_COLORS[props.marbleID % POSSIBLE_COLORS.length],\n        stroke: \"black\",\n        strokeWidth: STROKE_WIDTH\n      },\n      isHighlighted.value ? { filter: \"url(#dropshadow)\" } : {}\n    );\n    console.log(circleStyle.value);\n  },\n  { immediate: true }\n);\n\nconst textStyle = Object.assign({ fontSize: \"2.5px\" }, fontBase);\n\nonMounted(() => {\n  document.addEventListener(\"mousemove\", moveMarble);\n  document.addEventListener(\"mouseup\", mouseUp);\n});\n\nonUnmounted(() => {\n  document.removeEventListener(\"mousemove\", moveMarble);\n  document.removeEventListener(\"mouseup\", mouseUp);\n});\n</script>\n","<template>\n  <svg\n    style=\"overflow: visible\"\n    @mouseenter=\"mouseenter\"\n    @mouseleave=\"mouseleave\"\n    @mousedown=\"mousedown\"\n  >\n    <line\n      class=\"end-marker\"\n      :x1=\"time\"\n      :x2=\"time\"\n      :y1=\"5 - height\"\n      :y2=\"5 + height\"\n      :style=\"{\n        stroke: 'black',\n        strokeWidth: '0.3',\n        cursor: isHighlighted ? 'ew-resize' : 'default'\n      }\"\n    ></line>\n  </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, onUnmounted, onMounted } from \"vue\";\nimport { getPercentageFn, changedEndMarkerSubject$ } from \"./rxMarble\";\n\nconst props = defineProps<{\n  timelineID: number;\n  time: number;\n  isInteractive: boolean;\n}>();\n\nconst height = ref(1.8);\n\nconst time = ref<number>(props.time);\n\nwatch(\n  () => props.time,\n  (t) => {\n    time.value = t;\n  }\n);\n\nconst isHighlighted = ref<boolean>(false);\nconst isDraggable = ref<boolean>(false);\n\nconst mouseenter = () => {\n  if (!props.isInteractive) return;\n  isHighlighted.value = true;\n  height.value = 3.2;\n};\n\nconst mouseleave = () => {\n  if (!props.isInteractive) return;\n  isHighlighted.value = false;\n  height.value = 1.8;\n};\n\nlet parentElement: HTMLElement;\nconst mousedown = (e: MouseEvent) => {\n  if (!props.isInteractive) return;\n  isDraggable.value = true;\n  parentElement = (e.currentTarget as HTMLElement).parentElement!;\n};\n\nfunction moveMarble(e: MouseEvent) {\n  if (!props.isInteractive) return;\n  if (isDraggable.value) {\n    time.value = getPercentageFn(parentElement)(e.pageX);\n    changedEndMarkerSubject$.next({\n      timelineID: props.timelineID,\n      time: time.value\n    });\n  }\n}\nfunction mouseUp(e: MouseEvent) {\n  if (!props.isInteractive) return;\n  isDraggable.value = false;\n}\n\nonMounted(() => {\n  document.addEventListener(\"mousemove\", moveMarble);\n  document.addEventListener(\"mouseup\", mouseUp);\n});\n\nonUnmounted(() => {\n  document.removeEventListener(\"mousemove\", moveMarble);\n  document.removeEventListener(\"mouseup\", mouseUp);\n});\n</script>\n","<template>\n  <div :style=\"sandboxStyle\">\n    <!-- MULTI INPUT -->\n    <TimelineComponent\n      v-for=\"(input, inputKey) in inputtls\"\n      :key=\"input.timelineID\"\n    >\n      <EndMarkerComponent\n        :timelineID=\"input.timelineID\"\n        :time=\"input.end.time\"\n        :isInteractive=\"true\"\n      ></EndMarkerComponent>\n      <MarbleComponent\n        v-for=\"(marble, marbleKey) in input.marbles\"\n        :key=\"marble.marbleID\"\n        :marbleID=\"marble.marbleID\"\n        :time=\"marble.time\"\n        :isInteractive=\"true\"\n        :content=\"marble.content\"\n      ></MarbleComponent>\n    </TimelineComponent>\n    <!-- OPERATOR -->\n    <div class=\"operatorBox\">\n      <div :style=\"before\"></div>\n      <span style=\"font-size: 1.5em; font-weight: 400\">{{ label }}</span>\n      <div :style=\"after\"></div>\n    </div>\n    <!-- SINGLE OUTPUT -->\n    <TimelineComponent>\n      <EndMarkerComponent\n        :timelineID=\"outputtl.timelineID\"\n        :time=\"outputtl.end.time\"\n        :isInteractive=\"false\"\n      ></EndMarkerComponent>\n      <MarbleComponent\n        v-for=\"(marble, marbleKey) in outputtl.marbles\"\n        :key=\"marble.marbleID\"\n        :marbleID=\"marble.marbleID\"\n        :time=\"marble.time\"\n        :isInteractive=\"false\"\n        :content=\"marble.content\"\n      ></MarbleComponent>\n    </TimelineComponent>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive } from \"vue\";\nimport { map, tap } from \"rxjs/operators\";\nimport { Timeline } from \"./data\";\nimport { example$, inputTimelines$, outputTimeline$ } from \"./rxMarble\";\nimport { DIMENS, sandboxStyle, getElevationPseudoElementStyle } from \"./styles\";\nimport TimelineComponent from \"./Timeline.vue\";\nimport MarbleComponent from \"./Marble.vue\";\nimport EndMarkerComponent from \"./EndMarker.vue\";\n\nconst before = getElevationPseudoElementStyle(\"2px\", \"10px\", \"0.17\");\nconst after = getElevationPseudoElementStyle(\"2px\", \"5px\", \"0.26\");\n\nconst label = ref<string>(\"\");\nconst inputtls = reactive<Timeline[]>([]);\nlet outputtl = reactive<Timeline>({\n  timelineID: 0,\n  marbles: [],\n  end: { time: 0 },\n  interactive: false\n});\n\nexample$.pipe(tap((example) => (label.value = example.label))).subscribe();\n\ninputTimelines$\n  .pipe(\n    map((timelines) => {\n      inputtls.length = 0;\n      timelines.forEach((timeline) => {\n        inputtls.push(timeline);\n      });\n    })\n  )\n  .subscribe();\n\noutputTimeline$\n  .pipe(\n    tap((timeline) => {\n      Object.assign(outputtl, timeline);\n    })\n  )\n  .subscribe();\n</script>\n\n<style>\n.operatorBox {\n  border: 1px solid rgba(0, 0, 0, 0.06);\n  padding: v-bind(\"DIMENS.spaceMedium\");\n  text-align: center;\n  position: relative;\n}\nsvg {\n  display: inline-block;\n}\n</style>\n","<template>\n  <div\n    class=\"wrap\"\n    :style=\"{ width: '1060px', margin: '0 auto' }\"\n  >\n    <div style=\"display: flex\">\n      <div\n        :ref=\"(el) => (nav = (el as HTMLAnchorElement))\"\n        style=\"\n          flex: 1;\n          margin-right: 32px;\n          box-sizing: border-box;\n          overflow-y: scroll;\n          height: 100vh;\n        \"\n      >\n        <ul\n          style=\"margin: 0; padding: 0; list-style-type: none\"\n          v-for=\"(items, key) in categories\"\n        >\n          <li\n            class=\"li\"\n            :key=\"key\"\n          >\n            {{ key }}\n          </li>\n          <a\n            v-for=\"(item, itemname) in items\"\n            :key=\"itemname\"\n            :href=\"`#${base}${itemname}`\"\n            class=\"link\"\n            :ref=\"(el) => (links.push(el as HTMLAnchorElement))\"\n            :style=\"{\n              position: 'relative',\n              display: 'block',\n              color: '#666666'\n            }\"\n          >\n            {{ itemname }}\n          </a>\n        </ul>\n      </div>\n      <div style=\"flex: 0 0 820px; padding-top: 10px\"><Sandbox></Sandbox></div>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted } from \"vue\";\nimport { take, tap } from \"rxjs/operators\";\nimport { getElementPositionInPage } from \"@zyzgroup/core-web\";\nimport Sandbox from \"../components/rxmarbles/Sandbox.vue\";\nimport { categories } from \"../components/rxmarbles/data\";\nimport { store$ } from \"../components/rxmarbles/rxMarble\";\n\nconst base = \"/rx/\";\n\nconst nav = ref<HTMLElement>();\nconst links = ref<HTMLAnchorElement[]>([]);\n\nonMounted(() => {\n  store$\n    .pipe(\n      take(1),\n      tap((route) => {\n        const link = links.value.find(\n          (link) => link.href.indexOf(`#${base}${route}`) >= 0\n        );\n        if (link && nav.value) {\n          (nav.value as HTMLElement).scrollTo({\n            top: getElementPositionInPage(link as HTMLElement).y\n          });\n        }\n      })\n    )\n    .subscribe();\n});\n</script>\n\n<style scoped>\n.wrap {\n  position: relative;\n  background: #ececec;\n  font-family: \"Source Sans Pro\", sans-serif;\n  color: #323232;\n  margin: 0;\n  padding-left: 0.4em;\n}\n\na {\n  color: #3ea1cb;\n  text-decoration: underline;\n  font-size: 1em;\n  padding-left: 0.4em;\n}\n\na.link:hover {\n  color: #000000 !important;\n}\n\na.link:hover::after {\n  display: inline-block;\n  position: absolute;\n  right: 10px;\n  content: \"❯\";\n}\n\n.li {\n  text-transform: uppercase;\n  font-size: 0.8em;\n  color: #000000;\n  font-weight: bold;\n  margin-top: 20px;\n}\n</style>\n","import { ref } from \"vue\";\nimport {\n  createRouter,\n  createWebHistory,\n  createWebHashHistory,\n  type Router,\n  type RouteRecordRaw,\n  type RouteRecordNormalized,\n  type RouteLocationNormalized,\n  type NavigationGuardNext,\n  type RouteLocationRaw,\n  RouteLocationNormalizedLoaded,\n  NavigationFailure\n} from \"vue-router\";\nexport {\n  RouterLink,\n  RouterView,\n  useRouter,\n  useRoute,\n  type Router\n} from \"vue-router\";\nimport ViewDocument from \"../components/form/ViewDocument.vue\";\nimport Lot from \"../components/xg/Lot.vue\";\nimport Park from \"../components/xg/Park.vue\";\nimport Index from \"../pages/Index.vue\";\nimport ShapeShowCase from \"../pages/ShapeShowCase.vue\";\nimport ComponentShowCase from \"../pages/ComponentShowCase.vue\";\nimport RxMarbles from \"../pages/RxMarbles.vue\";\n\nconst router = createRouter({\n  // history: createWebHistory(import.meta.env.BASE_URL),\n  history: createWebHashHistory(import.meta.env.BASE_URL),\n  routes: [\n    // {\n    //   path: \"/\",\n    //   name: \"xg\",\n    //   redirect: \"/lot\" // for <yz-xg /> WebComponent\n    // },\n    {\n      path: \"/\",\n      name: \"index\",\n      component: Index\n    },\n    {\n      path: \"/shape\",\n      name: \"shape\",\n      component: ShapeShowCase\n    },\n    {\n      path: \"/cs\",\n      name: \"cs\",\n      component: ComponentShowCase\n    },\n    {\n      path: \"/lot\",\n      name: \"lot\",\n      component: Lot\n    },\n    {\n      path: \"/park\",\n      name: \"park\",\n      component: Park\n    },\n    {\n      path: \"/rx/:operator?\",\n      name: \"rx\",\n      component: RxMarbles\n    },\n    {\n      path: \"/view-document/:title/:src\",\n      name: \"view-document\",\n      component: ViewDocument\n      // props: true // error :  https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22\n    }\n  ],\n  // [\n  //   {\n  //     path: \"/\",\n  //     redirect: \"/showcase\"\n  //   },\n  //   {\n  //     path: \"/\",\n  //     path: \"/demo/:demoid\",\n  //     name: \"home\",\n  //     component: HomeView,\n  //     // router level code-splitting\n  //     // this generates a separate chunk (About.[hash].js) for this router\n  //     // which is lazy-loaded when the router is visited.\n  //     component: () => import(\"../views/AboutView.vue\"),\n  //     meta: {},\n  //     children: [\n  //       { path: \"\", name: \"default\", redirect: \"/demo/sub1\" },\n  //       {\n  //         path: \"sub1\",\n  //         name: \"sub1\",\n  //         component: () => import(\"@/src/views/sub1.vue\")\n  //       }\n  //     ]\n  //   },\n  //   {\n  //     path: \"/:pathMatch(.*)*\",\n  //     name: \"404\",\n  //     component: Page404\n  //   }\n  // ]\n  scrollBehavior: (_to, _from, savedPosition) => {\n    // 这个功能只在支持 history.pushState 的浏览器中可用\n    if (savedPosition) {\n      return savedPosition;\n    } else {\n      return { left: 0, top: 0 };\n    }\n  }\n});\n\nexport default router;\n\n// <RouterLink to=\"/\">Home</RouterLink>\n// <RouterLink to=\"/about\">About</RouterLink>\n// <RouterView />\n\n// import { useRouter, useRoute } from \"../hooks\";\n// const router: Router  = useRouter();\n// router.push(\"/wc\");\n// const route = useRoute();\n// route.query\n// route.params\n\n// next: 前进 prev: 返回\nexport const routeDirection = ref<\"next\" | \"prev\">(\"next\");\nconst routeList = [];\n\n// 路由导航守卫\nrouter.beforeEach(\n  (\n    to: RouteLocationNormalized,\n    from: RouteLocationNormalized,\n    next: NavigationGuardNext\n  ) => {\n    // console.log(to, from);\n    // console.log(...routeList, \" : \", to.name);\n    const length = routeList.length;\n    const index = routeList.findIndex((r) => r == to.name);\n    if (length > 1 && index >= 0 && index < length - 1) {\n      routeDirection.value = \"prev\";\n      routeList.splice(index + 1);\n    } else {\n      routeDirection.value = \"next\";\n      routeList.push(to.name);\n    }\n    // console.log(routeDirection.value);\n    next();\n  }\n);\n\n// router.afterEach(\n//   (\n//     to: RouteLocationNormalized,\n//     from: RouteLocationNormalizedLoaded,\n//     failure?: NavigationFailure | void\n//   ) => {}\n// );\n\n// export async function push(location: RouteLocationRaw) {\n//   const router: Router = useRouter();\n//   await router.push(location);\n// }\n\n// {\n//   name: Name;\n//   path: Path;\n//   paramsRaw: ParamsRaw;\n//   params: Params;\n//   meta: Meta;\n// }\n// export async function to(this: any, path: string) {\n//   await push({ path });\n// }\n\n// 动态注册路由\n// const remove = addRoute(\"demo\", {\n//   path: \"sub2\",\n//   name: \"sub2\",\n//   component: () => import(\"@/src/views/sub2.vue\")\n// });\n// remove();\n// export function addRoute(route: RouteRecordRaw): () => void {\n//   const router: Router = useRouter();\n//   return router.addRoute(route);\n// }\n\n// export function removeRoute(name: string) {\n//   const router: Router = useRouter();\n//   router.removeRoute(name);\n// }\n\n// export function hasRoute(name: string): boolean {\n//   const router: Router = useRouter();\n//   return router.hasRoute(name);\n// }\n\n// export function getRoutes(): RouteRecordNormalized[] {\n//   const router: Router = useRouter();\n//   return router.getRoutes();\n// }\n\n// export function getCurrentRouteDetail() {\n//   const router: Router = useRouter();\n//   return {\n//     params: router.currentRoute.value.params,\n//     query: router.currentRoute.value.query\n//   };\n// }\n","import { computed } from \"vue\";\nimport {\n  useStore,\n  createNamespacedHelpers,\n  mapState,\n  mapGetters,\n  mapMutations,\n  mapActions\n} from \"vuex\";\n\n/// STATE TYPES\nexport type VuexState = VuexRootState & {\n  demo: VuexDemoState;\n};\nexport interface VuexRootState {\n  count: number;\n}\nexport interface VuexDemoState {\n  name: string;\n}\n/// MUTATION TYPES\nexport const INCREMENT = \"increment\";\nexport const DECREMENT = \"decrement\";\n/// ACTION TYPES\nexport const INCREMENTACTION = \"incrementAction\";\n\nexport function useVuex() {\n  const store = useStore<VuexState>();\n  return {\n    store\n    // state: store.state\n\n    // ...useVuexStates([\"count\"]),\n    // ...useVuexStates(\"demo\", [\"name\"]),\n\n    // ...useVuexGetters({ totaln: \"totaln\" }),\n    // ...useVuexGetters(\"demo\", [\"nameFormat\"]),\n\n    // ...useVuexMutations({\n    //   [INCREMENT]: INCREMENT,\n    //   [DECREMENT]: DECREMENT\n    // }),\n    // ...useVuexMutations(\"demo\", [\"changeName\"]),\n\n    // ...useVuexActions({\n    //   [INCREMENTACTION]: INCREMENTACTION\n    // }),\n    // ...useVuexActions(\"demo\", [\"changeNameAction\"])\n\n    // {{ state.count }}\n    // {{ state.demo.name }}\n    // {{ store.getters.totalCount }}\n    // {{ store.getters.totaln(2) }}\n    // {{ totaln(3) }}\n    // {{ store.getters[\"demo/nameFormat\"] }}\n  };\n}\n\n// ...mapState([\"count\"]);\n// ...mapState({ count: state => state.count });\nexport function useVuexStates(\n  keyMaps: Record<string, string> | string[]\n): Record<string, any>;\nexport function useVuexStates(\n  moduleName: string,\n  keyMaps: Record<string, string> | string[]\n): Record<string, any>;\nexport function useVuexStates(\n  moduleName: string | Record<string, string> | string[],\n  keyMaps?: Record<string, string> | string[]\n): Record<string, any> {\n  let mapFn = mapState;\n  if (typeof moduleName == \"string\" && moduleName.length > 0) {\n    mapFn = createNamespacedHelpers(moduleName).mapState;\n  } else {\n    keyMaps = moduleName as Record<string, string> | string[];\n  }\n  return useVuexMap(keyMaps!, mapFn);\n}\n\n// ...mapGetters([\"totaln\"]);\n// ...mapGetters({ totalnAnother: \"totaln\" });\nexport function useVuexGetters(\n  keyMaps: Record<string, string> | string[]\n): Record<string, any>;\nexport function useVuexGetters(\n  moduleName: string,\n  keyMaps: Record<string, string> | string[]\n): Record<string, any>;\nexport function useVuexGetters(\n  moduleName: string | Record<string, string> | string[],\n  keyMaps?: Record<string, string> | string[]\n): Record<string, any> {\n  let mapFn = mapGetters;\n  if (typeof moduleName == \"string\" && moduleName.length > 0) {\n    mapFn = createNamespacedHelpers(moduleName).mapGetters;\n  } else {\n    keyMaps = moduleName as Record<string, string> | string[];\n  }\n  return useVuexMap(keyMaps!, mapFn);\n}\n\n// ...mapMutations([INCREMENT]);\n// ...mapMutations({ inc: INCREMENT });\nexport function useVuexMutations(\n  keyMaps: Record<string, string> | string[]\n): Record<string, any>;\nexport function useVuexMutations(\n  moduleName: string,\n  keyMaps: Record<string, string> | string[]\n): Record<string, any>;\nexport function useVuexMutations(\n  moduleName: string | Record<string, string> | string[],\n  keyMaps?: Record<string, string> | string[]\n): Record<string, any> {\n  let mapFn = mapMutations;\n  if (typeof moduleName == \"string\" && moduleName.length > 0) {\n    mapFn = createNamespacedHelpers(moduleName).mapMutations;\n  } else {\n    keyMaps = moduleName as Record<string, string> | string[];\n  }\n  if (Array.isArray(keyMaps)) {\n    return mapFn(keyMaps!);\n  } else {\n    return mapFn(keyMaps!);\n  }\n}\n\n// ...mapActions([INCREMENTACTION]);\n// ...mapActions({ inca: INCREMENTACTION });\nexport function useVuexActions(\n  keyMaps: Record<string, string> | string[]\n): Record<string, any>;\nexport function useVuexActions(\n  moduleName: string,\n  keyMaps: Record<string, string> | string[]\n): Record<string, any>;\nexport function useVuexActions(\n  moduleName: string | Record<string, string> | string[],\n  keyMaps?: Record<string, string> | string[]\n): Record<string, any> {\n  let mapFn = mapActions;\n  if (typeof moduleName == \"string\" && moduleName.length > 0) {\n    mapFn = createNamespacedHelpers(moduleName).mapActions;\n  } else {\n    keyMaps = moduleName as Record<string, string> | string[];\n  }\n  if (Array.isArray(keyMaps)) {\n    return mapFn(keyMaps!);\n  } else {\n    return mapFn(keyMaps!);\n  }\n}\n\nfunction useVuexMap(\n  keys: Record<string, string> | string[],\n  mapFn: any\n): Record<string, any> {\n  const store = useStore();\n  const maps: Record<string, any> = {};\n  const mappedKeyFns = mapFn(keys);\n  Object.keys(mappedKeyFns).forEach((key) => {\n    const fn = mappedKeyFns[key].bind({ $store: store });\n    maps[key] = computed(fn);\n  });\n  return maps;\n}\n"],"names":["useMapState","state","keys","mapped","key","computed","getInstance","getCurrentInstance","getVNode","component","props","createVNode","renderComponent","options","vNode","render","useVueEffect","effect","remove","onMounted","onUnmounted","safeAreaBottom","ref","s","useSafeArea$","__expose","__props","route","useRoute","setWindowTitle","src","matchIconName","stringToIcon","value","validate","allowSimpleName","provider","colonSeparated","name2","prefix","result","validateIconName","name","dashSeparated","icon","defaultIconDimensions","defaultIconTransformations","defaultIconProps","defaultExtendedIconProps","mergeIconTransformations","obj1","obj2","rotate","mergeIconData","parent","child","getIconsTree","data","names","icons","aliases","resolved","resolve","internalGetIconData","tree","currentProps","parse","parseIconSet","callback","item","optionalPropertyDefaults","checkOptionalProps","defaults","prop","quicklyValidateIconSet","obj","dataStorage","newStorage","getStorage","providerStorage","addIconSet","storage","addIconToStorage","simpleNames","allowSimpleNames","allow","getIconData","iconName","addIcon","addCollection","added","defaultIconSizeCustomisations","defaultIconCustomisations","unitsSplit","unitsTest","calculateSize","size","ratio","precision","oldParts","newParts","code","isNumber","num","splitSVGDefs","content","tag","defs","index","start","end","endEnd","mergeDefsAndContent","wrapSVGContent","body","split","isUnsetKeyword","iconToSVG","customisations","fullIcon","fullCustomisations","box","transformations","hFlip","vFlip","rotation","tempValue","customisationsWidth","customisationsHeight","boxWidth","boxHeight","width","height","attributes","setAttr","viewBox","regex","randomPrefix","counter","replaceIDs","ids","match","suffix","id","newID","escapedID","setAPIModule","getAPIModule","createAPIConfig","source","resources","configStorage","fallBackAPISources","fallBackAPI","addAPIProvider","customConfig","config","getAPIConfig","fetchModule","calculateMaxLength","maxHostLength","url","shouldAbort","status","prepare","results","maxLength","type","length","getPath","fetchAPIModule","host","params","path","iconsList","urlParams","uri","defaultError","response","sortIcons","b","lastIcon","localStorage","list","removeCallback","storages","items","row","updateCallbacks","hasPending","oldLength","idCounter","storeCallback","pendingSources","abort","listToIcons","defaultConfig","sendQuery","payload","query","done","resourcesCount","startIndex","nextIndex","startTime","queriesSent","lastError","timer","queue","doneCallbacks","resetTimer","subscribe","overwrite","getQueryStatus","failQuery","clearQueue","moduleResponse","isError","queued","execNext","resource","status2","initRedundancy","cfg","queries","cleanup","queryCallback","doneCallback","query2","error","find","emptyCallback$1","redundancyCache","getRedundancyCache","redundancy","cachedReundancy","sendAPIQuery","target","send","api","cached","moduleKey","emptyCallback","loadedNewIcons","checkIconNamesForAPI","valid","invalid","parseLoaderResponse","checkMissing","pending","err","parsePossiblyAsyncResponse","loadNewIcons","icons2","customIconLoader","iconSet","loadIcons","cleanedIcons","sortedIcons","callCallback","newIcons","sources","lastProvider","lastPrefix","providerNewIcons","pendingQueue","mergeCustomisations","valueType","separator","flipFromString","custom","flip","str","rotateFromString","defaultValue","units","value2","iconToHTML","renderAttribsHTML","attr","encodeSVGforURL","svg","svgToData","svgToURL","defaultExtendedIconCustomisations","svgDefaults","commonProps","monotoneProps","coloredProps","propsToAdd","propsToAddTo","customisationAliases","fixSize","componentProps","mode","style","propsStyle","customStyle","alias","renderAttribs","localCounter","h","useMask","html","_window","preload","providers","emptyIcon","Icon","defineComponent","onload","customise","customised","classes","newProps","darkenOver","darkenClick","emits","__emit","el","xgBlue","getCSSVar","fontColor","borderColor","bgColor","baseFontColor","baseBorderColor","baseBgColor","baseBgColorStart","baseBgColorEnd","isBgColorGradient","setStylePattern","stylePattern","__color","watch","opacity","cursor","isMouseOver","mouseover","mouseleave","asyncClickPending","throttleClick","throttle","e","getElementAttrs","node","attrs","i","atts","n","att","visible","parentOverflow","atomReadStyle","watchEffect","setOverflow","atomWriteStyle","open","close","r","drawContext","resizeSubscription","tapSubscription","cancelAnimationFrame","isEmitMount","isShapesUpdated","newVal","oldVal","startAnimationFrame","requestAnimationFrameCycle","DrawContext","rect","tap$","text","getInnerText","useClipboard","isClicked","popUnit","overlayRef","popContentRef","popContentStyle","reactive","tl","Timeline","boxStyle","boxResize","action","computePopValue","isShow","update","lastPopValue","_update","diffValue","Easing","onComplete","popOpen","clickOverlay","className","hasClass","opposite","effectStatus","next","controller","getControllerResolve","isEmitReady","useElementEventBus","ready","popRef","cancelButtonStylePattern","confirmButtonStylePattern","showTopIcon","colorStart","colorEnd","isBtnsVertical","popClose","confirm","dialog","isNotTypeNone","isTypeWarn","isTypeNormal","isTypeUnderline","isTypeJump","isTypeJumpEach","placeholders","placeholderJumpEachDuration","inputEl","isFocus","errorText","inputText","focus","blur","input","subcription","FIRST","NUMBER","ENGLISH","CHINESE","keyboardStep","plates","platesChangeCallback","flushArray","back","click","dataset","number","dotBefore","dotAfter","hasTapDot","clearArray","_computeResult","isNaN","min","maxDotNumber","max","d","c","_forward","v","_back","CEMAPS","Pop","Input","getCEComponent","teleport","temp","div","uniqueKey","pop","directionFrom","t","vnode","popBottom","popTop","popLeft","popRight","popCenter","popAbsolute","popTel","tel","PopTel","Dialog","toast","during","DialogToast","loading","DialogLoading","plateKeyboard","PlateKeyboard","numberKeyboard","NumberKeyboard","context","inject","useRouter","gotoPay","PLATE_TYPES","getPlateType","plateType","dotSize","getEmSize","animationRef","duration","timingFunction","delay","repeat","direction","changeEffect","animationName","s1","s2","mount","animationStart$","animationEnd$","clear","set","trigger","newAnimationName","triggerReverse","pageRef","cssAnimationRef","cssAnimationName","runDependOnEffectType","cssAnimationTask","jsAnimationTask","isOpen","timeline","triggerFrom","triggerTo","cssanimationstart","cssanimationend","newEffect","currentPageIndex","nextPageIndex","onRenderComplete","onRouteCompletes","pages","pageActions","pageElements","isValidPageIndex","pageIndex","isForward","_getPageEffect","currentPageEffect","nextPageEffect","getPageEffect","routeEffect","_getPageDuration","currentDuration","nextDuration","getPageDuration","_getPageEaseFunction","getPageEaseFunction","_getPageDelay","getPageDelay","currentZIndex","nextZIndex","sameOnTop","nextOnTop","currentOnTop","setRunningStyle","emitsEnd","routesRef","renderPages","appendCount","isReset","renderCount","page","pageEffect","Page","isVNode","reset","resetPages","p","generateUUID","goto","push","forward","cb","onRouteComplete","isOpenPop","imageRef","containerWidth","containerHeight","sourceWidth","sourceHeight","showWidth","showHeight","finalX","finalY","finalWidth","finalHeight","popX","popY","popWidth","popHeight","outterResize","useLoadImage","info","setImageWidthHeight","innerResize","wrapImageRect","computeImageDisplayRect","viewportWidth","viewportHeight","getViewportSize","viewportImageRect","panLeft$","panRight$","currentIndex","routeChangeEnd","fromPageIndex","toPageIndex","Image","panLeft","panRight","checkClose","billsn","fee","popTelEl","call","imageViewEl","router","gotoShape","gotoShowcase","gotoXGLot","gotoRxmarbles","Stats","container","event","showPanel","addPanel","panel","beginTime","prevTime","frames","fpsPanel","msPanel","memPanel","time","memory","fg","bg","round","PR","WIDTH","HEIGHT","TEXT_X","TEXT_Y","GRAPH_X","GRAPH_Y","GRAPH_WIDTH","GRAPH_HEIGHT","canvas","maxValue","containerRef","stats","getStep","stepMap","getPercent","lerpMap","percent","change","injectStyle","SVGRawString","SVGShapes","svgStart","svgFrame","CanvasShapes","canvasStart","canvasFrame","linePicture","ShapeCombo","linePictureClone","strokeDashPath","Shape","totalLength","dasharray","dashoffset","changeDasharray","changeDashoffset","currentType","cases","marker","BallShape","markerClone","line","LineShape","lineClone","lineDegree","lineDegreeClone","p2","TreeShapeCombo","treeClone","treeRotate","treeRotateClone","RectShape","rect2","rectClone","rect2Clone","heart","HeartShape","Color","heartClone","heartVariant","HeartVariantShape","heartVariantClone","star","StarShape","starClone","fox","FoxShape","foxClone","rabbit","RabbitShape","rabbitClone","cross","CrossShape","crossClone","ship","ShipShapeCombo","shipClone","segment","SegmentShapeCombo","segmentRotate","segmentClone","segmentRotateClone","slider","SliderShapeCombo","sliderClone","ellipse","EllipseShape","ellipseClone","TextShape","textClone","curve","CurveShape","curveClone","gap","shape1SVG","shape2SVG","shape1Canvas","shape2Canvas","x","y","points","ps","PointsShape","psClone","point","arrow","ArrowShape","arrowClone","arrowLine","arrowLineClone","centerX","centerY","followMouseShape","dragBall","dragBallClone","centerSVG","centerCanvas","targetToAfterDropShape","ball1","ball2","animateShapes","numBalls","balls","ballRadius","ball","wall","sun","planet","radius","lines","handle","ballB","ballA","boxes","createBox","activeBox","springMassBalls","springMassLines","color0","numParticles","particle","fromX","fromY","toX","toY","alpha","l","distance","toDegree","angle","rosetta","trail","subPathD","ConfettiShapeCombo","fire","particleRatio","opts","confetti","randomInt","confettiClone","deletes","deleteArrayItem","redPoint","redPointClone","greenPoint","greenPointClone","boundingRect","boundingRectClone","prevColor","prevShape","t1","t2","tGap","interpolationPathIndex1","interpolationPathIndex2","totalLengthOfPath1","totalLengthOfPath2","x1","y1","x2","y2","before","after","shapes","polymorphTween","withinErrorMarginNumber","isEnter","mouseEnter$","mouseLeave$","barPercent","toValue","bar","getVerticalScrollTopPercentInPage","subscription","useScroll$","contentMaxHeight","computeHeight","nextTick","toggleOpen","mouseSubscription","lerp","clientX","usePointerDownMovePoint$","mpg","parentStyle","childStyle","setStyle","clearObject","realSelected","realDisabled","realLabel","getBackgroundColor","getBorderColor","getForegroundColor","toggleValue","setValue","label","booleanBoxRefs","setRef","selectedIndex","selected","selectedIndexes","findIndex","isChange","hW","styleSheet","perspectiveChange","pox","perspectiveOriginXChange","poy","perspectiveOriginYChange","cubeT","sideChange","side","cubeA","spinCubeChange","a","bv","backVisibleChange","buttonRef","left","top","buttonLeft","buttonTop","buttonWidth","contentWidth","contentHeight","computeLocation","contentResize","viewport","popover","color","rightColor","colorString","oppositeColorString","rightColorString","oppositeRightColorString","hTop","sLeft","vTop","rightColorHSV","colorHSV","hueFieldReady","ctx","setH","clamp","useMouseAndPointerDownMovePoint$","saturationFieldReady","setSV","currentTypeIndex","focusIndex","isPlateKeyboardOpen","scrollTopWhenKeyboardShow","numbersRef","numbersTop","openPlateKeyboard","newPlates","changePlateType","tapNumber","imagesrc1","imagesrc2","imagesrc3","imagebike","download","unsubscribe","DOMSVGUtil","isRunning","useVisible$","forceStart","position","position_prev","TWEEN","select","defaultEaseDuration","children","setChildRef","easeName","deferred","schedule","ScheduleDependOnResult","onMount","createTask","selectedEaseName","onSelect","easeFunction","x0","y0","xA","yA","xB","yB","object","setChild","interpolationName","transitionStart$","transitionEnd$","onPlay","_e","video","DOMVideo","play","pause","videosrc","useLoadScript","mapTDTJSSDK","mapWidth","mapHeight","resize","rectStyle","dotStyle","loading3","cubeStyle","loading7","ringGap","ringWidth","flipWidth","lineHeight","fontSize","timeNext","lastTimeOutCount","starttime","copyTime","parseTime","flipAction","now","clearInterval","setIntervalAccurate","count","isTimeOut","_","currentCount","increaseTime","decreaseTime","setTimeoutAccurate","currentPercent","createRunCycleInMaxRate","ringIndicator","RingIndicatorShapeCombo","frame","widthObj","extractNumber","heightObj","paddingObj","roundLength","roundPositionStart","roundPositionEnd","enabled","rotateSvg","tapOutSide$","isShowDelete","oppositeDeleteColor","imageViewMultiRef","openImageViewMulti","handRef","downloadHandWrite","selectedEaseFunction","effectsRef","superRainbowRef","superRainbowEnter","imageMount","CSSAnimationRefs","animationEnter","animationLeave","changePageEffect","openPage","closePage","changeRouteEffect","totals","routeChangeStart","totalPages","resetPage","LayoutCenter","pushPage","popPage","forwardPage","backPage","gotoPage","videoRef","playVideo","pauseVideo","popBottomSample","commonEmailValidator","popBottomFixedSample","popTopSample","popLeftSample","popRightSample","popCenterSample","popAbsoluteSample","openDialogSample","dialogToastSample","openDialogLoadingSample","openDialogMiniSample","openDialogRedSample","openDialogBlueSample","openNumberKeyboardSample","msg","clockFlipper","startClockFlipper","formatTime","pauseClockFlipper","borderFocusTextRef","circleRef","cssMouseEnter","cssMouseLeave","resetRingIndicator","addRingIndicator","timestamp","blue","iconClick","isFunction","hasLift","operate","init","liftedSource","extendStatics","__extends","__","__awaiter","thisArg","_arguments","P","generator","adopt","reject","fulfilled","step","rejected","__generator","f","g","verb","op","__values","o","m","__read","ar","__spreadArray","to","from","pack","__await","__asyncGenerator","q","awaitReturn","resume","settle","fulfill","__asyncValues","isArrayLike","isPromise","createErrorClass","createImpl","_super","instance","ctorFunc","UnsubscriptionError","errors","arrRemove","arr","Subscription","initialTeardown","e_1","_a","e_2","_b","_parentage","_parentage_1","_parentage_1_1","parent_1","e_1_1","initialFinalizer","_finalizers","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","e_2_1","teardown","empty","EMPTY_SUBSCRIPTION","isSubscription","timeoutProvider","handler","timeout","args","_i","delegate","reportUnhandledError","noop","errorContext","Subscriber","destination","_this","EMPTY_OBSERVER","complete","SafeSubscriber","_bind","bind","fn","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","defaultErrorHandler","observable","identity","pipe","fns","pipeFromArray","prev","Observable","operator","subscriber","isSubscriber","sink","promiseCtor","getPromiseCtor","Symbol_observable","operations","isObserver","isInteropObservable","isAsyncIterable","createInvalidObservableTypeError","getSymbolIterator","iterator","isIterable","Symbol_iterator","readableStreamLikeToAsyncGenerator","readableStream","reader","isReadableStreamLike","innerFrom","fromInteropObservable","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","fromReadableStreamLike","obs","array","promise","iterable","iterable_1","iterable_1_1","asyncIterable","process","asyncIterable_1","asyncIterable_1_1","createOperatorSubscriber","onNext","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","audit","durationSelector","hasValue","lastValue","durationSubscriber","isComplete","endDuration","cleanupDuration","Action","scheduler","work","intervalProvider","AsyncAction","_id","_scheduler","_delay","errored","errorValue","actions","dateTimestampProvider","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","asyncScheduler","async","isScheduler","isValidDate","dueTime","intervalOrScheduler","intervalDuration","due","auditTime","buffer","closingNotifier","currentBuffer","bufferCount","bufferSize","startBufferEvery","buffers","toEmit","buffers_1","buffers_1_1","toEmit_1","toEmit_1_1","e_3","buffers_2","buffers_2_1","e_3_1","last","popResultSelector","popScheduler","popNumber","executeSchedule","parentSubscription","scheduleSubscription","bufferTime","bufferTimeSpan","otherArgs","bufferCreationInterval","maxBufferSize","bufferRecords","restartOnEmit","emit","record","subs","startBuffer","record_1","bufferTimeSubscriber","recordsCopy","recordsCopy_1","recordsCopy_1_1","bufferToggle","openings","closingSelector","openValue","closingSubscription","emitBuffer","bufferWhen","closingSubscriber","openBuffer","isArray","getPrototypeOf","objectProto","getKeys","argsArgArrayOrObject","first_1","isPOJO","observeOn","subscribeOn","scheduleObservable","schedulePromise","scheduleArray","scheduleIterable","scheduleAsyncIterable","scheduleReadableStreamLike","scheduled","map","project","callOrApply","mapOneOrManyArgs","createObject","values","combineLatest","resultSelector","observables","combineLatestInit","valueTransform","maybeSchedule","active","remainingFirstValues","_loop_1","hasFirstValue","execute","mergeInternals","concurrent","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","mergeMap","ii","scanInternals","accumulator","seed","hasSeed","emitOnNext","emitBeforeComplete","hasState","reduce","arrReducer","toArray","joinAllInternals","joinFn","combineLatestAll","argsOrArgArray","mergeAll","concatAll","concatMap","ObjectUnsubscribedError","Subject","subject","AnonymousSubject","_c","observer","observers","hasError","isStopped","thrownError","predicate","total","debounce","debounceTime","activeTask","lastTime","emitWhenIdle","targetTime","defaultIfEmpty","concat","EMPTY","take","seen","ignoreElements","mapTo","delayWhen","delayDurationSelector","subscriptionDelay","of","distinct","keySelector","flushes","distinctKeys","distinctUntilChanged","comparator","defaultCompare","previousKey","first","currentKey","ArgumentOutOfRangeError","filter","EmptyError","throwIfEmpty","errorFactory","defaultErrorFactory","elementAt","hasDefaultValue","every","exhaustMap","innerSub","outerValue","exhaustAll","finalize","createFind","groupBy","elementOrOptions","connector","element","groups","notify","handleError","consumer","activeGroups","teardownAttempted","groupBySourceSubscriber","key_1","group_1","grouped","createGroupedObservable","durationSubscriber_1","groupSubject","groupSubscriber","isEmpty","takeLast","buffer_1","buffer_1_1","comparer","mergeScan","pairwise","hasPrev","BehaviorSubject","_value","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","_buffer","_infiniteTimeWindow","copy","adjustedBufferSize","race","raceInit","subscriptions","countOrConfig","soFar","sourceSub","resubscribe","notifier","notifierSubscriber_1","subscribeToSource","syncUnsub","sample","interval","period","sampleTime","scan","sequenceEqual","compareTo","aState","createState","bState","isEqual","createSubscriber","selfState","otherState","sequenceEqualSubscriber","share","resetOnError","resetOnComplete","_d","resetOnRefCountZero","wrapperSource","connection","resetConnection","refCount","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","conn","dest","handleReset","on","onSubscriber","SequenceError","message","NotFoundError","single","singleValue","seenValue","skip","skipLast","skipCount","ring","valueIndex","oldValue","skipUntil","taking","skipSubscriber","skipWhile","startWith","switchMap","innerSubscriber","innerIndex","outerIndex","switchAll","switchScan","takeUntil","takeWhile","inclusive","tap","tapObserver","isUnsub","leading","trailing","sendValue","throttled","endThrottling","cleanupThrottling","startThrottle","throttleTime","duration$","timeInterval","TimeInterval","timestampProvider","withLatestFrom","inputs","len","otherValues","zip","completed","sourceIndex","VirtualTimeScheduler","maxFrames","VirtualAction","defer","observableFactory","forkJoin","remainingCompletions","remainingEmissions","generate","initialStateOrOptions","condition","iterate","resultSelectorOrScheduler","initialState","gen","iif","trueResult","falseResult","merge","range","categories","ev","group$","acc","cur","examples","MAX_TIME","STROKE_WIDTH","COLORS","greyDark","bgWhite","DIMENS","fontBase","elevation1","timelineStyle","POSSIBLE_COLORS","sandboxStyle","getElevationPseudoElementStyle","dy","store$","useHashChange$","example$","inputTimelines$","example","inputsToTimelines","changedMarbleSubject$","changedMarble$","changedEndMarkerSubject$","changedEndMarker$","endMarkerMinTime$","inputTimelines","changedEndMarker","outputTimeline$","changedMarble","endMarkerMinTime","marbleIndex","vtScheduler","inputTimelineMarbles$Array","toVTStream","outputline$","formatOutputTimeline$","stream","subject$","stop$","endTime","marble","calculateNotificationContentHash","assoc","marbles","curry","inputToMarbles","getInput","getTime","lastInput","calculateNotificationHash","contentHash","getPercentageFn","parentElement","elementLeft","isHighlighted","isDraggable","mouseenter","mousedown","moveMarble","mouseUp","circleStyle","textStyle","inputtls","outputtl","timelines","base","nav","links","link","getElementPositionInPage","createRouter","createWebHashHistory","Index","ShapeShowCase","ComponentShowCase","Lot","Park","RxMarbles","ViewDocument","_to","_from","savedPosition","routeDirection","routeList","INCREMENT","DECREMENT","INCREMENTACTION","useVuex","useStore","useVuexStates","moduleName","keyMaps","mapFn","mapState","createNamespacedHelpers","useVuexMap","useVuexGetters","mapGetters","useVuexMutations","mapMutations","useVuexActions","mapActions","store","maps","mappedKeyFns"],"mappings":"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","x_google_ignoreList":[4,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243]}
