{"version":3,"file":"charts-VWliGDqy.js","sources":["../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/coordinate/cartesian.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/angle.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/coordinate/polar.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/coordinate/transpose.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/coordinate/theta.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/coordinate/radial.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/coordinate/parallel.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/coordinate/fisheye.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/coordinate/radar.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/encode/constant.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/encode/transform.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/encode/field.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/encode/column.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-array-like.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/filter.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-function.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-nil.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-type.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-array.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-object.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/each.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/keys.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-match.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-object-like.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-plain-object.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/find.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/max.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/min.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/reduce.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-string.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/last.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/clamp.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-number.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-number-equal.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/max-by.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/min-by.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/mod.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/to-string.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/lower-first.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/substitute.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/upper-first.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-boolean.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-undefined.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/mix.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/clone.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/debounce.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/memoize.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/deep-mix.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/is-equal.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/get.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/set.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/pick.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/omit.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/throttle.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/noop.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/lodash/size.js","../../../../.yarn/cache/gl-matrix-npm-3.4.3-f2e6349faa-25ca2f7c76.zip/node_modules/gl-matrix/esm/common.js","../../../../.yarn/cache/gl-matrix-npm-3.4.3-f2e6349faa-25ca2f7c76.zip/node_modules/gl-matrix/esm/mat3.js","../../../../.yarn/cache/gl-matrix-npm-3.4.3-f2e6349faa-25ca2f7c76.zip/node_modules/gl-matrix/esm/mat4.js","../../../../.yarn/cache/gl-matrix-npm-3.4.3-f2e6349faa-25ca2f7c76.zip/node_modules/gl-matrix/esm/vec3.js","../../../../.yarn/cache/gl-matrix-npm-3.4.3-f2e6349faa-25ca2f7c76.zip/node_modules/gl-matrix/esm/vec4.js","../../../../.yarn/cache/gl-matrix-npm-3.4.3-f2e6349faa-25ca2f7c76.zip/node_modules/gl-matrix/esm/quat.js","../../../../.yarn/cache/gl-matrix-npm-3.4.3-f2e6349faa-25ca2f7c76.zip/node_modules/gl-matrix/esm/vec2.js","../../../../.yarn/cache/tslib-npm-2.6.2-4fc8c068d9-bd26c22d36.zip/node_modules/tslib/tslib.es6.mjs","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/params-parser.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/process/fix-arc.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/params-count.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/is-path-array.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/is-absolute-array.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/is-normalized-array.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/finalize-segment.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/scan-flag.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/is-digit-start.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/scan-param.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/is-space.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/skip-spaces.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/is-path-command.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/is-arc-command.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/scan-segment.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/path-parser.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/parser/parse-path-string.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/convert/path-2-absolute.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/process/normalize-segment.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/process/normalize-path.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/is-curve-array.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/rotate-vector.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/process/arc-2-cubic.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/process/quad-2-cubic.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/mid-point.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/process/line-2-cubic.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/process/segment-2-cubic.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/convert/path-2-curve.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/process/clone-path.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/process/reverse-curve.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/distance-square-root.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/segment-line-factory.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/segment-arc-factory.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/segment-cubic-factory.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/segment-quad-factory.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/path-length-factory.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/get-total-length.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/get-rotated-curve.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/get-path-area.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/get-draw-direction.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/get-point-at-length.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/path/util/equalize-segments.js","../../../../.yarn/cache/@antv-util-npm-3.3.6-3d5d8f5104-4de0e6e3d8.zip/node_modules/@antv/util/esm/dom/create-dom.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/utils/helper.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeZeroY1.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/ascending.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/descending.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/bisector.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/number.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/bisect.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/count.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/variance.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/deviation.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/extent.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/fsum.js","../../../../.yarn/cache/internmap-npm-2.0.3-d74f5c9998-873e0e7fcf.zip/node_modules/internmap/src/index.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/identity.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/group.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/permute.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/sort.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/groupSort.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/array.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/constant.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/ticks.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/nice.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/threshold/sturges.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/bin.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/max.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/maxIndex.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/min.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/minIndex.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/quickselect.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/greatest.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/quantile.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/threshold/scott.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/mean.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/median.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/merge.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/range.js","../../../../.yarn/cache/d3-array-npm-3.2.4-b427632bcc-5800c467f8.zip/node_modules/d3-array/src/sum.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/helper.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/array.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/utils/order.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/stackY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/dateFormat.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeTitle.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeZeroX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeZeroY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeSize.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeKey.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeSeries.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeTupleY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeTupleX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeIdentityY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeIdentityX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeDefaultX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeDefaultY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeTooltip.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeZeroPadding.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeVisualPosition.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeFunctionAttribute.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeTuple.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/maybeGradient.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/dodgeX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/stackEnter.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/normalizeY.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/compose.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/normalize.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/clamp.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/bisect.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/ticks.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/d3-linear-nice.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/time-interval.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/utc-interval.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/find-tick-interval.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/d3-time-nice.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/is-array-like.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/is-type.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/is-function.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/is-nil.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/is-array.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/is-object.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/each.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/is-object-like.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/is-plain-object.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/is-string.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/is-number.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/values.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/is-null.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/is-undefined.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/memoize.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/deep-mix.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/index-of.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/identity.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/size.js","../../../../.yarn/cache/@antv-util-npm-2.0.17-d855f43b5b-15cad6cafb.zip/node_modules/@antv/util/esm/measure-text-width.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/is-valid.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/log.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/d3-log-nice.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/interpolatize.js","../../../../.yarn/cache/color-name-npm-1.1.4-025792b0ea-b044585952.zip/node_modules/color-name/index.js","../../../../.yarn/cache/is-arrayish-npm-0.3.2-f856180f79-81a78d518e.zip/node_modules/is-arrayish/index.js","../../../../.yarn/cache/simple-swizzle-npm-0.2.2-8dee37fad1-c6dffff17a.zip/node_modules/simple-swizzle/index.js","../../../../.yarn/cache/color-string-npm-1.9.1-dc020e56be-72aa0b81ee.zip/node_modules/color-string/index.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/color.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/interpolate.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/choose-mask.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/internMap.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/base.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/ordinal.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/band.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/tick-methods/d3-ticks.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/constant.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/pretty-number.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/tick-methods/wilkinson-extended.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/identity.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/continuous.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/linear.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/point.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/pow.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/sqrt.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/threshold.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/tick-methods/d3-log.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/log.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/quantize.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/utils/create-quartile.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/quantile.js","../../../../.yarn/cache/fecha-npm-4.2.3-75248da3fd-534ce630c8.zip/node_modules/fecha/lib/fecha.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/tick-methods/d3-time.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/time.js","../../../../.yarn/cache/@antv-scale-npm-0.4.15-da68063674-4f79fd3b9a.zip/node_modules/@antv/scale/esm/scales/sequential.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/jitter.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/jitterX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/jitterY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/symmetryY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/diffY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/select.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/selectX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/selectY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/groupN.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/group.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/groupX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/groupY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/groupColor.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/sort.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/sortX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/sortColor.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/sortY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/flexX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/vector.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/pack.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/bin.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/binX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/utils/lttb.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/sample.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/transform/filter.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/constant.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/math.js","../../../../.yarn/cache/d3-path-npm-3.1.0-8d69e9e4e5-8e97a9ab49.zip/node_modules/d3-path/src/path.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/path.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/arc.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/array.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/curve/linear.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/point.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/line.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/area.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/curve/radial.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/lineRadial.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/areaRadial.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/noop.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/curve/cardinal.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/curve/cardinalClosed.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/curve/catmullRom.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/curve/catmullRomClosed.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/curve/linearClosed.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/curve/monotone.js","../../../../.yarn/cache/d3-shape-npm-3.2.0-0beb7d8b02-2e861f4d47.zip/node_modules/d3-shape/src/curve/step.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/coordinate.js","../../../../.yarn/cache/eventemitter3-npm-5.0.1-5e423b7df3-ac6423ec31.zip/node_modules/eventemitter3/index.js","../../../../.yarn/cache/d3-color-npm-1.4.1-cd6dccad72-f264a0ed65.zip/node_modules/d3-color/src/define.js","../../../../.yarn/cache/d3-color-npm-1.4.1-cd6dccad72-f264a0ed65.zip/node_modules/d3-color/src/color.js","../../../../.yarn/cache/@antv-g-math-npm-2.0.2-1a896a60eb-609e89b0ea.zip/node_modules/@antv/g-math/dist/index.esm.js","../../../../.yarn/cache/@antv-g-lite-npm-1.2.21-12143b5f80-e1e103b407.zip/node_modules/@antv/g-lite/dist/index.esm.js","../../../../.yarn/cache/@antv-g-camera-api-npm-1.2.22-1ad67467d9-96d37b26a9.zip/node_modules/@antv/g-camera-api/dist/index.esm.js","../../../../.yarn/cache/@antv-g-web-animations-api-npm-1.2.22-e98f94271b-3cf4e791c3.zip/node_modules/@antv/g-web-animations-api/dist/index.esm.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/selection.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/number.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/utils.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/interval/color.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/interval/rect.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/interval/hollow.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/interval/funnel.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/interval/pyramid.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/createElement.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/line/curve.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/line/line.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/line/smooth.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/line/hv.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/line/vh.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/line/hvh.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/line/trail.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/marker.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/color.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/hollowBowtie.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/hollowDiamond.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/hollowHexagon.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/hollow.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/hollowSquare.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/hollowTriangle.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/hollowTriangleDown.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/bowtie.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/cross.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/diamond.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/hexagon.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/hyphen.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/line.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/plus.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/point.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/square.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/tick.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/triangle.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/point/triangleDown.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/vector/vector.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/traverse.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/visibility.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/offscreen.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/shapes/Text.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/angle-converter.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/bbox.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/callback.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/classnames.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/deep-assign.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/defined.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/text.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/ellipsis.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/wrap.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/event.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/extend-display-object.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/group-by.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/if-show.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/in-range.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/interpolate.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/keyframe-interpolate.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/layout/utils/helper.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/layout/flex/index.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/layout/grid/index.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/layout/executer.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/matrix.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/number.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/omit.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/path.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/primitive.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/sampling.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/scale-to-pixel.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/group.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/selection.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/series.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/shape.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/string.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/style.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/transform.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/util/transpose.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/core/component.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/marker/symbol.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/marker/utils.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/marker/index.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/sparkline/columns.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/sparkline/lines.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/sparkline/path.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/sparkline/utils.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/sparkline/index.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/animation/utils.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/animation/fadeOut.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/slider/constant.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/slider/handle.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/slider/index.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/scrollbar/index.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/constant.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/grid/index.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/guides/utils.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/guides/line.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/guides/grid.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/utils/bounds.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/utils/contain.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/utils/intersect.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/utils/test.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/overlap/autoEllipsis.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/overlap/autoHide.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/overlap/autoRotate.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/overlap/autoWrap.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/overlap/index.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/utils/index.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/guides/labels.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/guides/ticks.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/title/index.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/guides/title.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/axis/axis.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/navigator/index.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/legend/utils.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/legend/category/item.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/legend/category/items.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/legend/continuous/handle.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/legend/constant.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/legend/category.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/indicator/constant.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/indicator/indicator.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/legend/continuous/utils.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/legend/continuous/ribbon.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/legend/continuous.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/tooltip/constant.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/tooltip/index.js","../../../../.yarn/cache/@antv-component-npm-1.0.1-beta.0-90042f538d-1bcb276c4b.zip/node_modules/@antv/component/esm/ui/layout/layout.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/text/advance.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/text/text.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/text/badge.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/area/curve.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/area/area.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/area/smooth.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/area/hvh.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/area/vh.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/area/hv.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/link/link.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/link/smooth.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/link/vhv.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/link/arc.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/utils.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/image/image.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/polygon/polygon.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/polygon/ribbon.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/box/box.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/box/violin.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/lineXY/line.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/connector/connector.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/string.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/label/position/area.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/label/position/default.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/label/position/outside.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/label/position/spider.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/label/position/surround.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/label/label.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/path/color.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/path/path.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/path/hollow.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/density/density.js","../../../../.yarn/cache/flru-npm-1.0.2-bb857a97f8-eb83ad6715.zip/node_modules/flru/dist/flru.mjs","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/lru.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/heatmap/renderer/gradient.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/heatmap/renderer/index.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/heatmap/heatmap.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/shape/shape.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/liquid/wave.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/liquid/shapes.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/shape/liquid/liquid.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/interval.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/rect.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/line.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/point.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/text.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/cell.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/area.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/link.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/image.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/polygon.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/box.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/vector.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/lineY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/lineX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/connector.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/range.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/rangeX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/rangeY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/utils/d3-sankey/align.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/utils/d3-sankey/constant.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/utils/d3-sankey/sankey.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/sankey.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/mark.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/sankey.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/utils/arc/sort.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/utils/arc/arc.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/arc.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/chord.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/path.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/cluster.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/count.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/each.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/find.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/sum.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/sort.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/path.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/descendants.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/leaves.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/links.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/iterator.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/hierarchy/index.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/accessors.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/constant.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/lcg.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/array.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/pack/enclose.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/pack/siblings.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/pack/index.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/treemap/round.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/treemap/dice.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/partition.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/stratify.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/tree.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/treemap/slice.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/treemap/squarify.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/treemap/index.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/treemap/binary.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/treemap/sliceDice.js","../../../../.yarn/cache/d3-hierarchy-npm-3.1.2-1ac1bae7e3-497b79dc6c.zip/node_modules/d3-hierarchy/src/treemap/resquarify.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/treeDataTransform.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/treemap.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/pack.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/boxplot.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/shape.js","../../../../.yarn/cache/d3-force-npm-3.0.0-462e87e63b-85945f8d44.zip/node_modules/d3-force/src/center.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/add.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/cover.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/data.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/extent.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/quad.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/find.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/remove.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/root.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/size.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/visit.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/visitAfter.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/x.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/y.js","../../../../.yarn/cache/d3-quadtree-npm-3.0.1-6f0eae8c83-1915b6a7b0.zip/node_modules/d3-quadtree/src/quadtree.js","../../../../.yarn/cache/d3-force-npm-3.0.0-462e87e63b-85945f8d44.zip/node_modules/d3-force/src/constant.js","../../../../.yarn/cache/d3-force-npm-3.0.0-462e87e63b-85945f8d44.zip/node_modules/d3-force/src/jiggle.js","../../../../.yarn/cache/d3-force-npm-3.0.0-462e87e63b-85945f8d44.zip/node_modules/d3-force/src/link.js","../../../../.yarn/cache/d3-dispatch-npm-3.0.1-5f44c3166f-2b82f41bf4.zip/node_modules/d3-dispatch/src/dispatch.js","../../../../.yarn/cache/d3-timer-npm-3.0.1-45083f465d-004128602b.zip/node_modules/d3-timer/src/timer.js","../../../../.yarn/cache/d3-force-npm-3.0.0-462e87e63b-85945f8d44.zip/node_modules/d3-force/src/lcg.js","../../../../.yarn/cache/d3-force-npm-3.0.0-462e87e63b-85945f8d44.zip/node_modules/d3-force/src/simulation.js","../../../../.yarn/cache/d3-force-npm-3.0.0-462e87e63b-85945f8d44.zip/node_modules/d3-force/src/manyBody.js","../../../../.yarn/cache/d3-force-npm-3.0.0-462e87e63b-85945f8d44.zip/node_modules/d3-force/src/x.js","../../../../.yarn/cache/d3-force-npm-3.0.0-462e87e63b-85945f8d44.zip/node_modules/d3-force/src/y.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/forceGraph.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/cluster.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/tree.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/tree.js","../../../../.yarn/cache/d3-dsv-npm-3.0.1-5d88fb8a85-a628ac42a2.zip/node_modules/d3-dsv/src/dsv.js","../../../../.yarn/cache/d3-dsv-npm-3.0.1-5d88fb8a85-a628ac42a2.zip/node_modules/d3-dsv/src/autoType.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/fetch.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/fold.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/filter.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/sort.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/pick.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/rename.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/utils/fields.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/sortBy.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/inline.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/custom.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/map.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/utils/d3-cloud/index.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/utils/flow.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/wordCloud.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/join.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/slice.js","../../../../.yarn/cache/pdfast-npm-0.2.0-47afcbf756-497f57283b.zip/node_modules/pdfast/src/helper.js","../../../../.yarn/cache/pdfast-npm-0.2.0-47afcbf756-497f57283b.zip/node_modules/pdfast/src/index.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/kde.js","../../../../.yarn/cache/fmin-npm-0.0.2-8396d465c7-7bbbd9564b.zip/node_modules/fmin/src/bisect.js","../../../../.yarn/cache/fmin-npm-0.0.2-8396d465c7-7bbbd9564b.zip/node_modules/fmin/src/blas1.js","../../../../.yarn/cache/fmin-npm-0.0.2-8396d465c7-7bbbd9564b.zip/node_modules/fmin/src/nelderMead.js","../../../../.yarn/cache/fmin-npm-0.0.2-8396d465c7-7bbbd9564b.zip/node_modules/fmin/src/linesearch.js","../../../../.yarn/cache/fmin-npm-0.0.2-8396d465c7-7bbbd9564b.zip/node_modules/fmin/src/conjugateGradient.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/utils/venn/circleintersection.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/utils/venn/layout.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/utils/venn/diagram.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/venn.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/data/log.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/wordCloud.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/gauge.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/density.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/heatmap.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/mark/liquid.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/palette/category10.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/palette/category20.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/band.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/linear.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/ordinal.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/identity.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/point.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/time.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/log.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/pow.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/threshold.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/quantile.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/quantize.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/sqrt.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/sequential.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/scale/constant.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/theme/create.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/theme/light.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/theme/classic.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/theme/dark.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/theme/classicDark.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/theme/academy.js","../../../../.yarn/cache/d3-format-npm-3.1.0-dfc19924ca-a0fe23d257.zip/node_modules/d3-format/src/formatDecimal.js","../../../../.yarn/cache/d3-format-npm-3.1.0-dfc19924ca-a0fe23d257.zip/node_modules/d3-format/src/exponent.js","../../../../.yarn/cache/d3-format-npm-3.1.0-dfc19924ca-a0fe23d257.zip/node_modules/d3-format/src/formatGroup.js","../../../../.yarn/cache/d3-format-npm-3.1.0-dfc19924ca-a0fe23d257.zip/node_modules/d3-format/src/formatNumerals.js","../../../../.yarn/cache/d3-format-npm-3.1.0-dfc19924ca-a0fe23d257.zip/node_modules/d3-format/src/formatSpecifier.js","../../../../.yarn/cache/d3-format-npm-3.1.0-dfc19924ca-a0fe23d257.zip/node_modules/d3-format/src/formatTrim.js","../../../../.yarn/cache/d3-format-npm-3.1.0-dfc19924ca-a0fe23d257.zip/node_modules/d3-format/src/formatPrefixAuto.js","../../../../.yarn/cache/d3-format-npm-3.1.0-dfc19924ca-a0fe23d257.zip/node_modules/d3-format/src/formatRounded.js","../../../../.yarn/cache/d3-format-npm-3.1.0-dfc19924ca-a0fe23d257.zip/node_modules/d3-format/src/formatTypes.js","../../../../.yarn/cache/d3-format-npm-3.1.0-dfc19924ca-a0fe23d257.zip/node_modules/d3-format/src/identity.js","../../../../.yarn/cache/d3-format-npm-3.1.0-dfc19924ca-a0fe23d257.zip/node_modules/d3-format/src/locale.js","../../../../.yarn/cache/d3-format-npm-3.1.0-dfc19924ca-a0fe23d257.zip/node_modules/d3-format/src/defaultLocale.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/utils.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/axis.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/axisX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/axisY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/axisRadar.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/legendCategory.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/legendContinuous.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/legendContinuousBlock.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/legendContinuousSize.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/legendContinuousBlockSize.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/title.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/scale.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/slider.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/sliderX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/sliderY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/scrollbar.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/scrollbarX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/scrollbarY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/legends.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/scaleInX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/scaleOutX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/scaleInY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/scaleOutY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/fadeIn.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/fadeOut.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/utils.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/morphing.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/waveIn.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/zoomIn.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/zoomOut.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/pathIn.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/growInX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/animation/growInY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/runtime/constant.js","../../../../.yarn/cache/@antv-g-plugin-canvas-path-generator-npm-1.3.21-ad4f4646a1-18533cabee.zip/node_modules/@antv/g-plugin-canvas-path-generator/dist/index.esm.js","../../../../.yarn/cache/@antv-g-plugin-canvas-picker-npm-1.10.23-260c310f0b-2e30b23ef3.zip/node_modules/@antv/g-plugin-canvas-picker/dist/index.esm.js","../../../../.yarn/cache/@antv-g-plugin-canvas-renderer-npm-1.9.23-fc424e8308-52b47272ed.zip/node_modules/@antv/g-plugin-canvas-renderer/dist/index.esm.js","../../../../.yarn/cache/@antv-g-plugin-dom-interaction-npm-1.9.21-17cae66203-fc1fffef9b.zip/node_modules/@antv/g-plugin-dom-interaction/dist/index.esm.js","../../../../.yarn/cache/@antv-g-plugin-html-renderer-npm-1.9.24-520415e683-f1ae6f55a8.zip/node_modules/@antv/g-plugin-html-renderer/dist/index.esm.js","../../../../.yarn/cache/@antv-g-plugin-image-loader-npm-1.3.21-0505f0614e-eb42c24051.zip/node_modules/@antv/g-plugin-image-loader/dist/index.esm.js","../../../../.yarn/cache/@antv-g-canvas-npm-1.11.26-a4a88f5022-8ec75ee8b1.zip/node_modules/@antv/g-canvas/dist/index.esm.js","../../../../.yarn/cache/@antv-g-plugin-dragndrop-npm-1.8.21-33a4756267-6b28f2cdad.zip/node_modules/@antv/g-plugin-dragndrop/dist/index.esm.js","../../../../.yarn/cache/@antv-event-emitter-npm-0.1.3-4621f02e77-c0c6d67ea6.zip/node_modules/@antv/event-emitter/esm/index.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/event.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/component/constant.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/utils/compose.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/utils/isMatrix.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/utils/extend.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/utils/adjustAngle.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/translate.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/cartesian.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/custom.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/matrix.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/polar.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/transpose.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/scale.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/reflect.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/rotate.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/helix.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/parallel.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/shear.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/fisheye.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/cartesian3D.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/translate3D.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/transpose3D.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/transforms/scale3D.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/coordinate.js","../../../../.yarn/cache/@antv-coord-npm-0.4.7-a69313f9e5-13d9de5dd2.zip/node_modules/@antv/coord/esm/coordinate3D.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/composition/utils.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/composition/spaceLayer.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/composition/spaceFlex.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/composition/view.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/composition/mark.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/container.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/composition/facetRect.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/composition/repeatMatrix.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/composition/facetCircle.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/composition/timingKeyframe.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/composition/geoPath.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/math.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/noop.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/stream.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/cartesian.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/compose.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/rotation.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/circle.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/clip/buffer.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/pointEqual.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/clip/rejoin.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/polygonContains.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/clip/index.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/clip/antimeridian.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/clip/circle.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/clip/line.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/clip/rectangle.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/graticule.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/identity.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/path/area.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/path/bounds.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/path/centroid.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/path/context.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/path/measure.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/path/string.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/path/index.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/transform.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/fit.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/resample.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/index.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/conic.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/cylindricalEqualArea.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/conicEqualArea.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/albers.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/albersUsa.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/azimuthal.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/mercator.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/conicConformal.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/equirectangular.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/conicEquidistant.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/equalEarth.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/gnomonic.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/identity.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/naturalEarth1.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/orthographic.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/stereographic.js","../../../../.yarn/cache/d3-geo-npm-3.1.0-0fe5a4b730-d214c2951c.zip/node_modules/d3-geo/src/projection/transverseMercator.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/composition/geoView.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/event.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/lib/builtinlib.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/runtime/library.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/runtime/coordinate.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/colors.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/categorical/category10.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/categorical/Accent.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/categorical/Dark2.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/categorical/Paired.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/categorical/Set1.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/categorical/Set2.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/categorical/Set3.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","../../../../.yarn/cache/d3-color-npm-3.1.0-fc73fe3b15-536ba05bfd.zip/node_modules/d3-color/src/define.js","../../../../.yarn/cache/d3-color-npm-3.1.0-fc73fe3b15-536ba05bfd.zip/node_modules/d3-color/src/color.js","../../../../.yarn/cache/d3-color-npm-3.1.0-fc73fe3b15-536ba05bfd.zip/node_modules/d3-color/src/math.js","../../../../.yarn/cache/d3-color-npm-3.1.0-fc73fe3b15-536ba05bfd.zip/node_modules/d3-color/src/cubehelix.js","../../../../.yarn/cache/d3-interpolate-npm-3.0.1-77ddca7977-988d66497e.zip/node_modules/d3-interpolate/src/basis.js","../../../../.yarn/cache/d3-interpolate-npm-3.0.1-77ddca7977-988d66497e.zip/node_modules/d3-interpolate/src/constant.js","../../../../.yarn/cache/d3-interpolate-npm-3.0.1-77ddca7977-988d66497e.zip/node_modules/d3-interpolate/src/color.js","../../../../.yarn/cache/d3-interpolate-npm-3.0.1-77ddca7977-988d66497e.zip/node_modules/d3-interpolate/src/rgb.js","../../../../.yarn/cache/d3-interpolate-npm-3.0.1-77ddca7977-988d66497e.zip/node_modules/d3-interpolate/src/cubehelix.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/ramp.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/diverging/BrBG.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/diverging/PRGn.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/diverging/PiYG.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/diverging/PuOr.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/diverging/RdBu.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/diverging/RdGy.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/diverging/Spectral.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","../../../../.yarn/cache/d3-scale-chromatic-npm-3.0.0-ca3b48a3cb-e4d23a7d2b.zip/node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/runtime/scale.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/runtime/types/scale.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/runtime/component.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/runtime/layout.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/runtime/transform.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/runtime/mark.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/runtime/plot.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/runtime/render.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/style.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/utils.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/elementHighlight.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/elementHighlightByX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/elementHighlightByColor.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/elementSelect.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/elementSelectByX.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/elementSelectByColor.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/chartIndex.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/fisheye.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/tooltip.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/legendFilter.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/legendHighlight.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/brushHighlight.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/brushXHighlight.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/brushYHighlight.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/brushAxisHighlight.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/brushFilter.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/brushXFilter.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/brushYFilter.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/sliderFilter.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/scrollbarFilter.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/poptip.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/interaction/treemapDrillDown.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/bounds.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/label-transform/overlapHide.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/label-transform/overlapDodgeY.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/color.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/label-transform/contrastReverse.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/label-transform/overflowHide.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/lib/core.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/lib/geo.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/lib/graph.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/lib/plot.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/lib/std.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/api/extend.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/api/library.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/utils/size.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/api/node.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/api/utils.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/api/define.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/api/props.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/api/composition.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/api/mark.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/api/runtime.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/exports.js","../../../../.yarn/cache/@antv-g2-npm-5.1.15-d846143677-1a6c9a1a0d.zip/node_modules/@antv/g2/esm/index.js","../../../../.yarn/__virtual__/@ant-design-charts-util-virtual-4c50362436/0/cache/@ant-design-charts-util-npm-0.0.1-alpha.5-0ef3c44822-b4331cc94c.zip/node_modules/@ant-design/charts-util/es/react/render.js","../../../../.yarn/__virtual__/@ant-design-charts-util-virtual-4c50362436/0/cache/@ant-design-charts-util-npm-0.0.1-alpha.5-0ef3c44822-b4331cc94c.zip/node_modules/@ant-design/charts-util/es/rc/create-node.js","../../../../.yarn/__virtual__/@ant-design-charts-util-virtual-4c50362436/0/cache/@ant-design-charts-util-npm-0.0.1-alpha.5-0ef3c44822-b4331cc94c.zip/node_modules/@ant-design/charts-util/es/rc/chart-loading.js","../../../../.yarn/__virtual__/@ant-design-charts-util-virtual-4c50362436/0/cache/@ant-design-charts-util-npm-0.0.1-alpha.5-0ef3c44822-b4331cc94c.zip/node_modules/@ant-design/charts-util/es/rc/error-boundary.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/util/is-valid-element.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/hooks/useChart.js","../../../../.yarn/cache/@antv-g2-extension-plot-npm-0.1.1-89404f6fdc-27947d9d29.zip/node_modules/@antv/g2-extension-plot/esm/utils/hierarchy/partition.js","../../../../.yarn/cache/@antv-g2-extension-plot-npm-0.1.1-89404f6fdc-27947d9d29.zip/node_modules/@antv/g2-extension-plot/esm/mark/sunburst.js","../../../../.yarn/cache/@antv-g2-extension-plot-npm-0.1.1-89404f6fdc-27947d9d29.zip/node_modules/@antv/g2-extension-plot/esm/interaction/drillDown.js","../../../../.yarn/cache/@antv-g2-extension-plot-npm-0.1.1-89404f6fdc-27947d9d29.zip/node_modules/@antv/g2-extension-plot/esm/lib.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/base/chart.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/utils/transform.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/utils/delete-excess-keys.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/utils/filter-transformed.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/utils/merge-with-array-coverage.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/constants/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/annotation/shapes/Text.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/annotation/shapes/Polygon.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/annotation/core.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/annotation/conversion-tag.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/bidirectional-bar/constants.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/annotation/bidirectional-bar-axis-text.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/annotation/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/base/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/base/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/adaptor/shape-stack.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/adaptor/mark.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/adaptor/coordinate-layout.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/area/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/area/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/bar/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/bar/shape.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/bar/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/column/shape.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/column/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/dual-axes/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/dual-axes/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/funnel/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/funnel/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/line/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/line/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/pie/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/pie/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/scatter/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/scatter/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/radar/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/radar/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/stock/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/stock/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/tiny-line/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/tiny-line/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/tiny-area/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/tiny-area/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/tiny-column/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/tiny-column/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/tiny-progress/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/tiny-progress/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/tiny-ring/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/tiny-ring/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/rose/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/rose/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/waterfall/constants.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/waterfall/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/waterfall/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/histogram/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/histogram/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/heatmap/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/heatmap/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/box/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/box/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/sankey/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/sankey/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/bullet/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/bullet/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/gauge/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/gauge/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/liquid/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/liquid/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/wordCloud/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/wordCloud/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/treemap/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/treemap/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/radial-bar/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/radial-bar/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/circlePacking/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/circlePacking/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/violin/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/violin/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/bidirectional-bar/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/bidirectional-bar/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/venn/type.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/venn/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/venn/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/sunburst/adaptor.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/plots/sunburst/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/core/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/components/base/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/components/area/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/components/bar/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/components/column/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/components/line/index.js","../../../../.yarn/__virtual__/@ant-design-plots-virtual-bcf936d1cb/0/cache/@ant-design-plots-npm-2.1.12-3ccef785ee-1c16734b79.zip/node_modules/@ant-design/plots/es/components/pie/index.js"],"sourcesContent":["/**\n * Default coordinate transformation for all charts.\n */\nexport const Cartesian = () => [['cartesian']];\nCartesian.props = {};\n//# sourceMappingURL=cartesian.js.map","export function toRadian(degree) {\n return (degree * Math.PI) / 180;\n}\nexport function toDegree(radian) {\n return (radian * 180) / Math.PI;\n}\n// convert the angle to the range of 0 to 4*Math.PI\nexport function convertAngles(startAngle, endAngle) {\n startAngle = startAngle % (2 * Math.PI);\n endAngle = endAngle % (2 * Math.PI);\n if (startAngle < 0) {\n startAngle = 2 * Math.PI + startAngle;\n }\n if (endAngle < 0) {\n endAngle = 2 * Math.PI + endAngle;\n }\n if (startAngle >= endAngle) {\n endAngle = endAngle + 2 * Math.PI;\n }\n return {\n startAngle,\n endAngle,\n };\n}\n//# sourceMappingURL=angle.js.map","import { convertAngles } from '../utils/angle';\nexport const getPolarOptions = (options = {}) => {\n const defaultOptions = {\n startAngle: -Math.PI / 2,\n endAngle: (Math.PI * 3) / 2,\n innerRadius: 0,\n outerRadius: 1,\n };\n const polarOption = Object.assign(Object.assign({}, defaultOptions), options);\n return Object.assign(Object.assign({}, polarOption), convertAngles(polarOption.startAngle, polarOption.endAngle));\n};\n/**\n * Polar transformation for circular charts using center of canvas as origin.\n * @todo Adjust size of canvas by startAngle and endAngle to make chart as big as possible.\n */\nexport const Polar = (options) => {\n const { startAngle, endAngle, innerRadius, outerRadius } = getPolarOptions(options);\n return [\n ['translate', 0, 0.5],\n ['reflect.y'],\n ['translate', 0, -0.5],\n ['polar', startAngle, endAngle, innerRadius, outerRadius],\n ];\n};\nPolar.props = {};\n//# sourceMappingURL=polar.js.map","/**\n * Transpose transformation for transposing chart according to center of canvas.\n */\nexport const Transpose = () => [\n ['transpose'],\n ['translate', 0.5, 0.5],\n ['reflect.x'],\n ['translate', -0.5, -0.5],\n];\nTranspose.props = { transform: true };\n//# sourceMappingURL=transpose.js.map","import { Polar } from './polar';\nimport { Transpose } from './transpose';\nexport const getThetaOptions = (options = {}) => {\n const defaultOptions = {\n startAngle: -Math.PI / 2,\n endAngle: (Math.PI * 3) / 2,\n innerRadius: 0,\n outerRadius: 1,\n };\n return Object.assign(Object.assign({}, defaultOptions), options);\n};\n/**\n * Theta = Transpose + Polar.\n */\nexport const Theta = (options) => {\n const { startAngle, endAngle, innerRadius, outerRadius } = getThetaOptions(options);\n return [\n ...Transpose(),\n ...Polar({ startAngle, endAngle, innerRadius, outerRadius }),\n ];\n};\nTheta.props = {};\n//# sourceMappingURL=theta.js.map","import { Polar } from './polar';\nexport const getRadialOptions = (options = {}) => {\n const defaultOptions = {\n startAngle: -Math.PI / 2,\n endAngle: (Math.PI * 3) / 2,\n innerRadius: 0,\n outerRadius: 1,\n };\n return Object.assign(Object.assign({}, defaultOptions), options);\n};\n/**\n * Radial\n */\nexport const Radial = (options) => {\n const { startAngle, endAngle, innerRadius, outerRadius } = getRadialOptions(options);\n return [\n ['transpose'],\n ['translate', 0.5, 0.5],\n ['reflect'],\n ['translate', -0.5, -0.5],\n ...Polar({ startAngle, endAngle, innerRadius, outerRadius }),\n ];\n};\nRadial.props = {};\n//# sourceMappingURL=radial.js.map","/**\n * Parallel coordinate transformations for parallel coordinate.\n */\nexport const Parallel = () => [['parallel', 0, 1, 0, 1]];\nParallel.props = {};\n//# sourceMappingURL=parallel.js.map","/**\n * Fisheye\n */\nexport const Fisheye = ({ focusX = 0, focusY = 0, distortionX = 2, distortionY = 2, visual = false, }) => [['fisheye', focusX, focusY, distortionX, distortionY, visual]];\nFisheye.props = { transform: true };\n//# sourceMappingURL=fisheye.js.map","import { Polar } from './polar';\nimport { Parallel } from './parallel';\n/**\n * Radar = Parallel + Polar.\n */\nexport const Radar = (options) => {\n const { startAngle = -Math.PI / 2, endAngle = (Math.PI * 3) / 2, innerRadius = 0, outerRadius = 1, } = options;\n return [\n ...Parallel(),\n ...Polar({ startAngle, endAngle, innerRadius, outerRadius }),\n ];\n};\nRadar.props = {};\n//# sourceMappingURL=radar.js.map","/**\n * Extract a column of data filled with the specified constant.\n */\nexport const Constant = ({ value }) => {\n return (data) => data.map(() => value);\n};\nConstant.props = {};\n//# sourceMappingURL=constant.js.map","/**\n * Extract a column of data with specified map function from data.\n * Each datum in the array is not visual data by default.\n * Specifying identity scale for related channel explicitly will treat them as visual data.\n */\nexport const Transform = ({ value }) => {\n return (data) => data.map(value);\n};\nTransform.props = {};\n//# sourceMappingURL=transform.js.map","/**\n * Extract a column of data with specified field.\n */\nexport const Field = ({ value }) => {\n return (data) => data.map((d) => d[value]);\n};\nField.props = {};\n//# sourceMappingURL=field.js.map","/**\n * Extract a column of data specified in encoding.\n */\nexport const Column = ({ value }) => {\n return () => value;\n};\nColumn.props = {};\n//# sourceMappingURL=column.js.map","var isArrayLike = function (value) {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\nexport default isArrayLike;\n//# sourceMappingURL=is-array-like.js.map","import isArrayLike from './is-array-like';\nvar filter = function (arr, func) {\n if (!isArrayLike(arr)) {\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n if (func(value, index)) {\n result.push(value);\n }\n }\n return result;\n};\nexport default filter;\n//# sourceMappingURL=filter.js.map","/**\n * @see https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_isfunction\n */\nexport default (function (value) {\n return typeof value === 'function';\n});\n//# sourceMappingURL=is-function.js.map","// isFinite,\nvar isNil = function (value) {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\nexport default isNil;\n//# sourceMappingURL=is-nil.js.map","var toString = {}.toString;\nvar isType = function (value, type) { return toString.call(value) === '[object ' + type + ']'; };\nexport default isType;\n//# sourceMappingURL=is-type.js.map","import isType from './is-type';\nexport default (function (value) {\n return Array.isArray ? Array.isArray(value) : isType(value, 'Array');\n});\n//# sourceMappingURL=is-array.js.map","export default (function (value) {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n var type = typeof value;\n return (value !== null && type === 'object') || type === 'function';\n});\n//# sourceMappingURL=is-object.js.map","import isArray from './is-array';\nimport isObject from './is-object';\nfunction each(elements, func) {\n if (!elements) {\n return;\n }\n var rst;\n if (isArray(elements)) {\n for (var i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n }\n else if (isObject(elements)) {\n for (var k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\nexport default each;\n//# sourceMappingURL=each.js.map","import each from './each';\nimport isFunction from './is-function';\nvar keys = Object.keys\n ? function (obj) { return Object.keys(obj); }\n : function (obj) {\n var result = [];\n each(obj, function (value, key) {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n };\nexport default keys;\n//# sourceMappingURL=keys.js.map","import isNil from './is-nil';\nimport keys from './keys';\nfunction isMatch(obj, attrs) {\n var _keys = keys(attrs);\n var length = _keys.length;\n if (isNil(obj))\n return !length;\n for (var i = 0; i < length; i += 1) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) {\n return false;\n }\n }\n return true;\n}\nexport default isMatch;\n//# sourceMappingURL=is-match.js.map","var isObjectLike = function (value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\nexport default isObjectLike;\n//# sourceMappingURL=is-object-like.js.map","import isObjectLike from './is-object-like';\nimport isType from './is-type';\nvar isPlainObject = function (value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!isObjectLike(value) || !isType(value, 'Object')) {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n var proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\nexport default isPlainObject;\n//# sourceMappingURL=is-plain-object.js.map","import isFunction from './is-function';\nimport isMatch from './is-match';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nfunction find(arr, predicate) {\n if (!isArray(arr))\n return null;\n var _predicate;\n if (isFunction(predicate)) {\n _predicate = predicate;\n }\n if (isPlainObject(predicate)) {\n _predicate = function (a) { return isMatch(a, predicate); };\n }\n if (_predicate) {\n for (var i = 0; i < arr.length; i += 1) {\n if (_predicate(arr[i])) {\n return arr[i];\n }\n }\n }\n return null;\n}\nexport default find;\n//# sourceMappingURL=find.js.map","import isArray from './is-array';\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the maximum value.\n * @example\n *\n * max([1, 2]);\n * // => 2\n *\n * max([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * max(data);\n * // => 1250010\n * // Math.max(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (function (arr) {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.max(prev, curr);\n }, arr[0]);\n});\n//# sourceMappingURL=max.js.map","import isArray from './is-array';\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the minimum value.\n * @example\n *\n * min([1, 2]);\n * // => 1\n *\n * min([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * min(data);\n * // => 1250010\n * // Math.min(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (function (arr) {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.min(prev, curr);\n }, arr[0]);\n});\n//# sourceMappingURL=min.js.map","import each from './each';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nvar reduce = function (arr, fn, init) {\n if (!isArray(arr) && !isPlainObject(arr)) {\n return arr;\n }\n var result = init;\n each(arr, function (data, i) {\n result = fn(result, data, i);\n });\n return result;\n};\nexport default reduce;\n//# sourceMappingURL=reduce.js.map","import isType from './is-type';\nexport default (function (str) {\n return isType(str, 'String');\n});\n//# sourceMappingURL=is-string.js.map","import isArrayLike from './is-array-like';\nexport default function last(o) {\n if (isArrayLike(o)) {\n var arr = o;\n return arr[arr.length - 1];\n }\n return undefined;\n}\n//# sourceMappingURL=last.js.map","var clamp = function (a, min, max) {\n if (a < min) {\n return min;\n }\n else if (a > max) {\n return max;\n }\n return a;\n};\nexport default clamp;\n//# sourceMappingURL=clamp.js.map","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\nvar isNumber = function (value) {\n return isType(value, 'Number');\n};\nexport default isNumber;\n//# sourceMappingURL=is-number.js.map","var PRECISION = 0.00001; // numbers less than this is considered as 0\nexport default function isNumberEqual(a, b, precision) {\n if (precision === void 0) { precision = PRECISION; }\n return Math.abs(a - b) < precision;\n}\n//# sourceMappingURL=is-number-equal.js.map","import isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nexport default (function (arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n var maxItem;\n var max = -Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = isFunction(fn) ? fn(item) : item[fn];\n if (v > max) {\n maxItem = item;\n max = v;\n }\n }\n return maxItem;\n});\n//# sourceMappingURL=max-by.js.map","import isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nexport default (function (arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n var minItem;\n var min = Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = isFunction(fn) ? fn(item) : item[fn];\n if (v < min) {\n minItem = item;\n min = v;\n }\n }\n return minItem;\n});\n//# sourceMappingURL=min-by.js.map","var mod = function (n, m) {\n return ((n % m) + m) % m;\n};\nexport default mod;\n//# sourceMappingURL=mod.js.map","import isNil from './is-nil';\nexport default (function (value) {\n if (isNil(value))\n return '';\n return value.toString();\n});\n//# sourceMappingURL=to-string.js.map","import toString from './to-string';\nvar lowerFirst = function (value) {\n var str = toString(value);\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\nexport default lowerFirst;\n//# sourceMappingURL=lower-first.js.map","function substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n return o[name] === undefined ? '' : o[name];\n });\n}\nexport default substitute;\n//# sourceMappingURL=substitute.js.map","import toString from './to-string';\nvar upperFirst = function (value) {\n var str = toString(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\nexport default upperFirst;\n//# sourceMappingURL=upper-first.js.map","/**\n * 是否是布尔类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\nvar isBoolean = function (value) {\n return isType(value, 'Boolean');\n};\nexport default isBoolean;\n//# sourceMappingURL=is-boolean.js.map","var isUndefined = function (value) {\n return value === undefined;\n};\nexport default isUndefined;\n//# sourceMappingURL=is-undefined.js.map","// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist, obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n dist[key] = obj[key];\n }\n }\n}\nexport default function mix(dist, src1, src2, src3) {\n if (src1)\n _mix(dist, src1);\n if (src2)\n _mix(dist, src2);\n if (src3)\n _mix(dist, src3);\n return dist;\n}\n//# sourceMappingURL=mix.js.map","import isArray from './is-array';\nvar clone = function (obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n var rst;\n if (isArray(obj)) {\n rst = [];\n for (var i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n }\n else {\n rst[i] = obj[i];\n }\n }\n }\n else {\n rst = {};\n for (var k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n }\n else {\n rst[k] = obj[k];\n }\n }\n }\n return rst;\n};\nexport default clone;\n//# sourceMappingURL=clone.js.map","function debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this, args = arguments;\n var later = function () {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\nexport default debounce;\n//# sourceMappingURL=debounce.js.map","import isFunction from './is-function';\nfunction flru(max) {\n var num, curr, prev;\n var limit = max || 1;\n function keep(key, value) {\n if (++num > limit) {\n prev = curr;\n reset(1);\n ++num;\n }\n curr[key] = value;\n }\n function reset(isPartial) {\n num = 0;\n curr = Object.create(null);\n isPartial || (prev = Object.create(null));\n }\n reset();\n return {\n clear: reset,\n has: function (key) {\n return curr[key] !== void 0 || prev[key] !== void 0;\n },\n get: function (key) {\n var val = curr[key];\n if (val !== void 0)\n return val;\n if ((val = prev[key]) !== void 0) {\n keep(key, val);\n return val;\n }\n },\n set: function (key, value) {\n if (curr[key] !== void 0) {\n curr[key] = value;\n }\n else {\n keep(key, value);\n }\n },\n };\n}\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n * @param maxSize lru maxSize\n */\nexport default (function (f, resolver, maxSize) {\n if (maxSize === void 0) { maxSize = 128; }\n if (!isFunction(f)) {\n throw new TypeError('Expected a function');\n }\n var memoized = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n var key = resolver ? resolver.apply(this, args) : args[0];\n var cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result;\n };\n memoized.cache = flru(maxSize);\n return memoized;\n});\n//# sourceMappingURL=memoize.js.map","import isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nvar MAX_MIX_LEVEL = 5;\nfunction hasOwn(object, property) {\n if (Object.hasOwn) {\n return Object.hasOwn(object, property);\n }\n if (object == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n return Object.prototype.hasOwnProperty.call(Object(object), property);\n}\nfunction _deepMix(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n for (var key in src) {\n if (hasOwn(src, key)) {\n var value = src[key];\n if (value !== null && isPlainObject(value)) {\n if (!isPlainObject(dist[key])) {\n dist[key] = {};\n }\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n }\n else {\n dist[key] = src[key];\n }\n }\n else if (isArray(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n }\n else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n}\n// todo 重写\nvar deepMix = function (rst) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n return rst;\n};\nexport default deepMix;\n//# sourceMappingURL=deep-mix.js.map","import isObjectLike from './is-object-like';\nimport isArrayLike from './is-array-like';\nimport isString from './is-string';\nvar isEqual = function (value, other) {\n if (value === other) {\n return true;\n }\n if (!value || !other) {\n return false;\n }\n if (isString(value) || isString(other)) {\n return false;\n }\n if (isArrayLike(value) || isArrayLike(other)) {\n if (value.length !== other.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n if (isObjectLike(value) || isObjectLike(other)) {\n var valueKeys = Object.keys(value);\n var otherKeys = Object.keys(other);\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n return false;\n};\nexport default isEqual;\n//# sourceMappingURL=is-equal.js.map","import isString from './is-string';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\nexport default (function (obj, key, defaultValue) {\n var p = 0;\n var keyArr = isString(key) ? key.split('.') : key;\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n return obj === undefined || p < keyArr.length ? defaultValue : obj;\n});\n//# sourceMappingURL=get.js.map","import isObject from './is-object';\nimport isString from './is-string';\nimport isNumber from './is-number';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param path\n * @param value\n */\nexport default (function (obj, path, value) {\n var o = obj;\n var keyArr = isString(path) ? path.split('.') : path;\n keyArr.forEach(function (key, idx) {\n // 不是最后一个\n if (idx < keyArr.length - 1) {\n if (!isObject(o[key])) {\n o[key] = isNumber(keyArr[idx + 1]) ? [] : {};\n }\n o = o[key];\n }\n else {\n o[key] = value;\n }\n });\n return obj;\n});\n//# sourceMappingURL=set.js.map","import each from './each';\nimport isPlainObject from './is-plain-object';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport default (function (object, keys) {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n var result = {};\n each(keys, function (key) {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n});\n//# sourceMappingURL=pick.js.map","import reduce from './reduce';\nexport default (function (obj, keys) {\n return reduce(obj, function (r, curr, key) {\n if (!keys.includes(key)) {\n r[key] = curr;\n }\n return r;\n }, {});\n});\n//# sourceMappingURL=omit.js.map","export default (function (func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options)\n options = {};\n var later = function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout)\n context = args = null;\n };\n var throttled = function () {\n var now = Date.now();\n if (!previous && options.leading === false)\n previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout)\n context = args = null;\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n return throttled;\n});\n//# sourceMappingURL=throttle.js.map","export default (function () { });\n//# sourceMappingURL=noop.js.map","import isNil from './is-nil';\nimport isArraylike from './is-array-like';\nexport default function size(o) {\n if (isNil(o)) {\n return 0;\n }\n if (isArraylike(o)) {\n return o.length;\n }\n return Object.keys(o).length;\n}\n//# sourceMappingURL=size.js.map","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\nimport * as mat3 from \"./mat3.js\";\nimport * as vec3 from \"./vec3.js\";\nimport * as vec4 from \"./vec4.js\";\n/**\n * Quaternion\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n out[3] = 1;\n return out;\n}\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\n\nexport function setAxisAngle(out, axis, rad) {\n rad = rad * 0.5;\n var s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n/**\n * Gets the rotation axis and angle for a given\n * quaternion. If a quaternion is created with\n * setAxisAngle, this method will return the same\n * values as providied in the original parameter list\n * OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n * angle -90 is the same as the quaternion formed by\n * [0, 0, 1] and 270. This method favors the latter.\n * @param {vec3} out_axis Vector receiving the axis of rotation\n * @param {ReadonlyQuat} q Quaternion to be decomposed\n * @return {Number} Angle, in radians, of the rotation\n */\n\nexport function getAxisAngle(out_axis, q) {\n var rad = Math.acos(q[3]) * 2.0;\n var s = Math.sin(rad / 2.0);\n\n if (s > glMatrix.EPSILON) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n\n return rad;\n}\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param {ReadonlyQuat} a Origin unit quaternion\n * @param {ReadonlyQuat} b Destination unit quaternion\n * @return {Number} Angle, in radians, between the two quaternions\n */\n\nexport function getAngle(a, b) {\n var dotproduct = dot(a, b);\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\n\nexport function multiply(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateX(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateY(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var by = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateZ(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bz = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\n\nexport function calculateW(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function exp(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var et = Math.exp(w);\n var s = r > 0 ? et * Math.sin(r) / r : 0;\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n return out;\n}\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function ln(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var t = r > 0 ? Math.atan2(r, w) / r : 0;\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n return out;\n}\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\n\nexport function pow(out, a, b) {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport function slerp(out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n } // calculate coefficients\n\n\n if (1.0 - cosom > glMatrix.EPSILON) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n } // calculate final values\n\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n}\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function random(out) {\n // Implementation of http://planning.cs.uiuc.edu/node198.html\n // TODO: Calling random 3 times is probably not the fastest solution\n var u1 = glMatrix.RANDOM();\n var u2 = glMatrix.RANDOM();\n var u3 = glMatrix.RANDOM();\n var sqrt1MinusU1 = Math.sqrt(1 - u1);\n var sqrtU1 = Math.sqrt(u1);\n out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n return out;\n}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\n\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\n\nexport function fromMat3(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8];\n var fRoot;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n var i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n var j = (i + 1) % 3;\n var k = (i + 2) % 3;\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\n\nexport function fromEuler(out, x, y, z) {\n var halfToRad = 0.5 * Math.PI / 180.0;\n x *= halfToRad;\n y *= halfToRad;\n z *= halfToRad;\n var sx = Math.sin(x);\n var cx = Math.cos(x);\n var sy = Math.sin(y);\n var cy = Math.cos(y);\n var sz = Math.sin(z);\n var cz = Math.cos(z);\n out[0] = sx * cy * cz - cx * sy * sz;\n out[1] = cx * sy * cz + sx * cy * sz;\n out[2] = cx * cy * sz - sx * sy * cz;\n out[3] = cx * cy * cz + sx * sy * sz;\n return out;\n}\n/**\n * Returns a string representation of a quatenion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var clone = vec4.clone;\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var fromValues = vec4.fromValues;\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\n\nexport var copy = vec4.copy;\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\n\nexport var set = vec4.set;\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\n\nexport var add = vec4.add;\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\n\nexport var scale = vec4.scale;\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nexport var dot = vec4.dot;\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\n\nexport var lerp = vec4.lerp;\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport var length = vec4.length;\n/**\n * Alias for {@link quat.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nexport var squaredLength = vec4.squaredLength;\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\n\nexport var normalize = vec4.normalize;\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var exactEquals = vec4.exactEquals;\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat} a The first vector.\n * @param {ReadonlyQuat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var equals = vec4.equals;\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\n\nexport var rotationTo = function () {\n var tmpvec3 = vec3.create();\n var xUnitVec3 = vec3.fromValues(1, 0, 0);\n var yUnitVec3 = vec3.fromValues(0, 1, 0);\n return function (out, a, b) {\n var dot = vec3.dot(a, b);\n\n if (dot < -0.999999) {\n vec3.cross(tmpvec3, xUnitVec3, a);\n if (vec3.len(tmpvec3) < 0.000001) vec3.cross(tmpvec3, yUnitVec3, a);\n vec3.normalize(tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n } else {\n vec3.cross(tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n }\n };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport var sqlerp = function () {\n var temp1 = create();\n var temp2 = create();\n return function (out, a, b, c, d, t) {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n return out;\n };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up the vector representing the local \"up\" direction\n * @returns {quat} out\n */\n\nexport var setAxes = function () {\n var matr = mat3.create();\n return function (out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n return normalize(out, fromMat3(out, matr));\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport 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;\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 }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\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 function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export var paramsParser = {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n x: 0,\n y: 0,\n qx: null,\n qy: null,\n};\n//# sourceMappingURL=params-parser.js.map","export function fixArc(pathArray, allPathCommands, i) {\n if (pathArray[i].length > 7) {\n pathArray[i].shift();\n var pi = pathArray[i];\n // const ni = i + 1;\n var ni = i;\n while (pi.length) {\n // if created multiple C:s, their original seg is saved\n allPathCommands[i] = 'A';\n // @ts-ignore\n pathArray.splice((ni += 1), 0, ['C'].concat(pi.splice(0, 6)));\n }\n pathArray.splice(i, 1);\n }\n}\n//# sourceMappingURL=fix-arc.js.map","export var paramsCount = {\n a: 7,\n c: 6,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n z: 0,\n};\n//# sourceMappingURL=params-count.js.map","import { paramsCount } from '../parser/params-count';\n/**\n * Iterates an array to check if it's an actual `PathArray`.\n */\nexport function isPathArray(path) {\n return (Array.isArray(path) &&\n path.every(function (seg) {\n var lk = seg[0].toLowerCase();\n return paramsCount[lk] === seg.length - 1 && 'achlmqstvz'.includes(lk);\n }));\n}\n//# sourceMappingURL=is-path-array.js.map","import { isPathArray } from './is-path-array';\n/**\n * Iterates an array to check if it's a `PathArray`\n * with all absolute values.\n */\nexport function isAbsoluteArray(path) {\n return (isPathArray(path) &&\n // @ts-ignore -- `isPathArray` also checks if it's `Array`\n path.every(function (_a) {\n var x = _a[0];\n return x === x.toUpperCase();\n }));\n}\n//# sourceMappingURL=is-absolute-array.js.map","import { isAbsoluteArray } from './is-absolute-array';\n/**\n * Iterates an array to check if it's a `PathArray`\n * with all segments are in non-shorthand notation\n * with absolute values.\n */\nexport function isNormalizedArray(path) {\n return isAbsoluteArray(path) && path.every(function (_a) {\n var pc = _a[0];\n return 'ACLMQZ'.includes(pc);\n });\n}\n//# sourceMappingURL=is-normalized-array.js.map","import { paramsCount } from './params-count';\n/**\n * Breaks the parsing of a pathString once a segment is finalized.\n */\nexport function finalizeSegment(path) {\n var pathCommand = path.pathValue[path.segmentStart];\n var LK = pathCommand.toLowerCase();\n var data = path.data;\n while (data.length >= paramsCount[LK]) {\n // overloaded `moveTo`\n // https://github.com/rveciana/svg-path-properties/blob/master/src/parse.ts\n if (LK === 'm' && data.length > 2) {\n // @ts-ignore\n path.segments.push([pathCommand].concat(data.splice(0, 2)));\n LK = 'l';\n pathCommand = pathCommand === 'm' ? 'l' : 'L';\n }\n else {\n // @ts-ignore\n path.segments.push([pathCommand].concat(data.splice(0, paramsCount[LK])));\n }\n if (!paramsCount[LK]) {\n break;\n }\n }\n}\n//# sourceMappingURL=finalize-segment.js.map","/**\n * Validates an A (arc-to) specific path command value.\n * Usually a `large-arc-flag` or `sweep-flag`.\n */\nexport function scanFlag(path) {\n var index = path.index, pathValue = path.pathValue;\n var code = pathValue.charCodeAt(index);\n if (code === 0x30 /* 0 */) {\n path.param = 0;\n path.index += 1;\n return;\n }\n if (code === 0x31 /* 1 */) {\n path.param = 1;\n path.index += 1;\n return;\n }\n path.err = \"[path-util]: invalid Arc flag \\\"\" + pathValue[index] + \"\\\", expecting 0 or 1 at index \" + index;\n}\n//# sourceMappingURL=scan-flag.js.map","/**\n * Checks if the character is or belongs to a number.\n * [0-9]|+|-|.\n */\nexport function isDigitStart(code) {\n return ((code >= 48 && code <= 57) /* 0..9 */ || code === 0x2b /* + */ || code === 0x2d /* - */ || code === 0x2e); /* . */\n}\nexport function isDigit(code) {\n return code >= 48 && code <= 57; // 0..9\n}\n//# sourceMappingURL=is-digit-start.js.map","import { isDigit } from './is-digit-start';\n/**\n * Validates every character of the path string,\n * every path command, negative numbers or floating point numbers.\n */\nexport function scanParam(path) {\n var max = path.max, pathValue = path.pathValue, start = path.index;\n var index = start;\n var zeroFirst = false;\n var hasCeiling = false;\n var hasDecimal = false;\n var hasDot = false;\n var ch;\n if (index >= max) {\n // path.err = 'SvgPath: missed param (at pos ' + index + ')';\n path.err = \"[path-util]: Invalid path value at index \" + index + \", \\\"pathValue\\\" is missing param\";\n return;\n }\n ch = pathValue.charCodeAt(index);\n if (ch === 0x2b /* + */ || ch === 0x2d /* - */) {\n index += 1;\n // ch = (index < max) ? pathValue.charCodeAt(index) : 0;\n ch = pathValue.charCodeAt(index);\n }\n // This logic is shamelessly borrowed from Esprima\n // https://github.com/ariya/esprimas\n if (!isDigit(ch) && ch !== 0x2e /* . */) {\n // path.err = 'SvgPath: param should start with 0..9 or `.` (at pos ' + index + ')';\n path.err = \"[path-util]: Invalid path value at index \" + index + \", \\\"\" + pathValue[index] + \"\\\" is not a number\";\n return;\n }\n if (ch !== 0x2e /* . */) {\n zeroFirst = ch === 0x30 /* 0 */;\n index += 1;\n ch = pathValue.charCodeAt(index);\n if (zeroFirst && index < max) {\n // decimal number starts with '0' such as '09' is illegal.\n if (ch && isDigit(ch)) {\n // path.err = 'SvgPath: numbers started with `0` such as `09`\n // are illegal (at pos ' + start + ')';\n path.err = \"[path-util]: Invalid path value at index \" + start + \", \\\"\" + pathValue[start] + \"\\\" illegal number\";\n return;\n }\n }\n while (index < max && isDigit(pathValue.charCodeAt(index))) {\n index += 1;\n hasCeiling = true;\n }\n ch = pathValue.charCodeAt(index);\n }\n if (ch === 0x2e /* . */) {\n hasDot = true;\n index += 1;\n while (isDigit(pathValue.charCodeAt(index))) {\n index += 1;\n hasDecimal = true;\n }\n ch = pathValue.charCodeAt(index);\n }\n if (ch === 0x65 /* e */ || ch === 0x45 /* E */) {\n if (hasDot && !hasCeiling && !hasDecimal) {\n path.err = \"[path-util]: Invalid path value at index \" + index + \", \\\"\" + pathValue[index] + \"\\\" invalid float exponent\";\n return;\n }\n index += 1;\n ch = pathValue.charCodeAt(index);\n if (ch === 0x2b /* + */ || ch === 0x2d /* - */) {\n index += 1;\n }\n if (index < max && isDigit(pathValue.charCodeAt(index))) {\n while (index < max && isDigit(pathValue.charCodeAt(index))) {\n index += 1;\n }\n }\n else {\n path.err = \"[path-util]: Invalid path value at index \" + index + \", \\\"\" + pathValue[index] + \"\\\" invalid integer exponent\";\n return;\n }\n }\n path.index = index;\n path.param = +path.pathValue.slice(start, index);\n}\n//# sourceMappingURL=scan-param.js.map","/**\n * Checks if the character is a space.\n */\nexport function isSpace(ch) {\n var specialSpaces = [\n 0x1680, 0x180e, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200a, 0x202f,\n 0x205f, 0x3000, 0xfeff,\n ];\n /* istanbul ignore next */\n return (ch === 0x0a ||\n ch === 0x0d ||\n ch === 0x2028 ||\n ch === 0x2029 || // Line terminators\n // White spaces\n ch === 0x20 ||\n ch === 0x09 ||\n ch === 0x0b ||\n ch === 0x0c ||\n ch === 0xa0 ||\n (ch >= 0x1680 && specialSpaces.includes(ch)));\n}\n//# sourceMappingURL=is-space.js.map","import { isSpace } from './is-space';\n/**\n * Points the parser to the next character in the\n * path string every time it encounters any kind of\n * space character.\n */\nexport function skipSpaces(path) {\n var pathValue = path.pathValue, max = path.max;\n while (path.index < max && isSpace(pathValue.charCodeAt(path.index))) {\n path.index += 1;\n }\n}\n//# sourceMappingURL=skip-spaces.js.map","/**\n * Checks if the character is a path command.\n */\nexport function isPathCommand(code) {\n // eslint-disable-next-line no-bitwise -- Impossible to satisfy\n switch (code | 0x20) {\n case 0x6d /* m */:\n case 0x7a /* z */:\n case 0x6c /* l */:\n case 0x68 /* h */:\n case 0x76 /* v */:\n case 0x63 /* c */:\n case 0x73 /* s */:\n case 0x71 /* q */:\n case 0x74 /* t */:\n case 0x61 /* a */:\n // case 0x72/* r */:\n return true;\n default:\n return false;\n }\n}\n//# sourceMappingURL=is-path-command.js.map","/**\n * Checks if the character is an A (arc-to) path command.\n */\nexport function isArcCommand(code) {\n return (code | 0x20) === 0x61;\n}\n//# sourceMappingURL=is-arc-command.js.map","import { finalizeSegment } from './finalize-segment';\nimport { paramsCount } from './params-count';\nimport { scanFlag } from './scan-flag';\nimport { scanParam } from './scan-param';\nimport { skipSpaces } from './skip-spaces';\nimport { isPathCommand } from './is-path-command';\nimport { isDigitStart } from './is-digit-start';\nimport { isArcCommand } from './is-arc-command';\n/**\n * Scans every character in the path string to determine\n * where a segment starts and where it ends.\n */\nexport function scanSegment(path) {\n var max = path.max, pathValue = path.pathValue, index = path.index;\n var cmdCode = pathValue.charCodeAt(index);\n var reqParams = paramsCount[pathValue[index].toLowerCase()];\n path.segmentStart = index;\n if (!isPathCommand(cmdCode)) {\n path.err = \"[path-util]: Invalid path value \\\"\" + pathValue[index] + \"\\\" is not a path command\";\n return;\n }\n path.index += 1;\n skipSpaces(path);\n path.data = [];\n if (!reqParams) {\n // Z\n finalizeSegment(path);\n return;\n }\n for (;;) {\n for (var i = reqParams; i > 0; i -= 1) {\n if (isArcCommand(cmdCode) && (i === 3 || i === 4))\n scanFlag(path);\n else\n scanParam(path);\n if (path.err.length) {\n return;\n }\n path.data.push(path.param);\n skipSpaces(path);\n // after ',' param is mandatory\n if (path.index < max && pathValue.charCodeAt(path.index) === 0x2c /* , */) {\n path.index += 1;\n skipSpaces(path);\n }\n }\n if (path.index >= path.max) {\n break;\n }\n // Stop on next segment\n if (!isDigitStart(pathValue.charCodeAt(path.index))) {\n break;\n }\n }\n finalizeSegment(path);\n}\n//# sourceMappingURL=scan-segment.js.map","/**\n * The `PathParser` is used by the `parsePathString` static method\n * to generate a `pathArray`.\n */\nvar PathParser = /** @class */ (function () {\n function PathParser(pathString) {\n this.pathValue = pathString;\n // @ts-ignore\n this.segments = [];\n this.max = pathString.length;\n this.index = 0;\n this.param = 0.0;\n this.segmentStart = 0;\n this.data = [];\n this.err = '';\n }\n return PathParser;\n}());\nexport { PathParser };\n//# sourceMappingURL=path-parser.js.map","import { isPathArray } from '../util/is-path-array';\nimport { scanSegment } from './scan-segment';\nimport { skipSpaces } from './skip-spaces';\nimport { PathParser } from './path-parser';\n/**\n * Parses a path string value and returns an array\n * of segments we like to call `pathArray`.\n */\nexport function parsePathString(pathInput) {\n if (isPathArray(pathInput)) {\n return [].concat(pathInput);\n }\n var path = new PathParser(pathInput);\n skipSpaces(path);\n while (path.index < path.max && !path.err.length) {\n scanSegment(path);\n }\n return path.err ? path.err : path.segments;\n}\n//# sourceMappingURL=parse-path-string.js.map","import { isAbsoluteArray } from '../util/is-absolute-array';\nimport { parsePathString } from '../parser/parse-path-string';\nexport function path2Absolute(pathInput) {\n if (isAbsoluteArray(pathInput)) {\n return [].concat(pathInput);\n }\n var path = parsePathString(pathInput);\n // if (!path || !path.length) {\n // return [['M', 0, 0]];\n // }\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n // @ts-ignore\n return path.map(function (segment) {\n var values = segment.slice(1).map(Number);\n var pathCommand = segment[0];\n var absCommand = pathCommand.toUpperCase();\n if (pathCommand === 'M') {\n x = values[0], y = values[1];\n mx = x;\n my = y;\n return ['M', x, y];\n }\n var absoluteSegment;\n if (pathCommand !== absCommand) {\n switch (absCommand) {\n case 'A':\n absoluteSegment = [\n absCommand,\n values[0],\n values[1],\n values[2],\n values[3],\n values[4],\n values[5] + x,\n values[6] + y,\n ];\n break;\n case 'V':\n absoluteSegment = [absCommand, values[0] + y];\n break;\n case 'H':\n absoluteSegment = [absCommand, values[0] + x];\n break;\n default: {\n // use brakets for `eslint: no-case-declaration`\n // https://stackoverflow.com/a/50753272/803358\n var absValues = values.map(function (n, j) { return n + (j % 2 ? y : x); });\n // for n, l, c, s, q, t\n // @ts-ignore\n absoluteSegment = [absCommand].concat(absValues);\n }\n }\n }\n else {\n // @ts-ignore\n absoluteSegment = [absCommand].concat(values);\n }\n var segLength = absoluteSegment.length;\n switch (absCommand) {\n case 'Z':\n x = mx;\n y = my;\n break;\n case 'H':\n x = absoluteSegment[1];\n break;\n case 'V':\n y = absoluteSegment[1];\n break;\n default:\n x = absoluteSegment[segLength - 2];\n y = absoluteSegment[segLength - 1];\n if (absCommand === 'M') {\n mx = x;\n my = y;\n }\n }\n return absoluteSegment;\n });\n}\n//# sourceMappingURL=path-2-absolute.js.map","/**\n * Normalizes a single segment of a `PathArray` object.\n * eg. H/V -> L, T -> Q\n */\nexport function normalizeSegment(segment, params) {\n var pathCommand = segment[0];\n var px1 = params.x1, py1 = params.y1, px2 = params.x2, py2 = params.y2;\n var values = segment.slice(1).map(Number);\n var result = segment;\n if (!'TQ'.includes(pathCommand)) {\n // optional but good to be cautious\n params.qx = null;\n params.qy = null;\n }\n if (pathCommand === 'H') {\n result = ['L', segment[1], py1];\n }\n else if (pathCommand === 'V') {\n result = ['L', px1, segment[1]];\n }\n else if (pathCommand === 'S') {\n var x1 = px1 * 2 - px2;\n var y1 = py1 * 2 - py2;\n params.x1 = x1;\n params.y1 = y1;\n result = ['C', x1, y1].concat(values);\n }\n else if (pathCommand === 'T') {\n var qx = px1 * 2 - params.qx;\n var qy = py1 * 2 - params.qy;\n params.qx = qx;\n params.qy = qy;\n result = ['Q', qx, qy].concat(values);\n }\n else if (pathCommand === 'Q') {\n var nqx = values[0], nqy = values[1];\n params.qx = nqx;\n params.qy = nqy;\n }\n return result;\n}\n//# sourceMappingURL=normalize-segment.js.map","import { __assign } from \"tslib\";\nimport { isNormalizedArray } from '../util/is-normalized-array';\nimport { paramsParser } from '../parser/params-parser';\nimport { path2Absolute } from '../convert/path-2-absolute';\nimport { normalizeSegment } from './normalize-segment';\n/**\n * @example\n * const path = 'M0 0 H50';\n * const normalizedPath = SVGPathCommander.normalizePath(path);\n * // result => [['M', 0, 0], ['L', 50, 0]]\n */\nexport function normalizePath(pathInput) {\n if (isNormalizedArray(pathInput)) {\n return [].concat(pathInput);\n }\n var path = path2Absolute(pathInput);\n var params = __assign({}, paramsParser);\n for (var i = 0; i < path.length; i += 1) {\n // Save current path command\n path[i] = normalizeSegment(path[i], params);\n var segment = path[i];\n var seglen = segment.length;\n params.x1 = +segment[seglen - 2];\n params.y1 = +segment[seglen - 1];\n params.x2 = +segment[seglen - 4] || params.x1;\n params.y2 = +segment[seglen - 3] || params.y1;\n }\n return path;\n}\n//# sourceMappingURL=normalize-path.js.map","import { isNormalizedArray } from './is-normalized-array';\n/**\n * Iterates an array to check if it's a `PathArray`\n * with all C (cubic bezier) segments.\n *\n * @param {string | PathArray} path the `Array` to be checked\n * @returns {boolean} iteration result\n */\nexport function isCurveArray(path) {\n return isNormalizedArray(path) && path.every(function (_a) {\n var pc = _a[0];\n return 'MC'.includes(pc);\n });\n}\n//# sourceMappingURL=is-curve-array.js.map","export function rotateVector(x, y, rad) {\n var X = x * Math.cos(rad) - y * Math.sin(rad);\n var Y = x * Math.sin(rad) + y * Math.cos(rad);\n return { x: X, y: Y };\n}\n//# sourceMappingURL=rotate-vector.js.map","import { rotateVector } from '../util/rotate-vector';\n/**\n * Converts A (arc-to) segments to C (cubic-bezier-to).\n *\n * For more information of where this math came from visit:\n * http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n */\nexport function arcToCubic(X1, Y1, RX, RY, angle, LAF, SF, X2, Y2, recursive) {\n var x1 = X1;\n var y1 = Y1;\n var rx = RX;\n var ry = RY;\n var x2 = X2;\n var y2 = Y2;\n // for more information of where this Math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n var d120 = (Math.PI * 120) / 180;\n var rad = (Math.PI / 180) * (+angle || 0);\n /** @type {number[]} */\n var res = [];\n var xy;\n var f1;\n var f2;\n var cx;\n var cy;\n if (!recursive) {\n xy = rotateVector(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotateVector(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n var x = (x1 - x2) / 2;\n var y = (y1 - y2) / 2;\n var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx *= h;\n ry *= h;\n }\n var rx2 = rx * rx;\n var ry2 = ry * ry;\n var k = (LAF === SF ? -1 : 1) *\n Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n cx = (k * rx * y) / ry + (x1 + x2) / 2;\n cy = (k * -ry * x) / rx + (y1 + y2) / 2;\n // eslint-disable-next-line no-bitwise -- Impossible to satisfy no-bitwise\n f1 = Math.asin(((((y1 - cy) / ry) * Math.pow(10, 9)) >> 0) / Math.pow(10, 9));\n // eslint-disable-next-line no-bitwise -- Impossible to satisfy no-bitwise\n f2 = Math.asin(((((y2 - cy) / ry) * Math.pow(10, 9)) >> 0) / Math.pow(10, 9));\n f1 = x1 < cx ? Math.PI - f1 : f1;\n f2 = x2 < cx ? Math.PI - f2 : f2;\n if (f1 < 0)\n f1 = Math.PI * 2 + f1;\n if (f2 < 0)\n f2 = Math.PI * 2 + f2;\n if (SF && f1 > f2) {\n f1 -= Math.PI * 2;\n }\n if (!SF && f2 > f1) {\n f2 -= Math.PI * 2;\n }\n }\n else {\n f1 = recursive[0], f2 = recursive[1], cx = recursive[2], cy = recursive[3];\n }\n var df = f2 - f1;\n if (Math.abs(df) > d120) {\n var f2old = f2;\n var x2old = x2;\n var y2old = y2;\n f2 = f1 + d120 * (SF && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2);\n y2 = cy + ry * Math.sin(f2);\n res = arcToCubic(x2, y2, rx, ry, angle, 0, SF, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n var c1 = Math.cos(f1);\n var s1 = Math.sin(f1);\n var c2 = Math.cos(f2);\n var s2 = Math.sin(f2);\n var t = Math.tan(df / 4);\n var hx = (4 / 3) * rx * t;\n var hy = (4 / 3) * ry * t;\n var m1 = [x1, y1];\n var m2 = [x1 + hx * s1, y1 - hy * c1];\n var m3 = [x2 + hx * s2, y2 - hy * c2];\n var m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return m2.concat(m3, m4, res);\n // return [...m2, ...m3, ...m4, ...res];\n }\n res = m2.concat(m3, m4, res);\n // res = [...m2, ...m3, ...m4, ...res];\n var newres = [];\n for (var i = 0, ii = res.length; i < ii; i += 1) {\n newres[i] = i % 2 ? rotateVector(res[i - 1], res[i], rad).y : rotateVector(res[i], res[i + 1], rad).x;\n }\n return newres;\n}\n// const TAU = Math.PI * 2;\n// const mapToEllipse = (\n// { x, y }: { x: number; y: number },\n// rx: number,\n// ry: number,\n// cosphi: number,\n// sinphi: number,\n// centerx: number,\n// centery: number,\n// ) => {\n// x *= rx;\n// y *= ry;\n// const xp = cosphi * x - sinphi * y;\n// const yp = sinphi * x + cosphi * y;\n// return {\n// x: xp + centerx,\n// y: yp + centery,\n// };\n// };\n// const approxUnitArc = (ang1: number, ang2: number) => {\n// // If 90 degree circular arc, use a constant\n// // as derived from http://spencermortensen.com/articles/bezier-circle\n// const a =\n// ang2 === 1.5707963267948966\n// ? 0.551915024494\n// : ang2 === -1.5707963267948966\n// ? -0.551915024494\n// : (4 / 3) * Math.tan(ang2 / 4);\n// const x1 = Math.cos(ang1);\n// const y1 = Math.sin(ang1);\n// const x2 = Math.cos(ang1 + ang2);\n// const y2 = Math.sin(ang1 + ang2);\n// return [\n// {\n// x: x1 - y1 * a,\n// y: y1 + x1 * a,\n// },\n// {\n// x: x2 + y2 * a,\n// y: y2 - x2 * a,\n// },\n// {\n// x: x2,\n// y: y2,\n// },\n// ];\n// };\n// const vectorAngle = (ux: number, uy: number, vx: number, vy: number) => {\n// const sign = ux * vy - uy * vx < 0 ? -1 : 1;\n// let dot = ux * vx + uy * vy;\n// if (dot > 1) {\n// dot = 1;\n// }\n// if (dot < -1) {\n// dot = -1;\n// }\n// return sign * Math.acos(dot);\n// };\n// const getArcCenter = (\n// px: any,\n// py: any,\n// cx: any,\n// cy: any,\n// rx: number,\n// ry: number,\n// largeArcFlag: number,\n// sweepFlag: number,\n// sinphi: number,\n// cosphi: number,\n// pxp: number,\n// pyp: number,\n// ) => {\n// const rxsq = Math.pow(rx, 2);\n// const rysq = Math.pow(ry, 2);\n// const pxpsq = Math.pow(pxp, 2);\n// const pypsq = Math.pow(pyp, 2);\n// let radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n// if (radicant < 0) {\n// radicant = 0;\n// }\n// radicant /= rxsq * pypsq + rysq * pxpsq;\n// radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n// const centerxp = ((radicant * rx) / ry) * pyp;\n// const centeryp = ((radicant * -ry) / rx) * pxp;\n// const centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n// const centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n// const vx1 = (pxp - centerxp) / rx;\n// const vy1 = (pyp - centeryp) / ry;\n// const vx2 = (-pxp - centerxp) / rx;\n// const vy2 = (-pyp - centeryp) / ry;\n// const ang1 = vectorAngle(1, 0, vx1, vy1);\n// let ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n// if (sweepFlag === 0 && ang2 > 0) {\n// ang2 -= TAU;\n// }\n// if (sweepFlag === 1 && ang2 < 0) {\n// ang2 += TAU;\n// }\n// return [centerx, centery, ang1, ang2];\n// };\n// const arcToBezier = ({ px, py, cx, cy, rx, ry, xAxisRotation = 0, largeArcFlag = 0, sweepFlag = 0 }) => {\n// const curves = [];\n// if (rx === 0 || ry === 0) {\n// return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n// }\n// const sinphi = Math.sin((xAxisRotation * TAU) / 360);\n// const cosphi = Math.cos((xAxisRotation * TAU) / 360);\n// const pxp = (cosphi * (px - cx)) / 2 + (sinphi * (py - cy)) / 2;\n// const pyp = (-sinphi * (px - cx)) / 2 + (cosphi * (py - cy)) / 2;\n// if (pxp === 0 && pyp === 0) {\n// return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n// }\n// rx = Math.abs(rx);\n// ry = Math.abs(ry);\n// const lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n// if (lambda > 1) {\n// rx *= Math.sqrt(lambda);\n// ry *= Math.sqrt(lambda);\n// }\n// let [centerx, centery, ang1, ang2] = getArcCenter(\n// px,\n// py,\n// cx,\n// cy,\n// rx,\n// ry,\n// largeArcFlag,\n// sweepFlag,\n// sinphi,\n// cosphi,\n// pxp,\n// pyp,\n// );\n// // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n// // 1.0000000001. This causes `segments` to be greater than one, which is an\n// // unecessary split, and adds extra points to the bezier curve. To alleviate\n// // this issue, we round to 1.0 when the ratio is close to 1.0.\n// let ratio = Math.abs(ang2) / (TAU / 4);\n// if (Math.abs(1.0 - ratio) < 0.0000001) {\n// ratio = 1.0;\n// }\n// const segments = Math.max(Math.ceil(ratio), 1);\n// ang2 /= segments;\n// for (let i = 0; i < segments; i++) {\n// curves.push(approxUnitArc(ang1, ang2));\n// ang1 += ang2;\n// }\n// return curves.map((curve) => {\n// const { x: x1, y: y1 } = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery);\n// const { x: x2, y: y2 } = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery);\n// const { x, y } = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery);\n// return { x1, y1, x2, y2, x, y };\n// });\n// };\n// export function arcToCubic(\n// x1: number,\n// y1: number,\n// rx: number,\n// ry: number,\n// angle: number,\n// LAF: number,\n// SF: number,\n// x2: number,\n// y2: number,\n// ) {\n// const curves = arcToBezier({\n// px: x1,\n// py: y1,\n// cx: x2,\n// cy: y2,\n// rx,\n// ry,\n// xAxisRotation: angle,\n// largeArcFlag: LAF,\n// sweepFlag: SF,\n// });\n// return curves.reduce((prev, cur) => {\n// const { x1, y1, x2, y2, x, y } = cur;\n// prev.push(x1, y1, x2, y2, x, y);\n// return prev;\n// }, [] as number[]);\n// }\n//# sourceMappingURL=arc-2-cubic.js.map","export function quadToCubic(x1, y1, qx, qy, x2, y2) {\n var r13 = 1 / 3;\n var r23 = 2 / 3;\n return [\n r13 * x1 + r23 * qx,\n r13 * y1 + r23 * qy,\n r13 * x2 + r23 * qx,\n r13 * y2 + r23 * qy,\n x2,\n y2, // x,y\n ];\n}\n//# sourceMappingURL=quad-2-cubic.js.map","export function midPoint(a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var bx = b[0];\n var by = b[1];\n return [ax + (bx - ax) * t, ay + (by - ay) * t];\n}\n//# sourceMappingURL=mid-point.js.map","import { __spreadArray } from \"tslib\";\nimport { midPoint } from '../util/mid-point';\nexport var lineToCubic = function (x1, y1, x2, y2) {\n var t = 0.5;\n var mid = midPoint([x1, y1], [x2, y2], t);\n return __spreadArray(__spreadArray([], mid, true), [x2, y2, x2, y2], false);\n};\n//# sourceMappingURL=line-2-cubic.js.map","import { arcToCubic } from './arc-2-cubic';\nimport { quadToCubic } from './quad-2-cubic';\nimport { lineToCubic } from './line-2-cubic';\nexport function segmentToCubic(segment, params) {\n var pathCommand = segment[0];\n var values = segment.slice(1).map(Number);\n var x = values[0], y = values[1];\n var args;\n var px1 = params.x1, py1 = params.y1, px = params.x, py = params.y;\n if (!'TQ'.includes(pathCommand)) {\n params.qx = null;\n params.qy = null;\n }\n switch (pathCommand) {\n case 'M':\n params.x = x;\n params.y = y;\n return segment;\n case 'A':\n args = [px1, py1].concat(values);\n // @ts-ignore\n return ['C'].concat(arcToCubic(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]));\n case 'Q':\n params.qx = x;\n params.qy = y;\n args = [px1, py1].concat(values);\n // @ts-ignore\n return ['C'].concat(quadToCubic(args[0], args[1], args[2], args[3], args[4], args[5]));\n case 'L':\n // @ts-ignore\n return ['C'].concat(lineToCubic(px1, py1, x, y));\n case 'Z':\n // prevent NaN from divide 0\n if (px1 === px && py1 === py) {\n return ['C', px1, py1, px, py, px, py];\n }\n // @ts-ignore\n return ['C'].concat(lineToCubic(px1, py1, px, py));\n default:\n }\n return segment;\n}\n//# sourceMappingURL=segment-2-cubic.js.map","import { __assign } from \"tslib\";\nimport { paramsParser } from '../parser/params-parser';\nimport { fixArc } from '../process/fix-arc';\nimport { normalizePath } from '../process/normalize-path';\nimport { isCurveArray } from '../util/is-curve-array';\nimport { segmentToCubic } from '../process/segment-2-cubic';\n// import { fixPath } from '../process/fix-path';\nexport function path2Curve(pathInput, needZCommandIndexes) {\n if (needZCommandIndexes === void 0) { needZCommandIndexes = false; }\n if (isCurveArray(pathInput)) {\n var cloned = [].concat(pathInput);\n if (needZCommandIndexes) {\n return [cloned, []];\n }\n else {\n return cloned;\n }\n }\n // fixPath will remove 'Z' command\n // const path = fixPath(normalizePath(pathInput));\n var path = normalizePath(pathInput);\n var params = __assign({}, paramsParser);\n var allPathCommands = [];\n var pathCommand = '';\n var ii = path.length;\n var segment;\n var seglen;\n var zCommandIndexes = [];\n for (var i = 0; i < ii; i += 1) {\n if (path[i])\n pathCommand = path[i][0];\n allPathCommands[i] = pathCommand;\n var curveSegment = segmentToCubic(path[i], params);\n path[i] = curveSegment;\n fixArc(path, allPathCommands, i);\n ii = path.length; // solves curveArrays ending in Z\n // keep Z command account for lineJoin\n // @see https://github.com/antvis/util/issues/68\n if (pathCommand === 'Z') {\n zCommandIndexes.push(i);\n }\n segment = path[i];\n seglen = segment.length;\n params.x1 = +segment[seglen - 2];\n params.y1 = +segment[seglen - 1];\n params.x2 = +segment[seglen - 4] || params.x1;\n params.y2 = +segment[seglen - 3] || params.y1;\n }\n // validate\n if (needZCommandIndexes) {\n return [path, zCommandIndexes];\n }\n else {\n return path;\n }\n}\n//# sourceMappingURL=path-2-curve.js.map","export function clonePath(path) {\n return path.map(function (x) { return (Array.isArray(x) ? [].concat(x) : x); });\n}\n//# sourceMappingURL=clone-path.js.map","// reverse CURVE based pathArray segments only\nexport function reverseCurve(pathArray) {\n var rotatedCurve = pathArray\n .slice(1)\n .map(function (x, i, curveOnly) {\n // @ts-ignore\n return !i ? pathArray[0].slice(1).concat(x.slice(1)) : curveOnly[i - 1].slice(-2).concat(x.slice(1));\n })\n // @ts-ignore\n .map(function (x) { return x.map(function (y, i) { return x[x.length - i - 2 * (1 - (i % 2))]; }); })\n .reverse();\n return [['M'].concat(rotatedCurve[0].slice(0, 2))].concat(rotatedCurve.map(function (x) { return ['C'].concat(x.slice(2)); }));\n}\n//# sourceMappingURL=reverse-curve.js.map","export function distanceSquareRoot(a, b) {\n return Math.sqrt((a[0] - b[0]) * (a[0] - b[0]) + (a[1] - b[1]) * (a[1] - b[1]));\n}\n//# sourceMappingURL=distance-square-root.js.map","import { midPoint } from './mid-point';\nimport { distanceSquareRoot } from './distance-square-root';\n/**\n * Returns a {x,y} point at a given length, the total length and\n * the minimum and maximum {x,y} coordinates of a line (L,V,H,Z) segment.\n */\nexport function segmentLineFactory(x1, y1, x2, y2, distance) {\n var length = distanceSquareRoot([x1, y1], [x2, y2]);\n var point = { x: 0, y: 0 };\n if (typeof distance === 'number') {\n if (distance <= 0) {\n point = { x: x1, y: y1 };\n }\n else if (distance >= length) {\n point = { x: x2, y: y2 };\n }\n else {\n var _a = midPoint([x1, y1], [x2, y2], distance / length), x = _a[0], y = _a[1];\n point = { x: x, y: y };\n }\n }\n return {\n length: length,\n point: point,\n min: {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n },\n max: {\n x: Math.max(x1, x2),\n y: Math.max(y1, y2),\n },\n };\n}\n//# sourceMappingURL=segment-line-factory.js.map","import { segmentLineFactory } from './segment-line-factory';\nimport { distanceSquareRoot } from './distance-square-root';\nfunction angleBetween(v0, v1) {\n var v0x = v0.x, v0y = v0.y;\n var v1x = v1.x, v1y = v1.y;\n var p = v0x * v1x + v0y * v1y;\n var n = Math.sqrt((Math.pow(v0x, 2) + Math.pow(v0y, 2)) * (Math.pow(v1x, 2) + Math.pow(v1y, 2)));\n var sign = v0x * v1y - v0y * v1x < 0 ? -1 : 1;\n var angle = sign * Math.acos(p / n);\n return angle;\n}\n/**\n * Returns a {x,y} point at a given length, the total length and\n * the minimum and maximum {x,y} coordinates of a C (cubic-bezier) segment.\n * @see https://github.com/MadLittleMods/svg-curve-lib/blob/master/src/js/svg-curve-lib.js\n */\nfunction getPointAtArcSegmentLength(x1, y1, RX, RY, angle, LAF, SF, x, y, t) {\n var abs = Math.abs, sin = Math.sin, cos = Math.cos, sqrt = Math.sqrt, PI = Math.PI;\n var rx = abs(RX);\n var ry = abs(RY);\n var xRot = ((angle % 360) + 360) % 360;\n var xRotRad = xRot * (PI / 180);\n if (x1 === x && y1 === y) {\n return { x: x1, y: y1 };\n }\n if (rx === 0 || ry === 0) {\n return segmentLineFactory(x1, y1, x, y, t).point;\n }\n var dx = (x1 - x) / 2;\n var dy = (y1 - y) / 2;\n var transformedPoint = {\n x: cos(xRotRad) * dx + sin(xRotRad) * dy,\n y: -sin(xRotRad) * dx + cos(xRotRad) * dy,\n };\n var radiiCheck = Math.pow(transformedPoint.x, 2) / Math.pow(rx, 2) + Math.pow(transformedPoint.y, 2) / Math.pow(ry, 2);\n if (radiiCheck > 1) {\n rx *= sqrt(radiiCheck);\n ry *= sqrt(radiiCheck);\n }\n var cSquareNumerator = Math.pow(rx, 2) * Math.pow(ry, 2) - Math.pow(rx, 2) * Math.pow(transformedPoint.y, 2) - Math.pow(ry, 2) * Math.pow(transformedPoint.x, 2);\n var cSquareRootDenom = Math.pow(rx, 2) * Math.pow(transformedPoint.y, 2) + Math.pow(ry, 2) * Math.pow(transformedPoint.x, 2);\n var cRadicand = cSquareNumerator / cSquareRootDenom;\n cRadicand = cRadicand < 0 ? 0 : cRadicand;\n var cCoef = (LAF !== SF ? 1 : -1) * sqrt(cRadicand);\n var transformedCenter = {\n x: cCoef * ((rx * transformedPoint.y) / ry),\n y: cCoef * (-(ry * transformedPoint.x) / rx),\n };\n var center = {\n x: cos(xRotRad) * transformedCenter.x - sin(xRotRad) * transformedCenter.y + (x1 + x) / 2,\n y: sin(xRotRad) * transformedCenter.x + cos(xRotRad) * transformedCenter.y + (y1 + y) / 2,\n };\n var startVector = {\n x: (transformedPoint.x - transformedCenter.x) / rx,\n y: (transformedPoint.y - transformedCenter.y) / ry,\n };\n var startAngle = angleBetween({ x: 1, y: 0 }, startVector);\n var endVector = {\n x: (-transformedPoint.x - transformedCenter.x) / rx,\n y: (-transformedPoint.y - transformedCenter.y) / ry,\n };\n var sweepAngle = angleBetween(startVector, endVector);\n if (!SF && sweepAngle > 0) {\n sweepAngle -= 2 * PI;\n }\n else if (SF && sweepAngle < 0) {\n sweepAngle += 2 * PI;\n }\n sweepAngle %= 2 * PI;\n var alpha = startAngle + sweepAngle * t;\n var ellipseComponentX = rx * cos(alpha);\n var ellipseComponentY = ry * sin(alpha);\n var point = {\n x: cos(xRotRad) * ellipseComponentX - sin(xRotRad) * ellipseComponentY + center.x,\n y: sin(xRotRad) * ellipseComponentX + cos(xRotRad) * ellipseComponentY + center.y,\n };\n // to be used later\n // point.ellipticalArcStartAngle = startAngle;\n // point.ellipticalArcEndAngle = startAngle + sweepAngle;\n // point.ellipticalArcAngle = alpha;\n // point.ellipticalArcCenter = center;\n // point.resultantRx = rx;\n // point.resultantRy = ry;\n return point;\n}\n/**\n * Returns a {x,y} point at a given length, the total length and\n * the shape minimum and maximum {x,y} coordinates of an A (arc-to) segment.\n *\n * For better performance, it can skip calculate bbox or length in some scenario.\n */\nexport function segmentArcFactory(X1, Y1, RX, RY, angle, LAF, SF, X2, Y2, distance, options) {\n var _a;\n var _b = options.bbox, bbox = _b === void 0 ? true : _b, _c = options.length, length = _c === void 0 ? true : _c, _d = options.sampleSize, sampleSize = _d === void 0 ? 30 : _d;\n var distanceIsNumber = typeof distance === 'number';\n var x = X1;\n var y = Y1;\n var LENGTH = 0;\n var prev = [x, y, LENGTH];\n var cur = [x, y];\n var t = 0;\n var POINT = { x: 0, y: 0 };\n var POINTS = [{ x: x, y: y }];\n if (distanceIsNumber && distance <= 0) {\n POINT = { x: x, y: y };\n }\n // bad perf when size > 100\n for (var j = 0; j <= sampleSize; j += 1) {\n t = j / sampleSize;\n (_a = getPointAtArcSegmentLength(X1, Y1, RX, RY, angle, LAF, SF, X2, Y2, t), x = _a.x, y = _a.y);\n if (bbox) {\n POINTS.push({ x: x, y: y });\n }\n if (length) {\n LENGTH += distanceSquareRoot(cur, [x, y]);\n }\n cur = [x, y];\n if (distanceIsNumber && LENGTH >= distance && distance > prev[2]) {\n var dv = (LENGTH - distance) / (LENGTH - prev[2]);\n POINT = {\n x: cur[0] * (1 - dv) + prev[0] * dv,\n y: cur[1] * (1 - dv) + prev[1] * dv,\n };\n }\n prev = [x, y, LENGTH];\n }\n if (distanceIsNumber && distance >= LENGTH) {\n POINT = { x: X2, y: Y2 };\n }\n return {\n length: LENGTH,\n point: POINT,\n min: {\n x: Math.min.apply(null, POINTS.map(function (n) { return n.x; })),\n y: Math.min.apply(null, POINTS.map(function (n) { return n.y; })),\n },\n max: {\n x: Math.max.apply(null, POINTS.map(function (n) { return n.x; })),\n y: Math.max.apply(null, POINTS.map(function (n) { return n.y; })),\n },\n };\n}\n//# sourceMappingURL=segment-arc-factory.js.map","import { distanceSquareRoot } from './distance-square-root';\n/**\n * Returns a {x,y} point at a given length, the total length and\n * the minimum and maximum {x,y} coordinates of a C (cubic-bezier) segment.\n */\nfunction getPointAtCubicSegmentLength(x1, y1, c1x, c1y, c2x, c2y, x2, y2, t) {\n var t1 = 1 - t;\n return {\n x: Math.pow(t1, 3) * x1 + 3 * Math.pow(t1, 2) * t * c1x + 3 * t1 * Math.pow(t, 2) * c2x + Math.pow(t, 3) * x2,\n y: Math.pow(t1, 3) * y1 + 3 * Math.pow(t1, 2) * t * c1y + 3 * t1 * Math.pow(t, 2) * c2y + Math.pow(t, 3) * y2,\n };\n}\n/**\n * Returns the length of a C (cubic-bezier) segment\n * or an {x,y} point at a given length.\n */\nexport function segmentCubicFactory(x1, y1, c1x, c1y, c2x, c2y, x2, y2, distance, options) {\n var _a;\n var _b = options.bbox, bbox = _b === void 0 ? true : _b, _c = options.length, length = _c === void 0 ? true : _c, _d = options.sampleSize, sampleSize = _d === void 0 ? 10 : _d;\n var distanceIsNumber = typeof distance === 'number';\n var x = x1;\n var y = y1;\n var LENGTH = 0;\n var prev = [x, y, LENGTH];\n var cur = [x, y];\n var t = 0;\n var POINT = { x: 0, y: 0 };\n var POINTS = [{ x: x, y: y }];\n if (distanceIsNumber && distance <= 0) {\n POINT = { x: x, y: y };\n }\n // bad perf when size = 300\n for (var j = 0; j <= sampleSize; j += 1) {\n t = j / sampleSize;\n (_a = getPointAtCubicSegmentLength(x1, y1, c1x, c1y, c2x, c2y, x2, y2, t), x = _a.x, y = _a.y);\n if (bbox) {\n POINTS.push({ x: x, y: y });\n }\n if (length) {\n LENGTH += distanceSquareRoot(cur, [x, y]);\n }\n cur = [x, y];\n if (distanceIsNumber && LENGTH >= distance && distance > prev[2]) {\n var dv = (LENGTH - distance) / (LENGTH - prev[2]);\n POINT = {\n x: cur[0] * (1 - dv) + prev[0] * dv,\n y: cur[1] * (1 - dv) + prev[1] * dv,\n };\n }\n prev = [x, y, LENGTH];\n }\n if (distanceIsNumber && distance >= LENGTH) {\n POINT = { x: x2, y: y2 };\n }\n return {\n length: LENGTH,\n point: POINT,\n min: {\n x: Math.min.apply(null, POINTS.map(function (n) { return n.x; })),\n y: Math.min.apply(null, POINTS.map(function (n) { return n.y; })),\n },\n max: {\n x: Math.max.apply(null, POINTS.map(function (n) { return n.x; })),\n y: Math.max.apply(null, POINTS.map(function (n) { return n.y; })),\n },\n };\n}\n//# sourceMappingURL=segment-cubic-factory.js.map","import { distanceSquareRoot } from './distance-square-root';\n/**\n * Returns the {x,y} coordinates of a point at a\n * given length of a quadratic-bezier segment.\n *\n * @see https://github.com/substack/point-at-length\n */\nfunction getPointAtQuadSegmentLength(x1, y1, cx, cy, x2, y2, t) {\n var t1 = 1 - t;\n return {\n x: Math.pow(t1, 2) * x1 + 2 * t1 * t * cx + Math.pow(t, 2) * x2,\n y: Math.pow(t1, 2) * y1 + 2 * t1 * t * cy + Math.pow(t, 2) * y2,\n };\n}\n/**\n * Returns a {x,y} point at a given length, the total length and\n * the minimum and maximum {x,y} coordinates of a Q (quadratic-bezier) segment.\n */\nexport function segmentQuadFactory(x1, y1, qx, qy, x2, y2, distance, options) {\n var _a;\n var _b = options.bbox, bbox = _b === void 0 ? true : _b, _c = options.length, length = _c === void 0 ? true : _c, _d = options.sampleSize, sampleSize = _d === void 0 ? 10 : _d;\n var distanceIsNumber = typeof distance === 'number';\n var x = x1;\n var y = y1;\n var LENGTH = 0;\n var prev = [x, y, LENGTH];\n var cur = [x, y];\n var t = 0;\n var POINT = { x: 0, y: 0 };\n var POINTS = [{ x: x, y: y }];\n if (distanceIsNumber && distance <= 0) {\n POINT = { x: x, y: y };\n }\n for (var j = 0; j <= sampleSize; j += 1) {\n t = j / sampleSize;\n (_a = getPointAtQuadSegmentLength(x1, y1, qx, qy, x2, y2, t), x = _a.x, y = _a.y);\n if (bbox) {\n POINTS.push({ x: x, y: y });\n }\n if (length) {\n LENGTH += distanceSquareRoot(cur, [x, y]);\n }\n cur = [x, y];\n if (distanceIsNumber && LENGTH >= distance && distance > prev[2]) {\n var dv = (LENGTH - distance) / (LENGTH - prev[2]);\n POINT = {\n x: cur[0] * (1 - dv) + prev[0] * dv,\n y: cur[1] * (1 - dv) + prev[1] * dv,\n };\n }\n prev = [x, y, LENGTH];\n }\n /* istanbul ignore else */\n if (distanceIsNumber && distance >= LENGTH) {\n POINT = { x: x2, y: y2 };\n }\n return {\n length: LENGTH,\n point: POINT,\n min: {\n x: Math.min.apply(null, POINTS.map(function (n) { return n.x; })),\n y: Math.min.apply(null, POINTS.map(function (n) { return n.y; })),\n },\n max: {\n x: Math.max.apply(null, POINTS.map(function (n) { return n.x; })),\n y: Math.max.apply(null, POINTS.map(function (n) { return n.y; })),\n },\n };\n}\n//# sourceMappingURL=segment-quad-factory.js.map","import { normalizePath } from '../process/normalize-path';\nimport { segmentLineFactory } from './segment-line-factory';\nimport { segmentArcFactory } from './segment-arc-factory';\nimport { segmentCubicFactory } from './segment-cubic-factory';\nimport { segmentQuadFactory } from './segment-quad-factory';\n/**\n * Returns a {x,y} point at a given length\n * of a shape, the shape total length and\n * the shape minimum and maximum {x,y} coordinates.\n */\nexport function pathLengthFactory(pathInput, distance, options) {\n var _a, _b, _c, _d, _e, _f;\n var path = normalizePath(pathInput);\n var distanceIsNumber = typeof distance === 'number';\n var isM;\n var data = [];\n var pathCommand;\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var seg;\n var MIN = [];\n var MAX = [];\n var length = 0;\n var min = { x: 0, y: 0 };\n var max = min;\n var point = min;\n var POINT = min;\n var LENGTH = 0;\n for (var i = 0, ll = path.length; i < ll; i += 1) {\n seg = path[i];\n pathCommand = seg[0];\n isM = pathCommand === 'M';\n data = !isM ? [x, y].concat(seg.slice(1)) : data;\n // this segment is always ZERO\n /* istanbul ignore else */\n if (isM) {\n // remember mx, my for Z\n mx = seg[1], my = seg[2];\n min = { x: mx, y: my };\n max = min;\n length = 0;\n if (distanceIsNumber && distance < 0.001) {\n POINT = min;\n }\n }\n else if (pathCommand === 'L') {\n (_a = segmentLineFactory(data[0], data[1], data[2], data[3], (distance || 0) - LENGTH), length = _a.length, min = _a.min, max = _a.max, point = _a.point);\n }\n else if (pathCommand === 'A') {\n (_b = segmentArcFactory(data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], (distance || 0) - LENGTH, options || {}), length = _b.length, min = _b.min, max = _b.max, point = _b.point);\n }\n else if (pathCommand === 'C') {\n (_c = segmentCubicFactory(data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], (distance || 0) - LENGTH, options || {}), length = _c.length, min = _c.min, max = _c.max, point = _c.point);\n }\n else if (pathCommand === 'Q') {\n (_d = segmentQuadFactory(data[0], data[1], data[2], data[3], data[4], data[5], (distance || 0) - LENGTH, options || {}), length = _d.length, min = _d.min, max = _d.max, point = _d.point);\n }\n else if (pathCommand === 'Z') {\n data = [x, y, mx, my];\n (_e = segmentLineFactory(data[0], data[1], data[2], data[3], (distance || 0) - LENGTH), length = _e.length, min = _e.min, max = _e.max, point = _e.point);\n }\n if (distanceIsNumber && LENGTH < distance && LENGTH + length >= distance) {\n POINT = point;\n }\n MAX.push(max);\n MIN.push(min);\n LENGTH += length;\n _f = pathCommand !== 'Z' ? seg.slice(-2) : [mx, my], x = _f[0], y = _f[1];\n }\n // native `getPointAtLength` behavior when the given distance\n // is higher than total length\n if (distanceIsNumber && distance >= LENGTH) {\n POINT = { x: x, y: y };\n }\n return {\n length: LENGTH,\n point: POINT,\n min: {\n x: Math.min.apply(null, MIN.map(function (n) { return n.x; })),\n y: Math.min.apply(null, MIN.map(function (n) { return n.y; })),\n },\n max: {\n x: Math.max.apply(null, MAX.map(function (n) { return n.x; })),\n y: Math.max.apply(null, MAX.map(function (n) { return n.y; })),\n },\n };\n}\n//# sourceMappingURL=path-length-factory.js.map","import { __assign } from \"tslib\";\nimport { pathLengthFactory } from './path-length-factory';\n/**\n * Returns the shape total length, or the equivalent to `shape.getTotalLength()`.\n *\n * The `normalizePath` version is lighter, faster, more efficient and more accurate\n * with paths that are not `curveArray`.\n */\nexport function getTotalLength(pathInput, options) {\n return pathLengthFactory(pathInput, undefined, __assign(__assign({}, options), { bbox: false, length: true })).length;\n}\n//# sourceMappingURL=get-total-length.js.map","import { distanceSquareRoot } from './distance-square-root';\nfunction getRotations(a) {\n var segCount = a.length;\n var pointCount = segCount - 1;\n return a.map(function (f, idx) {\n return a.map(function (p, i) {\n var oldSegIdx = idx + i;\n var seg;\n if (i === 0 || (a[oldSegIdx] && a[oldSegIdx][0] === 'M')) {\n seg = a[oldSegIdx];\n return ['M'].concat(seg.slice(-2));\n }\n if (oldSegIdx >= segCount)\n oldSegIdx -= pointCount;\n return a[oldSegIdx];\n });\n });\n}\nexport function getRotatedCurve(a, b) {\n var segCount = a.length - 1;\n var lineLengths = [];\n var computedIndex = 0;\n var sumLensSqrd = 0;\n var rotations = getRotations(a);\n rotations.forEach(function (r, i) {\n a.slice(1).forEach(function (s, j) {\n // @ts-ignore\n sumLensSqrd += distanceSquareRoot(a[(i + j) % segCount].slice(-2), b[j % segCount].slice(-2));\n });\n lineLengths[i] = sumLensSqrd;\n sumLensSqrd = 0;\n });\n computedIndex = lineLengths.indexOf(Math.min.apply(null, lineLengths));\n return rotations[computedIndex];\n}\n//# sourceMappingURL=get-rotated-curve.js.map","import { path2Curve } from '../convert/path-2-curve';\n/**\n * Returns the area of a single cubic-bezier segment.\n *\n * http://objectmix.com/graphics/133553-area-closed-bezier-curve.html\n */\nfunction getCubicSegArea(x1, y1, c1x, c1y, c2x, c2y, x2, y2) {\n // https://stackoverflow.com/a/15845996\n return ((3 *\n ((y2 - y1) * (c1x + c2x) -\n (x2 - x1) * (c1y + c2y) +\n c1y * (x1 - c2x) -\n c1x * (y1 - c2y) +\n y2 * (c2x + x1 / 3) -\n x2 * (c2y + y1 / 3))) /\n 20);\n}\n/**\n * Returns the area of a shape.\n * @author Jürg Lehni & Jonathan Puckey\n *\n * @see https://github.com/paperjs/paper.js/blob/develop/src/path/Path.js\n */\nexport function getPathArea(path) {\n var x = 0;\n var y = 0;\n var len = 0;\n return path2Curve(path)\n .map(function (seg) {\n var _a;\n switch (seg[0]) {\n case 'M':\n x = seg[1], y = seg[2];\n return 0;\n default:\n // @ts-ignore\n var _b = seg.slice(1), c1x = _b[0], c1y = _b[1], c2x = _b[2], c2y = _b[3], x2 = _b[4], y2 = _b[5];\n len = getCubicSegArea(x, y, c1x, c1y, c2x, c2y, x2, y2);\n _a = seg.slice(-2), x = _a[0], y = _a[1];\n return len;\n }\n })\n .reduce(function (a, b) { return a + b; }, 0);\n}\n// export function getPathArea(pathArray: AbsoluteArray) {\n// let x = 0;\n// let y = 0;\n// let mx = 0;\n// let my = 0;\n// let len = 0;\n// return pathArray\n// .map((seg) => {\n// switch (seg[0]) {\n// case 'M':\n// case 'Z':\n// mx = seg[0] === 'M' ? seg[1] : mx;\n// my = seg[0] === 'M' ? seg[2] : my;\n// x = mx;\n// y = my;\n// return 0;\n// default:\n// // @ts-ignore\n// len = getCubicSegArea.apply(0, [x, y].concat(seg.slice(1)));\n// [x, y] = seg.slice(-2) as [number, number];\n// return len;\n// }\n// })\n// .reduce((a, b) => a + b, 0);\n// }\n//# sourceMappingURL=get-path-area.js.map","import { getPathArea } from './get-path-area';\nexport function getDrawDirection(pathArray) {\n return getPathArea(pathArray) >= 0;\n}\n//# sourceMappingURL=get-draw-direction.js.map","import { __assign } from \"tslib\";\nimport { pathLengthFactory } from './path-length-factory';\n/**\n * Returns [x,y] coordinates of a point at a given length of a shape.\n */\nexport function getPointAtLength(pathInput, distance, options) {\n return pathLengthFactory(pathInput, distance, __assign(__assign({}, options), { bbox: false, length: true })).point;\n}\n//# sourceMappingURL=get-point-at-length.js.map","import { midPoint } from './mid-point';\nimport { segmentCubicFactory } from './segment-cubic-factory';\nfunction splitCubic(pts, t) {\n if (t === void 0) { t = 0.5; }\n var p0 = pts.slice(0, 2);\n var p1 = pts.slice(2, 4);\n var p2 = pts.slice(4, 6);\n var p3 = pts.slice(6, 8);\n var p4 = midPoint(p0, p1, t);\n var p5 = midPoint(p1, p2, t);\n var p6 = midPoint(p2, p3, t);\n var p7 = midPoint(p4, p5, t);\n var p8 = midPoint(p5, p6, t);\n var p9 = midPoint(p7, p8, t);\n return [\n // @ts-ignore\n ['C'].concat(p4, p7, p9),\n // @ts-ignore\n ['C'].concat(p8, p6, p3),\n ];\n}\nfunction getCurveArray(segments) {\n return segments.map(function (segment, i, pathArray) {\n // @ts-ignore\n var segmentData = i && pathArray[i - 1].slice(-2).concat(segment.slice(1));\n // @ts-ignore\n var curveLength = i\n ? segmentCubicFactory(segmentData[0], segmentData[1], segmentData[2], segmentData[3], segmentData[4], segmentData[5], segmentData[6], segmentData[7], segmentData[8], { bbox: false }).length\n : 0;\n var subsegs;\n if (i) {\n // must be [segment,segment]\n subsegs = curveLength ? splitCubic(segmentData) : [segment, segment];\n }\n else {\n subsegs = [segment];\n }\n return {\n s: segment,\n ss: subsegs,\n l: curveLength,\n };\n });\n}\nexport function equalizeSegments(path1, path2, TL) {\n var c1 = getCurveArray(path1);\n var c2 = getCurveArray(path2);\n var L1 = c1.length;\n var L2 = c2.length;\n var l1 = c1.filter(function (x) { return x.l; }).length;\n var l2 = c2.filter(function (x) { return x.l; }).length;\n var m1 = c1.filter(function (x) { return x.l; }).reduce(function (a, _a) {\n var l = _a.l;\n return a + l;\n }, 0) / l1 || 0;\n var m2 = c2.filter(function (x) { return x.l; }).reduce(function (a, _a) {\n var l = _a.l;\n return a + l;\n }, 0) / l2 || 0;\n var tl = TL || Math.max(L1, L2);\n var mm = [m1, m2];\n var dif = [tl - L1, tl - L2];\n var canSplit = 0;\n var result = [c1, c2].map(function (x, i) {\n // @ts-ignore\n return x.l === tl\n ? x.map(function (y) { return y.s; })\n : x\n .map(function (y, j) {\n canSplit = j && dif[i] && y.l >= mm[i];\n dif[i] -= canSplit ? 1 : 0;\n return canSplit ? y.ss : [y.s];\n })\n .flat();\n });\n return result[0].length === result[1].length ? result : equalizeSegments(result[0], result[1], tl);\n}\n//# sourceMappingURL=equalize-segments.js.map","/**\n * Create DOM from a html string.\n * @param str\n * @returns\n */\nexport function createDOM(str) {\n var container = document.createElement('div');\n container.innerHTML = str;\n var dom = container.childNodes[0];\n if (dom && container.contains(dom)) {\n container.removeChild(dom);\n }\n return dom;\n}\n//# sourceMappingURL=create-dom.js.map","export function column(value, field) {\n if (value === null)\n return undefined;\n return { type: 'column', value, field };\n}\nexport function inferredColumn(value, field) {\n const c = column(value, field);\n return Object.assign(Object.assign({}, c), { inferred: true });\n}\nexport function visualColumn(value, field) {\n if (value === null)\n return undefined;\n return { type: 'column', value, field, visual: true };\n}\nexport function nonConstantColumn(value, field) {\n const c = column(value, field);\n return Object.assign(Object.assign({}, c), { constant: false });\n}\nexport function constant(I, value) {\n const array = [];\n for (const i of I)\n array[i] = value;\n return array;\n}\nexport function columnOf(encode, key) {\n const channel = encode[key];\n if (!channel)\n return [null, null];\n const { value, field = null } = channel;\n return [value, field];\n}\nexport function maybeColumnOf(encode, ...K) {\n for (const key of K) {\n if (typeof key === 'string') {\n const [KV, fv] = columnOf(encode, key);\n if (KV !== null)\n return [KV, fv];\n }\n else {\n return [key, null];\n }\n }\n return [null, null];\n}\nexport function isObject(d) {\n if (d instanceof Date)\n return false;\n return typeof d === 'object';\n}\n//# sourceMappingURL=helper.js.map","import { deepMix } from '@antv/util';\nimport { inferredColumn, constant } from './utils/helper';\n/**\n * Add zero constant encode for y1 channel.\n */\nexport const MaybeZeroY1 = () => {\n return (I, mark) => {\n const { encode } = mark;\n const { y1 } = encode;\n if (y1 !== undefined)\n return [I, mark];\n return [\n I,\n deepMix({}, mark, {\n encode: { y1: inferredColumn(constant(I, 0)) },\n }),\n ];\n };\n};\nMaybeZeroY1.props = {};\n//# sourceMappingURL=maybeZeroY1.js.map","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function count(values, valueof) {\n let count = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count;\n }\n }\n }\n return count;\n}\n","export default function variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\n","import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n const v = variance(values, valueof);\n return v ? Math.sqrt(v) : v;\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","export default function identity(x) {\n return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new InternMap();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\n}\n","export default function permute(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import ascending from \"./ascending.js\";\nimport group, {rollup} from \"./group.js\";\nimport sort from \"./sort.js\";\n\nexport default function groupSort(values, reduce, key) {\n return (reduce.length !== 2\n ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) => ascending(av, bv) || ascending(ak, bk)))\n : sort(group(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending(ak, bk))))\n .map(([key]) => key);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function constant(x) {\n return () => x;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","import {tickIncrement} from \"./ticks.js\";\n\nexport default function nice(start, stop, count) {\n let prestep;\n while (true) {\n const step = tickIncrement(start, stop, count);\n if (step === prestep || step === 0 || !isFinite(step)) {\n return [start, stop];\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n }\n prestep = step;\n }\n}\n","import count from \"../count.js\";\n\nexport default function thresholdSturges(values) {\n return Math.max(1, Math.ceil(Math.log(count(values)) / Math.LN2) + 1);\n}\n","import {slice} from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport nice from \"./nice.js\";\nimport ticks, {tickIncrement} from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\n\nexport default function bin() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n\n var i,\n n = data.length,\n x,\n step,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds, and nice the\n // default domain accordingly.\n if (!Array.isArray(tz)) {\n const max = x1, tn = +tz;\n if (domain === extent) [x0, x1] = nice(x0, x1, tn);\n tz = ticks(x0, x1, tn);\n\n // If the domain is aligned with the first tick (which it will by\n // default), then we can use quantization rather than bisection to bin\n // values, which is substantially faster.\n if (tz[0] <= x0) step = tickIncrement(x0, x1, tn);\n\n // If the last threshold is coincident with the domain’s upper bound, the\n // last bin will be zero-width. If the default domain is used, and this\n // last threshold is coincident with the maximum input value, we can\n // extend the niced upper bound by one tick to ensure uniform bin widths;\n // otherwise, we simply remove the last threshold. Note that we don’t\n // coerce values or the domain to numbers, and thus must be careful to\n // compare order (>=) rather than strict equality (===)!\n if (tz[tz.length - 1] >= x1) {\n if (max >= x1 && domain === extent) {\n const step = tickIncrement(x0, x1, tn);\n if (isFinite(step)) {\n if (step > 0) {\n x1 = (Math.floor(x1 / step) + 1) * step;\n } else if (step < 0) {\n x1 = (Math.ceil(x1 * -step) + 1) / -step;\n }\n }\n } else {\n tz.pop();\n }\n }\n }\n\n // Remove any thresholds outside the domain.\n // Be careful not to mutate an array owned by the user!\n var m = tz.length, a = 0, b = m;\n while (tz[a] <= x0) ++a;\n while (tz[b - 1] > x1) --b;\n if (a || b < m) tz = tz.slice(a, b), m = b - a;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n if (isFinite(step)) {\n if (step > 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n }\n }\n } else if (step < 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n const j = Math.floor((x0 - x) * step);\n bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding\n }\n }\n }\n } else {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : constant(Array.isArray(_) ? slice.call(_) : _), histogram) : threshold;\n };\n\n return histogram;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function maxIndex(values, valueof) {\n let max;\n let maxIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n }\n return maxIndex;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function minIndex(values, valueof) {\n let min;\n let minIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n }\n return minIndex;\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function greatest(values, compare = ascending) {\n let max;\n let defined = false;\n if (compare.length === 1) {\n let maxValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? ascending(value, maxValue) > 0\n : ascending(value, value) === 0) {\n max = element;\n maxValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, max) > 0\n : compare(value, value) === 0) {\n max = value;\n defined = true;\n }\n }\n }\n return max;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","import count from \"../count.js\";\nimport deviation from \"../deviation.js\";\n\nexport default function thresholdScott(values, min, max) {\n const c = count(values), d = deviation(values);\n return c && d ? Math.ceil((max - min) * Math.cbrt(c) / (3.49 * d)) : 1;\n}\n","export default function mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n","import quantile, {quantileIndex} from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n return quantile(values, 0.5, valueof);\n}\n\nexport function medianIndex(values, valueof) {\n return quantileIndex(values, 0.5, valueof);\n}\n","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { lowerFirst, upperFirst, isPlainObject } from '@antv/util';\nexport function identity(x) {\n return x;\n}\n/**\n * Composes functions from left to right.\n */\nexport function compose(fns) {\n return fns.reduce((composed, fn) => (x, ...args) => fn(composed(x, ...args), ...args), identity);\n}\n/**\n * Composes single-argument async functions from left to right.\n */\nexport function composeAsync(fns) {\n return fns.reduce((composed, fn) => (x) => __awaiter(this, void 0, void 0, function* () {\n const value = yield composed(x);\n return fn(value);\n }), identity);\n}\nexport function capitalizeFirst(str) {\n return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase());\n}\nexport function error(message = '') {\n throw new Error(message);\n}\nexport function copyAttributes(target, source) {\n const { attributes } = source;\n const exclude = new Set(['id', 'className']);\n for (const [key, value] of Object.entries(attributes)) {\n if (!exclude.has(key)) {\n // @todo Fix in @antv/g\n if (key === 'transform') {\n target.attr(key, '');\n target.attr(key, value);\n }\n else {\n target.attr(key, value);\n }\n }\n }\n}\nexport function defined(x) {\n return x !== undefined && x !== null && !Number.isNaN(x);\n}\nexport function random(a, b) {\n return a + (b - a) * Math.random();\n}\nexport function useMemo(compute) {\n const map = new Map();\n return (key) => {\n if (map.has(key))\n return map.get(key);\n const value = compute(key);\n map.set(key, value);\n return value;\n };\n}\nexport function appendTransform(node, transform) {\n const { transform: preTransform } = node.style;\n const unset = (d) => d === 'none' || d === undefined;\n const prefix = unset(preTransform) ? '' : preTransform;\n node.style.transform = `${prefix} ${transform}`.trimStart();\n}\nexport function subObject(obj, prefix) {\n return maybeSubObject(obj, prefix) || {};\n}\nexport function maybeSubObject(obj, prefix) {\n const entries = Object.entries(obj || {})\n .filter(([key]) => key.startsWith(prefix))\n .map(([key, value]) => [lowerFirst(key.replace(prefix, '').trim()), value])\n .filter(([key]) => !!key);\n return entries.length === 0 ? null : Object.fromEntries(entries);\n}\nexport function prefixObject(obj, prefix) {\n return Object.fromEntries(Object.entries(obj).map(([key, value]) => {\n return [`${prefix}${upperFirst(key)}`, value];\n }));\n}\nexport function filterPrefixObject(obj, prefix) {\n return Object.fromEntries(Object.entries(obj).filter(([key]) => prefix.find((p) => key.startsWith(p))));\n}\nexport function omitPrefixObject(obj, ...prefixes) {\n return Object.fromEntries(Object.entries(obj).filter(([key]) => prefixes.every((prefix) => !key.startsWith(prefix))));\n}\nexport function maybePercentage(x, size) {\n if (x === undefined)\n return null;\n if (typeof x === 'number')\n return x;\n const px = +x.replace('%', '');\n return Number.isNaN(px) ? null : (px / 100) * size;\n}\nexport function isStrictObject(d) {\n return (typeof d === 'object' &&\n !(d instanceof Date) &&\n d !== null &&\n !Array.isArray(d));\n}\nexport function isUnset(value) {\n return value === null || value === false;\n}\nexport function deepAssign(dist, src, maxLevel = 5, level = 0) {\n if (level >= maxLevel)\n return;\n for (const key of Object.keys(src)) {\n const value = src[key];\n if (!isPlainObject(value) || !isPlainObject(dist[key])) {\n dist[key] = value;\n }\n else {\n deepAssign(dist[key], value, maxLevel, level + 1);\n }\n }\n return dist;\n}\n//# sourceMappingURL=helper.js.map","/**\n * Calls a defined callback function on each key:value of a object,\n * and returns a object contains the result.\n */\nexport function mapObject(object, callbackfn) {\n return Object.entries(object).reduce((obj, [key, value]) => {\n obj[key] = callbackfn(value, key, object);\n return obj;\n }, {});\n}\nexport function indexOf(array) {\n return array.map((_, i) => i);\n}\n/**\n * @example [[1, 2, 3], ['a', 'b', 'c']] => [[1, 'a'], [2, 'b'], [3, 'c']]\n */\nexport function transpose(matrix) {\n const row = matrix.length;\n const col = matrix[0].length;\n // Note: new Array(col).fill(new Array(row)) is not ok!!!\n // Because in this case it will fill new Array(col) with the same array: new Array(row).\n const transposed = new Array(col).fill(0).map(() => new Array(row));\n for (let i = 0; i < col; i++) {\n for (let j = 0; j < row; j++) {\n transposed[i][j] = matrix[j][i];\n }\n }\n return transposed;\n}\nexport function firstOf(array) {\n return array[0];\n}\nexport function lastOf(array) {\n return array[array.length - 1];\n}\nexport function isFlatArray(array) {\n return !array.some(Array.isArray);\n}\nexport function unique(array) {\n return Array.from(new Set(array));\n}\nexport function divide(array, callbackfn) {\n const result = [[], []];\n array.forEach((item) => {\n result[callbackfn(item) ? 0 : 1].push(item);\n });\n return result;\n}\nfunction comb(array, len = array.length) {\n if (len === 1)\n return array.map((item) => [item]);\n const result = [];\n for (let i = 0; i < array.length; i++) {\n const rest = array.slice(i + 1);\n const restComb = comb(rest, len - 1);\n restComb.forEach((comb) => {\n result.push([array[i], ...comb]);\n });\n }\n return result;\n}\n/**\n * get all combinations of two elements in an array\n * @example [1, 2, 3] => [[1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]\n * @param array\n * @returns\n */\nexport function combine(array) {\n if (array.length === 1)\n return [array];\n const result = [];\n for (let i = 1; i <= array.length; i++) {\n result.push(...comb(array, i));\n }\n return result;\n}\n//# sourceMappingURL=array.js.map","import { group, ascending, maxIndex } from 'd3-array';\nimport { defined } from '../../utils/helper';\nimport { indexOf } from '../../utils/array';\nimport { columnOf } from './helper';\nexport function createGroups(groupBy, I, mark) {\n const { encode } = mark;\n if (groupBy === null)\n return [I];\n const G = normalizeGroupBy(groupBy)\n .map((k) => { var _a; return [k, (_a = columnOf(encode, k)) === null || _a === void 0 ? void 0 : _a[0]]; })\n .filter(([, column]) => defined(column));\n const key = (i) => G.map(([, V]) => V[i]).join('-');\n return Array.from(group(I, key).values());\n}\nexport function normalizeComparator(order) {\n if (Array.isArray(order))\n return createFieldsOrder(order);\n if (typeof order === 'function')\n return createFunctionOrder(order);\n if (order === 'series')\n return createSeriesOrder;\n if (order === 'value')\n return createValueOrder;\n if (order === 'sum')\n return createSumOrder;\n if (order === 'maxIndex')\n return createMaxIndexOrder;\n return () => null;\n}\nexport function applyOrder(groups, comparator) {\n for (const group of groups) {\n group.sort(comparator);\n }\n}\nexport function domainOf(value, scale) {\n return (scale === null || scale === void 0 ? void 0 : scale.domain) || Array.from(new Set(value));\n}\nfunction normalizeGroupBy(groupBy) {\n if (Array.isArray(groupBy))\n return groupBy;\n return [groupBy];\n}\nfunction createSeriesOrder(data, Y, S) {\n return ascendingComparator((i) => S[i]);\n}\nfunction createFunctionOrder(order) {\n return (data, Y, S) => {\n return ascendingComparator((i) => order(data[i]));\n };\n}\nfunction createFieldsOrder(order) {\n return (data, Y, S) => {\n return (i, j) => order.reduce((eq, f) => (eq !== 0 ? eq : ascending(data[i][f], data[j][f])), 0);\n };\n}\nfunction createValueOrder(data, Y, S) {\n return ascendingComparator((i) => Y[i]);\n}\nfunction createSumOrder(data, Y, S) {\n const I = indexOf(data);\n const groups = Array.from(group(I, (i) => S[+i]).entries());\n const seriesSum = new Map(groups.map(([k, GI]) => [k, GI.reduce((s, i) => s + +Y[i])]));\n return ascendingComparator((i) => seriesSum.get(S[i]));\n}\nfunction createMaxIndexOrder(data, Y, S) {\n const I = indexOf(data);\n const groups = Array.from(group(I, (i) => S[+i]).entries());\n const seriesMaxIndex = new Map(groups.map(([k, GI]) => [k, maxIndex(GI, (i) => Y[i])]));\n return ascendingComparator((i) => seriesMaxIndex.get(S[i]));\n}\nfunction ascendingComparator(order) {\n return (i, j) => ascending(order(i), order(j));\n}\n//# sourceMappingURL=order.js.map","import { deepMix } from '@antv/util';\nimport { column, columnOf, inferredColumn, maybeColumnOf, } from './utils/helper';\nimport { normalizeComparator, createGroups, applyOrder } from './utils/order';\n/**\n * The stack transform group marks into series by color channel,\n * and then produce new y channel for each series by specified order,\n * say to form vertical \"stacks\" by specified channels.\n */\nexport const StackY = (options = {}) => {\n const { groupBy = 'x', orderBy = null, reverse = false, y: fromY = 'y', y1: fromY1 = 'y1', series = true, } = options;\n return (I, mark) => {\n const { data, encode, style = {} } = mark;\n const [Y, fy] = columnOf(encode, 'y');\n const [Y1, fy1] = columnOf(encode, 'y1');\n const [S] = series\n ? maybeColumnOf(encode, 'series', 'color')\n : columnOf(encode, 'color');\n // Create groups and apply specified order for each group.\n const groups = createGroups(groupBy, I, mark);\n const createComparator = normalizeComparator(orderBy);\n const comparator = createComparator(data, Y, S);\n if (comparator)\n applyOrder(groups, comparator);\n // Stack y channels to produce new y and y1 channel.\n const newY = new Array(I.length);\n const newY1 = new Array(I.length);\n const TY = new Array(I.length);\n const F = [];\n const L = [];\n for (const G of groups) {\n if (reverse)\n G.reverse();\n // For range interval with specified y and y1.\n const start = Y1 ? +Y1[G[0]] : 0;\n // Split positive indices of Y and negative Y.\n const PG = [];\n const NG = [];\n for (const i of G) {\n const y = (TY[i] = +Y[i] - start);\n if (y < 0)\n NG.push(i);\n else if (y >= 0)\n PG.push(i);\n }\n // Store the first and last layer.\n const FG = PG.length > 0 ? PG : NG;\n const LG = NG.length > 0 ? NG : PG;\n let i = PG.length - 1;\n let j = 0;\n // Find the last non-zero index.\n while (i > 0 && Y[FG[i]] === 0)\n i--;\n // Find the first non-zero index.\n while (j < LG.length - 1 && Y[LG[j]] === 0)\n j++;\n F.push(FG[i]);\n L.push(LG[j]);\n // Stack negative y in reverse order.\n let ny = start;\n for (const i of NG.reverse()) {\n const y = TY[i];\n ny = newY[i] = (newY1[i] = ny) + y;\n }\n // Stack positive y in input order.\n let py = start;\n for (const i of PG) {\n const y = TY[i];\n if (y > 0)\n py = newY[i] = (newY1[i] = py) + y;\n else\n newY[i] = newY1[i] = py;\n }\n }\n // Only set top radius for the first layer,\n // and set bottom radius for the last layer.\n const FS = new Set(F);\n const LS = new Set(L);\n // Choose new y or y1 channel as the new y channel.\n const V = fromY === 'y' ? newY : newY1;\n const V1 = fromY1 === 'y' ? newY : newY1;\n return [\n I,\n deepMix({}, mark, {\n encode: {\n y0: inferredColumn(Y, fy),\n y: column(V, fy),\n y1: column(V1, fy1),\n },\n style: Object.assign({ first: (_, i) => FS.has(i), last: (_, i) => LS.has(i) }, style),\n }),\n ];\n };\n};\nStackY.props = {};\n//# sourceMappingURL=stackY.js.map","function fillZero(digit) {\n if (Math.abs(digit) > 10)\n return String(digit);\n return digit.toString().padStart(2, '0');\n}\nexport function dynamicFormatDateTime(date) {\n const year = date.getFullYear();\n const month = fillZero(date.getMonth() + 1);\n const day = fillZero(date.getDate());\n const yyyyMMDD = `${year}-${month}-${day}`;\n const hour = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n if (hour || minutes || seconds)\n return `${yyyyMMDD} ${fillZero(hour)}:${fillZero(minutes)}:${fillZero(seconds)}`;\n return yyyyMMDD;\n}\n//# sourceMappingURL=dateFormat.js.map","import { deepMix } from '@antv/util';\nimport { isUnset } from '../utils/helper';\nimport { dynamicFormatDateTime } from '../utils/dateFormat';\nimport { columnOf } from './utils/helper';\n/**\n * Infer title channel from x-position channel.\n */\nexport const MaybeTitle = (options = {}) => {\n const { channel = 'x' } = options;\n return (I, mark) => {\n const { encode } = mark;\n const { tooltip } = mark;\n if (isUnset(tooltip))\n return [I, mark];\n const { title } = tooltip;\n if (title !== undefined)\n return [I, mark];\n const titles = Object.keys(encode)\n .filter((key) => key.startsWith(channel))\n .filter((key) => !encode[key].inferred)\n .map((key) => columnOf(encode, key))\n .filter(([T]) => T)\n .map((d) => d[0]);\n if (titles.length === 0)\n return [I, mark];\n const T = [];\n for (const i of I) {\n T[i] = {\n value: titles\n .map((t) => t[i] instanceof Date ? dynamicFormatDateTime(t[i]) : t[i])\n .join(', '),\n };\n }\n return [\n I,\n deepMix({}, mark, {\n tooltip: {\n title: T,\n },\n }),\n ];\n };\n};\nMaybeTitle.props = {};\n//# sourceMappingURL=maybeTitle.js.map","import { deepMix } from '@antv/util';\nimport { inferredColumn, constant } from './utils/helper';\n/**\n * Add zero constant encode for x channel.\n * This is useful for interval geometry.\n */\nexport const MaybeZeroX = () => {\n return (I, mark) => {\n const { encode } = mark;\n const { x } = encode;\n if (x !== undefined)\n return [I, mark];\n return [\n I,\n deepMix({}, mark, {\n encode: { x: inferredColumn(constant(I, 0)) },\n scale: { x: { guide: null } },\n }),\n ];\n };\n};\nMaybeZeroX.props = {};\n//# sourceMappingURL=maybeZeroX.js.map","import { deepMix } from '@antv/util';\nimport { inferredColumn, constant } from './utils/helper';\n/**\n * Add zero constant encode for y channel.\n */\nexport const MaybeZeroY = () => {\n return (I, mark) => {\n const { encode } = mark;\n const { y } = encode;\n if (y !== undefined)\n return [I, mark];\n return [\n I,\n deepMix({}, mark, {\n encode: { y: inferredColumn(constant(I, 0)) },\n scale: { y: { guide: null } },\n }),\n ];\n };\n};\nMaybeZeroY.props = {};\n//# sourceMappingURL=maybeZeroY.js.map","import { deepMix } from '@antv/util';\nimport { constant, visualColumn } from './utils/helper';\n/**\n * Add 3 constant encode for size channel.\n * This is useful for point geometry.\n */\nexport const MaybeSize = () => {\n return (I, mark) => {\n const { encode } = mark;\n const { size } = encode;\n if (size !== undefined)\n return [I, mark];\n return [\n I,\n deepMix({}, mark, { encode: { size: visualColumn(constant(I, 3)) } }),\n ];\n };\n};\nMaybeSize.props = {};\n//# sourceMappingURL=maybeSize.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { column } from './utils/helper';\n/**\n * Infer key for every element.\n */\nexport const MaybeKey = () => {\n return (I, mark) => {\n const { encode } = mark;\n const { key } = encode, rest = __rest(encode, [\"key\"]);\n if (key !== undefined)\n return [I, mark];\n const values = Object.values(rest).map(({ value }) => value);\n const K = I.map((i) => values\n .filter(Array.isArray)\n .map((V) => V[i])\n .join('-'));\n return [I, deepMix({}, mark, { encode: { key: column(K) } })];\n };\n};\nMaybeKey.props = {};\n//# sourceMappingURL=maybeKey.js.map","import { deepMix } from '@antv/util';\nimport { column, columnOf } from './utils/helper';\n/**\n * Assume color channel is series channel.\n */\nexport const MaybeSeries = () => {\n return (I, mark) => {\n const { encode } = mark;\n const { series, color } = encode;\n if (series !== undefined || color === undefined)\n return [I, mark];\n const [C, fc] = columnOf(encode, 'color');\n return [I, deepMix({}, mark, { encode: { series: column(C, fc) } })];\n };\n};\nMaybeSeries.props = {};\n//# sourceMappingURL=maybeSeries.js.map","import { deepMix } from '@antv/util';\nimport { column, isObject } from './utils/helper';\n/**\n * Add 3 constant encode for size channel.\n * This is useful for point geometry.\n */\nexport const MaybeTupleY = () => {\n return (I, mark) => {\n const { data } = mark;\n if (!Array.isArray(data) || data.some(isObject))\n return [I, mark];\n return [I, deepMix({}, mark, { encode: { y: column(data) } })];\n };\n};\nMaybeTupleY.props = {};\n//# sourceMappingURL=maybeTupleY.js.map","import { deepMix } from '@antv/util';\nimport { column, isObject } from './utils/helper';\n/**\n * Add 3 constant encode for size channel.\n * This is useful for point geometry.\n */\nexport const MaybeTupleX = () => {\n return (I, mark) => {\n const { data } = mark;\n if (!Array.isArray(data) || data.some(isObject))\n return [I, mark];\n return [I, deepMix({}, mark, { encode: { x: column(data) } })];\n };\n};\nMaybeTupleX.props = {};\n//# sourceMappingURL=maybeTupleX.js.map","import { deepMix } from '@antv/util';\nimport { column, columnOf } from './utils/helper';\n/**\n * Add 3 constant encode for size channel.\n * This is useful for point geometry.\n */\nexport const MaybeIdentityY = () => {\n return (I, mark) => {\n const { encode } = mark;\n const { y1 } = encode;\n if (y1)\n return [I, mark];\n const [Y] = columnOf(encode, 'y');\n return [I, deepMix({}, mark, { encode: { y1: column([...Y]) } })];\n };\n};\nMaybeIdentityY.props = {};\n//# sourceMappingURL=maybeIdentityY.js.map","import { deepMix } from '@antv/util';\nimport { column, columnOf } from './utils/helper';\n/**\n * Add 3 constant encode for size channel.\n * This is useful for point geometry.\n */\nexport const MaybeIdentityX = () => {\n return (I, mark) => {\n const { encode } = mark;\n const { x1 } = encode;\n if (x1)\n return [I, mark];\n const [X] = columnOf(encode, 'x');\n return [I, deepMix({}, mark, { encode: { x1: column([...X]) } })];\n };\n};\nMaybeIdentityX.props = {};\n//# sourceMappingURL=maybeIdentityX.js.map","import { deepMix } from '@antv/util';\nimport { column, isObject } from './utils/helper';\n/**\n * Add a default encode for rangeX\n * when data is just an array\n */\nexport const MaybeDefaultX = () => {\n return (I, mark) => {\n const { data } = mark;\n if (Array.isArray(data) &&\n (data.every(Array.isArray) || !data.some(isObject))) {\n const extractX = (data, index) => Array.isArray(data[0])\n ? data.map((item) => item[index])\n : [data[index]];\n return [\n I,\n deepMix({}, mark, {\n encode: {\n x: column(extractX(data, 0)),\n x1: column(extractX(data, 1)),\n },\n }),\n ];\n }\n return [I, mark];\n };\n};\nMaybeDefaultX.props = {};\n//# sourceMappingURL=maybeDefaultX.js.map","import { deepMix } from '@antv/util';\nimport { column, isObject } from './utils/helper';\n/**\n * Add a default encode for rangeY\n * when data is just an array\n */\nexport const MaybeDefaultY = () => {\n return (I, mark) => {\n const { data } = mark;\n if (Array.isArray(data) &&\n (data.every(Array.isArray) || !data.some(isObject))) {\n const extractY = (data, index) => Array.isArray(data[0])\n ? data.map((item) => item[index])\n : [data[index]];\n return [\n I,\n deepMix({}, mark, {\n encode: {\n y: column(extractY(data, 0)),\n y1: column(extractY(data, 1)),\n },\n }),\n ];\n }\n return [I, mark];\n };\n};\nMaybeDefaultY.props = {};\n//# sourceMappingURL=maybeDefaultY.js.map","import { deepMix } from '@antv/util';\nimport { isUnset } from '../utils/helper';\n/**\n * Infer tooltip channel from specified channel.\n */\nexport const MaybeTooltip = (options) => {\n const { channel } = options;\n return (I, mark) => {\n const { encode, tooltip } = mark;\n if (isUnset(tooltip))\n return [I, mark];\n const { items = [] } = tooltip;\n if (!items || items.length > 0)\n return [I, mark];\n const channels = Array.isArray(channel) ? channel : [channel];\n const newItems = channels.flatMap((channel) => Object.keys(encode)\n .filter((key) => key.startsWith(channel))\n .map((key) => {\n const { field, value, inferred = false, aggregate } = encode[key];\n if (inferred)\n return null;\n // Do not show inferred column.\n if (aggregate && value)\n return { channel: key };\n if (field)\n return { field };\n if (value)\n return { channel: key };\n return null;\n })\n .filter((d) => d !== null));\n return [I, deepMix({}, mark, { tooltip: { items: newItems } })];\n };\n};\nMaybeTooltip.props = {};\n//# sourceMappingURL=maybeTooltip.js.map","import { deepMix } from '@antv/util';\n/**\n * Set padding of x and y scale to zero.\n */\nexport const MaybeZeroPadding = () => {\n return (I, mark) => {\n return [\n I,\n deepMix({ scale: { x: { padding: 0 }, y: { padding: 0 } } }, mark),\n ];\n };\n};\nMaybeZeroPadding.props = {};\n//# sourceMappingURL=maybeZeroPadding.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { column } from './utils/helper';\n/**\n * Set visual position with style.x and style.y.\n * The priority of style.x, style.y is higher than data.\n */\nexport const MaybeVisualPosition = () => {\n return (I, mark) => {\n const { data, style = {} } = mark, restMark = __rest(mark, [\"data\", \"style\"]);\n const { x: x0, y: y0 } = style, rest = __rest(style, [\"x\", \"y\"]);\n if (x0 == undefined || y0 == undefined)\n return [I, mark];\n const x = x0 || 0;\n const y = y0 || 0;\n return [\n [0],\n deepMix({}, restMark, {\n data: [0],\n cartesian: true,\n encode: {\n x: column([x]),\n y: column([y]),\n },\n scale: {\n x: { type: 'identity', independent: true, guide: null },\n y: { type: 'identity', independent: true, guide: null }, // hide axis\n },\n style: rest,\n }),\n ];\n };\n};\nMaybeVisualPosition.props = {};\n//# sourceMappingURL=maybeVisualPosition.js.map","import { deepMix } from '@antv/util';\n/**\n * Mark functional attribute constant.\n */\nexport const MaybeFunctionAttribute = () => {\n return (I, mark) => {\n const { style = {} } = mark;\n return [\n I,\n deepMix({}, mark, {\n style: Object.assign(Object.assign({}, style), Object.fromEntries(Object.entries(style)\n .filter(([, v]) => typeof v === 'function')\n .map(([k, v]) => [k, () => v]))),\n }),\n ];\n };\n};\nMaybeFunctionAttribute.props = {};\n//# sourceMappingURL=maybeFunctionAttribute.js.map","import { deepMix } from '@antv/util';\nimport { column, isObject } from './utils/helper';\n/**\n * Add 3 constant encode for size channel.\n * This is useful for point geometry.\n */\nexport const MaybeTuple = () => {\n return (I, mark) => {\n const { data } = mark;\n if (!Array.isArray(data) || data.some(isObject))\n return [I, mark];\n const position = Array.isArray(data[0]) ? data : [data];\n const X = position.map((d) => d[0]);\n const Y = position.map((d) => d[1]);\n return [I, deepMix({}, mark, { encode: { x: column(X), y: column(Y) } })];\n };\n};\nMaybeTuple.props = {};\n//# sourceMappingURL=maybeTuple.js.map","import { deepMix } from '@antv/util';\nimport { constant, visualColumn } from './utils/helper';\n/**\n * Add 3 constant encode for size channel.\n * This is useful for point geometry.\n */\nexport const MaybeGradient = () => {\n return (I, mark) => {\n const { style = {}, encode } = mark;\n const { series } = encode;\n const { gradient } = style;\n if (!gradient || series)\n return [I, mark];\n return [\n I,\n deepMix({}, mark, {\n encode: {\n series: visualColumn(constant(I, undefined)),\n },\n }),\n ];\n };\n};\nMaybeGradient.props = {};\n//# sourceMappingURL=maybeGradient.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { column, columnOf, maybeColumnOf } from './utils/helper';\nimport { createGroups, normalizeComparator, applyOrder, domainOf, } from './utils/order';\n/**\n * The dodge group marks into series by color or series channel,\n * and then produce new series channel for each series by specified order,\n * say to form horizontal \"columns\" by specified channels.\n */\nexport const DodgeX = (options = {}) => {\n const { groupBy = 'x', reverse = false, orderBy, padding } = options, rest = __rest(options, [\"groupBy\", \"reverse\", \"orderBy\", \"padding\"]);\n return (I, mark) => {\n const { data, encode, scale } = mark;\n const { series: scaleSeries } = scale;\n const [Y] = columnOf(encode, 'y');\n const [S] = maybeColumnOf(encode, 'series', 'color');\n const domainSeries = domainOf(S, scaleSeries);\n // Create groups and apply specified order for each group.\n const groups = createGroups(groupBy, I, mark);\n const createComparator = normalizeComparator(orderBy);\n const comparator = createComparator(data, Y, S);\n if (comparator)\n applyOrder(groups, comparator);\n // Update series for each mark related to series domain.\n const newS = new Array(I.length);\n for (const G of groups) {\n if (reverse)\n G.reverse();\n for (let i = 0; i < G.length; i++) {\n newS[G[i]] = domainSeries[i];\n }\n }\n return [\n I,\n deepMix({}, mark, {\n scale: {\n series: {\n domain: domainSeries,\n paddingInner: padding,\n },\n },\n encode: {\n series: column(newS),\n },\n }),\n ];\n };\n};\nDodgeX.props = {};\n//# sourceMappingURL=dodgeX.js.map","import { deepMix } from '@antv/util';\nimport { group, max } from 'd3-array';\nimport { columnOf, constant, maybeColumnOf, visualColumn, } from './utils/helper';\n/**\n * Group marks by channels into groups and stacking their enterDelay\n * to make marks show up groups by groups.\n * It will update enterDelay channel for each mark by its enterDuration and group.\n * @todo Support orderBy.\n * @todo Sort among groups(e.g. reverse).\n * @todo Stack enter in groups rather than between groups?\n * @todo Auto inter this statistic for scaleInY animation in stacked interval?\n * @todo All the groups shared the enterDuration?\n */\nexport const StackEnter = (options) => {\n const { groupBy = ['x'], reducer = (I, V) => V[I[0]], orderBy = null, reverse = false, duration, } = options;\n return (I, mark) => {\n const { encode } = mark;\n // Extract group information by each specified channel,\n // and skip if all values of channels are empty.\n const by = Array.isArray(groupBy) ? groupBy : [groupBy];\n const groupEntries = by.map((k) => [k, columnOf(encode, k)[0]]);\n if (groupEntries.length === 0)\n return [I, mark];\n // Nest group index and flatten them in right order among timeline.\n // [[1, 2, 3, 4, 5, 6]] ->\n // [[1, 2, 3], [4, 5, 6]] ->\n // [[1], [2], [3], [4], [5], [6]]\n let groups = [I];\n for (const [, V] of groupEntries) {\n const newGroups = [];\n for (const I of groups) {\n const G = Array.from(group(I, (i) => V[i]).values());\n // @todo sort by x.\n newGroups.push(...G);\n }\n groups = newGroups;\n }\n // const {color} = encode;\n if (orderBy) {\n const [V] = columnOf(encode, orderBy);\n if (V)\n groups.sort((I, J) => reducer(I, V) - reducer(J, V));\n if (reverse)\n groups.reverse();\n }\n // Stack delay for each group.\n const t = (duration || 3000) / groups.length;\n const [ED] = duration\n ? [constant(I, t)] // If specified duration, generate enter duration for each.\n : maybeColumnOf(encode, 'enterDuration', constant(I, t));\n const [EDL] = maybeColumnOf(encode, 'enterDelay', constant(I, 0));\n const newEnterDelay = new Array(I.length);\n for (let i = 0, pd = 0; i < groups.length; i++) {\n const I = groups[i];\n const maxDuration = max(I, (i) => +ED[i]);\n for (const j of I)\n newEnterDelay[j] = +EDL[j] + pd;\n pd += maxDuration;\n }\n return [\n I,\n deepMix({}, mark, {\n encode: {\n enterDuration: visualColumn(ED),\n enterDelay: visualColumn(newEnterDelay),\n },\n }),\n ];\n };\n};\nStackEnter.props = {};\n//# sourceMappingURL=stackEnter.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { mean, deviation, median, sum, max, min } from 'd3-array';\nimport { isUnset } from '../utils/helper';\nimport { column, columnOf } from './utils/helper';\nimport { createGroups } from './utils/order';\nfunction normalizeBasis(basis) {\n if (typeof basis === 'function')\n return basis;\n const registry = {\n min: (I, Y) => min(I, (i) => Y[+i]),\n max: (I, Y) => max(I, (i) => Y[+i]),\n first: (I, Y) => Y[I[0]],\n last: (I, Y) => Y[I[I.length - 1]],\n mean: (I, Y) => mean(I, (i) => Y[+i]),\n median: (I, Y) => median(I, (i) => Y[+i]),\n sum: (I, Y) => sum(I, (i) => Y[+i]),\n deviation: (I, Y) => deviation(I, (i) => Y[+i]),\n };\n return registry[basis] || max;\n}\n/**\n * Group marks into series by specified channels, and then transform\n * each series's value, say to transform them relative to some basis\n * to apply a moving average.\n */\nexport const NormalizeY = (options = {}) => {\n const { groupBy = 'x', basis = 'max' } = options;\n return (I, mark) => {\n const { encode, tooltip } = mark;\n const { x } = encode, rest = __rest(encode, [\"x\"]);\n // Extract and create new channels starts with y, such as y, y1.\n const Yn = Object.entries(rest)\n .filter(([k]) => k.startsWith('y'))\n .map(([k]) => [k, columnOf(encode, k)[0]]);\n const [, Y] = Yn.find(([k]) => k === 'y');\n const newYn = Yn.map(([k]) => [k, new Array(I.length)]);\n // Group marks into series by specified keys.\n const groups = createGroups(groupBy, I, mark);\n // Transform y channels for each group based on basis.\n const basisFunction = normalizeBasis(basis);\n for (const I of groups) {\n // Compute basis only base on y.\n const basisValue = basisFunction(I, Y);\n for (const i of I) {\n for (let j = 0; j < Yn.length; j++) {\n const [, V] = Yn[j];\n const [, newV] = newYn[j];\n newV[i] = +V[i] / basisValue;\n }\n }\n }\n const specifiedTooltip = isUnset(tooltip) || ((tooltip === null || tooltip === void 0 ? void 0 : tooltip.items) && (tooltip === null || tooltip === void 0 ? void 0 : tooltip.items.length) !== 0);\n return [\n I,\n deepMix({}, mark, Object.assign({ encode: Object.fromEntries(newYn.map(([k, v]) => [k, column(v, columnOf(encode, k)[1])])) }, (!specifiedTooltip &&\n encode.y0 && {\n tooltip: { items: [{ channel: 'y0' }] },\n }))),\n ];\n };\n};\nNormalizeY.props = {};\n//# sourceMappingURL=normalizeY.js.map","/**\n * 将多个单个参数的函数合成为一个函数,执行顺序为从右到左\n * @param fn 第一个函数\n * @param rest 剩余函数\n * @returns 复合后的函数\n */\nexport function compose(fn, ...rest) {\n return rest.reduce((pre, cur) => (x) => pre(cur(x)), fn);\n}\n//# sourceMappingURL=compose.js.map","/**\n * 返回一个 normalize 函数,该函数将输入的 t 从 [a, b] 线性变换到 [0, 1]\n * @param a 输入 t 的最小值\n * @param b 输入 t 的最大值\n * @returns normalize 函数\n */\nexport function createNormalize(a, b) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return b - a ? (t) => (t - a) / (b - a) : (_) => 0.5;\n}\n//# sourceMappingURL=normalize.js.map","/**\n * 返回一个 clamp 函数,将输入限定在指定范围之内\n * @param a 范围的第一个端点\n * @param b 范围的第二个端点\n * @returns clamp 函数\n */\nexport function createClamp(a, b) {\n const lo = b < a ? b : a;\n const hi = a > b ? a : b;\n return (x) => Math.min(Math.max(lo, x), hi);\n}\n//# sourceMappingURL=clamp.js.map","/**\n * 在一个升序的序列指定范围内 array[lo, hi) 二分查找一个值 x,返回最右边一个匹配的值后面的索引 i\n * https://github.com/d3/d3-array/blob/master/src/bisector.js\n * @param array 升序的目标数组\n * @param x 查找的值\n * @param lo 开始的索引\n * @param hi 结束的索引\n * @returns 最右边一个匹配的值后一个的索引\n */\nexport function bisect(array, x, lo, hi, getter) {\n let i = lo || 0;\n let j = hi || array.length;\n const get = getter || ((x) => x);\n while (i < j) {\n const mid = Math.floor((i + j) / 2);\n if (get(array[mid]) > x) {\n j = mid;\n }\n else {\n i = mid + 1;\n }\n }\n return i;\n}\n//# sourceMappingURL=bisect.js.map","const e10 = Math.sqrt(50);\nconst e5 = Math.sqrt(10);\nconst e2 = Math.sqrt(2);\nexport function tickIncrement(start, stop, count) {\n const step = (stop - start) / Math.max(0, count);\n const power = Math.floor(Math.log(step) / Math.LN10);\n const error = step / 10 ** power;\n if (power >= 0) {\n // eslint-disable-next-line no-nested-ternary\n return (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * 10 ** power;\n }\n // eslint-disable-next-line no-nested-ternary\n return -(10 ** -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\nexport function tickStep(start, stop, count) {\n const step0 = Math.abs(stop - start) / Math.max(0, count);\n let step1 = 10 ** Math.floor(Math.log(step0) / Math.LN10);\n const error = step0 / step1;\n if (error >= e10)\n step1 *= 10;\n else if (error >= e5)\n step1 *= 5;\n else if (error >= e2)\n step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n//# sourceMappingURL=ticks.js.map","// 参考 d3-ticks nice 的实现\n// https://github.com/d3/d3-scale\nimport { tickIncrement } from './ticks';\nexport const d3LinearNice = (min, max, count = 5) => {\n const d = [min, max];\n let i0 = 0;\n let i1 = d.length - 1;\n let start = d[i0];\n let stop = d[i1];\n let step;\n if (stop < start) {\n [start, stop] = [stop, start];\n [i0, i1] = [i1, i0];\n }\n step = tickIncrement(start, stop, count);\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n }\n else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n }\n else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n }\n return d;\n};\n//# sourceMappingURL=d3-linear-nice.js.map","export const DURATION_SECOND = 1000;\nexport const DURATION_MINUTE = DURATION_SECOND * 60;\nexport const DURATION_HOUR = DURATION_MINUTE * 60;\nexport const DURATION_DAY = DURATION_HOUR * 24;\nexport const DURATION_WEEK = DURATION_DAY * 7;\nexport const DURATION_MONTH = DURATION_DAY * 30;\nexport const DURATION_YEAR = DURATION_DAY * 365;\nexport function createInterval(duration, floorish, offseti, field) {\n const adjust = (date, step) => {\n const test = (date) => field(date) % step === 0;\n let i = step;\n while (i && !test(date)) {\n offseti(date, -1);\n i -= 1;\n }\n return date;\n };\n const floori = (date, step) => {\n if (step)\n adjust(date, step);\n floorish(date);\n };\n const floor = (date, step) => {\n const d = new Date(+date);\n floori(d, step);\n return d;\n };\n const ceil = (date, step) => {\n const d = new Date(+date - 1);\n floori(d, step);\n offseti(d, step);\n floori(d);\n return d;\n };\n const range = (start, stop, step, shouldAdjust) => {\n const ticks = [];\n const roundStep = Math.floor(step);\n const t = shouldAdjust ? ceil(start, step) : ceil(start);\n for (let i = t; i < stop; offseti(i, roundStep), floori(i)) {\n ticks.push(new Date(+i));\n }\n return ticks;\n };\n return {\n ceil,\n floor,\n range,\n duration,\n };\n}\nexport const millisecond = createInterval(1, (date) => date, (date, step = 1) => {\n date.setTime(+date + step);\n}, (date) => date.getTime());\nexport const second = createInterval(DURATION_SECOND, (date) => {\n date.setMilliseconds(0);\n}, (date, step = 1) => {\n date.setTime(+date + DURATION_SECOND * step);\n}, (date) => date.getSeconds());\nexport const minute = createInterval(DURATION_MINUTE, (date) => {\n date.setSeconds(0, 0);\n}, (date, step = 1) => {\n date.setTime(+date + DURATION_MINUTE * step);\n}, (date) => date.getMinutes());\nexport const hour = createInterval(DURATION_HOUR, (date) => {\n date.setMinutes(0, 0, 0);\n}, (date, step = 1) => {\n date.setTime(+date + DURATION_HOUR * step);\n}, (date) => date.getHours());\nexport const day = createInterval(DURATION_DAY, (date) => {\n date.setHours(0, 0, 0, 0);\n}, (date, step = 1) => {\n date.setTime(+date + DURATION_DAY * step);\n}, (date) => date.getDate() - 1);\nexport const month = createInterval(DURATION_MONTH, (date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step = 1) => {\n const month = date.getMonth();\n date.setMonth(month + step);\n}, (date) => date.getMonth());\nexport const week = createInterval(DURATION_WEEK, (date) => {\n date.setDate(date.getDate() - (date.getDay() % 7));\n date.setHours(0, 0, 0, 0);\n}, (date, step = 1) => {\n date.setDate(date.getDate() + 7 * step);\n}, (date) => {\n const start = month.floor(date);\n const end = new Date(+date);\n return Math.floor((+end - +start) / DURATION_WEEK);\n});\nexport const year = createInterval(DURATION_YEAR, (date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step = 1) => {\n const year = date.getFullYear();\n date.setFullYear(year + step);\n}, (date) => date.getFullYear());\nexport const localIntervalMap = {\n millisecond,\n second,\n minute,\n hour,\n day,\n week,\n month,\n year,\n};\n//# sourceMappingURL=time-interval.js.map","import { createInterval, DURATION_SECOND, DURATION_MINUTE, DURATION_HOUR, DURATION_DAY, DURATION_WEEK, DURATION_MONTH, DURATION_YEAR, } from './time-interval';\nexport const utcMillisecond = createInterval(1, (date) => date, (date, step = 1) => {\n date.setTime(+date + step);\n}, (date) => date.getTime());\nexport const utcSecond = createInterval(DURATION_SECOND, (date) => {\n date.setUTCMilliseconds(0);\n}, (date, step = 1) => {\n date.setTime(+date + DURATION_SECOND * step);\n}, (date) => date.getUTCSeconds());\nexport const utcMinute = createInterval(DURATION_MINUTE, (date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step = 1) => {\n date.setTime(+date + DURATION_MINUTE * step);\n}, (date) => date.getUTCMinutes());\nexport const utcHour = createInterval(DURATION_HOUR, (date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step = 1) => {\n date.setTime(+date + DURATION_HOUR * step);\n}, (date) => date.getUTCHours());\nexport const utcDay = createInterval(DURATION_DAY, (date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step = 1) => {\n date.setTime(+date + DURATION_DAY * step);\n}, (date) => date.getUTCDate() - 1);\nexport const utcMonth = createInterval(DURATION_MONTH, (date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step = 1) => {\n const month = date.getUTCMonth();\n date.setUTCMonth(month + step);\n}, (date) => date.getUTCMonth());\nexport const utcWeek = createInterval(DURATION_WEEK, (date) => {\n date.setUTCDate(date.getUTCDate() - ((date.getUTCDay() + 7) % 7));\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step = 1) => {\n date.setTime(+date + DURATION_WEEK * step);\n}, (date) => {\n const start = utcMonth.floor(date);\n const end = new Date(+date);\n return Math.floor((+end - +start) / DURATION_WEEK);\n});\nexport const utcYear = createInterval(DURATION_YEAR, (date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step = 1) => {\n const year = date.getUTCFullYear();\n date.setUTCFullYear(year + step);\n}, (date) => date.getUTCFullYear());\nexport const utcIntervalMap = {\n millisecond: utcMillisecond,\n second: utcSecond,\n minute: utcMinute,\n hour: utcHour,\n day: utcDay,\n week: utcWeek,\n month: utcMonth,\n year: utcYear,\n};\n//# sourceMappingURL=utc-interval.js.map","import { localIntervalMap } from './time-interval';\nimport { utcIntervalMap } from './utc-interval';\nimport { bisect } from './bisect';\nimport { tickStep } from './ticks';\nfunction chooseTickIntervals(utc) {\n const intervalMap = utc ? utcIntervalMap : localIntervalMap;\n const { year, month, week, day, hour, minute, second, millisecond } = intervalMap;\n const tickIntervals = [\n [second, 1],\n [second, 5],\n [second, 15],\n [second, 30],\n [minute, 1],\n [minute, 5],\n [minute, 15],\n [minute, 30],\n [hour, 1],\n [hour, 3],\n [hour, 6],\n [hour, 12],\n [day, 1],\n [day, 2],\n [week, 1],\n [month, 1],\n [month, 3],\n [year, 1],\n ];\n return {\n tickIntervals,\n year,\n millisecond,\n };\n}\nexport function findTickInterval(start, stop, count, interval, utc) {\n const lo = +start;\n const hi = +stop;\n const { tickIntervals, year, millisecond } = chooseTickIntervals(utc);\n const getter = ([interval, count]) => interval.duration * count;\n const targetCount = interval ? (hi - lo) / interval : count || 5;\n const targetInterval = interval || (hi - lo) / targetCount;\n const len = tickIntervals.length;\n const i = bisect(tickIntervals, targetInterval, 0, len, getter);\n let matchInterval;\n if (i === len) {\n const step = tickStep(lo / year.duration, hi / year.duration, targetCount);\n matchInterval = [year, step];\n }\n else if (i) {\n const closeToLow = targetInterval / getter(tickIntervals[i - 1]) < getter(tickIntervals[i]) / targetInterval;\n const [timeInterval, targetStep] = closeToLow ? tickIntervals[i - 1] : tickIntervals[i];\n const step = interval ? Math.ceil(interval / timeInterval.duration) : targetStep;\n matchInterval = [timeInterval, step];\n }\n else {\n const step = Math.max(tickStep(lo, hi, targetCount), 1);\n matchInterval = [millisecond, step];\n }\n return matchInterval;\n}\n//# sourceMappingURL=find-tick-interval.js.map","import { findTickInterval } from './find-tick-interval';\nexport const d3TimeNice = (min, max, count, interval, utc) => {\n const r = min > max;\n const lo = r ? max : min;\n const hi = r ? min : max;\n const [tickInterval, step] = findTickInterval(lo, hi, count, interval, utc);\n const domain = [tickInterval.floor(lo, step), tickInterval.ceil(hi, step)];\n return r ? domain.reverse() : domain;\n};\n//# sourceMappingURL=d3-time-nice.js.map","var isArrayLike = function (value) {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\nexport default isArrayLike;\n//# sourceMappingURL=is-array-like.js.map","var toString = {}.toString;\nvar isType = function (value, type) { return toString.call(value) === '[object ' + type + ']'; };\nexport default isType;\n//# sourceMappingURL=is-type.js.map","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nimport isType from './is-type';\nexport default (function (value) {\n return isType(value, 'Function');\n});\n//# sourceMappingURL=is-function.js.map","// isFinite,\nvar isNil = function (value) {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\nexport default isNil;\n//# sourceMappingURL=is-nil.js.map","import isType from './is-type';\nexport default (function (value) {\n return Array.isArray ?\n Array.isArray(value) :\n isType(value, 'Array');\n});\n//# sourceMappingURL=is-array.js.map","export default (function (value) {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n var type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n});\n//# sourceMappingURL=is-object.js.map","import isArray from './is-array';\nimport isObject from './is-object';\nfunction each(elements, func) {\n if (!elements) {\n return;\n }\n var rst;\n if (isArray(elements)) {\n for (var i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n }\n else if (isObject(elements)) {\n for (var k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\nexport default each;\n//# sourceMappingURL=each.js.map","var isObjectLike = function (value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\nexport default isObjectLike;\n//# sourceMappingURL=is-object-like.js.map","import isObjectLike from './is-object-like';\nimport isType from './is-type';\nvar isPlainObject = function (value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!isObjectLike(value) || !isType(value, 'Object')) {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n var proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\nexport default isPlainObject;\n//# sourceMappingURL=is-plain-object.js.map","import isType from './is-type';\nexport default (function (str) {\n return isType(str, 'String');\n});\n//# sourceMappingURL=is-string.js.map","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\nvar isNumber = function (value) {\n return isType(value, 'Number');\n};\nexport default isNumber;\n//# sourceMappingURL=is-number.js.map","import each from './each';\nimport isFunction from './is-function';\n// @ts-ignore\nvar values = Object.values ? function (obj) { return Object.values(obj); } : function (obj) {\n var result = [];\n each(obj, function (value, key) {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\nexport default values;\n//# sourceMappingURL=values.js.map","var isNull = function (value) {\n return value === null;\n};\nexport default isNull;\n//# sourceMappingURL=is-null.js.map","var isUndefined = function (value) {\n return value === undefined;\n};\nexport default isUndefined;\n//# sourceMappingURL=is-undefined.js.map","import isFunction from './is-function';\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\nexport default (function (f, resolver) {\n if (!isFunction(f)) {\n throw new TypeError('Expected a function');\n }\n var memoized = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n var key = resolver ? resolver.apply(this, args) : args[0];\n var cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result;\n };\n memoized.cache = new Map();\n return memoized;\n});\n//# sourceMappingURL=memoize.js.map","import isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nvar MAX_MIX_LEVEL = 5;\nfunction _deepMix(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n var value = src[key];\n if (value !== null && isPlainObject(value)) {\n if (!isPlainObject(dist[key])) {\n dist[key] = {};\n }\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n }\n else {\n dist[key] = src[key];\n }\n }\n else if (isArray(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n }\n else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n}\n// todo 重写\nvar deepMix = function (rst) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n return rst;\n};\nexport default deepMix;\n//# sourceMappingURL=deep-mix.js.map","import isArrayLike from './is-array-like';\nvar indexOf = function (arr, obj) {\n if (!isArrayLike(arr)) {\n return -1;\n }\n var m = Array.prototype.indexOf;\n if (m) {\n return m.call(arr, obj);\n }\n var index = -1;\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n return index;\n};\nexport default indexOf;\n//# sourceMappingURL=index-of.js.map","export default (function (v) { return v; });\n//# sourceMappingURL=identity.js.map","import isNil from './is-nil';\nimport isArraylike from './is-array-like';\nexport default function size(o) {\n if (isNil(o)) {\n return 0;\n }\n if (isArraylike(o)) {\n return o.length;\n }\n return Object.keys(o).length;\n}\n//# sourceMappingURL=size.js.map","import { __spreadArrays } from \"tslib\";\nimport values from './values';\nimport memoize from './memoize';\nimport isString from './is-string';\nvar ctx;\n/**\n * 计算文本的宽度\n */\nexport default memoize(function (text, font) {\n if (font === void 0) { font = {}; }\n var fontSize = font.fontSize, fontFamily = font.fontFamily, fontWeight = font.fontWeight, fontStyle = font.fontStyle, fontVariant = font.fontVariant;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d');\n }\n ctx.font = [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ');\n return ctx.measureText(isString(text) ? text : '').width;\n}, function (text, font) {\n if (font === void 0) { font = {}; }\n return __spreadArrays([text], values(font)).join('');\n});\n//# sourceMappingURL=measure-text-width.js.map","import { isNull, isUndefined } from '@antv/util';\nexport function isValid(x) {\n return !isUndefined(x) && !isNull(x) && !Number.isNaN(x);\n}\n//# sourceMappingURL=is-valid.js.map","const reflect = (f) => {\n return (x) => -f(-x);\n};\nexport const logs = (base, shouldReflect) => {\n const baseCache = Math.log(base);\n const log = base === Math.E\n ? Math.log\n : base === 10\n ? Math.log10\n : base === 2\n ? Math.log2\n : (x) => Math.log(x) / baseCache;\n return shouldReflect ? reflect(log) : log;\n};\nexport const pows = (base, shouldReflect) => {\n const pow = base === Math.E ? Math.exp : (x) => base ** x;\n return shouldReflect ? reflect(pow) : pow;\n};\n//# sourceMappingURL=log.js.map","import { logs, pows } from './log';\nexport const d3LogNice = (a, b, _, base) => {\n const shouldReflect = a < 0;\n const log = logs(base, shouldReflect);\n const pow = pows(base, shouldReflect);\n const r = a > b;\n const min = r ? b : a;\n const max = r ? a : b;\n const niceDomain = [pow(Math.floor(log(min))), pow(Math.ceil(log(max)))];\n return r ? niceDomain.reverse() : niceDomain;\n};\n//# sourceMappingURL=d3-log-nice.js.map","import { isNumber } from '@antv/util';\nimport { compose } from './compose';\nconst createInterpolatorRound = (interpolator) => {\n return (t) => {\n // If result is not number, it can't be rounded.\n const res = interpolator(t);\n return isNumber(res) ? Math.round(res) : res;\n };\n};\nexport function interpolatize(rangeOf, normalizeDomain) {\n return (Scale) => {\n Scale.prototype.rescale = function () {\n this.initRange();\n this.nice();\n const [transform] = this.chooseTransforms();\n this.composeOutput(transform, this.chooseClamp(transform));\n };\n Scale.prototype.initRange = function () {\n const { interpolator } = this.options;\n this.options.range = rangeOf(interpolator);\n };\n Scale.prototype.composeOutput = function (transform, clamp) {\n const { domain, interpolator, round } = this.getOptions();\n const normalize = normalizeDomain(domain.map(transform));\n const interpolate = round ? createInterpolatorRound(interpolator) : interpolator;\n this.output = compose(interpolate, normalize, clamp, transform);\n };\n Scale.prototype.invert = undefined;\n };\n}\n//# sourceMappingURL=interpolatize.js.map","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","import colorString from 'color-string';\nfunction hue2rgb(p, q, m) {\n let t = m;\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hsl2rbg(hsl) {\n const h = hsl[0] / 360;\n const s = hsl[1] / 100;\n const l = hsl[2] / 100;\n const a = hsl[3];\n if (s === 0)\n return [l * 255, l * 255, l * 255, a];\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n return [r * 255, g * 255, b * 255, a];\n}\nexport function string2rbg(s) {\n const color = colorString.get(s);\n if (!color)\n return null;\n const { model, value } = color;\n if (model === 'rgb')\n return value;\n if (model === 'hsl')\n return hsl2rbg(value);\n return null;\n}\n//# sourceMappingURL=color.js.map","import { string2rbg } from './color';\n/**\n * 返回一个线性插值器,接受数字\n * @param a 任意值\n * @param b 任意值\n * @returns 线性插值器\n */\nexport const createInterpolateNumber = (a, b) => {\n return (t) => a * (1 - t) + b * t;\n};\nexport const createInterpolateColor = (a, b) => {\n const c1 = string2rbg(a);\n const c2 = string2rbg(b);\n if (c1 === null || c2 === null)\n return c1 ? () => a : () => b;\n return (t) => {\n const values = new Array(4);\n for (let i = 0; i < 4; i += 1) {\n const from = c1[i];\n const to = c2[i];\n values[i] = from * (1 - t) + to * t;\n }\n const [r, g, b, a] = values;\n return `rgba(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)}, ${a})`;\n };\n};\n/**\n * 返回一个线性插值器,接受数字和颜色\n * @param a 任意值\n * @param b 任意值\n * @returns 线性插值器\n */\nexport const createInterpolateValue = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number')\n return createInterpolateNumber(a, b);\n if (typeof a === 'string' && typeof b === 'string')\n return createInterpolateColor(a, b);\n return () => a;\n};\n/**\n * 返回一个 round 线性差值器,对输出值进行四舍五入\n * @param a 任意值\n * @param b 任意值\n * @returns 线性插值器\n */\nexport const createInterpolateRound = (a, b) => {\n const interpolateNumber = createInterpolateNumber(a, b);\n return (t) => Math.round(interpolateNumber(t));\n};\n//# sourceMappingURL=interpolate.js.map","export function chooseNiceTimeMask(date, intervalMap) {\n const { second, minute, hour, day, week, month, year } = intervalMap;\n if (second.floor(date) < date)\n return '.SSS';\n if (minute.floor(date) < date)\n return ':ss';\n if (hour.floor(date) < date)\n return 'hh:mm';\n if (day.floor(date) < date)\n return 'hh A';\n if (month.floor(date) < date) {\n if (week.floor(date) < date)\n return 'MMM DD';\n return 'ddd DD';\n }\n if (year.floor(date) < date)\n return 'MMMM';\n return 'YYYY';\n}\n//# sourceMappingURL=choose-mask.js.map","function internGet({ map, initKey }, value) {\n const key = initKey(value);\n return map.has(key) ? map.get(key) : value;\n}\nfunction internSet({ map, initKey }, value) {\n const key = initKey(value);\n if (map.has(key))\n return map.get(key);\n map.set(key, value);\n return value;\n}\nfunction internDelete({ map, initKey }, value) {\n const key = initKey(value);\n if (map.has(key)) {\n value = map.get(key);\n map.delete(key);\n }\n return value;\n}\nfunction keyof(value) {\n return typeof value === 'object' ? value.valueOf() : value;\n}\n/**\n * @see 参考 https://github.com/mbostock/internmap/blob/main/src/index.js\n */\nexport class InternMap extends Map {\n constructor(entries) {\n super();\n this.map = new Map();\n this.initKey = keyof;\n if (entries !== null) {\n for (const [key, value] of entries) {\n this.set(key, value);\n }\n }\n }\n get(key) {\n return super.get(internGet({ map: this.map, initKey: this.initKey }, key));\n }\n has(key) {\n return super.has(internGet({ map: this.map, initKey: this.initKey }, key));\n }\n set(key, value) {\n return super.set(internSet({ map: this.map, initKey: this.initKey }, key), value);\n }\n delete(key) {\n return super.delete(internDelete({ map: this.map, initKey: this.initKey }, key));\n }\n}\n//# sourceMappingURL=internMap.js.map","import { deepMix } from '@antv/util';\nexport class Base {\n /**\n * 构造函数,根据自定义的选项和默认选项生成当前选项\n * @param options 需要自定义配置的选项\n */\n constructor(options) {\n this.options = deepMix({}, this.getDefaultOptions());\n this.update(options);\n }\n /**\n * 返回当前的所有选项\n * @returns 当前的所有选项\n */\n getOptions() {\n return this.options;\n }\n /**\n * 更新选项和比例尺的内部状态\n * @param updateOptions 需要更新的选项\n */\n update(updateOptions = {}) {\n this.options = deepMix({}, this.options, updateOptions);\n this.rescale(updateOptions);\n }\n /**\n * 根据需要更新 options 和更新后的 options 更新 scale 的内部状态,\n * 在函数内部可以用 this.options 获得更新后的 options\n * @param options 需要更新的 options\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n rescale(options) { }\n}\n//# sourceMappingURL=base.js.map","import { Base } from './base';\nexport const defaultUnknown = Symbol('defaultUnknown');\n/**\n * 更新 indexMap\n *\n * @param arr 初始的数组\n * @param target 目标 map\n * @returns {Map} 生成的 indexMap\n */\nfunction updateIndexMap(target, arr, key) {\n for (let i = 0; i < arr.length; i += 1) {\n if (!target.has(arr[i])) {\n target.set(key(arr[i]), i);\n }\n }\n}\n/**\n * 基于 indexMap 进行映射\n *\n * @param options 相关选项\n * @see MapBetweenArrOptions\n * @return {any} 映射结果\n */\nfunction mapBetweenArrByMapIndex(options) {\n const { value, from, to, mapper, notFoundReturn } = options;\n let mappedIndex = mapper.get(value);\n // index 不存在时,\n // 如果用户显式设置了 unknown 的值,那么就返回 unknown 的值\n // 否者我们将 value 添加到原数组, 并更新 Map\n if (mappedIndex === undefined) {\n if (notFoundReturn !== defaultUnknown) {\n return notFoundReturn;\n }\n mappedIndex = from.push(value) - 1;\n mapper.set(value, mappedIndex);\n }\n return to[mappedIndex % to.length];\n}\nfunction createKey(d) {\n if (d instanceof Date)\n return (d) => `${d}`;\n if (typeof d === 'object')\n return (d) => JSON.stringify(d);\n return (d) => d;\n}\n/**\n * Ordinal 比例尺\n *\n * 该比例尺具有离散的域和范围,例如将一组命名类别映射到一组颜色\n *\n * - 使用 for 替代一些基于 map 的遍历,for 循环性能远高于 forEach, map\n * - 阻止无意义的更新,只有到用户调用 map、invert 或者 update 之后才会进行相应的更新\n * - 两个 map 只初始化一次,在之后的更新中复用他们,这样我们避免了重复 new Map 带来的性能问题\n * 在大量调用 update 函数场景下,较 d3-scale 效率有质的提高\n */\nexport class Ordinal extends Base {\n // 覆盖默认配置\n getDefaultOptions() {\n return {\n domain: [],\n range: [],\n unknown: defaultUnknown,\n };\n }\n // 显示指定 options 的类型为 OrdinalOptions,从而推断出 O 的类型\n constructor(options) {\n super(options);\n }\n map(x) {\n if (this.domainIndexMap.size === 0) {\n updateIndexMap(this.domainIndexMap, this.getDomain(), this.domainKey);\n }\n return mapBetweenArrByMapIndex({\n value: this.domainKey(x),\n mapper: this.domainIndexMap,\n from: this.getDomain(),\n to: this.getRange(),\n notFoundReturn: this.options.unknown,\n });\n }\n invert(y) {\n if (this.rangeIndexMap.size === 0) {\n updateIndexMap(this.rangeIndexMap, this.getRange(), this.rangeKey);\n }\n return mapBetweenArrByMapIndex({\n value: this.rangeKey(y),\n mapper: this.rangeIndexMap,\n from: this.getRange(),\n to: this.getDomain(),\n notFoundReturn: this.options.unknown,\n });\n }\n // 因为 ordinal 比例尺更新内部状态的开销较大,所以按需更新\n rescale(options) {\n const [d] = this.options.domain;\n const [r] = this.options.range;\n this.domainKey = createKey(d);\n this.rangeKey = createKey(r);\n // 如果 rangeIndexMap 没有初始化,说明是在初始化阶段\n if (!this.rangeIndexMap) {\n this.rangeIndexMap = new Map();\n this.domainIndexMap = new Map();\n return;\n }\n // 否者是在更新阶段\n if (!options || options.range) {\n this.rangeIndexMap.clear();\n }\n if (!options || options.domain || options.compare) {\n this.domainIndexMap.clear();\n this.sortedDomain = undefined;\n }\n }\n clone() {\n return new Ordinal(this.options);\n }\n getRange() {\n return this.options.range;\n }\n getDomain() {\n // 如果设置了比较器,就排序\n if (this.sortedDomain)\n return this.sortedDomain;\n const { domain, compare } = this.options;\n this.sortedDomain = compare ? [...domain].sort(compare) : domain;\n return this.sortedDomain;\n }\n}\n//# sourceMappingURL=ordinal.js.map","import { InternMap } from '../utils';\nimport { Ordinal, defaultUnknown } from './ordinal';\nfunction normalize(array) {\n const min = Math.min(...array);\n return array.map((d) => d / min);\n}\nfunction splice(array, n) {\n const sn = array.length;\n const diff = n - sn;\n return diff > 0 ? [...array, ...new Array(diff).fill(1)] : diff < 0 ? array.slice(0, n) : array;\n}\nfunction pretty(n) {\n return Math.round(n * 1e12) / 1e12;\n}\n/**\n * 基于 band 基础配置获取存在 flex band 的状态\n */\nfunction computeFlexBandState(options) {\n // 如果 flex 比 domain 少,那么就补全\n // 如果 flex 比 domain 多,就截取\n const { domain, range, paddingOuter, paddingInner, flex: F, round, align } = options;\n const n = domain.length;\n const flex = splice(F, n);\n // 根据下面的等式可以计算出所有 step 的总和\n // stepSum = step1 + step2 ... + stepN;\n // stepAverage = stepSum / n;\n // PO = stepAverage * paddingOuter;\n // PI = stepAverage * paddingInner;\n // width = PO * 2 + stepSum - PI;\n const [start, end] = range;\n const width = end - start;\n const ratio = (2 / n) * paddingOuter + 1 - (1 / n) * paddingInner;\n const stepSum = width / ratio;\n // stepSum = (b1 + PI) + (b2 + PI) ... + (bN + PI)\n // = bandSum + PI * n;\n const PI = (stepSum * paddingInner) / n;\n const bandWidthSum = stepSum - n * PI;\n // 计算出最小的 bandWidth\n const normalizedFlex = normalize(flex);\n const flexSum = normalizedFlex.reduce((sum, value) => sum + value);\n const minBandWidth = bandWidthSum / flexSum;\n // 计算每个 bandWidth 和 step,并且用定义域内的值索引\n const valueBandWidth = new InternMap(domain.map((d, i) => {\n const bandWidth = normalizedFlex[i] * minBandWidth;\n return [d, round ? Math.floor(bandWidth) : bandWidth];\n }));\n const valueStep = new InternMap(domain.map((d, i) => {\n const bandWidth = normalizedFlex[i] * minBandWidth;\n const step = bandWidth + PI;\n return [d, round ? Math.floor(step) : step];\n }));\n // 计算起始位置的偏移量\n // 因为 step 可能被 round 了,重新计算所有的 step 的总和\n const finalStepSum = Array.from(valueStep.values()).reduce((sum, value) => sum + value);\n const outerPaddingSum = width - (finalStepSum - (finalStepSum / n) * paddingInner);\n const offset = outerPaddingSum * align;\n // 计算 adjustedRange,也就是 domain 中每个值映射之后的值\n const bandStart = start + offset;\n let prev = round ? Math.round(bandStart) : bandStart;\n const adjustedRange = new Array(n);\n for (let i = 0; i < n; i += 1) {\n // 简单处理精度问题\n adjustedRange[i] = pretty(prev);\n const value = domain[i];\n prev += valueStep.get(value);\n }\n return {\n valueBandWidth,\n valueStep,\n adjustedRange,\n };\n}\n/**\n * 基于 band 基础配置获取 band 的状态\n */\nfunction computeBandState(options) {\n var _a;\n const { domain } = options;\n const n = domain.length;\n if (n === 0) {\n return {\n valueBandWidth: undefined,\n valueStep: undefined,\n adjustedRange: [],\n };\n }\n const hasFlex = !!((_a = options.flex) === null || _a === void 0 ? void 0 : _a.length);\n if (hasFlex) {\n return computeFlexBandState(options);\n }\n const { range, paddingOuter, paddingInner, round, align } = options;\n let step;\n let bandWidth;\n let rangeStart = range[0];\n const rangeEnd = range[1];\n // range 的计算方式如下:\n // = stop - start\n // = (n * step(n 个 step) )\n // + (2 * step * paddingOuter(两边的 padding))\n // - (1 * step * paddingInner(多出的一个 inner))\n const deltaRange = rangeEnd - rangeStart;\n const outerTotal = paddingOuter * 2;\n const innerTotal = n - paddingInner;\n step = deltaRange / Math.max(1, outerTotal + innerTotal);\n // 优化成整数\n if (round) {\n step = Math.floor(step);\n }\n // 基于 align 实现偏移\n rangeStart += (deltaRange - step * (n - paddingInner)) * align;\n // 一个 step 的组成如下:\n // step = bandWidth + step * paddingInner,\n // 则 bandWidth = step - step * (paddingInner)\n bandWidth = step * (1 - paddingInner);\n if (round) {\n rangeStart = Math.round(rangeStart);\n bandWidth = Math.round(bandWidth);\n }\n // 转化后的 range\n const adjustedRange = new Array(n).fill(0).map((_, i) => rangeStart + i * step);\n return {\n valueStep: step,\n valueBandWidth: bandWidth,\n adjustedRange,\n };\n}\n/**\n * Band 比例尺\n *\n * 一种特殊的 ordinal scale,区别在于值域的范围是连续的。\n * 使用的场景例如柱状图,可以用来定位各个柱子水平方向距离原点开始绘制的距离、各柱子之间的间距\n *\n * 由于部分选项较为抽象,见下图描述:\n *\n * BN = bandWidthN\n * SN = stepN\n * domain = [A, B]\n *\n * 约束关系如下\n * width = PO + B1 + PI + B2 + PI ... + BN + PO;\n * PO = (S1 + S2 + ... SN) / N * paddingOuter\n * PI = (S1 + S2 + ... SN) / N * paddingInner\n * BN / BN-1 = flex[n] / flex[n-1]\n *\n * |<------------------------------------------- range ------------------------------------------->|\n * | | | | | | |\n * |<-----PO---->|<------B1--------->|<-----PI---->|<-------B2-------->|<----PI----->|<-----PO---->|\n * | | ***************** | | ***************** | | |\n * | | ******* A ******* | | ******* B ******* | | |\n * | | ***************** | | ***************** | | |\n * | |<--------------S1--------------->| <--------------S2-------------->| |\n * |-----------------------------------------------------------------------------------------------|\n *\n */\nexport class Band extends Ordinal {\n // 覆盖默认配置\n getDefaultOptions() {\n return {\n domain: [],\n range: [0, 1],\n align: 0.5,\n round: false,\n paddingInner: 0,\n paddingOuter: 0,\n padding: 0,\n unknown: defaultUnknown,\n flex: [],\n };\n }\n // 显示指定 options 的类型为 OrdinalOptions,从而推断出 O 的类型\n constructor(options) {\n super(options);\n }\n clone() {\n return new Band(this.options);\n }\n getStep(x) {\n if (this.valueStep === undefined)\n return 1;\n // 没有 flex 的情况时, valueStep 是 number 类型\n if (typeof this.valueStep === 'number') {\n return this.valueStep;\n }\n // 对于 flex 都为 1 的情况,x 不是必须要传入的\n // 这种情况所有的条的 step 都相等,所以返回第一个就好\n if (x === undefined)\n return Array.from(this.valueStep.values())[0];\n return this.valueStep.get(x);\n }\n getBandWidth(x) {\n if (this.valueBandWidth === undefined)\n return 1;\n // 没有 flex, valueBandWidth 是 number 类型\n if (typeof this.valueBandWidth === 'number') {\n return this.valueBandWidth;\n }\n // 对于 flex 都为 1 的情况,x 不是必须要传入的\n // 这种情况所有的条的 bandWidth 都相等,所以返回第一个\n if (x === undefined)\n return Array.from(this.valueBandWidth.values())[0];\n return this.valueBandWidth.get(x);\n }\n getRange() {\n return this.adjustedRange;\n }\n getPaddingInner() {\n const { padding, paddingInner } = this.options;\n return padding > 0 ? padding : paddingInner;\n }\n getPaddingOuter() {\n const { padding, paddingOuter } = this.options;\n return padding > 0 ? padding : paddingOuter;\n }\n rescale() {\n super.rescale();\n // 当用户配置了opt.padding 且非 0 时,我们覆盖已经设置的 paddingInner paddingOuter\n // 我们约定 padding 的优先级较 paddingInner 和 paddingOuter 高\n const { align, domain, range, round, flex } = this.options;\n const { adjustedRange, valueBandWidth, valueStep } = computeBandState({\n align,\n range,\n round,\n flex,\n paddingInner: this.getPaddingInner(),\n paddingOuter: this.getPaddingOuter(),\n domain,\n });\n // 更新必要的属性\n this.valueStep = valueStep;\n this.valueBandWidth = valueBandWidth;\n this.adjustedRange = adjustedRange;\n }\n}\n//# sourceMappingURL=band.js.map","import { tickIncrement } from '../utils';\nexport const d3Ticks = (begin, end, count) => {\n let n;\n let ticks;\n let start = begin;\n let stop = end;\n if (start === stop && count > 0) {\n return [start];\n }\n let step = tickIncrement(start, stop, count);\n if (step === 0 || !Number.isFinite(step)) {\n return [];\n }\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array((n = Math.ceil(stop - start + 1)));\n for (let i = 0; i < n; i += 1) {\n ticks[i] = (start + i) * step;\n }\n }\n else {\n step = -step;\n start = Math.ceil(start * step);\n stop = Math.floor(stop * step);\n ticks = new Array((n = Math.ceil(stop - start + 1)));\n for (let i = 0; i < n; i += 1) {\n ticks[i] = (start + i) / step;\n }\n }\n return ticks;\n};\n//# sourceMappingURL=d3-ticks.js.map","import { isNumber } from '@antv/util';\nimport { d3Ticks } from '../tick-methods/d3-ticks';\nimport { Base } from './base';\nexport class Constant extends Base {\n /**\n * 返回需要覆盖的默认选项\n * @returns 需要覆盖的默认选项\n */\n getDefaultOptions() {\n return {\n range: [0],\n domain: [0, 1],\n unknown: undefined,\n tickCount: 5,\n tickMethod: d3Ticks,\n };\n }\n /**\n * 输入和输出满足:y = b,其中 b 是一个常量,是 options.range 的第一个元素\n * @param _ 输入值\n * @returns 输出值(常量)\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n map(_) {\n const [v] = this.options.range;\n return v !== undefined ? v : this.options.unknown;\n }\n /**\n * 如果 x 是该比例尺的常量(\bx === b),返回输入值的范围(即定义域),否者返回 []\n * @param x 输出值 (常量)\n * @returns 定义域\n */\n invert(x) {\n const [v] = this.options.range;\n return x === v && v !== undefined ? this.options.domain : [];\n }\n getTicks() {\n const { tickMethod, domain, tickCount } = this.options;\n const [a, b] = domain;\n if (!isNumber(a) || !isNumber(b))\n return [];\n return tickMethod(a, b, tickCount);\n }\n /**\n * 克隆 Constant Scale\n * @returns 拥有相同选项且独立的 Constant Scale\n */\n clone() {\n return new Constant(this.options);\n }\n}\n//# sourceMappingURL=constant.js.map","// 为了解决 js 运算的精度问题\nexport function prettyNumber(n) {\n return Math.abs(n) < 1e-14 ? n : parseFloat(n.toFixed(14));\n}\n//# sourceMappingURL=pretty-number.js.map","import { indexOf, size } from '@antv/util';\nimport { prettyNumber } from '../utils/pretty-number';\nexport const DEFAULT_Q = [1, 5, 2, 2.5, 4, 3];\nexport const ALL_Q = [1, 5, 2, 2.5, 4, 3, 1.5, 7, 6, 8, 9];\nconst eps = Number.EPSILON * 100;\nfunction mod(n, m) {\n return ((n % m) + m) % m;\n}\nfunction round(n) {\n return Math.round(n * 1e12) / 1e12;\n}\nfunction simplicity(q, Q, j, lmin, lmax, lstep) {\n const n = size(Q);\n const i = indexOf(Q, q);\n let v = 0;\n const m = mod(lmin, lstep);\n if ((m < eps || lstep - m < eps) && lmin <= 0 && lmax >= 0) {\n v = 1;\n }\n return 1 - i / (n - 1) - j + v;\n}\nfunction simplicityMax(q, Q, j) {\n const n = size(Q);\n const i = indexOf(Q, q);\n const v = 1;\n return 1 - i / (n - 1) - j + v;\n}\nfunction density(k, m, dMin, dMax, lMin, lMax) {\n const r = (k - 1) / (lMax - lMin);\n const rt = (m - 1) / (Math.max(lMax, dMax) - Math.min(dMin, lMin));\n return 2 - Math.max(r / rt, rt / r);\n}\nfunction densityMax(k, m) {\n if (k >= m) {\n return 2 - (k - 1) / (m - 1);\n }\n return 1;\n}\nfunction coverage(dMin, dMax, lMin, lMax) {\n const range = dMax - dMin;\n return 1 - (0.5 * ((dMax - lMax) ** 2 + (dMin - lMin) ** 2)) / (0.1 * range) ** 2;\n}\nfunction coverageMax(dMin, dMax, span) {\n const range = dMax - dMin;\n if (span > range) {\n const half = (span - range) / 2;\n return 1 - half ** 2 / (0.1 * range) ** 2;\n }\n return 1;\n}\nfunction legibility() {\n return 1;\n}\n/**\n * An Extension of Wilkinson's Algorithm for Position Tick Labels on Axes\n * https://www.yuque.com/preview/yuque/0/2019/pdf/185317/1546999150858-45c3b9c2-4e86-4223-bf1a-8a732e8195ed.pdf\n * @param dMin 最小值\n * @param dMax 最大值\n * @param m tick个数\n * @param onlyLoose 是否允许扩展min、max,不绝对强制,例如[3, 97]\n * @param Q nice numbers集合\n * @param w 四个优化组件的权重\n */\nexport const wilkinsonExtended = (dMin, dMax, n = 5, onlyLoose = true, Q = DEFAULT_Q, w = [0.25, 0.2, 0.5, 0.05]) => {\n const m = n < 0 ? 0 : Math.round(n);\n // nan 也会导致异常\n if (Number.isNaN(dMin) || Number.isNaN(dMax) || typeof dMin !== 'number' || typeof dMax !== 'number' || !m) {\n return [];\n }\n // js 极大值极小值问题,差值小于 1e-15 会导致计算出错\n if (dMax - dMin < 1e-15 || m === 1) {\n return [dMin];\n }\n const best = {\n score: -2,\n lmin: 0,\n lmax: 0,\n lstep: 0,\n };\n let j = 1;\n while (j < Infinity) {\n // for (const q of Q)\n for (let i = 0; i < Q.length; i += 1) {\n const q = Q[i];\n const sm = simplicityMax(q, Q, j);\n if (w[0] * sm + w[1] + w[2] + w[3] < best.score) {\n j = Infinity;\n break;\n }\n let k = 2;\n while (k < Infinity) {\n const dm = densityMax(k, m);\n if (w[0] * sm + w[1] + w[2] * dm + w[3] < best.score) {\n break;\n }\n const delta = (dMax - dMin) / (k + 1) / j / q;\n let z = Math.ceil(Math.log10(delta));\n while (z < Infinity) {\n const step = j * q * 10 ** z;\n const cm = coverageMax(dMin, dMax, step * (k - 1));\n if (w[0] * sm + w[1] * cm + w[2] * dm + w[3] < best.score) {\n break;\n }\n const minStart = Math.floor(dMax / step) * j - (k - 1) * j;\n const maxStart = Math.ceil(dMin / step) * j;\n if (minStart <= maxStart) {\n const count = maxStart - minStart;\n for (let i = 0; i <= count; i += 1) {\n const start = minStart + i;\n const lMin = start * (step / j);\n const lMax = lMin + step * (k - 1);\n const lStep = step;\n const s = simplicity(q, Q, j, lMin, lMax, lStep);\n const c = coverage(dMin, dMax, lMin, lMax);\n const g = density(k, m, dMin, dMax, lMin, lMax);\n const l = legibility();\n const score = w[0] * s + w[1] * c + w[2] * g + w[3] * l;\n if (score > best.score && (!onlyLoose || (lMin <= dMin && lMax >= dMax))) {\n best.lmin = lMin;\n best.lmax = lMax;\n best.lstep = lStep;\n best.score = score;\n }\n }\n }\n z += 1;\n }\n k += 1;\n }\n }\n j += 1;\n }\n // 处理精度问题,保证这三个数没有精度问题\n const lmax = prettyNumber(best.lmax);\n const lmin = prettyNumber(best.lmin);\n const lstep = prettyNumber(best.lstep);\n // 加 round 是为处理 extended(0.94, 1, 5)\n // 保证生成的 tickCount 没有精度问题\n const tickCount = Math.floor(round((lmax - lmin) / lstep)) + 1;\n const ticks = new Array(tickCount);\n // 少用乘法:防止出现 -1.2 + 1.2 * 3 = 2.3999999999999995 的情况\n ticks[0] = prettyNumber(lmin);\n for (let i = 1; i < tickCount; i += 1) {\n ticks[i] = prettyNumber(ticks[i - 1] + lstep);\n }\n return ticks;\n};\n//# sourceMappingURL=wilkinson-extended.js.map","import { isNumber } from '@antv/util';\nimport { Base } from './base';\nimport { wilkinsonExtended } from '../tick-methods/wilkinson-extended';\nimport { isValid } from '../utils';\nexport class Identity extends Base {\n /**\n * 返回需要覆盖的默认选项\n * @returns 需要覆盖的默认选项\n */\n getDefaultOptions() {\n return {\n domain: [0, 1],\n range: [0, 1],\n tickCount: 5,\n unknown: undefined,\n tickMethod: wilkinsonExtended,\n };\n }\n /**\n * 输入和输出满足:y = x\n * @param x 输入值\n * @returns 输出值\n */\n map(x) {\n return isValid(x) ? x : this.options.unknown;\n }\n /**\n * map 的逆运算:x = y,在这里和 map 是相同方法\n * @param x 输出值\n * @returns 输入值\n */\n invert(x) {\n return this.map(x);\n }\n /**\n * 克隆 Identity Scale\n * @returns 拥有相同选项且独立的 Identity Scale\n */\n clone() {\n return new Identity(this.options);\n }\n /**\n * 根据比例尺的配置去生成 ticks,该 ticks 主要用于生成坐标轴\n * @returns 返回一个 ticks 的数组\n */\n getTicks() {\n const { domain, tickCount, tickMethod } = this.options;\n const [min, max] = domain;\n if (!isNumber(min) || !isNumber(max))\n return [];\n return tickMethod(min, max, tickCount);\n }\n}\n//# sourceMappingURL=identity.js.map","import { identity } from '@antv/util';\nimport { Base } from './base';\nimport { createInterpolateNumber, createInterpolateRound, createClamp, createNormalize, bisect, compose, d3LinearNice, isValid, } from '../utils';\n/** 当 domain 和 range 只有一段的时候的 map 的 工厂函数 */\nconst createBiMap = (domain, range, createInterpolate) => {\n const [d0, d1] = domain;\n const [r0, r1] = range;\n let normalize;\n let interpolate;\n if (d0 < d1) {\n normalize = createNormalize(d0, d1);\n interpolate = createInterpolate(r0, r1);\n }\n else {\n normalize = createNormalize(d1, d0);\n interpolate = createInterpolate(r1, r0);\n }\n return compose(interpolate, normalize);\n};\n/** 当 domain 和 range 有多段时候的 map 的 工厂函数 */\nconst createPolyMap = (domain, range, createInterpolate) => {\n const len = Math.min(domain.length, range.length) - 1;\n const normalizeList = new Array(len);\n const interpolateList = new Array(len);\n const reverse = domain[0] > domain[len];\n const ascendingDomain = reverse ? [...domain].reverse() : domain;\n const ascendingRange = reverse ? [...range].reverse() : range;\n // 每一段都生成 normalize 和 interpolate\n for (let i = 0; i < len; i += 1) {\n normalizeList[i] = createNormalize(ascendingDomain[i], ascendingDomain[i + 1]);\n interpolateList[i] = createInterpolate(ascendingRange[i], ascendingRange[i + 1]);\n }\n // 二分最右查找到相应的 normalize 和 interpolate\n return (x) => {\n const i = bisect(domain, x, 1, len) - 1;\n const normalize = normalizeList[i];\n const interpolate = interpolateList[i];\n return compose(interpolate, normalize)(x);\n };\n};\n/** 选择一个分段映射的函数 */\nconst choosePiecewise = (domain, range, interpolate, shouldRound) => {\n const n = Math.min(domain.length, range.length);\n const createPiecewise = n > 2 ? createPolyMap : createBiMap;\n const createInterpolate = shouldRound ? createInterpolateRound : interpolate;\n return createPiecewise(domain, range, createInterpolate);\n};\n/**\n * Continuous 比例尺 的输入 x 和输出 y 满足:y = a * f(x) + b\n * 通过函数柯里化和复合函数可以在映射过程中去掉分支,提高性能。\n * 参考:https://github.com/d3/d3-scale/blob/master/src/continuous.js\n */\nexport class Continuous extends Base {\n getDefaultOptions() {\n return {\n domain: [0, 1],\n range: [0, 1],\n nice: false,\n clamp: false,\n round: false,\n interpolate: createInterpolateNumber,\n tickCount: 5,\n };\n }\n /**\n * y = interpolate(normalize(clamp(transform(x))))\n */\n map(x) {\n if (!isValid(x))\n return this.options.unknown;\n return this.output(x);\n }\n /**\n * x = transform(clamp(interpolate(normalize(y))))\n */\n invert(x) {\n if (!isValid(x))\n return this.options.unknown;\n return this.input(x);\n }\n nice() {\n if (!this.options.nice)\n return;\n const [min, max, tickCount, ...rest] = this.getTickMethodOptions();\n this.options.domain = this.chooseNice()(min, max, tickCount, ...rest);\n }\n getTicks() {\n const { tickMethod } = this.options;\n const [min, max, tickCount, ...rest] = this.getTickMethodOptions();\n return tickMethod(min, max, tickCount, ...rest);\n }\n getTickMethodOptions() {\n const { domain, tickCount } = this.options;\n const min = domain[0];\n const max = domain[domain.length - 1];\n return [min, max, tickCount];\n }\n chooseNice() {\n return d3LinearNice;\n }\n rescale() {\n this.nice();\n const [transform, untransform] = this.chooseTransforms();\n this.composeOutput(transform, this.chooseClamp(transform));\n this.composeInput(transform, untransform, this.chooseClamp(untransform));\n }\n chooseClamp(transform) {\n const { clamp: shouldClamp, range } = this.options;\n const domain = this.options.domain.map(transform);\n const n = Math.min(domain.length, range.length);\n return shouldClamp ? createClamp(domain[0], domain[n - 1]) : identity;\n }\n composeOutput(transform, clamp) {\n const { domain, range, round, interpolate } = this.options;\n const piecewise = choosePiecewise(domain.map(transform), range, interpolate, round);\n this.output = compose(piecewise, clamp, transform);\n }\n composeInput(transform, untransform, clamp) {\n const { domain, range } = this.options;\n const piecewise = choosePiecewise(range, domain.map(transform), createInterpolateNumber);\n this.input = compose(untransform, clamp, piecewise);\n }\n}\n//# sourceMappingURL=continuous.js.map","import { identity } from '@antv/util';\nimport { Continuous } from './continuous';\nimport { createInterpolateValue } from '../utils';\nimport { d3Ticks } from '../tick-methods/d3-ticks';\n/**\n * Linear 比例尺\n *\n * 构造可创建一个在输入和输出之间具有线性关系的比例尺\n */\nexport class Linear extends Continuous {\n getDefaultOptions() {\n return {\n domain: [0, 1],\n range: [0, 1],\n unknown: undefined,\n nice: false,\n clamp: false,\n round: false,\n interpolate: createInterpolateValue,\n tickMethod: d3Ticks,\n tickCount: 5,\n };\n }\n chooseTransforms() {\n return [identity, identity];\n }\n clone() {\n return new Linear(this.options);\n }\n}\n//# sourceMappingURL=linear.js.map","import { Band } from './band';\nimport { defaultUnknown } from './ordinal';\n/**\n * Point 比例尺\n *\n * 一种特殊的 band scale,它的 bandWidth 恒为 0。\n *\n * 由于部分选项较为抽象,见下图描述:\n *\n * PO = Padding = PaddingInner\n * domain = [\"A\", \"B\", \"C\"]\n *\n * |<------------------------------------------- range ------------------------------------------->|\n * | | | | |\n * |<--step*PO-->|<--------------step------------->|<--------------step------------->|<--step*PO-->|\n * | | | | |\n * | A B C |\n * |-----------------------------------------------------------------------------------------------|\n *\n * 性能方便较 d3 快出 8 - 9 倍\n */\nexport class Point extends Band {\n // 覆盖默认配置\n getDefaultOptions() {\n return {\n domain: [],\n range: [0, 1],\n align: 0.5,\n round: false,\n padding: 0,\n unknown: defaultUnknown,\n paddingInner: 1,\n paddingOuter: 0,\n };\n }\n // 能接受的参数只是 PointOptions,不能有 paddingInner 这些属性\n constructor(options) {\n super(options);\n }\n // Point 的 paddingInner 只能是1,不能被覆盖\n getPaddingInner() {\n return 1;\n }\n clone() {\n return new Point(this.options);\n }\n update(options) {\n super.update(options);\n }\n getPaddingOuter() {\n return this.options.padding;\n }\n}\n//# sourceMappingURL=point.js.map","import { identity } from '@antv/util';\nimport { Continuous } from './continuous';\nimport { createInterpolateValue } from '../utils';\nimport { d3Ticks } from '../tick-methods/d3-ticks';\nconst transformPow = (exponent) => {\n return (x) => {\n return x < 0 ? -((-x) ** exponent) : x ** exponent;\n };\n};\nconst transformPowInvert = (exponent) => {\n return (x) => {\n return x < 0 ? -((-x) ** (1 / exponent)) : x ** (1 / exponent);\n };\n};\nconst transformSqrt = (x) => {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n};\n/**\n * Pow 比例尺\n *\n * 类似于 linear scale, 不同之处在于在计算输出范围值之前对输入域值应用了指数变换,.\n * 即 y = x ^ k 其中 k(指数)可以是任何实数。\n */\nexport class Pow extends Continuous {\n getDefaultOptions() {\n return {\n domain: [0, 1],\n range: [0, 1],\n nice: false,\n clamp: false,\n round: false,\n exponent: 2,\n interpolate: createInterpolateValue,\n tickMethod: d3Ticks,\n tickCount: 5,\n };\n }\n // 显示指定 options 的类型为 PowOptions O 的类型\n constructor(options) {\n super(options);\n }\n chooseTransforms() {\n const { exponent } = this.options;\n if (exponent === 1)\n return [identity, identity];\n const transform = exponent === 0.5 ? transformSqrt : transformPow(exponent);\n const untransform = transformPowInvert(exponent);\n return [transform, untransform];\n }\n clone() {\n return new Pow(this.options);\n }\n}\n//# sourceMappingURL=pow.js.map","import { createInterpolateValue } from '../utils';\nimport { Pow } from './pow';\nimport { d3Ticks } from '../tick-methods/d3-ticks';\nexport class Sqrt extends Pow {\n getDefaultOptions() {\n return {\n domain: [0, 1],\n range: [0, 1],\n nice: false,\n clamp: false,\n round: false,\n interpolate: createInterpolateValue,\n tickMethod: d3Ticks,\n tickCount: 5,\n exponent: 0.5,\n };\n }\n constructor(options) {\n super(options);\n }\n update(options) {\n super.update(options);\n }\n clone() {\n return new Sqrt(this.options);\n }\n}\n//# sourceMappingURL=sqrt.js.map","import { Base } from './base';\nimport { bisect, isValid } from '../utils';\n/**\n * 将连续的定义域分段,每一段所有的值对应离散的值域中一个值\n */\nexport class Threshold extends Base {\n getDefaultOptions() {\n return {\n domain: [0.5],\n range: [0, 1],\n };\n }\n constructor(options) {\n super(options);\n }\n /**\n * 二分查找到输入值在哪一段,返回对应的值域中的值\n */\n map(x) {\n if (!isValid(x))\n return this.options.unknown;\n const index = bisect(this.thresholds, x, 0, this.n);\n return this.options.range[index];\n }\n /**\n * 在值域中找到对应的值,并返回在定义域中属于哪一段\n */\n invert(y) {\n const { range } = this.options;\n const index = range.indexOf(y);\n const domain = this.thresholds;\n return [domain[index - 1], domain[index]];\n }\n clone() {\n return new Threshold(this.options);\n }\n rescale() {\n const { domain, range } = this.options;\n this.n = Math.min(domain.length, range.length - 1);\n this.thresholds = domain;\n }\n}\n//# sourceMappingURL=threshold.js.map","import { d3Ticks } from './d3-ticks';\nimport { pows, logs } from '../utils';\nexport const d3Log = (a, b, n, base = 10) => {\n const shouldReflect = a < 0;\n const pow = pows(base, shouldReflect);\n const log = logs(base, shouldReflect);\n const r = b < a;\n const min = r ? b : a;\n const max = r ? a : b;\n let i = log(min);\n let j = log(max);\n let ticks = [];\n // 如果 base 是整数\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i);\n j = Math.ceil(j);\n if (shouldReflect) {\n for (; i <= j; i += 1) {\n const p = pow(i);\n for (let k = base - 1; k >= 1; k -= 1) {\n const t = p * k;\n if (t > max)\n break;\n if (t >= min)\n ticks.push(t);\n }\n }\n }\n else {\n for (; i <= j; i += 1) {\n const p = pow(i);\n for (let k = 1; k < base; k += 1) {\n const t = p * k;\n if (t > max)\n break;\n if (t >= min)\n ticks.push(t);\n }\n }\n }\n if (ticks.length * 2 < n)\n ticks = d3Ticks(min, max, n);\n }\n else {\n const count = n === -1 ? j - i : Math.min(j - i, n);\n ticks = d3Ticks(i, j, count).map(pow);\n }\n return r ? ticks.reverse() : ticks;\n};\n//# sourceMappingURL=d3-log.js.map","import { Continuous } from './continuous';\nimport { createInterpolateValue, logs, pows } from '../utils';\nimport { d3Log } from '../tick-methods/d3-log';\nimport { d3LogNice } from '../utils/d3-log-nice';\n/**\n * Linear 比例尺\n *\n * 构造一个线性的对数比例尺\n */\nexport class Log extends Continuous {\n getDefaultOptions() {\n return {\n domain: [1, 10],\n range: [0, 1],\n base: 10,\n interpolate: createInterpolateValue,\n tickMethod: d3Log,\n tickCount: 5,\n };\n }\n chooseNice() {\n return d3LogNice;\n }\n getTickMethodOptions() {\n const { domain, tickCount, base } = this.options;\n const min = domain[0];\n const max = domain[domain.length - 1];\n return [min, max, tickCount, base];\n }\n chooseTransforms() {\n const { base, domain } = this.options;\n const shouldReflect = domain[0] < 0;\n return [logs(base, shouldReflect), pows(base, shouldReflect)];\n }\n clone() {\n return new Log(this.options);\n }\n}\n//# sourceMappingURL=log.js.map","import { Threshold } from './threshold';\nimport { wilkinsonExtended } from '../tick-methods/wilkinson-extended';\nimport { d3LinearNice } from '../utils';\n/**\n * 类似 Threshold 比例尺,区别在于 thresholds 是根据连续的 domain 根据离散的 range 的数量计算而得到的。\n */\nexport class Quantize extends Threshold {\n getDefaultOptions() {\n return {\n domain: [0, 1],\n range: [0.5],\n nice: false,\n tickCount: 5,\n tickMethod: wilkinsonExtended,\n };\n }\n constructor(options) {\n super(options);\n }\n nice() {\n const { nice } = this.options;\n if (nice) {\n const [min, max, tickCount] = this.getTickMethodOptions();\n this.options.domain = d3LinearNice(min, max, tickCount);\n }\n }\n getTicks() {\n const { tickMethod } = this.options;\n const [min, max, tickCount] = this.getTickMethodOptions();\n return tickMethod(min, max, tickCount);\n }\n getTickMethodOptions() {\n const { domain, tickCount } = this.options;\n const min = domain[0];\n const max = domain[domain.length - 1];\n return [min, max, tickCount];\n }\n rescale() {\n this.nice();\n const { range, domain } = this.options;\n const [x0, x1] = domain;\n this.n = range.length - 1;\n this.thresholds = new Array(this.n);\n for (let i = 0; i < this.n; i += 1) {\n this.thresholds[i] = ((i + 1) * x1 - (i - this.n) * x0) / (this.n + 1);\n }\n }\n /**\n * 如果是在第一段后或者最后一段就把两端的值添加上\n */\n invert(y) {\n const [a, b] = super.invert(y);\n const [x0, x1] = this.options.domain;\n return a === undefined && b === undefined ? [a, b] : [a || x0, b || x1];\n }\n getThresholds() {\n return this.thresholds;\n }\n clone() {\n return new Quantize(this.options);\n }\n}\n//# sourceMappingURL=quantize.js.map","/**\n * 给予一个排序好的数组,分位数\n *\n * @param arr 排序好的数组\n * @param percentage 百分比\n * @returns {number} 计算结果\n */\nfunction quantileSorted(arr, percentage) {\n const len = arr.length;\n if (!len) {\n return undefined;\n }\n if (len < 2) {\n return arr[len - 1];\n }\n const i = (len - 1) * percentage;\n const i0 = Math.floor(i);\n const v0 = arr[i0];\n const v1 = arr[i0 + 1];\n return v0 + (v1 - v0) * (i - i0);\n}\n/**\n * 给定一个数组, 创建分位数数组\n *\n * @param arr 排序好的数组\n * @param n 分位数数组长度\n * @param isSorted 数组是否排序好\n * @returns {number[]} 分位数数组\n */\nexport function createQuartile(arr, n, isSorted = false) {\n const numberArr = arr;\n if (!isSorted) {\n numberArr.sort((a, b) => a - b);\n }\n const tmp = [];\n for (let i = 1; i < n; i += 1) {\n tmp.push(quantileSorted(numberArr, i / n));\n }\n return tmp;\n}\n//# sourceMappingURL=create-quartile.js.map","import { Threshold } from './threshold';\nimport { wilkinsonExtended } from '../tick-methods/wilkinson-extended';\nimport { createQuartile } from '../utils/create-quartile';\n/**\n * 类似 Threshold 比例尺,区别在于分位数比例尺 (Quantile) 将一个离散的输入域映射到一个离散的输出域\n * 输入域被指定为一组离散的样本值,输出域中的值的数量决定了分位数的数量。\n */\nexport class Quantile extends Threshold {\n getDefaultOptions() {\n return {\n domain: [],\n range: [],\n tickCount: 5,\n unknown: undefined,\n tickMethod: wilkinsonExtended,\n };\n }\n constructor(options) {\n super(options);\n }\n rescale() {\n const { domain, range } = this.options;\n this.n = range.length - 1;\n this.thresholds = createQuartile(domain, this.n + 1, false);\n }\n /**\n * 如果是在第一段后或者最后一段就把两端的值添加上\n */\n invert(y) {\n const [a, b] = super.invert(y);\n const { domain } = this.options;\n const dMin = domain[0];\n const dMax = domain[domain.length - 1];\n return a === undefined && b === undefined ? [a, b] : [a || dMin, b || dMax];\n }\n getThresholds() {\n return this.thresholds;\n }\n clone() {\n return new Quantile(this.options);\n }\n getTicks() {\n const { tickCount, domain, tickMethod } = this.options;\n const lastIndex = domain.length - 1;\n const min = domain[0];\n const max = domain[lastIndex];\n return tickMethod(min, max, tickCount);\n }\n}\n//# sourceMappingURL=quantile.js.map","var token = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\nvar twoDigitsOptional = \"\\\\d\\\\d?\";\nvar twoDigits = \"\\\\d\\\\d\";\nvar threeDigits = \"\\\\d{3}\";\nvar fourDigits = \"\\\\d{4}\";\nvar word = \"[^\\\\s]+\";\nvar literal = /\\[([^]*?)\\]/gm;\nfunction shorten(arr, sLen) {\n var newArr = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n newArr.push(arr[i].substr(0, sLen));\n }\n return newArr;\n}\nvar monthUpdate = function (arrName) { return function (v, i18n) {\n var lowerCaseArr = i18n[arrName].map(function (v) { return v.toLowerCase(); });\n var index = lowerCaseArr.indexOf(v.toLowerCase());\n if (index > -1) {\n return index;\n }\n return null;\n}; };\nfunction assign(origObj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var obj = args_1[_a];\n for (var key in obj) {\n // @ts-ignore ex\n origObj[key] = obj[key];\n }\n }\n return origObj;\n}\nvar dayNames = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\nvar monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\nvar monthNamesShort = shorten(monthNames, 3);\nvar dayNamesShort = shorten(dayNames, 3);\nvar defaultI18n = {\n dayNamesShort: dayNamesShort,\n dayNames: dayNames,\n monthNamesShort: monthNamesShort,\n monthNames: monthNames,\n amPm: [\"am\", \"pm\"],\n DoFn: function (dayOfMonth) {\n return (dayOfMonth +\n [\"th\", \"st\", \"nd\", \"rd\"][dayOfMonth % 10 > 3\n ? 0\n : ((dayOfMonth - (dayOfMonth % 10) !== 10 ? 1 : 0) * dayOfMonth) % 10]);\n }\n};\nvar globalI18n = assign({}, defaultI18n);\nvar setGlobalDateI18n = function (i18n) {\n return (globalI18n = assign(globalI18n, i18n));\n};\nvar regexEscape = function (str) {\n return str.replace(/[|\\\\{()[^$+*?.-]/g, \"\\\\$&\");\n};\nvar pad = function (val, len) {\n if (len === void 0) { len = 2; }\n val = String(val);\n while (val.length < len) {\n val = \"0\" + val;\n }\n return val;\n};\nvar formatFlags = {\n D: function (dateObj) { return String(dateObj.getDate()); },\n DD: function (dateObj) { return pad(dateObj.getDate()); },\n Do: function (dateObj, i18n) {\n return i18n.DoFn(dateObj.getDate());\n },\n d: function (dateObj) { return String(dateObj.getDay()); },\n dd: function (dateObj) { return pad(dateObj.getDay()); },\n ddd: function (dateObj, i18n) {\n return i18n.dayNamesShort[dateObj.getDay()];\n },\n dddd: function (dateObj, i18n) {\n return i18n.dayNames[dateObj.getDay()];\n },\n M: function (dateObj) { return String(dateObj.getMonth() + 1); },\n MM: function (dateObj) { return pad(dateObj.getMonth() + 1); },\n MMM: function (dateObj, i18n) {\n return i18n.monthNamesShort[dateObj.getMonth()];\n },\n MMMM: function (dateObj, i18n) {\n return i18n.monthNames[dateObj.getMonth()];\n },\n YY: function (dateObj) {\n return pad(String(dateObj.getFullYear()), 4).substr(2);\n },\n YYYY: function (dateObj) { return pad(dateObj.getFullYear(), 4); },\n h: function (dateObj) { return String(dateObj.getHours() % 12 || 12); },\n hh: function (dateObj) { return pad(dateObj.getHours() % 12 || 12); },\n H: function (dateObj) { return String(dateObj.getHours()); },\n HH: function (dateObj) { return pad(dateObj.getHours()); },\n m: function (dateObj) { return String(dateObj.getMinutes()); },\n mm: function (dateObj) { return pad(dateObj.getMinutes()); },\n s: function (dateObj) { return String(dateObj.getSeconds()); },\n ss: function (dateObj) { return pad(dateObj.getSeconds()); },\n S: function (dateObj) {\n return String(Math.round(dateObj.getMilliseconds() / 100));\n },\n SS: function (dateObj) {\n return pad(Math.round(dateObj.getMilliseconds() / 10), 2);\n },\n SSS: function (dateObj) { return pad(dateObj.getMilliseconds(), 3); },\n a: function (dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];\n },\n A: function (dateObj, i18n) {\n return dateObj.getHours() < 12\n ? i18n.amPm[0].toUpperCase()\n : i18n.amPm[1].toUpperCase();\n },\n ZZ: function (dateObj) {\n var offset = dateObj.getTimezoneOffset();\n return ((offset > 0 ? \"-\" : \"+\") +\n pad(Math.floor(Math.abs(offset) / 60) * 100 + (Math.abs(offset) % 60), 4));\n },\n Z: function (dateObj) {\n var offset = dateObj.getTimezoneOffset();\n return ((offset > 0 ? \"-\" : \"+\") +\n pad(Math.floor(Math.abs(offset) / 60), 2) +\n \":\" +\n pad(Math.abs(offset) % 60, 2));\n }\n};\nvar monthParse = function (v) { return +v - 1; };\nvar emptyDigits = [null, twoDigitsOptional];\nvar emptyWord = [null, word];\nvar amPm = [\n \"isPm\",\n word,\n function (v, i18n) {\n var val = v.toLowerCase();\n if (val === i18n.amPm[0]) {\n return 0;\n }\n else if (val === i18n.amPm[1]) {\n return 1;\n }\n return null;\n }\n];\nvar timezoneOffset = [\n \"timezoneOffset\",\n \"[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z?\",\n function (v) {\n var parts = (v + \"\").match(/([+-]|\\d\\d)/gi);\n if (parts) {\n var minutes = +parts[1] * 60 + parseInt(parts[2], 10);\n return parts[0] === \"+\" ? minutes : -minutes;\n }\n return 0;\n }\n];\nvar parseFlags = {\n D: [\"day\", twoDigitsOptional],\n DD: [\"day\", twoDigits],\n Do: [\"day\", twoDigitsOptional + word, function (v) { return parseInt(v, 10); }],\n M: [\"month\", twoDigitsOptional, monthParse],\n MM: [\"month\", twoDigits, monthParse],\n YY: [\n \"year\",\n twoDigits,\n function (v) {\n var now = new Date();\n var cent = +(\"\" + now.getFullYear()).substr(0, 2);\n return +(\"\" + (+v > 68 ? cent - 1 : cent) + v);\n }\n ],\n h: [\"hour\", twoDigitsOptional, undefined, \"isPm\"],\n hh: [\"hour\", twoDigits, undefined, \"isPm\"],\n H: [\"hour\", twoDigitsOptional],\n HH: [\"hour\", twoDigits],\n m: [\"minute\", twoDigitsOptional],\n mm: [\"minute\", twoDigits],\n s: [\"second\", twoDigitsOptional],\n ss: [\"second\", twoDigits],\n YYYY: [\"year\", fourDigits],\n S: [\"millisecond\", \"\\\\d\", function (v) { return +v * 100; }],\n SS: [\"millisecond\", twoDigits, function (v) { return +v * 10; }],\n SSS: [\"millisecond\", threeDigits],\n d: emptyDigits,\n dd: emptyDigits,\n ddd: emptyWord,\n dddd: emptyWord,\n MMM: [\"month\", word, monthUpdate(\"monthNamesShort\")],\n MMMM: [\"month\", word, monthUpdate(\"monthNames\")],\n a: amPm,\n A: amPm,\n ZZ: timezoneOffset,\n Z: timezoneOffset\n};\n// Some common format strings\nvar globalMasks = {\n default: \"ddd MMM DD YYYY HH:mm:ss\",\n shortDate: \"M/D/YY\",\n mediumDate: \"MMM D, YYYY\",\n longDate: \"MMMM D, YYYY\",\n fullDate: \"dddd, MMMM D, YYYY\",\n isoDate: \"YYYY-MM-DD\",\n isoDateTime: \"YYYY-MM-DDTHH:mm:ssZ\",\n shortTime: \"HH:mm\",\n mediumTime: \"HH:mm:ss\",\n longTime: \"HH:mm:ss.SSS\"\n};\nvar setGlobalDateMasks = function (masks) { return assign(globalMasks, masks); };\n/***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n * @returns {string} Formatted date string\n */\nvar format = function (dateObj, mask, i18n) {\n if (mask === void 0) { mask = globalMasks[\"default\"]; }\n if (i18n === void 0) { i18n = {}; }\n if (typeof dateObj === \"number\") {\n dateObj = new Date(dateObj);\n }\n if (Object.prototype.toString.call(dateObj) !== \"[object Date]\" ||\n isNaN(dateObj.getTime())) {\n throw new Error(\"Invalid Date pass to format\");\n }\n mask = globalMasks[mask] || mask;\n var literals = [];\n // Make literals inactive by replacing them with @@@\n mask = mask.replace(literal, function ($0, $1) {\n literals.push($1);\n return \"@@@\";\n });\n var combinedI18nSettings = assign(assign({}, globalI18n), i18n);\n // Apply formatting rules\n mask = mask.replace(token, function ($0) {\n return formatFlags[$0](dateObj, combinedI18nSettings);\n });\n // Inline literal values back into the formatted value\n return mask.replace(/@@@/g, function () { return literals.shift(); });\n};\n/**\n * Parse a date string into a Javascript Date object /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @param {i18n} I18nSettingsOptional Full or subset of I18N settings\n * @returns {Date|null} Returns Date object. Returns null what date string is invalid or doesn't match format\n */\nfunction parse(dateStr, format, i18n) {\n if (i18n === void 0) { i18n = {}; }\n if (typeof format !== \"string\") {\n throw new Error(\"Invalid format in fecha parse\");\n }\n // Check to see if the format is actually a mask\n format = globalMasks[format] || format;\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (dateStr.length > 1000) {\n return null;\n }\n // Default to the beginning of the year.\n var today = new Date();\n var dateInfo = {\n year: today.getFullYear(),\n month: 0,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n isPm: null,\n timezoneOffset: null\n };\n var parseInfo = [];\n var literals = [];\n // Replace all the literals with @@@. Hopefully a string that won't exist in the format\n var newFormat = format.replace(literal, function ($0, $1) {\n literals.push(regexEscape($1));\n return \"@@@\";\n });\n var specifiedFields = {};\n var requiredFields = {};\n // Change every token that we find into the correct regex\n newFormat = regexEscape(newFormat).replace(token, function ($0) {\n var info = parseFlags[$0];\n var field = info[0], regex = info[1], requiredField = info[3];\n // Check if the person has specified the same field twice. This will lead to confusing results.\n if (specifiedFields[field]) {\n throw new Error(\"Invalid format. \" + field + \" specified twice in format\");\n }\n specifiedFields[field] = true;\n // Check if there are any required fields. For instance, 12 hour time requires AM/PM specified\n if (requiredField) {\n requiredFields[requiredField] = true;\n }\n parseInfo.push(info);\n return \"(\" + regex + \")\";\n });\n // Check all the required fields are present\n Object.keys(requiredFields).forEach(function (field) {\n if (!specifiedFields[field]) {\n throw new Error(\"Invalid format. \" + field + \" is required in specified format\");\n }\n });\n // Add back all the literals after\n newFormat = newFormat.replace(/@@@/g, function () { return literals.shift(); });\n // Check if the date string matches the format. If it doesn't return null\n var matches = dateStr.match(new RegExp(newFormat, \"i\"));\n if (!matches) {\n return null;\n }\n var combinedI18nSettings = assign(assign({}, globalI18n), i18n);\n // For each match, call the parser function for that date part\n for (var i = 1; i < matches.length; i++) {\n var _a = parseInfo[i - 1], field = _a[0], parser = _a[2];\n var value = parser\n ? parser(matches[i], combinedI18nSettings)\n : +matches[i];\n // If the parser can't make sense of the value, return null\n if (value == null) {\n return null;\n }\n dateInfo[field] = value;\n }\n if (dateInfo.isPm === 1 && dateInfo.hour != null && +dateInfo.hour !== 12) {\n dateInfo.hour = +dateInfo.hour + 12;\n }\n else if (dateInfo.isPm === 0 && +dateInfo.hour === 12) {\n dateInfo.hour = 0;\n }\n var dateTZ;\n if (dateInfo.timezoneOffset == null) {\n dateTZ = new Date(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute, dateInfo.second, dateInfo.millisecond);\n var validateFields = [\n [\"month\", \"getMonth\"],\n [\"day\", \"getDate\"],\n [\"hour\", \"getHours\"],\n [\"minute\", \"getMinutes\"],\n [\"second\", \"getSeconds\"]\n ];\n for (var i = 0, len = validateFields.length; i < len; i++) {\n // Check to make sure the date field is within the allowed range. Javascript dates allows values\n // outside the allowed range. If the values don't match the value was invalid\n if (specifiedFields[validateFields[i][0]] &&\n dateInfo[validateFields[i][0]] !== dateTZ[validateFields[i][1]]()) {\n return null;\n }\n }\n }\n else {\n dateTZ = new Date(Date.UTC(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute - dateInfo.timezoneOffset, dateInfo.second, dateInfo.millisecond));\n // We can't validate dates in another timezone unfortunately. Do a basic check instead\n if (dateInfo.month > 11 ||\n dateInfo.month < 0 ||\n dateInfo.day > 31 ||\n dateInfo.day < 1 ||\n dateInfo.hour > 23 ||\n dateInfo.hour < 0 ||\n dateInfo.minute > 59 ||\n dateInfo.minute < 0 ||\n dateInfo.second > 59 ||\n dateInfo.second < 0) {\n return null;\n }\n }\n // Don't allow invalid dates\n return dateTZ;\n}\nvar fecha = {\n format: format,\n parse: parse,\n defaultI18n: defaultI18n,\n setGlobalDateI18n: setGlobalDateI18n,\n setGlobalDateMasks: setGlobalDateMasks\n};\n\nexport default fecha;\nexport { assign, format, parse, defaultI18n, setGlobalDateI18n, setGlobalDateMasks };\n//# sourceMappingURL=fecha.js.map\n","import { findTickInterval } from '../utils';\nexport const d3Time = (min, max, count, interval, utc) => {\n const r = min > max;\n const lo = r ? max : min;\n const hi = r ? min : max;\n const [tickInterval, step] = findTickInterval(lo, hi, count, interval, utc);\n const ticks = tickInterval.range(lo, new Date(+hi + 1), step, true);\n return r ? ticks.reverse() : ticks;\n};\n//# sourceMappingURL=d3-time.js.map","import { identity } from '@antv/util';\nimport { format } from 'fecha';\nimport { Continuous } from './continuous';\nimport { d3Time } from '../tick-methods/d3-time';\nimport { d3TimeNice, createInterpolateNumber, localIntervalMap, utcIntervalMap, chooseNiceTimeMask } from '../utils';\nfunction offset(date) {\n const minuteOffset = date.getTimezoneOffset();\n const d = new Date(date);\n d.setMinutes(d.getMinutes() + minuteOffset, d.getSeconds(), d.getMilliseconds());\n return d;\n}\nexport class Time extends Continuous {\n getDefaultOptions() {\n return {\n domain: [new Date(2000, 0, 1), new Date(2000, 0, 2)],\n range: [0, 1],\n nice: false,\n tickCount: 5,\n tickInterval: undefined,\n unknown: undefined,\n clamp: false,\n tickMethod: d3Time,\n interpolate: createInterpolateNumber,\n mask: undefined,\n utc: false,\n };\n }\n chooseTransforms() {\n const transform = (x) => +x;\n const untransform = (x) => new Date(x);\n return [transform, untransform];\n }\n chooseNice() {\n return d3TimeNice;\n }\n getTickMethodOptions() {\n const { domain, tickCount, tickInterval, utc } = this.options;\n const min = domain[0];\n const max = domain[domain.length - 1];\n return [min, max, tickCount, tickInterval, utc];\n }\n getFormatter() {\n const { mask, utc } = this.options;\n const maskMap = utc ? utcIntervalMap : localIntervalMap;\n const time = utc ? offset : identity; // fecha 不支持 utc 格式化,所以需要设置一个偏移\n return (d) => format(time(d), mask || chooseNiceTimeMask(d, maskMap));\n }\n clone() {\n return new Time(this.options);\n }\n}\n//# sourceMappingURL=time.js.map","var __decorate = (this && this.__decorate) || function (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};\nvar Sequential_1;\nimport { identity } from '@antv/util';\nimport { d3Ticks } from '../tick-methods/d3-ticks';\nimport { compose, createInterpolateNumber, createNormalize, interpolatize } from '../utils';\nimport { Linear } from './linear';\nfunction rangeOf(interpolator) {\n return [interpolator(0), interpolator(1)];\n}\nconst normalizeDomain = (domain) => {\n const [d0, d1] = domain;\n // [d0, d1] => [0, 1]\n const normalize = compose(createInterpolateNumber(0, 1), createNormalize(d0, d1));\n return normalize;\n};\n/**\n * Sequential 比例尺\n *\n * 构造可创建一个在输入和输出之间通过插值函数进行转换的比例尺\n */\n// @Sequentialish\nlet Sequential = Sequential_1 = class Sequential extends Linear {\n getDefaultOptions() {\n return {\n domain: [0, 1],\n unknown: undefined,\n nice: false,\n clamp: false,\n round: false,\n interpolator: identity,\n tickMethod: d3Ticks,\n tickCount: 5,\n };\n }\n constructor(options) {\n super(options);\n }\n clone() {\n return new Sequential_1(this.options);\n }\n};\nSequential = Sequential_1 = __decorate([\n interpolatize(rangeOf, normalizeDomain)\n], Sequential);\nexport { Sequential };\n//# sourceMappingURL=sequential.js.map","import { Band } from '@antv/scale';\nimport { deepMix } from '@antv/util';\nimport { column, columnOf } from './utils/helper';\nimport { domainOf } from './utils/order';\nexport function rangeOf(value, scaleOptions, padding) {\n if (value === null)\n return [-0.5, 0.5];\n const domain = domainOf(value, scaleOptions);\n const scale = new Band({ domain, range: [0, 1], padding });\n const step = scale.getBandWidth();\n return [-step / 2, step / 2];\n}\nexport function interpolate(t, a, b) {\n return a * (1 - t) + b * t;\n}\n/**\n * The jitter transform produce dx and dy channels for marks (especially for point)\n * with ordinal x and y dimension, say to make them jitter in their own space.\n */\nexport const Jitter = (options = {}) => {\n const { padding = 0, paddingX = padding, paddingY = padding, random = Math.random, } = options;\n return (I, mark) => {\n const { encode, scale } = mark;\n const { x: scaleX, y: scaleY } = scale;\n const [X] = columnOf(encode, 'x');\n const [Y] = columnOf(encode, 'y');\n const rangeX = rangeOf(X, scaleX, paddingX);\n const rangeY = rangeOf(Y, scaleY, paddingY);\n const DY = I.map(() => interpolate(random(), ...rangeY));\n const DX = I.map(() => interpolate(random(), ...rangeX));\n return [\n I,\n deepMix({\n scale: {\n x: { padding: 0.5 },\n y: { padding: 0.5 },\n },\n }, mark, {\n encode: { dy: column(DY), dx: column(DX) },\n }),\n ];\n };\n};\nJitter.props = {};\n//# sourceMappingURL=jitter.js.map","import { deepMix } from '@antv/util';\nimport { column, columnOf } from './utils/helper';\nimport { rangeOf, interpolate } from './jitter';\n/**\n * The JitterX transform produce dy channels for marks (especially for point)\n * with ordinal x and y dimension, say to make them jitter in their own space.\n */\nexport const JitterX = (options = {}) => {\n const { padding = 0, random = Math.random } = options;\n return (I, mark) => {\n const { encode, scale } = mark;\n const { x: scaleX } = scale;\n const [X] = columnOf(encode, 'x');\n const rangeX = rangeOf(X, scaleX, padding);\n const DX = I.map(() => interpolate(random(), ...rangeX));\n return [\n I,\n deepMix({ scale: { x: { padding: 0.5 } } }, mark, {\n encode: { dx: column(DX) },\n }),\n ];\n };\n};\nJitterX.props = {};\n//# sourceMappingURL=jitterX.js.map","import { deepMix } from '@antv/util';\nimport { column, columnOf } from './utils/helper';\nimport { rangeOf, interpolate } from './jitter';\n/**\n * The JitterY transform produce dy channels for marks (especially for point)\n * with ordinal x and y dimension, say to make them jitter in their own space.\n */\nexport const JitterY = (options = {}) => {\n const { padding = 0, random = Math.random } = options;\n return (I, mark) => {\n const { encode, scale } = mark;\n const { y: scaleY } = scale;\n const [Y] = columnOf(encode, 'y');\n const rangeY = rangeOf(Y, scaleY, padding);\n const DY = I.map(() => interpolate(random(), ...rangeY));\n return [\n I,\n deepMix({ scale: { y: { padding: 0.5 } } }, mark, {\n encode: { dy: column(DY) },\n }),\n ];\n };\n};\nJitterY.props = {};\n//# sourceMappingURL=jitterY.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { extent } from 'd3-array';\nimport { columnOf, column } from './utils/helper';\nimport { createGroups } from './utils/order';\n/**\n * The SymmetryY transform apply offset for y channels, say to transform\n * them to be symmetry.\n */\nexport const SymmetryY = (options = {}) => {\n const { groupBy = 'x' } = options;\n return (I, mark) => {\n const { encode } = mark;\n const { x } = encode, rest = __rest(encode, [\"x\"]);\n // Extract and create new channels starts with y, such as y, y1.\n const Yn = Object.entries(rest)\n .filter(([k]) => k.startsWith('y'))\n .map(([k]) => [k, columnOf(encode, k)[0]]);\n const newYn = Yn.map(([k]) => [k, new Array(I.length)]);\n // Group marks into series by specified keys.\n const groups = createGroups(groupBy, I, mark);\n const MY = new Array(groups.length);\n for (let i = 0; i < groups.length; i++) {\n const I = groups[i];\n const Y = I.flatMap((i) => Yn.map(([, V]) => +V[i]));\n const [minY, maxY] = extent(Y);\n MY[i] = (minY + maxY) / 2;\n }\n const maxMiddleY = Math.max(...MY);\n for (let m = 0; m < groups.length; m++) {\n const offset = maxMiddleY - MY[m];\n const I = groups[m];\n for (const i of I) {\n for (let j = 0; j < Yn.length; j++) {\n const [, V] = Yn[j];\n const [, newV] = newYn[j];\n newV[i] = +V[i] + offset;\n }\n }\n }\n return [\n I,\n deepMix({}, mark, {\n encode: Object.fromEntries(newYn.map(([k, v]) => [k, column(v, columnOf(encode, k)[1])])),\n }),\n ];\n };\n};\nSymmetryY.props = {};\n//# sourceMappingURL=symmetryY.js.map","import { deepMix } from '@antv/util';\nimport { column, columnOf, maybeColumnOf } from './utils/helper';\nimport { createGroups } from './utils/order';\n/**\n * The DiffY transform apply offset for y0 channels.\n * Keep y unchanged, set y1 = max(otherY), if y1 > y, remove the data.\n */\nexport const DiffY = (options = {}) => {\n const { groupBy = 'x', series = true } = options;\n return (I, mark) => {\n const { encode } = mark;\n const [Y] = columnOf(encode, 'y');\n const [_, fy1] = columnOf(encode, 'y1');\n const [S] = series\n ? maybeColumnOf(encode, 'series', 'color')\n : columnOf(encode, 'color');\n // Create groups and apply specified order for each group.\n const groups = createGroups(groupBy, I, mark);\n // Only adjust Y1 channel.\n const newY1 = new Array(I.length);\n for (const G of groups) {\n const YG = G.map((i) => +Y[i]);\n // Process each series.\n for (let idx = 0; idx < G.length; idx++) {\n const i = G[idx];\n // Get the max Y of current group with current Y exclude.\n const max = Math.max(...YG.filter((_, _i) => _i !== idx));\n // Diff Y value.\n newY1[i] = Y[i] > max ? max : Y[i];\n }\n }\n return [\n I,\n deepMix({}, mark, {\n encode: {\n y1: column(newY1, fy1),\n },\n }),\n ];\n };\n};\nDiffY.props = {};\n//# sourceMappingURL=diffY.js.map","import { maxIndex, minIndex } from 'd3-array';\nimport { columnOf } from './utils/helper';\nimport { createGroups } from './utils/order';\nfunction first(I, V) {\n return [I[0]];\n}\nfunction last(I, V) {\n const i = I.length - 1;\n return [I[i]];\n}\nfunction max(I, V) {\n const i = maxIndex(I, (i) => V[i]);\n return [I[i]];\n}\nfunction min(I, V) {\n const i = minIndex(I, (i) => V[i]);\n return [I[i]];\n}\nfunction normalizeSelector(selector) {\n if (typeof selector === 'function')\n return selector;\n const registry = { first, last, max, min };\n return registry[selector] || first;\n}\n/**\n * The select transform groups marks with specified channels, and\n * filter index by specified selector for each series, say to\n * pull a single or multiple values out of each series.\n */\nexport const Select = (options = {}) => {\n const { groupBy = 'series', channel, selector } = options;\n return (I, mark) => {\n const { encode } = mark;\n const groups = createGroups(groupBy, I, mark);\n const [V] = columnOf(encode, channel);\n const selectFunction = normalizeSelector(selector);\n return [groups.flatMap((GI) => selectFunction(GI, V)), mark];\n };\n};\nSelect.props = {};\n//# sourceMappingURL=select.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Select } from './select';\n/**\n * The selectX transform filter index by y channel.\n */\nexport const SelectX = (options = {}) => {\n const { selector } = options, rest = __rest(options, [\"selector\"]);\n return Select(Object.assign({ channel: 'x', selector }, rest));\n};\nSelectX.props = {};\n//# sourceMappingURL=selectX.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Select } from './select';\n/**\n * The selectY transform filter index by y channel.\n */\nexport const SelectY = (options = {}) => {\n const { selector } = options, rest = __rest(options, [\"selector\"]);\n return Select(Object.assign({ channel: 'y', selector }, rest));\n};\nSelectY.props = {};\n//# sourceMappingURL=selectY.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { max as d3Max, mean as d3Mean, sum as d3Sum, min as d3Min, median as d3Median, } from 'd3-array';\nimport { indexOf } from '../utils/array';\nimport { columnOf, column, nonConstantColumn } from './utils/helper';\nfunction builtinFormatter(summary) {\n return (d) => (d === null ? summary : `${summary} of ${d}`);\n}\nfunction normalizeReducer(reducer) {\n if (typeof reducer === 'function')\n return [reducer, null];\n const registry = { mean, max, count, first, last, sum, min, median };\n const reducerFunction = registry[reducer];\n if (!reducerFunction)\n throw new Error(`Unknown reducer: ${reducer}.`);\n return reducerFunction();\n}\nfunction mean() {\n const reducer = (I, V) => d3Mean(I, (i) => +V[i]);\n const formatter = builtinFormatter('mean');\n return [reducer, formatter];\n}\nfunction median() {\n const reducer = (I, V) => d3Median(I, (i) => +V[i]);\n const formatter = builtinFormatter('median');\n return [reducer, formatter];\n}\nfunction max() {\n const reducer = (I, V) => d3Max(I, (i) => +V[i]);\n const formatter = builtinFormatter('max');\n return [reducer, formatter];\n}\nfunction min() {\n const reducer = (I, V) => d3Min(I, (i) => +V[i]);\n const formatter = builtinFormatter('min');\n return [reducer, formatter];\n}\nfunction count() {\n const reducer = (I, V) => I.length;\n const formatter = builtinFormatter('count');\n return [reducer, formatter];\n}\nfunction sum() {\n const reducer = (I, V) => d3Sum(I, (i) => +V[i]);\n const formatter = builtinFormatter('sum');\n return [reducer, formatter];\n}\nfunction first() {\n const reducer = (I, V) => V[I[0]];\n const formatter = builtinFormatter('first');\n return [reducer, formatter];\n}\nfunction last() {\n const reducer = (I, V) => V[I[I.length - 1]];\n const formatter = builtinFormatter('last');\n return [reducer, formatter];\n}\n/**\n * The Group transform group data by x and y channels, and aggregate.\n */\nexport const GroupN = (options = {}) => {\n const { groupBy } = options, rest = __rest(options, [\"groupBy\"]);\n return (I, mark) => {\n const { data, encode } = mark;\n const groups = groupBy(I, mark);\n if (!groups)\n return [I, mark];\n // Extract field from from channel\n // x1 from x, y1 from y, etc,.\n const maybeFrom = (field, reducer) => {\n if (field)\n return field;\n const { from } = reducer;\n if (!from)\n return field;\n const [, field1] = columnOf(encode, from);\n return field1;\n };\n const outputs = Object.entries(rest).map(([channel, reducer]) => {\n const [reducerFunction, formatter] = normalizeReducer(reducer);\n const [V, field] = columnOf(encode, channel);\n const field1 = maybeFrom(field, reducer);\n const RV = groups.map((I) => reducerFunction(I, V !== null && V !== void 0 ? V : data));\n return [\n channel,\n Object.assign(Object.assign({}, nonConstantColumn(RV, (formatter === null || formatter === void 0 ? void 0 : formatter(field1)) || field1)), { aggregate: true }),\n ];\n });\n const reducedColumns = Object.keys(encode).map((key) => {\n const [V, fv] = columnOf(encode, key);\n const GV = groups.map((I) => V[I[0]]);\n return [key, column(GV, fv)];\n });\n const GD = groups.map((I) => data[I[0]]);\n const GI = indexOf(groups);\n return [\n GI,\n deepMix({}, mark, {\n data: GD,\n encode: Object.fromEntries([...reducedColumns, ...outputs]),\n }),\n ];\n };\n};\nGroupN.props = {};\n//# sourceMappingURL=groupN.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { createGroups } from './utils/order';\nimport { GroupN } from './groupN';\n/**\n * The Group transform group data by x and y channels, and aggregate.\n */\nexport const Group = (options = {}) => {\n const { channels = ['x', 'y'] } = options, rest = __rest(options, [\"channels\"]);\n const groupBy = (I, mark) => createGroups(channels, I, mark);\n return GroupN(Object.assign(Object.assign({}, rest), { groupBy }));\n};\nGroup.props = {};\n//# sourceMappingURL=group.js.map","import { Group } from './group';\n/**\n * The GroupX transform group data by x channel, and aggregate.\n */\nexport const GroupX = (options = {}) => {\n return Group(Object.assign(Object.assign({}, options), { channels: ['x', 'color', 'series'] }));\n};\nGroupX.props = {};\n//# sourceMappingURL=groupX.js.map","import { Group } from './group';\n/**\n * The GroupY transform group data by x channel, and aggregate.\n */\nexport const GroupY = (options = {}) => {\n return Group(Object.assign(Object.assign({}, options), { channels: ['y', 'color', 'series'] }));\n};\nGroupY.props = {};\n//# sourceMappingURL=groupY.js.map","import { Group } from './group';\n/**\n * The GroupColor transform group data by x channel, and aggregate.\n */\nexport const GroupColor = (options = {}) => {\n return Group(Object.assign(Object.assign({}, options), { channels: ['color'] }));\n};\nGroupColor.props = {};\n//# sourceMappingURL=groupColor.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { groupSort, max, min, sum, mean, median, sort, } from 'd3-array';\nimport { columnOf } from './utils/helper';\nfunction createReducer(channel, options, encode) {\n const { by = channel, reducer = 'max' } = options;\n const [V] = columnOf(encode, by);\n if (typeof reducer === 'function')\n return (GI) => reducer(GI, V);\n if (reducer === 'max')\n return (GI) => max(GI, (i) => +V[i]);\n if (reducer === 'min')\n return (GI) => min(GI, (i) => +V[i]);\n if (reducer === 'sum')\n return (GI) => sum(GI, (i) => +V[i]);\n if (reducer === 'median')\n return (GI) => median(GI, (i) => +V[i]);\n if (reducer === 'mean')\n return (GI) => mean(GI, (i) => +V[i]);\n if (reducer === 'first')\n return (GI) => V[GI[0]];\n if (reducer === 'last')\n return (GI) => V[GI[GI.length - 1]];\n throw new Error(`Unknown reducer: ${reducer}`);\n}\nfunction sortQuantitative(I, mark, options) {\n const { reverse, channel } = options;\n const { encode } = mark;\n const [V] = columnOf(encode, channel);\n const sortedI = sort(I, (i) => V[i]);\n if (reverse)\n sortedI.reverse();\n // const s = typeof slice === 'number' ? [0, slice] : slice;\n return [sortedI, mark];\n}\n// If domain is specified, only sort data in the domain.\nfunction filterIndex(I, values, specifiedDomain) {\n if (!Array.isArray(specifiedDomain))\n return I;\n const domain = new Set(specifiedDomain);\n return I.filter((i) => domain.has(values[i]));\n}\nfunction sortOrdinal(I, mark, options) {\n var _a;\n const { reverse, slice, channel } = options, rest = __rest(options, [\"reverse\", \"slice\", \"channel\"]);\n const { encode, scale = {} } = mark;\n const domain = (_a = scale[channel]) === null || _a === void 0 ? void 0 : _a.domain;\n const [T] = columnOf(encode, channel);\n const normalizeReducer = createReducer(channel, rest, encode);\n const SI = filterIndex(I, T, domain);\n const sortedDomain = groupSort(SI, normalizeReducer, (i) => T[i]);\n if (reverse)\n sortedDomain.reverse();\n const s = typeof slice === 'number' ? [0, slice] : slice;\n const slicedDomain = slice ? sortedDomain.slice(...s) : sortedDomain;\n return [\n I,\n deepMix(mark, {\n scale: {\n [channel]: {\n domain: slicedDomain,\n },\n },\n }),\n ];\n}\n/**\n * Sort marks groups by groups.\n */\nexport const Sort = (options = {}) => {\n const { reverse = false, slice, channel, ordinal = true } = options, rest = __rest(options, [\"reverse\", \"slice\", \"channel\", \"ordinal\"]);\n return (I, mark) => {\n if (!ordinal) {\n return sortQuantitative(I, mark, Object.assign({ reverse,\n slice,\n channel }, rest));\n }\n return sortOrdinal(I, mark, Object.assign({ reverse, slice, channel }, rest));\n };\n};\nSort.props = {};\n//# sourceMappingURL=sort.js.map","import { Sort } from './sort';\n/**\n * Sort domain of x scale of mark groups by groups.\n */\nexport const SortX = (options = {}) => {\n return Sort(Object.assign(Object.assign({}, options), { channel: 'x' }));\n};\nSortX.props = {};\n//# sourceMappingURL=sortX.js.map","import { Sort } from './sort';\n/**\n * Sort domain of x scale of mark groups by groups.\n */\nexport const SortColor = (options = {}) => {\n return Sort(Object.assign(Object.assign({}, options), { channel: 'color' }));\n};\nSortColor.props = {};\n//# sourceMappingURL=sortColor.js.map","import { Sort } from './sort';\n/**\n * Sort domain of x scale of mark groups by groups.\n */\nexport const SortY = (options = {}) => {\n return Sort(Object.assign(Object.assign({}, options), { channel: 'y' }));\n};\nSortY.props = {};\n//# sourceMappingURL=sortY.js.map","import { deepMix } from '@antv/util';\nimport { rollups, sum } from 'd3-array';\nimport { columnOf } from './utils/helper';\nfunction valueOf(data, field) {\n if (typeof field === 'string')\n return data.map((d) => d[field]);\n return data.map(field);\n}\nfunction createReducer(reducer, V) {\n if (typeof reducer === 'function')\n return (GI) => reducer(GI, V);\n if (reducer === 'sum')\n return (GI) => sum(GI, (i) => +V[i]);\n throw new Error(`Unknown reducer: ${reducer}`);\n}\n/**\n * Produce flex options from data for x scale.\n */\nexport const FlexX = (options = {}) => {\n const { field, channel = 'y', reducer = 'sum' } = options;\n return (I, mark) => {\n const { data, encode } = mark;\n const [x] = columnOf(encode, 'x');\n const V = field ? valueOf(data, field) : columnOf(encode, channel)[0];\n const reducerFunction = createReducer(reducer, V);\n const flex = rollups(I, reducerFunction, (i) => x[i]).map((d) => d[1]);\n return [I, deepMix({}, mark, { scale: { x: { flex } } })];\n };\n};\nFlexX.props = {};\n//# sourceMappingURL=flexX.js.map","export function sub([x1, y1], [x2, y2]) {\n return [x1 - x2, y1 - y2];\n}\nexport function add([x1, y1], [x2, y2]) {\n return [x1 + x2, y1 + y2];\n}\nexport function dist([x0, y0], [x1, y1]) {\n return Math.sqrt(Math.pow((x0 - x1), 2) + Math.pow((y0 - y1), 2));\n}\n/**\n * Calculate angle of vector [x, y].\n */\nexport function angle([x, y]) {\n return Math.atan2(y, x);\n}\n/**\n * Calculate angle of [x, y], then + Math.PI / 2.\n * Because of the difference between `Geometric coordinate system` and `Visualization coordinate system`.\n * @returns\n */\nexport function angleWithQuadrant([x, y]) {\n return angle([x, y]) + Math.PI / 2;\n}\nexport function angleBetween(v0, v1) {\n const a0 = angle(v0);\n const a1 = angle(v1);\n if (a0 < a1)\n return a1 - a0;\n return Math.PI * 2 - (a0 - a1);\n}\nexport function calcBBox(points) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n for (const [x, y] of points) {\n minX = Math.min(x, minX);\n maxX = Math.max(x, maxX);\n minY = Math.min(y, minY);\n maxY = Math.max(y, maxY);\n }\n const width = maxX - minX;\n const height = maxY - minY;\n return [minX, minY, width, height];\n}\n/**\n * Get the center of two points.\n */\nexport function mid([x1, y1], [x2, y2]) {\n return [(x1 + x2) / 2, (y1 + y2) / 2];\n}\n//# sourceMappingURL=vector.js.map","import { deepMix } from '@antv/util';\nimport { calcBBox } from '../utils/vector';\nfunction pack(options) {\n const { padding = 0, direction = 'col' } = options;\n return (P, count, layout) => {\n const pcount = P.length;\n if (pcount === 0)\n return [];\n // col * row >= count\n // row is close to col * aspect, so\n // col * (col * aspect) >= count\n const { innerWidth, innerHeight } = layout;\n const aspect = innerHeight / innerWidth;\n let col = Math.ceil(Math.sqrt(count / aspect));\n // Increase col to avoid total height of packed shape\n // being large than height of bbox.\n let size = innerWidth / col;\n let row = Math.ceil(count / col);\n let h0 = row * size;\n while (h0 > innerHeight) {\n col = col + 1;\n size = innerWidth / col;\n row = Math.ceil(count / col);\n h0 = row * size;\n }\n // Some offset to increase the space usage.\n const space = innerHeight - row * size;\n const intervalY = row <= 1 ? 0 : space / (row - 1);\n const [offsetX, offsetY] = row <= 1\n ? [\n (innerWidth - pcount * size) / (pcount - 1),\n (innerHeight - size) / 2,\n ]\n : [0, 0];\n return P.map((points, m) => {\n const [x, y, width, height] = calcBBox(points);\n const i = direction === 'col' ? m % col : Math.floor(m / row);\n const j = direction === 'col' ? Math.floor(m / col) : m % row;\n const newX = i * size;\n const newY = (row - j - 1) * size + space;\n const sx = (size - padding) / width;\n const sy = (size - padding) / height;\n // Translate the shape and mark to make sure the center of\n // shape is overlap before and after scale transformation.\n const tx = newX - x + offsetX * i + (1 / 2) * padding;\n const ty = newY - y - intervalY * j - offsetY + (1 / 2) * padding;\n return `translate(${tx}, ${ty}) scale(${sx}, ${sy})`;\n });\n };\n}\n/**\n * Uniform pack to avid overlap.\n * @todo Improve or change algorithm to increase space usage.\n * @todo Take some special case into account.\n */\nexport const Pack = (options) => {\n return (I, mark) => {\n return [I, deepMix({}, mark, { modifier: pack(options), axis: false })];\n };\n};\nPack.props = {};\n//# sourceMappingURL=pack.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { bin as d3Bin, group, thresholdScott, extent } from 'd3-array';\nimport { defined, subObject } from '../utils/helper';\nimport { GroupN } from './groupN';\nimport { columnOf } from './utils/helper';\nconst THRESHOLD = 'thresholds';\n/**\n * @see https://github.com/observablehq/plot/blob/main/src/transforms/bin.js\n */\nfunction thresholdAuto(values) {\n const [min, max] = extent(values);\n return Math.min(200, thresholdScott(values, min, max));\n}\n/**\n * The Bin aggregate data.\n * @todo More threshold method.\n * @todo Performance.\n */\nexport const Bin = (options = {}) => {\n const { groupChannels = ['color'], binChannels = ['x', 'y'] } = options, rest = __rest(options, [\"groupChannels\", \"binChannels\"]);\n const channelIndexKey = {};\n // Group indexes and update channelIndexKey.\n const groupBy = (I, mark) => {\n const { encode } = mark;\n const binValues = binChannels.map((channel) => {\n const [V] = columnOf(encode, channel);\n return V;\n });\n const thresholds = subObject(rest, THRESHOLD);\n const DI = I.filter((i) => binValues.every((V) => defined(V[i])));\n // Group indexes by both discrete and quantitative channels.\n const groupKeys = [\n // For discrete channels, use value as group key.\n ...groupChannels\n .map((d) => {\n const [V] = columnOf(encode, d);\n return V;\n })\n .filter(defined)\n .map((V) => (i) => V[i]),\n // For quantitative channels, use extent of bin as group key.\n ...binChannels.map((d, i) => {\n const V = binValues[i];\n const t = thresholds[d] || thresholdAuto(V);\n const bins = d3Bin()\n .thresholds(t)\n .value((i) => +V[i])(DI);\n const indexKey = new Map(bins.flatMap((bin) => {\n const { x0, x1 } = bin;\n const key = `${x0},${x1}`;\n return bin.map((i) => [i, key]);\n }));\n channelIndexKey[d] = indexKey;\n return (i) => indexKey.get(i);\n }),\n ];\n // Group by indexes by channel keys.\n const key = (i) => groupKeys.map((key) => key(i)).join('-');\n return Array.from(group(DI, key).values());\n };\n return GroupN(Object.assign(Object.assign(Object.assign({}, Object.fromEntries(Object.entries(rest).filter(([k]) => !k.startsWith(THRESHOLD)))), Object.fromEntries(binChannels.flatMap((channel) => {\n const start = ([i]) => +channelIndexKey[channel].get(i).split(',')[0];\n const end = ([i]) => +channelIndexKey[channel].get(i).split(',')[1];\n end.from = channel;\n return [\n [channel, start],\n [`${channel}1`, end],\n ];\n }))), { groupBy }));\n};\nBin.props = {};\n//# sourceMappingURL=bin.js.map","import { Bin } from './bin';\nexport const BinX = (options = {}) => {\n const { thresholds } = options;\n return Bin(Object.assign(Object.assign({}, options), { thresholdsX: thresholds, groupChannels: ['color'], binChannels: ['x'] }));\n};\nBinX.props = {};\n//# sourceMappingURL=binX.js.map","/**\n * Sample data with lttb(Largest-Triangle-Three-Buckets) algo (https://github.com/pingec/downsample-lttb).\n * Return the sampled index array.\n */\nexport function lttb(I, X, Y, thresholds) {\n const length = I.length;\n if (thresholds >= length || thresholds === 0) {\n return I;\n }\n const x = (i) => X[I[i]] * 1;\n const y = (i) => Y[I[i]] * 1;\n const sampled = [];\n // Bucket size. Leave room for start and end data points.\n const every = (length - 2) / (thresholds - 2);\n let a = 0; // Initially a is the first point in the triangle.\n let maxArea;\n let area;\n let nextA;\n sampled.push(a); // Always add the first point.\n for (let i = 0; i < thresholds - 2; i++) {\n // Calculate point average for next bucket (containing c).\n let avgX = 0;\n let avgY = 0;\n let start = Math.floor((i + 1) * every) + 1;\n let end = Math.floor((i + 2) * every) + 1;\n end = Math.min(end, length);\n const size = end - start;\n for (; start < end; start++) {\n avgX += x(start);\n avgY += y(start);\n }\n avgX /= size;\n avgY /= size;\n // Get the range for this bucket.\n let frameStart = Math.floor((i + 0) * every) + 1;\n const frameEnd = Math.floor((i + 1) * every) + 1;\n // Point a.\n const pointA = [x(a), y(a)];\n maxArea = area = -1;\n for (; frameStart < frameEnd; frameStart++) {\n // Calculate triangle area over three buckets.\n area =\n Math.abs((pointA[0] - avgX) * (x(frameStart) - pointA[1]) -\n (pointA[0] - y(frameStart)) * (avgY - pointA[0])) * 0.5;\n if (area > maxArea) {\n maxArea = area;\n nextA = frameStart; // Next a is this b.\n }\n }\n sampled.push(nextA); // Pick this point from the bucket.\n a = nextA; // This a is the next a (chosen b).\n }\n sampled.push(length - 1); // Always add last.\n return sampled.map((a) => I[a]);\n}\n//# sourceMappingURL=lttb.js.map","// @ts-ignore medianIndex exist in d3-array@3.2.0, but @types/d3-array Expired.\nimport { maxIndex, minIndex, medianIndex } from 'd3-array';\nimport { createGroups } from './utils/order';\nimport { columnOf } from './utils/helper';\nimport { lttb } from './utils/lttb';\nfunction normalizeSample(strategy) {\n if (typeof strategy === 'function')\n return strategy;\n if (strategy === 'lttb')\n return lttb;\n const strategies = {\n first: (f) => [f[0]],\n last: (f) => [f[f.length - 1]],\n min: (f, X, Y) => [\n f[minIndex(f, (i) => Y[i])],\n ],\n max: (f, X, Y) => [\n f[maxIndex(f, (i) => Y[i])],\n ],\n median: (f, X, Y) => [\n f[medianIndex(f, (i) => Y[i])],\n ],\n };\n const sampleFunction = strategies[strategy] || strategies.median;\n return (I, X, Y, thresholds) => {\n // Sepreate group to frames, then sample each frame.\n // Keep more data as possible.\n const frameSize = Math.max(1, Math.floor(I.length / thresholds));\n const frames = getFrames(I, frameSize);\n return frames.flatMap((frame) => sampleFunction(frame, X, Y));\n };\n}\n/**\n * Split the array into frame with each frameSize.\n */\nfunction getFrames(I, frameSize) {\n const size = I.length;\n const frames = [];\n let i = 0;\n while (i < size) {\n frames.push(I.slice(i, (i += frameSize)));\n }\n return frames;\n}\n/**\n * The sample transform groups marks with specified groupBy fields, and\n * sample data for each group when data.length >= threshold(default = 2000).\n */\nexport const Sample = (options = {}) => {\n const { strategy = 'median', thresholds = 2000, groupBy = ['series', 'color'], } = options;\n const sampleFunction = normalizeSample(strategy);\n return (I, mark) => {\n const { encode } = mark;\n const groups = createGroups(groupBy, I, mark);\n const [X] = columnOf(encode, 'x');\n const [Y] = columnOf(encode, 'y');\n return [\n groups.flatMap((g) => sampleFunction(g, X, Y, thresholds)),\n mark,\n ];\n };\n};\nSample.props = {};\n//# sourceMappingURL=sample.js.map","import { deepMix } from '@antv/util';\nimport { defined } from '../utils/helper';\nimport { columnOf } from './utils/helper';\nfunction normalizeValue(value) {\n if (typeof value === 'object')\n return [value.value, value.ordinal];\n else\n return [value, true];\n}\n/**\n * The Filter transform filter channels.\n */\nexport const Filter = (options = {}) => {\n return (I, mark) => {\n const { encode, data } = mark;\n const filters = Object.entries(options)\n .map(([key, v]) => {\n const [V] = columnOf(encode, key);\n // Skip empty channel.\n if (!V)\n return null;\n const [value, ordinal = true] = normalizeValue(v);\n if (typeof value === 'function')\n return (i) => value(V[i]);\n if (ordinal) {\n const expectedValues = Array.isArray(value) ? value : [value];\n // Skip empty expected values.\n if (expectedValues.length === 0)\n return null;\n return (i) => expectedValues.includes(V[i]);\n }\n else {\n const [start, end] = value;\n return (i) => V[i] >= start && V[i] <= end;\n }\n })\n .filter(defined);\n // Skip empty filters.\n if (filters.length === 0)\n return [I, mark];\n // Filter index and channels.\n const totalFilter = (i) => filters.every((f) => f(i));\n const FI = I.filter(totalFilter);\n const newIndex = FI.map((_, i) => i);\n const newEncodes = Object.entries(encode).map(([key, encode]) => {\n return [\n key,\n Object.assign(Object.assign({}, encode), { value: newIndex\n .map((i) => encode.value[FI[i]])\n .filter((v) => v !== undefined) }),\n ];\n });\n return [\n newIndex,\n deepMix({}, mark, {\n encode: Object.fromEntries(newEncodes),\n // Filter data for tooltip item.\n data: FI.map((i) => data[i]),\n }),\n ];\n };\n};\nFilter.props = {};\n//# sourceMappingURL=filter.js.map","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export function isTranspose(coordinate) {\n const { transformations } = coordinate.getOptions();\n const transposes = transformations\n .map(([type]) => type)\n .filter((type) => type === 'transpose');\n return transposes.length % 2 !== 0;\n}\nexport function isPolar(coordinate) {\n const { transformations } = coordinate.getOptions();\n return transformations.some(([type]) => type === 'polar');\n}\nexport function isRadial(coordinate) {\n const { transformations } = coordinate.getOptions();\n return (\n // distinguish radial from theta.\n transformations.some(([type]) => type === 'reflect') &&\n transformations.some(([type]) => type.startsWith('transpose')));\n}\nexport function isHelix(coordinate) {\n const { transformations } = coordinate.getOptions();\n return transformations.some(([type]) => type === 'helix');\n}\nexport function isParallel(coordinate) {\n const { transformations } = coordinate.getOptions();\n return transformations.some(([type]) => type === 'parallel');\n}\nexport function isFisheye(coordinate) {\n const { transformations } = coordinate.getOptions();\n return transformations.some(([type]) => type === 'fisheye');\n}\nexport function isRadar(coordinate) {\n return isParallel(coordinate) && isPolar(coordinate);\n}\nexport function isCircular(coordinate) {\n return isHelix(coordinate) || isPolar(coordinate);\n}\nexport function isTheta(coordinate) {\n return isPolar(coordinate) && isTranspose(coordinate);\n}\nexport function isNonCartesian(coordinate) {\n return (isPolar(coordinate) ||\n isParallel(coordinate) ||\n isRadial(coordinate) ||\n isTheta(coordinate));\n}\nexport function getRadius(coordinate) {\n if (isCircular(coordinate)) {\n const [width, height] = coordinate.getSize();\n const polar = coordinate\n .getOptions()\n .transformations.find((t) => t[0] === 'polar');\n // coordinate.size * outerRadius.\n if (polar)\n return (Math.max(width, height) / 2) * polar[4];\n }\n return 0;\n}\nexport function radiusOf(coordinate) {\n const { transformations } = coordinate.getOptions();\n const [, , , innerRadius, outerRadius] = transformations.find((d) => d[0] === 'polar');\n return [+innerRadius, +outerRadius];\n}\nexport function angleOf(coordinate, isRadius = true) {\n const { transformations } = coordinate.getOptions();\n const [, startAngle, endAngle] = transformations.find((d) => d[0] === 'polar');\n return isRadius\n ? [(+startAngle * 180) / Math.PI, (+endAngle * 180) / Math.PI]\n : [startAngle, endAngle];\n}\nexport function getTransformOptions(coordinate, type) {\n const { transformations } = coordinate.getOptions();\n const [, ...args] = transformations.find((d) => d[0] === type);\n return args;\n}\n//# sourceMappingURL=coordinate.js.map","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","import { __spreadArray, __read } from 'tslib';\nimport { isNumberEqual } from '@antv/util';\nimport { vec2 } from 'gl-matrix';\n\nfunction distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\nfunction getBBoxByArray(xArr, yArr) {\n var minX = Math.min.apply(Math, __spreadArray([], __read(xArr), false));\n var minY = Math.min.apply(Math, __spreadArray([], __read(yArr), false));\n var maxX = Math.max.apply(Math, __spreadArray([], __read(xArr), false));\n var maxY = Math.max.apply(Math, __spreadArray([], __read(yArr), false));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nfunction piMod(angle) {\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n\nfunction copysign(v1, v2) {\n var absv = Math.abs(v1);\n return v2 > 0 ? absv : absv * -1;\n}\nfunction nearestPoint$4(x, y, rx, ry, x0, y0) {\n var a = rx;\n var b = ry;\n // 假如椭圆半径为0则返回圆心\n if (a === 0 || b === 0) {\n return {\n x: x,\n y: y,\n };\n }\n // 转换成 0, 0 为中心的椭圆计算\n var relativeX = x0 - x;\n var relativeY = y0 - y;\n var px = Math.abs(relativeX);\n var py = Math.abs(relativeY);\n var squareA = a * a;\n var squareB = b * b;\n // const angle0 = Math.atan2(relativeY, relativeX);\n var t = Math.PI / 4;\n var nearestX = 0; // 椭圆上的任一点\n var nearestY = 0;\n // 迭代 4 次\n for (var i = 0; i < 4; i++) {\n nearestX = a * Math.cos(t);\n nearestY = b * Math.sin(t);\n var ex = ((squareA - squareB) * Math.pow(Math.cos(t), 3)) / a;\n var ey = ((squareB - squareA) * Math.pow(Math.sin(t), 3)) / b;\n var rx1 = nearestX - ex;\n var ry1 = nearestY - ey;\n var qx = px - ex;\n var qy = py - ey;\n var r = Math.hypot(ry1, rx1);\n var q = Math.hypot(qy, qx);\n var delta_c = r * Math.asin((rx1 * qy - ry1 * qx) / (r * q));\n var delta_t = delta_c /\n Math.sqrt(squareA + squareB - nearestX * nearestX - nearestY * nearestY);\n t += delta_t;\n t = Math.min(Math.PI / 2, Math.max(0, t));\n }\n return {\n x: x + copysign(nearestX, relativeX),\n y: y + copysign(nearestY, relativeY),\n };\n}\n\n// 偏导数 x\nfunction derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return (-1 * rx * Math.cos(xRotation) * Math.sin(angle) -\n ry * Math.sin(xRotation) * Math.cos(angle));\n}\n// 偏导数 y\nfunction derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return (-1 * rx * Math.sin(xRotation) * Math.sin(angle) +\n ry * Math.cos(xRotation) * Math.cos(angle));\n}\n// x 的极值\nfunction xExtrema(rx, ry, xRotation) {\n return Math.atan((-ry / rx) * Math.tan(xRotation));\n}\n// y 的极值\nfunction yExtrema(rx, ry, xRotation) {\n return Math.atan(ry / (rx * Math.tan(xRotation)));\n}\n// 根据角度求 x 坐标\nfunction xAt(cx, cy, rx, ry, xRotation, angle) {\n return (rx * Math.cos(xRotation) * Math.cos(angle) -\n ry * Math.sin(xRotation) * Math.sin(angle) +\n cx);\n}\n// 根据角度求 y 坐标\nfunction yAt(cx, cy, rx, ry, xRotation, angle) {\n return (rx * Math.sin(xRotation) * Math.cos(angle) +\n ry * Math.cos(xRotation) * Math.sin(angle) +\n cy);\n}\n// 获取点在椭圆上的角度\nfunction getAngle(rx, ry, x0, y0) {\n var angle = Math.atan2(y0 * rx, x0 * ry);\n // 转换到 0 - 2PI 内\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n// 根据角度获取,x,y\nfunction getPoint(rx, ry, angle) {\n return {\n x: rx * Math.cos(angle),\n y: ry * Math.sin(angle),\n };\n}\n// 旋转\nfunction rotate(x, y, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return [x * cos - y * sin, x * sin + y * cos];\n}\nfunction box$5(cx, cy, rx, ry, xRotation, startAngle, endAngle) {\n var xDim = xExtrema(rx, ry, xRotation);\n var minX = Infinity;\n var maxX = -Infinity;\n var xs = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var xAngle = xDim + i;\n if (startAngle < endAngle) {\n if (startAngle < xAngle && xAngle < endAngle) {\n xs.push(xAngle);\n }\n }\n else {\n if (endAngle < xAngle && xAngle < startAngle) {\n xs.push(xAngle);\n }\n }\n }\n for (var i = 0; i < xs.length; i++) {\n var x = xAt(cx, cy, rx, ry, xRotation, xs[i]);\n if (x < minX) {\n minX = x;\n }\n if (x > maxX) {\n maxX = x;\n }\n }\n var yDim = yExtrema(rx, ry, xRotation);\n var minY = Infinity;\n var maxY = -Infinity;\n var ys = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var yAngle = yDim + i;\n if (startAngle < endAngle) {\n if (startAngle < yAngle && yAngle < endAngle) {\n ys.push(yAngle);\n }\n }\n else {\n if (endAngle < yAngle && yAngle < startAngle) {\n ys.push(yAngle);\n }\n }\n }\n for (var i = 0; i < ys.length; i++) {\n var y = yAt(cx, cy, rx, ry, xRotation, ys[i]);\n if (y < minY) {\n minY = y;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nfunction nearestPoint$3(cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n // 将最近距离问题转换成到椭圆中心 0,0 没有旋转的椭圆问题\n var relativeVector = rotate(x0 - cx, y0 - cy, -xRotation);\n var _a = __read(relativeVector, 2), x1 = _a[0], y1 = _a[1];\n // 计算点到椭圆的最近的点\n var relativePoint = nearestPoint$4(0, 0, rx, ry, x1, y1);\n // 获取点在椭圆上的角度\n var angle = getAngle(rx, ry, relativePoint.x, relativePoint.y);\n // 点没有在圆弧上\n if (angle < startAngle) {\n // 小于起始圆弧\n relativePoint = getPoint(rx, ry, startAngle);\n }\n else if (angle > endAngle) {\n // 大于结束圆弧\n relativePoint = getPoint(rx, ry, endAngle);\n }\n // 旋转到 xRotation 的角度\n var vector = rotate(relativePoint.x, relativePoint.y, xRotation);\n return {\n x: vector[0] + cx,\n y: vector[1] + cy,\n };\n}\nfunction tangentAngle$4(cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n var dx = derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n var dy = derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n return piMod(Math.atan2(dy, dx));\n}\n\nvar EPSILON = 0.0001;\n/**\n * 使用牛顿切割法求最近的点\n * @param {number[]} xArr 点的 x 数组\n * @param {number[]} yArr 点的 y 数组\n * @param {number} x 指定的点 x\n * @param {number} y 指定的点 y\n * @param {Function} tCallback 差值函数\n */\nfunction nearestPoint$2(xArr, yArr, x, y, tCallback, length) {\n var t = -1;\n var d = Infinity;\n var v0 = [x, y];\n var segNum = 20;\n if (length && length > 200) {\n segNum = length / 10;\n }\n var increaseRate = 1 / segNum;\n var interval = increaseRate / 10;\n for (var i = 0; i <= segNum; i++) {\n var _t = i * increaseRate;\n var v1 = [\n tCallback.apply(void 0, __spreadArray([], __read(xArr.concat([_t])), false)),\n tCallback.apply(void 0, __spreadArray([], __read(yArr.concat([_t])), false)),\n ];\n var d1 = distance(v0[0], v0[1], v1[0], v1[1]);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n // 提前终止\n if (t === 0) {\n return {\n x: xArr[0],\n y: yArr[0],\n };\n }\n if (t === 1) {\n var count = xArr.length;\n return {\n x: xArr[count - 1],\n y: yArr[count - 1],\n };\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n var v1 = [\n tCallback.apply(void 0, __spreadArray([], __read(xArr.concat([prev])), false)),\n tCallback.apply(void 0, __spreadArray([], __read(yArr.concat([prev])), false)),\n ];\n var d1 = distance(v0[0], v0[1], v1[0], v1[1]);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n var v2 = [\n tCallback.apply(void 0, __spreadArray([], __read(xArr.concat([next])), false)),\n tCallback.apply(void 0, __spreadArray([], __read(yArr.concat([next])), false)),\n ];\n var d2 = distance(v0[0], v0[1], v2[0], v2[1]);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n return {\n x: tCallback.apply(void 0, __spreadArray([], __read(xArr.concat([t])), false)),\n y: tCallback.apply(void 0, __spreadArray([], __read(yArr.concat([t])), false)),\n };\n}\n// 近似求解 https://community.khronos.org/t/3d-cubic-bezier-segment-length/62363/2\nfunction snapLength(xArr, yArr) {\n var totalLength = 0;\n var count = xArr.length;\n for (var i = 0; i < count; i++) {\n var x = xArr[i];\n var y = yArr[i];\n var nextX = xArr[(i + 1) % count];\n var nextY = yArr[(i + 1) % count];\n totalLength += distance(x, y, nextX, nextY);\n }\n return totalLength / 2;\n}\n\nfunction box$4(x1, y1, x2, y2) {\n return getBBoxByArray([x1, x2], [y1, y2]);\n}\nfunction length$4(x1, y1, x2, y2) {\n return distance(x1, y1, x2, y2);\n}\nfunction pointAt$3(x1, y1, x2, y2, t) {\n return {\n x: (1 - t) * x1 + t * x2,\n y: (1 - t) * y1 + t * y2,\n };\n}\nfunction pointDistance$4(x1, y1, x2, y2, x, y) {\n // 投影距离 x1, y1 的向量,假设 p, p1, p2 三个点,投影点为 a\n // p1a = p1p.p1p2/|p1p2| * (p1p 的单位向量)\n var cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);\n if (cross < 0) {\n return distance(x1, y1, x, y);\n }\n var lengthSquare = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n if (cross > lengthSquare) {\n return distance(x2, y2, x, y);\n }\n return pointToLine(x1, y1, x2, y2, x, y);\n}\nfunction pointToLine(x1, y1, x2, y2, x, y) {\n var d = [x2 - x1, y2 - y1];\n // 如果端点相等,则判定点到点的距离\n if (vec2.exactEquals(d, [0, 0])) {\n return Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n }\n var u = [-d[1], d[0]];\n vec2.normalize(u, u);\n var a = [x - x1, y - y1];\n return Math.abs(vec2.dot(a, u));\n}\nfunction tangentAngle$3(x1, y1, x2, y2) {\n return Math.atan2(y2 - y1, x2 - x1);\n}\n\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t; // t * t * t 的性能大概是 Math.pow(t, 3) 的三倍\n return (onet * onet * onet * p0 +\n 3 * p1 * t * onet * onet +\n 3 * p2 * t * t * onet +\n p3 * t * t * t);\n}\nfunction derivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return (3 * (onet * onet * (p1 - p0) + 2 * onet * t * (p2 - p1) + t * t * (p3 - p2)));\n}\nfunction extrema$1(p0, p1, p2, p3) {\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var c = 3 * p1 - 3 * p0;\n var extremas = [];\n var t1;\n var t2;\n var discSqrt;\n if (isNumberEqual(a, 0)) {\n if (!isNumberEqual(b, 0)) {\n t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (isNumberEqual(disc, 0)) {\n extremas.push(-b / (2 * a));\n }\n else if (disc > 0) {\n discSqrt = Math.sqrt(disc);\n t1 = (-b + discSqrt) / (2 * a);\n t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n extremas.push(t2);\n }\n }\n }\n return extremas;\n}\n// 分割贝塞尔曲线\nfunction divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n // 划分点\n var xt = cubicAt(x1, x2, x3, x4, t);\n var yt = cubicAt(y1, y2, y3, y4, t);\n // 计算两点之间的差值点\n var c1 = pointAt$3(x1, y1, x2, y2, t);\n var c2 = pointAt$3(x2, y2, x3, y3, t);\n var c3 = pointAt$3(x3, y3, x4, y4, t);\n var c12 = pointAt$3(c1.x, c1.y, c2.x, c2.y, t);\n var c23 = pointAt$3(c2.x, c2.y, c3.x, c3.y, t);\n return [\n [x1, y1, c1.x, c1.y, c12.x, c12.y, xt, yt],\n [xt, yt, c23.x, c23.y, c3.x, c3.y, x4, y4],\n ];\n}\n// 使用迭代法取贝塞尔曲线的长度,二阶和三阶分开写,更清晰和便于调试\nfunction cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, iterationCount) {\n if (iterationCount === 0) {\n return snapLength([x1, x2, x3, x4], [y1, y2, y3, y4]);\n }\n var cubics = divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, 0.5);\n var left = __spreadArray(__spreadArray([], __read(cubics[0]), false), [iterationCount - 1], false);\n var right = __spreadArray(__spreadArray([], __read(cubics[1]), false), [iterationCount - 1], false);\n return cubicLength.apply(void 0, __spreadArray([], __read(left), false)) + cubicLength.apply(void 0, __spreadArray([], __read(right), false));\n}\nfunction box$3(x1, y1, x2, y2, x3, y3, x4, y4) {\n var xArr = [x1, x4];\n var yArr = [y1, y4];\n var xExtrema = extrema$1(x1, x2, x3, x4);\n var yExtrema = extrema$1(y1, y2, y3, y4);\n for (var i = 0; i < xExtrema.length; i++) {\n xArr.push(cubicAt(x1, x2, x3, x4, xExtrema[i]));\n }\n for (var i = 0; i < yExtrema.length; i++) {\n yArr.push(cubicAt(y1, y2, y3, y4, yExtrema[i]));\n }\n return getBBoxByArray(xArr, yArr);\n}\nfunction length$3(x1, y1, x2, y2, x3, y3, x4, y4) {\n // 迭代三次,划分成 8 段求长度\n return cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, 3);\n}\nfunction nearestPoint$1(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n return nearestPoint$2([x1, x2, x3, x4], [y1, y2, y3, y4], x0, y0, cubicAt, length);\n}\nfunction pointDistance$3(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n var point = nearestPoint$1(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length);\n return distance(point.x, point.y, x0, y0);\n}\nfunction pointAt$2(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return {\n x: cubicAt(x1, x2, x3, x4, t),\n y: cubicAt(y1, y2, y3, y4, t),\n };\n}\nfunction tangentAngle$2(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n var dx = derivativeAt(x1, x2, x3, x4, t);\n var dy = derivativeAt(y1, y2, y3, y4, t);\n return piMod(Math.atan2(dy, dx));\n}\n\nfunction analyzePoints(points) {\n // 计算每段的长度和总的长度\n var totalLength = 0;\n var segments = [];\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n var length_1 = distance(from[0], from[1], to[0], to[1]);\n var seg = {\n from: from,\n to: to,\n length: length_1,\n };\n segments.push(seg);\n totalLength += length_1;\n }\n return { segments: segments, totalLength: totalLength };\n}\nfunction lengthOfSegment(points) {\n if (points.length < 2) {\n return 0;\n }\n var totalLength = 0;\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n totalLength += distance(from[0], from[1], to[0], to[1]);\n }\n return totalLength;\n}\n/**\n * 按照比例在数据片段中获取点\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n * @return {object} 点的坐标\n */\nfunction pointAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return null;\n }\n var _a = analyzePoints(points), segments = _a.segments, totalLength = _a.totalLength;\n // 多个点有可能重合\n if (totalLength === 0) {\n return {\n x: points[0][0],\n y: points[0][1],\n };\n }\n // 计算比例\n var startRatio = 0;\n var point = null;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from, to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n var localRatio = (t - startRatio) / currentRatio;\n point = pointAt$3(from[0], from[1], to[0], to[1], localRatio);\n break;\n }\n startRatio += currentRatio;\n }\n return point;\n}\n/**\n * 按照比例在数据片段中获取切线的角度\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n */\nfunction angleAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return 0;\n }\n var _a = analyzePoints(points), segments = _a.segments, totalLength = _a.totalLength;\n // 计算比例\n var startRatio = 0;\n var angle = 0;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from, to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n break;\n }\n startRatio += currentRatio;\n }\n return angle;\n}\nfunction distanceAtSegment(points, x, y) {\n var minDistance = Infinity;\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i];\n var nextPoint = points[i + 1];\n var distance_1 = pointDistance$4(point[0], point[1], nextPoint[0], nextPoint[1], x, y);\n if (distance_1 < minDistance) {\n minDistance = distance_1;\n }\n }\n return minDistance;\n}\n\nfunction box$2(points) {\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return getBBoxByArray(xArr, yArr);\n}\nfunction length$2(points) {\n return lengthOfSegment(points);\n}\nfunction pointAt$1(points, t) {\n return pointAtSegments(points, t);\n}\nfunction pointDistance$2(points, x, y) {\n return distanceAtSegment(points, x, y);\n}\nfunction tangentAngle$1(points, t) {\n return angleAtSegments(points, t);\n}\n\nfunction getAllPoints(points) {\n var tmp = points.slice(0);\n if (points.length) {\n tmp.push(points[0]);\n }\n return tmp;\n}\nfunction box$1(points) {\n return box$2(points);\n}\nfunction length$1(points) {\n return lengthOfSegment(getAllPoints(points));\n}\nfunction pointAt(points, t) {\n return pointAtSegments(getAllPoints(points), t);\n}\nfunction pointDistance$1(points, x, y) {\n return distanceAtSegment(getAllPoints(points), x, y);\n}\nfunction tangentAngle(points, t) {\n return angleAtSegments(getAllPoints(points), t);\n}\n\n// 差值公式\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * onet * p0 + 2 * t * onet * p1 + t * t * p2;\n}\n// 求极值\nfunction extrema(p0, p1, p2) {\n var a = p0 + p2 - 2 * p1;\n if (isNumberEqual(a, 0)) {\n return [0.5];\n }\n var rst = (p0 - p1) / a;\n if (rst <= 1 && rst >= 0) {\n return [rst];\n }\n return [];\n}\n// 分割贝塞尔曲线\nfunction divideQuadratic(x1, y1, x2, y2, x3, y3, t) {\n // 划分点\n var xt = quadraticAt(x1, x2, x3, t);\n var yt = quadraticAt(y1, y2, y3, t);\n // 分割的第一条曲线的控制点\n var controlPoint1 = pointAt$3(x1, y1, x2, y2, t);\n // 分割的第二条曲线的控制点\n var controlPoint2 = pointAt$3(x2, y2, x3, y3, t);\n return [\n [x1, y1, controlPoint1.x, controlPoint1.y, xt, yt],\n [xt, yt, controlPoint2.x, controlPoint2.y, x3, y3],\n ];\n}\n// 使用迭代法取贝塞尔曲线的长度\nfunction quadraticLength(x1, y1, x2, y2, x3, y3, iterationCount) {\n if (iterationCount === 0) {\n return ((distance(x1, y1, x2, y2) +\n distance(x2, y2, x3, y3) +\n distance(x1, y1, x3, y3)) /\n 2);\n }\n var quadratics = divideQuadratic(x1, y1, x2, y2, x3, y3, 0.5);\n var left = quadratics[0];\n var right = quadratics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return quadraticLength.apply(void 0, __spreadArray([], __read(left), false)) + quadraticLength.apply(void 0, __spreadArray([], __read(right), false));\n}\nfunction box(x1, y1, x2, y2, x3, y3) {\n var xExtrema = extrema(x1, x2, x3)[0];\n var yExtrema = extrema(y1, y2, y3)[0];\n // 控制点不加入 box 的计算\n var xArr = [x1, x3];\n var yArr = [y1, y3];\n if (xExtrema !== undefined) {\n xArr.push(quadraticAt(x1, x2, x3, xExtrema));\n }\n if (yExtrema !== undefined) {\n yArr.push(quadraticAt(y1, y2, y3, yExtrema));\n }\n return getBBoxByArray(xArr, yArr);\n}\nfunction length(x1, y1, x2, y2, x3, y3) {\n return quadraticLength(x1, y1, x2, y2, x3, y3, 3);\n}\nfunction nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0) {\n return nearestPoint$2([x1, x2, x3], [y1, y2, y3], x0, y0, quadraticAt);\n}\nfunction pointDistance(x1, y1, x2, y2, x3, y3, x0, y0) {\n var point = nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0);\n return distance(point.x, point.y, x0, y0);\n}\n\nexport { box$5 as arcBox, nearestPoint$3 as arcNearestPoint, tangentAngle$4 as arcTangentAngle, box$3 as cubicBox, length$3 as cubicLength, nearestPoint$1 as cubicNearestPoint, pointAt$2 as cubicPointAt, pointDistance$3 as cubicPointDistance, tangentAngle$2 as cubicTangentAngle, distance, box$4 as lineBox, length$4 as lineLength, pointAt$3 as linePointAt, pointDistance$4 as linePointDistance, pointToLine as linePointToLine, tangentAngle$3 as lineTangentAngle, box$1 as polygonBox, length$1 as polygonLength, pointAt as polygonPointAt, pointDistance$1 as polygonPointDistance, tangentAngle as polygonTangentAngle, box$2 as polylineBox, length$2 as polylineLength, pointAt$1 as polylinePointAt, pointDistance$2 as polylinePointDistance, tangentAngle$1 as polylineTangentAngle, box as quadBox, length as quadLength, nearestPoint as quadNearestPoint, pointDistance as quadPointDistance };\n//# sourceMappingURL=index.esm.js.map\n","import { __assign, __read, __extends, __spreadArray, __awaiter, __generator, __values, __rest } from 'tslib';\nimport EventEmitter from 'eventemitter3';\nimport { mat4, vec4, vec3, mat3, quat as quat$1, vec2 } from 'gl-matrix';\nimport { isNumber, distanceSquareRoot, isString, isNil, clamp, getTotalLength, min, max, isNumberEqual, mod, normalizePath, path2Curve, equalizeSegments, getDrawDirection, reverseCurve, clonePath, getRotatedCurve, isArray, isBoolean, isObject, isUndefined, getPointAtLength } from '@antv/util';\nimport * as d3 from 'd3-color';\nimport { arcBox, cubicBox, quadBox, polylineLength, lineLength, linePointAt } from '@antv/g-math';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar rbush = {exports: {}};\n\n(function (module, exports) {\n(function (global, factory) {\nmodule.exports = factory() ;\n}(commonjsGlobal, function () {\nfunction quickselect(arr, k, left, right, compare) {\n quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselectStep(arr, k, newLeft, newRight, compare);\n }\n\n var t = arr[k];\n var i = left;\n var j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) { swap(arr, left, right); }\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) { i++; }\n while (compare(arr[j], t) > 0) { j--; }\n }\n\n if (compare(arr[left], t) === 0) { swap(arr, left, j); }\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) { left = j + 1; }\n if (k <= j) { right = j - 1; }\n }\n}\n\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nvar RBush = function RBush(maxEntries) {\n if ( maxEntries === void 0 ) maxEntries = 9;\n\n // max entries in a node is 9 by default; min node fill is 40% for best performance\n this._maxEntries = Math.max(4, maxEntries);\n this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n this.clear();\n};\n\nRBush.prototype.all = function all () {\n return this._all(this.data, []);\n};\n\nRBush.prototype.search = function search (bbox) {\n var node = this.data;\n var result = [];\n\n if (!intersects(bbox, node)) { return result; }\n\n var toBBox = this.toBBox;\n var nodesToSearch = [];\n\n while (node) {\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n var childBBox = node.leaf ? toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf) { result.push(child); }\n else if (contains(bbox, childBBox)) { this._all(child, result); }\n else { nodesToSearch.push(child); }\n }\n }\n node = nodesToSearch.pop();\n }\n\n return result;\n};\n\nRBush.prototype.collides = function collides (bbox) {\n var node = this.data;\n\n if (!intersects(bbox, node)) { return false; }\n\n var nodesToSearch = [];\n while (node) {\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n var childBBox = node.leaf ? this.toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf || contains(bbox, childBBox)) { return true; }\n nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n\n return false;\n};\n\nRBush.prototype.load = function load (data) {\n if (!(data && data.length)) { return this; }\n\n if (data.length < this._minEntries) {\n for (var i = 0; i < data.length; i++) {\n this.insert(data[i]);\n }\n return this;\n }\n\n // recursively build the tree with the given data from scratch using OMT algorithm\n var node = this._build(data.slice(), 0, data.length - 1, 0);\n\n if (!this.data.children.length) {\n // save as is if tree is empty\n this.data = node;\n\n } else if (this.data.height === node.height) {\n // split root if trees have the same height\n this._splitRoot(this.data, node);\n\n } else {\n if (this.data.height < node.height) {\n // swap trees if inserted one is bigger\n var tmpNode = this.data;\n this.data = node;\n node = tmpNode;\n }\n\n // insert the small tree into the large tree at appropriate level\n this._insert(node, this.data.height - node.height - 1, true);\n }\n\n return this;\n};\n\nRBush.prototype.insert = function insert (item) {\n if (item) { this._insert(item, this.data.height - 1); }\n return this;\n};\n\nRBush.prototype.clear = function clear () {\n this.data = createNode([]);\n return this;\n};\n\nRBush.prototype.remove = function remove (item, equalsFn) {\n if (!item) { return this; }\n\n var node = this.data;\n var bbox = this.toBBox(item);\n var path = [];\n var indexes = [];\n var i, parent, goingUp;\n\n // depth-first iterative tree traversal\n while (node || path.length) {\n\n if (!node) { // go up\n node = path.pop();\n parent = path[path.length - 1];\n i = indexes.pop();\n goingUp = true;\n }\n\n if (node.leaf) { // check current node\n var index = findItem(item, node.children, equalsFn);\n\n if (index !== -1) {\n // item found, remove the item and condense tree upwards\n node.children.splice(index, 1);\n path.push(node);\n this._condense(path);\n return this;\n }\n }\n\n if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n path.push(node);\n indexes.push(i);\n i = 0;\n parent = node;\n node = node.children[0];\n\n } else if (parent) { // go right\n i++;\n node = parent.children[i];\n goingUp = false;\n\n } else { node = null; } // nothing found\n }\n\n return this;\n};\n\nRBush.prototype.toBBox = function toBBox (item) { return item; };\n\nRBush.prototype.compareMinX = function compareMinX (a, b) { return a.minX - b.minX; };\nRBush.prototype.compareMinY = function compareMinY (a, b) { return a.minY - b.minY; };\n\nRBush.prototype.toJSON = function toJSON () { return this.data; };\n\nRBush.prototype.fromJSON = function fromJSON (data) {\n this.data = data;\n return this;\n};\n\nRBush.prototype._all = function _all (node, result) {\n var nodesToSearch = [];\n while (node) {\n if (node.leaf) { result.push.apply(result, node.children); }\n else { nodesToSearch.push.apply(nodesToSearch, node.children); }\n\n node = nodesToSearch.pop();\n }\n return result;\n};\n\nRBush.prototype._build = function _build (items, left, right, height) {\n\n var N = right - left + 1;\n var M = this._maxEntries;\n var node;\n\n if (N <= M) {\n // reached leaf level; return leaf\n node = createNode(items.slice(left, right + 1));\n calcBBox(node, this.toBBox);\n return node;\n }\n\n if (!height) {\n // target height of the bulk-loaded tree\n height = Math.ceil(Math.log(N) / Math.log(M));\n\n // target number of root entries to maximize storage utilization\n M = Math.ceil(N / Math.pow(M, height - 1));\n }\n\n node = createNode([]);\n node.leaf = false;\n node.height = height;\n\n // split the items into M mostly square tiles\n\n var N2 = Math.ceil(N / M);\n var N1 = N2 * Math.ceil(Math.sqrt(M));\n\n multiSelect(items, left, right, N1, this.compareMinX);\n\n for (var i = left; i <= right; i += N1) {\n\n var right2 = Math.min(i + N1 - 1, right);\n\n multiSelect(items, i, right2, N2, this.compareMinY);\n\n for (var j = i; j <= right2; j += N2) {\n\n var right3 = Math.min(j + N2 - 1, right2);\n\n // pack each entry recursively\n node.children.push(this._build(items, j, right3, height - 1));\n }\n }\n\n calcBBox(node, this.toBBox);\n\n return node;\n};\n\nRBush.prototype._chooseSubtree = function _chooseSubtree (bbox, node, level, path) {\n while (true) {\n path.push(node);\n\n if (node.leaf || path.length - 1 === level) { break; }\n\n var minArea = Infinity;\n var minEnlargement = Infinity;\n var targetNode = (void 0);\n\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n var area = bboxArea(child);\n var enlargement = enlargedArea(bbox, child) - area;\n\n // choose entry with the least area enlargement\n if (enlargement < minEnlargement) {\n minEnlargement = enlargement;\n minArea = area < minArea ? area : minArea;\n targetNode = child;\n\n } else if (enlargement === minEnlargement) {\n // otherwise choose one with the smallest area\n if (area < minArea) {\n minArea = area;\n targetNode = child;\n }\n }\n }\n\n node = targetNode || node.children[0];\n }\n\n return node;\n};\n\nRBush.prototype._insert = function _insert (item, level, isNode) {\n var bbox = isNode ? item : this.toBBox(item);\n var insertPath = [];\n\n // find the best node for accommodating the item, saving all nodes along the path too\n var node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n // put the item into the node\n node.children.push(item);\n extend(node, bbox);\n\n // split on node overflow; propagate upwards if necessary\n while (level >= 0) {\n if (insertPath[level].children.length > this._maxEntries) {\n this._split(insertPath, level);\n level--;\n } else { break; }\n }\n\n // adjust bboxes along the insertion path\n this._adjustParentBBoxes(bbox, insertPath, level);\n};\n\n// split overflowed node into two\nRBush.prototype._split = function _split (insertPath, level) {\n var node = insertPath[level];\n var M = node.children.length;\n var m = this._minEntries;\n\n this._chooseSplitAxis(node, m, M);\n\n var splitIndex = this._chooseSplitIndex(node, m, M);\n\n var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n newNode.height = node.height;\n newNode.leaf = node.leaf;\n\n calcBBox(node, this.toBBox);\n calcBBox(newNode, this.toBBox);\n\n if (level) { insertPath[level - 1].children.push(newNode); }\n else { this._splitRoot(node, newNode); }\n};\n\nRBush.prototype._splitRoot = function _splitRoot (node, newNode) {\n // split root node\n this.data = createNode([node, newNode]);\n this.data.height = node.height + 1;\n this.data.leaf = false;\n calcBBox(this.data, this.toBBox);\n};\n\nRBush.prototype._chooseSplitIndex = function _chooseSplitIndex (node, m, M) {\n var index;\n var minOverlap = Infinity;\n var minArea = Infinity;\n\n for (var i = m; i <= M - m; i++) {\n var bbox1 = distBBox(node, 0, i, this.toBBox);\n var bbox2 = distBBox(node, i, M, this.toBBox);\n\n var overlap = intersectionArea(bbox1, bbox2);\n var area = bboxArea(bbox1) + bboxArea(bbox2);\n\n // choose distribution with minimum overlap\n if (overlap < minOverlap) {\n minOverlap = overlap;\n index = i;\n\n minArea = area < minArea ? area : minArea;\n\n } else if (overlap === minOverlap) {\n // otherwise choose distribution with minimum area\n if (area < minArea) {\n minArea = area;\n index = i;\n }\n }\n }\n\n return index || M - m;\n};\n\n// sorts node children by the best axis for split\nRBush.prototype._chooseSplitAxis = function _chooseSplitAxis (node, m, M) {\n var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX;\n var compareMinY = node.leaf ? this.compareMinY : compareNodeMinY;\n var xMargin = this._allDistMargin(node, m, M, compareMinX);\n var yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n // if total distributions margin value is minimal for x, sort by minX,\n // otherwise it's already sorted by minY\n if (xMargin < yMargin) { node.children.sort(compareMinX); }\n};\n\n// total margin of all possible split distributions where each node is at least m full\nRBush.prototype._allDistMargin = function _allDistMargin (node, m, M, compare) {\n node.children.sort(compare);\n\n var toBBox = this.toBBox;\n var leftBBox = distBBox(node, 0, m, toBBox);\n var rightBBox = distBBox(node, M - m, M, toBBox);\n var margin = bboxMargin(leftBBox) + bboxMargin(rightBBox);\n\n for (var i = m; i < M - m; i++) {\n var child = node.children[i];\n extend(leftBBox, node.leaf ? toBBox(child) : child);\n margin += bboxMargin(leftBBox);\n }\n\n for (var i$1 = M - m - 1; i$1 >= m; i$1--) {\n var child$1 = node.children[i$1];\n extend(rightBBox, node.leaf ? toBBox(child$1) : child$1);\n margin += bboxMargin(rightBBox);\n }\n\n return margin;\n};\n\nRBush.prototype._adjustParentBBoxes = function _adjustParentBBoxes (bbox, path, level) {\n // adjust bboxes along the given tree path\n for (var i = level; i >= 0; i--) {\n extend(path[i], bbox);\n }\n};\n\nRBush.prototype._condense = function _condense (path) {\n // go through the path, removing empty nodes and updating bboxes\n for (var i = path.length - 1, siblings = (void 0); i >= 0; i--) {\n if (path[i].children.length === 0) {\n if (i > 0) {\n siblings = path[i - 1].children;\n siblings.splice(siblings.indexOf(path[i]), 1);\n\n } else { this.clear(); }\n\n } else { calcBBox(path[i], this.toBBox); }\n }\n};\n\nfunction findItem(item, items, equalsFn) {\n if (!equalsFn) { return items.indexOf(item); }\n\n for (var i = 0; i < items.length; i++) {\n if (equalsFn(item, items[i])) { return i; }\n }\n return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n if (!destNode) { destNode = createNode(null); }\n destNode.minX = Infinity;\n destNode.minY = Infinity;\n destNode.maxX = -Infinity;\n destNode.maxY = -Infinity;\n\n for (var i = k; i < p; i++) {\n var child = node.children[i];\n extend(destNode, node.leaf ? toBBox(child) : child);\n }\n\n return destNode;\n}\n\nfunction extend(a, b) {\n a.minX = Math.min(a.minX, b.minX);\n a.minY = Math.min(a.minY, b.minY);\n a.maxX = Math.max(a.maxX, b.maxX);\n a.maxY = Math.max(a.maxY, b.maxY);\n return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a) { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n var minX = Math.max(a.minX, b.minX);\n var minY = Math.max(a.minY, b.minY);\n var maxX = Math.min(a.maxX, b.maxX);\n var maxY = Math.min(a.maxY, b.maxY);\n\n return Math.max(0, maxX - minX) *\n Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n return a.minX <= b.minX &&\n a.minY <= b.minY &&\n b.maxX <= a.maxX &&\n b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n return b.minX <= a.maxX &&\n b.minY <= a.maxY &&\n b.maxX >= a.minX &&\n b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n return {\n children: children,\n height: 1,\n leaf: true,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n var stack = [left, right];\n\n while (stack.length) {\n right = stack.pop();\n left = stack.pop();\n\n if (right - left <= n) { continue; }\n\n var mid = left + Math.ceil((right - left) / n / 2) * n;\n quickselect(arr, mid, left, right, compare);\n\n stack.push(left, mid, mid, right);\n }\n}\n\nreturn RBush;\n\n}));\n}(rbush));\n\nvar RBush = rbush.exports;\n\nvar Shape;\n(function (Shape) {\n Shape[\"GROUP\"] = \"g\";\n Shape[\"CIRCLE\"] = \"circle\";\n Shape[\"ELLIPSE\"] = \"ellipse\";\n Shape[\"IMAGE\"] = \"image\";\n Shape[\"RECT\"] = \"rect\";\n Shape[\"LINE\"] = \"line\";\n Shape[\"POLYLINE\"] = \"polyline\";\n Shape[\"POLYGON\"] = \"polygon\";\n Shape[\"TEXT\"] = \"text\";\n Shape[\"PATH\"] = \"path\";\n Shape[\"HTML\"] = \"html\";\n Shape[\"MESH\"] = \"mesh\";\n})(Shape || (Shape = {}));\nvar ClipSpaceNearZ;\n(function (ClipSpaceNearZ) {\n ClipSpaceNearZ[ClipSpaceNearZ[\"ZERO\"] = 0] = \"ZERO\";\n ClipSpaceNearZ[ClipSpaceNearZ[\"NEGATIVE_ONE\"] = 1] = \"NEGATIVE_ONE\";\n})(ClipSpaceNearZ || (ClipSpaceNearZ = {}));\n\nvar AbstractRendererPlugin = /** @class */ (function () {\n function AbstractRendererPlugin() {\n this.plugins = [];\n }\n AbstractRendererPlugin.prototype.addRenderingPlugin = function (plugin) {\n this.plugins.push(plugin);\n this.context.renderingPlugins.push(plugin);\n };\n AbstractRendererPlugin.prototype.removeAllRenderingPlugins = function () {\n var _this = this;\n this.plugins.forEach(function (plugin) {\n var index = _this.context.renderingPlugins.indexOf(plugin);\n if (index >= 0) {\n _this.context.renderingPlugins.splice(index, 1);\n }\n });\n };\n return AbstractRendererPlugin;\n}());\nvar AbstractRenderer = /** @class */ (function () {\n function AbstractRenderer(config) {\n this.clipSpaceNearZ = ClipSpaceNearZ.NEGATIVE_ONE;\n this.plugins = [];\n this.config = __assign({ \n /**\n * only dirty object will cause re-render\n */\n enableDirtyCheck: true, enableCulling: false, \n /**\n * enable auto rendering by default\n */\n enableAutoRendering: true, \n /**\n * enable dirty rectangle rendering by default\n */\n enableDirtyRectangleRendering: true, enableDirtyRectangleRenderingDebug: false }, config);\n }\n AbstractRenderer.prototype.registerPlugin = function (plugin) {\n var index = this.plugins.findIndex(function (p) { return p === plugin; });\n if (index === -1) {\n this.plugins.push(plugin);\n }\n };\n AbstractRenderer.prototype.unregisterPlugin = function (plugin) {\n var index = this.plugins.findIndex(function (p) { return p === plugin; });\n if (index > -1) {\n this.plugins.splice(index, 1);\n }\n };\n AbstractRenderer.prototype.getPlugins = function () {\n return this.plugins;\n };\n AbstractRenderer.prototype.getPlugin = function (name) {\n return this.plugins.find(function (plugin) { return plugin.name === name; });\n };\n AbstractRenderer.prototype.getConfig = function () {\n return this.config;\n };\n AbstractRenderer.prototype.setConfig = function (config) {\n Object.assign(this.config, config);\n };\n return AbstractRenderer;\n}());\n\nfunction copyVec3(a, b) {\n a[0] = b[0];\n a[1] = b[1];\n a[2] = b[2];\n return a;\n}\nfunction subVec3(o, a, b) {\n o[0] = a[0] - b[0];\n o[1] = a[1] - b[1];\n o[2] = a[2] - b[2];\n return o;\n}\nfunction addVec3(o, a, b) {\n o[0] = a[0] + b[0];\n o[1] = a[1] + b[1];\n o[2] = a[2] + b[2];\n return o;\n}\nfunction scaleVec3(o, a, b) {\n o[0] = a[0] * b;\n o[1] = a[1] * b;\n o[2] = a[2] * b;\n return o;\n}\nfunction maxVec3(o, a, b) {\n o[0] = Math.max(a[0], b[0]);\n o[1] = Math.max(a[1], b[1]);\n o[2] = Math.max(a[2], b[2]);\n return o;\n}\nfunction minVec3(o, a, b) {\n o[0] = Math.min(a[0], b[0]);\n o[1] = Math.min(a[1], b[1]);\n o[2] = Math.min(a[2], b[2]);\n return o;\n}\nfunction getAngle(angle) {\n if (angle === undefined) {\n return 0;\n }\n else if (angle > 360 || angle < -360) {\n return angle % 360;\n }\n return angle;\n}\nfunction createVec3(x, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (Array.isArray(x) && x.length === 3) {\n return vec3.clone(x);\n }\n if (isNumber(x)) {\n return vec3.fromValues(x, y, z);\n }\n return vec3.fromValues(x[0], x[1] || y, x[2] || z);\n}\nfunction deg2rad(deg) {\n return deg * (Math.PI / 180);\n}\nfunction rad2deg(rad) {\n return rad * (180 / Math.PI);\n}\nfunction grad2deg(grads) {\n grads = grads % 400;\n if (grads < 0) {\n grads += 400;\n }\n return (grads / 400) * 360;\n}\nfunction deg2turn(deg) {\n return deg / 360;\n}\nfunction turn2deg(turn) {\n return 360 * turn;\n}\nfunction getEulerFromQuat(out, quat) {\n var x = quat[0];\n var y = quat[1];\n var z = quat[2];\n var w = quat[3];\n var x2 = x * x;\n var y2 = y * y;\n var z2 = z * z;\n var w2 = w * w;\n var unit = x2 + y2 + z2 + w2;\n var test = x * w - y * z;\n if (test > 0.499995 * unit) {\n // TODO: Use glmatrix.EPSILON\n // singularity at the north pole\n out[0] = Math.PI / 2;\n out[1] = 2 * Math.atan2(y, x);\n out[2] = 0;\n }\n else if (test < -0.499995 * unit) {\n //TODO: Use glmatrix.EPSILON\n // singularity at the south pole\n out[0] = -Math.PI / 2;\n out[1] = 2 * Math.atan2(y, x);\n out[2] = 0;\n }\n else {\n out[0] = Math.asin(2 * (x * z - w * y));\n out[1] = Math.atan2(2 * (x * w + y * z), 1 - 2 * (z2 + w2));\n out[2] = Math.atan2(2 * (x * y + z * w), 1 - 2 * (y2 + z2));\n }\n // TODO: Return them as degrees and not as radians\n return out;\n}\nfunction getEulerFromMat4(out, m) {\n var x;\n var z;\n var halfPi = Math.PI * 0.5;\n var _a = __read(mat4.getScaling(vec3.create(), m), 3), sx = _a[0], sy = _a[1], sz = _a[2];\n var y = Math.asin(-m[2] / sx);\n if (y < halfPi) {\n if (y > -halfPi) {\n x = Math.atan2(m[6] / sy, m[10] / sz);\n z = Math.atan2(m[1] / sx, m[0] / sx);\n }\n else {\n // Not a unique solution\n z = 0;\n x = -Math.atan2(m[4] / sy, m[5] / sy);\n }\n }\n else {\n // Not a unique solution\n z = 0;\n x = Math.atan2(m[4] / sy, m[5] / sy);\n }\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * @see https://github.com/toji/gl-matrix/issues/329\n * @see https://doc.babylonjs.com/divingDeeper/mesh/transforms/center_origin/rotation_conventions\n */\nfunction getEuler(out, quat) {\n if (quat.length === 16) {\n return getEulerFromMat4(out, quat);\n }\n else {\n return getEulerFromQuat(out, quat);\n }\n}\nfunction fromRotationTranslationScale(rotation, x, y, scaleX, scaleY) {\n var cos = Math.cos(rotation);\n var sin = Math.sin(rotation);\n return mat3.fromValues(scaleX * cos, scaleY * sin, 0, -scaleX * sin, scaleY * cos, 0, x, y, 1);\n}\nfunction makePerspective(out, left, right, top, bottom, near, far, zero) {\n if (zero === void 0) { zero = false; }\n var x = (2 * near) / (right - left);\n var y = (2 * near) / (top - bottom);\n var a = (right + left) / (right - left);\n var b = (top + bottom) / (top - bottom);\n var c;\n var d;\n if (zero) {\n c = -far / (far - near);\n d = (-far * near) / (far - near);\n }\n else {\n c = -(far + near) / (far - near);\n d = (-2 * far * near) / (far - near);\n }\n out[0] = x;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = y;\n out[6] = 0;\n out[7] = 0;\n out[8] = a;\n out[9] = b;\n out[10] = c;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = d;\n out[15] = 0;\n return out;\n}\nfunction decompose(mat) {\n var row0x = mat[0];\n var row0y = mat[1];\n var row1x = mat[3];\n var row1y = mat[4];\n // decompose 3x3 matrix\n // @see https://www.w3.org/TR/css-transforms-1/#decomposing-a-2d-matrix\n var scalingX = Math.sqrt(row0x * row0x + row0y * row0y);\n var scalingY = Math.sqrt(row1x * row1x + row1y * row1y);\n // If determinant is negative, one axis was flipped.\n var determinant = row0x * row1y - row0y * row1x;\n if (determinant < 0) {\n // Flip axis with minimum unit vector dot product.\n if (row0x < row1y) {\n scalingX = -scalingX;\n }\n else {\n scalingY = -scalingY;\n }\n }\n // Renormalize matrix to remove scale.\n if (scalingX) {\n row0x *= 1 / scalingX;\n row0y *= 1 / scalingX;\n }\n if (scalingY) {\n row1x *= 1 / scalingY;\n row1y *= 1 / scalingY;\n }\n // Compute rotation and renormalize matrix.\n var rotation = Math.atan2(row0y, row0x);\n var angle = rad2deg(rotation);\n return [mat[6], mat[7], scalingX, scalingY, angle];\n}\nvar tmp = mat4.create();\nvar perspectiveMatrix = mat4.create();\nvar tmpVec4 = vec4.create();\nvar row = [vec3.create(), vec3.create(), vec3.create()];\nvar pdum3 = vec3.create();\n/*\nInput: matrix ; a 4x4 matrix\nOutput: translation ; a 3 component vector\n scale ; a 3 component vector\n skew ; skew factors XY,XZ,YZ represented as a 3 component vector\n perspective ; a 4 component vector\n quaternion ; a 4 component vector\nReturns false if the matrix cannot be decomposed, true if it can\n\n\nReferences:\nhttps://github.com/kamicane/matrix3d/blob/master/lib/Matrix3d.js\nhttps://github.com/ChromiumWebApps/chromium/blob/master/ui/gfx/transform_util.cc\nhttp://www.w3.org/TR/css3-transforms/#decomposing-a-3d-matrix\n*/\nfunction decomposeMat4(matrix, translation, scale, skew, perspective, quaternion) {\n //normalize, if not possible then bail out early\n if (!normalize(tmp, matrix))\n return false;\n // perspectiveMatrix is used to solve for perspective, but it also provides\n // an easy way to test for singularity of the upper 3x3 component.\n mat4.copy(perspectiveMatrix, tmp);\n perspectiveMatrix[3] = 0;\n perspectiveMatrix[7] = 0;\n perspectiveMatrix[11] = 0;\n perspectiveMatrix[15] = 1;\n // If the perspectiveMatrix is not invertible, we are also unable to\n // decompose, so we'll bail early. Constant taken from SkMatrix44::invert.\n if (Math.abs(mat4.determinant(perspectiveMatrix)) < 1e-8)\n return false;\n var a03 = tmp[3], a13 = tmp[7], a23 = tmp[11], a30 = tmp[12], a31 = tmp[13], a32 = tmp[14], a33 = tmp[15];\n // First, isolate perspective.\n if (a03 !== 0 || a13 !== 0 || a23 !== 0) {\n tmpVec4[0] = a03;\n tmpVec4[1] = a13;\n tmpVec4[2] = a23;\n tmpVec4[3] = a33;\n // Solve the equation by inverting perspectiveMatrix and multiplying\n // rightHandSide by the inverse.\n // resuing the perspectiveMatrix here since it's no longer needed\n var ret = mat4.invert(perspectiveMatrix, perspectiveMatrix);\n if (!ret)\n return false;\n mat4.transpose(perspectiveMatrix, perspectiveMatrix);\n //multiply by transposed inverse perspective matrix, into perspective vec4\n vec4.transformMat4(perspective, tmpVec4, perspectiveMatrix);\n }\n else {\n //no perspective\n perspective[0] = perspective[1] = perspective[2] = 0;\n perspective[3] = 1;\n }\n // Next take care of translation\n translation[0] = a30;\n translation[1] = a31;\n translation[2] = a32;\n // Now get scale and shear. 'row' is a 3 element array of 3 component vectors\n mat3from4(row, tmp);\n // Compute X scale factor and normalize first row.\n scale[0] = vec3.length(row[0]);\n vec3.normalize(row[0], row[0]);\n // Compute XY shear factor and make 2nd row orthogonal to 1st.\n skew[0] = vec3.dot(row[0], row[1]);\n combine(row[1], row[1], row[0], 1.0, -skew[0]);\n // Now, compute Y scale and normalize 2nd row.\n scale[1] = vec3.length(row[1]);\n vec3.normalize(row[1], row[1]);\n skew[0] /= scale[1];\n // Compute XZ and YZ shears, orthogonalize 3rd row\n skew[1] = vec3.dot(row[0], row[2]);\n combine(row[2], row[2], row[0], 1.0, -skew[1]);\n skew[2] = vec3.dot(row[1], row[2]);\n combine(row[2], row[2], row[1], 1.0, -skew[2]);\n // Next, get Z scale and normalize 3rd row.\n scale[2] = vec3.length(row[2]);\n vec3.normalize(row[2], row[2]);\n skew[1] /= scale[2];\n skew[2] /= scale[2];\n // At this point, the matrix (in rows) is orthonormal.\n // Check for a coordinate system flip. If the determinant\n // is -1, then negate the matrix and the scaling factors.\n vec3.cross(pdum3, row[1], row[2]);\n if (vec3.dot(row[0], pdum3) < 0) {\n for (var i = 0; i < 3; i++) {\n scale[i] *= -1;\n row[i][0] *= -1;\n row[i][1] *= -1;\n row[i][2] *= -1;\n }\n }\n // Now, get the rotations out\n quaternion[0] =\n 0.5 * Math.sqrt(Math.max(1 + row[0][0] - row[1][1] - row[2][2], 0));\n quaternion[1] =\n 0.5 * Math.sqrt(Math.max(1 - row[0][0] + row[1][1] - row[2][2], 0));\n quaternion[2] =\n 0.5 * Math.sqrt(Math.max(1 - row[0][0] - row[1][1] + row[2][2], 0));\n quaternion[3] =\n 0.5 * Math.sqrt(Math.max(1 + row[0][0] + row[1][1] + row[2][2], 0));\n if (row[2][1] > row[1][2])\n quaternion[0] = -quaternion[0];\n if (row[0][2] > row[2][0])\n quaternion[1] = -quaternion[1];\n if (row[1][0] > row[0][1])\n quaternion[2] = -quaternion[2];\n return true;\n}\nfunction normalize(out, mat) {\n var m44 = mat[15];\n // Cannot normalize.\n if (m44 === 0)\n return false;\n var scale = 1 / m44;\n for (var i = 0; i < 16; i++)\n out[i] = mat[i] * scale;\n return true;\n}\n//gets upper-left of a 4x4 matrix into a 3x3 of vectors\nfunction mat3from4(out, mat4x4) {\n out[0][0] = mat4x4[0];\n out[0][1] = mat4x4[1];\n out[0][2] = mat4x4[2];\n out[1][0] = mat4x4[4];\n out[1][1] = mat4x4[5];\n out[1][2] = mat4x4[6];\n out[2][0] = mat4x4[8];\n out[2][1] = mat4x4[9];\n out[2][2] = mat4x4[10];\n}\nfunction combine(out, a, b, scale1, scale2) {\n out[0] = a[0] * scale1 + b[0] * scale2;\n out[1] = a[1] * scale1 + b[1] * scale2;\n out[2] = a[2] * scale1 + b[2] * scale2;\n}\n\n/**\n * Axis-Aligned Bounding Box\n * 为了便于后续 Frustum Culling,通过查找表定义 p-vertex 和 n-vertex\n * @see https://github.com/antvis/GWebGPUEngine/issues/3\n */\nvar AABB = /** @class */ (function () {\n function AABB() {\n this.center = [0, 0, 0];\n this.halfExtents = [0, 0, 0];\n this.min = [0, 0, 0];\n this.max = [0, 0, 0];\n }\n AABB.isEmpty = function (aabb) {\n return (!aabb ||\n (aabb.halfExtents[0] === 0 &&\n aabb.halfExtents[1] === 0 &&\n aabb.halfExtents[2] === 0));\n };\n // center: vec3 = vec3.create();\n // halfExtents: vec3 = vec3.create();\n // min: vec3 = vec3.create();\n // max: vec3 = vec3.create();\n AABB.prototype.update = function (center, halfExtents) {\n copyVec3(this.center, center);\n copyVec3(this.halfExtents, halfExtents);\n subVec3(this.min, this.center, this.halfExtents);\n addVec3(this.max, this.center, this.halfExtents);\n // vec3.copy(this.center, center);\n // vec3.copy(this.halfExtents, halfExtents);\n // vec3.sub(this.min, this.center, this.halfExtents);\n // vec3.add(this.max, this.center, this.halfExtents);\n };\n AABB.prototype.setMinMax = function (min, max) {\n // vec3.add(this.center, max, min);\n // vec3.scale(this.center, this.center, 0.5);\n // vec3.sub(this.halfExtents, max, min);\n // vec3.scale(this.halfExtents, this.halfExtents, 0.5);\n // vec3.copy(this.min, min);\n // vec3.copy(this.max, max);\n addVec3(this.center, max, min);\n scaleVec3(this.center, this.center, 0.5);\n subVec3(this.halfExtents, max, min);\n scaleVec3(this.halfExtents, this.halfExtents, 0.5);\n copyVec3(this.min, min);\n copyVec3(this.max, max);\n };\n AABB.prototype.getMin = function () {\n return this.min;\n };\n AABB.prototype.getMax = function () {\n return this.max;\n };\n AABB.prototype.add = function (aabb) {\n if (AABB.isEmpty(aabb)) {\n return;\n }\n if (AABB.isEmpty(this)) {\n this.setMinMax(aabb.getMin(), aabb.getMax());\n return;\n }\n var tc = this.center;\n var tcx = tc[0];\n var tcy = tc[1];\n var tcz = tc[2];\n var th = this.halfExtents;\n var thx = th[0];\n var thy = th[1];\n var thz = th[2];\n var tminx = tcx - thx;\n var tmaxx = tcx + thx;\n var tminy = tcy - thy;\n var tmaxy = tcy + thy;\n var tminz = tcz - thz;\n var tmaxz = tcz + thz;\n var oc = aabb.center;\n var ocx = oc[0];\n var ocy = oc[1];\n var ocz = oc[2];\n var oh = aabb.halfExtents;\n var ohx = oh[0];\n var ohy = oh[1];\n var ohz = oh[2];\n var ominx = ocx - ohx;\n var omaxx = ocx + ohx;\n var ominy = ocy - ohy;\n var omaxy = ocy + ohy;\n var ominz = ocz - ohz;\n var omaxz = ocz + ohz;\n if (ominx < tminx) {\n tminx = ominx;\n }\n if (omaxx > tmaxx) {\n tmaxx = omaxx;\n }\n if (ominy < tminy) {\n tminy = ominy;\n }\n if (omaxy > tmaxy) {\n tmaxy = omaxy;\n }\n if (ominz < tminz) {\n tminz = ominz;\n }\n if (omaxz > tmaxz) {\n tmaxz = omaxz;\n }\n tc[0] = (tminx + tmaxx) * 0.5;\n tc[1] = (tminy + tmaxy) * 0.5;\n tc[2] = (tminz + tmaxz) * 0.5;\n th[0] = (tmaxx - tminx) * 0.5;\n th[1] = (tmaxy - tminy) * 0.5;\n th[2] = (tmaxz - tminz) * 0.5;\n this.min[0] = tminx;\n this.min[1] = tminy;\n this.min[2] = tminz;\n this.max[0] = tmaxx;\n this.max[1] = tmaxy;\n this.max[2] = tmaxz;\n };\n AABB.prototype.setFromTransformedAABB = function (aabb, m) {\n var bc = this.center;\n var br = this.halfExtents;\n var ac = aabb.center;\n var ar = aabb.halfExtents;\n var mx0 = m[0];\n var mx1 = m[4];\n var mx2 = m[8];\n var my0 = m[1];\n var my1 = m[5];\n var my2 = m[9];\n var mz0 = m[2];\n var mz1 = m[6];\n var mz2 = m[10];\n var mx0a = Math.abs(mx0);\n var mx1a = Math.abs(mx1);\n var mx2a = Math.abs(mx2);\n var my0a = Math.abs(my0);\n var my1a = Math.abs(my1);\n var my2a = Math.abs(my2);\n var mz0a = Math.abs(mz0);\n var mz1a = Math.abs(mz1);\n var mz2a = Math.abs(mz2);\n bc[0] = m[12] + mx0 * ac[0] + mx1 * ac[1] + mx2 * ac[2];\n bc[1] = m[13] + my0 * ac[0] + my1 * ac[1] + my2 * ac[2];\n bc[2] = m[14] + mz0 * ac[0] + mz1 * ac[1] + mz2 * ac[2];\n // vec3.set(\n // bc,\n // m[12] + mx0 * ac[0] + mx1 * ac[1] + mx2 * ac[2],\n // m[13] + my0 * ac[0] + my1 * ac[1] + my2 * ac[2],\n // m[14] + mz0 * ac[0] + mz1 * ac[1] + mz2 * ac[2],\n // );\n br[0] = mx0a * ar[0] + mx1a * ar[1] + mx2a * ar[2];\n br[1] = my0a * ar[0] + my1a * ar[1] + my2a * ar[2];\n br[2] = mz0a * ar[0] + mz1a * ar[1] + mz2a * ar[2];\n // vec3.set(\n // br,\n // mx0a * ar[0] + mx1a * ar[1] + mx2a * ar[2],\n // my0a * ar[0] + my1a * ar[1] + my2a * ar[2],\n // mz0a * ar[0] + mz1a * ar[1] + mz2a * ar[2],\n // );\n // this.min = vec3.sub(this.min, bc, br);\n // this.max = vec3.add(this.max, bc, br);\n subVec3(this.min, bc, br);\n addVec3(this.max, bc, br);\n };\n AABB.prototype.intersects = function (aabb) {\n var aMax = this.getMax();\n var aMin = this.getMin();\n var bMax = aabb.getMax();\n var bMin = aabb.getMin();\n return (aMin[0] <= bMax[0] &&\n aMax[0] >= bMin[0] &&\n aMin[1] <= bMax[1] &&\n aMax[1] >= bMin[1] &&\n aMin[2] <= bMax[2] &&\n aMax[2] >= bMin[2]);\n };\n AABB.prototype.intersection = function (aabb) {\n if (!this.intersects(aabb)) {\n return null;\n }\n var intersection = new AABB();\n // const min = vec3.max(vec3.create(), this.getMin(), aabb.getMin());\n // const max = vec3.min(vec3.create(), this.getMax(), aabb.getMax());\n var min = maxVec3([0, 0, 0], this.getMin(), aabb.getMin());\n var max = minVec3([0, 0, 0], this.getMax(), aabb.getMax());\n intersection.setMinMax(min, max);\n return intersection;\n };\n // containsPoint(point: vec3) {\n // const min = this.getMin();\n // const max = this.getMax();\n // return !(\n // point[0] < min[0] ||\n // point[0] > max[0] ||\n // point[1] < min[1] ||\n // point[1] > max[1] ||\n // point[2] < min[2] ||\n // point[2] > max[2]\n // );\n // }\n /**\n * get n-vertex\n * @param plane plane of CullingVolume\n */\n AABB.prototype.getNegativeFarPoint = function (plane) {\n if (plane.pnVertexFlag === 0x111) {\n return copyVec3([0, 0, 0], this.min);\n // return vec3.copy(vec3.create(), this.min);\n }\n else if (plane.pnVertexFlag === 0x110) {\n return [this.min[0], this.min[1], this.max[2]];\n // return vec3.fromValues(this.min[0], this.min[1], this.max[2]);\n }\n else if (plane.pnVertexFlag === 0x101) {\n return [this.min[0], this.max[1], this.min[2]];\n // return vec3.fromValues(this.min[0], this.max[1], this.min[2]);\n }\n else if (plane.pnVertexFlag === 0x100) {\n return [this.min[0], this.max[1], this.max[2]];\n // return vec3.fromValues(this.min[0], this.max[1], this.max[2]);\n }\n else if (plane.pnVertexFlag === 0x011) {\n return [this.max[0], this.min[1], this.min[2]];\n // return vec3.fromValues(this.max[0], this.min[1], this.min[2]);\n }\n else if (plane.pnVertexFlag === 0x010) {\n return [this.max[0], this.min[1], this.max[2]];\n // return vec3.fromValues(this.max[0], this.min[1], this.max[2]);\n }\n else if (plane.pnVertexFlag === 0x001) {\n return [this.max[0], this.max[1], this.min[2]];\n // return vec3.fromValues(this.max[0], this.max[1], this.min[2]);\n }\n else {\n return [this.max[0], this.max[1], this.max[2]];\n // return vec3.fromValues(this.max[0], this.max[1], this.max[2]);\n }\n };\n /**\n * get p-vertex\n * @param plane plane of CullingVolume\n */\n AABB.prototype.getPositiveFarPoint = function (plane) {\n if (plane.pnVertexFlag === 0x111) {\n return copyVec3([0, 0, 0], this.max);\n // return vec3.copy(vec3.create(), this.max);\n }\n else if (plane.pnVertexFlag === 0x110) {\n return [this.max[0], this.max[1], this.min[2]];\n // return vec3.fromValues(this.max[0], this.max[1], this.min[2]);\n }\n else if (plane.pnVertexFlag === 0x101) {\n return [this.max[0], this.min[1], this.max[2]];\n // return vec3.fromValues(this.max[0], this.min[1], this.max[2]);\n }\n else if (plane.pnVertexFlag === 0x100) {\n return [this.max[0], this.min[1], this.min[2]];\n // return vec3.fromValues(this.max[0], this.min[1], this.min[2]);\n }\n else if (plane.pnVertexFlag === 0x011) {\n return [this.min[0], this.max[1], this.max[2]];\n // return vec3.fromValues(this.min[0], this.max[1], this.max[2]);\n }\n else if (plane.pnVertexFlag === 0x010) {\n return [this.min[0], this.max[1], this.min[2]];\n // return vec3.fromValues(this.min[0], this.max[1], this.min[2]);\n }\n else if (plane.pnVertexFlag === 0x001) {\n return [this.min[0], this.min[1], this.max[2]];\n // return vec3.fromValues(this.min[0], this.min[1], this.max[2]);\n }\n else {\n return [this.min[0], this.min[1], this.min[2]];\n // return vec3.fromValues(this.min[0], this.min[1], this.min[2]);\n }\n };\n return AABB;\n}());\n\nvar Plane = /** @class */ (function () {\n function Plane(distance, normal) {\n this.distance = distance || 0;\n this.normal = normal || vec3.fromValues(0, 1, 0);\n this.updatePNVertexFlag();\n }\n Plane.prototype.updatePNVertexFlag = function () {\n this.pnVertexFlag =\n (Number(this.normal[0] >= 0) << 8) +\n (Number(this.normal[1] >= 0) << 4) +\n Number(this.normal[2] >= 0);\n };\n Plane.prototype.distanceToPoint = function (point) {\n return vec3.dot(point, this.normal) - this.distance;\n };\n Plane.prototype.normalize = function () {\n var invLen = 1 / vec3.len(this.normal);\n vec3.scale(this.normal, this.normal, invLen);\n this.distance *= invLen;\n };\n Plane.prototype.intersectsLine = function (start, end, point) {\n var d0 = this.distanceToPoint(start);\n var d1 = this.distanceToPoint(end);\n var t = d0 / (d0 - d1);\n var intersects = t >= 0 && t <= 1;\n if (intersects && point) {\n vec3.lerp(point, start, end, t);\n }\n return intersects;\n };\n return Plane;\n}());\n\nvar Mask;\n(function (Mask) {\n Mask[Mask[\"OUTSIDE\"] = 4294967295] = \"OUTSIDE\";\n Mask[Mask[\"INSIDE\"] = 0] = \"INSIDE\";\n Mask[Mask[\"INDETERMINATE\"] = 2147483647] = \"INDETERMINATE\";\n})(Mask || (Mask = {}));\nvar Frustum = /** @class */ (function () {\n function Frustum(planes) {\n this.planes = [];\n if (planes) {\n this.planes = planes;\n }\n else {\n for (var i = 0; i < 6; i++) {\n this.planes.push(new Plane());\n }\n }\n }\n /**\n * extract 6 planes from projectionMatrix\n * @see http://www8.cs.umu.se/kurser/5DV051/HT12/lab/plane_extraction.pdf\n */\n Frustum.prototype.extractFromVPMatrix = function (projectionMatrix) {\n // @ts-ignore\n var _a = __read(projectionMatrix, 16), m0 = _a[0], m1 = _a[1], m2 = _a[2], m3 = _a[3], m4 = _a[4], m5 = _a[5], m6 = _a[6], m7 = _a[7], m8 = _a[8], m9 = _a[9], m10 = _a[10], m11 = _a[11], m12 = _a[12], m13 = _a[13], m14 = _a[14], m15 = _a[15];\n // right\n vec3.set(this.planes[0].normal, m3 - m0, m7 - m4, m11 - m8);\n this.planes[0].distance = m15 - m12;\n // left\n vec3.set(this.planes[1].normal, m3 + m0, m7 + m4, m11 + m8);\n this.planes[1].distance = m15 + m12;\n // bottom\n vec3.set(this.planes[2].normal, m3 + m1, m7 + m5, m11 + m9);\n this.planes[2].distance = m15 + m13;\n // top\n vec3.set(this.planes[3].normal, m3 - m1, m7 - m5, m11 - m9);\n this.planes[3].distance = m15 - m13;\n // far\n vec3.set(this.planes[4].normal, m3 - m2, m7 - m6, m11 - m10);\n this.planes[4].distance = m15 - m14;\n // near\n vec3.set(this.planes[5].normal, m3 + m2, m7 + m6, m11 + m10);\n this.planes[5].distance = m15 + m14;\n this.planes.forEach(function (plane) {\n plane.normalize();\n plane.updatePNVertexFlag();\n });\n };\n return Frustum;\n}());\n\nvar Point = /** @class */ (function () {\n function Point(x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n this.x = 0;\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n Point.prototype.clone = function () {\n return new Point(this.x, this.y);\n };\n Point.prototype.copyFrom = function (p) {\n this.x = p.x;\n this.y = p.y;\n };\n return Point;\n}());\n\nvar Rectangle = /** @class */ (function () {\n function Rectangle(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.left = x;\n this.right = x + width;\n this.top = y;\n this.bottom = y + height;\n }\n Rectangle.prototype.toJSON = function () { };\n return Rectangle;\n}());\n\nvar ERROR_MSG_METHOD_NOT_IMPLEMENTED = 'Method not implemented.';\nvar ERROR_MSG_USE_DOCUMENT_ELEMENT = 'Use document.documentElement instead.';\nvar ERROR_MSG_APPEND_DESTROYED_ELEMENT = 'Cannot append a destroyed element.';\n\n/**\n * Different type of cameras, eg. simple camera used in 2D scene or\n * advanced camera which can do actions & switch between landmarks.\n */\nvar CameraType;\n(function (CameraType) {\n /**\n * Performs all the rotational operations with the focal point instead of the camera position.\n * This type of camera is useful in applications(like CAD) where 3D objects are being designed or explored.\n * Camera cannot orbits over the north & south poles.\n * @see http://voxelent.com/tutorial-cameras/\n *\n * In Three.js it's used in OrbitControls.\n * @see https://threejs.org/docs/#examples/zh/controls/OrbitControls\n */\n CameraType[CameraType[\"ORBITING\"] = 0] = \"ORBITING\";\n /**\n * It's similar to the ORBITING camera, but it allows the camera to orbit over the north or south poles.\n *\n * In Three.js it's used in OrbitControls.\n * @see https://threejs.org/docs/#examples/en/controls/TrackballControls\n */\n CameraType[CameraType[\"EXPLORING\"] = 1] = \"EXPLORING\";\n /**\n * Performs all the rotational operations with the camera position.\n * It's useful in first person shooting games.\n * Camera cannot orbits over the north & south poles.\n *\n * In Three.js it's used in FirstPersonControls.\n * @see https://threejs.org/docs/#examples/en/controls/FirstPersonControls\n */\n CameraType[CameraType[\"TRACKING\"] = 2] = \"TRACKING\";\n})(CameraType || (CameraType = {}));\n/**\n * CameraType must be TRACKING\n */\nvar CameraTrackingMode;\n(function (CameraTrackingMode) {\n CameraTrackingMode[CameraTrackingMode[\"DEFAULT\"] = 0] = \"DEFAULT\";\n CameraTrackingMode[CameraTrackingMode[\"ROTATIONAL\"] = 1] = \"ROTATIONAL\";\n CameraTrackingMode[CameraTrackingMode[\"TRANSLATIONAL\"] = 2] = \"TRANSLATIONAL\";\n CameraTrackingMode[CameraTrackingMode[\"CINEMATIC\"] = 3] = \"CINEMATIC\";\n})(CameraTrackingMode || (CameraTrackingMode = {}));\nvar CameraProjectionMode;\n(function (CameraProjectionMode) {\n CameraProjectionMode[CameraProjectionMode[\"ORTHOGRAPHIC\"] = 0] = \"ORTHOGRAPHIC\";\n CameraProjectionMode[CameraProjectionMode[\"PERSPECTIVE\"] = 1] = \"PERSPECTIVE\";\n})(CameraProjectionMode || (CameraProjectionMode = {}));\nvar CameraEvent = {\n UPDATED: 'updated',\n};\n\nvar MIN_DISTANCE = 0.0002;\n/**\n * 参考「WebGL Insights - 23.Designing Cameras for WebGL Applications」,基于 Responsible Camera 思路设计\n * @see https://github.com/d13g0/nucleo.js/blob/master/source/camera/Camera.js\n *\n * 保存相机参数,定义相机动作:\n * 1. dolly 沿 n 轴移动\n * 2. pan 沿 u v 轴移动\n * 3. rotate 以方位角旋转\n * 4. 移动到 Landmark,具有平滑的动画效果,其间禁止其他用户交互\n */\nvar Camera = /** @class */ (function () {\n function Camera() {\n /**\n * Clip space near Z, default to range `[-1, 1]`\n */\n this.clipSpaceNearZ = ClipSpaceNearZ.NEGATIVE_ONE;\n this.eventEmitter = new EventEmitter();\n /**\n * Matrix of camera\n */\n this.matrix = mat4.create();\n /**\n * u axis +X is right\n * @see http://learnwebgl.brown37.net/07_cameras/camera_introduction.html#a-camera-definition\n */\n this.right = vec3.fromValues(1, 0, 0);\n /**\n * v axis +Y is up\n */\n this.up = vec3.fromValues(0, 1, 0);\n /**\n * n axis +Z is inside\n */\n this.forward = vec3.fromValues(0, 0, 1);\n /**\n * Position of camera.\n */\n this.position = vec3.fromValues(0, 0, 1);\n /**\n * Position of focal point.\n */\n this.focalPoint = vec3.fromValues(0, 0, 0);\n /**\n * vector from focalPoint to position\n */\n this.distanceVector = vec3.fromValues(0, 0, -1);\n /**\n * length(focalPoint - position)\n */\n this.distance = 1;\n /**\n * @see https://en.wikipedia.org/wiki/Azimuth\n */\n this.azimuth = 0;\n this.elevation = 0;\n this.roll = 0;\n this.relAzimuth = 0;\n this.relElevation = 0;\n this.relRoll = 0;\n /**\n * 沿 n 轴移动时,保证移动速度从快到慢\n */\n this.dollyingStep = 0;\n this.maxDistance = Infinity;\n this.minDistance = -Infinity;\n /**\n * zoom factor of the camera, default is 1\n * eg. https://threejs.org/docs/#api/en/cameras/OrthographicCamera.zoom\n */\n this.zoom = 1;\n /**\n * invert the horizontal coordinate system HCS\n */\n this.rotateWorld = false;\n /**\n * 投影矩阵参数\n */\n /**\n * field of view [0-360]\n * @see http://en.wikipedia.org/wiki/Angle_of_view\n */\n this.fov = 30;\n this.near = 0.1;\n this.far = 1000;\n this.aspect = 1;\n this.projectionMatrix = mat4.create();\n this.projectionMatrixInverse = mat4.create();\n this.jitteredProjectionMatrix = undefined;\n this.enableUpdate = true;\n // protected following = undefined;\n this.type = CameraType.EXPLORING;\n this.trackingMode = CameraTrackingMode.DEFAULT;\n this.projectionMode = CameraProjectionMode.PERSPECTIVE;\n /**\n * for culling use\n */\n this.frustum = new Frustum();\n /**\n * ortho matrix for Canvas2D & SVG\n */\n this.orthoMatrix = mat4.create();\n }\n // constructor(type = CameraType.EXPLORING, trackingMode = CameraTrackingMode.DEFAULT) {\n // this.setType(type, trackingMode);\n // }\n Camera.prototype.isOrtho = function () {\n return this.projectionMode === CameraProjectionMode.ORTHOGRAPHIC;\n };\n Camera.prototype.getProjectionMode = function () {\n return this.projectionMode;\n };\n Camera.prototype.getPerspective = function () {\n // account for TAA\n return this.jitteredProjectionMatrix || this.projectionMatrix;\n };\n Camera.prototype.getPerspectiveInverse = function () {\n return this.projectionMatrixInverse;\n };\n Camera.prototype.getFrustum = function () {\n return this.frustum;\n };\n Camera.prototype.getPosition = function () {\n return this.position;\n };\n Camera.prototype.getFocalPoint = function () {\n return this.focalPoint;\n };\n Camera.prototype.getDollyingStep = function () {\n return this.dollyingStep;\n };\n Camera.prototype.getNear = function () {\n return this.near;\n };\n Camera.prototype.getFar = function () {\n return this.far;\n };\n Camera.prototype.getZoom = function () {\n return this.zoom;\n };\n Camera.prototype.getOrthoMatrix = function () {\n return this.orthoMatrix;\n };\n Camera.prototype.getView = function () {\n return this.view;\n };\n Camera.prototype.setEnableUpdate = function (enabled) {\n this.enableUpdate = enabled;\n };\n Camera.prototype.setType = function (type, trackingMode) {\n this.type = type;\n if (this.type === CameraType.EXPLORING) {\n this.setWorldRotation(true);\n }\n else {\n this.setWorldRotation(false);\n }\n this._getAngles();\n if (this.type === CameraType.TRACKING && trackingMode !== undefined) {\n this.setTrackingMode(trackingMode);\n }\n return this;\n };\n Camera.prototype.setProjectionMode = function (projectionMode) {\n this.projectionMode = projectionMode;\n return this;\n };\n Camera.prototype.setTrackingMode = function (trackingMode) {\n if (this.type !== CameraType.TRACKING) {\n throw new Error('Impossible to set a tracking mode if the camera is not of tracking type');\n }\n this.trackingMode = trackingMode;\n return this;\n };\n /**\n * If flag is true, it reverses the azimuth and elevation angles.\n * Subsequent calls to rotate, setAzimuth, setElevation,\n * changeAzimuth or changeElevation will cause the inverted effect.\n * setRoll or changeRoll is not affected by this method.\n *\n * This inversion is useful when one wants to simulate that the world\n * is moving, instead of the camera.\n *\n * By default the camera angles are not reversed.\n * @param {Boolean} flag the boolean flag to reverse the angles.\n */\n Camera.prototype.setWorldRotation = function (flag) {\n this.rotateWorld = flag;\n this._getAngles();\n return this;\n };\n /**\n * 计算 MV 矩阵,为相机矩阵的逆矩阵\n */\n Camera.prototype.getViewTransform = function () {\n return mat4.invert(mat4.create(), this.matrix);\n };\n Camera.prototype.getWorldTransform = function () {\n return this.matrix;\n };\n Camera.prototype.jitterProjectionMatrix = function (x, y) {\n var translation = mat4.fromTranslation(mat4.create(), [x, y, 0]);\n this.jitteredProjectionMatrix = mat4.multiply(mat4.create(), translation, this.projectionMatrix);\n };\n Camera.prototype.clearJitterProjectionMatrix = function () {\n this.jitteredProjectionMatrix = undefined;\n };\n /**\n * 设置相机矩阵\n */\n Camera.prototype.setMatrix = function (matrix) {\n this.matrix = matrix;\n this._update();\n return this;\n };\n Camera.prototype.setFov = function (fov) {\n this.setPerspective(this.near, this.far, fov, this.aspect);\n return this;\n };\n Camera.prototype.setAspect = function (aspect) {\n this.setPerspective(this.near, this.far, this.fov, aspect);\n return this;\n };\n Camera.prototype.setNear = function (near) {\n if (this.projectionMode === CameraProjectionMode.PERSPECTIVE) {\n this.setPerspective(near, this.far, this.fov, this.aspect);\n }\n else {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, near, this.far);\n }\n return this;\n };\n Camera.prototype.setFar = function (far) {\n if (this.projectionMode === CameraProjectionMode.PERSPECTIVE) {\n this.setPerspective(this.near, far, this.fov, this.aspect);\n }\n else {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, this.near, far);\n }\n return this;\n };\n /**\n * Sets an offset in a larger frustum, used in PixelPicking\n */\n Camera.prototype.setViewOffset = function (fullWidth, fullHeight, x, y, width, height) {\n this.aspect = fullWidth / fullHeight;\n if (this.view === undefined) {\n this.view = {\n enabled: true,\n fullWidth: 1,\n fullHeight: 1,\n offsetX: 0,\n offsetY: 0,\n width: 1,\n height: 1,\n };\n }\n this.view.enabled = true;\n this.view.fullWidth = fullWidth;\n this.view.fullHeight = fullHeight;\n this.view.offsetX = x;\n this.view.offsetY = y;\n this.view.width = width;\n this.view.height = height;\n if (this.projectionMode === CameraProjectionMode.PERSPECTIVE) {\n this.setPerspective(this.near, this.far, this.fov, this.aspect);\n }\n else {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, this.near, this.far);\n }\n return this;\n };\n Camera.prototype.clearViewOffset = function () {\n if (this.view !== undefined) {\n this.view.enabled = false;\n }\n if (this.projectionMode === CameraProjectionMode.PERSPECTIVE) {\n this.setPerspective(this.near, this.far, this.fov, this.aspect);\n }\n else {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, this.near, this.far);\n }\n return this;\n };\n Camera.prototype.setZoom = function (zoom) {\n this.zoom = zoom;\n if (this.projectionMode === CameraProjectionMode.ORTHOGRAPHIC) {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, this.near, this.far);\n }\n else if (this.projectionMode === CameraProjectionMode.PERSPECTIVE) {\n this.setPerspective(this.near, this.far, this.fov, this.aspect);\n }\n return this;\n };\n /**\n * Zoom by specified point in viewport coordinates.\n */\n Camera.prototype.setZoomByViewportPoint = function (zoom, viewportPoint) {\n var _a = this.canvas.viewport2Canvas({\n x: viewportPoint[0],\n y: viewportPoint[1],\n }), ox = _a.x, oy = _a.y;\n var roll = this.roll;\n this.rotate(0, 0, -roll);\n this.setPosition(ox, oy);\n this.setFocalPoint(ox, oy);\n this.setZoom(zoom);\n this.rotate(0, 0, roll);\n var _b = this.canvas.viewport2Canvas({\n x: viewportPoint[0],\n y: viewportPoint[1],\n }), cx = _b.x, cy = _b.y;\n // project to rotated axis\n var dvec = vec3.fromValues(cx - ox, cy - oy, 0);\n var dx = vec3.dot(dvec, this.right) / vec3.length(this.right);\n var dy = vec3.dot(dvec, this.up) / vec3.length(this.up);\n this.pan(-dx, -dy);\n return this;\n };\n Camera.prototype.setPerspective = function (near, far, fov, aspect) {\n var _a;\n this.projectionMode = CameraProjectionMode.PERSPECTIVE;\n this.fov = fov;\n this.near = near;\n this.far = far;\n this.aspect = aspect;\n var top = (this.near * Math.tan(deg2rad(0.5 * this.fov))) / this.zoom;\n var height = 2 * top;\n var width = this.aspect * height;\n var left = -0.5 * width;\n if ((_a = this.view) === null || _a === void 0 ? void 0 : _a.enabled) {\n var fullWidth = this.view.fullWidth;\n var fullHeight = this.view.fullHeight;\n left += (this.view.offsetX * width) / fullWidth;\n top -= (this.view.offsetY * height) / fullHeight;\n width *= this.view.width / fullWidth;\n height *= this.view.height / fullHeight;\n }\n makePerspective(this.projectionMatrix, left, left + width, top, top - height, near, this.far, this.clipSpaceNearZ === ClipSpaceNearZ.ZERO);\n // flipY since the origin of OpenGL/WebGL is bottom-left compared with top-left in Canvas2D\n mat4.scale(this.projectionMatrix, this.projectionMatrix, vec3.fromValues(1, -1, 1));\n mat4.invert(this.projectionMatrixInverse, this.projectionMatrix);\n this.triggerUpdate();\n return this;\n };\n Camera.prototype.setOrthographic = function (l, r, t, b, near, far) {\n var _a;\n this.projectionMode = CameraProjectionMode.ORTHOGRAPHIC;\n this.rright = r;\n this.left = l;\n this.top = t;\n this.bottom = b;\n this.near = near;\n this.far = far;\n var dx = (this.rright - this.left) / (2 * this.zoom);\n var dy = (this.top - this.bottom) / (2 * this.zoom);\n var cx = (this.rright + this.left) / 2;\n var cy = (this.top + this.bottom) / 2;\n var left = cx - dx;\n var right = cx + dx;\n var top = cy + dy;\n var bottom = cy - dy;\n if ((_a = this.view) === null || _a === void 0 ? void 0 : _a.enabled) {\n var scaleW = (this.rright - this.left) / this.view.fullWidth / this.zoom;\n var scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n left += scaleW * this.view.offsetX;\n right = left + scaleW * this.view.width;\n top -= scaleH * this.view.offsetY;\n bottom = top - scaleH * this.view.height;\n }\n if (this.clipSpaceNearZ === ClipSpaceNearZ.NEGATIVE_ONE) {\n mat4.ortho(this.projectionMatrix, left, right, bottom, top, near, far);\n }\n else {\n mat4.orthoZO(this.projectionMatrix, left, right, bottom, top, near, far);\n }\n // flipY since the origin of OpenGL/WebGL is bottom-left compared with top-left in Canvas2D\n mat4.scale(this.projectionMatrix, this.projectionMatrix, vec3.fromValues(1, -1, 1));\n mat4.invert(this.projectionMatrixInverse, this.projectionMatrix);\n this._getOrthoMatrix();\n this.triggerUpdate();\n return this;\n };\n /**\n * Move the camera in world coordinates.\n * It will keep looking at the current focal point.\n *\n * support scalars or vectors.\n * @example\n * setPosition(1, 2, 3);\n * setPosition([1, 2, 3]);\n */\n Camera.prototype.setPosition = function (x, y, z) {\n if (y === void 0) { y = this.position[1]; }\n if (z === void 0) { z = this.position[2]; }\n var position = createVec3(x, y, z);\n this._setPosition(position);\n this.setFocalPoint(this.focalPoint);\n this.triggerUpdate();\n return this;\n };\n /**\n * Sets the focal point of this camera in world coordinates.\n *\n * support scalars or vectors.\n * @example\n * setFocalPoint(1, 2, 3);\n * setFocalPoint([1, 2, 3]);\n */\n Camera.prototype.setFocalPoint = function (x, y, z) {\n if (y === void 0) { y = this.focalPoint[1]; }\n if (z === void 0) { z = this.focalPoint[2]; }\n var up = vec3.fromValues(0, 1, 0);\n this.focalPoint = createVec3(x, y, z);\n if (this.trackingMode === CameraTrackingMode.CINEMATIC) {\n var d = vec3.subtract(vec3.create(), this.focalPoint, this.position);\n x = d[0];\n y = d[1];\n z = d[2];\n var r = vec3.length(d);\n var el = rad2deg(Math.asin(y / r));\n var az = 90 + rad2deg(Math.atan2(z, x));\n var m = mat4.create();\n mat4.rotateY(m, m, deg2rad(az));\n mat4.rotateX(m, m, deg2rad(el));\n up = vec3.transformMat4(vec3.create(), [0, 1, 0], m);\n }\n mat4.invert(this.matrix, mat4.lookAt(mat4.create(), this.position, this.focalPoint, up));\n this._getAxes();\n this._getDistance();\n this._getAngles();\n this.triggerUpdate();\n return this;\n };\n Camera.prototype.getDistance = function () {\n return this.distance;\n };\n Camera.prototype.getDistanceVector = function () {\n return this.distanceVector;\n };\n /**\n * Moves the camera towards/from the focal point.\n */\n Camera.prototype.setDistance = function (d) {\n if (this.distance === d || d < 0) {\n return this;\n }\n this.distance = d;\n if (this.distance < MIN_DISTANCE) {\n this.distance = MIN_DISTANCE;\n }\n this.dollyingStep = this.distance / 100;\n var pos = vec3.create();\n d = this.distance;\n var n = this.forward;\n var f = this.focalPoint;\n pos[0] = d * n[0] + f[0];\n pos[1] = d * n[1] + f[1];\n pos[2] = d * n[2] + f[2];\n this._setPosition(pos);\n this.triggerUpdate();\n return this;\n };\n Camera.prototype.setMaxDistance = function (d) {\n this.maxDistance = d;\n return this;\n };\n Camera.prototype.setMinDistance = function (d) {\n this.minDistance = d;\n return this;\n };\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * the azimuth in degrees\n */\n Camera.prototype.setAzimuth = function (az) {\n this.azimuth = getAngle(az);\n this.computeMatrix();\n this._getAxes();\n if (this.type === CameraType.ORBITING ||\n this.type === CameraType.EXPLORING) {\n this._getPosition();\n }\n else if (this.type === CameraType.TRACKING) {\n this._getFocalPoint();\n }\n this.triggerUpdate();\n return this;\n };\n Camera.prototype.getAzimuth = function () {\n return this.azimuth;\n };\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n */\n Camera.prototype.setElevation = function (el) {\n this.elevation = getAngle(el);\n this.computeMatrix();\n this._getAxes();\n if (this.type === CameraType.ORBITING ||\n this.type === CameraType.EXPLORING) {\n this._getPosition();\n }\n else if (this.type === CameraType.TRACKING) {\n this._getFocalPoint();\n }\n this.triggerUpdate();\n return this;\n };\n Camera.prototype.getElevation = function () {\n return this.elevation;\n };\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n */\n Camera.prototype.setRoll = function (angle) {\n this.roll = getAngle(angle);\n this.computeMatrix();\n this._getAxes();\n if (this.type === CameraType.ORBITING ||\n this.type === CameraType.EXPLORING) {\n this._getPosition();\n }\n else if (this.type === CameraType.TRACKING) {\n this._getFocalPoint();\n }\n this.triggerUpdate();\n return this;\n };\n Camera.prototype.getRoll = function () {\n return this.roll;\n };\n /**\n * 根据相机矩阵重新计算各种相机参数\n */\n Camera.prototype._update = function () {\n this._getAxes();\n this._getPosition();\n this._getDistance();\n this._getAngles();\n this._getOrthoMatrix();\n this.triggerUpdate();\n };\n /**\n * 计算相机矩阵\n */\n Camera.prototype.computeMatrix = function () {\n // 使用四元数描述 3D 旋转\n // @see https://xiaoiver.github.io/coding/2018/12/28/Camera-%E8%AE%BE%E8%AE%A1-%E4%B8%80.html\n var rotZ = quat$1.setAxisAngle(quat$1.create(), [0, 0, 1], deg2rad(this.roll));\n mat4.identity(this.matrix);\n // only consider HCS for EXPLORING and ORBITING cameras\n var rotX = quat$1.setAxisAngle(quat$1.create(), [1, 0, 0], deg2rad(((this.rotateWorld && this.type !== CameraType.TRACKING) ||\n this.type === CameraType.TRACKING\n ? 1\n : -1) * this.elevation));\n var rotY = quat$1.setAxisAngle(quat$1.create(), [0, 1, 0], deg2rad(((this.rotateWorld && this.type !== CameraType.TRACKING) ||\n this.type === CameraType.TRACKING\n ? 1\n : -1) * this.azimuth));\n var rotQ = quat$1.multiply(quat$1.create(), rotY, rotX);\n rotQ = quat$1.multiply(quat$1.create(), rotQ, rotZ);\n var rotMatrix = mat4.fromQuat(mat4.create(), rotQ);\n if (this.type === CameraType.ORBITING ||\n this.type === CameraType.EXPLORING) {\n mat4.translate(this.matrix, this.matrix, this.focalPoint);\n mat4.multiply(this.matrix, this.matrix, rotMatrix);\n mat4.translate(this.matrix, this.matrix, [0, 0, this.distance]);\n }\n else if (this.type === CameraType.TRACKING) {\n mat4.translate(this.matrix, this.matrix, this.position);\n mat4.multiply(this.matrix, this.matrix, rotMatrix);\n }\n };\n /**\n * Sets the camera position in the camera matrix\n */\n Camera.prototype._setPosition = function (x, y, z) {\n this.position = createVec3(x, y, z);\n var m = this.matrix;\n m[12] = this.position[0];\n m[13] = this.position[1];\n m[14] = this.position[2];\n m[15] = 1;\n this._getOrthoMatrix();\n };\n /**\n * Recalculates axes based on the current matrix\n */\n Camera.prototype._getAxes = function () {\n vec3.copy(this.right, createVec3(vec4.transformMat4(vec4.create(), [1, 0, 0, 0], this.matrix)));\n vec3.copy(this.up, createVec3(vec4.transformMat4(vec4.create(), [0, 1, 0, 0], this.matrix)));\n vec3.copy(this.forward, createVec3(vec4.transformMat4(vec4.create(), [0, 0, 1, 0], this.matrix)));\n vec3.normalize(this.right, this.right);\n vec3.normalize(this.up, this.up);\n vec3.normalize(this.forward, this.forward);\n };\n /**\n * Recalculates euler angles based on the current state\n */\n Camera.prototype._getAngles = function () {\n // Recalculates angles\n var x = this.distanceVector[0];\n var y = this.distanceVector[1];\n var z = this.distanceVector[2];\n var r = vec3.length(this.distanceVector);\n // FAST FAIL: If there is no distance we cannot compute angles\n if (r === 0) {\n this.elevation = 0;\n this.azimuth = 0;\n return;\n }\n if (this.type === CameraType.TRACKING) {\n this.elevation = rad2deg(Math.asin(y / r));\n this.azimuth = rad2deg(Math.atan2(-x, -z));\n }\n else {\n if (this.rotateWorld) {\n this.elevation = rad2deg(Math.asin(y / r));\n this.azimuth = rad2deg(Math.atan2(-x, -z));\n }\n else {\n this.elevation = -rad2deg(Math.asin(y / r));\n this.azimuth = -rad2deg(Math.atan2(-x, -z));\n }\n }\n };\n /**\n * 重新计算相机位置,只有 ORBITING 模式相机位置才会发生变化\n */\n Camera.prototype._getPosition = function () {\n vec3.copy(this.position, createVec3(vec4.transformMat4(vec4.create(), [0, 0, 0, 1], this.matrix)));\n // 相机位置变化,需要重新计算视距\n this._getDistance();\n };\n /**\n * 重新计算视点,只有 TRACKING 模式视点才会发生变化\n */\n Camera.prototype._getFocalPoint = function () {\n vec3.transformMat3(this.distanceVector, [0, 0, -this.distance], mat3.fromMat4(mat3.create(), this.matrix));\n vec3.add(this.focalPoint, this.position, this.distanceVector);\n // 视点变化,需要重新计算视距\n this._getDistance();\n };\n /**\n * 重新计算视距\n */\n Camera.prototype._getDistance = function () {\n this.distanceVector = vec3.subtract(vec3.create(), this.focalPoint, this.position);\n this.distance = vec3.length(this.distanceVector);\n this.dollyingStep = this.distance / 100;\n };\n Camera.prototype._getOrthoMatrix = function () {\n if (this.projectionMode !== CameraProjectionMode.ORTHOGRAPHIC) {\n return;\n }\n var position = this.position;\n var rotZ = quat$1.setAxisAngle(quat$1.create(), [0, 0, 1], (-this.roll * Math.PI) / 180);\n mat4.fromRotationTranslationScaleOrigin(this.orthoMatrix, rotZ, vec3.fromValues((this.rright - this.left) / 2 - position[0], (this.top - this.bottom) / 2 - position[1], 0), vec3.fromValues(this.zoom, this.zoom, 1), position);\n };\n Camera.prototype.triggerUpdate = function () {\n if (this.enableUpdate) {\n // update frustum\n var viewMatrix = this.getViewTransform();\n var vpMatrix = mat4.multiply(mat4.create(), this.getPerspective(), viewMatrix);\n this.getFrustum().extractFromVPMatrix(vpMatrix);\n this.eventEmitter.emit(CameraEvent.UPDATED);\n }\n };\n Camera.prototype.rotate = function (azimuth, elevation, roll) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Camera.prototype.pan = function (tx, ty) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Camera.prototype.dolly = function (value) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Camera.prototype.createLandmark = function (name, params) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Camera.prototype.gotoLandmark = function (name, options) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Camera.prototype.cancelLandmarkAnimation = function () {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n return Camera;\n}());\n\nfunction memoize(func, resolver) {\n if (typeof func !== 'function' ||\n (resolver != null && typeof resolver !== 'function')) {\n throw new TypeError('Expected a function');\n }\n var memoized = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var key = resolver ? resolver.apply(this, args) : args[0];\n var cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || Map)();\n return memoized;\n}\nmemoize.Cache = Map;\n\n// These units are iterated through, so be careful when adding or changing the\n// order.\nvar UnitType;\n(function (UnitType) {\n UnitType[UnitType[\"kUnknown\"] = 0] = \"kUnknown\";\n UnitType[UnitType[\"kNumber\"] = 1] = \"kNumber\";\n UnitType[UnitType[\"kPercentage\"] = 2] = \"kPercentage\";\n // Length units\n UnitType[UnitType[\"kEms\"] = 3] = \"kEms\";\n // kExs,\n UnitType[UnitType[\"kPixels\"] = 4] = \"kPixels\";\n // kCentimeters,\n // kMillimeters,\n // kInches,\n // kPoints,\n // kPicas,\n // kQuarterMillimeters,\n // https://drafts.csswg.org/css-values-4/#viewport-relative-lengths\n //\n // See also IsViewportPercentageLength.\n // kViewportWidth,\n // kViewportHeight,\n // kViewportInlineSize,\n // kViewportBlockSize,\n // kViewportMin,\n // kViewportMax,\n // kSmallViewportWidth,\n // kSmallViewportHeight,\n // kSmallViewportInlineSize,\n // kSmallViewportBlockSize,\n // kSmallViewportMin,\n // kSmallViewportMax,\n // kLargeViewportWidth,\n // kLargeViewportHeight,\n // kLargeViewportInlineSize,\n // kLargeViewportBlockSize,\n // kLargeViewportMin,\n // kLargeViewportMax,\n // kDynamicViewportWidth,\n // kDynamicViewportHeight,\n // kDynamicViewportInlineSize,\n // kDynamicViewportBlockSize,\n // kDynamicViewportMin,\n // kDynamicViewportMax,\n // https://drafts.csswg.org/css-contain-3/#container-lengths\n //\n // See also IsContainerPercentageLength.\n // kContainerWidth,\n // kContainerHeight,\n // kContainerInlineSize,\n // kContainerBlockSize,\n // kContainerMin,\n // kContainerMax,\n UnitType[UnitType[\"kRems\"] = 5] = \"kRems\";\n // kChs,\n // kUserUnits, // The SVG term for unitless lengths\n // Angle units\n UnitType[UnitType[\"kDegrees\"] = 6] = \"kDegrees\";\n UnitType[UnitType[\"kRadians\"] = 7] = \"kRadians\";\n UnitType[UnitType[\"kGradians\"] = 8] = \"kGradians\";\n UnitType[UnitType[\"kTurns\"] = 9] = \"kTurns\";\n // Time units\n UnitType[UnitType[\"kMilliseconds\"] = 10] = \"kMilliseconds\";\n UnitType[UnitType[\"kSeconds\"] = 11] = \"kSeconds\";\n // kHertz,\n // kKilohertz,\n // Resolution\n // kDotsPerPixel,\n // kDotsPerInch,\n // kDotsPerCentimeter,\n // Other units\n // kFraction,\n UnitType[UnitType[\"kInteger\"] = 12] = \"kInteger\";\n // This value is used to handle quirky margins in reflow roots (body, td,\n // and th) like WinIE. The basic idea is that a stylesheet can use the value\n // __qem (for quirky em) instead of em. When the quirky value is used, if\n // you're in quirks mode, the margin will collapse away inside a table cell.\n // This quirk is specified in the HTML spec but our impl is different.\n // TODO: Remove this. crbug.com/443952\n // kQuirkyEms,\n})(UnitType || (UnitType = {}));\nvar UnitCategory;\n(function (UnitCategory) {\n UnitCategory[UnitCategory[\"kUNumber\"] = 0] = \"kUNumber\";\n UnitCategory[UnitCategory[\"kUPercent\"] = 1] = \"kUPercent\";\n UnitCategory[UnitCategory[\"kULength\"] = 2] = \"kULength\";\n UnitCategory[UnitCategory[\"kUAngle\"] = 3] = \"kUAngle\";\n UnitCategory[UnitCategory[\"kUTime\"] = 4] = \"kUTime\";\n // kUFrequency,\n // kUResolution,\n UnitCategory[UnitCategory[\"kUOther\"] = 5] = \"kUOther\";\n})(UnitCategory || (UnitCategory = {}));\nvar ValueRange;\n(function (ValueRange) {\n ValueRange[ValueRange[\"kAll\"] = 0] = \"kAll\";\n ValueRange[ValueRange[\"kNonNegative\"] = 1] = \"kNonNegative\";\n ValueRange[ValueRange[\"kInteger\"] = 2] = \"kInteger\";\n ValueRange[ValueRange[\"kNonNegativeInteger\"] = 3] = \"kNonNegativeInteger\";\n ValueRange[ValueRange[\"kPositiveInteger\"] = 4] = \"kPositiveInteger\";\n})(ValueRange || (ValueRange = {}));\nvar Nested;\n(function (Nested) {\n Nested[Nested[\"kYes\"] = 0] = \"kYes\";\n Nested[Nested[\"kNo\"] = 1] = \"kNo\";\n})(Nested || (Nested = {}));\nvar ParenLess;\n(function (ParenLess) {\n ParenLess[ParenLess[\"kYes\"] = 0] = \"kYes\";\n ParenLess[ParenLess[\"kNo\"] = 1] = \"kNo\";\n})(ParenLess || (ParenLess = {}));\n\n// This file specifies the unit strings used in CSSPrimitiveValues.\nvar data = [\n {\n name: 'em',\n unit_type: UnitType.kEms,\n },\n // {\n // name: 'ex',\n // unit_type: UnitType.kExs,\n // },\n {\n name: 'px',\n unit_type: UnitType.kPixels,\n },\n // {\n // name: \"cm\",\n // unit_type: UnitType.kCentimeters,\n // },\n // {\n // name: \"mm\",\n // unit_type: UnitType.kMillimeters,\n // },\n // {\n // name: \"q\",\n // unit_type: UnitType.kQuarterMillimeters,\n // },\n // {\n // name: \"in\",\n // unit_type: UnitType.kInches,\n // },\n // {\n // name: \"pt\",\n // unit_type: UnitType.kPoints,\n // },\n // {\n // name: \"pc\",\n // unit_type: UnitType.kPicas,\n // },\n {\n name: 'deg',\n unit_type: UnitType.kDegrees,\n },\n {\n name: 'rad',\n unit_type: UnitType.kRadians,\n },\n {\n name: 'grad',\n unit_type: UnitType.kGradians,\n },\n {\n name: 'ms',\n unit_type: UnitType.kMilliseconds,\n },\n {\n name: 's',\n unit_type: UnitType.kSeconds,\n },\n // {\n // name: \"hz\",\n // unit_type: UnitType.kHertz,\n // },\n // {\n // name: \"khz\",\n // unit_type: UnitType.kKilohertz,\n // },\n // {\n // name: \"dpi\",\n // unit_type: \"kDotsPerInch\",\n // },\n // {\n // name: \"dpcm\",\n // unit_type: \"kDotsPerCentimeter\",\n // },\n // {\n // name: \"dppx\",\n // unit_type: \"kDotsPerPixel\",\n // },\n // {\n // name: \"x\",\n // unit_type: \"kDotsPerPixel\",\n // },\n // {\n // name: \"vw\",\n // unit_type: \"kViewportWidth\",\n // },\n // {\n // name: \"vh\",\n // unit_type: \"kViewportHeight\",\n // },\n // {\n // name: \"vi\",\n // unit_type: \"kViewportInlineSize\",\n // },\n // {\n // name: \"vb\",\n // unit_type: \"kViewportBlockSize\",\n // },\n // {\n // name: \"vmin\",\n // unit_type: UnitType.kViewportMin,\n // },\n // {\n // name: \"vmax\",\n // unit_type: UnitType.kViewportMax,\n // },\n // {\n // name: \"svw\",\n // unit_type: \"kSmallViewportWidth\",\n // },\n // {\n // name: \"svh\",\n // unit_type: \"kSmallViewportHeight\",\n // },\n // {\n // name: \"svi\",\n // unit_type: \"kSmallViewportInlineSize\",\n // },\n // {\n // name: \"svb\",\n // unit_type: \"kSmallViewportBlockSize\",\n // },\n // {\n // name: \"svmin\",\n // unit_type: \"kSmallViewportMin\",\n // },\n // {\n // name: \"svmax\",\n // unit_type: \"kSmallViewportMax\",\n // },\n // {\n // name: \"lvw\",\n // unit_type: \"kLargeViewportWidth\",\n // },\n // {\n // name: \"lvh\",\n // unit_type: \"kLargeViewportHeight\",\n // },\n // {\n // name: \"lvi\",\n // unit_type: \"kLargeViewportInlineSize\",\n // },\n // {\n // name: \"lvb\",\n // unit_type: \"kLargeViewportBlockSize\",\n // },\n // {\n // name: \"lvmin\",\n // unit_type: UnitType.kLargeViewportMin,\n // },\n // {\n // name: \"lvmax\",\n // unit_type: UnitType.kLargeViewportMax,\n // },\n // {\n // name: \"dvw\",\n // unit_type: UnitType.kDynamicViewportWidth,\n // },\n // {\n // name: \"dvh\",\n // unit_type: UnitType.kDynamicViewportHeight,\n // },\n // {\n // name: \"dvi\",\n // unit_type: UnitType.kDynamicViewportInlineSize,\n // },\n // {\n // name: \"dvb\",\n // unit_type: UnitType.kDynamicViewportBlockSize,\n // },\n // {\n // name: \"dvmin\",\n // unit_type: UnitType.kDynamicViewportMin,\n // },\n // {\n // name: \"dvmax\",\n // unit_type: UnitType.kDynamicViewportMax,\n // },\n // {\n // name: \"cqw\",\n // unit_type: UnitType.kContainerWidth,\n // },\n // {\n // name: \"cqh\",\n // unit_type: UnitType.kContainerHeight,\n // },\n // {\n // name: \"cqi\",\n // unit_type: UnitType.kContainerInlineSize,\n // },\n // {\n // name: \"cqb\",\n // unit_type: UnitType.kContainerBlockSize,\n // },\n // {\n // name: \"cqmin\",\n // unit_type: UnitType.kContainerMin,\n // },\n // {\n // name: \"cqmax\",\n // unit_type: UnitType.kContainerMax,\n // },\n {\n name: 'rem',\n unit_type: UnitType.kRems,\n },\n // {\n // name: 'fr',\n // unit_type: UnitType.kFraction,\n // },\n {\n name: 'turn',\n unit_type: UnitType.kTurns,\n },\n // {\n // name: 'ch',\n // unit_type: UnitType.kChs,\n // },\n // {\n // name: '__qem',\n // unit_type: UnitType.kQuirkyEms,\n // },\n];\nvar CSSStyleValueType;\n(function (CSSStyleValueType) {\n CSSStyleValueType[CSSStyleValueType[\"kUnknownType\"] = 0] = \"kUnknownType\";\n CSSStyleValueType[CSSStyleValueType[\"kUnparsedType\"] = 1] = \"kUnparsedType\";\n CSSStyleValueType[CSSStyleValueType[\"kKeywordType\"] = 2] = \"kKeywordType\";\n // Start of CSSNumericValue subclasses\n CSSStyleValueType[CSSStyleValueType[\"kUnitType\"] = 3] = \"kUnitType\";\n CSSStyleValueType[CSSStyleValueType[\"kSumType\"] = 4] = \"kSumType\";\n CSSStyleValueType[CSSStyleValueType[\"kProductType\"] = 5] = \"kProductType\";\n CSSStyleValueType[CSSStyleValueType[\"kNegateType\"] = 6] = \"kNegateType\";\n CSSStyleValueType[CSSStyleValueType[\"kInvertType\"] = 7] = \"kInvertType\";\n CSSStyleValueType[CSSStyleValueType[\"kMinType\"] = 8] = \"kMinType\";\n CSSStyleValueType[CSSStyleValueType[\"kMaxType\"] = 9] = \"kMaxType\";\n CSSStyleValueType[CSSStyleValueType[\"kClampType\"] = 10] = \"kClampType\";\n // End of CSSNumericValue subclasses\n CSSStyleValueType[CSSStyleValueType[\"kTransformType\"] = 11] = \"kTransformType\";\n CSSStyleValueType[CSSStyleValueType[\"kPositionType\"] = 12] = \"kPositionType\";\n CSSStyleValueType[CSSStyleValueType[\"kURLImageType\"] = 13] = \"kURLImageType\";\n CSSStyleValueType[CSSStyleValueType[\"kColorType\"] = 14] = \"kColorType\";\n CSSStyleValueType[CSSStyleValueType[\"kUnsupportedColorType\"] = 15] = \"kUnsupportedColorType\";\n})(CSSStyleValueType || (CSSStyleValueType = {}));\n// function parseCSSStyleValue(propertyName: string, value: string): CSSStyleValue[] {\n// // const propertyId = cssPropertyID(propertyName);\n// // if (propertyId === CSSPropertyID.kInvalid) {\n// // return [];\n// // }\n// // const customPropertyName = propertyId === CSSPropertyID.kVariable ? propertyName : null;\n// // return fromString(propertyId, customPropertyName, value);\n// return [];\n// }\nvar stringToUnitType = function (name) {\n return data.find(function (item) { return item.name === name; }).unit_type;\n};\nvar unitFromName = function (name) {\n if (!name) {\n return UnitType.kUnknown;\n }\n if (name === 'number') {\n return UnitType.kNumber;\n }\n if (name === 'percent' || name === '%') {\n return UnitType.kPercentage;\n }\n return stringToUnitType(name);\n};\nvar unitTypeToUnitCategory = function (type) {\n switch (type) {\n case UnitType.kNumber:\n case UnitType.kInteger:\n return UnitCategory.kUNumber;\n case UnitType.kPercentage:\n return UnitCategory.kUPercent;\n case UnitType.kPixels:\n // case UnitType.kCentimeters:\n // case UnitType.kMillimeters:\n // case UnitType.kQuarterMillimeters:\n // case UnitType.kInches:\n // case UnitType.kPoints:\n // case UnitType.kPicas:\n // case UnitType.kUserUnits:\n return UnitCategory.kULength;\n case UnitType.kMilliseconds:\n case UnitType.kSeconds:\n return UnitCategory.kUTime;\n case UnitType.kDegrees:\n case UnitType.kRadians:\n case UnitType.kGradians:\n case UnitType.kTurns:\n return UnitCategory.kUAngle;\n // case UnitType.kHertz:\n // case UnitType.kKilohertz:\n // return UnitCategory.kUFrequency;\n // case UnitType.kDotsPerPixel:\n // case UnitType.kDotsPerInch:\n // case UnitType.kDotsPerCentimeter:\n // return UnitCategory.kUResolution;\n default:\n return UnitCategory.kUOther;\n }\n};\nvar canonicalUnitTypeForCategory = function (category) {\n // The canonical unit type is chosen according to the way\n // CSSPropertyParser.ValidUnit() chooses the default unit in each category\n // (based on unitflags).\n switch (category) {\n case UnitCategory.kUNumber:\n return UnitType.kNumber;\n case UnitCategory.kULength:\n return UnitType.kPixels;\n case UnitCategory.kUPercent:\n return UnitType.kPercentage;\n // return UnitType.kUnknown; // Cannot convert between numbers and percent.\n case UnitCategory.kUTime:\n return UnitType.kSeconds;\n case UnitCategory.kUAngle:\n return UnitType.kDegrees;\n // case UnitCategory.kUFrequency:\n // return UnitType.kHertz;\n // case UnitCategory.kUResolution:\n // return UnitType.kDotsPerPixel;\n default:\n return UnitType.kUnknown;\n }\n};\n/**\n * @see https://chromium.googlesource.com/chromium/src/+/refs/heads/main/third_party/blink/renderer/core/css/css_primitive_value.cc#353\n */\nvar conversionToCanonicalUnitsScaleFactor = function (unit_type) {\n var factor = 1.0;\n // FIXME: the switch can be replaced by an array of scale factors.\n switch (unit_type) {\n // These are \"canonical\" units in their respective categories.\n case UnitType.kPixels:\n // case UnitType.kUserUnits:\n case UnitType.kDegrees:\n case UnitType.kSeconds:\n // case UnitType.kHertz:\n break;\n case UnitType.kMilliseconds:\n factor = 0.001;\n break;\n // case UnitType.kCentimeters:\n // // factor = kCssPixelsPerCentimeter;\n // break;\n // case UnitType.kDotsPerCentimeter:\n // // factor = 1 / kCssPixelsPerCentimeter;\n // break;\n // case UnitType.kMillimeters:\n // // factor = kCssPixelsPerMillimeter;\n // break;\n // case UnitType.kQuarterMillimeters:\n // // factor = kCssPixelsPerQuarterMillimeter;\n // break;\n // case UnitType.kInches:\n // // factor = kCssPixelsPerInch;\n // break;\n // case UnitType.kDotsPerInch:\n // // factor = 1 / kCssPixelsPerInch;\n // break;\n // case UnitType.kPoints:\n // // factor = kCssPixelsPerPoint;\n // break;\n // case UnitType.kPicas:\n // // factor = kCssPixelsPerPica;\n // break;\n case UnitType.kRadians:\n factor = 180 / Math.PI;\n break;\n case UnitType.kGradians:\n factor = 0.9;\n break;\n case UnitType.kTurns:\n factor = 360;\n break;\n }\n return factor;\n};\nvar unitTypeToString = function (type) {\n switch (type) {\n case UnitType.kNumber:\n case UnitType.kInteger:\n // case UnitType.kUserUnits:\n return '';\n case UnitType.kPercentage:\n return '%';\n case UnitType.kEms:\n // case UnitType.kQuirkyEms:\n return 'em';\n // case UnitType.kExs:\n // return 'ex';\n case UnitType.kRems:\n return 'rem';\n // case UnitType.kChs:\n // return 'ch';\n case UnitType.kPixels:\n return 'px';\n // case UnitType.kCentimeters:\n // return 'cm';\n // case UnitType.kDotsPerPixel:\n // return 'dppx';\n // case UnitType.kDotsPerInch:\n // return 'dpi';\n // case UnitType.kDotsPerCentimeter:\n // return 'dpcm';\n // case UnitType.kMillimeters:\n // return 'mm';\n // case UnitType.kQuarterMillimeters:\n // return 'q';\n // case UnitType.kInches:\n // return 'in';\n // case UnitType.kPoints:\n // return 'pt';\n // case UnitType.kPicas:\n // return 'pc';\n case UnitType.kDegrees:\n return 'deg';\n case UnitType.kRadians:\n return 'rad';\n case UnitType.kGradians:\n return 'grad';\n case UnitType.kMilliseconds:\n return 'ms';\n case UnitType.kSeconds:\n return 's';\n // case UnitType.kHertz:\n // return 'hz';\n // case UnitType.kKilohertz:\n // return 'khz';\n case UnitType.kTurns:\n return 'turn';\n }\n return '';\n};\n/**\n * CSSStyleValue is the base class for all CSS values accessible from Typed OM.\n * Values that are not yet supported as specific types are also returned as base CSSStyleValues.\n *\n * Spec @see https://drafts.css-houdini.org/css-typed-om/#stylevalue-objects\n * Docs @see https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleValue\n */\nvar CSSStyleValue = /** @class */ (function () {\n function CSSStyleValue() {\n }\n // static parse(propertyName: string, value: string): CSSStyleValue {\n // return parseCSSStyleValue(propertyName, value)[0];\n // }\n // static parseAll(propertyName: string, value: string): CSSStyleValue[] {\n // return parseCSSStyleValue(propertyName, value);\n // }\n CSSStyleValue.isAngle = function (unit) {\n return (unit === UnitType.kDegrees ||\n unit === UnitType.kRadians ||\n unit === UnitType.kGradians ||\n unit === UnitType.kTurns);\n };\n // static isViewportPercentageLength(type: UnitType) {\n // return type >= UnitType.kViewportWidth && type <= UnitType.kDynamicViewportMax;\n // }\n // static isContainerPercentageLength(type: UnitType) {\n // return type >= UnitType.kContainerWidth && type <= UnitType.kContainerMax;\n // }\n CSSStyleValue.isLength = function (type) {\n // return (type >= UnitType.kEms && type <= UnitType.kUserUnits) || type == UnitType.kQuirkyEms;\n return type >= UnitType.kEms && type < UnitType.kDegrees;\n };\n CSSStyleValue.isRelativeUnit = function (type) {\n return (type === UnitType.kPercentage ||\n type === UnitType.kEms ||\n // type === UnitType.kExs ||\n type === UnitType.kRems\n // type === UnitType.kChs ||\n // this.isViewportPercentageLength(type) ||\n // this.isContainerPercentageLength(type)\n );\n };\n CSSStyleValue.isTime = function (unit) {\n return unit === UnitType.kSeconds || unit === UnitType.kMilliseconds;\n };\n // protected abstract toCSSValue(): CSSValue;\n CSSStyleValue.prototype.toString = function () {\n return this.buildCSSText(Nested.kNo, ParenLess.kNo, '');\n };\n CSSStyleValue.prototype.isNumericValue = function () {\n return (this.getType() >= CSSStyleValueType.kUnitType &&\n this.getType() <= CSSStyleValueType.kClampType);\n };\n return CSSStyleValue;\n}());\n\n/**\n * CSSColorValue is the base class used for the various CSS color interfaces.\n *\n * @see https://drafts.css-houdini.org/css-typed-om-1/#colorvalue-objects\n */\nvar CSSColorValue = /** @class */ (function (_super) {\n __extends(CSSColorValue, _super);\n function CSSColorValue(colorSpace) {\n var _this = _super.call(this) || this;\n _this.colorSpace = colorSpace;\n return _this;\n }\n CSSColorValue.prototype.getType = function () {\n return CSSStyleValueType.kColorType;\n };\n // buildCSSText(n: Nested, p: ParenLess, result: string): string {\n // let text = '';\n // if (this.colorSpace === 'rgb') {\n // text = `rgba(${this.channels.join(',')},${this.alpha})`;\n // }\n // return (result += text);\n // }\n /**\n * @see https://drafts.css-houdini.org/css-typed-om-1/#dom-csscolorvalue-to\n */\n CSSColorValue.prototype.to = function (colorSpace) {\n return this;\n };\n return CSSColorValue;\n}(CSSStyleValue));\n\nvar GradientType;\n(function (GradientType) {\n GradientType[GradientType[\"Constant\"] = 0] = \"Constant\";\n GradientType[GradientType[\"LinearGradient\"] = 1] = \"LinearGradient\";\n GradientType[GradientType[\"RadialGradient\"] = 2] = \"RadialGradient\";\n})(GradientType || (GradientType = {}));\nvar CSSGradientValue = /** @class */ (function (_super) {\n __extends(CSSGradientValue, _super);\n function CSSGradientValue(type, value) {\n var _this = _super.call(this) || this;\n _this.type = type;\n _this.value = value;\n return _this;\n }\n CSSGradientValue.prototype.clone = function () {\n return new CSSGradientValue(this.type, this.value);\n };\n CSSGradientValue.prototype.buildCSSText = function (n, p, result) {\n return result;\n };\n CSSGradientValue.prototype.getType = function () {\n return CSSStyleValueType.kColorType;\n };\n return CSSGradientValue;\n}(CSSStyleValue));\n\n/**\n * CSSKeywordValue represents CSS Values that are specified as keywords\n * eg. 'initial'\n * @see https://developer.mozilla.org/en-US/docs/Web/API/CSSKeywordValue\n * @see https://chromium.googlesource.com/chromium/src/+/refs/heads/main/third_party/blink/renderer/core/css/cssom/css_keyword_value.idl\n */\nvar CSSKeywordValue = /** @class */ (function (_super) {\n __extends(CSSKeywordValue, _super);\n function CSSKeywordValue(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n return _this;\n }\n CSSKeywordValue.prototype.clone = function () {\n return new CSSKeywordValue(this.value);\n };\n CSSKeywordValue.prototype.getType = function () {\n return CSSStyleValueType.kKeywordType;\n };\n CSSKeywordValue.prototype.buildCSSText = function (n, p, result) {\n return result + this.value;\n };\n return CSSKeywordValue;\n}(CSSStyleValue));\n\nvar camelCase = memoize(function (str) {\n if (str === void 0) { str = ''; }\n return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\n});\nvar kebabize = function (str) {\n return str\n .split('')\n .map(function (letter, idx) {\n return letter.toUpperCase() === letter\n ? \"\".concat(idx !== 0 ? '-' : '').concat(letter.toLowerCase())\n : letter;\n })\n .join('');\n};\n\nfunction DCHECK(bool) {\n if (!bool) {\n throw new Error();\n }\n}\nfunction isFunction(func) {\n return typeof func === 'function';\n}\nfunction isSymbol(value) {\n // @see https://github.com/lodash/lodash/blob/master/isSymbol.js\n return typeof value === 'symbol';\n}\nvar definedProps = function (obj) {\n return Object.fromEntries(Object.entries(obj).filter(function (_a) {\n var _b = __read(_a, 2), v = _b[1];\n return v !== undefined;\n }));\n};\nvar FORMAT_ATTR_MAP = {\n d: {\n alias: 'path',\n },\n strokeDasharray: {\n alias: 'lineDash',\n },\n strokeWidth: {\n alias: 'lineWidth',\n },\n textAnchor: {\n alias: 'textAlign',\n },\n src: {\n alias: 'img',\n },\n};\nvar formatAttributeName = memoize(function (name) {\n var attributeName = camelCase(name);\n var map = FORMAT_ATTR_MAP[attributeName];\n attributeName = (map === null || map === void 0 ? void 0 : map.alias) || attributeName;\n return attributeName;\n});\n\n// type CSSNumericBaseType =\n// | 'length'\n// | 'angle'\n// | 'time'\n// | 'frequency'\n// | 'resolution'\n// | 'flex'\n// | 'percent';\n// https://drafts.css-houdini.org/css-typed-om/#dictdef-cssnumerictype\n// interface CSSNumericType {\n// length: number;\n// angle: number;\n// time: number;\n// frequency: number;\n// resolution: number;\n// flex: number;\n// percent: number;\n// percentHint: CSSNumericBaseType;\n// }\nvar formatInfinityOrNaN = function (number, suffix) {\n if (suffix === void 0) { suffix = ''; }\n var result = '';\n if (!Number.isFinite(number)) {\n if (number > 0)\n result = 'infinity';\n else\n result = '-infinity';\n }\n else {\n DCHECK(Number.isNaN(number));\n result = 'NaN';\n }\n return (result += suffix);\n};\nvar toCanonicalUnit = function (unit) {\n return canonicalUnitTypeForCategory(unitTypeToUnitCategory(unit));\n};\n/**\n * CSSNumericValue is the base class for numeric and length typed CSS Values.\n * @see https://drafts.css-houdini.org/css-typed-om/#numeric-objects\n * @see https://developer.mozilla.org/en-US/docs/Web/API/CSSNumericValue\n * @see https://chromium.googlesource.com/chromium/src/+/refs/heads/main/third_party/blink/renderer/core/css/cssom/css_numeric_value.idl\n */\n/**\n * Represents numeric values that can be expressed as a single number plus a\n * unit (or a naked number or percentage).\n * @see https://drafts.css-houdini.org/css-typed-om/#cssunitvalue\n */\nvar CSSUnitValue = /** @class */ (function (_super) {\n __extends(CSSUnitValue, _super);\n function CSSUnitValue(value, unitOrName) {\n if (unitOrName === void 0) { unitOrName = UnitType.kNumber; }\n var _this = _super.call(this) || this;\n var unit;\n if (typeof unitOrName === 'string') {\n unit = unitFromName(unitOrName);\n }\n else {\n unit = unitOrName;\n }\n _this.unit = unit;\n _this.value = value;\n return _this;\n }\n CSSUnitValue.prototype.clone = function () {\n return new CSSUnitValue(this.value, this.unit);\n };\n CSSUnitValue.prototype.equals = function (other) {\n var other_unit_value = other;\n return (this.value === other_unit_value.value &&\n this.unit === other_unit_value.unit);\n };\n CSSUnitValue.prototype.getType = function () {\n return CSSStyleValueType.kUnitType;\n };\n CSSUnitValue.prototype.convertTo = function (target_unit) {\n if (this.unit === target_unit) {\n return new CSSUnitValue(this.value, this.unit);\n }\n // Instead of defining the scale factors for every unit to every other unit,\n // we simply convert to the canonical unit and back since we already have\n // the scale factors for canonical units.\n var canonical_unit = toCanonicalUnit(this.unit);\n if (canonical_unit !== toCanonicalUnit(target_unit) ||\n canonical_unit === UnitType.kUnknown) {\n return null;\n }\n var scale_factor = conversionToCanonicalUnitsScaleFactor(this.unit) /\n conversionToCanonicalUnitsScaleFactor(target_unit);\n return new CSSUnitValue(this.value * scale_factor, target_unit);\n };\n CSSUnitValue.prototype.buildCSSText = function (n, p, result) {\n var text;\n switch (this.unit) {\n case UnitType.kUnknown:\n // FIXME\n break;\n case UnitType.kInteger:\n text = Number(this.value).toFixed(0);\n break;\n case UnitType.kNumber:\n case UnitType.kPercentage:\n case UnitType.kEms:\n // case UnitType.kQuirkyEms:\n // case UnitType.kExs:\n case UnitType.kRems:\n // case UnitType.kChs:\n case UnitType.kPixels:\n // case UnitType.kCentimeters:\n // case UnitType.kDotsPerPixel:\n // case UnitType.kDotsPerInch:\n // case UnitType.kDotsPerCentimeter:\n // case UnitType.kMillimeters:\n // case UnitType.kQuarterMillimeters:\n // case UnitType.kInches:\n // case UnitType.kPoints:\n // case UnitType.kPicas:\n // case UnitType.kUserUnits:\n case UnitType.kDegrees:\n case UnitType.kRadians:\n case UnitType.kGradians:\n case UnitType.kMilliseconds:\n case UnitType.kSeconds:\n // case UnitType.kHertz:\n // case UnitType.kKilohertz:\n case UnitType.kTurns: // case UnitType.kContainerMax: { // case UnitType.kContainerMin: // case UnitType.kContainerBlockSize: // case UnitType.kContainerInlineSize: // case UnitType.kContainerHeight: // case UnitType.kContainerWidth: // case UnitType.kDynamicViewportMax: // case UnitType.kDynamicViewportMin: // case UnitType.kDynamicViewportBlockSize: // case UnitType.kDynamicViewportInlineSize: // case UnitType.kDynamicViewportHeight: // case UnitType.kDynamicViewportWidth: // case UnitType.kLargeViewportMax: // case UnitType.kLargeViewportMin: // case UnitType.kLargeViewportBlockSize: // case UnitType.kLargeViewportInlineSize: // case UnitType.kLargeViewportHeight: // case UnitType.kLargeViewportWidth: // case UnitType.kSmallViewportMax: // case UnitType.kSmallViewportMin: // case UnitType.kSmallViewportBlockSize: // case UnitType.kSmallViewportInlineSize: // case UnitType.kSmallViewportHeight: // case UnitType.kSmallViewportWidth: // case UnitType.kViewportMax: // case UnitType.kViewportMin: // case UnitType.kViewportBlockSize: // case UnitType.kViewportInlineSize: // case UnitType.kViewportHeight: // case UnitType.kViewportWidth: // case UnitType.kFraction:\n {\n var kMinInteger = -999999;\n var kMaxInteger = 999999;\n var value = this.value;\n var unit = unitTypeToString(this.unit);\n if (value < kMinInteger || value > kMaxInteger) {\n var unit_1 = unitTypeToString(this.unit);\n if (!Number.isFinite(value) || Number.isNaN(value)) {\n text = formatInfinityOrNaN(value, unit_1);\n }\n else {\n text = value + (unit_1 || '');\n }\n }\n else {\n text = \"\".concat(value).concat(unit);\n }\n }\n }\n result += text;\n return result;\n };\n return CSSUnitValue;\n}(CSSStyleValue));\nvar Opx = new CSSUnitValue(0, 'px');\nnew CSSUnitValue(1, 'px');\nvar Odeg = new CSSUnitValue(0, 'deg');\n\n/**\n * The CSSRGB class represents the CSS rgb()/rgba() functions.\n *\n * @see https://drafts.css-houdini.org/css-typed-om-1/#cssrgb\n */\nvar CSSRGB = /** @class */ (function (_super) {\n __extends(CSSRGB, _super);\n function CSSRGB(r, g, b, alpha, \n /**\n * 'transparent' & 'none' has the same rgba data\n */\n isNone) {\n if (alpha === void 0) { alpha = 1; }\n if (isNone === void 0) { isNone = false; }\n var _this = _super.call(this, 'rgb') || this;\n _this.r = r;\n _this.g = g;\n _this.b = b;\n _this.alpha = alpha;\n _this.isNone = isNone;\n return _this;\n }\n CSSRGB.prototype.clone = function () {\n return new CSSRGB(this.r, this.g, this.b, this.alpha);\n };\n CSSRGB.prototype.buildCSSText = function (n, p, result) {\n return result + \"rgba(\".concat(this.r, \",\").concat(this.g, \",\").concat(this.b, \",\").concat(this.alpha, \")\");\n };\n return CSSRGB;\n}(CSSColorValue));\n\n/**\n * CSSKeywordValue\n */\nvar unsetKeywordValue = new CSSKeywordValue('unset');\nvar initialKeywordValue = new CSSKeywordValue('initial');\nvar inheritKeywordValue = new CSSKeywordValue('inherit');\nvar keywordCache = {\n '': unsetKeywordValue,\n unset: unsetKeywordValue,\n initial: initialKeywordValue,\n inherit: inheritKeywordValue,\n};\nvar getOrCreateKeyword = function (name) {\n if (!keywordCache[name]) {\n keywordCache[name] = new CSSKeywordValue(name);\n }\n return keywordCache[name];\n};\n/**\n * CSSColor\n */\nvar noneColor = new CSSRGB(0, 0, 0, 0, true);\nvar transparentColor = new CSSRGB(0, 0, 0, 0);\nvar getOrCreateRGBA = memoize(function (r, g, b, a) {\n return new CSSRGB(r, g, b, a);\n}, function (r, g, b, a) {\n return \"rgba(\".concat(r, \",\").concat(g, \",\").concat(b, \",\").concat(a, \")\");\n});\n// export const getOrCreateUnitValue = memoize(\n// (value: number, unitOrName: UnitType | string = UnitType.kNumber) => {\n// return new CSSUnitValue(value, unitOrName);\n// },\n// (value: number, unitOrName: UnitType | string = UnitType.kNumber) => {\n// return `${value}${unitOrName}`;\n// },\n// );\nvar getOrCreateUnitValue = function (value, unitOrName) {\n if (unitOrName === void 0) { unitOrName = UnitType.kNumber; }\n return new CSSUnitValue(value, unitOrName);\n};\nvar PECENTAGE_50 = new CSSUnitValue(50, '%');\n\n/**\n * @see https://doc.babylonjs.com/how_to/optimizing_your_scene#changing-mesh-culling-strategy\n */\nvar Strategy;\n(function (Strategy) {\n Strategy[Strategy[\"Standard\"] = 0] = \"Standard\";\n})(Strategy || (Strategy = {}));\n\nvar SortReason;\n(function (SortReason) {\n SortReason[SortReason[\"ADDED\"] = 0] = \"ADDED\";\n SortReason[SortReason[\"REMOVED\"] = 1] = \"REMOVED\";\n SortReason[SortReason[\"Z_INDEX_CHANGED\"] = 2] = \"Z_INDEX_CHANGED\";\n})(SortReason || (SortReason = {}));\n\nvar EMPTY_PARSED_PATH = {\n absolutePath: [],\n hasArc: false,\n segments: [],\n polygons: [],\n polylines: [],\n curve: null,\n totalLength: 0,\n rect: new Rectangle(0, 0, 0, 0),\n};\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type\n */\nvar PropertySyntax;\n(function (PropertySyntax) {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#coordinate\n */\n PropertySyntax[\"COORDINATE\"] = \"\";\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#color\n */\n PropertySyntax[\"COLOR\"] = \"\";\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#paint\n */\n PropertySyntax[\"PAINT\"] = \"\";\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#number\n */\n PropertySyntax[\"NUMBER\"] = \"\";\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/angle\n */\n PropertySyntax[\"ANGLE\"] = \"\";\n /**\n * with range 0..1\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#opacity_value\n */\n PropertySyntax[\"OPACITY_VALUE\"] = \"\";\n /**\n * with range 0..Infinity\n */\n PropertySyntax[\"SHADOW_BLUR\"] = \"\";\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#length\n */\n PropertySyntax[\"LENGTH\"] = \"\";\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#percentage\n */\n PropertySyntax[\"PERCENTAGE\"] = \"\";\n PropertySyntax[\"LENGTH_PERCENTAGE\"] = \" | \";\n PropertySyntax[\"LENGTH_PERCENTAGE_12\"] = \"[ | ]{1,2}\";\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/margin#formal_syntax\n */\n PropertySyntax[\"LENGTH_PERCENTAGE_14\"] = \"[ | ]{1,4}\";\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#list-of-ts\n */\n PropertySyntax[\"LIST_OF_POINTS\"] = \"\";\n PropertySyntax[\"PATH\"] = \"\";\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/filter#formal_syntax\n */\n PropertySyntax[\"FILTER\"] = \"\";\n PropertySyntax[\"Z_INDEX\"] = \"\";\n PropertySyntax[\"OFFSET_DISTANCE\"] = \"\";\n PropertySyntax[\"DEFINED_PATH\"] = \"\";\n PropertySyntax[\"MARKER\"] = \"\";\n PropertySyntax[\"TRANSFORM\"] = \"\";\n PropertySyntax[\"TRANSFORM_ORIGIN\"] = \"\";\n PropertySyntax[\"TEXT\"] = \"\";\n PropertySyntax[\"TEXT_TRANSFORM\"] = \"\";\n})(PropertySyntax || (PropertySyntax = {}));\n\n/**\n * borrow from gradient-parser, but we delete some browser compatible prefix such as `-webkit-`\n * @see https://github.com/rafaelcaricio/gradient-parser\n */\nfunction colorStopToString(colorStop) {\n var type = colorStop.type, value = colorStop.value;\n if (type === 'hex') {\n return \"#\".concat(value);\n }\n else if (type === 'literal') {\n return value;\n }\n else if (type === 'rgb') {\n return \"rgb(\".concat(value.join(','), \")\");\n }\n else {\n return \"rgba(\".concat(value.join(','), \")\");\n }\n}\nvar parseGradient$1 = (function () {\n var tokens = {\n linearGradient: /^(linear\\-gradient)/i,\n repeatingLinearGradient: /^(repeating\\-linear\\-gradient)/i,\n radialGradient: /^(radial\\-gradient)/i,\n repeatingRadialGradient: /^(repeating\\-radial\\-gradient)/i,\n /**\n * @see https://projects.verou.me/conic-gradient/\n */\n conicGradient: /^(conic\\-gradient)/i,\n sideOrCorner: /^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,\n extentKeywords: /^(closest\\-side|closest\\-corner|farthest\\-side|farthest\\-corner|contain|cover)/,\n positionKeywords: /^(left|center|right|top|bottom)/i,\n pixelValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))px/,\n percentageValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))\\%/,\n emValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))em/,\n angleValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))deg/,\n startCall: /^\\(/,\n endCall: /^\\)/,\n comma: /^,/,\n hexColor: /^\\#([0-9a-fA-F]+)/,\n literalColor: /^([a-zA-Z]+)/,\n rgbColor: /^rgb/i,\n rgbaColor: /^rgba/i,\n number: /^(([0-9]*\\.[0-9]+)|([0-9]+\\.?))/,\n };\n var input = '';\n function error(msg) {\n throw new Error(input + ': ' + msg);\n }\n function getAST() {\n var ast = matchListDefinitions();\n if (input.length > 0) {\n error('Invalid input not EOF');\n }\n return ast;\n }\n function matchListDefinitions() {\n return matchListing(matchDefinition);\n }\n function matchDefinition() {\n return (matchGradient('linear-gradient', tokens.linearGradient, matchLinearOrientation) ||\n matchGradient('repeating-linear-gradient', tokens.repeatingLinearGradient, matchLinearOrientation) ||\n matchGradient('radial-gradient', tokens.radialGradient, matchListRadialOrientations) ||\n matchGradient('repeating-radial-gradient', tokens.repeatingRadialGradient, matchListRadialOrientations) ||\n matchGradient('conic-gradient', tokens.conicGradient, matchListRadialOrientations));\n }\n function matchGradient(gradientType, pattern, orientationMatcher) {\n return matchCall(pattern, function (captures) {\n var orientation = orientationMatcher();\n if (orientation) {\n if (!scan(tokens.comma)) {\n error('Missing comma before color stops');\n }\n }\n return {\n type: gradientType,\n orientation: orientation,\n colorStops: matchListing(matchColorStop),\n };\n });\n }\n function matchCall(pattern, callback) {\n var captures = scan(pattern);\n if (captures) {\n if (!scan(tokens.startCall)) {\n error('Missing (');\n }\n var result = callback(captures);\n if (!scan(tokens.endCall)) {\n error('Missing )');\n }\n return result;\n }\n }\n function matchLinearOrientation() {\n return matchSideOrCorner() || matchAngle();\n }\n function matchSideOrCorner() {\n return match('directional', tokens.sideOrCorner, 1);\n }\n function matchAngle() {\n return match('angular', tokens.angleValue, 1);\n }\n function matchListRadialOrientations() {\n var radialOrientations, radialOrientation = matchRadialOrientation(), lookaheadCache;\n if (radialOrientation) {\n radialOrientations = [];\n radialOrientations.push(radialOrientation);\n lookaheadCache = input;\n if (scan(tokens.comma)) {\n radialOrientation = matchRadialOrientation();\n if (radialOrientation) {\n radialOrientations.push(radialOrientation);\n }\n else {\n input = lookaheadCache;\n }\n }\n }\n return radialOrientations;\n }\n function matchRadialOrientation() {\n var radialType = matchCircle() || matchEllipse();\n if (radialType) {\n // @ts-ignore\n radialType.at = matchAtPosition();\n }\n else {\n var extent = matchExtentKeyword();\n if (extent) {\n radialType = extent;\n var positionAt = matchAtPosition();\n if (positionAt) {\n // @ts-ignore\n radialType.at = positionAt;\n }\n }\n else {\n var defaultPosition = matchPositioning();\n if (defaultPosition) {\n radialType = {\n type: 'default-radial',\n // @ts-ignore\n at: defaultPosition,\n };\n }\n }\n }\n return radialType;\n }\n function matchCircle() {\n var circle = match('shape', /^(circle)/i, 0);\n if (circle) {\n // @ts-ignore\n circle.style = matchLength() || matchExtentKeyword();\n }\n return circle;\n }\n function matchEllipse() {\n var ellipse = match('shape', /^(ellipse)/i, 0);\n if (ellipse) {\n // @ts-ignore\n ellipse.style = matchDistance() || matchExtentKeyword();\n }\n return ellipse;\n }\n function matchExtentKeyword() {\n return match('extent-keyword', tokens.extentKeywords, 1);\n }\n function matchAtPosition() {\n if (match('position', /^at/, 0)) {\n var positioning = matchPositioning();\n if (!positioning) {\n error('Missing positioning value');\n }\n return positioning;\n }\n }\n function matchPositioning() {\n var location = matchCoordinates();\n if (location.x || location.y) {\n return {\n type: 'position',\n value: location,\n };\n }\n }\n function matchCoordinates() {\n return {\n x: matchDistance(),\n y: matchDistance(),\n };\n }\n function matchListing(matcher) {\n var captures = matcher();\n var result = [];\n if (captures) {\n result.push(captures);\n while (scan(tokens.comma)) {\n captures = matcher();\n if (captures) {\n result.push(captures);\n }\n else {\n error('One extra comma');\n }\n }\n }\n return result;\n }\n function matchColorStop() {\n var color = matchColor();\n if (!color) {\n error('Expected color definition');\n }\n color.length = matchDistance();\n return color;\n }\n function matchColor() {\n return (matchHexColor() ||\n matchRGBAColor() ||\n matchRGBColor() ||\n matchLiteralColor());\n }\n function matchLiteralColor() {\n return match('literal', tokens.literalColor, 0);\n }\n function matchHexColor() {\n return match('hex', tokens.hexColor, 1);\n }\n function matchRGBColor() {\n return matchCall(tokens.rgbColor, function () {\n return {\n type: 'rgb',\n value: matchListing(matchNumber),\n };\n });\n }\n function matchRGBAColor() {\n return matchCall(tokens.rgbaColor, function () {\n return {\n type: 'rgba',\n value: matchListing(matchNumber),\n };\n });\n }\n function matchNumber() {\n return scan(tokens.number)[1];\n }\n function matchDistance() {\n return (match('%', tokens.percentageValue, 1) ||\n matchPositionKeyword() ||\n matchLength());\n }\n function matchPositionKeyword() {\n return match('position-keyword', tokens.positionKeywords, 1);\n }\n function matchLength() {\n return match('px', tokens.pixelValue, 1) || match('em', tokens.emValue, 1);\n }\n function match(type, pattern, captureIndex) {\n var captures = scan(pattern);\n if (captures) {\n return {\n type: type,\n value: captures[captureIndex],\n };\n }\n }\n function scan(regexp) {\n var blankCaptures = /^[\\n\\r\\t\\s]+/.exec(input);\n if (blankCaptures) {\n consume(blankCaptures[0].length);\n }\n var captures = regexp.exec(input);\n if (captures) {\n consume(captures[0].length);\n }\n return captures;\n }\n function consume(size) {\n input = input.substring(size);\n }\n return function (code) {\n input = code;\n return getAST();\n };\n})();\nfunction computeLinearGradient(width, height, angle) {\n var rad = deg2rad(angle.value);\n var rx = 0;\n var ry = 0;\n var rcx = rx + width / 2;\n var rcy = ry + height / 2;\n // get the length of gradient line\n // @see https://observablehq.com/@danburzo/css-gradient-line\n var length = Math.abs(width * Math.cos(rad)) + Math.abs(height * Math.sin(rad));\n var x1 = rcx - (Math.cos(rad) * length) / 2;\n var y1 = rcy - (Math.sin(rad) * length) / 2;\n var x2 = rcx + (Math.cos(rad) * length) / 2;\n var y2 = rcy + (Math.sin(rad) * length) / 2;\n return { x1: x1, y1: y1, x2: x2, y2: y2 };\n}\nfunction computeRadialGradient(width, height, cx, cy, size) {\n // 'px'\n var x = cx.value;\n var y = cy.value;\n // TODO: 'em'\n // '%'\n if (cx.unit === UnitType.kPercentage) {\n x = (cx.value / 100) * width;\n }\n if (cy.unit === UnitType.kPercentage) {\n y = (cy.value / 100) * height;\n }\n // default to farthest-side\n var r = Math.max(distanceSquareRoot([0, 0], [x, y]), distanceSquareRoot([0, height], [x, y]), distanceSquareRoot([width, height], [x, y]), distanceSquareRoot([width, 0], [x, y]));\n if (size) {\n if (size instanceof CSSUnitValue) {\n r = size.value;\n }\n else if (size instanceof CSSKeywordValue) {\n // @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Images/Using_CSS_gradients#example_closest-side_for_circles\n if (size.value === 'closest-side') {\n r = Math.min(x, width - x, y, height - y);\n }\n else if (size.value === 'farthest-side') {\n r = Math.max(x, width - x, y, height - y);\n }\n else if (size.value === 'closest-corner') {\n r = Math.min(distanceSquareRoot([0, 0], [x, y]), distanceSquareRoot([0, height], [x, y]), distanceSquareRoot([width, height], [x, y]), distanceSquareRoot([width, 0], [x, y]));\n }\n }\n }\n return { x: x, y: y, r: r };\n}\n\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\nfunction spaceColorStops(colorStops) {\n var _a, _b, _c;\n var length = colorStops.length;\n colorStops[length - 1].length = (_a = colorStops[length - 1].length) !== null && _a !== void 0 ? _a : {\n type: '%',\n value: '100',\n };\n if (length > 1) {\n colorStops[0].length = (_b = colorStops[0].length) !== null && _b !== void 0 ? _b : {\n type: '%',\n value: '0',\n };\n }\n var previousIndex = 0;\n var previousOffset = Number(colorStops[0].length.value);\n for (var i = 1; i < length; i++) {\n // support '%' & 'px'\n var offset = (_c = colorStops[i].length) === null || _c === void 0 ? void 0 : _c.value;\n if (!isNil(offset) && !isNil(previousOffset)) {\n for (var j = 1; j < i - previousIndex; j++)\n colorStops[previousIndex + j].length = {\n type: '%',\n value: \"\".concat(previousOffset +\n ((Number(offset) - previousOffset) * j) / (i - previousIndex)),\n };\n previousIndex = i;\n previousOffset = Number(offset);\n }\n }\n}\n// The position of the gradient line's starting point.\n// different from CSS side(to top) @see https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/linear-gradient#values\nvar SideOrCornerToDegMap = {\n left: 270 - 90,\n top: 0 - 90,\n bottom: 180 - 90,\n right: 90 - 90,\n 'left top': 315 - 90,\n 'top left': 315 - 90,\n 'left bottom': 225 - 90,\n 'bottom left': 225 - 90,\n 'right top': 45 - 90,\n 'top right': 45 - 90,\n 'right bottom': 135 - 90,\n 'bottom right': 135 - 90,\n};\nvar angleToDeg = memoize(function (orientation) {\n var angle;\n if (orientation.type === 'angular') {\n angle = Number(orientation.value);\n }\n else {\n angle = SideOrCornerToDegMap[orientation.value] || 0;\n }\n return getOrCreateUnitValue(angle, 'deg');\n});\nvar positonToCSSUnitValue = memoize(function (position) {\n var cx = 50;\n var cy = 50;\n var unitX = '%';\n var unitY = '%';\n if ((position === null || position === void 0 ? void 0 : position.type) === 'position') {\n var _a = position.value, x = _a.x, y = _a.y;\n if ((x === null || x === void 0 ? void 0 : x.type) === 'position-keyword') {\n if (x.value === 'left') {\n cx = 0;\n }\n else if (x.value === 'center') {\n cx = 50;\n }\n else if (x.value === 'right') {\n cx = 100;\n }\n else if (x.value === 'top') {\n cy = 0;\n }\n else if (x.value === 'bottom') {\n cy = 100;\n }\n }\n if ((y === null || y === void 0 ? void 0 : y.type) === 'position-keyword') {\n if (y.value === 'left') {\n cx = 0;\n }\n else if (y.value === 'center') {\n cy = 50;\n }\n else if (y.value === 'right') {\n cx = 100;\n }\n else if (y.value === 'top') {\n cy = 0;\n }\n else if (y.value === 'bottom') {\n cy = 100;\n }\n }\n if ((x === null || x === void 0 ? void 0 : x.type) === 'px' || (x === null || x === void 0 ? void 0 : x.type) === '%' || (x === null || x === void 0 ? void 0 : x.type) === 'em') {\n unitX = x === null || x === void 0 ? void 0 : x.type;\n cx = Number(x.value);\n }\n if ((y === null || y === void 0 ? void 0 : y.type) === 'px' || (y === null || y === void 0 ? void 0 : y.type) === '%' || (y === null || y === void 0 ? void 0 : y.type) === 'em') {\n unitY = y === null || y === void 0 ? void 0 : y.type;\n cy = Number(y.value);\n }\n }\n return {\n cx: getOrCreateUnitValue(cx, unitX),\n cy: getOrCreateUnitValue(cy, unitY),\n };\n});\nvar parseGradient = memoize(function (colorStr) {\n var _a;\n if (colorStr.indexOf('linear') > -1 || colorStr.indexOf('radial') > -1) {\n var ast = parseGradient$1(colorStr);\n return ast.map(function (_a) {\n var type = _a.type, orientation = _a.orientation, colorStops = _a.colorStops;\n spaceColorStops(colorStops);\n var steps = colorStops.map(function (colorStop) {\n // TODO: only support % for now, should calc percentage of axis length when using px/em\n return {\n offset: getOrCreateUnitValue(Number(colorStop.length.value), '%'),\n color: colorStopToString(colorStop),\n };\n });\n if (type === 'linear-gradient') {\n return new CSSGradientValue(GradientType.LinearGradient, {\n angle: orientation\n ? angleToDeg(orientation)\n : Odeg,\n steps: steps,\n });\n }\n else if (type === 'radial-gradient') {\n if (!orientation) {\n orientation = [\n {\n type: 'shape',\n value: 'circle',\n },\n ];\n }\n if (orientation[0].type === 'shape' &&\n orientation[0].value === 'circle') {\n var _b = positonToCSSUnitValue(orientation[0].at), cx = _b.cx, cy = _b.cy;\n var size = void 0;\n if (orientation[0].style) {\n var _c = orientation[0].style, type_1 = _c.type, value = _c.value;\n if (type_1 === 'extent-keyword') {\n size = getOrCreateKeyword(value);\n }\n else {\n size = getOrCreateUnitValue(value, type_1);\n }\n }\n return new CSSGradientValue(GradientType.RadialGradient, {\n cx: cx,\n cy: cy,\n size: size,\n steps: steps,\n });\n }\n // TODO: support ellipse shape\n // TODO: repeating-linear-gradient & repeating-radial-gradient\n // } else if (type === 'repeating-linear-gradient') {\n // } else if (type === 'repeating-radial-gradient') {\n }\n });\n }\n // legacy format, should be deprecated later\n var type = colorStr[0];\n if (colorStr[1] === '(' || colorStr[2] === '(') {\n if (type === 'l') {\n var arr = regexLG.exec(colorStr);\n if (arr) {\n var steps = ((_a = arr[2].match(regexColorStop)) === null || _a === void 0 ? void 0 : _a.map(function (stop) { return stop.split(':'); })) || [];\n return [\n new CSSGradientValue(GradientType.LinearGradient, {\n angle: getOrCreateUnitValue(parseFloat(arr[1]), 'deg'),\n steps: steps.map(function (_a) {\n var _b = __read(_a, 2), offset = _b[0], color = _b[1];\n return ({\n offset: getOrCreateUnitValue(Number(offset) * 100, '%'),\n color: color,\n });\n }),\n }),\n ];\n }\n }\n else if (type === 'r') {\n var parsedRadialGradient = parseRadialGradient(colorStr);\n if (parsedRadialGradient) {\n if (isString(parsedRadialGradient)) {\n colorStr = parsedRadialGradient;\n }\n else {\n return [\n new CSSGradientValue(GradientType.RadialGradient, parsedRadialGradient),\n ];\n }\n }\n }\n else if (type === 'p') {\n return parsePattern(colorStr);\n }\n }\n});\nfunction parseRadialGradient(gradientStr) {\n var _a;\n var arr = regexRG.exec(gradientStr);\n if (arr) {\n var steps = ((_a = arr[4].match(regexColorStop)) === null || _a === void 0 ? void 0 : _a.map(function (stop) { return stop.split(':'); })) || [];\n return {\n cx: getOrCreateUnitValue(50, '%'),\n cy: getOrCreateUnitValue(50, '%'),\n steps: steps.map(function (_a) {\n var _b = __read(_a, 2), offset = _b[0], color = _b[1];\n return ({\n offset: getOrCreateUnitValue(Number(offset) * 100, '%'),\n color: color,\n });\n }),\n };\n }\n return null;\n}\nfunction parsePattern(patternStr) {\n var arr = regexPR.exec(patternStr);\n if (arr) {\n var repetition = arr[1];\n var src = arr[2];\n switch (repetition) {\n case 'a':\n repetition = 'repeat';\n break;\n case 'x':\n repetition = 'repeat-x';\n break;\n case 'y':\n repetition = 'repeat-y';\n break;\n case 'n':\n repetition = 'no-repeat';\n break;\n default:\n repetition = 'no-repeat';\n }\n return {\n image: src,\n // @ts-ignore\n repetition: repetition,\n };\n }\n return null;\n}\n\nfunction isCSSGradientValue(object) {\n return (!!object.type && !!object.value);\n}\nfunction isPattern(object) {\n return object && !!object.image;\n}\nfunction isCSSRGB(object) {\n return (object &&\n !isNil(object.r) &&\n !isNil(object.g) &&\n !isNil(object.b));\n}\n/**\n * @see https://github.com/WebKit/WebKit/blob/main/Source/WebCore/css/parser/CSSParser.cpp#L97\n */\nvar parseColor = memoize(function (colorStr) {\n if (isPattern(colorStr)) {\n return __assign({ repetition: 'repeat' }, colorStr);\n }\n if (isNil(colorStr)) {\n colorStr = '';\n }\n if (colorStr === 'transparent') {\n // transparent black\n return transparentColor;\n }\n else if (colorStr === 'currentColor') {\n // @see https://github.com/adobe-webplatform/Snap.svg/issues/526\n colorStr = 'black';\n }\n // support CSS gradient syntax\n var g = parseGradient(colorStr);\n if (g) {\n return g;\n }\n // constants\n var color = d3.color(colorStr);\n var rgba = [0, 0, 0, 0];\n if (color !== null) {\n rgba[0] = color.r || 0;\n rgba[1] = color.g || 0;\n rgba[2] = color.b || 0;\n rgba[3] = color.opacity;\n }\n // return new CSSRGB(...rgba);\n return getOrCreateRGBA.apply(void 0, __spreadArray([], __read(rgba), false));\n});\nfunction mergeColors(left, right) {\n // only support constant value, exclude gradient & pattern\n if (!isCSSRGB(left) || !isCSSRGB(right)) {\n return;\n }\n return [\n [Number(left.r), Number(left.g), Number(left.b), Number(left.alpha)],\n [Number(right.r), Number(right.g), Number(right.b), Number(right.alpha)],\n function (color) {\n var rgba = color.slice();\n if (rgba[3]) {\n for (var i = 0; i < 3; i++)\n rgba[i] = Math.round(clamp(rgba[i], 0, 255));\n }\n rgba[3] = clamp(rgba[3], 0, 1);\n return \"rgba(\".concat(rgba.join(','), \")\");\n },\n ];\n}\n\nfunction parseDimension(unitRegExp, string) {\n if (isNil(string)) {\n return getOrCreateUnitValue(0, 'px');\n }\n string = \"\".concat(string).trim().toLowerCase();\n if (isFinite(Number(string))) {\n if ('px'.search(unitRegExp) >= 0) {\n return getOrCreateUnitValue(Number(string), 'px');\n }\n else if ('deg'.search(unitRegExp) >= 0) {\n return getOrCreateUnitValue(Number(string), 'deg');\n }\n }\n var matchedUnits = [];\n string = string.replace(unitRegExp, function (match) {\n matchedUnits.push(match);\n return 'U' + match;\n });\n var taggedUnitRegExp = 'U(' + unitRegExp.source + ')';\n return matchedUnits.map(function (unit) {\n return getOrCreateUnitValue(Number(string\n .replace(new RegExp('U' + unit, 'g'), '')\n .replace(new RegExp(taggedUnitRegExp, 'g'), '*0')), unit);\n })[0];\n}\n/**\n * \n * @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/length\n * length with only absolute unit, eg. 1px\n */\nvar parseLengthUnmemoize = function (css) {\n return parseDimension(new RegExp('px', 'g'), css);\n};\nvar parseLength = memoize(parseLengthUnmemoize);\n/**\n * \n * @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/percentage\n */\nvar parserPercentageUnmemoize = function (css) {\n return parseDimension(new RegExp('%', 'g'), css);\n};\nmemoize(parserPercentageUnmemoize);\n/**\n * length with absolute or relative unit,\n * eg. 1px, 0.7em, 50%, calc(100% - 200px);\n *\n * @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/length-percentage\n */\nvar parseLengthOrPercentageUnmemoize = function (css) {\n if (isNumber(css) || isFinite(Number(css))) {\n // Number(css) is NaN\n return getOrCreateUnitValue(Number(css) || 0, 'px');\n // return Number(css);\n }\n return parseDimension(new RegExp('px|%|em|rem', 'g'), css);\n};\nvar parseLengthOrPercentage = memoize(parseLengthOrPercentageUnmemoize);\nvar parseAngleUnmemoize = function (css) {\n return parseDimension(new RegExp('deg|rad|grad|turn', 'g'), css);\n};\nvar parseAngle = memoize(parseAngleUnmemoize);\n/**\n * merge CSSUnitValue\n *\n * @example\n * 10px + 20px = 30px\n * 10deg + 10rad\n * 10% + 20% = 30%\n */\nfunction mergeDimensions(left, right, target, nonNegative, index) {\n if (index === void 0) { index = 0; }\n var unit = '';\n var leftValue = left.value || 0;\n var rightValue = right.value || 0;\n var canonicalUnit = toCanonicalUnit(left.unit);\n var leftCanonicalUnitValue = left.convertTo(canonicalUnit);\n var rightCanonicalUnitValue = right.convertTo(canonicalUnit);\n if (leftCanonicalUnitValue && rightCanonicalUnitValue) {\n leftValue = leftCanonicalUnitValue.value;\n rightValue = rightCanonicalUnitValue.value;\n unit = unitTypeToString(left.unit);\n }\n else {\n // format '%' to 'px'\n if (CSSUnitValue.isLength(left.unit) || CSSUnitValue.isLength(right.unit)) {\n leftValue = convertPercentUnit(left, index, target);\n rightValue = convertPercentUnit(right, index, target);\n unit = 'px';\n }\n }\n // // format 'rad' 'turn' to 'deg'\n // if (CSSUnitValue.isAngle(left.unit) || CSSUnitValue.isAngle(right.unit)) {\n // leftValue = convertAngleUnit(left);\n // rightValue = convertAngleUnit(right);\n // unit = 'deg';\n // }\n return [\n leftValue,\n rightValue,\n function (value) {\n if (nonNegative) {\n value = Math.max(value, 0);\n }\n return value + unit;\n },\n ];\n}\nfunction convertAngleUnit(value) {\n var deg = 0;\n if (value.unit === UnitType.kDegrees) {\n deg = value.value;\n }\n else if (value.unit === UnitType.kRadians) {\n deg = rad2deg(Number(value.value));\n }\n else if (value.unit === UnitType.kTurns) {\n deg = turn2deg(Number(value.value));\n }\n return deg;\n}\nfunction parseDimensionArrayFormat(string, size) {\n var parsed;\n if (Array.isArray(string)) {\n // [1, '2px', 3]\n parsed = string.map(function (segment) { return Number(segment); });\n }\n else if (isString(string)) {\n parsed = string.split(' ').map(function (segment) { return Number(segment); });\n }\n else if (isNumber(string)) {\n parsed = [string];\n }\n if (size === 2) {\n if (parsed.length === 1) {\n return [parsed[0], parsed[0]];\n }\n else {\n return [parsed[0], parsed[1]];\n }\n }\n else {\n if (parsed.length === 1) {\n return [parsed[0], parsed[0], parsed[0], parsed[0]];\n }\n else if (parsed.length === 2) {\n return [parsed[0], parsed[1], parsed[0], parsed[1]];\n }\n else if (parsed.length === 3) {\n return [parsed[0], parsed[1], parsed[2], parsed[1]];\n }\n else {\n return [parsed[0], parsed[1], parsed[2], parsed[3]];\n }\n }\n}\nfunction parseDimensionArray(string) {\n if (isString(string)) {\n // \"1px 2px 3px\"\n return string.split(' ').map(function (segment) { return parseLengthOrPercentage(segment); });\n }\n else {\n // [1, '2px', 3]\n return string.map(function (segment) { return parseLengthOrPercentage(segment.toString()); });\n }\n}\n// export function mergeDimensionList(\n// left: CSSUnitValue[],\n// right: CSSUnitValue[],\n// target: IElement | null,\n// ): [number[], number[], (list: number[]) => string] | undefined {\n// if (left.length !== right.length) {\n// return;\n// }\n// const unit = left[0].unit;\n// return [\n// left.map((l) => l.value),\n// right.map((l) => l.value),\n// (values: number[]) => {\n// return values.map((n) => new CSSUnitValue(n, unit)).join(' ');\n// },\n// ];\n// }\nfunction convertPercentUnit(valueWithUnit, vec3Index, target) {\n if (valueWithUnit.value === 0) {\n return 0;\n }\n if (valueWithUnit.unit === UnitType.kPixels) {\n return Number(valueWithUnit.value);\n }\n else if (valueWithUnit.unit === UnitType.kPercentage && target) {\n var bounds = target.nodeName === Shape.GROUP\n ? target.getLocalBounds()\n : // : target.getGeometryBounds();\n target.geometry.contentBounds;\n return (valueWithUnit.value / 100) * bounds.halfExtents[vec3Index] * 2;\n }\n return 0;\n}\n\nvar parseParam = function (css) {\n return parseDimension(/deg|rad|grad|turn|px|%/g, css);\n};\nvar supportedFilters = [\n 'blur',\n 'brightness',\n 'drop-shadow',\n 'contrast',\n 'grayscale',\n 'sepia',\n 'saturate',\n 'hue-rotate',\n 'invert',\n];\nfunction parseFilter(filterStr) {\n if (filterStr === void 0) { filterStr = ''; }\n filterStr = filterStr.toLowerCase().trim();\n if (filterStr === 'none') {\n return [];\n }\n var filterRegExp = /\\s*([\\w-]+)\\(([^)]*)\\)/g;\n var result = [];\n var match;\n var prevLastIndex = 0;\n while ((match = filterRegExp.exec(filterStr))) {\n if (match.index !== prevLastIndex) {\n return [];\n }\n prevLastIndex = match.index + match[0].length;\n if (supportedFilters.indexOf(match[1]) > -1) {\n result.push({\n name: match[1],\n params: match[2].split(' ').map(function (p) { return parseParam(p) || parseColor(p); }),\n });\n }\n if (filterRegExp.lastIndex === filterStr.length) {\n return result;\n }\n }\n return [];\n}\n\nfunction numberToString(x) {\n // scale(0.00000001) -> scale(0)\n // return x.toFixed(6).replace(/0+$/, '').replace(/\\.$/, '');\n return x.toString();\n}\n/**\n * parse string or number to CSSUnitValue(numeric)\n *\n * eg.\n * * 0 -> CSSUnitValue(0)\n * * '2' -> CSSUnitValue(2)\n */\nvar parseNumberUnmemoize = function (string) {\n if (typeof string === 'number') {\n return getOrCreateUnitValue(string);\n }\n if (/^\\s*[-+]?(\\d*\\.)?\\d+\\s*$/.test(string)) {\n return getOrCreateUnitValue(Number(string));\n }\n else {\n return getOrCreateUnitValue(0);\n }\n};\nvar parseNumber = memoize(parseNumberUnmemoize);\nmemoize(function (string) {\n if (isString(string)) {\n return string.split(' ').map(parseNumber);\n }\n else {\n return string.map(parseNumber);\n }\n});\nfunction mergeNumbers(left, right) {\n return [left, right, numberToString];\n}\nfunction clampedMergeNumbers(min, max) {\n return function (left, right) { return [\n left,\n right,\n function (x) { return numberToString(clamp(x, min, max)); },\n ]; };\n}\nfunction mergeNumberLists(left, right) {\n if (left.length !== right.length) {\n return;\n }\n return [\n left,\n right,\n function (numberList) {\n return numberList;\n },\n ];\n}\n\nfunction getOrCalculatePathTotalLength(path) {\n if (path.parsedStyle.path.totalLength === 0) {\n path.parsedStyle.path.totalLength = getTotalLength(path.parsedStyle.path.absolutePath);\n }\n return path.parsedStyle.path.totalLength;\n}\nfunction removeRedundantMCommand(path) {\n for (var i = 0; i < path.length; i++) {\n var prevSegment = path[i - 1];\n var segment = path[i];\n var cmd = segment[0];\n if (cmd === 'M') {\n if (prevSegment) {\n var prevCmd = prevSegment[0];\n var srcPoint = [segment[1], segment[2]];\n var destPoint = void 0;\n if (prevCmd === 'L' || prevCmd === 'M') {\n destPoint = [prevSegment[1], prevSegment[2]];\n }\n else if (prevCmd === 'C' || prevCmd === 'A' || prevCmd === 'Q') {\n destPoint = [\n prevSegment[prevSegment.length - 2],\n prevSegment[prevSegment.length - 1],\n ];\n }\n if (destPoint && isSamePoint(srcPoint, destPoint)) {\n path.splice(i, 1);\n i--;\n }\n }\n }\n }\n}\nfunction hasArcOrBezier(path) {\n var hasArc = false;\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'C' || cmd === 'A' || cmd === 'Q') {\n hasArc = true;\n break;\n }\n }\n return hasArc;\n}\nfunction extractPolygons(pathArray) {\n var polygons = [];\n var polylines = [];\n var points = []; // 防止第一个命令不是 'M'\n for (var i = 0; i < pathArray.length; i++) {\n var params = pathArray[i];\n var cmd = params[0];\n if (cmd === 'M') {\n // 遇到 'M' 判定是否是新数组,新数组中没有点\n if (points.length) {\n // 如果存在点,则说明没有遇到 'Z',开始了一个新的多边形\n polylines.push(points);\n points = []; // 创建新的点\n }\n points.push([params[1], params[2]]);\n }\n else if (cmd === 'Z') {\n if (points.length) {\n // 存在点\n polygons.push(points);\n points = []; // 开始新的点集合\n }\n // 如果不存在点,同时 'Z',则说明是错误,不处理\n }\n else {\n points.push([params[1], params[2]]);\n }\n }\n // 说明 points 未放入 polygons 或者 polyline\n // 仅当只有一个 M,没有 Z 时会发生这种情况\n if (points.length > 0) {\n polylines.push(points);\n }\n return {\n polygons: polygons,\n polylines: polylines,\n };\n}\nfunction isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\nfunction getPathBBox(segments, lineWidth) {\n var xArr = [];\n var yArr = [];\n var segmentsWithAngle = [];\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint, params = segment.params, prePoint = segment.prePoint;\n var box = void 0;\n switch (segment.command) {\n case 'Q':\n box = quadBox(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4]);\n break;\n case 'C':\n box = cubicBox(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], params[5], params[6]);\n break;\n case 'A':\n var arcParams = segment.arcParams;\n box = arcBox(arcParams.cx, arcParams.cy, arcParams.rx, arcParams.ry, arcParams.xRotation, arcParams.startAngle, arcParams.endAngle);\n break;\n default:\n xArr.push(currentPoint[0]);\n yArr.push(currentPoint[1]);\n break;\n }\n if (box) {\n segment.box = box;\n xArr.push(box.x, box.x + box.width);\n yArr.push(box.y, box.y + box.height);\n }\n if (lineWidth &&\n (segment.command === 'L' || segment.command === 'M') &&\n segment.prePoint &&\n segment.nextPoint) {\n segmentsWithAngle.push(segment);\n }\n }\n // bbox calculation should ignore NaN for path attribute\n // ref: https://github.com/antvis/g/issues/210\n // ref: https://github.com/antvis/G2/issues/3109\n xArr = xArr.filter(function (item) { return !Number.isNaN(item) && item !== Infinity && item !== -Infinity; });\n yArr = yArr.filter(function (item) { return !Number.isNaN(item) && item !== Infinity && item !== -Infinity; });\n var minX = min(xArr);\n var minY = min(yArr);\n var maxX = max(xArr);\n var maxY = max(yArr);\n if (segmentsWithAngle.length === 0) {\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n for (var i = 0; i < segmentsWithAngle.length; i++) {\n var segment = segmentsWithAngle[i];\n var currentPoint = segment.currentPoint;\n var extra = void 0;\n if (currentPoint[0] === minX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minX = minX - extra.xExtra;\n }\n else if (currentPoint[0] === maxX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxX = maxX + extra.xExtra;\n }\n if (currentPoint[1] === minY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minY = minY - extra.yExtra;\n }\n else if (currentPoint[1] === maxY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxY = maxY + extra.yExtra;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nfunction getExtraFromSegmentWithAngle(segment, lineWidth) {\n var prePoint = segment.prePoint, currentPoint = segment.currentPoint, nextPoint = segment.nextPoint;\n var currentAndPre = Math.pow(currentPoint[0] - prePoint[0], 2) +\n Math.pow(currentPoint[1] - prePoint[1], 2);\n var currentAndNext = Math.pow(currentPoint[0] - nextPoint[0], 2) +\n Math.pow(currentPoint[1] - nextPoint[1], 2);\n var preAndNext = Math.pow(prePoint[0] - nextPoint[0], 2) +\n Math.pow(prePoint[1] - nextPoint[1], 2);\n // 以 currentPoint 为顶点的夹角\n var currentAngle = Math.acos((currentAndPre + currentAndNext - preAndNext) /\n (2 * Math.sqrt(currentAndPre) * Math.sqrt(currentAndNext)));\n // 夹角为空、 0 或 PI 时,不需要计算夹角处的额外宽度\n // 注意: 由于计算精度问题,夹角为 0 的情况计算出来的角度可能是一个很小的值,还需要判断其与 0 是否近似相等\n if (!currentAngle ||\n Math.sin(currentAngle) === 0 ||\n isNumberEqual(currentAngle, 0)) {\n return {\n xExtra: 0,\n yExtra: 0,\n };\n }\n var xAngle = Math.abs(Math.atan2(nextPoint[1] - currentPoint[1], nextPoint[0] - currentPoint[0]));\n var yAngle = Math.abs(Math.atan2(nextPoint[0] - currentPoint[0], nextPoint[1] - currentPoint[1]));\n // 将夹角转为锐角\n xAngle = xAngle > Math.PI / 2 ? Math.PI - xAngle : xAngle;\n yAngle = yAngle > Math.PI / 2 ? Math.PI - yAngle : yAngle;\n // 这里不考虑在水平和垂直方向的投影,直接使用最大差值\n // 由于上层统一加减了二分之一线宽,这里需要进行弥补\n var extra = {\n // 水平方向投影\n xExtra: Math.cos(currentAngle / 2 - xAngle) *\n ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) -\n lineWidth / 2 || 0,\n // 垂直方向投影\n yExtra: Math.cos(yAngle - currentAngle / 2) *\n ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) -\n lineWidth / 2 || 0,\n };\n return extra;\n}\n// 点对称\nfunction toSymmetry(point, center) {\n return [\n center[0] + (center[0] - point[0]),\n center[1] + (center[1] - point[1]),\n ];\n}\nvar angleBetween = function (v0, v1) {\n var p = v0.x * v1.x + v0.y * v1.y;\n var n = Math.sqrt((Math.pow(v0.x, 2) + Math.pow(v0.y, 2)) *\n (Math.pow(v1.x, 2) + Math.pow(v1.y, 2)));\n var sign = v0.x * v1.y - v0.y * v1.x < 0 ? -1 : 1;\n var angle = sign * Math.acos(p / n);\n return angle;\n};\n/**\n * @see https://github.com/rveciana/svg-path-properties/blob/b6bd9a322966f6ef7a311872d80c56e3718de861/src/arc.ts#L121\n */\nvar pointOnEllipticalArc = function (p0, rx, ry, xAxisRotation, largeArcFlag, sweepFlag, p1, t) {\n // In accordance to: http://www.w3.org/TR/SVG/implnote.html#ArcOutOfRangeParameters\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n xAxisRotation = mod(xAxisRotation, 360);\n var xAxisRotationRadians = deg2rad(xAxisRotation);\n // If the endpoints are identical, then this is equivalent to omitting the elliptical arc segment entirely.\n if (p0.x === p1.x && p0.y === p1.y) {\n return { x: p0.x, y: p0.y, ellipticalArcAngle: 0 }; // Check if angle is correct\n }\n // If rx = 0 or ry = 0 then this arc is treated as a straight line segment joining the endpoints.\n if (rx === 0 || ry === 0) {\n //return this.pointOnLine(p0, p1, t);\n return { x: 0, y: 0, ellipticalArcAngle: 0 }; // Check if angle is correct\n }\n // Following \"Conversion from endpoint to center parameterization\"\n // http://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter\n // Step #1: Compute transformedPoint\n var dx = (p0.x - p1.x) / 2;\n var dy = (p0.y - p1.y) / 2;\n var transformedPoint = {\n x: Math.cos(xAxisRotationRadians) * dx + Math.sin(xAxisRotationRadians) * dy,\n y: -Math.sin(xAxisRotationRadians) * dx +\n Math.cos(xAxisRotationRadians) * dy,\n };\n // Ensure radii are large enough\n var radiiCheck = Math.pow(transformedPoint.x, 2) / Math.pow(rx, 2) +\n Math.pow(transformedPoint.y, 2) / Math.pow(ry, 2);\n if (radiiCheck > 1) {\n rx = Math.sqrt(radiiCheck) * rx;\n ry = Math.sqrt(radiiCheck) * ry;\n }\n // Step #2: Compute transformedCenter\n var cSquareNumerator = Math.pow(rx, 2) * Math.pow(ry, 2) -\n Math.pow(rx, 2) * Math.pow(transformedPoint.y, 2) -\n Math.pow(ry, 2) * Math.pow(transformedPoint.x, 2);\n var cSquareRootDenom = Math.pow(rx, 2) * Math.pow(transformedPoint.y, 2) +\n Math.pow(ry, 2) * Math.pow(transformedPoint.x, 2);\n var cRadicand = cSquareNumerator / cSquareRootDenom;\n // Make sure this never drops below zero because of precision\n cRadicand = cRadicand < 0 ? 0 : cRadicand;\n var cCoef = (largeArcFlag !== sweepFlag ? 1 : -1) * Math.sqrt(cRadicand);\n var transformedCenter = {\n x: cCoef * ((rx * transformedPoint.y) / ry),\n y: cCoef * (-(ry * transformedPoint.x) / rx),\n };\n // Step #3: Compute center\n var center = {\n x: Math.cos(xAxisRotationRadians) * transformedCenter.x -\n Math.sin(xAxisRotationRadians) * transformedCenter.y +\n (p0.x + p1.x) / 2,\n y: Math.sin(xAxisRotationRadians) * transformedCenter.x +\n Math.cos(xAxisRotationRadians) * transformedCenter.y +\n (p0.y + p1.y) / 2,\n };\n // Step #4: Compute start/sweep angles\n // Start angle of the elliptical arc prior to the stretch and rotate operations.\n // Difference between the start and end angles\n var startVector = {\n x: (transformedPoint.x - transformedCenter.x) / rx,\n y: (transformedPoint.y - transformedCenter.y) / ry,\n };\n var startAngle = angleBetween({\n x: 1,\n y: 0,\n }, startVector);\n var endVector = {\n x: (-transformedPoint.x - transformedCenter.x) / rx,\n y: (-transformedPoint.y - transformedCenter.y) / ry,\n };\n var sweepAngle = angleBetween(startVector, endVector);\n if (!sweepFlag && sweepAngle > 0) {\n sweepAngle -= 2 * Math.PI;\n }\n else if (sweepFlag && sweepAngle < 0) {\n sweepAngle += 2 * Math.PI;\n }\n // We use % instead of `mod(..)` because we want it to be -360deg to 360deg(but actually in radians)\n sweepAngle %= 2 * Math.PI;\n // From http://www.w3.org/TR/SVG/implnote.html#ArcParameterizationAlternatives\n var angle = startAngle + sweepAngle * t;\n var ellipseComponentX = rx * Math.cos(angle);\n var ellipseComponentY = ry * Math.sin(angle);\n var point = {\n x: Math.cos(xAxisRotationRadians) * ellipseComponentX -\n Math.sin(xAxisRotationRadians) * ellipseComponentY +\n center.x,\n y: Math.sin(xAxisRotationRadians) * ellipseComponentX +\n Math.cos(xAxisRotationRadians) * ellipseComponentY +\n center.y,\n ellipticalArcStartAngle: startAngle,\n ellipticalArcEndAngle: startAngle + sweepAngle,\n ellipticalArcAngle: angle,\n ellipticalArcCenter: center,\n resultantRx: rx,\n resultantRy: ry,\n };\n return point;\n};\nfunction path2Segments(path) {\n var segments = [];\n var currentPoint = null; // 当前图形\n var nextParams = null; // 下一节点的 path 参数\n var startMovePoint = null; // 开始 M 的点,可能会有多个\n var lastStartMovePointIndex = 0; // 最近一个开始点 M 的索引\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n nextParams = path[i + 1];\n var command = params[0];\n // 数学定义上的参数,便于后面的计算\n var segment = {\n command: command,\n prePoint: currentPoint,\n params: params,\n startTangent: null,\n endTangent: null,\n currentPoint: null,\n nextPoint: null,\n arcParams: null,\n box: null,\n cubicParams: null,\n };\n switch (command) {\n case 'M':\n startMovePoint = [params[1], params[2]];\n lastStartMovePointIndex = i;\n break;\n case 'A':\n var arcParams = getArcParams(currentPoint, params);\n segment.arcParams = arcParams;\n break;\n }\n if (command === 'Z') {\n // 有了 Z 后,当前节点从开始 M 的点开始\n currentPoint = startMovePoint;\n // 如果当前点的命令为 Z,相当于当前点为最近一个 M 点,则下一个点直接指向最近一个 M 点的下一个点\n nextParams = path[lastStartMovePointIndex + 1];\n }\n else {\n var len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n if (nextParams && nextParams[0] === 'Z') {\n // 如果下一个点的命令为 Z,则下一个点直接指向最近一个 M 点\n nextParams = path[lastStartMovePointIndex];\n if (segments[lastStartMovePointIndex]) {\n // 如果下一个点的命令为 Z,则最近一个 M 点的前一个点为当前点\n segments[lastStartMovePointIndex].prePoint = currentPoint;\n }\n }\n segment.currentPoint = currentPoint;\n // 如果当前点与最近一个 M 点相同,则最近一个 M 点的前一个点为当前点的前一个点\n if (segments[lastStartMovePointIndex] &&\n isSamePoint(currentPoint, segments[lastStartMovePointIndex].currentPoint)) {\n segments[lastStartMovePointIndex].prePoint = segment.prePoint;\n }\n var nextPoint = nextParams\n ? [nextParams[nextParams.length - 2], nextParams[nextParams.length - 1]]\n : null;\n segment.nextPoint = nextPoint;\n // Add startTangent and endTangent\n var prePoint = segment.prePoint;\n if (['L', 'H', 'V'].includes(command)) {\n segment.startTangent = [\n prePoint[0] - currentPoint[0],\n prePoint[1] - currentPoint[1],\n ];\n segment.endTangent = [\n currentPoint[0] - prePoint[0],\n currentPoint[1] - prePoint[1],\n ];\n }\n else if (command === 'Q') {\n // 二次贝塞尔曲线只有一个控制点\n var cp = [params[1], params[2]];\n // 二次贝塞尔曲线的终点为 currentPoint\n segment.startTangent = [prePoint[0] - cp[0], prePoint[1] - cp[1]];\n segment.endTangent = [currentPoint[0] - cp[0], currentPoint[1] - cp[1]];\n }\n else if (command === 'T') {\n var preSegment = segments[i - 1];\n var cp = toSymmetry(preSegment.currentPoint, prePoint);\n if (preSegment.command === 'Q') {\n segment.command = 'Q';\n segment.startTangent = [prePoint[0] - cp[0], prePoint[1] - cp[1]];\n segment.endTangent = [currentPoint[0] - cp[0], currentPoint[1] - cp[1]];\n }\n else {\n // @ts-ignore\n segment.command = 'TL';\n segment.startTangent = [\n prePoint[0] - currentPoint[0],\n prePoint[1] - currentPoint[1],\n ];\n segment.endTangent = [\n currentPoint[0] - prePoint[0],\n currentPoint[1] - prePoint[1],\n ];\n }\n }\n else if (command === 'C') {\n // 三次贝塞尔曲线有两个控制点\n var cp1 = [params[1], params[2]];\n var cp2 = [params[3], params[4]];\n segment.startTangent = [prePoint[0] - cp1[0], prePoint[1] - cp1[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n // horizontal line, eg. ['C', 100, 100, 100, 100, 200, 200]\n if (segment.startTangent[0] === 0 && segment.startTangent[1] === 0) {\n segment.startTangent = [cp1[0] - cp2[0], cp1[1] - cp2[1]];\n }\n if (segment.endTangent[0] === 0 && segment.endTangent[1] === 0) {\n segment.endTangent = [cp2[0] - cp1[0], cp2[1] - cp1[1]];\n }\n }\n else if (command === 'S') {\n var preSegment = segments[i - 1];\n var cp1 = toSymmetry(preSegment.currentPoint, prePoint);\n var cp2 = [params[1], params[2]];\n if (preSegment.command === 'C') {\n segment.command = 'C'; // 将 S 命令变换为 C 命令\n segment.startTangent = [prePoint[0] - cp1[0], prePoint[1] - cp1[1]];\n segment.endTangent = [\n currentPoint[0] - cp2[0],\n currentPoint[1] - cp2[1],\n ];\n }\n else {\n // @ts-ignore\n segment.command = 'SQ'; // 将 S 命令变换为 SQ 命令\n segment.startTangent = [prePoint[0] - cp2[0], prePoint[1] - cp2[1]];\n segment.endTangent = [\n currentPoint[0] - cp2[0],\n currentPoint[1] - cp2[1],\n ];\n }\n }\n else if (command === 'A') {\n var _a = getTangentAtRatio(segment, 0), dx1 = _a.x, dy1 = _a.y;\n var _b = getTangentAtRatio(segment, 1, false), dx2 = _b.x, dy2 = _b.y;\n segment.startTangent = [dx1, dy1];\n segment.endTangent = [dx2, dy2];\n }\n segments.push(segment);\n }\n return segments;\n}\n/**\n * Use length instead of ratio\n */\nfunction getTangentAtRatio(segment, ratio, sign) {\n if (sign === void 0) { sign = true; }\n var _a = segment.arcParams, _b = _a.rx, rx = _b === void 0 ? 0 : _b, _c = _a.ry, ry = _c === void 0 ? 0 : _c, xRotation = _a.xRotation, arcFlag = _a.arcFlag, sweepFlag = _a.sweepFlag;\n var p1 = pointOnEllipticalArc({ x: segment.prePoint[0], y: segment.prePoint[1] }, rx, ry, xRotation, !!arcFlag, !!sweepFlag, { x: segment.currentPoint[0], y: segment.currentPoint[1] }, ratio);\n var p2 = pointOnEllipticalArc({ x: segment.prePoint[0], y: segment.prePoint[1] }, rx, ry, xRotation, !!arcFlag, !!sweepFlag, { x: segment.currentPoint[0], y: segment.currentPoint[1] }, sign ? ratio + 0.005 : ratio - 0.005);\n var xDist = p2.x - p1.x;\n var yDist = p2.y - p1.y;\n var dist = Math.sqrt(xDist * xDist + yDist * yDist);\n return { x: -xDist / dist, y: -yDist / dist };\n}\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v)\n ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v))\n : 1;\n}\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\nfunction getArcParams(startPoint, params) {\n var rx = params[1];\n var ry = params[2];\n var xRotation = mod(deg2rad(params[3]), Math.PI * 2);\n var arcFlag = params[4];\n var sweepFlag = params[5];\n // 弧形起点坐标\n var x1 = startPoint[0];\n var y1 = startPoint[1];\n // 弧形终点坐标\n var x2 = params[6];\n var y2 = params[7];\n var xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 +\n (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 +\n (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n var f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n var cxp = ry ? (f * rx * yp) / ry : 0;\n var cyp = rx ? (f * -ry * xp) / rx : 0;\n // 椭圆圆心坐标\n var cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n // 起始点的单位向量\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n var theta = vAngle([1, 0], u);\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx: cx,\n cy: cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [x2, y2]) ? 0 : rx,\n ry: isSamePoint(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation: xRotation,\n arcFlag: arcFlag,\n sweepFlag: sweepFlag,\n };\n}\nfunction commandsToPathString(commands, object, transform) {\n var _a = object.parsedStyle, _b = _a.defX, defX = _b === void 0 ? 0 : _b, _c = _a.defY, defY = _c === void 0 ? 0 : _c;\n return commands.reduce(function (prev, cur) {\n var path = '';\n if (cur[0] === 'M' || cur[0] === 'L') {\n var p = vec3.fromValues(cur[1] - defX, cur[2] - defY, 0);\n if (transform) {\n vec3.transformMat4(p, p, transform);\n }\n path = \"\".concat(cur[0]).concat(p[0], \",\").concat(p[1]);\n }\n else if (cur[0] === 'Z') {\n path = cur[0];\n }\n else if (cur[0] === 'C') {\n var p1 = vec3.fromValues(cur[1] - defX, cur[2] - defY, 0);\n var p2 = vec3.fromValues(cur[3] - defX, cur[4] - defY, 0);\n var p3 = vec3.fromValues(cur[5] - defX, cur[6] - defY, 0);\n if (transform) {\n vec3.transformMat4(p1, p1, transform);\n vec3.transformMat4(p2, p2, transform);\n vec3.transformMat4(p3, p3, transform);\n }\n path = \"\".concat(cur[0]).concat(p1[0], \",\").concat(p1[1], \",\").concat(p2[0], \",\").concat(p2[1], \",\").concat(p3[0], \",\").concat(p3[1]);\n }\n else if (cur[0] === 'A') {\n var c = vec3.fromValues(cur[6] - defX, cur[7] - defY, 0);\n if (transform) {\n vec3.transformMat4(c, c, transform);\n }\n path = \"\".concat(cur[0]).concat(cur[1], \",\").concat(cur[2], \",\").concat(cur[3], \",\").concat(cur[4], \",\").concat(cur[5], \",\").concat(c[0], \",\").concat(c[1]);\n }\n else if (cur[0] === 'Q') {\n var p1 = vec3.fromValues(cur[1] - defX, cur[2] - defY, 0);\n var p2 = vec3.fromValues(cur[3] - defX, cur[4] - defY, 0);\n if (transform) {\n vec3.transformMat4(p1, p1, transform);\n vec3.transformMat4(p2, p2, transform);\n }\n path = \"\".concat(cur[0]).concat(cur[1], \",\").concat(cur[2], \",\").concat(cur[3], \",\").concat(cur[4], \"}\");\n }\n return (prev += path);\n }, '');\n}\nfunction lineToCommands(x1, y1, x2, y2) {\n return [\n ['M', x1, y1],\n ['L', x2, y2],\n ];\n}\nfunction ellipseToCommands(rx, ry, cx, cy) {\n var factor = ((-1 + Math.sqrt(2)) / 3) * 4;\n var dx = rx * factor;\n var dy = ry * factor;\n var left = cx - rx;\n var right = cx + rx;\n var top = cy - ry;\n var bottom = cy + ry;\n return [\n ['M', left, cy],\n ['C', left, cy - dy, cx - dx, top, cx, top],\n ['C', cx + dx, top, right, cy - dy, right, cy],\n ['C', right, cy + dy, cx + dx, bottom, cx, bottom],\n ['C', cx - dx, bottom, left, cy + dy, left, cy],\n ['Z'],\n ];\n}\nfunction polygonToCommands(points, closed) {\n var result = points.map(function (point, i) {\n return [i === 0 ? 'M' : 'L', point[0], point[1]];\n });\n if (closed) {\n result.push(['Z']);\n }\n return result;\n}\nfunction rectToCommands(width, height, x, y, radius) {\n // @see https://gist.github.com/danielpquinn/dd966af424030d47e476\n if (radius) {\n var _a = __read(radius, 4), tlr = _a[0], trr = _a[1], brr = _a[2], blr = _a[3];\n var signX = width > 0 ? 1 : -1;\n var signY = height > 0 ? 1 : -1;\n // sweep-flag @see https://developer.mozilla.org/zh-CN/docs/Web/SVG/Tutorial/Paths#arcs\n var sweepFlag = signX + signY !== 0 ? 1 : 0;\n return [\n ['M', signX * tlr + x, y],\n ['L', width - signX * trr + x, y],\n trr ? ['A', trr, trr, 0, 0, sweepFlag, width + x, signY * trr + y] : null,\n ['L', width + x, height - signY * brr + y],\n brr\n ? ['A', brr, brr, 0, 0, sweepFlag, width + x - signX * brr, height + y]\n : null,\n ['L', x + signX * blr, height + y],\n blr\n ? ['A', blr, blr, 0, 0, sweepFlag, x, height + y - signY * blr]\n : null,\n ['L', x, signY * tlr + y],\n tlr ? ['A', tlr, tlr, 0, 0, sweepFlag, signX * tlr + x, y] : null,\n ['Z'],\n ].filter(function (command) { return command; });\n }\n return [\n ['M', x, y],\n ['L', x + width, y],\n ['L', x + width, y + height],\n ['L', x, y + height],\n ['Z'],\n ];\n}\n/**\n * convert object to path, should account for:\n * * transform & origin\n * * anchor\n * * lineWidth\n */\nfunction convertToPath(object, transform) {\n if (transform === void 0) { transform = object.getLocalTransform(); }\n var commands = [];\n switch (object.nodeName) {\n case Shape.LINE:\n var _a = object.parsedStyle, _b = _a.x1, x1 = _b === void 0 ? 0 : _b, _c = _a.y1, y1 = _c === void 0 ? 0 : _c, _d = _a.x2, x2 = _d === void 0 ? 0 : _d, _e = _a.y2, y2 = _e === void 0 ? 0 : _e;\n commands = lineToCommands(x1, y1, x2, y2);\n break;\n case Shape.CIRCLE: {\n var _f = object.parsedStyle, _g = _f.r, r = _g === void 0 ? 0 : _g, _h = _f.cx, cx = _h === void 0 ? 0 : _h, _j = _f.cy, cy = _j === void 0 ? 0 : _j;\n commands = ellipseToCommands(r, r, cx, cy);\n break;\n }\n case Shape.ELLIPSE: {\n var _k = object.parsedStyle, _l = _k.rx, rx = _l === void 0 ? 0 : _l, _m = _k.ry, ry = _m === void 0 ? 0 : _m, _o = _k.cx, cx = _o === void 0 ? 0 : _o, _p = _k.cy, cy = _p === void 0 ? 0 : _p;\n commands = ellipseToCommands(rx, ry, cx, cy);\n break;\n }\n case Shape.POLYLINE:\n case Shape.POLYGON:\n var points = object.parsedStyle.points;\n commands = polygonToCommands(points.points, object.nodeName === Shape.POLYGON);\n break;\n case Shape.RECT:\n var _q = object.parsedStyle, _r = _q.width, width_1 = _r === void 0 ? 0 : _r, _s = _q.height, height_1 = _s === void 0 ? 0 : _s, _t = _q.x, x = _t === void 0 ? 0 : _t, _u = _q.y, y = _u === void 0 ? 0 : _u, radius = _q.radius;\n var hasRadius = radius && radius.some(function (r) { return r !== 0; });\n commands = rectToCommands(width_1, height_1, x, y, hasRadius &&\n radius.map(function (r) {\n return clamp(r, 0, Math.min(Math.abs(width_1) / 2, Math.abs(height_1) / 2));\n }));\n break;\n case Shape.PATH:\n var absolutePath = object.parsedStyle.path.absolutePath;\n commands = __spreadArray([], __read(absolutePath), false);\n break;\n }\n if (commands.length) {\n return commandsToPathString(commands, object, transform);\n }\n}\nfunction translatePathToString(absolutePath, defX, defY, startOffsetX, startOffsetY, endOffsetX, endOffsetY) {\n if (startOffsetX === void 0) { startOffsetX = 0; }\n if (startOffsetY === void 0) { startOffsetY = 0; }\n if (endOffsetX === void 0) { endOffsetX = 0; }\n if (endOffsetY === void 0) { endOffsetY = 0; }\n var newValue = absolutePath\n .map(function (params, i) {\n var command = params[0];\n var nextSegment = absolutePath[i + 1];\n var useStartOffset = i === 0 && (startOffsetX !== 0 || startOffsetY !== 0);\n var useEndOffset = (i === absolutePath.length - 1 ||\n (nextSegment &&\n (nextSegment[0] === 'M' || nextSegment[0] === 'Z'))) &&\n endOffsetX !== 0 &&\n endOffsetY !== 0;\n switch (command) {\n case 'M':\n // Use start marker offset\n if (useStartOffset) {\n return \"M \".concat(params[1] - defX + startOffsetX, \",\").concat(params[2] - defY + startOffsetY, \" L \").concat(params[1] - defX, \",\").concat(params[2] - defY);\n }\n else {\n return \"M \".concat(params[1] - defX, \",\").concat(params[2] - defY);\n }\n case 'L':\n return \"L \".concat(params[1] - defX + (useEndOffset ? endOffsetX : 0), \",\").concat(params[2] - defY + (useEndOffset ? endOffsetY : 0));\n case 'Q':\n return (\"Q \".concat(params[1] - defX, \" \").concat(params[2] - defY, \",\").concat(params[3] - defX, \" \").concat(params[4] - defY) +\n (useEndOffset\n ? \" L \".concat(params[3] - defX + endOffsetX, \",\").concat(params[4] - defY + endOffsetY)\n : ''));\n case 'C':\n return (\"C \".concat(params[1] - defX, \" \").concat(params[2] - defY, \",\").concat(params[3] - defX, \" \").concat(params[4] - defY, \",\").concat(params[5] - defX, \" \").concat(params[6] - defY) +\n (useEndOffset\n ? \" L \".concat(params[5] - defX + endOffsetX, \",\").concat(params[6] - defY + endOffsetY)\n : ''));\n case 'A':\n return (\"A \".concat(params[1], \" \").concat(params[2], \" \").concat(params[3], \" \").concat(params[4], \" \").concat(params[5], \" \").concat(params[6] - defX, \" \").concat(params[7] - defY) +\n (useEndOffset\n ? \" L \".concat(params[6] - defX + endOffsetX, \",\").concat(params[7] - defY + endOffsetY)\n : ''));\n case 'Z':\n return 'Z';\n }\n })\n .join(' ');\n if (~newValue.indexOf('NaN')) {\n return '';\n }\n return newValue;\n}\n\nvar internalParsePath = function (path) {\n // empty path\n if (path === '' || (Array.isArray(path) && path.length === 0)) {\n return {\n absolutePath: [],\n hasArc: false,\n segments: [],\n polygons: [],\n polylines: [],\n curve: null,\n totalLength: 0,\n rect: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n },\n };\n }\n var absolutePath;\n try {\n absolutePath = normalizePath(path);\n }\n catch (e) {\n absolutePath = normalizePath('');\n console.error(\"[g]: Invalid SVG Path definition: \".concat(path));\n }\n removeRedundantMCommand(absolutePath);\n var hasArc = hasArcOrBezier(absolutePath);\n var _a = extractPolygons(absolutePath), polygons = _a.polygons, polylines = _a.polylines;\n // for later use\n var segments = path2Segments(absolutePath);\n // Only calculate bbox here since we don't need length now.\n var _b = getPathBBox(segments, 0), x = _b.x, y = _b.y, width = _b.width, height = _b.height;\n return {\n absolutePath: absolutePath,\n hasArc: hasArc,\n segments: segments,\n polygons: polygons,\n polylines: polylines,\n // curve,\n // Delay the calculation of length.\n totalLength: 0,\n rect: {\n x: Number.isFinite(x) ? x : 0,\n y: Number.isFinite(y) ? y : 0,\n width: Number.isFinite(width) ? width : 0,\n height: Number.isFinite(height) ? height : 0,\n },\n };\n};\nvar memoizedParsePath = memoize(internalParsePath);\nfunction parsePath(path) {\n return (isString(path) ? memoizedParsePath(path) : internalParsePath(path));\n}\nfunction mergePaths(left, right, object) {\n var curve1 = left.curve;\n var curve2 = right.curve;\n if (!curve1 || curve1.length === 0) {\n // convert to curves to do morphing & picking later\n // @see http://thednp.github.io/kute.js/svgCubicMorph.html\n curve1 = path2Curve(left.absolutePath, false);\n left.curve = curve1;\n }\n if (!curve2 || curve2.length === 0) {\n curve2 = path2Curve(right.absolutePath, false);\n right.curve = curve2;\n }\n var curves = [curve1, curve2];\n if (curve1.length !== curve2.length) {\n curves = equalizeSegments(curve1, curve2);\n }\n var curve0 = getDrawDirection(curves[0]) !== getDrawDirection(curves[1])\n ? reverseCurve(curves[0])\n : clonePath(curves[0]);\n return [\n curve0,\n getRotatedCurve(curves[1], curve0),\n function (pathArray) {\n // need converting to path string?\n return pathArray;\n },\n ];\n}\n\n/**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/SVG/Attribute/points\n *\n * @example\n * points=\"100,10 250,150 200,110\"\n */\nfunction parsePoints(pointsOrStr, object) {\n var points;\n if (isString(pointsOrStr)) {\n points = pointsOrStr.split(' ').map(function (pointStr) {\n var _a = __read(pointStr.split(','), 2), x = _a[0], y = _a[1];\n return [Number(x), Number(y)];\n });\n }\n else {\n points = pointsOrStr;\n }\n var segments = [];\n var tempLength = 0;\n var segmentT;\n var segmentL;\n var totalLength = polylineLength(points);\n points.forEach(function (p, i) {\n if (points[i + 1]) {\n segmentT = [0, 0];\n segmentT[0] = tempLength / totalLength;\n segmentL = lineLength(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n segments.push(segmentT);\n }\n });\n var minX = Math.min.apply(Math, __spreadArray([], __read(points.map(function (point) { return point[0]; })), false));\n var minY = Math.min.apply(Math, __spreadArray([], __read(points.map(function (point) { return point[1]; })), false));\n if (object) {\n object.parsedStyle.defX = minX;\n object.parsedStyle.defY = minY;\n }\n return {\n points: points,\n totalLength: totalLength,\n segments: segments,\n };\n}\nfunction mergePoints(left, right) {\n return [\n left.points,\n right.points,\n function (points) {\n return points;\n },\n ];\n}\n\nvar _ = null;\nfunction cast(pattern) {\n return function (contents) {\n var i = 0;\n return pattern.map(function (x) {\n return x === _ ? contents[i++] : x;\n });\n };\n}\nfunction id(x) {\n return x;\n}\n// type: [argTypes, convertTo3D, convertTo2D]\n// In the argument types string, lowercase characters represent optional arguments\nvar transformFunctions = {\n // @ts-ignore\n matrix: ['NNNNNN', [_, _, 0, 0, _, _, 0, 0, 0, 0, 1, 0, _, _, 0, 1], id],\n matrix3d: ['NNNNNNNNNNNNNNNN', id],\n rotate: ['A'],\n rotatex: ['A'],\n rotatey: ['A'],\n rotatez: ['A'],\n rotate3d: ['NNNA'],\n perspective: ['L'],\n scale: ['Nn', cast([_, _, new CSSUnitValue(1)]), id],\n scalex: [\n 'N',\n cast([_, new CSSUnitValue(1), new CSSUnitValue(1)]),\n cast([_, new CSSUnitValue(1)]),\n ],\n scaley: [\n 'N',\n cast([new CSSUnitValue(1), _, new CSSUnitValue(1)]),\n cast([new CSSUnitValue(1), _]),\n ],\n scalez: ['N', cast([new CSSUnitValue(1), new CSSUnitValue(1), _])],\n scale3d: ['NNN', id],\n skew: ['Aa', null, id],\n skewx: ['A', null, cast([_, Odeg])],\n skewy: ['A', null, cast([Odeg, _])],\n translate: ['Tt', cast([_, _, Opx]), id],\n translatex: ['T', cast([_, Opx, Opx]), cast([_, Opx])],\n translatey: ['T', cast([Opx, _, Opx]), cast([Opx, _])],\n translatez: ['L', cast([Opx, Opx, _])],\n translate3d: ['TTL', id],\n};\n/**\n * none\n * scale(1) scale(1, 2)\n * scaleX(1)\n */\nfunction parseTransform(string) {\n string = (string || 'none').toLowerCase().trim();\n if (string === 'none') {\n return [];\n }\n var transformRegExp = /\\s*(\\w+)\\(([^)]*)\\)/g;\n var result = [];\n var match;\n var prevLastIndex = 0;\n while ((match = transformRegExp.exec(string))) {\n if (match.index !== prevLastIndex) {\n return [];\n }\n prevLastIndex = match.index + match[0].length;\n var functionName = match[1]; // scale\n var functionData = transformFunctions[functionName]; // scale(1, 2)\n if (!functionData) {\n // invalid, eg. scale()\n return [];\n }\n var args = match[2].split(','); // 1,2\n var argTypes = functionData[0]; // Nn\n if (argTypes.length < args.length) {\n // scale(N, n)\n return [];\n }\n var parsedArgs = [];\n for (var i = 0; i < argTypes.length; i++) {\n var arg = args[i];\n var type = argTypes[i];\n var parsedArg = void 0;\n if (!arg) {\n // @ts-ignore\n parsedArg = {\n a: Odeg,\n n: parsedArgs[0],\n t: Opx,\n }[type];\n }\n else {\n // @ts-ignore\n parsedArg = {\n A: function (s) {\n return s.trim() === '0' ? Odeg : parseAngle(s);\n },\n N: parseNumber,\n T: parseLengthOrPercentage,\n L: parseLength,\n }[type.toUpperCase()](arg);\n }\n if (parsedArg === undefined) {\n return [];\n }\n parsedArgs.push(parsedArg);\n }\n result.push({ t: functionName, d: parsedArgs }); // { t: scale, d: [1, 2] }\n if (transformRegExp.lastIndex === string.length) {\n return result;\n }\n }\n return [];\n}\nfunction parseTransformUnmemoize(string) {\n string = (string || 'none').toLowerCase().trim();\n if (string === 'none') {\n return [];\n }\n var transformRegExp = /\\s*(\\w+)\\(([^)]*)\\)/g;\n var result = [];\n var match;\n var prevLastIndex = 0;\n while ((match = transformRegExp.exec(string))) {\n if (match.index !== prevLastIndex) {\n return [];\n }\n prevLastIndex = match.index + match[0].length;\n var functionName = match[1]; // scale\n var functionData = transformFunctions[functionName]; // scale(1, 2)\n if (!functionData) {\n // invalid, eg. scale()\n return [];\n }\n var args = match[2].split(','); // 1,2\n var argTypes = functionData[0]; // Nn\n if (argTypes.length < args.length) {\n // scale(N, n)\n return [];\n }\n var parsedArgs = [];\n for (var i = 0; i < argTypes.length; i++) {\n var arg = args[i];\n var type = argTypes[i];\n var parsedArg = void 0;\n if (!arg) {\n // @ts-ignore\n parsedArg = {\n a: Odeg,\n n: parsedArgs[0],\n t: Opx,\n }[type];\n }\n else {\n // @ts-ignore\n parsedArg = {\n A: function (s) {\n return s.trim() === '0' ? Odeg : parseAngleUnmemoize(s);\n },\n N: parseNumberUnmemoize,\n T: parseLengthOrPercentageUnmemoize,\n L: parseLengthUnmemoize,\n }[type.toUpperCase()](arg);\n }\n if (parsedArg === undefined) {\n return [];\n }\n parsedArgs.push(parsedArg);\n }\n result.push({ t: functionName, d: parsedArgs }); // { t: scale, d: [1, 2] }\n if (transformRegExp.lastIndex === string.length) {\n return result;\n }\n }\n return [];\n}\nfunction convertItemToMatrix(item) {\n var x;\n var y;\n var z;\n var angle;\n switch (item.t) {\n case 'rotatex':\n angle = deg2rad(convertAngleUnit(item.d[0]));\n return [\n 1,\n 0,\n 0,\n 0,\n 0,\n Math.cos(angle),\n Math.sin(angle),\n 0,\n 0,\n -Math.sin(angle),\n Math.cos(angle),\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n case 'rotatey':\n angle = deg2rad(convertAngleUnit(item.d[0]));\n return [\n Math.cos(angle),\n 0,\n -Math.sin(angle),\n 0,\n 0,\n 1,\n 0,\n 0,\n Math.sin(angle),\n 0,\n Math.cos(angle),\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n case 'rotate':\n case 'rotatez':\n angle = deg2rad(convertAngleUnit(item.d[0]));\n return [\n Math.cos(angle),\n Math.sin(angle),\n 0,\n 0,\n -Math.sin(angle),\n Math.cos(angle),\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n case 'rotate3d':\n x = item.d[0].value;\n y = item.d[1].value;\n z = item.d[2].value;\n angle = deg2rad(convertAngleUnit(item.d[3]));\n var sqrLength = x * x + y * y + z * z;\n if (sqrLength === 0) {\n x = 1;\n y = 0;\n z = 0;\n }\n else if (sqrLength !== 1) {\n var length_1 = Math.sqrt(sqrLength);\n x /= length_1;\n y /= length_1;\n z /= length_1;\n }\n var s = Math.sin(angle / 2);\n var sc = s * Math.cos(angle / 2);\n var sq = s * s;\n return [\n 1 - 2 * (y * y + z * z) * sq,\n 2 * (x * y * sq + z * sc),\n 2 * (x * z * sq - y * sc),\n 0,\n 2 * (x * y * sq - z * sc),\n 1 - 2 * (x * x + z * z) * sq,\n 2 * (y * z * sq + x * sc),\n 0,\n 2 * (x * z * sq + y * sc),\n 2 * (y * z * sq - x * sc),\n 1 - 2 * (x * x + y * y) * sq,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n case 'scale':\n return [\n item.d[0].value,\n 0,\n 0,\n 0,\n 0,\n item.d[1].value,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n case 'scalex':\n return [item.d[0].value, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n case 'scaley':\n return [1, 0, 0, 0, 0, item.d[0].value, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n case 'scalez':\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, item.d[0].value, 0, 0, 0, 0, 1];\n case 'scale3d':\n return [\n item.d[0].value,\n 0,\n 0,\n 0,\n 0,\n item.d[1].value,\n 0,\n 0,\n 0,\n 0,\n item.d[2].value,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n case 'skew':\n var xAngle = deg2rad(convertAngleUnit(item.d[0]));\n var yAngle = deg2rad(convertAngleUnit(item.d[1]));\n return [\n 1,\n Math.tan(yAngle),\n 0,\n 0,\n Math.tan(xAngle),\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n case 'skewx':\n angle = deg2rad(convertAngleUnit(item.d[0]));\n return [1, 0, 0, 0, Math.tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n case 'skewy':\n angle = deg2rad(convertAngleUnit(item.d[0]));\n return [1, Math.tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n case 'translate':\n // TODO: pass target\n x = convertPercentUnit(item.d[0], 0, null) || 0;\n y = convertPercentUnit(item.d[1], 0, null) || 0;\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, 0, 1];\n case 'translatex':\n x = convertPercentUnit(item.d[0], 0, null) || 0;\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, 0, 0, 1];\n case 'translatey':\n y = convertPercentUnit(item.d[0], 0, null) || 0;\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, y, 0, 1];\n case 'translatez':\n z = convertPercentUnit(item.d[0], 0, null) || 0;\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, z, 1];\n case 'translate3d':\n x = convertPercentUnit(item.d[0], 0, null) || 0;\n y = convertPercentUnit(item.d[1], 0, null) || 0;\n z = convertPercentUnit(item.d[2], 0, null) || 0;\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1];\n case 'perspective':\n var t = convertPercentUnit(item.d[0], 0, null) || 0;\n var p = t ? -1 / t : 0;\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, p, 0, 0, 0, 1];\n case 'matrix':\n return [\n item.d[0].value,\n item.d[1].value,\n 0,\n 0,\n item.d[2].value,\n item.d[3].value,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n item.d[4].value,\n item.d[5].value,\n 0,\n 1,\n ];\n case 'matrix3d':\n return item.d.map(function (d) { return d.value; });\n }\n}\nfunction multiplyMatrices(a, b) {\n return [\n a[0] * b[0] + a[4] * b[1] + a[8] * b[2] + a[12] * b[3],\n a[1] * b[0] + a[5] * b[1] + a[9] * b[2] + a[13] * b[3],\n a[2] * b[0] + a[6] * b[1] + a[10] * b[2] + a[14] * b[3],\n a[3] * b[0] + a[7] * b[1] + a[11] * b[2] + a[15] * b[3],\n a[0] * b[4] + a[4] * b[5] + a[8] * b[6] + a[12] * b[7],\n a[1] * b[4] + a[5] * b[5] + a[9] * b[6] + a[13] * b[7],\n a[2] * b[4] + a[6] * b[5] + a[10] * b[6] + a[14] * b[7],\n a[3] * b[4] + a[7] * b[5] + a[11] * b[6] + a[15] * b[7],\n a[0] * b[8] + a[4] * b[9] + a[8] * b[10] + a[12] * b[11],\n a[1] * b[8] + a[5] * b[9] + a[9] * b[10] + a[13] * b[11],\n a[2] * b[8] + a[6] * b[9] + a[10] * b[10] + a[14] * b[11],\n a[3] * b[8] + a[7] * b[9] + a[11] * b[10] + a[15] * b[11],\n a[0] * b[12] + a[4] * b[13] + a[8] * b[14] + a[12] * b[15],\n a[1] * b[12] + a[5] * b[13] + a[9] * b[14] + a[13] * b[15],\n a[2] * b[12] + a[6] * b[13] + a[10] * b[14] + a[14] * b[15],\n a[3] * b[12] + a[7] * b[13] + a[11] * b[14] + a[15] * b[15],\n ];\n}\nfunction convertToMatrix(transformList) {\n if (transformList.length === 0) {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n }\n return transformList.map(convertItemToMatrix).reduce(multiplyMatrices);\n}\nfunction makeMatrixDecomposition(transformList) {\n var translate = [0, 0, 0];\n var scale = [1, 1, 1];\n var skew = [0, 0, 0];\n var perspective = [0, 0, 0, 1];\n var quaternion = [0, 0, 0, 1];\n decomposeMat4(\n // @ts-ignore\n convertToMatrix(transformList), translate, scale, skew, perspective, quaternion);\n return [[translate, scale, skew, quaternion, perspective]];\n}\nvar composeMatrix = (function () {\n function multiply(a, b) {\n var result = [\n [0, 0, 0, 0],\n [0, 0, 0, 0],\n [0, 0, 0, 0],\n [0, 0, 0, 0],\n ];\n for (var i = 0; i < 4; i++) {\n for (var j = 0; j < 4; j++) {\n for (var k = 0; k < 4; k++) {\n result[i][j] += b[i][k] * a[k][j];\n }\n }\n }\n return result;\n }\n function is2D(m) {\n return (m[0][2] == 0 &&\n m[0][3] == 0 &&\n m[1][2] == 0 &&\n m[1][3] == 0 &&\n m[2][0] == 0 &&\n m[2][1] == 0 &&\n m[2][2] == 1 &&\n m[2][3] == 0 &&\n m[3][2] == 0 &&\n m[3][3] == 1);\n }\n function composeMatrix(translate, scale, skew, quat, perspective) {\n var matrix = [\n [1, 0, 0, 0],\n [0, 1, 0, 0],\n [0, 0, 1, 0],\n [0, 0, 0, 1],\n ];\n for (var i = 0; i < 4; i++) {\n matrix[i][3] = perspective[i];\n }\n for (var i = 0; i < 3; i++) {\n for (var j = 0; j < 3; j++) {\n matrix[3][i] += translate[j] * matrix[j][i];\n }\n }\n var x = quat[0], y = quat[1], z = quat[2], w = quat[3];\n var rotMatrix = [\n [1, 0, 0, 0],\n [0, 1, 0, 0],\n [0, 0, 1, 0],\n [0, 0, 0, 1],\n ];\n rotMatrix[0][0] = 1 - 2 * (y * y + z * z);\n rotMatrix[0][1] = 2 * (x * y - z * w);\n rotMatrix[0][2] = 2 * (x * z + y * w);\n rotMatrix[1][0] = 2 * (x * y + z * w);\n rotMatrix[1][1] = 1 - 2 * (x * x + z * z);\n rotMatrix[1][2] = 2 * (y * z - x * w);\n rotMatrix[2][0] = 2 * (x * z - y * w);\n rotMatrix[2][1] = 2 * (y * z + x * w);\n rotMatrix[2][2] = 1 - 2 * (x * x + y * y);\n matrix = multiply(matrix, rotMatrix);\n var temp = [\n [1, 0, 0, 0],\n [0, 1, 0, 0],\n [0, 0, 1, 0],\n [0, 0, 0, 1],\n ];\n if (skew[2]) {\n temp[2][1] = skew[2];\n matrix = multiply(matrix, temp);\n }\n if (skew[1]) {\n temp[2][1] = 0;\n temp[2][0] = skew[0];\n matrix = multiply(matrix, temp);\n }\n if (skew[0]) {\n temp[2][0] = 0;\n temp[1][0] = skew[0];\n matrix = multiply(matrix, temp);\n }\n for (var i = 0; i < 3; i++) {\n for (var j = 0; j < 3; j++) {\n matrix[i][j] *= scale[i];\n }\n }\n if (is2D(matrix)) {\n return [\n matrix[0][0],\n matrix[0][1],\n matrix[1][0],\n matrix[1][1],\n matrix[3][0],\n matrix[3][1],\n ];\n }\n return matrix[0].concat(matrix[1], matrix[2], matrix[3]);\n }\n return composeMatrix;\n})();\nfunction numberToLongString(x) {\n return x.toFixed(6).replace('.000000', '');\n}\nfunction mergeMatrices(left, right) {\n var leftArgs;\n var rightArgs;\n // @ts-ignore\n if (left.decompositionPair !== right) {\n // @ts-ignore\n left.decompositionPair = right;\n // @ts-ignore\n leftArgs = makeMatrixDecomposition(left);\n }\n // @ts-ignore\n if (right.decompositionPair !== left) {\n // @ts-ignore\n right.decompositionPair = left;\n // @ts-ignore\n rightArgs = makeMatrixDecomposition(right);\n }\n if (leftArgs[0] === null || rightArgs[0] === null)\n return [\n // @ts-ignore\n [false],\n // @ts-ignore\n [true],\n // @ts-ignore\n function (x) {\n return x ? right[0].d : left[0].d;\n },\n ];\n leftArgs[0].push(0);\n rightArgs[0].push(1);\n return [\n leftArgs,\n rightArgs,\n // @ts-ignore\n function (list) {\n // @ts-ignore\n var q = quat(leftArgs[0][3], rightArgs[0][3], list[5]);\n var mat = composeMatrix(list[0], list[1], list[2], q, list[4]);\n var stringifiedArgs = mat.map(numberToLongString).join(',');\n return stringifiedArgs;\n },\n ];\n}\nfunction dot(v1, v2) {\n var result = 0;\n for (var i = 0; i < v1.length; i++) {\n result += v1[i] * v2[i];\n }\n return result;\n}\nfunction quat(fromQ, toQ, f) {\n var product = dot(fromQ, toQ);\n product = clamp(product, -1.0, 1.0);\n var quat = [];\n if (product === 1.0) {\n quat = fromQ;\n }\n else {\n var theta = Math.acos(product);\n var w = (Math.sin(f * theta) * 1) / Math.sqrt(1 - product * product);\n for (var i = 0; i < 4; i++) {\n quat.push(fromQ[i] * (Math.cos(f * theta) - product * w) + toQ[i] * w);\n }\n }\n return quat;\n}\n// scalex/y/z -> scale\nfunction typeTo2D(type) {\n return type.replace(/[xy]/, '');\n}\n// scalex/y/z -> scale3d\nfunction typeTo3D(type) {\n return type.replace(/(x|y|z|3d)?$/, '3d');\n}\nvar isMatrixOrPerspective = function (lt, rt) {\n return ((lt === 'perspective' && rt === 'perspective') ||\n ((lt === 'matrix' || lt === 'matrix3d') &&\n (rt === 'matrix' || rt === 'matrix3d')));\n};\nfunction mergeTransforms(left, right, target) {\n var flipResults = false;\n // padding empty transform, eg. merge 'scale(10)' with 'none' -> scale(1)\n if (!left.length || !right.length) {\n if (!left.length) {\n flipResults = true;\n left = right;\n right = [];\n }\n var _loop_1 = function (i) {\n var _a = left[i], type = _a.t, args = _a.d;\n // none -> scale(1)/translateX(0)\n var defaultValue = type.substring(0, 5) === 'scale' ? 1 : 0;\n right.push({\n t: type,\n d: args.map(function (arg) {\n if (typeof arg === 'number') {\n return getOrCreateUnitValue(defaultValue);\n }\n return getOrCreateUnitValue(defaultValue, arg.unit);\n // {\n // unit: arg.unit,\n // value: defaultValue,\n // };\n }),\n });\n };\n for (var i = 0; i < left.length; i++) {\n _loop_1(i);\n }\n }\n var leftResult = [];\n var rightResult = [];\n var types = [];\n // merge matrix() with matrix3d()\n if (left.length !== right.length) {\n var merged = mergeMatrices(left, right);\n // @ts-ignore\n leftResult = [merged[0]];\n // @ts-ignore\n rightResult = [merged[1]];\n types = [['matrix', [merged[2]]]];\n }\n else {\n for (var i = 0; i < left.length; i++) {\n var leftType = left[i].t;\n var rightType = right[i].t;\n var leftArgs = left[i].d;\n var rightArgs = right[i].d;\n var leftFunctionData = transformFunctions[leftType];\n var rightFunctionData = transformFunctions[rightType];\n var type = void 0;\n if (isMatrixOrPerspective(leftType, rightType)) {\n var merged = mergeMatrices([left[i]], [right[i]]);\n // @ts-ignore\n leftResult.push(merged[0]);\n // @ts-ignore\n rightResult.push(merged[1]);\n types.push(['matrix', [merged[2]]]);\n continue;\n }\n else if (leftType === rightType) {\n type = leftType;\n }\n else if (leftFunctionData[2] &&\n rightFunctionData[2] &&\n typeTo2D(leftType) === typeTo2D(rightType)) {\n type = typeTo2D(leftType);\n // @ts-ignore\n leftArgs = leftFunctionData[2](leftArgs);\n // @ts-ignore\n rightArgs = rightFunctionData[2](rightArgs);\n }\n else if (leftFunctionData[1] &&\n rightFunctionData[1] &&\n typeTo3D(leftType) === typeTo3D(rightType)) {\n type = typeTo3D(leftType);\n // @ts-ignore\n leftArgs = leftFunctionData[1](leftArgs);\n // @ts-ignore\n rightArgs = rightFunctionData[1](rightArgs);\n }\n else {\n var merged = mergeMatrices(left, right);\n // @ts-ignore\n leftResult = [merged[0]];\n // @ts-ignore\n rightResult = [merged[1]];\n types = [['matrix', [merged[2]]]];\n break;\n }\n var leftArgsCopy = [];\n var rightArgsCopy = [];\n var stringConversions = [];\n for (var j = 0; j < leftArgs.length; j++) {\n // const merge = leftArgs[j].unit === UnitType.kNumber ? mergeDimensions : mergeDimensions;\n var merged = mergeDimensions(leftArgs[j], rightArgs[j], target, false, j);\n leftArgsCopy[j] = merged[0];\n rightArgsCopy[j] = merged[1];\n stringConversions.push(merged[2]);\n }\n leftResult.push(leftArgsCopy);\n rightResult.push(rightArgsCopy);\n types.push([type, stringConversions]);\n }\n }\n if (flipResults) {\n var tmp = leftResult;\n leftResult = rightResult;\n rightResult = tmp;\n }\n return [\n leftResult,\n rightResult,\n function (list) {\n return list\n .map(function (args, i) {\n var stringifiedArgs = args\n .map(function (arg, j) {\n return types[i][1][j](arg);\n })\n .join(',');\n if (types[i][0] === 'matrix' &&\n stringifiedArgs.split(',').length === 16) {\n types[i][0] = 'matrix3d';\n }\n if (types[i][0] === 'matrix3d' &&\n stringifiedArgs.split(',').length === 6) {\n types[i][0] = 'matrix';\n }\n return types[i][0] + '(' + stringifiedArgs + ')';\n })\n .join(' ');\n },\n ];\n}\n\n/**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/transform-origin\n * eg. 'center' 'top left' '50px 50px'\n */\nvar parseTransformOrigin = memoize(function (value) {\n if (isString(value)) {\n if (value === 'text-anchor') {\n return [getOrCreateUnitValue(0, 'px'), getOrCreateUnitValue(0, 'px')];\n }\n var values = value.split(' ');\n if (values.length === 1) {\n if (values[0] === 'top' || values[0] === 'bottom') {\n // 'top' -> 'center top'\n values[1] = values[0];\n values[0] = 'center';\n }\n else {\n // '50px' -> '50px center'\n values[1] = 'center';\n }\n }\n if (values.length !== 2) {\n return null;\n }\n // eg. center bottom\n return [\n parseLengthOrPercentage(convertKeyword2Percent(values[0])),\n parseLengthOrPercentage(convertKeyword2Percent(values[1])),\n ];\n }\n else {\n return [\n getOrCreateUnitValue(value[0] || 0, 'px'),\n getOrCreateUnitValue(value[1] || 0, 'px'),\n ];\n }\n});\nvar parseTransformOriginUnmemoize = function (value) {\n if (isString(value)) {\n if (value === 'text-anchor') {\n return [getOrCreateUnitValue(0, 'px'), getOrCreateUnitValue(0, 'px')];\n }\n var values = value.split(' ');\n if (values.length === 1) {\n if (values[0] === 'top' || values[0] === 'bottom') {\n // 'top' -> 'center top'\n values[1] = values[0];\n values[0] = 'center';\n }\n else {\n // '50px' -> '50px center'\n values[1] = 'center';\n }\n }\n if (values.length !== 2) {\n return null;\n }\n // eg. center bottom\n return [\n parseLengthOrPercentageUnmemoize(convertKeyword2Percent(values[0])),\n parseLengthOrPercentageUnmemoize(convertKeyword2Percent(values[1])),\n ];\n }\n else {\n return [\n getOrCreateUnitValue(value[0] || 0, 'px'),\n getOrCreateUnitValue(value[1] || 0, 'px'),\n ];\n }\n};\nfunction convertKeyword2Percent(keyword) {\n if (keyword === 'center') {\n return '50%';\n }\n else if (keyword === 'left' || keyword === 'top') {\n return '0';\n }\n else if (keyword === 'right' || keyword === 'bottom') {\n return '100%';\n }\n return keyword;\n}\n\n/**\n * Blink used them in code generation(css_properties.json5)\n */\nvar BUILT_IN_PROPERTIES = [\n {\n /**\n * used in CSS Layout API\n * eg. `display: 'flex'`\n */\n n: 'display',\n k: ['none'],\n },\n {\n /**\n * range [0.0, 1.0]\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/opacity\n */\n n: 'opacity',\n int: true,\n inh: true,\n d: '1',\n syntax: PropertySyntax.OPACITY_VALUE,\n },\n {\n /**\n * inheritable, range [0.0, 1.0]\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-opacity\n * @see https://svgwg.org/svg2-draft/painting.html#FillOpacity\n */\n n: 'fillOpacity',\n int: true,\n inh: true,\n d: '1',\n syntax: PropertySyntax.OPACITY_VALUE,\n },\n {\n /**\n * inheritable, range [0.0, 1.0]\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-opacity\n * @see https://svgwg.org/svg2-draft/painting.html#StrokeOpacity\n */\n n: 'strokeOpacity',\n int: true,\n inh: true,\n d: '1',\n syntax: PropertySyntax.OPACITY_VALUE,\n },\n {\n /**\n * background-color is not inheritable\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Fills_and_Strokes\n */\n n: 'fill',\n int: true,\n k: ['none'],\n d: 'none',\n syntax: PropertySyntax.PAINT,\n },\n {\n n: 'fillRule',\n k: ['nonzero', 'evenodd'],\n d: 'nonzero',\n },\n /**\n * default to none\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke#usage_notes\n */\n {\n n: 'stroke',\n int: true,\n k: ['none'],\n d: 'none',\n syntax: PropertySyntax.PAINT,\n /**\n * Stroke 'none' won't affect geometry but others will.\n */\n l: true,\n },\n {\n n: 'shadowType',\n k: ['inner', 'outer', 'both'],\n d: 'outer',\n l: true,\n },\n {\n n: 'shadowColor',\n int: true,\n syntax: PropertySyntax.COLOR,\n },\n {\n n: 'shadowOffsetX',\n int: true,\n l: true,\n d: '0',\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'shadowOffsetY',\n int: true,\n l: true,\n d: '0',\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'shadowBlur',\n int: true,\n l: true,\n d: '0',\n syntax: PropertySyntax.SHADOW_BLUR,\n },\n {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width\n */\n n: 'lineWidth',\n int: true,\n inh: true,\n d: '1',\n l: true,\n a: ['strokeWidth'],\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'increasedLineWidthForHitTesting',\n inh: true,\n d: '0',\n l: true,\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'lineJoin',\n inh: true,\n l: true,\n a: ['strokeLinejoin'],\n k: ['miter', 'bevel', 'round'],\n d: 'miter',\n },\n {\n n: 'lineCap',\n inh: true,\n l: true,\n a: ['strokeLinecap'],\n k: ['butt', 'round', 'square'],\n d: 'butt',\n },\n {\n n: 'lineDash',\n int: true,\n inh: true,\n k: ['none'],\n a: ['strokeDasharray'],\n syntax: PropertySyntax.LENGTH_PERCENTAGE_12,\n },\n {\n n: 'lineDashOffset',\n int: true,\n inh: true,\n d: '0',\n a: ['strokeDashoffset'],\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'offsetPath',\n syntax: PropertySyntax.DEFINED_PATH,\n },\n {\n n: 'offsetDistance',\n int: true,\n syntax: PropertySyntax.OFFSET_DISTANCE,\n },\n {\n n: 'dx',\n int: true,\n l: true,\n d: '0',\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'dy',\n int: true,\n l: true,\n d: '0',\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'zIndex',\n ind: true,\n int: true,\n d: '0',\n k: ['auto'],\n syntax: PropertySyntax.Z_INDEX,\n },\n {\n n: 'visibility',\n k: ['visible', 'hidden'],\n ind: true,\n inh: true,\n /**\n * support interpolation\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/visibility#interpolation\n */\n int: true,\n d: 'visible',\n },\n {\n n: 'pointerEvents',\n inh: true,\n k: [\n 'none',\n 'auto',\n 'stroke',\n 'fill',\n 'painted',\n 'visible',\n 'visiblestroke',\n 'visiblefill',\n 'visiblepainted',\n // 'bounding-box',\n 'all',\n ],\n d: 'auto',\n },\n {\n n: 'filter',\n ind: true,\n l: true,\n k: ['none'],\n d: 'none',\n syntax: PropertySyntax.FILTER,\n },\n {\n n: 'clipPath',\n syntax: PropertySyntax.DEFINED_PATH,\n },\n {\n n: 'textPath',\n syntax: PropertySyntax.DEFINED_PATH,\n },\n {\n n: 'textPathSide',\n k: ['left', 'right'],\n d: 'left',\n },\n {\n n: 'textPathStartOffset',\n l: true,\n d: '0',\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'transform',\n p: 100,\n int: true,\n k: ['none'],\n d: 'none',\n syntax: PropertySyntax.TRANSFORM,\n },\n {\n n: 'transformOrigin',\n p: 100,\n // int: true,\n d: function (nodeName) {\n if (nodeName === Shape.CIRCLE || nodeName === Shape.ELLIPSE) {\n return 'center';\n }\n if (nodeName === Shape.TEXT) {\n return 'text-anchor';\n }\n return 'left top';\n },\n l: true,\n syntax: PropertySyntax.TRANSFORM_ORIGIN,\n },\n {\n n: 'anchor',\n p: 99,\n d: function (nodeName) {\n if (nodeName === Shape.CIRCLE || nodeName === Shape.ELLIPSE) {\n return '0.5 0.5';\n }\n return '0 0';\n },\n l: true,\n syntax: PropertySyntax.LENGTH_PERCENTAGE_12,\n },\n // & \n {\n n: 'cx',\n int: true,\n d: '0',\n syntax: PropertySyntax.COORDINATE,\n },\n {\n n: 'cy',\n int: true,\n d: '0',\n syntax: PropertySyntax.COORDINATE,\n },\n {\n n: 'cz',\n int: true,\n d: '0',\n syntax: PropertySyntax.COORDINATE,\n },\n {\n n: 'r',\n int: true,\n l: true,\n d: '0',\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'rx',\n int: true,\n l: true,\n d: '0',\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'ry',\n int: true,\n l: true,\n d: '0',\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n // Rect Image Group\n {\n // x in local space\n n: 'x',\n int: true,\n d: '0',\n syntax: PropertySyntax.COORDINATE,\n },\n {\n // y in local space\n n: 'y',\n int: true,\n d: '0',\n syntax: PropertySyntax.COORDINATE,\n },\n {\n // z in local space\n n: 'z',\n int: true,\n d: '0',\n syntax: PropertySyntax.COORDINATE,\n },\n {\n n: 'width',\n int: true,\n l: true,\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/width\n */\n k: ['auto', 'fit-content', 'min-content', 'max-content'],\n d: '0',\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'height',\n int: true,\n l: true,\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/height\n */\n k: ['auto', 'fit-content', 'min-content', 'max-content'],\n d: '0',\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'radius',\n int: true,\n l: true,\n d: '0',\n syntax: PropertySyntax.LENGTH_PERCENTAGE_14,\n },\n // Line\n {\n n: 'x1',\n int: true,\n l: true,\n syntax: PropertySyntax.COORDINATE,\n },\n {\n n: 'y1',\n int: true,\n l: true,\n syntax: PropertySyntax.COORDINATE,\n },\n {\n n: 'z1',\n int: true,\n l: true,\n syntax: PropertySyntax.COORDINATE,\n },\n {\n n: 'x2',\n int: true,\n l: true,\n syntax: PropertySyntax.COORDINATE,\n },\n {\n n: 'y2',\n int: true,\n l: true,\n syntax: PropertySyntax.COORDINATE,\n },\n {\n n: 'z2',\n int: true,\n l: true,\n syntax: PropertySyntax.COORDINATE,\n },\n // Path\n {\n n: 'path',\n int: true,\n l: true,\n d: '',\n a: ['d'],\n syntax: PropertySyntax.PATH,\n p: 50,\n },\n // Polyline & Polygon\n {\n n: 'points',\n /**\n * support interpolation\n */\n int: true,\n l: true,\n syntax: PropertySyntax.LIST_OF_POINTS,\n p: 50,\n },\n // Text\n {\n n: 'text',\n l: true,\n d: '',\n syntax: PropertySyntax.TEXT,\n p: 50,\n },\n {\n n: 'textTransform',\n l: true,\n inh: true,\n k: ['capitalize', 'uppercase', 'lowercase', 'none'],\n d: 'none',\n syntax: PropertySyntax.TEXT_TRANSFORM,\n p: 51, // it must get parsed after text\n },\n {\n n: 'font',\n l: true,\n },\n {\n n: 'fontSize',\n int: true,\n inh: true,\n /**\n * @see https://www.w3schools.com/css/css_font_size.asp\n */\n d: '16px',\n l: true,\n syntax: PropertySyntax.LENGTH_PERCENTAGE,\n },\n {\n n: 'fontFamily',\n l: true,\n inh: true,\n d: 'sans-serif',\n },\n {\n n: 'fontStyle',\n l: true,\n inh: true,\n k: ['normal', 'italic', 'oblique'],\n d: 'normal',\n },\n {\n n: 'fontWeight',\n l: true,\n inh: true,\n k: ['normal', 'bold', 'bolder', 'lighter'],\n d: 'normal',\n },\n {\n n: 'fontVariant',\n l: true,\n inh: true,\n k: ['normal', 'small-caps'],\n d: 'normal',\n },\n {\n n: 'lineHeight',\n l: true,\n syntax: PropertySyntax.LENGTH,\n int: true,\n d: '0',\n },\n {\n n: 'letterSpacing',\n l: true,\n syntax: PropertySyntax.LENGTH,\n int: true,\n d: '0',\n },\n {\n n: 'miterLimit',\n l: true,\n syntax: PropertySyntax.NUMBER,\n d: function (nodeName) {\n if (nodeName === Shape.PATH ||\n nodeName === Shape.POLYGON ||\n nodeName === Shape.POLYLINE) {\n return '4';\n }\n return '10';\n },\n },\n {\n n: 'wordWrap',\n l: true,\n },\n {\n n: 'wordWrapWidth',\n l: true,\n },\n {\n n: 'maxLines',\n l: true,\n },\n {\n n: 'textOverflow',\n l: true,\n d: 'clip',\n },\n {\n n: 'leading',\n l: true,\n },\n {\n n: 'textBaseline',\n l: true,\n inh: true,\n k: ['top', 'hanging', 'middle', 'alphabetic', 'ideographic', 'bottom'],\n d: 'alphabetic',\n },\n {\n n: 'textAlign',\n l: true,\n inh: true,\n k: ['start', 'center', 'middle', 'end', 'left', 'right'],\n d: 'start',\n },\n // {\n // n: 'whiteSpace',\n // l: true,\n // },\n {\n n: 'markerStart',\n syntax: PropertySyntax.MARKER,\n },\n {\n n: 'markerEnd',\n syntax: PropertySyntax.MARKER,\n },\n {\n n: 'markerMid',\n syntax: PropertySyntax.MARKER,\n },\n {\n n: 'markerStartOffset',\n syntax: PropertySyntax.LENGTH,\n l: true,\n int: true,\n d: '0',\n },\n {\n n: 'markerEndOffset',\n syntax: PropertySyntax.LENGTH,\n l: true,\n int: true,\n d: '0',\n },\n];\nvar GEOMETRY_ATTRIBUTE_NAMES = BUILT_IN_PROPERTIES.filter(function (n) { return !!n.l; }).map(function (n) { return n.n; });\nvar propertyMetadataCache = {};\nvar unresolvedProperties = new WeakMap();\n// const uniqueAttributeSet = new Set();\n// const tmpVec3a = vec3.create();\n// const tmpVec3b = vec3.create();\n// const tmpVec3c = vec3.create();\nvar isPropertyResolved = function (object, name) {\n var properties = unresolvedProperties.get(object);\n if (!properties || properties.length === 0) {\n return true;\n }\n return properties.includes(name);\n};\nvar DefaultStyleValueRegistry = /** @class */ (function () {\n /**\n * need recalc later\n */\n // dirty = false;\n function DefaultStyleValueRegistry(runtime) {\n var _this = this;\n this.runtime = runtime;\n BUILT_IN_PROPERTIES.forEach(function (property) {\n _this.registerMetadata(property);\n });\n }\n DefaultStyleValueRegistry.prototype.registerMetadata = function (metadata) {\n __spreadArray([metadata.n], __read((metadata.a || [])), false).forEach(function (name) {\n propertyMetadataCache[name] = metadata;\n });\n };\n DefaultStyleValueRegistry.prototype.unregisterMetadata = function (name) {\n delete propertyMetadataCache[name];\n };\n DefaultStyleValueRegistry.prototype.getPropertySyntax = function (syntax) {\n return this.runtime.CSSPropertySyntaxFactory[syntax];\n };\n /**\n * * parse value, eg.\n * fill: 'red' => CSSRGB\n * translateX: '10px' => CSSUnitValue { unit: 'px', value: 10 }\n * fontSize: '2em' => { unit: 'px', value: 32 }\n *\n * * calculate used value\n * * post process\n */\n DefaultStyleValueRegistry.prototype.processProperties = function (object, attributes, options) {\n var _this = this;\n if (options === void 0) { options = {\n skipUpdateAttribute: false,\n skipParse: false,\n forceUpdateGeometry: false,\n usedAttributes: [],\n memoize: true,\n }; }\n if (!this.runtime.enableCSSParsing) {\n Object.assign(object.attributes, attributes);\n var attributeNames_1 = Object.keys(attributes);\n // clipPath\n var oldClipPath = object.parsedStyle.clipPath;\n var oldOffsetPath = object.parsedStyle.offsetPath;\n object.parsedStyle = Object.assign(object.parsedStyle, attributes);\n var needUpdateGeometry_1 = !!options.forceUpdateGeometry;\n if (!needUpdateGeometry_1) {\n for (var i = 0; i < GEOMETRY_ATTRIBUTE_NAMES.length; i++) {\n if (GEOMETRY_ATTRIBUTE_NAMES[i] in attributes) {\n needUpdateGeometry_1 = true;\n break;\n }\n }\n }\n if (attributes.fill) {\n object.parsedStyle.fill = parseColor(attributes.fill);\n }\n if (attributes.stroke) {\n object.parsedStyle.stroke = parseColor(attributes.stroke);\n }\n if (attributes.shadowColor) {\n object.parsedStyle.shadowColor = parseColor(attributes.shadowColor);\n }\n if (attributes.filter) {\n object.parsedStyle.filter = parseFilter(attributes.filter);\n }\n // Rect\n // @ts-ignore\n if (!isNil(attributes.radius)) {\n // @ts-ignore\n object.parsedStyle.radius = parseDimensionArrayFormat(\n // @ts-ignore\n attributes.radius, 4);\n }\n // Polyline\n if (!isNil(attributes.lineDash)) {\n object.parsedStyle.lineDash = parseDimensionArrayFormat(attributes.lineDash, 2);\n }\n // @ts-ignore\n if (attributes.points) {\n // @ts-ignore\n object.parsedStyle.points = parsePoints(attributes.points, object);\n }\n // Path\n // @ts-ignore\n if (attributes.path === '') {\n object.parsedStyle.path = __assign({}, EMPTY_PARSED_PATH);\n }\n // @ts-ignore\n if (attributes.path) {\n object.parsedStyle.path = parsePath(\n // @ts-ignore\n attributes.path);\n object.parsedStyle.defX = object.parsedStyle.path.rect.x;\n object.parsedStyle.defY = object.parsedStyle.path.rect.y;\n }\n // Text\n if (attributes.textTransform) {\n this.runtime.CSSPropertySyntaxFactory[''].calculator(null, null, { value: attributes.textTransform }, object, null);\n }\n if (attributes.clipPath) {\n this.runtime.CSSPropertySyntaxFactory[''].calculator('clipPath', oldClipPath, attributes.clipPath, object, this.runtime);\n }\n if (attributes.offsetPath) {\n this.runtime.CSSPropertySyntaxFactory[''].calculator('offsetPath', oldOffsetPath, attributes.offsetPath, object, this.runtime);\n }\n if (attributes.anchor) {\n object.parsedStyle.anchor = parseDimensionArrayFormat(\n // @ts-ignorex\n attributes.anchor, 2);\n }\n if (attributes.transform) {\n object.parsedStyle.transform = parseTransform(attributes.transform);\n }\n if (attributes.transformOrigin) {\n object.parsedStyle.transformOrigin = parseTransformOrigin(attributes.transformOrigin);\n }\n // Marker\n // @ts-ignore\n if (attributes.markerStart) {\n object.parsedStyle.markerStart = this.runtime.CSSPropertySyntaxFactory[''].calculator(null, \n // @ts-ignore\n attributes.markerStart, \n // @ts-ignore\n attributes.markerStart, null, null);\n }\n // @ts-ignore\n if (attributes.markerEnd) {\n object.parsedStyle.markerEnd = this.runtime.CSSPropertySyntaxFactory[''].calculator(null, \n // @ts-ignore\n attributes.markerEnd, \n // @ts-ignore\n attributes.markerEnd, null, null);\n }\n // @ts-ignore\n if (attributes.markerMid) {\n object.parsedStyle.markerMid = this.runtime.CSSPropertySyntaxFactory[''].calculator('', \n // @ts-ignore\n attributes.markerMid, \n // @ts-ignore\n attributes.markerMid, null, null);\n }\n if (\n // Circle & Ellipse\n ((object.nodeName === Shape.CIRCLE ||\n object.nodeName === Shape.ELLIPSE) &&\n // @ts-ignore\n (!isNil(attributes.cx) ||\n // @ts-ignore\n !isNil(attributes.cy))) ||\n ((object.nodeName === Shape.RECT ||\n object.nodeName === Shape.IMAGE ||\n object.nodeName === Shape.GROUP ||\n object.nodeName === Shape.HTML ||\n object.nodeName === Shape.TEXT ||\n object.nodeName === Shape.MESH) &&\n // @ts-ignore\n (!isNil(attributes.x) ||\n // @ts-ignore\n !isNil(attributes.y) ||\n // @ts-ignore\n !isNil(attributes.z))) ||\n // Line\n (object.nodeName === Shape.LINE &&\n // @ts-ignore\n (!isNil(attributes.x1) ||\n // @ts-ignore\n !isNil(attributes.y1) ||\n // @ts-ignore\n !isNil(attributes.z1) ||\n // @ts-ignore\n !isNil(attributes.x2) ||\n // @ts-ignore\n !isNil(attributes.y2) ||\n // @ts-ignore\n !isNil(attributes.z2)))) {\n this.runtime.CSSPropertySyntaxFactory[''].postProcessor(object, attributeNames_1);\n }\n if (!isNil(attributes.zIndex)) {\n this.runtime.CSSPropertySyntaxFactory[''].postProcessor(object, attributeNames_1);\n }\n // @ts-ignore\n if (attributes.path) {\n this.runtime.CSSPropertySyntaxFactory[''].postProcessor(object, attributeNames_1);\n }\n // @ts-ignore\n if (attributes.points) {\n this.runtime.CSSPropertySyntaxFactory[''].postProcessor(object, attributeNames_1);\n }\n if (!isNil(attributes.offsetDistance)) {\n this.runtime.CSSPropertySyntaxFactory[''].postProcessor(object, attributeNames_1);\n }\n if (attributes.transform) {\n this.runtime.CSSPropertySyntaxFactory[''].postProcessor(object, attributeNames_1);\n }\n if (needUpdateGeometry_1) {\n this.updateGeometry(object);\n }\n return;\n }\n var skipUpdateAttribute = options.skipUpdateAttribute, skipParse = options.skipParse, forceUpdateGeometry = options.forceUpdateGeometry, usedAttributes = options.usedAttributes, memoize = options.memoize;\n var needUpdateGeometry = forceUpdateGeometry;\n var attributeNames = Object.keys(attributes);\n attributeNames.forEach(function (attributeName) {\n var _a;\n if (!skipUpdateAttribute) {\n object.attributes[attributeName] = attributes[attributeName];\n }\n if (!needUpdateGeometry && ((_a = propertyMetadataCache[attributeName]) === null || _a === void 0 ? void 0 : _a.l)) {\n needUpdateGeometry = true;\n }\n });\n if (!skipParse) {\n attributeNames.forEach(function (name) {\n object.computedStyle[name] = _this.parseProperty(name, object.attributes[name], object, memoize);\n });\n }\n // let hasUnresolvedProperties = false;\n // parse according to priority\n // path 50\n // points 50\n // text 50\n // textTransform 51\n // anchor 99\n // transform 100\n // transformOrigin 100\n if (usedAttributes === null || usedAttributes === void 0 ? void 0 : usedAttributes.length) {\n // uniqueAttributeSet.clear();\n attributeNames = Array.from(new Set(attributeNames.concat(usedAttributes)));\n }\n // [\n // 'path',\n // 'points',\n // 'text',\n // 'textTransform',\n // 'anchor',\n // 'transform',\n // 'transformOrigin',\n // ].forEach((name) => {\n // const index = attributeNames.indexOf(name);\n // if (index > -1) {\n // attributeNames.splice(index, 1);\n // attributeNames.push(name);\n // }\n // });\n attributeNames.forEach(function (name) {\n // some style props maybe deleted after parsing such as `anchor` in Text\n if (name in object.computedStyle) {\n object.parsedStyle[name] = _this.computeProperty(name, object.computedStyle[name], object, memoize);\n }\n });\n // if (hasUnresolvedProperties) {\n // this.dirty = true;\n // return;\n // }\n // update geometry\n if (needUpdateGeometry) {\n // object.geometry.dirty = true;\n // runtime.sceneGraphService.dirtifyToRoot(object);\n this.updateGeometry(object);\n }\n attributeNames.forEach(function (name) {\n if (name in object.parsedStyle) {\n _this.postProcessProperty(name, object, attributeNames);\n }\n });\n if (this.runtime.enableCSSParsing && object.children.length) {\n attributeNames.forEach(function (name) {\n if (name in object.parsedStyle && _this.isPropertyInheritable(name)) {\n // update children's inheritable\n object.children.forEach(function (child) {\n child.internalSetAttribute(name, null, {\n skipUpdateAttribute: true,\n skipParse: true,\n });\n });\n }\n });\n }\n };\n /**\n * string -> parsed value\n */\n DefaultStyleValueRegistry.prototype.parseProperty = function (name, value, object, memoized) {\n var metadata = propertyMetadataCache[name];\n var computed = value;\n if (value === '' || isNil(value)) {\n value = 'unset';\n }\n if (value === 'unset' || value === 'initial' || value === 'inherit') {\n // computed = new CSSKeywordValue(value);\n computed = getOrCreateKeyword(value);\n }\n else {\n if (metadata) {\n var keywords = metadata.k, syntax = metadata.syntax;\n var handler = syntax && this.getPropertySyntax(syntax);\n // use keywords\n if (keywords && keywords.indexOf(value) > -1) {\n // computed = new CSSKeywordValue(value);\n computed = getOrCreateKeyword(value);\n }\n else if (handler) {\n if (!memoized && handler.parserUnmemoize) {\n computed = handler.parserUnmemoize(value, object);\n }\n else if (handler.parser) {\n // try to parse it to CSSStyleValue, eg. '10px' -> CSS.px(10)\n computed = handler.parser(value, object);\n }\n }\n }\n }\n return computed;\n };\n /**\n * computed value -> used value\n */\n DefaultStyleValueRegistry.prototype.computeProperty = function (name, computed, object, memoized) {\n var metadata = propertyMetadataCache[name];\n var isDocumentElement = object.id === 'g-root';\n // let used: CSSStyleValue = computed instanceof CSSStyleValue ? computed.clone() : computed;\n var used = computed;\n if (metadata) {\n var syntax = metadata.syntax, inherited = metadata.inh, defaultValue = metadata.d;\n if (computed instanceof CSSKeywordValue) {\n var value = computed.value;\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/unset\n */\n if (value === 'unset') {\n if (inherited && !isDocumentElement) {\n value = 'inherit';\n }\n else {\n value = 'initial';\n }\n }\n if (value === 'initial') {\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/initial\n if (!isNil(defaultValue)) {\n computed = this.parseProperty(name, isFunction(defaultValue)\n ? defaultValue(object.nodeName)\n : defaultValue, object, memoized);\n }\n }\n else if (value === 'inherit') {\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/inherit\n // behave like `inherit`\n var resolved = this.tryToResolveProperty(object, name, {\n inherited: true,\n });\n if (!isNil(resolved)) {\n // object.parsedStyle[name] = resolved;\n // return false;\n return resolved;\n }\n else {\n this.addUnresolveProperty(object, name);\n return;\n }\n }\n }\n var handler = syntax && this.getPropertySyntax(syntax);\n if (handler && handler.calculator) {\n // convert computed value to used value\n var oldParsedValue = object.parsedStyle[name];\n used = handler.calculator(name, oldParsedValue, computed, object, this.runtime);\n }\n else if (computed instanceof CSSKeywordValue) {\n used = computed.value;\n }\n else {\n used = computed;\n }\n }\n // object.parsedStyle[name] = used;\n // return false;\n return used;\n };\n DefaultStyleValueRegistry.prototype.postProcessProperty = function (name, object, attributes) {\n var metadata = propertyMetadataCache[name];\n if (metadata && metadata.syntax) {\n var handler = metadata.syntax && this.getPropertySyntax(metadata.syntax);\n var propertyHandler = handler;\n if (propertyHandler && propertyHandler.postProcessor) {\n propertyHandler.postProcessor(object, attributes);\n }\n }\n };\n /**\n * resolve later\n */\n DefaultStyleValueRegistry.prototype.addUnresolveProperty = function (object, name) {\n var properties = unresolvedProperties.get(object);\n if (!properties) {\n unresolvedProperties.set(object, []);\n properties = unresolvedProperties.get(object);\n }\n if (properties.indexOf(name) === -1) {\n properties.push(name);\n }\n };\n DefaultStyleValueRegistry.prototype.tryToResolveProperty = function (object, name, options) {\n if (options === void 0) { options = {}; }\n var inherited = options.inherited;\n if (inherited) {\n if (object.parentElement &&\n isPropertyResolved(object.parentElement, name)) {\n // const computedValue = object.parentElement.computedStyle[name];\n var usedValue = object.parentElement.parsedStyle[name];\n if (\n // usedValue instanceof CSSKeywordValue &&\n usedValue === 'unset' ||\n usedValue === 'initial' ||\n usedValue === 'inherit') {\n return;\n }\n // else if (\n // usedValue instanceof CSSUnitValue &&\n // CSSUnitValue.isRelativeUnit(usedValue.unit)\n // ) {\n // return false;\n // }\n return usedValue;\n }\n }\n return;\n };\n DefaultStyleValueRegistry.prototype.recalc = function (object) {\n var properties = unresolvedProperties.get(object);\n if (properties && properties.length) {\n var attributes_1 = {};\n properties.forEach(function (property) {\n attributes_1[property] = object.attributes[property];\n });\n this.processProperties(object, attributes_1);\n unresolvedProperties.delete(object);\n }\n };\n /**\n * update geometry when relative props changed,\n * eg. r of Circle, width/height of Rect\n */\n DefaultStyleValueRegistry.prototype.updateGeometry = function (object) {\n var nodeName = object.nodeName;\n var geometryUpdater = this.runtime.geometryUpdaterFactory[nodeName];\n if (geometryUpdater) {\n var geometry_1 = object.geometry;\n if (!geometry_1.contentBounds) {\n geometry_1.contentBounds = new AABB();\n }\n if (!geometry_1.renderBounds) {\n geometry_1.renderBounds = new AABB();\n }\n var parsedStyle = object.parsedStyle;\n var _a = geometryUpdater.update(parsedStyle, object), width = _a.width, height = _a.height, _b = _a.depth, depth = _b === void 0 ? 0 : _b, _c = _a.offsetX, offsetX = _c === void 0 ? 0 : _c, _d = _a.offsetY, offsetY = _d === void 0 ? 0 : _d, _e = _a.offsetZ, offsetZ = _e === void 0 ? 0 : _e;\n // init with content box\n var halfExtents = [\n Math.abs(width) / 2,\n Math.abs(height) / 2,\n depth / 2,\n ];\n // const halfExtents = vec3.set(\n // tmpVec3a,\n // Math.abs(width) / 2,\n // Math.abs(height) / 2,\n // depth / 2,\n // );\n // anchor is center by default, don't account for lineWidth here\n var _f = parsedStyle, stroke = _f.stroke, lineWidth = _f.lineWidth, \n // lineCap,\n // lineJoin,\n // miterLimit,\n increasedLineWidthForHitTesting = _f.increasedLineWidthForHitTesting, shadowType = _f.shadowType, shadowColor = _f.shadowColor, _g = _f.filter, filter = _g === void 0 ? [] : _g, transformOrigin = _f.transformOrigin;\n var anchor = parsedStyle.anchor;\n // use textAlign & textBaseline instead of anchor\n if (nodeName === Shape.TEXT) {\n delete parsedStyle.anchor;\n }\n else if (nodeName === Shape.MESH) {\n parsedStyle.anchor[2] = 0.5;\n }\n var center = [\n ((1 - ((anchor && anchor[0]) || 0) * 2) * width) / 2 + offsetX,\n ((1 - ((anchor && anchor[1]) || 0) * 2) * height) / 2 + offsetY,\n (1 - ((anchor && anchor[2]) || 0) * 2) * halfExtents[2] + offsetZ,\n ];\n // const center = vec3.set(\n // tmpVec3b,\n // ((1 - ((anchor && anchor[0]) || 0) * 2) * width) / 2 + offsetX,\n // ((1 - ((anchor && anchor[1]) || 0) * 2) * height) / 2 + offsetY,\n // (1 - ((anchor && anchor[2]) || 0) * 2) * halfExtents[2] + offsetZ,\n // );\n // update geometry's AABB\n geometry_1.contentBounds.update(center, halfExtents);\n // @see https://github.molgen.mpg.de/git-mirror/cairo/blob/master/src/cairo-stroke-style.c#L97..L128\n var expansion = nodeName === Shape.POLYLINE ||\n nodeName === Shape.POLYGON ||\n nodeName === Shape.PATH\n ? Math.SQRT2\n : 0.5;\n // if (lineCap?.value === 'square') {\n // expansion = Math.SQRT1_2;\n // }\n // if (lineJoin?.value === 'miter' && expansion < Math.SQRT2 * miterLimit) {\n // expansion = Math.SQRT1_2 * miterLimit;\n // }\n // append border only if stroke existed\n var hasStroke = stroke && !stroke.isNone;\n if (hasStroke) {\n var halfLineWidth = ((lineWidth || 0) + (increasedLineWidthForHitTesting || 0)) *\n expansion;\n // halfExtents[0] += halfLineWidth[0];\n // halfExtents[1] += halfLineWidth[1];\n halfExtents[0] += halfLineWidth;\n halfExtents[1] += halfLineWidth;\n // vec3.add(\n // halfExtents,\n // halfExtents,\n // vec3.set(tmpVec3c, halfLineWidth, halfLineWidth, 0),\n // );\n }\n geometry_1.renderBounds.update(center, halfExtents);\n // account for shadow, only support constant value now\n if (shadowColor && shadowType && shadowType !== 'inner') {\n var _h = geometry_1.renderBounds, min = _h.min, max = _h.max;\n var _j = parsedStyle, shadowBlur = _j.shadowBlur, shadowOffsetX = _j.shadowOffsetX, shadowOffsetY = _j.shadowOffsetY;\n var shadowBlurInPixels = shadowBlur || 0;\n var shadowOffsetXInPixels = shadowOffsetX || 0;\n var shadowOffsetYInPixels = shadowOffsetY || 0;\n var shadowLeft = min[0] - shadowBlurInPixels + shadowOffsetXInPixels;\n var shadowRight = max[0] + shadowBlurInPixels + shadowOffsetXInPixels;\n var shadowTop = min[1] - shadowBlurInPixels + shadowOffsetYInPixels;\n var shadowBottom = max[1] + shadowBlurInPixels + shadowOffsetYInPixels;\n min[0] = Math.min(min[0], shadowLeft);\n max[0] = Math.max(max[0], shadowRight);\n min[1] = Math.min(min[1], shadowTop);\n max[1] = Math.max(max[1], shadowBottom);\n geometry_1.renderBounds.setMinMax(min, max);\n }\n // account for filter, eg. blur(5px), drop-shadow()\n filter.forEach(function (_a) {\n var name = _a.name, params = _a.params;\n if (name === 'blur') {\n var blurRadius = params[0].value;\n geometry_1.renderBounds.update(geometry_1.renderBounds.center, addVec3(geometry_1.renderBounds.halfExtents, geometry_1.renderBounds.halfExtents, [blurRadius, blurRadius, 0]));\n }\n else if (name === 'drop-shadow') {\n var shadowOffsetX = params[0].value;\n var shadowOffsetY = params[1].value;\n var shadowBlur = params[2].value;\n var _b = geometry_1.renderBounds, min = _b.min, max = _b.max;\n var shadowLeft = min[0] - shadowBlur + shadowOffsetX;\n var shadowRight = max[0] + shadowBlur + shadowOffsetX;\n var shadowTop = min[1] - shadowBlur + shadowOffsetY;\n var shadowBottom = max[1] + shadowBlur + shadowOffsetY;\n min[0] = Math.min(min[0], shadowLeft);\n max[0] = Math.max(max[0], shadowRight);\n min[1] = Math.min(min[1], shadowTop);\n max[1] = Math.max(max[1], shadowBottom);\n geometry_1.renderBounds.setMinMax(min, max);\n }\n });\n anchor = parsedStyle.anchor;\n // if (nodeName === Shape.RECT) {\n // account for negative width / height of Rect\n // @see https://github.com/antvis/g/issues/957\n var flipY = width < 0;\n var flipX = height < 0;\n // } else {\n // }\n // set transform origin\n var usedOriginXValue = (flipY ? -1 : 1) *\n (transformOrigin\n ? convertPercentUnit(transformOrigin[0], 0, object)\n : 0);\n var usedOriginYValue = (flipX ? -1 : 1) *\n (transformOrigin\n ? convertPercentUnit(transformOrigin[1], 1, object)\n : 0);\n usedOriginXValue =\n usedOriginXValue -\n (flipY ? -1 : 1) *\n ((anchor && anchor[0]) || 0) *\n geometry_1.contentBounds.halfExtents[0] *\n 2;\n usedOriginYValue =\n usedOriginYValue -\n (flipX ? -1 : 1) *\n ((anchor && anchor[1]) || 0) *\n geometry_1.contentBounds.halfExtents[1] *\n 2;\n object.setOrigin(usedOriginXValue, usedOriginYValue);\n // FIXME setOrigin may have already dirtified to root.\n this.runtime.sceneGraphService.dirtifyToRoot(object);\n }\n };\n DefaultStyleValueRegistry.prototype.isPropertyInheritable = function (name) {\n var metadata = propertyMetadataCache[name];\n if (!metadata) {\n return false;\n }\n return metadata.inh;\n };\n return DefaultStyleValueRegistry;\n}());\n\nvar CSSPropertyAngle = /** @class */ (function () {\n function CSSPropertyAngle() {\n this.parser = parseAngle;\n this.parserUnmemoize = parseAngleUnmemoize;\n this.parserWithCSSDisabled = null;\n this.mixer = mergeNumbers;\n }\n CSSPropertyAngle.prototype.calculator = function (name, oldParsed, parsed, object) {\n return convertAngleUnit(parsed);\n };\n return CSSPropertyAngle;\n}());\n\n/**\n * clipPath / textPath / offsetPath\n */\nvar CSSPropertyClipPath = /** @class */ (function () {\n function CSSPropertyClipPath() {\n }\n CSSPropertyClipPath.prototype.calculator = function (name, oldPath, newPath, object, runtime) {\n // unset\n if (newPath instanceof CSSKeywordValue) {\n newPath = null;\n }\n runtime.sceneGraphService.updateDisplayObjectDependency(name, oldPath, newPath, object);\n if (name === 'clipPath') {\n // should affect children\n object.forEach(function (leaf) {\n if (leaf.childNodes.length === 0) {\n runtime.sceneGraphService.dirtifyToRoot(leaf);\n }\n });\n }\n return newPath;\n };\n return CSSPropertyClipPath;\n}());\n\nvar CSSPropertyColor = /** @class */ (function () {\n function CSSPropertyColor() {\n this.parser = parseColor;\n this.parserWithCSSDisabled = parseColor;\n this.mixer = mergeColors;\n }\n CSSPropertyColor.prototype.calculator = function (name, oldParsed, parsed, object) {\n if (parsed instanceof CSSKeywordValue) {\n // 'unset' 'none'\n return parsed.value === 'none' ? noneColor : transparentColor;\n }\n return parsed;\n };\n return CSSPropertyColor;\n}());\n\nvar CSSPropertyFilter = /** @class */ (function () {\n function CSSPropertyFilter() {\n this.parser = parseFilter;\n }\n CSSPropertyFilter.prototype.calculator = function (name, oldParsed, parsed) {\n // unset or none\n if (parsed instanceof CSSKeywordValue) {\n return [];\n }\n return parsed;\n };\n return CSSPropertyFilter;\n}());\n\nfunction getFontSize(object) {\n var fontSize = object.parsedStyle.fontSize;\n return isNil(fontSize) ? null : fontSize;\n}\n/**\n * & \n */\nvar CSSPropertyLengthOrPercentage = /** @class */ (function () {\n function CSSPropertyLengthOrPercentage() {\n this.parser = parseLengthOrPercentage;\n this.parserUnmemoize = parseLengthOrPercentageUnmemoize;\n this.parserWithCSSDisabled = null;\n this.mixer = mergeNumbers;\n }\n /**\n * according to parent's bounds\n *\n * @example\n * CSS.percent(50) -> CSS.px(0.5 * parent.width)\n */\n CSSPropertyLengthOrPercentage.prototype.calculator = function (name, oldParsed, computed, object, runtime) {\n var _a;\n if (isNumber(computed)) {\n return computed;\n }\n if (CSSUnitValue.isRelativeUnit(computed.unit)) {\n var registry = runtime.styleValueRegistry;\n if (computed.unit === UnitType.kPercentage) {\n // TODO: merge dimensions\n return 0;\n }\n else if (computed.unit === UnitType.kEms) {\n if (object.parentNode) {\n var fontSize = getFontSize(object.parentNode);\n if (fontSize) {\n fontSize *= computed.value;\n return fontSize;\n }\n else {\n registry.addUnresolveProperty(object, name);\n }\n }\n else {\n registry.addUnresolveProperty(object, name);\n }\n return 0;\n }\n else if (computed.unit === UnitType.kRems) {\n if ((_a = object === null || object === void 0 ? void 0 : object.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) {\n var fontSize = getFontSize(object.ownerDocument.documentElement);\n if (fontSize) {\n fontSize *= computed.value;\n return fontSize;\n }\n else {\n registry.addUnresolveProperty(object, name);\n }\n }\n else {\n registry.addUnresolveProperty(object, name);\n }\n return 0;\n }\n }\n else {\n // remove listener if exists\n // registry.unregisterParentGeometryBoundsChangedHandler(object, name);\n // return absolute value\n return computed.value;\n }\n };\n return CSSPropertyLengthOrPercentage;\n}());\n\n/**\n * format to Tuple2\n *\n * @example\n * rect.style.lineDash = 10;\n * rect.style.lineDash = [10, 10];\n * rect.style.lineDash = '10 10';\n */\nvar CSSPropertyLengthOrPercentage12 = /** @class */ (function () {\n function CSSPropertyLengthOrPercentage12() {\n this.mixer = mergeNumberLists;\n }\n CSSPropertyLengthOrPercentage12.prototype.parser = function (radius) {\n var parsed = parseDimensionArray(isNumber(radius) ? [radius] : radius);\n var formatted;\n if (parsed.length === 1) {\n formatted = [parsed[0], parsed[0]];\n }\n else {\n formatted = [parsed[0], parsed[1]];\n }\n return formatted;\n };\n CSSPropertyLengthOrPercentage12.prototype.calculator = function (name, oldParsed, computed) {\n return computed.map(function (c) { return c.value; });\n };\n return CSSPropertyLengthOrPercentage12;\n}());\n\n/**\n * used in rounded rect\n *\n * @example\n * rect.style.radius = 10;\n * rect.style.radius = '10 10';\n * rect.style.radius = '10 10 10 10';\n */\nvar CSSPropertyLengthOrPercentage14 = /** @class */ (function () {\n function CSSPropertyLengthOrPercentage14() {\n this.mixer = mergeNumberLists;\n }\n CSSPropertyLengthOrPercentage14.prototype.parser = function (radius) {\n var parsed = parseDimensionArray(isNumber(radius) ? [radius] : radius);\n var formatted;\n // format to Tuple\n if (parsed.length === 1) {\n formatted = [parsed[0], parsed[0], parsed[0], parsed[0]];\n }\n else if (parsed.length === 2) {\n formatted = [parsed[0], parsed[1], parsed[0], parsed[1]];\n }\n else if (parsed.length === 3) {\n formatted = [parsed[0], parsed[1], parsed[2], parsed[1]];\n }\n else {\n formatted = [parsed[0], parsed[1], parsed[2], parsed[3]];\n }\n return formatted;\n };\n CSSPropertyLengthOrPercentage14.prototype.calculator = function (name, oldParsed, computed) {\n return computed.map(function (c) { return c.value; });\n };\n return CSSPropertyLengthOrPercentage14;\n}());\n\nvar tmpMat4 = mat4.create();\nfunction parsedTransformToMat4(transform, object) {\n var defX = object.parsedStyle.defX || 0;\n var defY = object.parsedStyle.defY || 0;\n // reset transform\n object.resetLocalTransform();\n object.setLocalPosition(defX, defY);\n transform.forEach(function (parsed) {\n var t = parsed.t, d = parsed.d;\n if (t === 'scale') {\n // scale(1) scale(1, 1)\n var newScale = (d === null || d === void 0 ? void 0 : d.map(function (s) { return s.value; })) || [1, 1];\n object.scaleLocal(newScale[0], newScale[1], 1);\n }\n else if (t === 'scalex') {\n var newScale = (d === null || d === void 0 ? void 0 : d.map(function (s) { return s.value; })) || [1];\n object.scaleLocal(newScale[0], 1, 1);\n }\n else if (t === 'scaley') {\n var newScale = (d === null || d === void 0 ? void 0 : d.map(function (s) { return s.value; })) || [1];\n object.scaleLocal(1, newScale[0], 1);\n }\n else if (t === 'scalez') {\n var newScale = (d === null || d === void 0 ? void 0 : d.map(function (s) { return s.value; })) || [1];\n object.scaleLocal(1, 1, newScale[0]);\n }\n else if (t === 'scale3d') {\n var newScale = (d === null || d === void 0 ? void 0 : d.map(function (s) { return s.value; })) || [1, 1, 1];\n object.scaleLocal(newScale[0], newScale[1], newScale[2]);\n }\n else if (t === 'translate') {\n var newTranslation = d || [Opx, Opx];\n object.translateLocal(newTranslation[0].value, newTranslation[1].value, 0);\n }\n else if (t === 'translatex') {\n var newTranslation = d || [Opx];\n object.translateLocal(newTranslation[0].value, 0, 0);\n }\n else if (t === 'translatey') {\n var newTranslation = d || [Opx];\n object.translateLocal(0, newTranslation[0].value, 0);\n }\n else if (t === 'translatez') {\n var newTranslation = d || [Opx];\n object.translateLocal(0, 0, newTranslation[0].value);\n }\n else if (t === 'translate3d') {\n var newTranslation = d || [Opx, Opx, Opx];\n object.translateLocal(newTranslation[0].value, newTranslation[1].value, newTranslation[2].value);\n }\n else if (t === 'rotate') {\n var newAngles = d || [Odeg];\n object.rotateLocal(0, 0, convertAngleUnit(newAngles[0]));\n }\n else if (t === 'rotatex') {\n var newAngles = d || [Odeg];\n object.rotateLocal(convertAngleUnit(newAngles[0]), 0, 0);\n }\n else if (t === 'rotatey') {\n var newAngles = d || [Odeg];\n object.rotateLocal(0, convertAngleUnit(newAngles[0]), 0);\n }\n else if (t === 'rotatez') {\n var newAngles = d || [Odeg];\n object.rotateLocal(0, 0, convertAngleUnit(newAngles[0]));\n }\n else if (t === 'rotate3d') ;\n else if (t === 'skew') {\n var newSkew = (d === null || d === void 0 ? void 0 : d.map(function (s) { return s.value; })) || [0, 0];\n object.setLocalSkew(deg2rad(newSkew[0]), deg2rad(newSkew[1]));\n }\n else if (t === 'skewx') {\n var newSkew = (d === null || d === void 0 ? void 0 : d.map(function (s) { return s.value; })) || [0];\n object.setLocalSkew(deg2rad(newSkew[0]), object.getLocalSkew()[1]);\n }\n else if (t === 'skewy') {\n var newSkew = (d === null || d === void 0 ? void 0 : d.map(function (s) { return s.value; })) || [0];\n object.setLocalSkew(object.getLocalSkew()[0], deg2rad(newSkew[0]));\n }\n else if (t === 'matrix') {\n var _a = __read(d.map(function (s) { return s.value; }), 6), a = _a[0], b = _a[1], c = _a[2], dd = _a[3], tx = _a[4], ty = _a[5];\n object.setLocalTransform(mat4.set(tmpMat4, a, b, 0, 0, c, dd, 0, 0, 0, 0, 1, 0, tx + defX, ty + defY, 0, 1));\n }\n else if (t === 'matrix3d') {\n // @ts-ignore\n mat4.set.apply(mat4, __spreadArray([tmpMat4], __read(d.map(function (s) { return s.value; })), false));\n tmpMat4[12] += defX;\n tmpMat4[13] += defY;\n object.setLocalTransform(tmpMat4);\n }\n });\n return object.getLocalTransform();\n}\n\n/**\n * local position\n */\nvar CSSPropertyLocalPosition = /** @class */ (function (_super) {\n __extends(CSSPropertyLocalPosition, _super);\n function CSSPropertyLocalPosition() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * update local position\n */\n CSSPropertyLocalPosition.prototype.postProcessor = function (object, attributes) {\n var x;\n var y;\n var z;\n switch (object.nodeName) {\n case Shape.CIRCLE:\n case Shape.ELLIPSE:\n var _a = object.parsedStyle, cx = _a.cx, cy = _a.cy, cz = _a.cz;\n if (!isNil(cx)) {\n x = cx;\n }\n if (!isNil(cy)) {\n y = cy;\n }\n if (!isNil(cz)) {\n z = cz;\n }\n break;\n case Shape.LINE:\n var _b = object.parsedStyle, x1 = _b.x1, x2 = _b.x2, y1 = _b.y1, y2 = _b.y2;\n var minX = Math.min(x1, x2);\n var minY = Math.min(y1, y2);\n x = minX;\n y = minY;\n z = 0;\n break;\n case Shape.RECT:\n case Shape.IMAGE:\n case Shape.GROUP:\n case Shape.HTML:\n case Shape.TEXT:\n case Shape.MESH:\n if (!isNil(object.parsedStyle.x)) {\n x = object.parsedStyle.x;\n }\n if (!isNil(object.parsedStyle.y)) {\n y = object.parsedStyle.y;\n }\n if (!isNil(object.parsedStyle.z)) {\n z = object.parsedStyle.z;\n }\n break;\n }\n if (object.nodeName !== Shape.PATH &&\n object.nodeName !== Shape.POLYLINE &&\n object.nodeName !== Shape.POLYGON) {\n object.parsedStyle.defX = x || 0;\n object.parsedStyle.defY = y || 0;\n }\n var needResetLocalPosition = !isNil(x) || !isNil(y) || !isNil(z);\n // only if `transform` won't be processed later\n if (needResetLocalPosition && attributes.indexOf('transform') === -1) {\n // account for current transform if needed\n var transform = object.parsedStyle.transform;\n if (transform && transform.length) {\n parsedTransformToMat4(transform, object);\n }\n else {\n var _c = __read(object.getLocalPosition(), 3), ox = _c[0], oy = _c[1], oz = _c[2];\n object.setLocalPosition(isNil(x) ? ox : x, isNil(y) ? oy : y, isNil(z) ? oz : z);\n }\n }\n };\n return CSSPropertyLocalPosition;\n}(CSSPropertyLengthOrPercentage));\n\nvar CSSPropertyMarker = /** @class */ (function () {\n function CSSPropertyMarker() {\n }\n CSSPropertyMarker.prototype.calculator = function (name, oldMarker, newMarker, object) {\n // unset\n if (newMarker instanceof CSSKeywordValue) {\n newMarker = null;\n }\n var cloned = newMarker === null || newMarker === void 0 ? void 0 : newMarker.cloneNode(true);\n if (cloned) {\n // FIXME: SVG should not inherit parent's style, add a flag here\n cloned.style.isMarker = true;\n }\n return cloned;\n };\n return CSSPropertyMarker;\n}());\n\nvar CSSPropertyNumber = /** @class */ (function () {\n function CSSPropertyNumber() {\n this.mixer = mergeNumbers;\n this.parser = parseNumber;\n this.parserUnmemoize = parseNumberUnmemoize;\n this.parserWithCSSDisabled = null;\n }\n CSSPropertyNumber.prototype.calculator = function (name, oldParsed, computed) {\n return computed.value;\n };\n return CSSPropertyNumber;\n}());\n\nvar CSSPropertyOffsetDistance = /** @class */ (function () {\n function CSSPropertyOffsetDistance() {\n this.parser = parseNumber;\n this.parserUnmemoize = parseNumberUnmemoize;\n this.parserWithCSSDisabled = null;\n this.mixer = clampedMergeNumbers(0, 1);\n }\n CSSPropertyOffsetDistance.prototype.calculator = function (name, oldParsed, computed) {\n return computed.value;\n };\n CSSPropertyOffsetDistance.prototype.postProcessor = function (object) {\n var _a = object.parsedStyle, offsetPath = _a.offsetPath, offsetDistance = _a.offsetDistance;\n if (!offsetPath) {\n return;\n }\n var nodeName = offsetPath.nodeName;\n if (nodeName === Shape.LINE ||\n nodeName === Shape.PATH ||\n nodeName === Shape.POLYLINE) {\n // set position in world space\n var point = offsetPath.getPoint(offsetDistance);\n if (point) {\n object.parsedStyle.defX = point.x;\n object.parsedStyle.defY = point.y;\n object.setLocalPosition(point.x, point.y);\n }\n }\n };\n return CSSPropertyOffsetDistance;\n}());\n\n/**\n * opacity\n */\nvar CSSPropertyOpacity = /** @class */ (function () {\n function CSSPropertyOpacity() {\n this.parser = parseNumber;\n this.parserUnmemoize = parseNumberUnmemoize;\n this.parserWithCSSDisabled = null;\n this.mixer = clampedMergeNumbers(0, 1);\n }\n CSSPropertyOpacity.prototype.calculator = function (name, oldParsed, computed) {\n return computed.value;\n };\n return CSSPropertyOpacity;\n}());\n\nvar CSSPropertyPath = /** @class */ (function () {\n function CSSPropertyPath() {\n /**\n * path2Curve\n */\n this.parser = parsePath;\n this.parserWithCSSDisabled = parsePath;\n this.mixer = mergePaths;\n }\n CSSPropertyPath.prototype.calculator = function (name, oldParsed, parsed) {\n // unset\n if (parsed instanceof CSSKeywordValue && parsed.value === 'unset') {\n return {\n absolutePath: [],\n hasArc: false,\n segments: [],\n polygons: [],\n polylines: [],\n curve: null,\n totalLength: 0,\n rect: new Rectangle(0, 0, 0, 0),\n };\n }\n return parsed;\n };\n /**\n * update local position\n */\n CSSPropertyPath.prototype.postProcessor = function (object, attributes) {\n object.parsedStyle.defX = object.parsedStyle.path.rect.x;\n object.parsedStyle.defY = object.parsedStyle.path.rect.y;\n if (object.nodeName === Shape.PATH &&\n attributes.indexOf('transform') === -1) {\n var _a = object.parsedStyle, _b = _a.defX, defX = _b === void 0 ? 0 : _b, _c = _a.defY, defY = _c === void 0 ? 0 : _c;\n object.setLocalPosition(defX, defY);\n }\n };\n return CSSPropertyPath;\n}());\n\nvar CSSPropertyPoints = /** @class */ (function () {\n function CSSPropertyPoints() {\n this.parser = parsePoints;\n this.mixer = mergePoints;\n }\n /**\n * update local position\n */\n CSSPropertyPoints.prototype.postProcessor = function (object, attributes) {\n if ((object.nodeName === Shape.POLYGON ||\n object.nodeName === Shape.POLYLINE) &&\n attributes.indexOf('transform') === -1) {\n var _a = object.parsedStyle, defX = _a.defX, defY = _a.defY;\n object.setLocalPosition(defX, defY);\n }\n };\n return CSSPropertyPoints;\n}());\n\nvar CSSPropertyShadowBlur = /** @class */ (function (_super) {\n __extends(CSSPropertyShadowBlur, _super);\n function CSSPropertyShadowBlur() {\n var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n _this.mixer = clampedMergeNumbers(0, Infinity);\n return _this;\n }\n return CSSPropertyShadowBlur;\n}(CSSPropertyLengthOrPercentage));\n\nvar CSSPropertyText = /** @class */ (function () {\n function CSSPropertyText() {\n }\n CSSPropertyText.prototype.calculator = function (name, oldParsed, parsed, object) {\n if (parsed instanceof CSSKeywordValue) {\n if (parsed.value === 'unset') {\n return '';\n }\n else {\n return parsed.value;\n }\n }\n // allow number as valid text content\n return \"\".concat(parsed);\n };\n CSSPropertyText.prototype.postProcessor = function (object) {\n object.nodeValue = \"\".concat(object.parsedStyle.text) || '';\n };\n return CSSPropertyText;\n}());\n\n/**\n * it must transform after text get parsed\n * @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/text-transform\n */\nvar CSSPropertyTextTransform = /** @class */ (function () {\n function CSSPropertyTextTransform() {\n }\n CSSPropertyTextTransform.prototype.calculator = function (name, oldParsed, parsed, object) {\n var rawText = object.getAttribute('text');\n if (rawText) {\n var transformedText = rawText;\n if (parsed.value === 'capitalize') {\n transformedText = rawText.charAt(0).toUpperCase() + rawText.slice(1);\n }\n else if (parsed.value === 'lowercase') {\n transformedText = rawText.toLowerCase();\n }\n else if (parsed.value === 'uppercase') {\n transformedText = rawText.toUpperCase();\n }\n object.parsedStyle.text = transformedText;\n }\n return parsed.value;\n };\n return CSSPropertyTextTransform;\n}());\n\nvar canvasMap = {};\nvar defaultCanvasIdCounter = 0;\n/**\n * destroy existed canvas with the same id\n */\nfunction cleanExistedCanvas(container, canvas) {\n if (container) {\n var id = typeof container === 'string'\n ? container\n : container.id || defaultCanvasIdCounter++;\n if (canvasMap[id]) {\n canvasMap[id].destroy();\n }\n canvasMap[id] = canvas;\n }\n}\nvar isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\nfunction isElement(target) {\n return !!target.getAttribute;\n}\nfunction sortedIndex(array, value) {\n var low = 0;\n var high = array.length;\n while (low < high) {\n var mid = (low + high) >>> 1;\n if (sortByZIndex(array[mid], value) < 0) {\n low = mid + 1;\n }\n else {\n high = mid;\n }\n }\n return low;\n}\nfunction sortByZIndex(o1, o2) {\n var zIndex1 = Number(o1.parsedStyle.zIndex);\n var zIndex2 = Number(o2.parsedStyle.zIndex);\n if (zIndex1 === zIndex2) {\n var parent_1 = o1.parentNode;\n if (parent_1) {\n var children = parent_1.childNodes || [];\n return children.indexOf(o1) - children.indexOf(o2);\n }\n }\n return zIndex1 - zIndex2;\n}\nfunction findClosestClipPathTarget(object) {\n var _a;\n var el = object;\n do {\n var clipPath = (_a = el.parsedStyle) === null || _a === void 0 ? void 0 : _a.clipPath;\n if (clipPath)\n return el;\n el = el.parentElement;\n } while (el !== null);\n return null;\n}\nvar PX_SUFFIX = 'px';\nfunction setDOMSize($el, width, height) {\n if (isBrowser && $el.style) {\n $el.style.width = width + PX_SUFFIX;\n $el.style.height = height + PX_SUFFIX;\n }\n}\nfunction getStyle($el, property) {\n if (isBrowser) {\n return document.defaultView\n .getComputedStyle($el, null)\n .getPropertyValue(property);\n }\n}\nfunction getWidth($el) {\n var width = getStyle($el, 'width');\n if (width === 'auto') {\n return $el.offsetWidth;\n }\n return parseFloat(width);\n}\nfunction getHeight($el) {\n var height = getStyle($el, 'height');\n if (height === 'auto') {\n return $el.offsetHeight;\n }\n return parseFloat(height);\n}\n\n// borrow from hammer.js\nvar MOUSE_POINTER_ID = 1;\nvar TOUCH_TO_POINTER = {\n touchstart: 'pointerdown',\n touchend: 'pointerup',\n touchendoutside: 'pointerupoutside',\n touchmove: 'pointermove',\n touchcancel: 'pointercancel',\n};\nvar clock = typeof performance === 'object' && performance.now ? performance : Date;\n\nfunction isFillOrStrokeAffected(pointerEvents, fill, stroke) {\n // account for pointerEvents\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events\n var hasFill = false;\n var hasStroke = false;\n var isFillOtherThanNone = !!fill && !fill.isNone;\n var isStrokeOtherThanNone = !!stroke && !stroke.isNone;\n if (pointerEvents === 'visiblepainted' ||\n pointerEvents === 'painted' ||\n pointerEvents === 'auto') {\n hasFill = isFillOtherThanNone;\n hasStroke = isStrokeOtherThanNone;\n }\n else if (pointerEvents === 'visiblefill' || pointerEvents === 'fill') {\n hasFill = true;\n }\n else if (pointerEvents === 'visiblestroke' || pointerEvents === 'stroke') {\n hasStroke = true;\n }\n else if (pointerEvents === 'visible' || pointerEvents === 'all') {\n // The values of the fill and stroke do not affect event processing.\n hasFill = true;\n hasStroke = true;\n }\n return [hasFill, hasStroke];\n}\n\n/**\n * Thanks for following contributor of codes\n * https://gist.github.com/1866474\n * http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n * http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n * https://github.com/Financial-Times/polyfill-library/blob/master/polyfills/requestAnimationFrame/polyfill.js\n **/\nvar uId = 1;\nvar uniqueId = function () { return uId++; };\n// We use `self` instead of `window` for `WebWorker` support.\nvar root = typeof self === 'object' && self.self == self\n ? self\n : // @ts-ignore\n typeof global === 'object' && global.global == global\n ? // @ts-ignore\n global\n : {};\nvar nowOffset = Date.now();\n// use performance api if exist, otherwise use Date.now.\n// Date.now polyfill required.\nvar pnow = function () {\n if (root.performance && typeof root.performance.now === 'function') {\n return root.performance.now();\n }\n // fallback\n return Date.now() - nowOffset;\n};\nvar reservedCBs = {};\nvar lastTime = Date.now();\nvar polyfillRaf = function (callback) {\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n var currentTime = Date.now();\n var gap = currentTime - lastTime;\n var delay = gap > 16 ? 0 : 16 - gap;\n var id = uniqueId();\n reservedCBs[id] = callback;\n // keys(reservedCBs).length > 1 의미는 이미 setTimeout 이 걸려있는 경우.\n // 함께 callback 이 실행될 수 있게 reservedCBs 에만 추가해주고 return\n if (Object.keys(reservedCBs).length > 1)\n return id;\n setTimeout(function () {\n lastTime = currentTime;\n var copied = reservedCBs;\n reservedCBs = {};\n Object.keys(copied).forEach(function (key) { return copied[key](pnow()); });\n }, delay);\n return id;\n};\nvar polyfillCaf = function (id) {\n delete reservedCBs[id];\n};\nvar vendorPrefixes = ['', 'webkit', 'moz', 'ms', 'o'];\nvar getRequestAnimationFrame = function (vp) {\n if (typeof vp !== 'string')\n return polyfillRaf;\n if (vp === '')\n return root['requestAnimationFrame'];\n return root[vp + 'RequestAnimationFrame'];\n};\nvar getCancelAnimationFrame = function (vp) {\n if (typeof vp !== 'string')\n return polyfillCaf;\n if (vp === '')\n return root['cancelAnimationFrame'];\n return (root[vp + 'CancelAnimationFrame'] ||\n root[vp + 'CancelRequestAnimationFrame']);\n};\nvar find = function (arr, predicate) {\n var i = 0;\n while (arr[i] !== void 0) {\n if (predicate(arr[i]))\n return arr[i];\n i = i + 1;\n }\n};\nvar vp = find(vendorPrefixes, function (vp) { return !!getRequestAnimationFrame(vp); });\nvar raf = getRequestAnimationFrame(vp);\nvar caf = getCancelAnimationFrame(vp);\nroot.requestAnimationFrame = raf;\nroot.cancelAnimationFrame = caf;\n\nvar AsyncParallelHook = /** @class */ (function () {\n function AsyncParallelHook() {\n this.callbacks = [];\n }\n AsyncParallelHook.prototype.getCallbacksNum = function () {\n return this.callbacks.length;\n };\n AsyncParallelHook.prototype.tapPromise = function (options, fn) {\n this.callbacks.push(fn);\n };\n AsyncParallelHook.prototype.promise = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Promise.all(this.callbacks.map(function (callback) {\n return callback.apply(void 0, __spreadArray([], __read(args), false));\n }));\n };\n return AsyncParallelHook;\n}());\n\nvar AsyncSeriesWaterfallHook = /** @class */ (function () {\n function AsyncSeriesWaterfallHook() {\n this.callbacks = [];\n }\n AsyncSeriesWaterfallHook.prototype.tapPromise = function (options, fn) {\n this.callbacks.push(fn);\n };\n AsyncSeriesWaterfallHook.prototype.promise = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return __awaiter(this, void 0, void 0, function () {\n var result, i, callback;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.callbacks.length) return [3 /*break*/, 6];\n return [4 /*yield*/, (_a = this.callbacks)[0].apply(_a, __spreadArray([], __read(args), false))];\n case 1:\n result = _b.sent();\n i = 0;\n _b.label = 2;\n case 2:\n if (!(i < this.callbacks.length - 1)) return [3 /*break*/, 5];\n callback = this.callbacks[i];\n return [4 /*yield*/, callback(result)];\n case 3:\n // @ts-ignore\n result = _b.sent();\n _b.label = 4;\n case 4:\n i++;\n return [3 /*break*/, 2];\n case 5: return [2 /*return*/, result];\n case 6: return [2 /*return*/, null];\n }\n });\n });\n };\n return AsyncSeriesWaterfallHook;\n}());\n\nvar SyncHook = /** @class */ (function () {\n function SyncHook() {\n this.callbacks = [];\n }\n SyncHook.prototype.tap = function (options, fn) {\n this.callbacks.push(fn);\n };\n SyncHook.prototype.call = function () {\n /* eslint-disable-next-line prefer-rest-params */\n var argsArr = arguments;\n this.callbacks.forEach(function (callback) {\n /* eslint-disable-next-line prefer-spread */\n callback.apply(void 0, argsArr);\n });\n };\n return SyncHook;\n}());\n\nvar SyncWaterfallHook = /** @class */ (function () {\n function SyncWaterfallHook() {\n this.callbacks = [];\n }\n SyncWaterfallHook.prototype.tap = function (options, fn) {\n this.callbacks.push(fn);\n };\n SyncWaterfallHook.prototype.call = function () {\n if (this.callbacks.length) {\n /* eslint-disable-next-line prefer-rest-params */\n var argsArr = arguments;\n /* eslint-disable-next-line prefer-spread */\n var result = this.callbacks[0].apply(void 0, argsArr);\n for (var i = 0; i < this.callbacks.length - 1; i++) {\n var callback = this.callbacks[i];\n // @ts-ignore\n result = callback(result);\n }\n return result;\n }\n return null;\n };\n return SyncWaterfallHook;\n}());\n\nvar genericFontFamilies = [\n 'serif',\n 'sans-serif',\n 'monospace',\n 'cursive',\n 'fantasy',\n 'system-ui',\n];\nvar stringRegExp = /([\\\"\\'])[^\\'\\\"]+\\1/;\nfunction toFontString(attributes) {\n var fontSize = attributes.fontSize, fontFamily = attributes.fontFamily, fontStyle = attributes.fontStyle, fontVariant = attributes.fontVariant, fontWeight = attributes.fontWeight;\n // build canvas api font setting from individual components. Convert a numeric this.fontSize to px\n // const fontSizeString: string = isNumber(fontSize) ? `${fontSize}px` : fontSize.toString();\n var fontSizeString = (isNumber(fontSize) && \"\".concat(fontSize, \"px\")) || '16px';\n // Clean-up fontFamily property by quoting each font name\n // this will support font names with spaces\n var fontFamilies = fontFamily.split(',');\n for (var i = fontFamilies.length - 1; i >= 0; i--) {\n // Trim any extra white-space\n var fontFamily_1 = fontFamilies[i].trim();\n // Check if font already contains strings\n if (!stringRegExp.test(fontFamily_1) &&\n genericFontFamilies.indexOf(fontFamily_1) < 0) {\n fontFamily_1 = \"\\\"\".concat(fontFamily_1, \"\\\"\");\n }\n fontFamilies[i] = fontFamily_1;\n }\n return \"\".concat(fontStyle, \" \").concat(fontVariant, \" \").concat(fontWeight, \" \").concat(fontSizeString, \" \").concat(fontFamilies.join(','));\n}\n\n/**\n * @see /zh/docs/api/animation#支持变换的属性\n *\n * support the following formats like CSS Transform:\n *\n * scale\n * * scale(x, y)\n * * scaleX(x)\n * * scaleY(x)\n * * scaleZ(z)\n * * scale3d(x, y, z)\n *\n * translate (unit: none, px, %(relative to its bounds))\n * * translate(x, y) eg. translate(0, 0) translate(0, 30px) translate(100%, 100%)\n * * translateX(0)\n * * translateY(0)\n * * translateZ(0)\n * * translate3d(0, 0, 0)\n *\n * rotate (unit: deg rad turn)\n * * rotate(0.5turn) rotate(30deg) rotate(1rad)\n *\n * none\n *\n * unsupported for now:\n * * calc() eg. translate(calc(100% + 10px))\n * * matrix/matrix3d()\n * * skew/skewX/skewY\n * * perspective\n */\nvar CSSPropertyTransform = /** @class */ (function () {\n function CSSPropertyTransform() {\n this.parser = parseTransform;\n this.parserUnmemoize = parseTransformUnmemoize;\n this.parserWithCSSDisabled = parseTransformUnmemoize;\n this.mixer = mergeTransforms;\n }\n CSSPropertyTransform.prototype.calculator = function (name, oldParsed, parsed, object) {\n // 'none'\n if (parsed instanceof CSSKeywordValue) {\n return [];\n }\n return parsed;\n };\n CSSPropertyTransform.prototype.postProcessor = function (object) {\n var transform = object.parsedStyle.transform;\n parsedTransformToMat4(transform, object);\n };\n return CSSPropertyTransform;\n}());\n\n/**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/CSS/transform-origin\n * @example\n * [10px, 10px] [10%, 10%]\n */\nvar CSSPropertyTransformOrigin = /** @class */ (function () {\n function CSSPropertyTransformOrigin() {\n this.parser = parseTransformOrigin;\n this.parserUnmemoize = parseTransformOriginUnmemoize;\n // calculator(\n // name: string,\n // oldParsed: [CSSUnitValue, CSSUnitValue],\n // parsed: [CSSUnitValue, CSSUnitValue],\n // object: DisplayObject,\n // ): [number, number] {\n // console.log(object, parsed);\n // return [parsed[0].value, parsed[1].value];\n // // return [convertPercentUnit(parsed[0], 0, object), convertPercentUnit(parsed[1], 1, object)];\n // }\n }\n return CSSPropertyTransformOrigin;\n}());\n\nvar CSSPropertyZIndex = /** @class */ (function () {\n function CSSPropertyZIndex() {\n this.parser = parseNumber;\n this.parserUnmemoize = parseNumberUnmemoize;\n }\n CSSPropertyZIndex.prototype.calculator = function (name, oldParsed, computed, object) {\n return computed.value;\n };\n CSSPropertyZIndex.prototype.postProcessor = function (object) {\n if (object.parentNode) {\n var parentEntity = object.parentNode;\n var parentRenderable = parentEntity.renderable;\n var parentSortable = parentEntity.sortable;\n if (parentRenderable) {\n parentRenderable.dirty = true;\n }\n // need re-sort on parent\n if (parentSortable) {\n parentSortable.dirty = true;\n parentSortable.dirtyReason = SortReason.Z_INDEX_CHANGED;\n }\n }\n };\n return CSSPropertyZIndex;\n}());\n\nvar CircleUpdater = /** @class */ (function () {\n function CircleUpdater() {\n }\n CircleUpdater.prototype.update = function (parsedStyle, object) {\n var r = parsedStyle.r;\n var width = r * 2;\n var height = r * 2;\n return {\n width: width,\n height: height,\n };\n };\n return CircleUpdater;\n}());\n\nvar EllipseUpdater = /** @class */ (function () {\n function EllipseUpdater() {\n }\n EllipseUpdater.prototype.update = function (parsedStyle, object) {\n var rx = parsedStyle.rx, ry = parsedStyle.ry;\n var width = rx * 2;\n var height = ry * 2;\n return {\n width: width,\n height: height,\n };\n };\n return EllipseUpdater;\n}());\n\nvar LineUpdater = /** @class */ (function () {\n function LineUpdater() {\n }\n LineUpdater.prototype.update = function (parsedStyle) {\n var x1 = parsedStyle.x1, y1 = parsedStyle.y1, x2 = parsedStyle.x2, y2 = parsedStyle.y2;\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var width = maxX - minX;\n var height = maxY - minY;\n return {\n width: width,\n height: height,\n };\n };\n return LineUpdater;\n}());\n\nvar PathUpdater = /** @class */ (function () {\n function PathUpdater() {\n }\n PathUpdater.prototype.update = function (parsedStyle) {\n var path = parsedStyle.path;\n var _a = path.rect, width = _a.width, height = _a.height;\n return {\n width: width,\n height: height,\n };\n };\n return PathUpdater;\n}());\n\nvar PolylineUpdater = /** @class */ (function () {\n function PolylineUpdater() {\n }\n PolylineUpdater.prototype.update = function (parsedStyle) {\n if (parsedStyle.points && isArray(parsedStyle.points.points)) {\n var points = parsedStyle.points.points;\n // FIXME: account for miter lineJoin\n var minX = Math.min.apply(Math, __spreadArray([], __read(points.map(function (point) { return point[0]; })), false));\n var maxX = Math.max.apply(Math, __spreadArray([], __read(points.map(function (point) { return point[0]; })), false));\n var minY = Math.min.apply(Math, __spreadArray([], __read(points.map(function (point) { return point[1]; })), false));\n var maxY = Math.max.apply(Math, __spreadArray([], __read(points.map(function (point) { return point[1]; })), false));\n var width = maxX - minX;\n var height = maxY - minY;\n return {\n width: width,\n height: height,\n };\n }\n return {\n width: 0,\n height: 0,\n };\n };\n return PolylineUpdater;\n}());\n\nvar RectUpdater = /** @class */ (function () {\n function RectUpdater() {\n }\n RectUpdater.prototype.update = function (parsedStyle, object) {\n var img = parsedStyle.img, _a = parsedStyle.width, width = _a === void 0 ? 0 : _a, _b = parsedStyle.height, height = _b === void 0 ? 0 : _b;\n var contentWidth = width;\n var contentHeight = height;\n // resize with HTMLImageElement's size\n if (img && !isString(img)) {\n if (!contentWidth) {\n contentWidth = img.width;\n parsedStyle.width = contentWidth;\n }\n if (!contentHeight) {\n contentHeight = img.height;\n parsedStyle.height = contentHeight;\n }\n }\n return {\n width: contentWidth,\n height: contentHeight,\n };\n };\n return RectUpdater;\n}());\n\nvar TextUpdater = /** @class */ (function () {\n function TextUpdater(globalRuntime) {\n this.globalRuntime = globalRuntime;\n }\n TextUpdater.prototype.isReadyToMeasure = function (parsedStyle, object) {\n var text = parsedStyle.text, textAlign = parsedStyle.textAlign, textBaseline = parsedStyle.textBaseline, fontSize = parsedStyle.fontSize, fontStyle = parsedStyle.fontStyle, fontWeight = parsedStyle.fontWeight, fontVariant = parsedStyle.fontVariant, lineWidth = parsedStyle.lineWidth;\n return (text &&\n fontSize &&\n fontStyle &&\n fontWeight &&\n fontVariant &&\n textAlign &&\n textBaseline &&\n !isNil(lineWidth));\n };\n TextUpdater.prototype.update = function (parsedStyle, object) {\n var _a, _b;\n var text = parsedStyle.text, textAlign = parsedStyle.textAlign, lineWidth = parsedStyle.lineWidth, textBaseline = parsedStyle.textBaseline, dx = parsedStyle.dx, dy = parsedStyle.dy;\n if (!this.isReadyToMeasure(parsedStyle, object)) {\n parsedStyle.metrics = {\n font: '',\n width: 0,\n height: 0,\n lines: [],\n lineWidths: [],\n lineHeight: 0,\n maxLineWidth: 0,\n fontProperties: {\n ascent: 0,\n descent: 0,\n fontSize: 0,\n },\n lineMetrics: [],\n };\n return {\n width: 0,\n height: 0,\n x: 0,\n y: 0,\n offsetX: 0,\n offsetY: 0,\n };\n }\n var offscreenCanvas = (((_b = (_a = object === null || object === void 0 ? void 0 : object.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.getConfig()) || {}).offscreenCanvas;\n var metrics = this.globalRuntime.textService.measureText(text, parsedStyle, offscreenCanvas);\n parsedStyle.metrics = metrics;\n var width = metrics.width, height = metrics.height, lineHeight = metrics.lineHeight, fontProperties = metrics.fontProperties;\n // anchor is left-top by default\n var halfExtents = [width / 2, height / 2, 0];\n // default 'left'\n var anchor = [0, 1];\n var lineXOffset = 0;\n if (textAlign === 'center' || textAlign === 'middle') {\n lineXOffset = lineWidth / 2;\n anchor = [0.5, 1];\n }\n else if (textAlign === 'right' || textAlign === 'end') {\n lineXOffset = lineWidth;\n anchor = [1, 1];\n }\n var lineYOffset = 0;\n if (textBaseline === 'middle') {\n // eslint-disable-next-line prefer-destructuring\n lineYOffset = halfExtents[1];\n }\n else if (textBaseline === 'top' || textBaseline === 'hanging') {\n lineYOffset = halfExtents[1] * 2;\n }\n else if (textBaseline === 'alphabetic') {\n // prevent calling getImageData for ascent metrics\n lineYOffset = this.globalRuntime.enableCSSParsing\n ? lineHeight - fontProperties.ascent\n : 0;\n }\n else if (textBaseline === 'bottom' || textBaseline === 'ideographic') {\n lineYOffset = 0;\n }\n // TODO: ideographic & bottom\n if (dx) {\n lineXOffset += dx;\n }\n if (dy) {\n lineYOffset += dy;\n }\n // update anchor\n parsedStyle.anchor = [anchor[0], anchor[1], 0];\n return {\n width: halfExtents[0] * 2,\n height: halfExtents[1] * 2,\n offsetX: lineXOffset,\n offsetY: lineYOffset,\n };\n };\n return TextUpdater;\n}());\n\nfunction isFederatedEvent(value) {\n return !!value.type;\n}\n/**\n * An DOM-compatible synthetic event implementation that is \"forwarded\" on behalf of an original\n * FederatedEvent or native Event.\n */\nvar FederatedEvent = /** @class */ (function () {\n /**\n * The event boundary which manages this event. Propagation can only occur\n * within the boundary's jurisdiction.\n */\n function FederatedEvent(manager) {\n /**\n * The propagation phase.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase\n */\n this.eventPhase = FederatedEvent.prototype.NONE;\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Event/bubbles\n */\n this.bubbles = true;\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Event/cancelBubble\n */\n this.cancelBubble = true;\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Event/cancelable\n */\n this.cancelable = false;\n /** Flags whether the default response of the user agent was prevent through this event. */\n this.defaultPrevented = false;\n /** Flags whether propagation was stopped. */\n this.propagationStopped = false;\n /** Flags whether propagation was immediately stopped. */\n this.propagationImmediatelyStopped = false;\n /**\n * The coordinates of the evnet relative to the nearest DOM layer.\n * This is a non-standard property.\n */\n this.layer = new Point();\n /**\n * The coordinates of the event relative to the DOM document.\n * This is a non-standard property.\n * relative to the DOM document.\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent/pageX\n */\n this.page = new Point();\n /**\n * relative to Canvas, origin is left-top\n */\n this.canvas = new Point();\n /**\n * relative to Viewport, account for Camera\n */\n this.viewport = new Point();\n this.composed = false;\n this.NONE = 0;\n this.CAPTURING_PHASE = 1;\n this.AT_TARGET = 2;\n this.BUBBLING_PHASE = 3;\n this.manager = manager;\n }\n Object.defineProperty(FederatedEvent.prototype, \"name\", {\n /**\n * @deprecated\n */\n get: function () {\n return this.type;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedEvent.prototype, \"layerX\", {\n get: function () {\n return this.layer.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedEvent.prototype, \"layerY\", {\n get: function () {\n return this.layer.y;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedEvent.prototype, \"pageX\", {\n get: function () {\n return this.page.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedEvent.prototype, \"pageY\", {\n get: function () {\n return this.page.y;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedEvent.prototype, \"x\", {\n get: function () {\n return this.canvas.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedEvent.prototype, \"y\", {\n get: function () {\n return this.canvas.y;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedEvent.prototype, \"canvasX\", {\n get: function () {\n return this.canvas.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedEvent.prototype, \"canvasY\", {\n get: function () {\n return this.canvas.y;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedEvent.prototype, \"viewportX\", {\n get: function () {\n return this.viewport.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedEvent.prototype, \"viewportY\", {\n get: function () {\n return this.viewport.y;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * The propagation path for this event\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Event/composedPath\n *\n * So composedPath()[0] represents the original target.\n * @see https://polymer-library.polymer-project.org/3.0/docs/devguide/events#retargeting\n */\n FederatedEvent.prototype.composedPath = function () {\n if (this.manager && (!this.path || this.path[0] !== this.target)) {\n this.path = this.target ? this.manager.propagationPath(this.target) : [];\n }\n return this.path;\n };\n Object.defineProperty(FederatedEvent.prototype, \"propagationPath\", {\n /**\n * @deprecated\n */\n get: function () {\n return this.composedPath();\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Event/preventDefault\n */\n FederatedEvent.prototype.preventDefault = function () {\n if (this.nativeEvent instanceof Event && this.nativeEvent.cancelable) {\n this.nativeEvent.preventDefault();\n }\n this.defaultPrevented = true;\n };\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Event/stopImmediatePropagation\n */\n FederatedEvent.prototype.stopImmediatePropagation = function () {\n this.propagationImmediatelyStopped = true;\n };\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Event/stopPropagation\n */\n FederatedEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n /**\n * added for compatibility with DOM Event,\n * deprecated props and methods\n */\n FederatedEvent.prototype.initEvent = function () { };\n FederatedEvent.prototype.initUIEvent = function () { };\n FederatedEvent.prototype.clone = function () {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n return FederatedEvent;\n}());\n\nvar FederatedMouseEvent = /** @class */ (function (_super) {\n __extends(FederatedMouseEvent, _super);\n function FederatedMouseEvent() {\n var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n /**\n * The coordinates of the mouse event relative to the canvas.\n */\n _this.client = new Point();\n /**\n * The movement in this pointer relative to the last `mousemove` event.\n */\n _this.movement = new Point();\n /**\n * The offset of the pointer coordinates w.r.t. target DisplayObject in world space. This is\n * not supported at the moment.\n */\n _this.offset = new Point();\n /**\n * The pointer coordinates in world space.\n */\n _this.global = new Point();\n /**\n * The pointer coordinates in sceen space.\n */\n _this.screen = new Point();\n return _this;\n }\n Object.defineProperty(FederatedMouseEvent.prototype, \"clientX\", {\n get: function () {\n return this.client.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedMouseEvent.prototype, \"clientY\", {\n get: function () {\n return this.client.y;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedMouseEvent.prototype, \"movementX\", {\n get: function () {\n return this.movement.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedMouseEvent.prototype, \"movementY\", {\n get: function () {\n return this.movement.y;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedMouseEvent.prototype, \"offsetX\", {\n get: function () {\n return this.offset.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedMouseEvent.prototype, \"offsetY\", {\n get: function () {\n return this.offset.y;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedMouseEvent.prototype, \"globalX\", {\n get: function () {\n return this.global.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedMouseEvent.prototype, \"globalY\", {\n get: function () {\n return this.global.y;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedMouseEvent.prototype, \"screenX\", {\n get: function () {\n return this.screen.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FederatedMouseEvent.prototype, \"screenY\", {\n get: function () {\n return this.screen.y;\n },\n enumerable: false,\n configurable: true\n });\n FederatedMouseEvent.prototype.getModifierState = function (key) {\n return ('getModifierState' in this.nativeEvent &&\n this.nativeEvent.getModifierState(key));\n };\n FederatedMouseEvent.prototype.initMouseEvent = function () {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n return FederatedMouseEvent;\n}(FederatedEvent));\n\n// @ts-ignore\nvar FederatedPointerEvent = /** @class */ (function (_super) {\n __extends(FederatedPointerEvent, _super);\n function FederatedPointerEvent() {\n var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n /**\n * The width of the pointer's contact along the x-axis, measured in CSS pixels.\n * radiusX of TouchEvents will be represented by this value.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/width\n */\n _this.width = 0;\n /**\n * The height of the pointer's contact along the y-axis, measured in CSS pixels.\n * radiusY of TouchEvents will be represented by this value.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/height\n */\n _this.height = 0;\n /**\n * Indicates whether or not the pointer device that created the event is the primary pointer.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/isPrimary\n */\n _this.isPrimary = false;\n return _this;\n }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/getCoalescedEvents\n */\n FederatedPointerEvent.prototype.getCoalescedEvents = function () {\n if (this.type === 'pointermove' ||\n this.type === 'mousemove' ||\n this.type === 'touchmove') {\n // @ts-ignore\n return [this];\n }\n return [];\n };\n /**\n * @see https://chromestatus.com/feature/5765569655603200\n */\n FederatedPointerEvent.prototype.getPredictedEvents = function () {\n throw new Error('getPredictedEvents is not supported!');\n };\n /**\n * @see https://github.com/antvis/G/issues/1115\n * We currently reuses event objects in the event system,\n * avoiding the creation of a large number of event objects.\n * Reused objects are only used to carry different data,\n * such as coordinate information, native event objects,\n * and therefore the lifecycle is limited to the event handler,\n * which can lead to unintended consequences if an attempt is made to cache the entire event object.\n *\n * Therefore, while keeping the above performance considerations in mind, it is possible to provide a clone method that creates a new object when the user really wants to cache it, e.g.\n */\n FederatedPointerEvent.prototype.clone = function () {\n return this.manager.clonePointerEvent(this);\n };\n return FederatedPointerEvent;\n}(FederatedMouseEvent));\n\n// @ts-ignore\nvar FederatedWheelEvent = /** @class */ (function (_super) {\n __extends(FederatedWheelEvent, _super);\n function FederatedWheelEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FederatedWheelEvent.prototype.clone = function () {\n return this.manager.cloneWheelEvent(this);\n };\n return FederatedWheelEvent;\n}(FederatedMouseEvent));\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/Events/Creating_and_triggering_events\n *\n * @example\n const event = new CustomEvent('build', { detail: { prop1: 'xx' } });\n circle.addEventListener('build', (e) => {\n e.target; // circle\n e.detail; // { prop1: 'xx' }\n });\n\n circle.dispatchEvent(event);\n */\nvar CustomEvent = /** @class */ (function (_super) {\n __extends(CustomEvent, _super);\n // eslint-disable-next-line @typescript-eslint/ban-types\n function CustomEvent(eventName, object) {\n var _this = _super.call(this, null) || this;\n _this.type = eventName;\n _this.detail = object;\n // compatible with G 3.0\n Object.assign(_this, object);\n return _this;\n }\n return CustomEvent;\n}(FederatedEvent));\n\nvar DELEGATION_SPLITTER = ':';\n/**\n * Objects that can receive events and may have listeners for them.\n * eg. Element, Canvas, DisplayObject\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget\n */\nvar EventTarget = /** @class */ (function () {\n function EventTarget() {\n /**\n * event emitter\n */\n this.emitter = new EventEmitter();\n }\n /**\n * @deprecated\n * @alias addEventListener\n */\n EventTarget.prototype.on = function (type, listener, options) {\n this.addEventListener(type, listener, options);\n return this;\n };\n /**\n * support `capture` & `once` in options\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener\n */\n EventTarget.prototype.addEventListener = function (type, listener, options) {\n var capture = (isBoolean(options) && options) || (isObject(options) && options.capture);\n var once = isObject(options) && options.once;\n var context = isFunction(listener) ? undefined : listener;\n // compatible with G 3.0\n // support using delegate name in event type, eg. 'node:click'\n var useDelegatedName = false;\n var delegatedName = '';\n if (type.indexOf(DELEGATION_SPLITTER) > -1) {\n var _a = __read(type.split(DELEGATION_SPLITTER), 2), name_1 = _a[0], eventType = _a[1];\n type = eventType;\n delegatedName = name_1;\n useDelegatedName = true;\n }\n type = capture ? \"\".concat(type, \"capture\") : type;\n listener = isFunction(listener) ? listener : listener.handleEvent;\n // compatible with G 3.0\n if (useDelegatedName) {\n var originListener_1 = listener;\n listener = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (((_a = args[0].target) === null || _a === void 0 ? void 0 : _a.name) !== delegatedName) {\n return;\n }\n // @ts-ignore\n originListener_1.apply(void 0, __spreadArray([], __read(args), false));\n };\n }\n if (once) {\n this.emitter.once(type, listener, context);\n }\n else {\n this.emitter.on(type, listener, context);\n }\n return this;\n };\n /**\n * @deprecated\n * @alias removeEventListener\n */\n EventTarget.prototype.off = function (type, listener, options) {\n if (type) {\n this.removeEventListener(type, listener, options);\n }\n else {\n // remove all listeners\n this.removeAllEventListeners();\n }\n return this;\n };\n EventTarget.prototype.removeAllEventListeners = function () {\n this.emitter.removeAllListeners();\n };\n EventTarget.prototype.removeEventListener = function (type, listener, options) {\n var capture = (isBoolean(options) && options) || (isObject(options) && options.capture);\n var context = isFunction(listener) ? undefined : listener;\n type = capture ? \"\".concat(type, \"capture\") : type;\n listener = isFunction(listener) ? listener : listener === null || listener === void 0 ? void 0 : listener.handleEvent;\n this.emitter.off(type, listener, context);\n return this;\n };\n /**\n * @deprecated\n * @alias dispatchEvent\n */\n // eslint-disable-next-line @typescript-eslint/ban-types\n EventTarget.prototype.emit = function (eventName, object) {\n this.dispatchEvent(new CustomEvent(eventName, object));\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/dispatchEvent\n */\n EventTarget.prototype.dispatchEvent = function (e, skipPropagate) {\n var _a, _b;\n if (skipPropagate === void 0) { skipPropagate = false; }\n if (!isFederatedEvent(e)) {\n throw new Error('DisplayObject cannot propagate events outside of the Federated Events API');\n }\n // should account for Element / Document / Canvas\n var canvas;\n // @ts-ignore\n if (this.document) {\n canvas = this;\n // @ts-ignore\n }\n else if (this.defaultView) {\n canvas = this.defaultView;\n }\n else {\n canvas = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;\n }\n // assign event manager\n if (canvas) {\n e.manager = canvas.getEventService() || null;\n if (!e.manager) {\n return false;\n }\n e.defaultPrevented = false;\n e.path = [];\n if (!skipPropagate) {\n e.target = this;\n }\n (_b = e.manager) === null || _b === void 0 ? void 0 : _b.dispatchEvent(e, e.type, skipPropagate);\n }\n return !e.defaultPrevented;\n };\n return EventTarget;\n}());\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Node\n */\nvar Node = /** @class */ (function (_super) {\n __extends(Node, _super);\n function Node() {\n var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n _this.shadow = false;\n /**\n * points to canvas.document\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Node/ownerDocument\n */\n _this.ownerDocument = null;\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Node/isConnected\n * @example\n circle.isConnected; // false\n canvas.appendChild(circle);\n circle.isConnected; // true\n */\n _this.isConnected = false;\n /**\n * Returns node's node document's document base URL.\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Node\n */\n _this.baseURI = '';\n /**\n * Returns the children.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Node/childNodes\n */\n _this.childNodes = [];\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Node/nodeType\n */\n _this.nodeType = 0;\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Node/nodeName\n */\n _this.nodeName = '';\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Node/nodeValue\n */\n _this.nodeValue = null;\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ParentNode\n */\n _this.parentNode = null;\n return _this;\n }\n Node.isNode = function (target) {\n return !!target.childNodes;\n };\n Object.defineProperty(Node.prototype, \"textContent\", {\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Node/textContent\n */\n get: function () {\n var e_1, _a;\n var out = '';\n if (this.nodeName === Shape.TEXT) {\n // @ts-ignore\n out += this.style.text;\n }\n try {\n for (var _b = __values(this.childNodes), _c = _b.next(); !_c.done; _c = _b.next()) {\n var child = _c.value;\n if (child.nodeName === Shape.TEXT) {\n out += child.nodeValue;\n }\n else {\n out += child.textContent;\n }\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 return out;\n },\n set: function (content) {\n var _this = this;\n // remove all children\n this.childNodes.slice().forEach(function (child) {\n _this.removeChild(child);\n });\n if (this.nodeName === Shape.TEXT) {\n // @ts-ignore\n this.style.text = \"\".concat(content);\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Node/getRootNode\n */\n Node.prototype.getRootNode = function (opts) {\n if (opts === void 0) { opts = {}; }\n if (this.parentNode) {\n return this.parentNode.getRootNode(opts);\n }\n if (opts.composed && this.host) {\n return this.host.getRootNode(opts);\n }\n return this;\n };\n Node.prototype.hasChildNodes = function () {\n return this.childNodes.length > 0;\n };\n Node.prototype.isDefaultNamespace = function (namespace) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Node.prototype.lookupNamespaceURI = function (prefix) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Node.prototype.lookupPrefix = function (namespace) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Node.prototype.normalize = function () {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Node/isEqualNode\n */\n Node.prototype.isEqualNode = function (otherNode) {\n // TODO: compare 2 nodes, not sameness\n return this === otherNode;\n };\n Node.prototype.isSameNode = function (otherNode) {\n return this.isEqualNode(otherNode);\n };\n Object.defineProperty(Node.prototype, \"parent\", {\n /**\n * @deprecated\n * @alias parentNode\n */\n get: function () {\n return this.parentNode;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"parentElement\", {\n get: function () {\n return null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n get: function () {\n return null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"previousSibling\", {\n get: function () {\n return null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"firstChild\", {\n get: function () {\n return this.childNodes.length > 0 ? this.childNodes[0] : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"lastChild\", {\n get: function () {\n return this.childNodes.length > 0\n ? this.childNodes[this.childNodes.length - 1]\n : null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n * @see https://github.com/b-fuze/deno-dom/blob/master/src/dom/node.ts#L338\n */\n Node.prototype.compareDocumentPosition = function (other) {\n var _a;\n if (other === this) {\n // same node\n return 0;\n }\n // if (!(other instanceof Node)) {\n // throw new TypeError(\n // 'Node.compareDocumentPosition: Argument 1 does not implement interface Node.',\n // );\n // }\n var node1Root = other;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var node2Root = this;\n var node1Hierarchy = [node1Root];\n var node2Hierarchy = [node2Root];\n while ((_a = node1Root.parentNode) !== null && _a !== void 0 ? _a : node2Root.parentNode) {\n node1Root = node1Root.parentNode\n ? (node1Hierarchy.push(node1Root.parentNode), node1Root.parentNode)\n : node1Root;\n node2Root = node2Root.parentNode\n ? (node2Hierarchy.push(node2Root.parentNode), node2Root.parentNode)\n : node2Root;\n }\n // Check if they don't share the same root node\n if (node1Root !== node2Root) {\n return (Node.DOCUMENT_POSITION_DISCONNECTED |\n Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC |\n Node.DOCUMENT_POSITION_PRECEDING);\n }\n var longerHierarchy = node1Hierarchy.length > node2Hierarchy.length\n ? node1Hierarchy\n : node2Hierarchy;\n var shorterHierarchy = longerHierarchy === node1Hierarchy ? node2Hierarchy : node1Hierarchy;\n // Check if either is a container of the other\n if (longerHierarchy[longerHierarchy.length - shorterHierarchy.length] ===\n shorterHierarchy[0]) {\n return longerHierarchy === node1Hierarchy\n ? // other is a child of this\n Node.DOCUMENT_POSITION_CONTAINED_BY | Node.DOCUMENT_POSITION_FOLLOWING\n : // this is a child of other\n Node.DOCUMENT_POSITION_CONTAINS | Node.DOCUMENT_POSITION_PRECEDING;\n }\n // Find their first common ancestor and see whether they\n // are preceding or following\n var longerStart = longerHierarchy.length - shorterHierarchy.length;\n for (var i = shorterHierarchy.length - 1; i >= 0; i--) {\n var shorterHierarchyNode = shorterHierarchy[i];\n var longerHierarchyNode = longerHierarchy[longerStart + i];\n // We found the first common ancestor\n if (longerHierarchyNode !== shorterHierarchyNode) {\n var siblings = shorterHierarchyNode.parentNode.childNodes;\n if (siblings.indexOf(shorterHierarchyNode) <\n siblings.indexOf(longerHierarchyNode)) {\n // Shorter is before longer\n if (shorterHierarchy === node1Hierarchy) {\n // Other is before this\n return Node.DOCUMENT_POSITION_PRECEDING;\n }\n else {\n // This is before other\n return Node.DOCUMENT_POSITION_FOLLOWING;\n }\n }\n else {\n // Longer is before shorter\n if (longerHierarchy === node1Hierarchy) {\n // Other is before this\n return Node.DOCUMENT_POSITION_PRECEDING;\n }\n else {\n // Other is after this\n return Node.DOCUMENT_POSITION_FOLLOWING;\n }\n }\n }\n }\n return Node.DOCUMENT_POSITION_FOLLOWING;\n };\n /**\n * @deprecated\n * @alias contains\n */\n Node.prototype.contain = function (other) {\n return this.contains(other);\n };\n Node.prototype.contains = function (other) {\n // the node itself, one of its direct children\n var tmp = other;\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Node/contains\n while (tmp && this !== tmp) {\n tmp = tmp.parentNode;\n }\n return !!tmp;\n };\n Node.prototype.getAncestor = function (n) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var temp = this;\n while (n > 0 && temp) {\n temp = temp.parentNode;\n n--;\n }\n return temp;\n };\n Node.prototype.forEach = function (callback, assigned) {\n if (assigned === void 0) { assigned = false; }\n if (!callback(this)) {\n (assigned ? this.childNodes.slice() : this.childNodes).forEach(function (child) {\n child.forEach(callback);\n });\n }\n };\n /**\n * Both nodes are in different documents or different trees in the same document.\n */\n Node.DOCUMENT_POSITION_DISCONNECTED = 1;\n /**\n * otherNode precedes the node in either a pre-order depth-first traversal\n * of a tree containing both (e.g., as an ancestor or previous sibling or a descendant of a previous sibling or previous sibling of an ancestor) or (if they are disconnected) in an arbitrary but consistent ordering.\n */\n Node.DOCUMENT_POSITION_PRECEDING = 2;\n /**\n * otherNode follows the node in either a pre-order depth-first traversal of a tree containing both (e.g., as a descendant or following sibling or a descendant of a following sibling or following sibling of an ancestor) or (if they are disconnected) in an arbitrary but consistent ordering.\n */\n Node.DOCUMENT_POSITION_FOLLOWING = 4;\n /**\n * otherNode is an ancestor of the node.\n */\n Node.DOCUMENT_POSITION_CONTAINS = 8;\n /**\n * otherNode is a descendant of the node.\n */\n Node.DOCUMENT_POSITION_CONTAINED_BY = 16;\n /**\n * The result relies upon arbitrary and/or implementation-specific behavior and is not guaranteed to be portable.\n */\n Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32;\n return Node;\n}(EventTarget));\n\nvar PROPAGATION_LIMIT = 2048;\nvar EventService = /** @class */ (function () {\n function EventService(globalRuntime, context) {\n var _this = this;\n this.globalRuntime = globalRuntime;\n this.context = context;\n this.emitter = new EventEmitter();\n /**\n * Store HTML elements in current canvas.\n */\n this.nativeHTMLMap = new WeakMap();\n this.cursor = 'default';\n this.mappingTable = {};\n this.mappingState = {\n trackingData: {},\n };\n this.eventPool = new Map();\n this.tmpMatrix = mat4.create();\n this.tmpVec3 = vec3.create();\n this.onPointerDown = function (from) {\n var e = _this.createPointerEvent(from);\n _this.dispatchEvent(e, 'pointerdown');\n if (e.pointerType === 'touch') {\n _this.dispatchEvent(e, 'touchstart');\n }\n else if (e.pointerType === 'mouse' || e.pointerType === 'pen') {\n var isRightButton = e.button === 2;\n _this.dispatchEvent(e, isRightButton ? 'rightdown' : 'mousedown');\n }\n var trackingData = _this.trackingData(from.pointerId);\n trackingData.pressTargetsByButton[from.button] = e.composedPath();\n _this.freeEvent(e);\n };\n this.onPointerUp = function (from) {\n var _a;\n var now = clock.now();\n var e = _this.createPointerEvent(from, undefined, undefined, _this.context.config.alwaysTriggerPointerEventOnCanvas\n ? _this.rootTarget\n : undefined);\n _this.dispatchEvent(e, 'pointerup');\n if (e.pointerType === 'touch') {\n _this.dispatchEvent(e, 'touchend');\n }\n else if (e.pointerType === 'mouse' || e.pointerType === 'pen') {\n var isRightButton = e.button === 2;\n _this.dispatchEvent(e, isRightButton ? 'rightup' : 'mouseup');\n }\n var trackingData = _this.trackingData(from.pointerId);\n var pressTarget = _this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n var clickTarget = pressTarget;\n // pointerupoutside only bubbles. It only bubbles upto the parent that doesn't contain\n // the pointerup location.\n if (pressTarget && !e.composedPath().includes(pressTarget)) {\n var currentTarget = pressTarget;\n while (currentTarget && !e.composedPath().includes(currentTarget)) {\n e.currentTarget = currentTarget;\n _this.notifyTarget(e, 'pointerupoutside');\n if (e.pointerType === 'touch') {\n _this.notifyTarget(e, 'touchendoutside');\n }\n else if (e.pointerType === 'mouse' || e.pointerType === 'pen') {\n var isRightButton = e.button === 2;\n _this.notifyTarget(e, isRightButton ? 'rightupoutside' : 'mouseupoutside');\n }\n if (Node.isNode(currentTarget)) {\n currentTarget = currentTarget.parentNode;\n }\n }\n delete trackingData.pressTargetsByButton[from.button];\n // currentTarget is the most specific ancestor holding both the pointerdown and pointerup\n // targets. That is - it's our click target!\n clickTarget = currentTarget;\n }\n if (clickTarget) {\n var clickEvent = _this.clonePointerEvent(e, 'click');\n clickEvent.target = clickTarget;\n clickEvent.path = [];\n if (!trackingData.clicksByButton[from.button]) {\n trackingData.clicksByButton[from.button] = {\n clickCount: 0,\n target: clickEvent.target,\n timeStamp: now,\n };\n }\n var clickHistory = trackingData.clicksByButton[from.button];\n if (clickHistory.target === clickEvent.target &&\n now - clickHistory.timeStamp < 200) {\n ++clickHistory.clickCount;\n }\n else {\n clickHistory.clickCount = 1;\n }\n clickHistory.target = clickEvent.target;\n clickHistory.timeStamp = now;\n clickEvent.detail = clickHistory.clickCount;\n // @see https://github.com/antvis/G/issues/1091\n if (!((_a = e.detail) === null || _a === void 0 ? void 0 : _a.preventClick)) {\n if (!_this.context.config.useNativeClickEvent &&\n (clickEvent.pointerType === 'mouse' ||\n clickEvent.pointerType === 'touch')) {\n _this.dispatchEvent(clickEvent, 'click');\n }\n _this.dispatchEvent(clickEvent, 'pointertap');\n }\n _this.freeEvent(clickEvent);\n }\n _this.freeEvent(e);\n };\n this.onPointerMove = function (from) {\n var e = _this.createPointerEvent(from, undefined, undefined, _this.context.config.alwaysTriggerPointerEventOnCanvas\n ? _this.rootTarget\n : undefined);\n var isMouse = e.pointerType === 'mouse' || e.pointerType === 'pen';\n var trackingData = _this.trackingData(from.pointerId);\n var outTarget = _this.findMountedTarget(trackingData.overTargets);\n // First pointerout/pointerleave\n if (trackingData.overTargets && outTarget !== e.target) {\n // pointerout always occurs on the overTarget when the pointer hovers over another element.\n var outType = from.type === 'mousemove' ? 'mouseout' : 'pointerout';\n var outEvent = _this.createPointerEvent(from, outType, outTarget || undefined);\n _this.dispatchEvent(outEvent, 'pointerout');\n if (isMouse)\n _this.dispatchEvent(outEvent, 'mouseout');\n // If the pointer exits overTarget and its descendants, then a pointerleave event is also fired. This event\n // is dispatched to all ancestors that no longer capture the pointer.\n if (!e.composedPath().includes(outTarget)) {\n var leaveEvent = _this.createPointerEvent(from, 'pointerleave', outTarget || undefined);\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n while (leaveEvent.target &&\n !e.composedPath().includes(leaveEvent.target)) {\n leaveEvent.currentTarget = leaveEvent.target;\n _this.notifyTarget(leaveEvent);\n if (isMouse) {\n _this.notifyTarget(leaveEvent, 'mouseleave');\n }\n if (Node.isNode(leaveEvent.target)) {\n leaveEvent.target = leaveEvent.target.parentNode;\n }\n }\n _this.freeEvent(leaveEvent);\n }\n _this.freeEvent(outEvent);\n }\n // Then pointerover\n if (outTarget !== e.target) {\n // pointerover always occurs on the new overTarget\n var overType = from.type === 'mousemove' ? 'mouseover' : 'pointerover';\n var overEvent = _this.clonePointerEvent(e, overType); // clone faster\n _this.dispatchEvent(overEvent, 'pointerover');\n if (isMouse)\n _this.dispatchEvent(overEvent, 'mouseover');\n // Probe whether the newly hovered Node is an ancestor of the original overTarget.\n var overTargetAncestor = outTarget && Node.isNode(outTarget) && outTarget.parentNode;\n while (overTargetAncestor &&\n overTargetAncestor !==\n (Node.isNode(_this.rootTarget) && _this.rootTarget.parentNode)) {\n if (overTargetAncestor === e.target)\n break;\n overTargetAncestor = overTargetAncestor.parentNode;\n }\n // The pointer has entered a non-ancestor of the original overTarget. This means we need a pointerentered\n // event.\n var didPointerEnter = !overTargetAncestor ||\n overTargetAncestor ===\n (Node.isNode(_this.rootTarget) && _this.rootTarget.parentNode);\n if (didPointerEnter) {\n var enterEvent = _this.clonePointerEvent(e, 'pointerenter');\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n while (enterEvent.target &&\n enterEvent.target !== outTarget &&\n enterEvent.target !==\n (Node.isNode(_this.rootTarget) && _this.rootTarget.parentNode)) {\n enterEvent.currentTarget = enterEvent.target;\n _this.notifyTarget(enterEvent);\n if (isMouse)\n _this.notifyTarget(enterEvent, 'mouseenter');\n if (Node.isNode(enterEvent.target)) {\n enterEvent.target = enterEvent.target.parentNode;\n }\n }\n _this.freeEvent(enterEvent);\n }\n _this.freeEvent(overEvent);\n }\n // Then pointermove\n _this.dispatchEvent(e, 'pointermove');\n if (e.pointerType === 'touch')\n _this.dispatchEvent(e, 'touchmove');\n if (isMouse) {\n _this.dispatchEvent(e, 'mousemove');\n _this.cursor = _this.getCursor(e.target);\n }\n trackingData.overTargets = e.composedPath();\n _this.freeEvent(e);\n };\n this.onPointerOut = function (from) {\n var trackingData = _this.trackingData(from.pointerId);\n if (trackingData.overTargets) {\n var isMouse = from.pointerType === 'mouse' || from.pointerType === 'pen';\n var outTarget = _this.findMountedTarget(trackingData.overTargets);\n // pointerout first\n var outEvent = _this.createPointerEvent(from, 'pointerout', outTarget || undefined);\n _this.dispatchEvent(outEvent);\n if (isMouse)\n _this.dispatchEvent(outEvent, 'mouseout');\n // pointerleave(s) are also dispatched b/c the pointer must've left rootTarget and its descendants to\n // get an upstream pointerout event (upstream events do not know rootTarget has descendants).\n var leaveEvent = _this.createPointerEvent(from, 'pointerleave', outTarget || undefined);\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n while (leaveEvent.target &&\n leaveEvent.target !==\n (Node.isNode(_this.rootTarget) && _this.rootTarget.parentNode)) {\n leaveEvent.currentTarget = leaveEvent.target;\n _this.notifyTarget(leaveEvent);\n if (isMouse) {\n _this.notifyTarget(leaveEvent, 'mouseleave');\n }\n if (Node.isNode(leaveEvent.target)) {\n leaveEvent.target = leaveEvent.target.parentNode;\n }\n }\n trackingData.overTargets = null;\n _this.freeEvent(outEvent);\n _this.freeEvent(leaveEvent);\n }\n _this.cursor = null;\n };\n this.onPointerOver = function (from) {\n var trackingData = _this.trackingData(from.pointerId);\n var e = _this.createPointerEvent(from);\n var isMouse = e.pointerType === 'mouse' || e.pointerType === 'pen';\n _this.dispatchEvent(e, 'pointerover');\n if (isMouse)\n _this.dispatchEvent(e, 'mouseover');\n if (e.pointerType === 'mouse')\n _this.cursor = _this.getCursor(e.target);\n // pointerenter events must be fired since the pointer entered from upstream.\n var enterEvent = _this.clonePointerEvent(e, 'pointerenter');\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n while (enterEvent.target &&\n enterEvent.target !==\n (Node.isNode(_this.rootTarget) && _this.rootTarget.parentNode)) {\n enterEvent.currentTarget = enterEvent.target;\n _this.notifyTarget(enterEvent);\n if (isMouse) {\n // mouseenter should not bubble\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseenter_event#usage_notes\n _this.notifyTarget(enterEvent, 'mouseenter');\n }\n if (Node.isNode(enterEvent.target)) {\n enterEvent.target = enterEvent.target.parentNode;\n }\n }\n trackingData.overTargets = e.composedPath();\n _this.freeEvent(e);\n _this.freeEvent(enterEvent);\n };\n this.onPointerUpOutside = function (from) {\n var trackingData = _this.trackingData(from.pointerId);\n var pressTarget = _this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n var e = _this.createPointerEvent(from);\n if (pressTarget) {\n var currentTarget = pressTarget;\n while (currentTarget) {\n e.currentTarget = currentTarget;\n _this.notifyTarget(e, 'pointerupoutside');\n if (e.pointerType === 'touch') ;\n else if (e.pointerType === 'mouse' || e.pointerType === 'pen') {\n _this.notifyTarget(e, e.button === 2 ? 'rightupoutside' : 'mouseupoutside');\n }\n if (Node.isNode(currentTarget)) {\n currentTarget = currentTarget.parentNode;\n }\n }\n delete trackingData.pressTargetsByButton[from.button];\n }\n _this.freeEvent(e);\n };\n this.onWheel = function (from) {\n var wheelEvent = _this.createWheelEvent(from);\n _this.dispatchEvent(wheelEvent);\n _this.freeEvent(wheelEvent);\n };\n this.onClick = function (from) {\n if (_this.context.config.useNativeClickEvent) {\n var e = _this.createPointerEvent(from);\n _this.dispatchEvent(e);\n _this.freeEvent(e);\n }\n };\n this.onPointerCancel = function (from) {\n var e = _this.createPointerEvent(from, undefined, undefined, _this.context.config.alwaysTriggerPointerEventOnCanvas\n ? _this.rootTarget\n : undefined);\n _this.dispatchEvent(e);\n _this.freeEvent(e);\n };\n }\n EventService.prototype.init = function () {\n this.rootTarget = this.context.renderingContext.root.parentNode; // document\n this.addEventMapping('pointerdown', this.onPointerDown);\n this.addEventMapping('pointerup', this.onPointerUp);\n this.addEventMapping('pointermove', this.onPointerMove);\n this.addEventMapping('pointerout', this.onPointerOut);\n this.addEventMapping('pointerleave', this.onPointerOut);\n this.addEventMapping('pointercancel', this.onPointerCancel);\n this.addEventMapping('pointerover', this.onPointerOver);\n this.addEventMapping('pointerupoutside', this.onPointerUpOutside);\n this.addEventMapping('wheel', this.onWheel);\n this.addEventMapping('click', this.onClick);\n };\n EventService.prototype.destroy = function () {\n this.emitter.removeAllListeners();\n this.mappingTable = {};\n this.mappingState = {};\n this.eventPool.clear();\n };\n EventService.prototype.client2Viewport = function (client) {\n var bbox = this.context.contextService.getBoundingClientRect();\n return new Point(client.x - ((bbox === null || bbox === void 0 ? void 0 : bbox.left) || 0), client.y - ((bbox === null || bbox === void 0 ? void 0 : bbox.top) || 0));\n };\n EventService.prototype.viewport2Client = function (canvas) {\n var bbox = this.context.contextService.getBoundingClientRect();\n return new Point(canvas.x + ((bbox === null || bbox === void 0 ? void 0 : bbox.left) || 0), canvas.y + ((bbox === null || bbox === void 0 ? void 0 : bbox.top) || 0));\n };\n EventService.prototype.viewport2Canvas = function (_a) {\n var x = _a.x, y = _a.y;\n var canvas = this.rootTarget.defaultView;\n var camera = canvas.getCamera();\n var _b = this.context.config, width = _b.width, height = _b.height;\n var projectionMatrixInverse = camera.getPerspectiveInverse();\n var worldMatrix = camera.getWorldTransform();\n var vpMatrix = mat4.multiply(this.tmpMatrix, worldMatrix, projectionMatrixInverse);\n var viewport = vec3.set(this.tmpVec3, (x / width) * 2 - 1, (1 - y / height) * 2 - 1, 0);\n vec3.transformMat4(viewport, viewport, vpMatrix);\n return new Point(viewport[0], viewport[1]);\n };\n EventService.prototype.canvas2Viewport = function (canvasP) {\n var canvas = this.rootTarget.defaultView;\n var camera = canvas.getCamera();\n // World -> Clip\n var projectionMatrix = camera.getPerspective();\n var viewMatrix = camera.getViewTransform();\n var vpMatrix = mat4.multiply(this.tmpMatrix, projectionMatrix, viewMatrix);\n var clip = vec3.set(this.tmpVec3, canvasP.x, canvasP.y, 0);\n vec3.transformMat4(this.tmpVec3, this.tmpVec3, vpMatrix);\n // Clip -> NDC -> Viewport, flip Y\n var _a = this.context.config, width = _a.width, height = _a.height;\n return new Point(((clip[0] + 1) / 2) * width, (1 - (clip[1] + 1) / 2) * height);\n };\n EventService.prototype.setPickHandler = function (pickHandler) {\n this.pickHandler = pickHandler;\n };\n EventService.prototype.addEventMapping = function (type, fn) {\n if (!this.mappingTable[type]) {\n this.mappingTable[type] = [];\n }\n this.mappingTable[type].push({\n fn: fn,\n priority: 0,\n });\n this.mappingTable[type].sort(function (a, b) { return a.priority - b.priority; });\n };\n EventService.prototype.mapEvent = function (e) {\n if (!this.rootTarget) {\n return;\n }\n var mappers = this.mappingTable[e.type];\n if (mappers) {\n for (var i = 0, j = mappers.length; i < j; i++) {\n mappers[i].fn(e);\n }\n }\n else {\n console.warn(\"[EventService]: Event mapping not defined for \".concat(e.type));\n }\n };\n EventService.prototype.dispatchEvent = function (e, type, skipPropagate) {\n // Canvas should skip\n if (!skipPropagate) {\n e.propagationStopped = false;\n e.propagationImmediatelyStopped = false;\n this.propagate(e, type);\n }\n else {\n // target phase\n e.eventPhase = e.AT_TARGET;\n var canvas = this.rootTarget.defaultView || null;\n e.currentTarget = canvas;\n this.notifyListeners(e, type);\n }\n this.emitter.emit(type || e.type, e);\n };\n EventService.prototype.propagate = function (e, type) {\n if (!e.target) {\n return;\n }\n // [target, parent, root, Canvas]\n var composedPath = e.composedPath();\n // event flow: capture -> target -> bubbling\n // capture phase\n e.eventPhase = e.CAPTURING_PHASE;\n for (var i = composedPath.length - 1; i >= 1; i--) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n // target phase\n e.eventPhase = e.AT_TARGET;\n e.currentTarget = e.target;\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n // find current target in composed path\n var index = composedPath.indexOf(e.currentTarget);\n // bubbling phase\n e.eventPhase = e.BUBBLING_PHASE;\n for (var i = index + 1; i < composedPath.length; i++) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n };\n EventService.prototype.propagationPath = function (target) {\n var propagationPath = [target];\n var canvas = this.rootTarget.defaultView || null;\n if (canvas && canvas === target) {\n propagationPath.unshift(canvas.document);\n return propagationPath;\n }\n for (var i = 0; i < PROPAGATION_LIMIT && target !== this.rootTarget; i++) {\n // if (Node.isNode(target) && !target.parentNode) {\n // throw new Error('Cannot find propagation path to disconnected target');\n // }\n if (Node.isNode(target) && target.parentNode) {\n // [target, parent, parent, root]\n propagationPath.push(target.parentNode);\n target = target.parentNode;\n }\n }\n if (canvas) {\n // @ts-ignore\n propagationPath.push(canvas);\n }\n return propagationPath;\n };\n EventService.prototype.hitTest = function (position) {\n var viewportX = position.viewportX, viewportY = position.viewportY;\n var _a = this.context.config, width = _a.width, height = _a.height, disableHitTesting = _a.disableHitTesting;\n // outside canvas\n if (viewportX < 0 ||\n viewportY < 0 ||\n viewportX > width ||\n viewportY > height) {\n return null;\n }\n return ((!disableHitTesting && this.pickHandler(position)) ||\n this.rootTarget || // return Document\n null);\n };\n /**\n * whether the native event trigger came from Canvas,\n * should account for HTML shape\n */\n EventService.prototype.isNativeEventFromCanvas = function (event) {\n var _a;\n var $el = this.context.contextService.getDomElement();\n var target = (_a = event.nativeEvent) === null || _a === void 0 ? void 0 : _a.target;\n if (target) {\n // from \n if (target === $el) {\n return true;\n }\n // from \n if ($el && $el.contains) {\n return $el.contains(target);\n }\n }\n if (event.nativeEvent.composedPath) {\n return event.nativeEvent.composedPath().indexOf($el) > -1;\n }\n // account for Touch\n return false;\n };\n /**\n * Find HTML from composed path in native UI event.\n */\n EventService.prototype.getExistedHTML = function (event) {\n var e_1, _a;\n if (event.nativeEvent.composedPath) {\n try {\n for (var _b = __values(event.nativeEvent.composedPath()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var eventTarget = _c.value;\n var existed = this.nativeHTMLMap.get(eventTarget);\n if (existed) {\n return existed;\n }\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 return null;\n };\n EventService.prototype.pickTarget = function (event) {\n return this.hitTest({\n clientX: event.clientX,\n clientY: event.clientY,\n viewportX: event.viewportX,\n viewportY: event.viewportY,\n x: event.canvasX,\n y: event.canvasY,\n });\n };\n EventService.prototype.createPointerEvent = function (from, type, target, fallbackTarget) {\n var event = this.allocateEvent(FederatedPointerEvent);\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n var existedHTML = this.getExistedHTML(event);\n event.target =\n target !== null && target !== void 0 ? target : (existedHTML ||\n (this.isNativeEventFromCanvas(event) && this.pickTarget(event)) ||\n fallbackTarget);\n if (typeof type === 'string') {\n event.type = type;\n }\n return event;\n };\n EventService.prototype.createWheelEvent = function (from) {\n var event = this.allocateEvent(FederatedWheelEvent);\n this.copyWheelData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n var existedHTML = this.getExistedHTML(event);\n event.target =\n existedHTML ||\n (this.isNativeEventFromCanvas(event) && this.pickTarget(event));\n return event;\n };\n EventService.prototype.trackingData = function (id) {\n if (!this.mappingState.trackingData[id]) {\n this.mappingState.trackingData[id] = {\n pressTargetsByButton: {},\n clicksByButton: {},\n overTarget: null,\n };\n }\n return this.mappingState.trackingData[id];\n };\n EventService.prototype.cloneWheelEvent = function (from) {\n var event = this.allocateEvent(FederatedWheelEvent);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from.originalEvent;\n this.copyWheelData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.target = from.target;\n event.path = from.composedPath().slice();\n event.type = from.type;\n return event;\n };\n EventService.prototype.clonePointerEvent = function (from, type) {\n var event = this.allocateEvent(FederatedPointerEvent);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from.originalEvent;\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.target = from.target;\n event.path = from.composedPath().slice();\n event.type = type !== null && type !== void 0 ? type : event.type;\n return event;\n };\n EventService.prototype.copyPointerData = function (from, to) {\n // if (\n // !(\n // from instanceof FederatedPointerEvent &&\n // to instanceof FederatedPointerEvent\n // )\n // )\n // return;\n to.pointerId = from.pointerId;\n to.width = from.width;\n to.height = from.height;\n to.isPrimary = from.isPrimary;\n to.pointerType = from.pointerType;\n to.pressure = from.pressure;\n to.tangentialPressure = from.tangentialPressure;\n to.tiltX = from.tiltX;\n to.tiltY = from.tiltY;\n to.twist = from.twist;\n };\n EventService.prototype.copyMouseData = function (from, to) {\n // if (\n // !(\n // from instanceof FederatedMouseEvent && to instanceof FederatedMouseEvent\n // )\n // )\n // return;\n to.altKey = from.altKey;\n to.button = from.button;\n to.buttons = from.buttons;\n to.ctrlKey = from.ctrlKey;\n to.metaKey = from.metaKey;\n to.shiftKey = from.shiftKey;\n to.client.copyFrom(from.client);\n to.movement.copyFrom(from.movement);\n to.canvas.copyFrom(from.canvas);\n to.screen.copyFrom(from.screen);\n to.global.copyFrom(from.global);\n to.offset.copyFrom(from.offset);\n };\n EventService.prototype.copyWheelData = function (from, to) {\n to.deltaMode = from.deltaMode;\n to.deltaX = from.deltaX;\n to.deltaY = from.deltaY;\n to.deltaZ = from.deltaZ;\n };\n EventService.prototype.copyData = function (from, to) {\n to.isTrusted = from.isTrusted;\n to.timeStamp = clock.now();\n to.type = from.type;\n to.detail = from.detail;\n to.view = from.view;\n to.page.copyFrom(from.page);\n to.viewport.copyFrom(from.viewport);\n };\n EventService.prototype.allocateEvent = function (constructor) {\n if (!this.eventPool.has(constructor)) {\n this.eventPool.set(constructor, []);\n }\n // @ts-ignore\n var event = this.eventPool.get(constructor).pop() ||\n new constructor(this);\n event.eventPhase = event.NONE;\n event.currentTarget = null;\n event.path = [];\n event.target = null;\n return event;\n };\n EventService.prototype.freeEvent = function (event) {\n if (event.manager !== this)\n throw new Error('It is illegal to free an event not managed by this EventBoundary!');\n var constructor = event.constructor;\n if (!this.eventPool.has(constructor)) {\n this.eventPool.set(constructor, []);\n }\n // @ts-ignore\n this.eventPool.get(constructor).push(event);\n };\n EventService.prototype.notifyTarget = function (e, type) {\n type = type !== null && type !== void 0 ? type : e.type;\n var key = e.eventPhase === e.CAPTURING_PHASE || e.eventPhase === e.AT_TARGET\n ? \"\".concat(type, \"capture\")\n : type;\n this.notifyListeners(e, key);\n if (e.eventPhase === e.AT_TARGET) {\n this.notifyListeners(e, type);\n }\n };\n EventService.prototype.notifyListeners = function (e, type) {\n // hack EventEmitter, stops if the `propagationImmediatelyStopped` flag is set\n // @ts-ignore\n var emitter = e.currentTarget.emitter;\n // @ts-ignore\n var listeners = emitter._events[type];\n if (!listeners)\n return;\n if ('fn' in listeners) {\n if (listeners.once) {\n emitter.removeListener(type, listeners.fn, undefined, true);\n }\n listeners.fn.call(e.currentTarget || listeners.context, e);\n // listeners.fn.call(listeners.context, e);\n }\n else {\n for (var i = 0; i < listeners.length && !e.propagationImmediatelyStopped; i++) {\n if (listeners[i].once) {\n emitter.removeListener(type, listeners[i].fn, undefined, true);\n }\n listeners[i].fn.call(e.currentTarget || listeners[i].context, e);\n // listeners[i].fn.call(listeners[i].context, e);\n }\n }\n };\n /**\n * some detached nodes may exist in propagation path, need to skip them\n */\n EventService.prototype.findMountedTarget = function (propagationPath) {\n if (!propagationPath) {\n return null;\n }\n var currentTarget = propagationPath[propagationPath.length - 1];\n for (var i = propagationPath.length - 2; i >= 0; i--) {\n var target = propagationPath[i];\n if (target === this.rootTarget ||\n (Node.isNode(target) && target.parentNode === currentTarget)) {\n currentTarget = propagationPath[i];\n }\n else {\n break;\n }\n }\n return currentTarget;\n };\n EventService.prototype.getCursor = function (target) {\n var tmp = target;\n while (tmp) {\n var cursor = isElement(tmp) && tmp.getAttribute('cursor');\n if (cursor) {\n return cursor;\n }\n tmp = Node.isNode(tmp) && tmp.parentNode;\n }\n };\n return EventService;\n}());\n\n/**\n * used in following scenes:\n * - g `ctx.measureText`\n * - g-plugin-canvas-picker `ctx.isPointInPath`\n * - g-plugin-device-renderer `ctx.createLinearGradient` and generate texture\n *\n * @see https://blog.scottlogic.com/2020/03/19/offscreen-canvas.html\n */\nvar OffscreenCanvasCreator = /** @class */ (function () {\n function OffscreenCanvasCreator() {\n }\n OffscreenCanvasCreator.prototype.getOrCreateCanvas = function (offscreenCanvas, contextAttributes) {\n if (this.canvas) {\n return this.canvas;\n }\n // user-defined offscreen canvas\n if (offscreenCanvas || runtime.offscreenCanvas) {\n this.canvas = offscreenCanvas || runtime.offscreenCanvas;\n this.context = this.canvas.getContext('2d', __assign({ willReadFrequently: true }, contextAttributes));\n }\n else {\n try {\n // OffscreenCanvas2D measureText can be up to 40% faster.\n this.canvas = new window.OffscreenCanvas(0, 0);\n this.context = this.canvas.getContext('2d', __assign({ willReadFrequently: true }, contextAttributes));\n if (!this.context || !this.context.measureText) {\n this.canvas = document.createElement('canvas');\n this.context = this.canvas.getContext('2d');\n }\n }\n catch (ex) {\n this.canvas = document.createElement('canvas');\n this.context = this.canvas.getContext('2d', __assign({ willReadFrequently: true }, contextAttributes));\n }\n }\n this.canvas.width = 10;\n this.canvas.height = 10;\n return this.canvas;\n };\n OffscreenCanvasCreator.prototype.getOrCreateContext = function (offscreenCanvas, contextAttributes) {\n if (this.context) {\n return this.context;\n }\n this.getOrCreateCanvas(offscreenCanvas, contextAttributes);\n return this.context;\n };\n return OffscreenCanvasCreator;\n}());\n\n/**\n * why we need re-render\n */\nvar RenderReason;\n(function (RenderReason) {\n RenderReason[RenderReason[\"CAMERA_CHANGED\"] = 0] = \"CAMERA_CHANGED\";\n RenderReason[RenderReason[\"DISPLAY_OBJECT_CHANGED\"] = 1] = \"DISPLAY_OBJECT_CHANGED\";\n RenderReason[RenderReason[\"NONE\"] = 2] = \"NONE\";\n})(RenderReason || (RenderReason = {}));\n\n/**\n * Use frame renderer implemented by `g-canvas/svg/webgl`, in every frame we do followings:\n * * update & merge dirty rectangles\n * * begin frame\n * * filter by visible\n * * sort by z-index in scene graph\n * * culling with strategies registered in `g-canvas/webgl`\n * * end frame\n */\nvar RenderingService = /** @class */ (function () {\n function RenderingService(globalRuntime, context) {\n this.globalRuntime = globalRuntime;\n this.context = context;\n this.inited = false;\n this.stats = {\n /**\n * total display objects in scenegraph\n */\n total: 0,\n /**\n * number of display objects need to render in current frame\n */\n rendered: 0,\n };\n this.zIndexCounter = 0;\n this.hooks = {\n /**\n * called before any frame rendered\n */\n init: new SyncHook(),\n initAsync: new AsyncParallelHook(),\n /**\n * only dirty object which has sth changed will be rendered\n */\n dirtycheck: new SyncWaterfallHook(),\n /**\n * do culling\n */\n cull: new SyncWaterfallHook(),\n /**\n * called at beginning of each frame, won't get called if nothing to re-render\n */\n beginFrame: new SyncHook(),\n /**\n * called before every dirty object get rendered\n */\n beforeRender: new SyncHook(),\n /**\n * called when every dirty object rendering even it's culled\n */\n render: new SyncHook(),\n /**\n * called after every dirty object get rendered\n */\n afterRender: new SyncHook(),\n endFrame: new SyncHook(),\n destroy: new SyncHook(),\n /**\n * use async but faster method such as GPU-based picking in `g-plugin-device-renderer`\n */\n pick: new AsyncSeriesWaterfallHook(),\n /**\n * Unsafe but sync version of pick.\n */\n pickSync: new SyncWaterfallHook(),\n /**\n * used in event system\n */\n pointerDown: new SyncHook(),\n pointerUp: new SyncHook(),\n pointerMove: new SyncHook(),\n pointerOut: new SyncHook(),\n pointerOver: new SyncHook(),\n pointerWheel: new SyncHook(),\n pointerCancel: new SyncHook(),\n click: new SyncHook(),\n };\n }\n RenderingService.prototype.init = function (callback) {\n var _this = this;\n var context = __assign(__assign({}, this.globalRuntime), this.context);\n // register rendering plugins\n this.context.renderingPlugins.forEach(function (plugin) {\n plugin.apply(context, _this.globalRuntime);\n });\n this.hooks.init.call();\n if (this.hooks.initAsync.getCallbacksNum() === 0) {\n this.inited = true;\n callback();\n }\n else {\n this.hooks.initAsync.promise().then(function () {\n _this.inited = true;\n callback();\n });\n }\n };\n RenderingService.prototype.getStats = function () {\n return this.stats;\n };\n /**\n * Meet the following conditions:\n * * disable DirtyRectangleRendering\n * * camera changed\n */\n RenderingService.prototype.disableDirtyRectangleRendering = function () {\n var renderer = this.context.config.renderer;\n var enableDirtyRectangleRendering = renderer.getConfig().enableDirtyRectangleRendering;\n return (!enableDirtyRectangleRendering ||\n this.context.renderingContext.renderReasons.has(RenderReason.CAMERA_CHANGED));\n };\n RenderingService.prototype.render = function (canvasConfig, rerenderCallback) {\n var _this = this;\n this.stats.total = 0;\n this.stats.rendered = 0;\n this.zIndexCounter = 0;\n var renderingContext = this.context.renderingContext;\n this.globalRuntime.sceneGraphService.syncHierarchy(renderingContext.root);\n this.globalRuntime.sceneGraphService.triggerPendingEvents();\n if (renderingContext.renderReasons.size && this.inited) {\n // @ts-ignore\n renderingContext.dirtyRectangleRenderingDisabled =\n this.disableDirtyRectangleRendering();\n var onlyCameraChanged = renderingContext.renderReasons.size === 1 &&\n renderingContext.renderReasons.has(RenderReason.CAMERA_CHANGED);\n var shouldTriggerRenderHooks = !canvasConfig.disableRenderHooks ||\n !(canvasConfig.disableRenderHooks && onlyCameraChanged);\n if (shouldTriggerRenderHooks) {\n this.renderDisplayObject(renderingContext.root, canvasConfig, renderingContext);\n }\n this.hooks.beginFrame.call();\n if (shouldTriggerRenderHooks) {\n renderingContext.renderListCurrentFrame.forEach(function (object) {\n _this.hooks.beforeRender.call(object);\n _this.hooks.render.call(object);\n _this.hooks.afterRender.call(object);\n });\n }\n this.hooks.endFrame.call();\n renderingContext.renderListCurrentFrame = [];\n renderingContext.renderReasons.clear();\n rerenderCallback();\n }\n // console.log('stats', this.stats);\n };\n RenderingService.prototype.renderDisplayObject = function (displayObject, canvasConfig, renderingContext) {\n var _this = this;\n var _a = canvasConfig.renderer.getConfig(), enableDirtyCheck = _a.enableDirtyCheck, enableCulling = _a.enableCulling;\n // recalc style values\n if (this.globalRuntime.enableCSSParsing) {\n this.globalRuntime.styleValueRegistry.recalc(displayObject);\n }\n // TODO: relayout\n // dirtycheck first\n var renderable = displayObject.renderable;\n var objectChanged = enableDirtyCheck\n ? // @ts-ignore\n renderable.dirty || renderingContext.dirtyRectangleRenderingDisabled\n ? displayObject\n : null\n : displayObject;\n if (objectChanged) {\n var objectToRender = enableCulling\n ? this.hooks.cull.call(objectChanged, this.context.camera)\n : objectChanged;\n if (objectToRender) {\n this.stats.rendered++;\n renderingContext.renderListCurrentFrame.push(objectToRender);\n }\n }\n displayObject.renderable.dirty = false;\n displayObject.sortable.renderOrder = this.zIndexCounter++;\n this.stats.total++;\n // sort is very expensive, use cached result if possible\n var sortable = displayObject.sortable;\n if (sortable.dirty) {\n this.sort(displayObject, sortable);\n sortable.dirty = false;\n sortable.dirtyChildren = [];\n sortable.dirtyReason = undefined;\n }\n // recursive rendering its children\n (sortable.sorted || displayObject.childNodes).forEach(function (child) {\n _this.renderDisplayObject(child, canvasConfig, renderingContext);\n });\n };\n RenderingService.prototype.sort = function (displayObject, sortable) {\n if (sortable.sorted &&\n sortable.dirtyReason !== SortReason.Z_INDEX_CHANGED) {\n // avoid re-sorting the whole children list\n sortable.dirtyChildren.forEach(function (child) {\n var index = displayObject.childNodes.indexOf(child);\n if (index === -1) {\n // remove from sorted list\n var index_1 = sortable.sorted.indexOf(child);\n if (index_1 >= 0) {\n sortable.sorted.splice(index_1, 1);\n }\n }\n else {\n if (sortable.sorted.length === 0) {\n sortable.sorted.push(child);\n }\n else {\n var index_2 = sortedIndex(sortable.sorted, child);\n sortable.sorted.splice(index_2, 0, child);\n }\n }\n });\n }\n else {\n sortable.sorted = displayObject.childNodes.slice().sort(sortByZIndex);\n }\n };\n RenderingService.prototype.destroy = function () {\n this.inited = false;\n this.hooks.destroy.call();\n this.globalRuntime.sceneGraphService.clearPendingEvents();\n };\n RenderingService.prototype.dirtify = function () {\n // need re-render\n this.context.renderingContext.renderReasons.add(RenderReason.DISPLAY_OBJECT_CHANGED);\n };\n return RenderingService;\n}());\n\nvar ATTRIBUTE_REGEXP = /\\[\\s*(.*)=(.*)\\s*\\]/;\n/**\n * support the following DOM API:\n * * getElementById\n * * getElementsByClassName\n * * getElementsByName\n * * getElementsByTag\n * * querySelector\n * * querySelectorAll\n */\nvar DefaultSceneGraphSelector = /** @class */ (function () {\n function DefaultSceneGraphSelector() {\n }\n DefaultSceneGraphSelector.prototype.selectOne = function (query, root) {\n var _this = this;\n if (query.startsWith('.')) {\n return root.find(function (node) {\n // return !node.shadow && node.id === query.substring(1);\n return (((node === null || node === void 0 ? void 0 : node.classList) || []).indexOf(_this.getIdOrClassname(query)) > -1);\n });\n }\n else if (query.startsWith('#')) {\n // getElementById('id')\n return root.find(function (node) {\n // return !node.shadow && node.id === query.substring(1);\n return node.id === _this.getIdOrClassname(query);\n });\n }\n else if (query.startsWith('[')) {\n var _a = this.getAttribute(query), name_1 = _a.name, value_1 = _a.value;\n if (name_1) {\n // getElementByName();\n return root.find(function (node) {\n return root !== node &&\n (name_1 === 'name'\n ? node.name === value_1\n : _this.attributeToString(node, name_1) === value_1);\n });\n }\n else {\n return null;\n }\n }\n else {\n // getElementsByTag('circle');\n return root.find(function (node) { return root !== node && node.nodeName === query; });\n }\n };\n DefaultSceneGraphSelector.prototype.selectAll = function (query, root) {\n var _this = this;\n // only support `[name=\"${name}\"]` `.className` `#id`\n if (query.startsWith('.')) {\n // getElementsByClassName('className');\n // should not include itself\n return root.findAll(function (node) {\n return root !== node &&\n ((node === null || node === void 0 ? void 0 : node.classList) || []).indexOf(_this.getIdOrClassname(query)) > -1;\n });\n }\n else if (query.startsWith('#')) {\n return root.findAll(function (node) {\n return root !== node &&\n node.id === _this.getIdOrClassname(query);\n });\n }\n else if (query.startsWith('[')) {\n var _a = this.getAttribute(query), name_2 = _a.name, value_2 = _a.value;\n if (name_2) {\n // getElementsByName();\n return root.findAll(function (node) {\n return root !== node &&\n (name_2 === 'name'\n ? node.name === value_2\n : _this.attributeToString(node, name_2) === value_2);\n });\n }\n else {\n return [];\n }\n }\n else {\n // getElementsByTag('circle');\n return root.findAll(function (node) { return root !== node && node.nodeName === query; });\n }\n };\n DefaultSceneGraphSelector.prototype.is = function (query, node) {\n // a simple `matches` implementation\n if (query.startsWith('.')) {\n return node.className === this.getIdOrClassname(query);\n }\n else if (query.startsWith('#')) {\n return node.id === this.getIdOrClassname(query);\n }\n else if (query.startsWith('[')) {\n var _a = this.getAttribute(query), name_3 = _a.name, value = _a.value;\n return name_3 === 'name'\n ? node.name === value\n : this.attributeToString(node, name_3) === value;\n }\n else {\n return node.nodeName === query;\n }\n };\n DefaultSceneGraphSelector.prototype.getIdOrClassname = function (query) {\n return query.substring(1);\n };\n DefaultSceneGraphSelector.prototype.getAttribute = function (query) {\n var matches = query.match(ATTRIBUTE_REGEXP);\n var name = '';\n var value = '';\n if (matches && matches.length > 2) {\n name = matches[1].replace(/\"/g, '');\n value = matches[2].replace(/\"/g, '');\n }\n return { name: name, value: value };\n };\n DefaultSceneGraphSelector.prototype.attributeToString = function (node, name) {\n if (!node.getAttribute) {\n return '';\n }\n var value = node.getAttribute(name);\n if (isNil(value)) {\n return '';\n }\n if (value.toString) {\n return value.toString();\n }\n return '';\n };\n return DefaultSceneGraphSelector;\n}());\n\nvar MutationEvent = /** @class */ (function (_super) {\n __extends(MutationEvent, _super);\n function MutationEvent(typeArg, relatedNode, prevValue, newValue, attrName, attrChange, prevParsedValue, newParsedValue) {\n var _this = _super.call(this, null) || this;\n _this.relatedNode = relatedNode;\n _this.prevValue = prevValue;\n _this.newValue = newValue;\n _this.attrName = attrName;\n _this.attrChange = attrChange;\n _this.prevParsedValue = prevParsedValue;\n _this.newParsedValue = newParsedValue;\n _this.type = typeArg;\n return _this;\n }\n MutationEvent.ADDITION = 2;\n MutationEvent.MODIFICATION = 1;\n MutationEvent.REMOVAL = 3;\n return MutationEvent;\n}(FederatedEvent));\n\n/**\n * built-in events for element\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent\n *\n * TODO: use MutationObserver instead\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver\n */\nvar ElementEvent;\n(function (ElementEvent) {\n ElementEvent[\"REPARENT\"] = \"reparent\";\n ElementEvent[\"DESTROY\"] = \"destroy\";\n /**\n * @see https://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMAttrModified\n */\n ElementEvent[\"ATTR_MODIFIED\"] = \"DOMAttrModified\";\n /**\n * it has been inserted\n * @see https://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMNodeInserted\n */\n ElementEvent[\"INSERTED\"] = \"DOMNodeInserted\";\n /**\n * it is being removed\n * @see https://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMNodeRemoved\n */\n ElementEvent[\"REMOVED\"] = \"removed\";\n /**\n * @see https://www.w3.org/TR/DOM-Level-3-Events/#domnodeinsertedintodocument\n */\n ElementEvent[\"MOUNTED\"] = \"DOMNodeInsertedIntoDocument\";\n /**\n * @see https://www.w3.org/TR/DOM-Level-3-Events/#domnoderemovedfromdocument\n */\n ElementEvent[\"UNMOUNTED\"] = \"DOMNodeRemovedFromDocument\";\n ElementEvent[\"BOUNDS_CHANGED\"] = \"bounds-changed\";\n ElementEvent[\"CULLED\"] = \"culled\";\n})(ElementEvent || (ElementEvent = {}));\n\nfunction markRenderableDirty(e) {\n var renderable = e.renderable;\n if (renderable) {\n renderable.renderBoundsDirty = true;\n renderable.boundsDirty = true;\n }\n}\nvar reparentEvent = new MutationEvent(ElementEvent.REPARENT, null, '', '', '', 0, '', '');\n/**\n * update transform in scene graph\n *\n * @see https://community.khronos.org/t/scene-graphs/50542/7\n */\nvar DefaultSceneGraphService = /** @class */ (function () {\n function DefaultSceneGraphService(runtime) {\n var _this = this;\n this.runtime = runtime;\n this.pendingEvents = [];\n this.boundsChangedEvent = new CustomEvent(ElementEvent.BOUNDS_CHANGED);\n /**\n * rotate in world space\n */\n this.rotate = (function () {\n var parentInvertRotation = quat$1.create();\n return function (element, degrees, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (typeof degrees === 'number') {\n degrees = vec3.fromValues(degrees, y, z);\n }\n var transform = element.transformable;\n if (element.parentNode === null ||\n !element.parentNode.transformable) {\n _this.rotateLocal(element, degrees);\n }\n else {\n var rotation = quat$1.create();\n quat$1.fromEuler(rotation, degrees[0], degrees[1], degrees[2]);\n var rot = _this.getRotation(element);\n var parentRot = _this.getRotation(element.parentNode);\n quat$1.copy(parentInvertRotation, parentRot);\n quat$1.invert(parentInvertRotation, parentInvertRotation);\n quat$1.multiply(rotation, parentInvertRotation, rotation);\n quat$1.multiply(transform.localRotation, rotation, rot);\n quat$1.normalize(transform.localRotation, transform.localRotation);\n _this.dirtifyLocal(element, transform);\n }\n };\n })();\n /**\n * rotate in local space\n * @see @see https://docs.microsoft.com/en-us/windows/win32/api/directxmath/nf-directxmath-xmquaternionrotationrollpitchyaw\n */\n this.rotateLocal = (function () {\n var rotation = quat$1.create();\n return function (element, degrees, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (typeof degrees === 'number') {\n degrees = vec3.fromValues(degrees, y, z);\n }\n var transform = element.transformable;\n quat$1.fromEuler(rotation, degrees[0], degrees[1], degrees[2]);\n quat$1.mul(transform.localRotation, transform.localRotation, rotation);\n _this.dirtifyLocal(element, transform);\n };\n })();\n /**\n * set euler angles(degrees) in world space\n */\n this.setEulerAngles = (function () {\n var invParentRot = quat$1.create();\n return function (element, degrees, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (typeof degrees === 'number') {\n degrees = vec3.fromValues(degrees, y, z);\n }\n var transform = element.transformable;\n if (element.parentNode === null ||\n !element.parentNode.transformable) {\n _this.setLocalEulerAngles(element, degrees);\n }\n else {\n quat$1.fromEuler(transform.localRotation, degrees[0], degrees[1], degrees[2]);\n var parentRotation = _this.getRotation(element.parentNode);\n quat$1.copy(invParentRot, quat$1.invert(quat$1.create(), parentRotation));\n quat$1.mul(transform.localRotation, transform.localRotation, invParentRot);\n _this.dirtifyLocal(element, transform);\n }\n };\n })();\n /**\n * translate in local space\n *\n * @example\n * ```\n * translateLocal(x, y, z)\n * translateLocal(vec3(x, y, z))\n * ```\n */\n this.translateLocal = (function () {\n return function (element, translation, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (typeof translation === 'number') {\n translation = vec3.fromValues(translation, y, z);\n }\n var transform = element.transformable;\n if (vec3.equals(translation, vec3.create())) {\n return;\n }\n vec3.transformQuat(translation, translation, transform.localRotation);\n vec3.add(transform.localPosition, transform.localPosition, translation);\n _this.dirtifyLocal(element, transform);\n };\n })();\n /**\n * move to position in world space\n *\n * 对应 g 原版的 move/moveTo\n * @see https://github.com/antvis/g/blob/master/packages/g-base/src/abstract/element.ts#L684-L689\n */\n this.setPosition = (function () {\n var parentInvertMatrix = mat4.create();\n var tmpPosition = vec3.create();\n return function (element, position) {\n var transform = element.transformable;\n tmpPosition[0] = position[0];\n tmpPosition[1] = position[1];\n tmpPosition[2] = position[2] || 0;\n if (vec3.equals(_this.getPosition(element), tmpPosition)) {\n return;\n }\n vec3.copy(transform.position, tmpPosition);\n if (element.parentNode === null ||\n !element.parentNode.transformable) {\n vec3.copy(transform.localPosition, tmpPosition);\n }\n else {\n var parentTransform = element.parentNode.transformable;\n mat4.copy(parentInvertMatrix, parentTransform.worldTransform);\n mat4.invert(parentInvertMatrix, parentInvertMatrix);\n vec3.transformMat4(transform.localPosition, tmpPosition, parentInvertMatrix);\n }\n _this.dirtifyLocal(element, transform);\n };\n })();\n /**\n * move to position in local space\n */\n this.setLocalPosition = (function () {\n var tmpPosition = vec3.create();\n return function (element, position) {\n var transform = element.transformable;\n tmpPosition[0] = position[0];\n tmpPosition[1] = position[1];\n tmpPosition[2] = position[2] || 0;\n if (vec3.equals(transform.localPosition, tmpPosition)) {\n return;\n }\n vec3.copy(transform.localPosition, tmpPosition);\n _this.dirtifyLocal(element, transform);\n };\n })();\n /**\n * translate in world space\n *\n * @example\n * ```\n * translate(x, y, z)\n * translate(vec3(x, y, z))\n * ```\n *\n * 对应 g 原版的 translate 2D\n * @see https://github.com/antvis/g/blob/master/packages/g-base/src/abstract/element.ts#L665-L676\n */\n this.translate = (function () {\n var zeroVec3 = vec3.create();\n var tmpVec3 = vec3.create();\n var tr = vec3.create();\n return function (element, translation, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (typeof translation === 'number') {\n translation = vec3.set(tmpVec3, translation, y, z);\n }\n if (vec3.equals(translation, zeroVec3)) {\n return;\n }\n vec3.add(tr, _this.getPosition(element), translation);\n _this.setPosition(element, tr);\n };\n })();\n this.setRotation = function () {\n var parentInvertRotation = quat$1.create();\n return function (element, rotation, y, z, w) {\n var transform = element.transformable;\n if (typeof rotation === 'number') {\n rotation = quat$1.fromValues(rotation, y, z, w);\n }\n if (element.parentNode === null ||\n !element.parentNode.transformable) {\n _this.setLocalRotation(element, rotation);\n }\n else {\n var parentRot = _this.getRotation(element.parentNode);\n quat$1.copy(parentInvertRotation, parentRot);\n quat$1.invert(parentInvertRotation, parentInvertRotation);\n quat$1.multiply(transform.localRotation, parentInvertRotation, rotation);\n quat$1.normalize(transform.localRotation, transform.localRotation);\n _this.dirtifyLocal(element, transform);\n }\n };\n };\n this.displayObjectDependencyMap = new WeakMap();\n this.calcLocalTransform = (function () {\n var tmpMat = mat4.create();\n var tmpPosition = vec3.create();\n var tmpQuat = quat$1.fromValues(0, 0, 0, 1);\n return function (transform) {\n var hasSkew = transform.localSkew[0] !== 0 || transform.localSkew[1] !== 0;\n if (hasSkew) {\n mat4.fromRotationTranslationScaleOrigin(transform.localTransform, transform.localRotation, transform.localPosition, vec3.fromValues(1, 1, 1), transform.origin);\n // apply skew2D\n if (transform.localSkew[0] !== 0 || transform.localSkew[1] !== 0) {\n var tmpMat4 = mat4.identity(tmpMat);\n tmpMat4[4] = Math.tan(transform.localSkew[0]);\n tmpMat4[1] = Math.tan(transform.localSkew[1]);\n mat4.multiply(transform.localTransform, transform.localTransform, tmpMat4);\n }\n var scaling = mat4.fromRotationTranslationScaleOrigin(tmpMat, tmpQuat, tmpPosition, transform.localScale, transform.origin);\n mat4.multiply(transform.localTransform, transform.localTransform, scaling);\n }\n else {\n // @see https://github.com/mattdesl/css-mat4/blob/master/index.js\n mat4.fromRotationTranslationScaleOrigin(transform.localTransform, transform.localRotation, transform.localPosition, transform.localScale, transform.origin);\n }\n };\n })();\n }\n DefaultSceneGraphService.prototype.matches = function (query, root) {\n return this.runtime.sceneGraphSelector.is(query, root);\n };\n DefaultSceneGraphService.prototype.querySelector = function (query, root) {\n return this.runtime.sceneGraphSelector.selectOne(query, root);\n };\n DefaultSceneGraphService.prototype.querySelectorAll = function (query, root) {\n return this.runtime.sceneGraphSelector.selectAll(query, root);\n // .filter((node) => !node.shadow);\n };\n DefaultSceneGraphService.prototype.attach = function (child, parent, index) {\n var _a, _b;\n var detached = false;\n if (child.parentNode) {\n detached = child.parentNode !== parent;\n this.detach(child);\n }\n child.parentNode = parent;\n if (!isNil(index)) {\n child.parentNode.childNodes.splice(index, 0, child);\n }\n else {\n child.parentNode.childNodes.push(child);\n }\n // parent needs re-sort\n var sortable = parent.sortable;\n if (((_a = sortable === null || sortable === void 0 ? void 0 : sortable.sorted) === null || _a === void 0 ? void 0 : _a.length) ||\n ((_b = child.style) === null || _b === void 0 ? void 0 : _b.zIndex)) {\n if (sortable.dirtyChildren.indexOf(child) === -1) {\n sortable.dirtyChildren.push(child);\n }\n // if (sortable) {\n // only child has z-Index\n sortable.dirty = true;\n sortable.dirtyReason = SortReason.ADDED;\n }\n // this.updateGraphDepth(child);\n var transform = child.transformable;\n if (transform) {\n this.dirtifyWorld(child, transform);\n }\n if (transform.frozen) {\n this.unfreezeParentToRoot(child);\n }\n if (detached) {\n child.dispatchEvent(reparentEvent);\n }\n };\n DefaultSceneGraphService.prototype.detach = function (child) {\n var _a, _b;\n if (child.parentNode) {\n var transform = child.transformable;\n // if (transform) {\n // const worldTransform = this.getWorldTransform(child, transform);\n // mat4.getScaling(transform.localScale, worldTransform);\n // mat4.getTranslation(transform.localPosition, worldTransform);\n // mat4.getRotation(transform.localRotation, worldTransform);\n // transform.localDirtyFlag = true;\n // }\n // parent needs re-sort\n var sortable = child.parentNode.sortable;\n // if (sortable) {\n if (((_a = sortable === null || sortable === void 0 ? void 0 : sortable.sorted) === null || _a === void 0 ? void 0 : _a.length) ||\n ((_b = child.style) === null || _b === void 0 ? void 0 : _b.zIndex)) {\n if (sortable.dirtyChildren.indexOf(child) === -1) {\n sortable.dirtyChildren.push(child);\n }\n sortable.dirty = true;\n sortable.dirtyReason = SortReason.REMOVED;\n }\n var index = child.parentNode.childNodes.indexOf(child);\n if (index > -1) {\n child.parentNode.childNodes.splice(index, 1);\n }\n if (transform) {\n this.dirtifyWorld(child, transform);\n }\n child.parentNode = null;\n }\n };\n DefaultSceneGraphService.prototype.getOrigin = function (element) {\n return element.transformable.origin;\n };\n /**\n * same as pivot in Pixi.js\n *\n * @see https://stackoverflow.com/questions/40748452/how-to-change-css-transform-origin-but-preserve-transformation\n */\n DefaultSceneGraphService.prototype.setOrigin = function (element, origin, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (typeof origin === 'number') {\n origin = [origin, y, z];\n }\n var transform = element.transformable;\n if (origin[0] === transform.origin[0] &&\n origin[1] === transform.origin[1] &&\n origin[2] === transform.origin[2]) {\n return;\n }\n var originVec = transform.origin;\n // const delta = vec3.subtract(vec3.create(), origin, originVec);\n // vec3.add(transform.localPosition, transform.localPosition, delta);\n // update origin\n originVec[0] = origin[0];\n originVec[1] = origin[1];\n originVec[2] = origin[2] || 0;\n this.dirtifyLocal(element, transform);\n };\n /**\n * set euler angles(degrees) in local space\n */\n DefaultSceneGraphService.prototype.setLocalEulerAngles = function (element, degrees, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (typeof degrees === 'number') {\n degrees = vec3.fromValues(degrees, y, z);\n }\n var transform = element.transformable;\n quat$1.fromEuler(transform.localRotation, degrees[0], degrees[1], degrees[2]);\n this.dirtifyLocal(element, transform);\n };\n /**\n * scale in local space\n */\n DefaultSceneGraphService.prototype.scaleLocal = function (element, scaling) {\n var transform = element.transformable;\n vec3.multiply(transform.localScale, transform.localScale, vec3.fromValues(scaling[0], scaling[1], scaling[2] || 1));\n this.dirtifyLocal(element, transform);\n };\n DefaultSceneGraphService.prototype.setLocalScale = function (element, scaling) {\n var transform = element.transformable;\n var updatedScaling = vec3.fromValues(scaling[0], scaling[1], scaling[2] || transform.localScale[2]);\n if (vec3.equals(updatedScaling, transform.localScale)) {\n return;\n }\n vec3.copy(transform.localScale, updatedScaling);\n this.dirtifyLocal(element, transform);\n };\n DefaultSceneGraphService.prototype.setLocalRotation = function (element, rotation, y, z, w) {\n if (typeof rotation === 'number') {\n rotation = quat$1.fromValues(rotation, y, z, w);\n }\n var transform = element.transformable;\n quat$1.copy(transform.localRotation, rotation);\n this.dirtifyLocal(element, transform);\n };\n DefaultSceneGraphService.prototype.setLocalSkew = function (element, skew, y) {\n if (typeof skew === 'number') {\n skew = vec2.fromValues(skew, y);\n }\n var transform = element.transformable;\n vec2.copy(transform.localSkew, skew);\n this.dirtifyLocal(element, transform);\n };\n DefaultSceneGraphService.prototype.dirtifyLocal = function (element, transform) {\n if (!transform.localDirtyFlag) {\n transform.localDirtyFlag = true;\n if (!transform.dirtyFlag) {\n this.dirtifyWorld(element, transform);\n }\n }\n };\n DefaultSceneGraphService.prototype.dirtifyWorld = function (element, transform) {\n if (!transform.dirtyFlag) {\n this.unfreezeParentToRoot(element);\n }\n this.dirtifyWorldInternal(element, transform);\n this.dirtifyToRoot(element, true);\n };\n DefaultSceneGraphService.prototype.triggerPendingEvents = function () {\n var _this = this;\n var set = new Set();\n var trigger = function (element, detail) {\n if (element.isConnected && !set.has(element.entity)) {\n _this.boundsChangedEvent.detail = detail;\n _this.boundsChangedEvent.target = element;\n if (element.isMutationObserved) {\n element.dispatchEvent(_this.boundsChangedEvent);\n }\n else {\n element.ownerDocument.defaultView.dispatchEvent(_this.boundsChangedEvent, true);\n }\n set.add(element.entity);\n }\n };\n this.pendingEvents.forEach(function (_a) {\n var _b = __read(_a, 2), element = _b[0], detail = _b[1];\n if (detail.affectChildren) {\n element.forEach(function (e) {\n trigger(e, detail);\n });\n }\n else {\n trigger(element, detail);\n }\n });\n this.clearPendingEvents();\n set.clear();\n };\n DefaultSceneGraphService.prototype.clearPendingEvents = function () {\n this.pendingEvents = [];\n };\n DefaultSceneGraphService.prototype.dirtifyToRoot = function (element, affectChildren) {\n if (affectChildren === void 0) { affectChildren = false; }\n var p = element;\n // only need to re-render itself\n if (p.renderable) {\n p.renderable.dirty = true;\n }\n while (p) {\n markRenderableDirty(p);\n p = p.parentNode;\n }\n if (affectChildren) {\n element.forEach(function (e) {\n markRenderableDirty(e);\n });\n }\n // inform dependencies\n this.informDependentDisplayObjects(element);\n // reuse the same custom event\n this.pendingEvents.push([element, { affectChildren: affectChildren }]);\n };\n DefaultSceneGraphService.prototype.updateDisplayObjectDependency = function (name, oldPath, newPath, object) {\n // clear ref to old clip path\n if (oldPath && oldPath !== newPath) {\n var oldDependencyMap = this.displayObjectDependencyMap.get(oldPath);\n if (oldDependencyMap && oldDependencyMap[name]) {\n var index = oldDependencyMap[name].indexOf(object);\n oldDependencyMap[name].splice(index, 1);\n }\n }\n if (newPath) {\n var newDependencyMap = this.displayObjectDependencyMap.get(newPath);\n if (!newDependencyMap) {\n this.displayObjectDependencyMap.set(newPath, {});\n newDependencyMap = this.displayObjectDependencyMap.get(newPath);\n }\n if (!newDependencyMap[name]) {\n newDependencyMap[name] = [];\n }\n newDependencyMap[name].push(object);\n }\n };\n DefaultSceneGraphService.prototype.informDependentDisplayObjects = function (object) {\n var _this = this;\n var dependencyMap = this.displayObjectDependencyMap.get(object);\n if (dependencyMap) {\n Object.keys(dependencyMap).forEach(function (name) {\n dependencyMap[name].forEach(function (target) {\n _this.dirtifyToRoot(target, true);\n target.dispatchEvent(new MutationEvent(ElementEvent.ATTR_MODIFIED, target, _this, _this, name, MutationEvent.MODIFICATION, _this, _this));\n if (target.isCustomElement && target.isConnected) {\n if (target.attributeChangedCallback) {\n target.attributeChangedCallback(name, _this, _this);\n }\n }\n });\n });\n }\n };\n DefaultSceneGraphService.prototype.getPosition = function (element) {\n var transform = element.transformable;\n return mat4.getTranslation(transform.position, this.getWorldTransform(element, transform));\n };\n DefaultSceneGraphService.prototype.getRotation = function (element) {\n var transform = element.transformable;\n return mat4.getRotation(transform.rotation, this.getWorldTransform(element, transform));\n };\n DefaultSceneGraphService.prototype.getScale = function (element) {\n var transform = element.transformable;\n return mat4.getScaling(transform.scaling, this.getWorldTransform(element, transform));\n };\n DefaultSceneGraphService.prototype.getWorldTransform = function (element, transform) {\n if (transform === void 0) { transform = element.transformable; }\n if (!transform.localDirtyFlag && !transform.dirtyFlag) {\n return transform.worldTransform;\n }\n if (element.parentNode && element.parentNode.transformable) {\n this.getWorldTransform(element.parentNode);\n }\n this.sync(element, transform);\n return transform.worldTransform;\n };\n DefaultSceneGraphService.prototype.getLocalPosition = function (element) {\n return element.transformable.localPosition;\n };\n DefaultSceneGraphService.prototype.getLocalRotation = function (element) {\n return element.transformable.localRotation;\n };\n DefaultSceneGraphService.prototype.getLocalScale = function (element) {\n return element.transformable.localScale;\n };\n DefaultSceneGraphService.prototype.getLocalSkew = function (element) {\n return element.transformable.localSkew;\n };\n DefaultSceneGraphService.prototype.getLocalTransform = function (element) {\n var transform = element.transformable;\n if (transform.localDirtyFlag) {\n this.calcLocalTransform(transform);\n transform.localDirtyFlag = false;\n }\n return transform.localTransform;\n };\n DefaultSceneGraphService.prototype.setLocalTransform = function (element, transform) {\n var t = mat4.getTranslation(vec3.create(), transform);\n var r = mat4.getRotation(quat$1.create(), transform);\n var s = mat4.getScaling(vec3.create(), transform);\n this.setLocalScale(element, s);\n this.setLocalPosition(element, t);\n this.setLocalRotation(element, r);\n };\n DefaultSceneGraphService.prototype.resetLocalTransform = function (element) {\n this.setLocalScale(element, [1, 1, 1]);\n this.setLocalPosition(element, [0, 0, 0]);\n this.setLocalEulerAngles(element, [0, 0, 0]);\n this.setLocalSkew(element, [0, 0]);\n };\n DefaultSceneGraphService.prototype.getTransformedGeometryBounds = function (element, render, existedAABB) {\n if (render === void 0) { render = false; }\n var bounds = this.getGeometryBounds(element, render);\n if (!AABB.isEmpty(bounds)) {\n var aabb = existedAABB || new AABB();\n aabb.setFromTransformedAABB(bounds, this.getWorldTransform(element));\n return aabb;\n }\n else {\n return null;\n }\n };\n /**\n * won't account for children\n */\n DefaultSceneGraphService.prototype.getGeometryBounds = function (element, render) {\n if (render === void 0) { render = false; }\n var geometry = element.geometry;\n var bounds = render\n ? geometry.renderBounds\n : geometry.contentBounds || null;\n // return (bounds && new AABB(bounds.center, bounds.halfExtents)) || new AABB();\n return bounds || new AABB();\n };\n /**\n * account for children in world space\n */\n DefaultSceneGraphService.prototype.getBounds = function (element, render) {\n var _this = this;\n if (render === void 0) { render = false; }\n var renderable = element.renderable;\n if (!renderable.boundsDirty && !render && renderable.bounds) {\n return renderable.bounds;\n }\n if (!renderable.renderBoundsDirty && render && renderable.renderBounds) {\n return renderable.renderBounds;\n }\n // reuse existed if possible\n var existedAABB = render ? renderable.renderBounds : renderable.bounds;\n // reset with geometry's aabb\n var aabb = this.getTransformedGeometryBounds(element, render, existedAABB);\n // merge children's aabbs\n var children = element.childNodes;\n children.forEach(function (child) {\n var childBounds = _this.getBounds(child, render);\n if (childBounds) {\n if (!aabb) {\n aabb = existedAABB || new AABB();\n aabb.update(childBounds.center, childBounds.halfExtents);\n }\n else {\n aabb.add(childBounds);\n }\n }\n });\n if (render) {\n // FIXME: account for clip path\n var clipped = findClosestClipPathTarget(element);\n if (clipped) {\n // use bounds under world space\n var clipPathBounds = clipped.parsedStyle.clipPath.getBounds(render);\n if (!aabb) {\n aabb = clipPathBounds;\n }\n else if (clipPathBounds) {\n aabb = clipPathBounds.intersection(aabb);\n }\n }\n }\n if (!aabb) {\n aabb = new AABB();\n }\n if (aabb) {\n if (render) {\n renderable.renderBounds = aabb;\n }\n else {\n renderable.bounds = aabb;\n }\n }\n if (render) {\n renderable.renderBoundsDirty = false;\n }\n else {\n renderable.boundsDirty = false;\n }\n return aabb;\n };\n /**\n * account for children in local space\n */\n DefaultSceneGraphService.prototype.getLocalBounds = function (element) {\n if (element.parentNode) {\n var parentInvert = mat4.create();\n if (element.parentNode.transformable) {\n parentInvert = mat4.invert(mat4.create(), this.getWorldTransform(element.parentNode));\n }\n var bounds = this.getBounds(element);\n if (!AABB.isEmpty(bounds)) {\n var localBounds = new AABB();\n localBounds.setFromTransformedAABB(bounds, parentInvert);\n return localBounds;\n }\n }\n return this.getBounds(element);\n };\n DefaultSceneGraphService.prototype.getBoundingClientRect = function (element) {\n var _a, _b;\n var aabb;\n var bounds = this.getGeometryBounds(element);\n if (!AABB.isEmpty(bounds)) {\n aabb = new AABB();\n // apply transformation to aabb\n aabb.setFromTransformedAABB(bounds, this.getWorldTransform(element));\n }\n // calc context's offset\n var bbox = (_b = (_a = element.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.getContextService().getBoundingClientRect();\n if (aabb) {\n var _c = __read(aabb.getMin(), 2), left = _c[0], top_1 = _c[1];\n var _d = __read(aabb.getMax(), 2), right = _d[0], bottom = _d[1];\n return new Rectangle(left + ((bbox === null || bbox === void 0 ? void 0 : bbox.left) || 0), top_1 + ((bbox === null || bbox === void 0 ? void 0 : bbox.top) || 0), right - left, bottom - top_1);\n }\n return new Rectangle((bbox === null || bbox === void 0 ? void 0 : bbox.left) || 0, (bbox === null || bbox === void 0 ? void 0 : bbox.top) || 0, 0, 0);\n };\n DefaultSceneGraphService.prototype.dirtifyWorldInternal = function (element, transform) {\n var _this = this;\n if (!transform.dirtyFlag) {\n transform.dirtyFlag = true;\n transform.frozen = false;\n element.childNodes.forEach(function (child) {\n var childTransform = child.transformable;\n if (!childTransform.dirtyFlag) {\n _this.dirtifyWorldInternal(child, childTransform);\n }\n });\n var renderable = element.renderable;\n if (renderable) {\n renderable.renderBoundsDirty = true;\n renderable.boundsDirty = true;\n renderable.dirty = true;\n }\n }\n };\n DefaultSceneGraphService.prototype.syncHierarchy = function (element) {\n var transform = element.transformable;\n if (transform.frozen) {\n return;\n }\n transform.frozen = true;\n if (transform.localDirtyFlag || transform.dirtyFlag) {\n this.sync(element, transform);\n }\n var children = element.childNodes;\n for (var i = 0; i < children.length; i++) {\n this.syncHierarchy(children[i]);\n }\n };\n DefaultSceneGraphService.prototype.sync = function (element, transform) {\n if (transform.localDirtyFlag) {\n this.calcLocalTransform(transform);\n transform.localDirtyFlag = false;\n }\n if (transform.dirtyFlag) {\n var parent_1 = element.parentNode;\n var parentTransform = parent_1 && parent_1.transformable;\n if (parent_1 === null || !parentTransform) {\n mat4.copy(transform.worldTransform, transform.localTransform);\n }\n else {\n // TODO: should we support scale compensation?\n // @see https://github.com/playcanvas/engine/issues/1077#issuecomment-359765557\n mat4.multiply(transform.worldTransform, parentTransform.worldTransform, transform.localTransform);\n }\n transform.dirtyFlag = false;\n }\n };\n DefaultSceneGraphService.prototype.unfreezeParentToRoot = function (child) {\n var p = child.parentNode;\n while (p) {\n var transform = p.transformable;\n if (transform) {\n transform.frozen = false;\n }\n p = p.parentNode;\n }\n };\n return DefaultSceneGraphService;\n}());\n\nvar TEXT_METRICS = {\n MetricsString: '|ÉqÅ',\n BaselineSymbol: 'M',\n BaselineMultiplier: 1.4,\n HeightMultiplier: 2,\n Newlines: [\n 0x000a, // line feed\n 0x000d, // carriage return\n ],\n BreakingSpaces: [\n 0x0009, // character tabulation\n 0x0020, // space\n 0x2000, // en quad\n 0x2001, // em quad\n 0x2002, // en space\n 0x2003, // em space\n 0x2004, // three-per-em space\n 0x2005, // four-per-em space\n 0x2006, // six-per-em space\n 0x2008, // punctuation space\n 0x2009, // thin space\n 0x200a, // hair space\n 0x205f, // medium mathematical space\n 0x3000, // ideographic space\n ],\n};\nvar LATIN_REGEX = /[a-zA-Z0-9\\u00C0-\\u00D6\\u00D8-\\u00f6\\u00f8-\\u00ff!\"#$%&'()*+,-./:;]/;\n// Line breaking rules in CJK (Kinsoku Shori)\n// Refer from https://en.wikipedia.org/wiki/Line_breaking_rules_in_East_Asian_languages\nvar regexCannotStartZhCn = /[!%),.:;?\\]}¢°·'\"\"†‡›℃∶、。〃〆〕〗〞﹚﹜!"%'),.:;?!]}~]/;\nvar regexCannotEndZhCn = /[$(£¥·'\"〈《「『【〔〖〝﹙﹛$(.[{£¥]/;\nvar regexCannotStartZhTw = /[!),.:;?\\]}¢·–—'\"•\"、。〆〞〕〉》」︰︱︲︳﹐﹑﹒﹓﹔﹕﹖﹘﹚﹜!),.:;?︶︸︺︼︾﹀﹂﹗]|}、]/;\nvar regexCannotEndZhTw = /[([{£¥'\"‵〈《「『〔〝︴﹙﹛({︵︷︹︻︽︿﹁﹃﹏]/;\nvar regexCannotStartJaJp = /[)\\]}〕〉》」』】〙〗〟'\"⦆»ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻‐゠–〜?!‼⁇⁈⁉・、:;,。.]/;\nvar regexCannotEndJaJp = /[([{〔〈《「『【〘〖〝'\"⦅«—...‥〳〴〵]/;\nvar regexCannotStartKoKr = /[!%),.:;?\\]}¢°'\"†‡℃〆〈《「『〕!%),.:;?]}]/;\nvar regexCannotEndKoKr = /[$([{£¥'\"々〇〉》」〔$([{⦆¥₩#]/;\nvar regexCannotStart = new RegExp(\"\".concat(regexCannotStartZhCn.source, \"|\").concat(regexCannotStartZhTw.source, \"|\").concat(regexCannotStartJaJp.source, \"|\").concat(regexCannotStartKoKr.source));\nvar regexCannotEnd = new RegExp(\"\".concat(regexCannotEndZhCn.source, \"|\").concat(regexCannotEndZhTw.source, \"|\").concat(regexCannotEndJaJp.source, \"|\").concat(regexCannotEndKoKr.source));\n/**\n * Borrow from pixi/packages/text/src/TextMetrics.ts\n */\nvar TextService = /** @class */ (function () {\n function TextService(runtime) {\n var _this = this;\n this.runtime = runtime;\n /**\n * font metrics cache\n */\n this.fontMetricsCache = {};\n this.shouldBreakByKinsokuShorui = function (char, nextChar) {\n if (_this.isBreakingSpace(nextChar))\n return false;\n if (char) {\n // Line breaking rules in CJK (Kinsoku Shori)\n if (regexCannotEnd.exec(nextChar) || regexCannotStart.exec(char)) {\n return true;\n }\n }\n return false;\n };\n this.trimByKinsokuShorui = function (prev) {\n var next = __spreadArray([], __read(prev), false);\n var prevLine = next[next.length - 2];\n if (!prevLine) {\n return prev;\n }\n var lastChar = prevLine[prevLine.length - 1];\n next[next.length - 2] = prevLine.slice(0, -1);\n next[next.length - 1] = lastChar + next[next.length - 1];\n return next;\n };\n }\n /**\n * Calculates the ascent, descent and fontSize of a given font-style.\n */\n TextService.prototype.measureFont = function (font, offscreenCanvas) {\n // as this method is used for preparing assets, don't recalculate things if we don't need to\n if (this.fontMetricsCache[font]) {\n return this.fontMetricsCache[font];\n }\n var properties = {\n ascent: 0,\n descent: 0,\n fontSize: 0,\n };\n var canvas = this.runtime.offscreenCanvasCreator.getOrCreateCanvas(offscreenCanvas);\n var context = this.runtime.offscreenCanvasCreator.getOrCreateContext(offscreenCanvas, {\n willReadFrequently: true,\n });\n context.font = font;\n var metricsString = TEXT_METRICS.MetricsString + TEXT_METRICS.BaselineSymbol;\n var width = Math.ceil(context.measureText(metricsString).width);\n var baseline = Math.ceil(context.measureText(TEXT_METRICS.BaselineSymbol).width);\n var height = TEXT_METRICS.HeightMultiplier * baseline;\n baseline = (baseline * TEXT_METRICS.BaselineMultiplier) | 0;\n // @ts-ignore\n canvas.width = width;\n // @ts-ignore\n canvas.height = height;\n context.fillStyle = '#f00';\n context.fillRect(0, 0, width, height);\n context.font = font;\n context.textBaseline = 'alphabetic';\n context.fillStyle = '#000';\n context.fillText(metricsString, 0, baseline);\n var imagedata = context.getImageData(0, 0, width || 1, height || 1).data;\n var pixels = imagedata.length;\n var line = width * 4;\n var i = 0;\n var idx = 0;\n var stop = false;\n // ascent. scan from top to bottom until we find a non red pixel\n for (i = 0; i < baseline; ++i) {\n for (var j = 0; j < line; j += 4) {\n if (imagedata[idx + j] !== 255) {\n stop = true;\n break;\n }\n }\n if (!stop) {\n idx += line;\n }\n else {\n break;\n }\n }\n properties.ascent = baseline - i;\n idx = pixels - line;\n stop = false;\n // descent. scan from bottom to top until we find a non red pixel\n for (i = height; i > baseline; --i) {\n for (var j = 0; j < line; j += 4) {\n if (imagedata[idx + j] !== 255) {\n stop = true;\n break;\n }\n }\n if (!stop) {\n idx -= line;\n }\n else {\n break;\n }\n }\n properties.descent = i - baseline;\n properties.fontSize = properties.ascent + properties.descent;\n this.fontMetricsCache[font] = properties;\n return properties;\n };\n TextService.prototype.measureText = function (text, parsedStyle, offscreenCanvas) {\n var fontSize = parsedStyle.fontSize, wordWrap = parsedStyle.wordWrap, strokeHeight = parsedStyle.lineHeight, lineWidth = parsedStyle.lineWidth, textBaseline = parsedStyle.textBaseline, textAlign = parsedStyle.textAlign, letterSpacing = parsedStyle.letterSpacing, textPath = parsedStyle.textPath; parsedStyle.textPathSide; parsedStyle.textPathStartOffset; \n var // dropShadow = 0,\n // dropShadowDistance = 0,\n _a = parsedStyle.leading, \n // dropShadow = 0,\n // dropShadowDistance = 0,\n leading = _a === void 0 ? 0 : _a;\n var font = toFontString(parsedStyle);\n // if (runtime.enableCSSParsing) {\n var fontProperties = this.measureFont(font, offscreenCanvas);\n // fallback in case UA disallow canvas data extraction\n // (toDataURI, getImageData functions)\n if (fontProperties.fontSize === 0) {\n fontProperties.fontSize = fontSize;\n fontProperties.ascent = fontSize;\n }\n // } else {\n // fontProperties = {\n // fontSize,\n // };\n // }\n var context = this.runtime.offscreenCanvasCreator.getOrCreateContext(offscreenCanvas);\n context.font = font;\n // no overflowing by default\n parsedStyle.isOverflowing = false;\n var outputText = wordWrap\n ? this.wordWrap(text, parsedStyle, offscreenCanvas)\n : text;\n var lines = outputText.split(/(?:\\r\\n|\\r|\\n)/);\n var lineWidths = new Array(lines.length);\n var maxLineWidth = 0;\n // account for textPath\n if (textPath) {\n textPath.getTotalLength();\n // const startingPoint = textPath.getPoint(0);\n for (var i = 0; i < lines.length; i++) {\n var width = context.measureText(lines[i]).width +\n (lines[i].length - 1) * letterSpacing;\n // for (\n // let i = reverse ? lines[0].length - 1 : 0;\n // reverse ? i >= 0 : i < lines[0].length;\n // reverse ? i-- : i++\n // ) {\n // graphemeInfo = lineBounds[i];\n // if (positionInPath > totalPathLength) {\n // positionInPath %= totalPathLength;\n // } else if (positionInPath < 0) {\n // positionInPath += totalPathLength;\n // }\n // // it would probably much faster to send all the grapheme position for a line\n // // and calculate path position/angle at once.\n // this.setGraphemeOnPath(\n // positionInPath,\n // graphemeInfo,\n // startingPoint\n // );\n // positionInPath += graphemeInfo.kernedWidth;\n // }\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n // char width + letterSpacing\n var lineWidth_1 = context.measureText(lines[i]).width +\n (lines[i].length - 1) * letterSpacing;\n lineWidths[i] = lineWidth_1;\n maxLineWidth = Math.max(maxLineWidth, lineWidth_1);\n }\n var width = maxLineWidth + lineWidth;\n // if (dropShadow) {\n // width += dropShadowDistance;\n // }\n var lineHeight_1 = strokeHeight || fontProperties.fontSize + lineWidth;\n var height = Math.max(lineHeight_1, fontProperties.fontSize + lineWidth) +\n (lines.length - 1) * (lineHeight_1 + leading);\n // if (dropShadow) {\n // height += dropShadowDistance;\n // }\n lineHeight_1 += leading;\n // handle vertical text baseline\n var offsetY_1 = 0;\n if (textBaseline === 'middle') {\n offsetY_1 = -height / 2;\n }\n else if (textBaseline === 'bottom' ||\n textBaseline === 'alphabetic' ||\n textBaseline === 'ideographic') {\n offsetY_1 = -height;\n }\n else if (textBaseline === 'top' || textBaseline === 'hanging') {\n offsetY_1 = 0;\n }\n return {\n font: font,\n width: width,\n height: height,\n lines: lines,\n lineWidths: lineWidths,\n lineHeight: lineHeight_1,\n maxLineWidth: maxLineWidth,\n fontProperties: fontProperties,\n lineMetrics: lineWidths.map(function (width, i) {\n var offsetX = 0;\n // handle horizontal text align\n if (textAlign === 'center' || textAlign === 'middle') {\n offsetX -= width / 2;\n }\n else if (textAlign === 'right' || textAlign === 'end') {\n offsetX -= width;\n }\n return new Rectangle(offsetX - lineWidth / 2, offsetY_1 + i * lineHeight_1, width + lineWidth, lineHeight_1);\n }),\n };\n }\n };\n TextService.prototype.setGraphemeOnPath = function () { };\n TextService.prototype.wordWrap = function (text, parsedStyle, offscreenCanvas) {\n var _this = this;\n var _a = parsedStyle.wordWrapWidth, wordWrapWidth = _a === void 0 ? 0 : _a, letterSpacing = parsedStyle.letterSpacing, _b = parsedStyle.maxLines, maxLines = _b === void 0 ? Infinity : _b, textOverflow = parsedStyle.textOverflow;\n var context = this.runtime.offscreenCanvasCreator.getOrCreateContext(offscreenCanvas);\n var maxWidth = wordWrapWidth + letterSpacing;\n var ellipsis = '';\n if (textOverflow === 'ellipsis') {\n ellipsis = '...';\n }\n else if (textOverflow && textOverflow !== 'clip') {\n ellipsis = textOverflow;\n }\n var lines = [];\n var currentIndex = 0;\n var currentWidth = 0;\n var cache = {};\n var calcWidth = function (char) {\n return _this.getFromCache(char, letterSpacing, cache, context);\n };\n var ellipsisWidth = Array.from(ellipsis).reduce(function (prev, cur) {\n return prev + calcWidth(cur);\n }, 0);\n var chars = Array.from(text);\n for (var i = 0; i < chars.length; i++) {\n var char = chars[i];\n var prevChar = text[i - 1];\n var nextChar = text[i + 1];\n var charWidth = calcWidth(char);\n if (this.isNewline(char)) {\n currentIndex++;\n // exceed maxLines, break immediately\n if (currentIndex >= maxLines) {\n parsedStyle.isOverflowing = true;\n break;\n }\n currentWidth = 0;\n lines[currentIndex] = '';\n continue;\n }\n if (currentWidth > 0 && currentWidth + charWidth > maxWidth) {\n if (currentIndex + 1 >= maxLines) {\n parsedStyle.isOverflowing = true;\n // If there is not enough space to display the string itself, it is clipped.\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/text-overflow#values\n if (ellipsisWidth > 0 && ellipsisWidth <= maxWidth) {\n // Backspace from line's end.\n var currentLineLength = lines[currentIndex].length;\n var lastLineWidth = 0;\n var lastLineIndex = currentLineLength;\n for (var i_1 = 0; i_1 < currentLineLength; i_1++) {\n var width = calcWidth(lines[currentIndex][i_1]);\n if (lastLineWidth + width + ellipsisWidth > maxWidth) {\n lastLineIndex = i_1;\n break;\n }\n lastLineWidth += width;\n }\n lines[currentIndex] =\n (lines[currentIndex] || '').slice(0, lastLineIndex) + ellipsis;\n }\n break;\n }\n currentIndex++;\n currentWidth = 0;\n lines[currentIndex] = '';\n if (this.isBreakingSpace(char)) {\n continue;\n }\n if (!this.canBreakInLastChar(char)) {\n lines = this.trimToBreakable(lines);\n currentWidth = this.sumTextWidthByCache(lines[currentIndex] || '', cache);\n }\n if (this.shouldBreakByKinsokuShorui(char, nextChar)) {\n lines = this.trimByKinsokuShorui(lines);\n currentWidth += calcWidth(prevChar || '');\n }\n }\n currentWidth += charWidth;\n lines[currentIndex] = (lines[currentIndex] || '') + char;\n }\n return lines.join('\\n');\n };\n TextService.prototype.isBreakingSpace = function (char) {\n if (typeof char !== 'string') {\n return false;\n }\n return TEXT_METRICS.BreakingSpaces.indexOf(char.charCodeAt(0)) >= 0;\n };\n TextService.prototype.isNewline = function (char) {\n if (typeof char !== 'string') {\n return false;\n }\n return TEXT_METRICS.Newlines.indexOf(char.charCodeAt(0)) >= 0;\n };\n TextService.prototype.trimToBreakable = function (prev) {\n var next = __spreadArray([], __read(prev), false);\n var prevLine = next[next.length - 2];\n var index = this.findBreakableIndex(prevLine);\n if (index === -1 || !prevLine)\n return next;\n var trimmedChar = prevLine.slice(index, index + 1);\n var isTrimmedWithSpace = this.isBreakingSpace(trimmedChar);\n var trimFrom = index + 1;\n var trimTo = index + (isTrimmedWithSpace ? 0 : 1);\n next[next.length - 1] += prevLine.slice(trimFrom, prevLine.length);\n next[next.length - 2] = prevLine.slice(0, trimTo);\n return next;\n };\n TextService.prototype.canBreakInLastChar = function (char) {\n if (char && LATIN_REGEX.test(char))\n return false;\n return true;\n };\n TextService.prototype.sumTextWidthByCache = function (text, cache) {\n return text.split('').reduce(function (sum, c) {\n if (!cache[c])\n throw Error('cannot count the word without cache');\n return sum + cache[c];\n }, 0);\n };\n TextService.prototype.findBreakableIndex = function (line) {\n for (var i = line.length - 1; i >= 0; i--) {\n if (!LATIN_REGEX.test(line[i]))\n return i;\n }\n return -1;\n };\n TextService.prototype.getFromCache = function (key, letterSpacing, cache, context) {\n var width = cache[key];\n if (typeof width !== 'number') {\n var spacing = key.length * letterSpacing;\n width = context.measureText(key).width + spacing;\n cache[key] = width;\n }\n return width;\n };\n return TextService;\n}());\n\nvar runtime = {};\n/**\n * Replace with IoC container\n */\nvar geometryUpdaterFactory = (function () {\n var _a;\n var rectUpdater = new RectUpdater();\n var polylineUpdater = new PolylineUpdater();\n return _a = {},\n _a[Shape.CIRCLE] = new CircleUpdater(),\n _a[Shape.ELLIPSE] = new EllipseUpdater(),\n _a[Shape.RECT] = rectUpdater,\n _a[Shape.IMAGE] = rectUpdater,\n _a[Shape.GROUP] = rectUpdater,\n _a[Shape.LINE] = new LineUpdater(),\n _a[Shape.TEXT] = new TextUpdater(runtime),\n _a[Shape.POLYLINE] = polylineUpdater,\n _a[Shape.POLYGON] = polylineUpdater,\n _a[Shape.PATH] = new PathUpdater(),\n _a[Shape.HTML] = null,\n _a[Shape.MESH] = null,\n _a;\n})();\nvar CSSPropertySyntaxFactory = (function () {\n var _a;\n var color = new CSSPropertyColor();\n var length = new CSSPropertyLengthOrPercentage();\n return _a = {},\n _a[PropertySyntax.PERCENTAGE] = null,\n _a[PropertySyntax.NUMBER] = new CSSPropertyNumber(),\n _a[PropertySyntax.ANGLE] = new CSSPropertyAngle(),\n _a[PropertySyntax.DEFINED_PATH] = new CSSPropertyClipPath(),\n _a[PropertySyntax.PAINT] = color,\n _a[PropertySyntax.COLOR] = color,\n _a[PropertySyntax.FILTER] = new CSSPropertyFilter(),\n _a[PropertySyntax.LENGTH] = length,\n _a[PropertySyntax.LENGTH_PERCENTAGE] = length,\n _a[PropertySyntax.LENGTH_PERCENTAGE_12] = new CSSPropertyLengthOrPercentage12(),\n _a[PropertySyntax.LENGTH_PERCENTAGE_14] = new CSSPropertyLengthOrPercentage14(),\n _a[PropertySyntax.COORDINATE] = new CSSPropertyLocalPosition(),\n _a[PropertySyntax.OFFSET_DISTANCE] = new CSSPropertyOffsetDistance(),\n _a[PropertySyntax.OPACITY_VALUE] = new CSSPropertyOpacity(),\n _a[PropertySyntax.PATH] = new CSSPropertyPath(),\n _a[PropertySyntax.LIST_OF_POINTS] = new CSSPropertyPoints(),\n _a[PropertySyntax.SHADOW_BLUR] = new CSSPropertyShadowBlur(),\n _a[PropertySyntax.TEXT] = new CSSPropertyText(),\n _a[PropertySyntax.TEXT_TRANSFORM] = new CSSPropertyTextTransform(),\n _a[PropertySyntax.TRANSFORM] = new CSSPropertyTransform(),\n _a[PropertySyntax.TRANSFORM_ORIGIN] = new CSSPropertyTransformOrigin(),\n _a[PropertySyntax.Z_INDEX] = new CSSPropertyZIndex(),\n _a[PropertySyntax.MARKER] = new CSSPropertyMarker(),\n _a;\n})();\nvar getGlobalThis = function () {\n if (typeof globalThis !== 'undefined')\n return globalThis;\n if (typeof self !== 'undefined')\n return self;\n if (typeof window !== 'undefined')\n return window;\n // @ts-ignore\n if (typeof global !== 'undefined')\n return global;\n return {};\n // [!] Error: The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten\n // @see https://rollupjs.org/troubleshooting/#error-this-is-undefined\n // if (typeof this !== 'undefined') return this;\n};\n/**\n * Camera\n * `g-camera-api` will provide an advanced implementation\n */\nruntime.CameraContribution = Camera;\n/**\n * `g-web-animations-api` will provide an AnimationTimeline\n */\nruntime.AnimationTimeline = null;\nruntime.EasingFunction = null;\nruntime.offscreenCanvasCreator = new OffscreenCanvasCreator();\nruntime.sceneGraphSelector = new DefaultSceneGraphSelector();\nruntime.sceneGraphService = new DefaultSceneGraphService(runtime);\nruntime.textService = new TextService(runtime);\nruntime.geometryUpdaterFactory = geometryUpdaterFactory;\nruntime.CSSPropertySyntaxFactory = CSSPropertySyntaxFactory;\nruntime.styleValueRegistry = new DefaultStyleValueRegistry(runtime);\nruntime.layoutRegistry = null;\nruntime.globalThis = getGlobalThis();\nruntime.enableCSSParsing = true;\nruntime.enableDataset = false;\nruntime.enableStyleSyntax = true;\n\nvar entityCounter = 0;\nfunction resetEntityCounter() {\n entityCounter = 0;\n}\nvar insertedEvent = new MutationEvent(ElementEvent.INSERTED, null, '', '', '', 0, '', '');\nvar removedEvent = new MutationEvent(ElementEvent.REMOVED, null, '', '', '', 0, '', '');\nvar destroyEvent = new CustomEvent(ElementEvent.DESTROY);\n/**\n * Has following capabilities:\n * * Node insert/remove, eg. appendChild, removeChild, remove...\n * * Query eg. querySelector getElementById...\n * * Animation\n */\nvar Element = /** @class */ (function (_super) {\n __extends(Element, _super);\n function Element() {\n var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n /**\n * Unique id.\n */\n _this.entity = entityCounter++;\n _this.renderable = {\n bounds: undefined,\n boundsDirty: true,\n renderBounds: undefined,\n renderBoundsDirty: true,\n dirtyRenderBounds: undefined,\n dirty: false,\n };\n _this.cullable = {\n strategy: Strategy.Standard,\n visibilityPlaneMask: -1,\n visible: true,\n enable: true,\n };\n _this.transformable = {\n dirtyFlag: false,\n localDirtyFlag: false,\n frozen: false,\n localPosition: [0, 0, 0],\n localRotation: [0, 0, 0, 1],\n localScale: [1, 1, 1],\n localTransform: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n localSkew: [0, 0],\n position: [0, 0, 0],\n rotation: [0, 0, 0, 1],\n scaling: [1, 1, 1],\n worldTransform: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n origin: [0, 0, 0],\n };\n _this.sortable = {\n dirty: false,\n sorted: undefined,\n renderOrder: 0,\n dirtyChildren: [],\n dirtyReason: undefined,\n };\n _this.geometry = {\n contentBounds: undefined,\n renderBounds: undefined,\n };\n _this.rBushNode = {\n aabb: undefined,\n };\n /**\n * https://developer.mozilla.org/zh-CN/docs/Web/API/Element/namespaceURI\n */\n _this.namespaceURI = 'g';\n _this.scrollLeft = 0;\n _this.scrollTop = 0;\n /**\n * We don't support border now\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/clientTop\n */\n _this.clientTop = 0;\n _this.clientLeft = 0;\n /**\n * is destroyed or not\n */\n _this.destroyed = false;\n /**\n * compatible with `style`\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style\n */\n _this.style = {};\n _this.computedStyle = runtime.enableCSSParsing\n ? {\n anchor: unsetKeywordValue,\n opacity: unsetKeywordValue,\n fillOpacity: unsetKeywordValue,\n strokeOpacity: unsetKeywordValue,\n fill: unsetKeywordValue,\n stroke: unsetKeywordValue,\n transform: unsetKeywordValue,\n transformOrigin: unsetKeywordValue,\n visibility: unsetKeywordValue,\n pointerEvents: unsetKeywordValue,\n lineWidth: unsetKeywordValue,\n lineCap: unsetKeywordValue,\n lineJoin: unsetKeywordValue,\n increasedLineWidthForHitTesting: unsetKeywordValue,\n fontSize: unsetKeywordValue,\n fontFamily: unsetKeywordValue,\n fontStyle: unsetKeywordValue,\n fontWeight: unsetKeywordValue,\n fontVariant: unsetKeywordValue,\n textAlign: unsetKeywordValue,\n textBaseline: unsetKeywordValue,\n textTransform: unsetKeywordValue,\n zIndex: unsetKeywordValue,\n filter: unsetKeywordValue,\n shadowType: unsetKeywordValue,\n }\n : null;\n /**\n * Renderers will use these used values.\n */\n _this.parsedStyle = {\n // opacity: '',\n // fillOpacity: '',\n // strokeOpacity: '',\n // transformOrigin: '',\n // visibility: '',\n // pointerEvents: '',\n // lineWidth: '',\n // lineCap: '',\n // lineJoin: '',\n // increasedLineWidthForHitTesting: '',\n // fontSize: '',\n // fontFamily: '',\n // fontStyle: '',\n // fontWeight: '',\n // fontVariant: '',\n // textAlign: '',\n // textBaseline: '',\n // textTransform: '',\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/attributes\n */\n _this.attributes = {};\n return _this;\n }\n Object.defineProperty(Element.prototype, \"className\", {\n /**\n * used in `getElementsByClassName`\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\n */\n get: function () {\n // @ts-ignore\n return this.getAttribute('class') || '';\n },\n set: function (className) {\n this.setAttribute('class', className);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"classList\", {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/classList\n */\n get: function () {\n return this.className.split(' ').filter(function (c) { return c !== ''; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"tagName\", {\n get: function () {\n return this.nodeName;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"children\", {\n get: function () {\n return this.childNodes;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"childElementCount\", {\n get: function () {\n return this.childNodes.length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"firstElementChild\", {\n get: function () {\n return this.firstChild;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"lastElementChild\", {\n get: function () {\n return this.lastChild;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"parentElement\", {\n get: function () {\n return this.parentNode;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"nextSibling\", {\n get: function () {\n if (this.parentNode) {\n var index = this.parentNode.childNodes.indexOf(this);\n return this.parentNode.childNodes[index + 1] || null;\n }\n return null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"previousSibling\", {\n get: function () {\n if (this.parentNode) {\n var index = this.parentNode.childNodes.indexOf(this);\n return this.parentNode.childNodes[index - 1] || null;\n }\n return null;\n },\n enumerable: false,\n configurable: true\n });\n Element.prototype.cloneNode = function (deep) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Element.prototype.appendChild = function (child, index) {\n var _a;\n if (child.destroyed) {\n throw new Error(ERROR_MSG_APPEND_DESTROYED_ELEMENT);\n }\n runtime.sceneGraphService.attach(child, this, index);\n if ((_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) {\n this.ownerDocument.defaultView.mountChildren(child);\n }\n insertedEvent.relatedNode = this;\n child.dispatchEvent(insertedEvent);\n return child;\n };\n Element.prototype.insertBefore = function (newChild, refChild) {\n if (!refChild) {\n this.appendChild(newChild);\n }\n else {\n if (newChild.parentElement) {\n newChild.parentElement.removeChild(newChild);\n }\n var index = this.childNodes.indexOf(refChild);\n if (index === -1) {\n this.appendChild(newChild);\n }\n else {\n this.appendChild(newChild, index);\n }\n }\n return newChild;\n };\n Element.prototype.replaceChild = function (newChild, oldChild) {\n var index = this.childNodes.indexOf(oldChild);\n this.removeChild(oldChild);\n this.appendChild(newChild, index);\n return oldChild;\n };\n Element.prototype.removeChild = function (child) {\n var _a;\n // should emit on itself before detach\n removedEvent.relatedNode = this;\n child.dispatchEvent(removedEvent);\n if ((_a = child.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) {\n child.ownerDocument.defaultView.unmountChildren(child);\n }\n // remove from scene graph\n runtime.sceneGraphService.detach(child);\n return child;\n };\n /**\n * Remove all children which can be appended to its original parent later again.\n */\n Element.prototype.removeChildren = function () {\n for (var i = this.childNodes.length - 1; i >= 0; i--) {\n var child = this.childNodes[i];\n this.removeChild(child);\n }\n };\n /**\n * Recursively destroy all children which can not be appended to its original parent later again.\n */\n Element.prototype.destroyChildren = function () {\n for (var i = this.childNodes.length - 1; i >= 0; i--) {\n var child = this.childNodes[i];\n if (child.childNodes.length) {\n child.destroyChildren();\n }\n child.destroy();\n }\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\n */\n Element.prototype.matches = function (selector) {\n return runtime.sceneGraphService.matches(selector, this);\n };\n Element.prototype.getElementById = function (id) {\n return runtime.sceneGraphService.querySelector(\"#\".concat(id), this);\n };\n Element.prototype.getElementsByName = function (name) {\n return runtime.sceneGraphService.querySelectorAll(\"[name=\\\"\".concat(name, \"\\\"]\"), this);\n };\n Element.prototype.getElementsByClassName = function (className) {\n return runtime.sceneGraphService.querySelectorAll(\".\".concat(className), this);\n };\n Element.prototype.getElementsByTagName = function (tagName) {\n return runtime.sceneGraphService.querySelectorAll(tagName, this);\n };\n Element.prototype.querySelector = function (selectors) {\n return runtime.sceneGraphService.querySelector(selectors, this);\n };\n Element.prototype.querySelectorAll = function (selectors) {\n return runtime.sceneGraphService.querySelectorAll(selectors, this);\n };\n /**\n * should traverses the element and its parents (heading toward the document root)\n * until it finds a node that matches the specified CSS selector.\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Element/closest\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#polyfill\n */\n Element.prototype.closest = function (selectors) {\n var el = this;\n do {\n if (runtime.sceneGraphService.matches(selectors, el))\n return el;\n el = el.parentElement;\n } while (el !== null);\n return null;\n };\n /**\n * search in scene group, but should not include itself\n */\n Element.prototype.find = function (filter) {\n var _this = this;\n var target = null;\n this.forEach(function (object) {\n if (object !== _this && filter(object)) {\n target = object;\n return true;\n }\n return false;\n });\n return target;\n };\n Element.prototype.findAll = function (filter) {\n var _this = this;\n var objects = [];\n this.forEach(function (object) {\n if (object !== _this && filter(object)) {\n objects.push(object);\n }\n });\n return objects;\n };\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Element/after\n */\n Element.prototype.after = function () {\n var _this = this;\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n if (this.parentNode) {\n var index_1 = this.parentNode.childNodes.indexOf(this);\n nodes.forEach(function (node, i) { var _a; return (_a = _this.parentNode) === null || _a === void 0 ? void 0 : _a.appendChild(node, index_1 + i + 1); });\n }\n };\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Element/before\n */\n Element.prototype.before = function () {\n var _a;\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n if (this.parentNode) {\n var index = this.parentNode.childNodes.indexOf(this);\n var _b = __read(nodes), first = _b[0], rest = _b.slice(1);\n this.parentNode.appendChild(first, index);\n (_a = first).after.apply(_a, __spreadArray([], __read(rest), false));\n }\n };\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Element/replaceWith\n */\n Element.prototype.replaceWith = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.after.apply(this, __spreadArray([], __read(nodes), false));\n this.remove();\n };\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Element/append\n */\n Element.prototype.append = function () {\n var _this = this;\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n nodes.forEach(function (node) { return _this.appendChild(node); });\n };\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Element/prepend\n */\n Element.prototype.prepend = function () {\n var _this = this;\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n nodes.forEach(function (node, i) { return _this.appendChild(node, i); });\n };\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Element/replaceChildren\n */\n Element.prototype.replaceChildren = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n while (this.childNodes.length && this.firstChild) {\n this.removeChild(this.firstChild);\n }\n this.append.apply(this, __spreadArray([], __read(nodes), false));\n };\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Element/remove\n */\n Element.prototype.remove = function () {\n if (this.parentNode) {\n return this.parentNode.removeChild(this);\n }\n return this;\n };\n Element.prototype.destroy = function () {\n // destroy itself before remove\n this.dispatchEvent(destroyEvent);\n // remove from scenegraph first\n this.remove();\n // remove event listeners\n this.emitter.removeAllListeners();\n this.destroyed = true;\n };\n Element.prototype.getGeometryBounds = function () {\n return runtime.sceneGraphService.getGeometryBounds(this);\n };\n Element.prototype.getRenderBounds = function () {\n return runtime.sceneGraphService.getBounds(this, true);\n };\n /**\n * get bounds in world space, account for children\n */\n Element.prototype.getBounds = function () {\n return runtime.sceneGraphService.getBounds(this);\n };\n /**\n * get bounds in local space, account for children\n */\n Element.prototype.getLocalBounds = function () {\n return runtime.sceneGraphService.getLocalBounds(this);\n };\n /**\n * account for context's bounds in client space,\n * but not accounting for children\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect\n */\n Element.prototype.getBoundingClientRect = function () {\n return runtime.sceneGraphService.getBoundingClientRect(this);\n };\n /**\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Element/getClientRects\n */\n Element.prototype.getClientRects = function () {\n return [this.getBoundingClientRect()];\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/computedStyleMap\n * eg. circle.computedStyleMap().get('fill');\n */\n Element.prototype.computedStyleMap = function () {\n return new Map(Object.entries(this.computedStyle));\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttributeNames\n */\n Element.prototype.getAttributeNames = function () {\n return Object.keys(this.attributes);\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute\n */\n Element.prototype.getAttribute = function (name) {\n // @see https://github.com/antvis/G/issues/1267\n if (isSymbol(name)) {\n return runtime.enableCSSParsing ? null : undefined;\n }\n var value = this.attributes[name];\n if (value === undefined) {\n var attributeName = formatAttributeName(name);\n value = this.attributes[attributeName];\n // if the given attribute does not exist, the value returned will either be null or \"\"\n return runtime.enableCSSParsing ? (isNil(value) ? null : value) : value;\n }\n else {\n return value;\n }\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/hasAttribute\n */\n Element.prototype.hasAttribute = function (qualifiedName) {\n return this.getAttributeNames().includes(qualifiedName);\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/hasAttributes\n */\n Element.prototype.hasAttributes = function () {\n return !!this.getAttributeNames().length;\n };\n /**\n * should use removeAttribute() instead of setting the attribute value to null either directly or using setAttribute(). Many attributes will not behave as expected if you set them to null.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute\n */\n Element.prototype.removeAttribute = function (attributeName) {\n this.setAttribute(attributeName, null);\n delete this.attributes[attributeName];\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute\n */\n Element.prototype.setAttribute = function (attributeName, value, force) {\n this.attributes[attributeName] = value;\n };\n Element.prototype.getAttributeNS = function (namespace, localName) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Element.prototype.getAttributeNode = function (qualifiedName) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Element.prototype.getAttributeNodeNS = function (namespace, localName) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Element.prototype.hasAttributeNS = function (namespace, localName) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Element.prototype.removeAttributeNS = function (namespace, localName) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Element.prototype.removeAttributeNode = function (attr) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Element.prototype.setAttributeNS = function (namespace, qualifiedName, value) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Element.prototype.setAttributeNode = function (attr) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Element.prototype.setAttributeNodeNS = function (attr) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Element.prototype.toggleAttribute = function (qualifiedName, force) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n return Element;\n}(Node));\n\nfunction isDisplayObject(value) {\n return !!(value === null || value === void 0 ? void 0 : value.nodeName);\n}\nvar mutationEvent = new MutationEvent(ElementEvent.ATTR_MODIFIED, null, null, null, null, MutationEvent.MODIFICATION, null, null);\nvar DEFAULT_STYLE_PROPS = {\n anchor: '',\n opacity: '',\n fillOpacity: '',\n strokeOpacity: '',\n fill: '',\n stroke: '',\n transform: '',\n transformOrigin: '',\n visibility: '',\n pointerEvents: '',\n lineWidth: '',\n lineCap: '',\n lineJoin: '',\n increasedLineWidthForHitTesting: '',\n fontSize: '',\n fontFamily: '',\n fontStyle: '',\n fontWeight: '',\n fontVariant: '',\n textAlign: '',\n textBaseline: '',\n textTransform: '',\n zIndex: '',\n filter: '',\n shadowType: '',\n};\nvar DEFAULT_PARSED_STYLE_PROPS = {\n anchor: [0, 0],\n fill: noneColor,\n stroke: noneColor,\n transform: [],\n zIndex: 0,\n filter: [],\n shadowType: 'outer',\n miterLimit: 10,\n};\nvar DEFAULT_PARSED_STYLE_PROPS_CSS_DISABLED = __assign(__assign({}, DEFAULT_PARSED_STYLE_PROPS), { opacity: 1, fillOpacity: 1, strokeOpacity: 1, visibility: 'visible', pointerEvents: 'auto', lineWidth: 1, lineCap: 'butt', lineJoin: 'miter', increasedLineWidthForHitTesting: 0, fillRule: 'nonzero' });\nvar INHERITABLE_BASE_STYLE_PROPS = [\n 'opacity',\n 'fillOpacity',\n 'strokeOpacity',\n 'transformOrigin',\n 'visibility',\n 'pointerEvents',\n 'lineWidth',\n 'lineCap',\n 'lineJoin',\n 'increasedLineWidthForHitTesting',\n];\nvar INHERITABLE_STYLE_PROPS = __spreadArray(__spreadArray([], __read(INHERITABLE_BASE_STYLE_PROPS), false), [\n 'fontSize',\n 'fontFamily',\n 'fontStyle',\n 'fontWeight',\n 'fontVariant',\n 'textAlign',\n 'textBaseline',\n 'textTransform',\n], false);\nvar DATASET_PREFIX = 'data-';\n/**\n * prototype chains: DisplayObject -> Element -> Node -> EventTarget\n *\n * mixins: Animatable, Transformable, Visible\n * @see https://github.com/tannerntannern/ts-mixer/blob/master/README.md#mixing-generic-classes\n *\n * Provide abilities in scene graph, such as:\n * * transform `translate/rotate/scale`\n * * add/remove child\n * * visibility and z-index\n *\n * Those abilities are implemented with those components: `Transform/Sortable/Visible`.\n *\n * Emit following events:\n * * init\n * * destroy\n * * attributeChanged\n */\nvar DisplayObject = /** @class */ (function (_super) {\n __extends(DisplayObject, _super);\n function DisplayObject(config) {\n var _a;\n var _this = _super.call(this) || this;\n _this.isCustomElement = false;\n _this.isMutationObserved = false;\n /**\n * push to active animations after calling `animate()`\n */\n _this.activeAnimations = [];\n /**\n * Use `this.style.clipPath` instead.\n * @deprecated\n */\n _this.getClip = function () {\n return this.style.clipPath || null;\n };\n // assign name, id to config\n // eg. group.get('name')\n _this.config = config;\n // compatible with G 3.0\n _this.config.interactive = (_a = _this.config.capture) !== null && _a !== void 0 ? _a : _this.config.interactive;\n // init scene graph node\n _this.id = _this.config.id || '';\n _this.name = _this.config.name || '';\n if (_this.config.className || _this.config.class) {\n _this.className = _this.config.className || _this.config.class;\n }\n _this.nodeName = _this.config.type || Shape.GROUP;\n // compatible with G 3.0\n _this.config.style =\n _this.config.style || _this.config.attrs || {};\n Object.assign(_this.config.style, _this.config.attrs);\n // this.config.style = {\n // // ...DEFAULT_STYLE_PROPS,\n // ...this.config.style,\n // ...this.config.attrs,\n // };\n if (_this.config.visible != null) {\n _this.config.style.visibility =\n _this.config.visible === false ? 'hidden' : 'visible';\n }\n if (_this.config.interactive != null) {\n _this.config.style.pointerEvents =\n _this.config.interactive === false ? 'none' : 'auto';\n }\n // merge parsed value\n Object.assign(_this.parsedStyle, runtime.enableCSSParsing\n ? DEFAULT_PARSED_STYLE_PROPS\n : DEFAULT_PARSED_STYLE_PROPS_CSS_DISABLED, _this.config.initialParsedStyle);\n if (runtime.enableCSSParsing) {\n Object.assign(_this.attributes, DEFAULT_STYLE_PROPS);\n }\n // start to process attributes\n _this.initAttributes(_this.config.style);\n var Proxy = runtime.globalThis.Proxy\n ? runtime.globalThis.Proxy\n : function () { };\n if (runtime.enableDataset) {\n _this.dataset = new Proxy({}, {\n get: function (target, name) {\n var formattedName = \"\".concat(DATASET_PREFIX).concat(kebabize(name));\n if (target[formattedName] !== undefined) {\n return target[formattedName];\n }\n return _this.getAttribute(formattedName);\n },\n set: function (_, prop, value) {\n _this.setAttribute(\"\".concat(DATASET_PREFIX).concat(kebabize(prop)), value);\n return true;\n },\n });\n }\n if (runtime.enableStyleSyntax) {\n _this.style = new Proxy(\n // @ts-ignore\n {\n // ...this.attributes,\n setProperty: function (propertyName, value) {\n _this.setAttribute(propertyName, value);\n },\n getPropertyValue: function (propertyName) {\n return _this.getAttribute(propertyName);\n },\n removeProperty: function (propertyName) {\n _this.removeAttribute(propertyName);\n },\n item: function () {\n return '';\n },\n }, {\n get: function (target, name) {\n if (target[name] !== undefined) {\n // if (name in target) {\n return target[name];\n }\n return _this.getAttribute(name);\n },\n set: function (_, prop, value) {\n _this.setAttribute(prop, value);\n return true;\n },\n });\n }\n return _this;\n }\n DisplayObject.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // stop all active animations\n this.getAnimations().forEach(function (animation) {\n animation.cancel();\n });\n // FIXME\n // this.renderable = null;\n // this.cullable = null;\n // this.transformable = null;\n // this.rBushNode = null;\n // this.geometry = null;\n // this.sortable = null;\n };\n DisplayObject.prototype.cloneNode = function (deep, customCloneFunc) {\n var clonedStyle = __assign({}, this.attributes);\n for (var attributeName in clonedStyle) {\n var attribute = clonedStyle[attributeName];\n // @see https://github.com/antvis/G/issues/1095\n if (isDisplayObject(attribute) &&\n // share the same clipPath if possible\n attributeName !== 'clipPath' &&\n attributeName !== 'offsetPath' &&\n attributeName !== 'textPath') {\n clonedStyle[attributeName] = attribute.cloneNode(deep);\n }\n // TODO: clone other type\n if (customCloneFunc) {\n clonedStyle[attributeName] = customCloneFunc(attributeName, attribute);\n }\n }\n var cloned = new this.constructor({\n // copy id & name\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Node/cloneNode#notes\n id: this.id,\n name: this.name,\n className: this.name,\n interactive: this.interactive,\n style: clonedStyle,\n });\n // apply transform\n cloned.setLocalTransform(this.getLocalTransform());\n if (deep) {\n this.children.forEach(function (child) {\n // skip marker\n if (!child.style.isMarker) {\n var clonedChild = child.cloneNode(deep);\n cloned.appendChild(clonedChild);\n }\n });\n }\n return cloned;\n };\n DisplayObject.prototype.initAttributes = function (attributes) {\n if (attributes === void 0) { attributes = {}; }\n var renderable = this.renderable;\n var options = {\n forceUpdateGeometry: true,\n // usedAttributes:\n // // only Group / Text should account for text relative props\n // this.tagName === Shape.GROUP || this.tagName === Shape.TEXT\n // ? INHERITABLE_STYLE_PROPS\n // : INHERITABLE_BASE_STYLE_PROPS,\n };\n if (runtime.enableCSSParsing) {\n // @ts-ignore\n options.usedAttributes = INHERITABLE_STYLE_PROPS;\n }\n // account for FCP, process properties as less as possible\n var formattedAttributes = {};\n for (var name_1 in attributes) {\n var attributeName = formatAttributeName(name_1);\n formattedAttributes[attributeName] = attributes[name_1];\n }\n runtime.styleValueRegistry.processProperties(this, formattedAttributes, options);\n // redraw at next frame\n renderable.dirty = true;\n };\n DisplayObject.prototype.setAttribute = function (name, value, force, memoize) {\n if (force === void 0) { force = false; }\n if (memoize === void 0) { memoize = true; }\n var attributeName = formatAttributeName(name);\n // ignore undefined value\n if (isUndefined(value)) {\n return;\n }\n if (force || value !== this.attributes[attributeName]) {\n this.internalSetAttribute(attributeName, value, { memoize: memoize });\n _super.prototype.setAttribute.call(this, attributeName, value);\n }\n };\n /**\n * called when attributes get changed or initialized\n */\n DisplayObject.prototype.internalSetAttribute = function (name, value, parseOptions) {\n var _a;\n if (parseOptions === void 0) { parseOptions = {}; }\n var renderable = this.renderable;\n var oldValue = this.attributes[name];\n var oldParsedValue = this.parsedStyle[name];\n runtime.styleValueRegistry.processProperties(this, (_a = {},\n _a[name] = value,\n _a), parseOptions);\n // redraw at next frame\n renderable.dirty = true;\n var newParsedValue = this.parsedStyle[name];\n if (this.isConnected) {\n mutationEvent.relatedNode = this;\n mutationEvent.prevValue = oldValue;\n mutationEvent.newValue = value;\n mutationEvent.attrName = name;\n mutationEvent.prevParsedValue = oldParsedValue;\n mutationEvent.newParsedValue = newParsedValue;\n if (this.isMutationObserved) {\n this.dispatchEvent(mutationEvent);\n }\n else {\n mutationEvent.target = this;\n this.ownerDocument.defaultView.dispatchEvent(mutationEvent, true);\n }\n }\n if (((this.isCustomElement && this.isConnected) || !this.isCustomElement) &&\n this.attributeChangedCallback) {\n this.attributeChangedCallback(name, oldValue, value, oldParsedValue, newParsedValue);\n }\n };\n // #region transformable\n /**\n * returns different values than getBoundingClientRect(), as the latter returns value relative to the viewport\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement/getBBox\n *\n * FIXME: It is worth noting that getBBox responds to original untransformed values of a drawn object.\n * @see https://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html#getBBox\n */\n DisplayObject.prototype.getBBox = function () {\n var aabb = this.getBounds();\n var _a = __read(aabb.getMin(), 2), left = _a[0], top = _a[1];\n var _b = __read(aabb.getMax(), 2), right = _b[0], bottom = _b[1];\n return new Rectangle(left, top, right - left, bottom - top);\n };\n DisplayObject.prototype.setOrigin = function (position, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n runtime.sceneGraphService.setOrigin(this, createVec3(position, y, z));\n return this;\n };\n DisplayObject.prototype.getOrigin = function () {\n return runtime.sceneGraphService.getOrigin(this);\n };\n /**\n * set position in world space\n */\n DisplayObject.prototype.setPosition = function (position, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n runtime.sceneGraphService.setPosition(this, createVec3(position, y, z));\n return this;\n };\n /**\n * set position in local space\n */\n DisplayObject.prototype.setLocalPosition = function (position, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n runtime.sceneGraphService.setLocalPosition(this, createVec3(position, y, z));\n return this;\n };\n /**\n * translate in world space\n */\n DisplayObject.prototype.translate = function (position, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n runtime.sceneGraphService.translate(this, createVec3(position, y, z));\n return this;\n };\n /**\n * translate in local space\n */\n DisplayObject.prototype.translateLocal = function (position, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n runtime.sceneGraphService.translateLocal(this, createVec3(position, y, z));\n return this;\n };\n DisplayObject.prototype.getPosition = function () {\n return runtime.sceneGraphService.getPosition(this);\n };\n DisplayObject.prototype.getLocalPosition = function () {\n return runtime.sceneGraphService.getLocalPosition(this);\n };\n /**\n * compatible with G 3.0\n *\n * scaling in local space\n * scale(10) = scale(10, 10, 10)\n *\n * we can't set scale in world space\n */\n DisplayObject.prototype.scale = function (scaling, y, z) {\n return this.scaleLocal(scaling, y, z);\n };\n DisplayObject.prototype.scaleLocal = function (scaling, y, z) {\n if (typeof scaling === 'number') {\n y = y || scaling;\n z = z || scaling;\n scaling = createVec3(scaling, y, z);\n }\n runtime.sceneGraphService.scaleLocal(this, scaling);\n return this;\n };\n /**\n * set scaling in local space\n */\n DisplayObject.prototype.setLocalScale = function (scaling, y, z) {\n if (typeof scaling === 'number') {\n y = y || scaling;\n z = z || scaling;\n scaling = createVec3(scaling, y, z);\n }\n runtime.sceneGraphService.setLocalScale(this, scaling);\n return this;\n };\n /**\n * get scaling in local space\n */\n DisplayObject.prototype.getLocalScale = function () {\n return runtime.sceneGraphService.getLocalScale(this);\n };\n /**\n * get scaling in world space\n */\n DisplayObject.prototype.getScale = function () {\n return runtime.sceneGraphService.getScale(this);\n };\n /**\n * only return degrees of Z axis in world space\n */\n DisplayObject.prototype.getEulerAngles = function () {\n var _a = __read(getEuler(vec3.create(), runtime.sceneGraphService.getWorldTransform(this)), 3), ez = _a[2];\n return rad2deg(ez);\n };\n /**\n * only return degrees of Z axis in local space\n */\n DisplayObject.prototype.getLocalEulerAngles = function () {\n var _a = __read(getEuler(vec3.create(), runtime.sceneGraphService.getLocalRotation(this)), 3), ez = _a[2];\n return rad2deg(ez);\n };\n /**\n * set euler angles(degrees) in world space\n */\n DisplayObject.prototype.setEulerAngles = function (z) {\n runtime.sceneGraphService.setEulerAngles(this, 0, 0, z);\n return this;\n };\n /**\n * set euler angles(degrees) in local space\n */\n DisplayObject.prototype.setLocalEulerAngles = function (z) {\n runtime.sceneGraphService.setLocalEulerAngles(this, 0, 0, z);\n return this;\n };\n DisplayObject.prototype.rotateLocal = function (x, y, z) {\n if (isNil(y) && isNil(z)) {\n runtime.sceneGraphService.rotateLocal(this, 0, 0, x);\n }\n else {\n runtime.sceneGraphService.rotateLocal(this, x, y, z);\n }\n return this;\n };\n DisplayObject.prototype.rotate = function (x, y, z) {\n if (isNil(y) && isNil(z)) {\n runtime.sceneGraphService.rotate(this, 0, 0, x);\n }\n else {\n runtime.sceneGraphService.rotate(this, x, y, z);\n }\n return this;\n };\n DisplayObject.prototype.setRotation = function (rotation, y, z, w) {\n runtime.sceneGraphService.setRotation(this, rotation, y, z, w);\n return this;\n };\n DisplayObject.prototype.setLocalRotation = function (rotation, y, z, w) {\n runtime.sceneGraphService.setLocalRotation(this, rotation, y, z, w);\n return this;\n };\n DisplayObject.prototype.setLocalSkew = function (skew, y) {\n runtime.sceneGraphService.setLocalSkew(this, skew, y);\n return this;\n };\n DisplayObject.prototype.getRotation = function () {\n return runtime.sceneGraphService.getRotation(this);\n };\n DisplayObject.prototype.getLocalRotation = function () {\n return runtime.sceneGraphService.getLocalRotation(this);\n };\n DisplayObject.prototype.getLocalSkew = function () {\n return runtime.sceneGraphService.getLocalSkew(this);\n };\n DisplayObject.prototype.getLocalTransform = function () {\n return runtime.sceneGraphService.getLocalTransform(this);\n };\n DisplayObject.prototype.getWorldTransform = function () {\n return runtime.sceneGraphService.getWorldTransform(this);\n };\n DisplayObject.prototype.setLocalTransform = function (transform) {\n runtime.sceneGraphService.setLocalTransform(this, transform);\n return this;\n };\n DisplayObject.prototype.resetLocalTransform = function () {\n runtime.sceneGraphService.resetLocalTransform(this);\n };\n // #endregion transformable\n // #region animatable\n /**\n * returns an array of all Animation objects affecting this element\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/getAnimations\n */\n DisplayObject.prototype.getAnimations = function () {\n return this.activeAnimations;\n };\n /**\n * create an animation with WAAPI\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Element/animate\n */\n DisplayObject.prototype.animate = function (keyframes, options) {\n var _a;\n var timeline = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.timeline;\n if (timeline) {\n return timeline.play(this, keyframes, options);\n }\n return null;\n };\n // #endregion animatable\n // #region visible\n /**\n * shortcut for Used value of `visibility`\n */\n DisplayObject.prototype.isVisible = function () {\n var _a;\n return ((_a = this.parsedStyle) === null || _a === void 0 ? void 0 : _a.visibility) === 'visible';\n };\n Object.defineProperty(DisplayObject.prototype, \"interactive\", {\n get: function () {\n return this.isInteractive();\n },\n set: function (b) {\n this.style.pointerEvents = b ? 'auto' : 'none';\n },\n enumerable: false,\n configurable: true\n });\n DisplayObject.prototype.isInteractive = function () {\n var _a;\n return ((_a = this.parsedStyle) === null || _a === void 0 ? void 0 : _a.pointerEvents) !== 'none';\n };\n DisplayObject.prototype.isCulled = function () {\n return !!(this.cullable && this.cullable.enable && !this.cullable.visible);\n };\n /**\n * bring to front in current group\n */\n DisplayObject.prototype.toFront = function () {\n if (this.parentNode) {\n this.style.zIndex =\n Math.max.apply(Math, __spreadArray([], __read(this.parentNode.children.map(function (child) {\n return Number(child.style.zIndex);\n })), false)) + 1;\n }\n return this;\n };\n /**\n * send to back in current group\n */\n DisplayObject.prototype.toBack = function () {\n if (this.parentNode) {\n this.style.zIndex =\n Math.min.apply(Math, __spreadArray([], __read(this.parentNode.children.map(function (child) {\n return Number(child.style.zIndex);\n })), false)) - 1;\n }\n return this;\n };\n // #endregion visible\n // #region deprecated\n /**\n * compatible with G 3.0\n * @alias object.config\n * @deprecated\n */\n DisplayObject.prototype.getConfig = function () {\n return this.config;\n };\n DisplayObject.prototype.attr = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a = __read(args, 2), name = _a[0], value = _a[1];\n if (!name) {\n return this.attributes;\n }\n if (isObject(name)) {\n Object.keys(name).forEach(function (key) {\n _this.setAttribute(key, name[key]);\n });\n return this;\n }\n if (args.length === 2) {\n this.setAttribute(name, value);\n return this;\n }\n return this.attributes[name];\n };\n /**\n * return 3x3 matrix in world space\n * @deprecated\n */\n DisplayObject.prototype.getMatrix = function (transformMat4) {\n var transform = transformMat4 || this.getWorldTransform();\n var _a = __read(mat4.getTranslation(vec3.create(), transform), 2), tx = _a[0], ty = _a[1];\n var _b = __read(mat4.getScaling(vec3.create(), transform), 2), sx = _b[0], sy = _b[1];\n var rotation = mat4.getRotation(quat$1.create(), transform);\n var _c = __read(getEuler(vec3.create(), rotation), 3), eux = _c[0], euz = _c[2];\n // gimbal lock at 90 degrees\n return fromRotationTranslationScale(eux || euz, tx, ty, sx, sy);\n };\n /**\n * return 3x3 matrix in local space\n * @deprecated\n */\n DisplayObject.prototype.getLocalMatrix = function () {\n return this.getMatrix(this.getLocalTransform());\n };\n /**\n * set 3x3 matrix in world space\n * @deprecated\n */\n DisplayObject.prototype.setMatrix = function (mat) {\n var _a = __read(decompose(mat), 5), tx = _a[0], ty = _a[1], scalingX = _a[2], scalingY = _a[3], angle = _a[4];\n this.setEulerAngles(angle)\n .setPosition(tx, ty)\n .setLocalScale(scalingX, scalingY);\n };\n /**\n * set 3x3 matrix in local space\n * @deprecated\n */\n DisplayObject.prototype.setLocalMatrix = function (mat) {\n var _a = __read(decompose(mat), 5), tx = _a[0], ty = _a[1], scalingX = _a[2], scalingY = _a[3], angle = _a[4];\n this.setLocalEulerAngles(angle)\n .setLocalPosition(tx, ty)\n .setLocalScale(scalingX, scalingY);\n };\n /**\n * Use `visibility: visible` instead.\n * @deprecated\n */\n DisplayObject.prototype.show = function () {\n if (runtime.enableCSSParsing) {\n this.style.visibility = 'visible';\n }\n else {\n this.forEach(function (object) {\n object.style.visibility = 'visible';\n });\n }\n };\n /**\n * Use `visibility: hidden` instead.\n * @deprecated\n */\n DisplayObject.prototype.hide = function () {\n if (runtime.enableCSSParsing) {\n this.style.visibility = 'hidden';\n }\n else {\n this.forEach(function (object) {\n object.style.visibility = 'hidden';\n });\n }\n };\n /**\n * Use `childElementCount` instead.\n * @deprecated\n */\n DisplayObject.prototype.getCount = function () {\n return this.childElementCount;\n };\n /**\n * Use `parentElement` instead.\n * @deprecated\n */\n DisplayObject.prototype.getParent = function () {\n return this.parentElement;\n };\n /**\n * Use `children` instead.\n * @deprecated\n */\n DisplayObject.prototype.getChildren = function () {\n return this.children;\n };\n /**\n * Use `firstElementChild` instead.\n * @deprecated\n */\n DisplayObject.prototype.getFirst = function () {\n return this.firstElementChild;\n };\n /**\n * Use `lastElementChild` instead.\n * @deprecated\n */\n DisplayObject.prototype.getLast = function () {\n return this.lastElementChild;\n };\n /**\n * Use `this.children[index]` instead.\n * @deprecated\n */\n DisplayObject.prototype.getChildByIndex = function (index) {\n return this.children[index] || null;\n };\n /**\n * Use `appendChild` instead.\n * @deprecated\n */\n DisplayObject.prototype.add = function (child, index) {\n return this.appendChild(child, index);\n };\n /**\n * Use `this.style.clipPath` instead.\n * @deprecated\n */\n DisplayObject.prototype.setClip = function (clipPath) {\n this.style.clipPath = clipPath;\n };\n /**\n * @deprecated\n */\n DisplayObject.prototype.set = function (name, value) {\n // @ts-ignore\n this.config[name] = value;\n };\n /**\n * @deprecated\n */\n DisplayObject.prototype.get = function (name) {\n return this.config[name];\n };\n /**\n * Use `setPosition` instead.\n * @deprecated\n */\n DisplayObject.prototype.moveTo = function (position, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n this.setPosition(position, y, z);\n return this;\n };\n /**\n * Use `setPosition` instead.\n * @deprecated\n */\n DisplayObject.prototype.move = function (position, y, z) {\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n this.setPosition(position, y, z);\n return this;\n };\n /**\n * Use `this.style.zIndex` instead.\n * @deprecated\n */\n DisplayObject.prototype.setZIndex = function (zIndex) {\n this.style.zIndex = zIndex;\n return this;\n };\n return DisplayObject;\n}(Element));\n\n/**\n * holds useful CSS-related methods.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/CSS\n *\n * * CSS Typed OM @see https://developer.mozilla.org/en-US/docs/Web/API/CSS/factory_functions\n * * register property @see https://developer.mozilla.org/en-US/docs/Web/API/CSS/RegisterProperty\n * * CSS Layout API\n */\nvar CSS = {\n /**\n * \n * @see https://drafts.csswg.org/css-values-4/#number-value\n */\n number: function (n) {\n return new CSSUnitValue(n);\n },\n /**\n * \n * @see https://drafts.csswg.org/css-values-4/#percentage-value\n */\n percent: function (n) {\n return new CSSUnitValue(n, '%');\n },\n /**\n * \n */\n px: function (n) {\n return new CSSUnitValue(n, 'px');\n },\n /**\n * \n */\n em: function (n) {\n return new CSSUnitValue(n, 'em');\n },\n rem: function (n) {\n return new CSSUnitValue(n, 'rem');\n },\n /**\n * \n */\n deg: function (n) {\n return new CSSUnitValue(n, 'deg');\n },\n /**\n * \n */\n grad: function (n) {\n return new CSSUnitValue(n, 'grad');\n },\n /**\n * \n */\n rad: function (n) {\n return new CSSUnitValue(n, 'rad');\n },\n /**\n * \n */\n turn: function (n) {\n return new CSSUnitValue(n, 'turn');\n },\n /**\n *
in g-webgl/canvas\n * * in g-svg\n */\n HTML.prototype.getDomElement = function () {\n return this.parsedStyle.$el;\n };\n /**\n * override with $el.getBoundingClientRect\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Element/getBoundingClientRect\n */\n HTML.prototype.getBoundingClientRect = function () {\n if (this.parsedStyle.$el) {\n return this.parsedStyle.$el.getBoundingClientRect();\n }\n else {\n var _a = this.parsedStyle, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n return new Rectangle(x, y, width, height);\n }\n };\n HTML.prototype.getClientRects = function () {\n return [this.getBoundingClientRect()];\n };\n HTML.prototype.getBounds = function () {\n var _a, _b;\n var clientRect = this.getBoundingClientRect();\n // calc context's offset\n // @ts-ignore\n var canvasRect = (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.getContextService().getBoundingClientRect();\n var aabb = new AABB();\n var minX = clientRect.left - ((canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.left) || 0);\n var minY = clientRect.top - ((canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.top) || 0);\n aabb.setMinMax([minX, minY, 0], [minX + clientRect.width, minY + clientRect.height, 0]);\n return aabb;\n };\n HTML.prototype.getLocalBounds = function () {\n if (this.parentNode) {\n var parentInvert = mat4.invert(mat4.create(), this.parentNode.getWorldTransform());\n var bounds = this.getBounds();\n if (!AABB.isEmpty(bounds)) {\n var localBounds = new AABB();\n localBounds.setFromTransformedAABB(bounds, parentInvert);\n return localBounds;\n }\n }\n return this.getBounds();\n };\n return HTML;\n}(DisplayObject));\n\nvar Image = /** @class */ (function (_super) {\n __extends(Image, _super);\n function Image(_a) {\n if (_a === void 0) { _a = {}; }\n var style = _a.style, rest = __rest(_a, [\"style\"]);\n return _super.call(this, __assign({ type: Shape.IMAGE, style: runtime.enableCSSParsing\n ? __assign({ x: '', y: '', img: '', width: '', height: '' }, style) : __assign({}, style) }, rest)) || this;\n }\n return Image;\n}(DisplayObject));\n\n/**\n * Create a line connecting two points.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/line\n *\n * Also support for using marker.\n */\nvar Line = /** @class */ (function (_super) {\n __extends(Line, _super);\n function Line(_a) {\n if (_a === void 0) { _a = {}; }\n var _this = this;\n var style = _a.style, rest = __rest(_a, [\"style\"]);\n _this = _super.call(this, __assign({ type: Shape.LINE, style: __assign({ x1: 0, y1: 0, x2: 0, y2: 0, z1: 0, z2: 0 }, style) }, rest)) || this;\n _this.markerStartAngle = 0;\n _this.markerEndAngle = 0;\n var _b = _this.parsedStyle, markerStart = _b.markerStart, markerEnd = _b.markerEnd;\n if (markerStart && isDisplayObject(markerStart)) {\n _this.markerStartAngle = markerStart.getLocalEulerAngles();\n _this.appendChild(markerStart);\n }\n if (markerEnd && isDisplayObject(markerEnd)) {\n _this.markerEndAngle = markerEnd.getLocalEulerAngles();\n _this.appendChild(markerEnd);\n }\n _this.transformMarker(true);\n _this.transformMarker(false);\n return _this;\n }\n Line.prototype.attributeChangedCallback = function (attrName, oldValue, newValue, prevParsedValue, newParsedValue) {\n if (attrName === 'x1' ||\n attrName === 'y1' ||\n attrName === 'x2' ||\n attrName === 'y2' ||\n attrName === 'markerStartOffset' ||\n attrName === 'markerEndOffset') {\n this.transformMarker(true);\n this.transformMarker(false);\n }\n else if (attrName === 'markerStart') {\n if (prevParsedValue && isDisplayObject(prevParsedValue)) {\n this.markerStartAngle = 0;\n prevParsedValue.remove();\n }\n // CSSKeyword 'unset'\n if (newParsedValue && isDisplayObject(newParsedValue)) {\n this.markerStartAngle = newParsedValue.getLocalEulerAngles();\n this.appendChild(newParsedValue);\n this.transformMarker(true);\n }\n }\n else if (attrName === 'markerEnd') {\n if (prevParsedValue && isDisplayObject(prevParsedValue)) {\n this.markerEndAngle = 0;\n prevParsedValue.remove();\n }\n if (newParsedValue && isDisplayObject(newParsedValue)) {\n this.markerEndAngle = newParsedValue.getLocalEulerAngles();\n this.appendChild(newParsedValue);\n this.transformMarker(false);\n }\n }\n };\n Line.prototype.transformMarker = function (isStart) {\n var _a = this.parsedStyle, markerStart = _a.markerStart, markerEnd = _a.markerEnd, markerStartOffset = _a.markerStartOffset, markerEndOffset = _a.markerEndOffset, x1 = _a.x1, x2 = _a.x2, y1 = _a.y1, y2 = _a.y2, defX = _a.defX, defY = _a.defY;\n var marker = isStart ? markerStart : markerEnd;\n if (!marker || !isDisplayObject(marker)) {\n return;\n }\n var rad = 0;\n var x;\n var y;\n var ox;\n var oy;\n var offset;\n var originalAngle;\n if (isStart) {\n ox = x1 - defX;\n oy = y1 - defY;\n x = x2 - x1;\n y = y2 - y1;\n offset = markerStartOffset || 0;\n originalAngle = this.markerStartAngle;\n }\n else {\n ox = x2 - defX;\n oy = y2 - defY;\n x = x1 - x2;\n y = y1 - y2;\n offset = markerEndOffset || 0;\n originalAngle = this.markerEndAngle;\n }\n rad = Math.atan2(y, x);\n // account for markerOffset\n marker.setLocalEulerAngles((rad * 180) / Math.PI + originalAngle);\n marker.setLocalPosition(ox + Math.cos(rad) * offset, oy + Math.sin(rad) * offset);\n };\n Line.prototype.getPoint = function (ratio, inWorldSpace) {\n if (inWorldSpace === void 0) { inWorldSpace = false; }\n // TODO: account for z1/z2 in 3D line\n var _a = this.parsedStyle, x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2, defX = _a.defX, defY = _a.defY;\n var _b = linePointAt(x1, y1, x2, y2, ratio), x = _b.x, y = _b.y;\n var transformed = vec3.transformMat4(vec3.create(), vec3.fromValues(x - defX, y - defY, 0), inWorldSpace ? this.getWorldTransform() : this.getLocalTransform());\n // apply local transformation\n return new Point(transformed[0], transformed[1]);\n };\n Line.prototype.getPointAtLength = function (distance, inWorldSpace) {\n if (inWorldSpace === void 0) { inWorldSpace = false; }\n return this.getPoint(distance / this.getTotalLength(), inWorldSpace);\n };\n Line.prototype.getTotalLength = function () {\n // TODO: account for z1/z2 in 3D line\n var _a = this.parsedStyle, x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return lineLength(x1, y1, x2, y2);\n };\n return Line;\n}(DisplayObject));\n\nvar Path = /** @class */ (function (_super) {\n __extends(Path, _super);\n function Path(_a) {\n if (_a === void 0) { _a = {}; }\n var _this = this;\n var style = _a.style, rest = __rest(_a, [\"style\"]);\n _this = _super.call(this, __assign({ type: Shape.PATH, style: runtime.enableCSSParsing\n ? __assign({ path: '', miterLimit: '' }, style) : __assign({}, style), initialParsedStyle: runtime.enableCSSParsing\n ? null\n : {\n miterLimit: 4,\n path: __assign({}, EMPTY_PARSED_PATH),\n } }, rest)) || this;\n _this.markerStartAngle = 0;\n _this.markerEndAngle = 0;\n /**\n * markers placed at the mid\n */\n _this.markerMidList = [];\n var _b = _this.parsedStyle, markerStart = _b.markerStart, markerEnd = _b.markerEnd, markerMid = _b.markerMid;\n if (markerStart && isDisplayObject(markerStart)) {\n _this.markerStartAngle = markerStart.getLocalEulerAngles();\n _this.appendChild(markerStart);\n }\n if (markerMid && isDisplayObject(markerMid)) {\n _this.placeMarkerMid(markerMid);\n }\n if (markerEnd && isDisplayObject(markerEnd)) {\n _this.markerEndAngle = markerEnd.getLocalEulerAngles();\n _this.appendChild(markerEnd);\n }\n _this.transformMarker(true);\n _this.transformMarker(false);\n return _this;\n }\n Path.prototype.attributeChangedCallback = function (attrName, oldValue, newValue, prevParsedValue, newParsedValue) {\n if (attrName === 'path') {\n // recalc markers\n this.transformMarker(true);\n this.transformMarker(false);\n this.placeMarkerMid(this.parsedStyle.markerMid);\n }\n else if (attrName === 'markerStartOffset' ||\n attrName === 'markerEndOffset') {\n this.transformMarker(true);\n this.transformMarker(false);\n }\n else if (attrName === 'markerStart') {\n if (prevParsedValue && isDisplayObject(prevParsedValue)) {\n this.markerStartAngle = 0;\n prevParsedValue.remove();\n }\n // CSSKeyword 'unset'\n if (newParsedValue && isDisplayObject(newParsedValue)) {\n this.markerStartAngle = newParsedValue.getLocalEulerAngles();\n this.appendChild(newParsedValue);\n this.transformMarker(true);\n }\n }\n else if (attrName === 'markerEnd') {\n if (prevParsedValue && isDisplayObject(prevParsedValue)) {\n this.markerEndAngle = 0;\n prevParsedValue.remove();\n }\n if (newParsedValue && isDisplayObject(newParsedValue)) {\n this.markerEndAngle = newParsedValue.getLocalEulerAngles();\n this.appendChild(newParsedValue);\n this.transformMarker(false);\n }\n }\n else if (attrName === 'markerMid') {\n this.placeMarkerMid(newParsedValue);\n }\n };\n Path.prototype.transformMarker = function (isStart) {\n var _a = this.parsedStyle, markerStart = _a.markerStart, markerEnd = _a.markerEnd, markerStartOffset = _a.markerStartOffset, markerEndOffset = _a.markerEndOffset, defX = _a.defX, defY = _a.defY;\n var marker = isStart ? markerStart : markerEnd;\n if (!marker || !isDisplayObject(marker)) {\n return;\n }\n var rad = 0;\n var x;\n var y;\n var ox;\n var oy;\n var offset;\n var originalAngle;\n if (isStart) {\n var _b = __read(this.getStartTangent(), 2), p1 = _b[0], p2 = _b[1];\n ox = p2[0] - defX;\n oy = p2[1] - defY;\n x = p1[0] - p2[0];\n y = p1[1] - p2[1];\n offset = markerStartOffset || 0;\n originalAngle = this.markerStartAngle;\n }\n else {\n var _c = __read(this.getEndTangent(), 2), p1 = _c[0], p2 = _c[1];\n ox = p2[0] - defX;\n oy = p2[1] - defY;\n x = p1[0] - p2[0];\n y = p1[1] - p2[1];\n offset = markerEndOffset || 0;\n originalAngle = this.markerEndAngle;\n }\n rad = Math.atan2(y, x);\n // account for markerOffset\n marker.setLocalEulerAngles((rad * 180) / Math.PI + originalAngle);\n marker.setLocalPosition(ox + Math.cos(rad) * offset, oy + Math.sin(rad) * offset);\n };\n Path.prototype.placeMarkerMid = function (marker) {\n var _a = this.parsedStyle, segments = _a.path.segments, defX = _a.defX, defY = _a.defY;\n // clear all existed markers\n this.markerMidList.forEach(function (marker) {\n marker.remove();\n });\n if (marker && isDisplayObject(marker)) {\n for (var i = 1; i < segments.length - 1; i++) {\n var _b = __read(segments[i].currentPoint, 2), ox = _b[0], oy = _b[1];\n var cloned = i === 1 ? marker : marker.cloneNode(true);\n this.markerMidList.push(cloned);\n this.appendChild(cloned);\n cloned.setLocalPosition(ox - defX, oy - defY);\n // TODO: orient of marker\n }\n }\n };\n /**\n * Returns the total length of the path.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGGeometryElement/getTotalLength\n */\n Path.prototype.getTotalLength = function () {\n return getOrCalculatePathTotalLength(this);\n };\n /**\n * Returns the point at a given distance along the path.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGGeometryElement/getPointAtLength\n */\n Path.prototype.getPointAtLength = function (distance, inWorldSpace) {\n if (inWorldSpace === void 0) { inWorldSpace = false; }\n var _a = this.parsedStyle, defX = _a.defX, defY = _a.defY, absolutePath = _a.path.absolutePath;\n var _b = getPointAtLength(absolutePath, distance), x = _b.x, y = _b.y;\n var transformed = vec3.transformMat4(vec3.create(), vec3.fromValues(x - defX, y - defY, 0), inWorldSpace ? this.getWorldTransform() : this.getLocalTransform());\n // apply local transformation\n return new Point(transformed[0], transformed[1]);\n };\n /**\n * Returns the point at a given ratio of the total length in path.\n */\n Path.prototype.getPoint = function (ratio, inWorldSpace) {\n if (inWorldSpace === void 0) { inWorldSpace = false; }\n return this.getPointAtLength(ratio * getOrCalculatePathTotalLength(this), inWorldSpace);\n };\n /**\n * Get start tangent vector\n */\n Path.prototype.getStartTangent = function () {\n var segments = this.parsedStyle.path.segments;\n var result = [];\n if (segments.length > 1) {\n var startPoint = segments[0].currentPoint;\n var endPoint = segments[1].currentPoint;\n var tangent = segments[1].startTangent;\n result = [];\n if (tangent) {\n result.push([startPoint[0] - tangent[0], startPoint[1] - tangent[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n else {\n result.push([endPoint[0], endPoint[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n }\n return result;\n };\n /**\n * Get end tangent vector\n */\n Path.prototype.getEndTangent = function () {\n var segments = this.parsedStyle.path.segments;\n var length = segments.length;\n var result = [];\n if (length > 1) {\n var startPoint = segments[length - 2].currentPoint;\n var endPoint = segments[length - 1].currentPoint;\n var tangent = segments[length - 1].endTangent;\n result = [];\n if (tangent) {\n result.push([endPoint[0] - tangent[0], endPoint[1] - tangent[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n else {\n result.push([startPoint[0], startPoint[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n }\n return result;\n };\n return Path;\n}(DisplayObject));\n\nvar Polygon = /** @class */ (function (_super) {\n __extends(Polygon, _super);\n function Polygon(_a) {\n if (_a === void 0) { _a = {}; }\n var _this = this;\n var style = _a.style, rest = __rest(_a, [\"style\"]);\n _this = _super.call(this, __assign({ type: Shape.POLYGON, style: runtime.enableCSSParsing\n ? __assign({ points: '', miterLimit: '', isClosed: true }, style) : __assign({}, style), initialParsedStyle: runtime.enableCSSParsing\n ? null\n : {\n points: {\n points: [],\n totalLength: 0,\n segments: [],\n },\n miterLimit: 4,\n isClosed: true,\n } }, rest)) || this;\n _this.markerStartAngle = 0;\n _this.markerEndAngle = 0;\n /**\n * markers placed at the mid\n */\n _this.markerMidList = [];\n var _b = _this.parsedStyle, markerStart = _b.markerStart, markerEnd = _b.markerEnd, markerMid = _b.markerMid;\n if (markerStart && isDisplayObject(markerStart)) {\n _this.markerStartAngle = markerStart.getLocalEulerAngles();\n _this.appendChild(markerStart);\n }\n if (markerMid && isDisplayObject(markerMid)) {\n _this.placeMarkerMid(markerMid);\n }\n if (markerEnd && isDisplayObject(markerEnd)) {\n _this.markerEndAngle = markerEnd.getLocalEulerAngles();\n _this.appendChild(markerEnd);\n }\n _this.transformMarker(true);\n _this.transformMarker(false);\n return _this;\n }\n Polygon.prototype.attributeChangedCallback = function (attrName, oldValue, newValue, prevParsedValue, newParsedValue) {\n if (attrName === 'points') {\n // recalc markers\n this.transformMarker(true);\n this.transformMarker(false);\n this.placeMarkerMid(this.parsedStyle.markerMid);\n }\n else if (attrName === 'markerStartOffset' ||\n attrName === 'markerEndOffset') {\n this.transformMarker(true);\n this.transformMarker(false);\n }\n else if (attrName === 'markerStart') {\n if (prevParsedValue && isDisplayObject(prevParsedValue)) {\n this.markerStartAngle = 0;\n prevParsedValue.remove();\n }\n // CSSKeyword 'unset'\n if (newParsedValue && isDisplayObject(newParsedValue)) {\n this.markerStartAngle = newParsedValue.getLocalEulerAngles();\n this.appendChild(newParsedValue);\n this.transformMarker(true);\n }\n }\n else if (attrName === 'markerEnd') {\n if (prevParsedValue && isDisplayObject(prevParsedValue)) {\n this.markerEndAngle = 0;\n prevParsedValue.remove();\n }\n if (newParsedValue && isDisplayObject(newParsedValue)) {\n this.markerEndAngle = newParsedValue.getLocalEulerAngles();\n this.appendChild(newParsedValue);\n this.transformMarker(false);\n }\n }\n else if (attrName === 'markerMid') {\n this.placeMarkerMid(newParsedValue);\n }\n };\n Polygon.prototype.transformMarker = function (isStart) {\n var _a = this.parsedStyle, markerStart = _a.markerStart, markerEnd = _a.markerEnd, markerStartOffset = _a.markerStartOffset, markerEndOffset = _a.markerEndOffset, P = _a.points, defX = _a.defX, defY = _a.defY;\n var points = (P || {}).points;\n var marker = isStart ? markerStart : markerEnd;\n if (!marker || !isDisplayObject(marker) || !points) {\n return;\n }\n var rad = 0;\n var x;\n var y;\n var ox;\n var oy;\n var offset;\n var originalAngle;\n ox = points[0][0] - defX;\n oy = points[0][1] - defY;\n if (isStart) {\n x = points[1][0] - points[0][0];\n y = points[1][1] - points[0][1];\n offset = markerStartOffset || 0;\n originalAngle = this.markerStartAngle;\n }\n else {\n var length_1 = points.length;\n if (!this.parsedStyle.isClosed) {\n ox = points[length_1 - 1][0] - defX;\n oy = points[length_1 - 1][1] - defY;\n x = points[length_1 - 2][0] - points[length_1 - 1][0];\n y = points[length_1 - 2][1] - points[length_1 - 1][1];\n }\n else {\n x = points[length_1 - 1][0] - points[0][0];\n y = points[length_1 - 1][1] - points[0][1];\n }\n offset = markerEndOffset || 0;\n originalAngle = this.markerEndAngle;\n }\n rad = Math.atan2(y, x);\n // account for markerOffset\n marker.setLocalEulerAngles((rad * 180) / Math.PI + originalAngle);\n marker.setLocalPosition(ox + Math.cos(rad) * offset, oy + Math.sin(rad) * offset);\n };\n Polygon.prototype.placeMarkerMid = function (marker) {\n var _a = this.parsedStyle, P = _a.points, defX = _a.defX, defY = _a.defY;\n var points = (P || {}).points;\n // clear all existed markers\n this.markerMidList.forEach(function (marker) {\n marker.remove();\n });\n this.markerMidList = [];\n if (marker && isDisplayObject(marker) && points) {\n for (var i = 1; i < (this.parsedStyle.isClosed ? points.length : points.length - 1); i++) {\n var ox = points[i][0] - defX;\n var oy = points[i][1] - defY;\n var cloned = i === 1 ? marker : marker.cloneNode(true);\n this.markerMidList.push(cloned);\n this.appendChild(cloned);\n cloned.setLocalPosition(ox, oy);\n // TODO: orient of marker\n }\n }\n };\n return Polygon;\n}(DisplayObject));\n\n/**\n * Polyline inherits the marker-related capabilities of Polygon.\n */\nvar Polyline = /** @class */ (function (_super) {\n __extends(Polyline, _super);\n function Polyline(_a) {\n if (_a === void 0) { _a = {}; }\n var style = _a.style, rest = __rest(_a, [\"style\"]);\n return _super.call(this, __assign({ type: Shape.POLYLINE, style: runtime.enableCSSParsing\n ? __assign({ points: '', miterLimit: '', isClosed: false }, style) : __assign({}, style), initialParsedStyle: runtime.enableCSSParsing\n ? null\n : {\n points: {\n points: [],\n totalLength: 0,\n segments: [],\n },\n miterLimit: 4,\n isClosed: false,\n } }, rest)) || this;\n }\n Polyline.prototype.getTotalLength = function () {\n return this.parsedStyle.points.totalLength;\n };\n Polyline.prototype.getPointAtLength = function (distance, inWorldSpace) {\n if (inWorldSpace === void 0) { inWorldSpace = false; }\n return this.getPoint(distance / this.getTotalLength(), inWorldSpace);\n };\n Polyline.prototype.getPoint = function (ratio, inWorldSpace) {\n if (inWorldSpace === void 0) { inWorldSpace = false; }\n var _a = this.parsedStyle, defX = _a.defX, defY = _a.defY, _b = _a.points, points = _b.points, segments = _b.segments;\n var subt = 0;\n var index = 0;\n segments.forEach(function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n var _c = linePointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt), x = _c.x, y = _c.y;\n var transformed = vec3.transformMat4(vec3.create(), vec3.fromValues(x - defX, y - defY, 0), inWorldSpace ? this.getWorldTransform() : this.getLocalTransform());\n // apply local transformation\n return new Point(transformed[0], transformed[1]);\n };\n Polyline.prototype.getStartTangent = function () {\n var points = this.parsedStyle.points.points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n Polyline.prototype.getEndTangent = function () {\n var points = this.parsedStyle.points.points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return Polyline;\n}(Polygon));\n\nvar Rect = /** @class */ (function (_super) {\n __extends(Rect, _super);\n function Rect(_a) {\n if (_a === void 0) { _a = {}; }\n var style = _a.style, rest = __rest(_a, [\"style\"]);\n return _super.call(this, __assign({ type: Shape.RECT, style: runtime.enableCSSParsing\n ? __assign({ x: '', y: '', width: '', height: '', radius: '' }, style) : __assign({}, style) }, rest)) || this;\n }\n return Rect;\n}(DisplayObject));\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGTextElement\n */\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement#constants\n */\n // LENGTHADJUST_SPACING: number = 1;\n // LENGTHADJUST_SPACINGANDGLYPHS: number = 2;\n // LENGTHADJUST_UNKNOWN: number = 0;\n function Text(_a) {\n if (_a === void 0) { _a = {}; }\n var style = _a.style, rest = __rest(_a, [\"style\"]);\n return _super.call(this, __assign({ type: Shape.TEXT, style: runtime.enableCSSParsing\n ? __assign({ x: '', y: '', text: '', fontSize: '', fontFamily: '', fontStyle: '', fontWeight: '', fontVariant: '', textAlign: '', textBaseline: '', textTransform: '', fill: 'black', letterSpacing: '', lineHeight: '', miterLimit: '', \n // whiteSpace: 'pre',\n wordWrap: false, wordWrapWidth: 0, leading: 0, dx: '', dy: '' }, style) : __assign({ fill: 'black' }, style), initialParsedStyle: runtime.enableCSSParsing\n ? {}\n : {\n x: 0,\n y: 0,\n fontSize: 16,\n fontFamily: 'sans-serif',\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n lineHeight: 0,\n letterSpacing: 0,\n textBaseline: 'alphabetic',\n textAlign: 'start',\n wordWrap: false,\n wordWrapWidth: 0,\n leading: 0,\n dx: 0,\n dy: 0,\n } }, rest)) || this;\n }\n // lengthAdjust: SVGAnimatedEnumeration;\n // textLength: SVGAnimatedLength;\n // getCharNumAtPosition(point?: DOMPointInit): number {\n // throw new Error('Method not implemented.');\n // }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement\n */\n Text.prototype.getComputedTextLength = function () {\n var _a;\n return ((_a = this.parsedStyle.metrics) === null || _a === void 0 ? void 0 : _a.maxLineWidth) || 0;\n };\n // getEndPositionOfChar(charnum: number): DOMPoint {\n // throw new Error('Method not implemented.');\n // }\n // getExtentOfChar(charnum: number): DOMRect {\n // throw new Error('Method not implemented.');\n // }\n // getNumberOfChars(): number {\n // throw new Error('Method not implemented.');\n // }\n // getRotationOfChar(charnum: number): number {\n // throw new Error('Method not implemented.');\n // }\n // getStartPositionOfChar(charnum: number): DOMPoint {\n // throw new Error('Method not implemented.');\n // }\n // getSubStringLength(charnum: number, nchars: number): number {\n // throw new Error('Method not implemented.');\n // }\n // selectSubString(charnum: number, nchars: number): void {\n // throw new Error('Method not implemented.');\n // }\n Text.prototype.getLineBoundingRects = function () {\n var _a;\n return ((_a = this.parsedStyle.metrics) === null || _a === void 0 ? void 0 : _a.lineMetrics) || [];\n };\n Text.prototype.isOverflowing = function () {\n return !!this.parsedStyle.isOverflowing;\n };\n return Text;\n}(DisplayObject));\n\n/**\n * canvas.customElements\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry\n */\nvar CustomElementRegistry = /** @class */ (function () {\n function CustomElementRegistry() {\n this.registry = {};\n this.define(Shape.CIRCLE, Circle);\n this.define(Shape.ELLIPSE, Ellipse);\n this.define(Shape.RECT, Rect);\n this.define(Shape.IMAGE, Image);\n this.define(Shape.LINE, Line);\n this.define(Shape.GROUP, Group);\n this.define(Shape.PATH, Path);\n this.define(Shape.POLYGON, Polygon);\n this.define(Shape.POLYLINE, Polyline);\n this.define(Shape.TEXT, Text);\n this.define(Shape.HTML, HTML);\n }\n CustomElementRegistry.prototype.define = function (name, constructor) {\n this.registry[name] = constructor;\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry/get\n */\n CustomElementRegistry.prototype.get = function (name) {\n return this.registry[name];\n };\n return CustomElementRegistry;\n}());\n\n/**\n * the entry of DOM tree\n * Document -> Node -> EventTarget\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Document\n */\nvar Document = /** @class */ (function (_super) {\n __extends(Document, _super);\n function Document() {\n var _this = _super.call(this) || this;\n /**\n * only document has defaultView, points to canvas,\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/defaultView\n */\n _this.defaultView = null;\n _this.ownerDocument = null;\n _this.nodeName = 'document';\n // create timeline\n try {\n _this.timeline = new runtime.AnimationTimeline(_this);\n }\n catch (e) { }\n /**\n * for inherited properties, the initial value is used on the root element only,\n * as long as no specified value is supplied.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/initial_value\n */\n var initialStyle = {};\n BUILT_IN_PROPERTIES.forEach(function (_a) {\n var n = _a.n, inh = _a.inh, d = _a.d;\n if (inh && d) {\n initialStyle[n] = isFunction(d) ? d(Shape.GROUP) : d;\n }\n });\n // like in DOM tree\n _this.documentElement = new Group({\n id: 'g-root',\n style: initialStyle,\n });\n _this.documentElement.ownerDocument = _this;\n _this.documentElement.parentNode = _this;\n _this.childNodes = [_this.documentElement];\n return _this;\n }\n Object.defineProperty(Document.prototype, \"children\", {\n get: function () {\n return this.childNodes;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Document.prototype, \"childElementCount\", {\n get: function () {\n return this.childNodes.length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Document.prototype, \"firstElementChild\", {\n get: function () {\n return this.firstChild;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Document.prototype, \"lastElementChild\", {\n get: function () {\n return this.lastChild;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @example const circle = document.createElement('circle', { style: { r: 10 } });\n */\n Document.prototype.createElement = function (tagName, options) {\n // @observablehq/plot will create \n if (tagName === 'svg') {\n return this.documentElement;\n }\n // d3 will use \n var clazz = this.defaultView.customElements.get(tagName);\n if (!clazz) {\n console.warn('Unsupported tagName: ', tagName);\n clazz = tagName === 'tspan' ? Text : Group;\n }\n var shape = new clazz(options);\n shape.ownerDocument = this;\n return shape;\n };\n Document.prototype.createElementNS = function (namespaceURI, tagName, options) {\n return this.createElement(tagName, options);\n };\n Document.prototype.cloneNode = function (deep) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Document.prototype.destroy = function () {\n try {\n this.documentElement.destroyChildren();\n this.timeline.destroy();\n }\n catch (e) { }\n };\n /**\n * Picking 2D graphics with RBush based on BBox, fast but inaccurate.\n */\n Document.prototype.elementsFromBBox = function (minX, minY, maxX, maxY) {\n var rBush = this.defaultView.context.rBushRoot;\n var rBushNodes = rBush.search({ minX: minX, minY: minY, maxX: maxX, maxY: maxY });\n var hitTestList = [];\n rBushNodes.forEach(function (_a) {\n var displayObject = _a.displayObject;\n var pointerEvents = displayObject.parsedStyle.pointerEvents;\n // account for `visibility`\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events\n var isVisibilityAffected = [\n 'auto',\n 'visiblepainted',\n 'visiblefill',\n 'visiblestroke',\n 'visible',\n ].includes(pointerEvents);\n if ((!isVisibilityAffected ||\n (isVisibilityAffected && displayObject.isVisible())) &&\n !displayObject.isCulled() &&\n displayObject.isInteractive()) {\n hitTestList.push(displayObject);\n }\n });\n // find group with max z-index\n hitTestList.sort(function (a, b) { return b.sortable.renderOrder - a.sortable.renderOrder; });\n return hitTestList;\n };\n Document.prototype.elementFromPointSync = function (x, y) {\n var _a = this.defaultView.canvas2Viewport({\n x: x,\n y: y,\n }), viewportX = _a.x, viewportY = _a.y;\n var _b = this.defaultView.getConfig(), width = _b.width, height = _b.height;\n // outside canvas' viewport\n if (viewportX < 0 ||\n viewportY < 0 ||\n viewportX > width ||\n viewportY > height) {\n return null;\n }\n var _c = this.defaultView.viewport2Client({\n x: viewportX,\n y: viewportY,\n }), clientX = _c.x, clientY = _c.y;\n var picked = this.defaultView\n .getRenderingService()\n .hooks.pickSync.call({\n topmost: true,\n position: {\n x: x,\n y: y,\n viewportX: viewportX,\n viewportY: viewportY,\n clientX: clientX,\n clientY: clientY,\n },\n picked: [],\n }).picked;\n return (picked && picked[0]) || this.documentElement;\n };\n /**\n * Do picking with API instead of triggering interactive events.\n *\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Document/elementFromPoint\n */\n Document.prototype.elementFromPoint = function (x, y) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, viewportX, viewportY, _b, width, height, _c, clientX, clientY, picked;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _a = this.defaultView.canvas2Viewport({\n x: x,\n y: y,\n }), viewportX = _a.x, viewportY = _a.y;\n _b = this.defaultView.getConfig(), width = _b.width, height = _b.height;\n // outside canvas' viewport\n if (viewportX < 0 ||\n viewportY < 0 ||\n viewportX > width ||\n viewportY > height) {\n return [2 /*return*/, null];\n }\n _c = this.defaultView.viewport2Client({\n x: viewportX,\n y: viewportY,\n }), clientX = _c.x, clientY = _c.y;\n return [4 /*yield*/, this.defaultView\n .getRenderingService()\n .hooks.pick.promise({\n topmost: true,\n position: {\n x: x,\n y: y,\n viewportX: viewportX,\n viewportY: viewportY,\n clientX: clientX,\n clientY: clientY,\n },\n picked: [],\n })];\n case 1:\n picked = (_d.sent()).picked;\n return [2 /*return*/, (picked && picked[0]) || this.documentElement];\n }\n });\n });\n };\n Document.prototype.elementsFromPointSync = function (x, y) {\n var _a = this.defaultView.canvas2Viewport({\n x: x,\n y: y,\n }), viewportX = _a.x, viewportY = _a.y;\n var _b = this.defaultView.getConfig(), width = _b.width, height = _b.height;\n // outside canvas' viewport\n if (viewportX < 0 ||\n viewportY < 0 ||\n viewportX > width ||\n viewportY > height) {\n return [];\n }\n var _c = this.defaultView.viewport2Client({\n x: viewportX,\n y: viewportY,\n }), clientX = _c.x, clientY = _c.y;\n var picked = this.defaultView\n .getRenderingService()\n .hooks.pickSync.call({\n topmost: false,\n position: {\n x: x,\n y: y,\n viewportX: viewportX,\n viewportY: viewportY,\n clientX: clientX,\n clientY: clientY,\n },\n picked: [],\n }).picked;\n if (picked[picked.length - 1] !== this.documentElement) {\n picked.push(this.documentElement);\n }\n return picked;\n };\n /**\n * Do picking with API instead of triggering interactive events.\n *\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Document/elementsFromPoint\n */\n Document.prototype.elementsFromPoint = function (x, y) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, viewportX, viewportY, _b, width, height, _c, clientX, clientY, picked;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _a = this.defaultView.canvas2Viewport({\n x: x,\n y: y,\n }), viewportX = _a.x, viewportY = _a.y;\n _b = this.defaultView.getConfig(), width = _b.width, height = _b.height;\n // outside canvas' viewport\n if (viewportX < 0 ||\n viewportY < 0 ||\n viewportX > width ||\n viewportY > height) {\n return [2 /*return*/, []];\n }\n _c = this.defaultView.viewport2Client({\n x: viewportX,\n y: viewportY,\n }), clientX = _c.x, clientY = _c.y;\n return [4 /*yield*/, this.defaultView\n .getRenderingService()\n .hooks.pick.promise({\n topmost: false,\n position: {\n x: x,\n y: y,\n viewportX: viewportX,\n viewportY: viewportY,\n clientX: clientX,\n clientY: clientY,\n },\n picked: [],\n })];\n case 1:\n picked = (_d.sent()).picked;\n if (picked[picked.length - 1] !== this.documentElement) {\n picked.push(this.documentElement);\n }\n return [2 /*return*/, picked];\n }\n });\n });\n };\n /**\n * eg. Uncaught DOMException: Failed to execute 'appendChild' on 'Node': Only one element on document allowed.\n */\n Document.prototype.appendChild = function (newChild, index) {\n throw new Error(ERROR_MSG_USE_DOCUMENT_ELEMENT);\n };\n Document.prototype.insertBefore = function (newChild, refChild) {\n throw new Error(ERROR_MSG_USE_DOCUMENT_ELEMENT);\n };\n Document.prototype.removeChild = function (oldChild, destroy) {\n throw new Error(ERROR_MSG_USE_DOCUMENT_ELEMENT);\n };\n Document.prototype.replaceChild = function (newChild, oldChild, destroy) {\n throw new Error(ERROR_MSG_USE_DOCUMENT_ELEMENT);\n };\n Document.prototype.append = function () {\n throw new Error(ERROR_MSG_USE_DOCUMENT_ELEMENT);\n };\n Document.prototype.prepend = function () {\n throw new Error(ERROR_MSG_USE_DOCUMENT_ELEMENT);\n };\n /**\n * Execute query on documentElement.\n */\n Document.prototype.getElementById = function (id) {\n return this.documentElement.getElementById(id);\n };\n Document.prototype.getElementsByName = function (name) {\n return this.documentElement.getElementsByName(name);\n };\n Document.prototype.getElementsByTagName = function (tagName) {\n return this.documentElement.getElementsByTagName(tagName);\n };\n Document.prototype.getElementsByClassName = function (className) {\n return this.documentElement.getElementsByClassName(className);\n };\n Document.prototype.querySelector = function (selectors) {\n return this.documentElement.querySelector(selectors);\n };\n Document.prototype.querySelectorAll = function (selectors) {\n return this.documentElement.querySelectorAll(selectors);\n };\n Document.prototype.find = function (filter) {\n return this.documentElement.find(filter);\n };\n Document.prototype.findAll = function (filter) {\n return this.documentElement.findAll(filter);\n };\n return Document;\n}(Node));\n\n/**\n * apply following rules:\n * 1. `visibility` in scenegraph node\n * 2. other custom culling strategies, eg. frustum culling\n */\nvar CullingPlugin = /** @class */ (function () {\n function CullingPlugin(strategies) {\n this.strategies = strategies;\n }\n CullingPlugin.prototype.apply = function (context) {\n var camera = context.camera, renderingService = context.renderingService, renderingContext = context.renderingContext;\n var strategies = this.strategies;\n renderingService.hooks.cull.tap(CullingPlugin.tag, function (object) {\n if (object) {\n var cullable = object.cullable;\n // cullable.visible = true;\n // const renderBounds = object.getRenderBounds();\n // if (AABB.isEmpty(renderBounds)) {\n // cullable.visible = false;\n // } else {\n // const isShape2D = shape2D.indexOf(object.nodeName as Shape) > -1;\n // const [p0, p1, p2, p3] = camera.getFrustum().planes;\n // tmpAABB.setMinMax([-p1.distance, -p3.distance, 0], [p0.distance, p2.distance, 0]);\n // cullable.visible = isShape2D ? renderBounds.intersects(tmpAABB) : true;\n // }\n if (strategies.length === 0) {\n cullable.visible = renderingContext.unculledEntities.indexOf(object.entity) > -1;\n }\n else {\n // eg. implemented by g-webgl(frustum culling)\n cullable.visible = strategies.every(function (strategy) { return strategy.isVisible(camera, object); });\n }\n if (!object.isCulled() && object.isVisible()) {\n return object;\n }\n else {\n // if (this.renderingContext.renderListLastFrame.indexOf(object) > -1) {\n object.dispatchEvent(new CustomEvent(ElementEvent.CULLED));\n // }\n }\n return null;\n }\n return object;\n });\n renderingService.hooks.afterRender.tap(CullingPlugin.tag, function (object) {\n object.cullable.visibilityPlaneMask = -1;\n });\n };\n CullingPlugin.tag = 'Culling';\n return CullingPlugin;\n}());\n\n/**\n * support mouse & touch events\n * @see https://github.com/pixijs/pixi.js/blob/dev/packages/interaction/README.md\n *\n * also provide some extra events such as `drag`\n */\nvar EventPlugin = /** @class */ (function () {\n function EventPlugin() {\n var _this = this;\n this.autoPreventDefault = false;\n this.rootPointerEvent = new FederatedPointerEvent(null);\n this.rootWheelEvent = new FederatedWheelEvent(null);\n this.onPointerMove = function (nativeEvent) {\n var e_1, _a;\n var _b, _c;\n var canvas = (_c = (_b = _this.context.renderingContext.root) === null || _b === void 0 ? void 0 : _b.ownerDocument) === null || _c === void 0 ? void 0 : _c.defaultView;\n if (canvas.supportsTouchEvents &&\n nativeEvent.pointerType === 'touch')\n return;\n var normalizedEvents = _this.normalizeToPointerEvent(nativeEvent, canvas);\n try {\n for (var normalizedEvents_1 = __values(normalizedEvents), normalizedEvents_1_1 = normalizedEvents_1.next(); !normalizedEvents_1_1.done; normalizedEvents_1_1 = normalizedEvents_1.next()) {\n var normalizedEvent = normalizedEvents_1_1.value;\n var event_1 = _this.bootstrapEvent(_this.rootPointerEvent, normalizedEvent, canvas, nativeEvent);\n _this.context.eventService.mapEvent(event_1);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (normalizedEvents_1_1 && !normalizedEvents_1_1.done && (_a = normalizedEvents_1.return)) _a.call(normalizedEvents_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n _this.setCursor(_this.context.eventService.cursor);\n };\n this.onClick = function (nativeEvent) {\n var e_2, _a;\n var _b, _c;\n var canvas = (_c = (_b = _this.context.renderingContext.root) === null || _b === void 0 ? void 0 : _b.ownerDocument) === null || _c === void 0 ? void 0 : _c.defaultView;\n var normalizedEvents = _this.normalizeToPointerEvent(nativeEvent, canvas);\n try {\n for (var normalizedEvents_2 = __values(normalizedEvents), normalizedEvents_2_1 = normalizedEvents_2.next(); !normalizedEvents_2_1.done; normalizedEvents_2_1 = normalizedEvents_2.next()) {\n var normalizedEvent = normalizedEvents_2_1.value;\n var event_2 = _this.bootstrapEvent(_this.rootPointerEvent, normalizedEvent, canvas, nativeEvent);\n _this.context.eventService.mapEvent(event_2);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (normalizedEvents_2_1 && !normalizedEvents_2_1.done && (_a = normalizedEvents_2.return)) _a.call(normalizedEvents_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n _this.setCursor(_this.context.eventService.cursor);\n };\n }\n EventPlugin.prototype.apply = function (context) {\n var _this = this;\n this.context = context;\n var renderingService = context.renderingService;\n var canvas = this.context.renderingContext.root.ownerDocument.defaultView;\n this.context.eventService.setPickHandler(function (position) {\n var picked = _this.context.renderingService.hooks.pickSync.call({\n position: position,\n picked: [],\n topmost: true, // we only concern the topmost element\n }).picked;\n return picked[0] || null;\n });\n renderingService.hooks.pointerWheel.tap(EventPlugin.tag, function (nativeEvent) {\n var wheelEvent = _this.normalizeWheelEvent(nativeEvent);\n _this.context.eventService.mapEvent(wheelEvent);\n });\n renderingService.hooks.pointerDown.tap(EventPlugin.tag, function (nativeEvent) {\n var e_3, _a;\n if (canvas.supportsTouchEvents &&\n nativeEvent.pointerType === 'touch')\n return;\n var events = _this.normalizeToPointerEvent(nativeEvent, canvas);\n if (_this.autoPreventDefault && events[0].isNormalized) {\n var cancelable = nativeEvent.cancelable || !('cancelable' in nativeEvent);\n if (cancelable) {\n nativeEvent.preventDefault();\n }\n }\n try {\n for (var events_1 = __values(events), events_1_1 = events_1.next(); !events_1_1.done; events_1_1 = events_1.next()) {\n var event_3 = events_1_1.value;\n var federatedEvent = _this.bootstrapEvent(_this.rootPointerEvent, event_3, canvas, nativeEvent);\n _this.context.eventService.mapEvent(federatedEvent);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (events_1_1 && !events_1_1.done && (_a = events_1.return)) _a.call(events_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n _this.setCursor(_this.context.eventService.cursor);\n });\n renderingService.hooks.pointerUp.tap(EventPlugin.tag, function (nativeEvent) {\n var e_4, _a;\n if (canvas.supportsTouchEvents &&\n nativeEvent.pointerType === 'touch')\n return;\n // account for element in SVG\n var $element = _this.context.contextService.getDomElement();\n var outside = 'outside';\n try {\n outside =\n $element &&\n nativeEvent.target &&\n nativeEvent.target !== $element &&\n $element.contains &&\n !$element.contains(nativeEvent.target)\n ? 'outside'\n : '';\n }\n catch (e) {\n // nativeEvent.target maybe not Node, such as Window\n // @see https://github.com/antvis/G/issues/1235\n }\n var normalizedEvents = _this.normalizeToPointerEvent(nativeEvent, canvas);\n try {\n for (var normalizedEvents_3 = __values(normalizedEvents), normalizedEvents_3_1 = normalizedEvents_3.next(); !normalizedEvents_3_1.done; normalizedEvents_3_1 = normalizedEvents_3.next()) {\n var normalizedEvent = normalizedEvents_3_1.value;\n var event_4 = _this.bootstrapEvent(_this.rootPointerEvent, normalizedEvent, canvas, nativeEvent);\n event_4.type += outside;\n _this.context.eventService.mapEvent(event_4);\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (normalizedEvents_3_1 && !normalizedEvents_3_1.done && (_a = normalizedEvents_3.return)) _a.call(normalizedEvents_3);\n }\n finally { if (e_4) throw e_4.error; }\n }\n _this.setCursor(_this.context.eventService.cursor);\n });\n renderingService.hooks.pointerMove.tap(EventPlugin.tag, this.onPointerMove);\n renderingService.hooks.pointerOver.tap(EventPlugin.tag, this.onPointerMove);\n renderingService.hooks.pointerOut.tap(EventPlugin.tag, this.onPointerMove);\n renderingService.hooks.click.tap(EventPlugin.tag, this.onClick);\n renderingService.hooks.pointerCancel.tap(EventPlugin.tag, function (nativeEvent) {\n var e_5, _a;\n var normalizedEvents = _this.normalizeToPointerEvent(nativeEvent, canvas);\n try {\n for (var normalizedEvents_4 = __values(normalizedEvents), normalizedEvents_4_1 = normalizedEvents_4.next(); !normalizedEvents_4_1.done; normalizedEvents_4_1 = normalizedEvents_4.next()) {\n var normalizedEvent = normalizedEvents_4_1.value;\n var event_5 = _this.bootstrapEvent(_this.rootPointerEvent, normalizedEvent, canvas, nativeEvent);\n _this.context.eventService.mapEvent(event_5);\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (normalizedEvents_4_1 && !normalizedEvents_4_1.done && (_a = normalizedEvents_4.return)) _a.call(normalizedEvents_4);\n }\n finally { if (e_5) throw e_5.error; }\n }\n _this.setCursor(_this.context.eventService.cursor);\n });\n };\n EventPlugin.prototype.getViewportXY = function (nativeEvent) {\n var x;\n var y;\n /**\n * Should account for CSS Transform applied on container.\n * @see https://github.com/antvis/G/issues/1161\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent/offsetX\n */\n var offsetX = nativeEvent.offsetX, offsetY = nativeEvent.offsetY, clientX = nativeEvent.clientX, clientY = nativeEvent.clientY;\n if (this.context.config.supportsCSSTransform &&\n !isNil(offsetX) &&\n !isNil(offsetY)) {\n x = offsetX;\n y = offsetY;\n }\n else {\n var point = this.context.eventService.client2Viewport(new Point(clientX, clientY));\n x = point.x;\n y = point.y;\n }\n return { x: x, y: y };\n };\n EventPlugin.prototype.bootstrapEvent = function (event, normalizedEvent, view, nativeEvent) {\n event.view = view;\n event.originalEvent = null;\n event.nativeEvent = nativeEvent;\n event.pointerId = normalizedEvent.pointerId;\n event.width = normalizedEvent.width;\n event.height = normalizedEvent.height;\n event.isPrimary = normalizedEvent.isPrimary;\n event.pointerType = normalizedEvent.pointerType;\n event.pressure = normalizedEvent.pressure;\n event.tangentialPressure = normalizedEvent.tangentialPressure;\n event.tiltX = normalizedEvent.tiltX;\n event.tiltY = normalizedEvent.tiltY;\n event.twist = normalizedEvent.twist;\n this.transferMouseData(event, normalizedEvent);\n var _a = this.getViewportXY(normalizedEvent), x = _a.x, y = _a.y;\n event.viewport.x = x;\n event.viewport.y = y;\n var _b = this.context.eventService.viewport2Canvas(event.viewport), canvasX = _b.x, canvasY = _b.y;\n event.canvas.x = canvasX;\n event.canvas.y = canvasY;\n event.global.copyFrom(event.canvas);\n event.offset.copyFrom(event.canvas);\n event.isTrusted = nativeEvent.isTrusted;\n if (event.type === 'pointerleave') {\n event.type = 'pointerout';\n }\n if (event.type.startsWith('mouse')) {\n event.type = event.type.replace('mouse', 'pointer');\n }\n if (event.type.startsWith('touch')) {\n event.type = TOUCH_TO_POINTER[event.type] || event.type;\n }\n return event;\n };\n EventPlugin.prototype.normalizeWheelEvent = function (nativeEvent) {\n var event = this.rootWheelEvent;\n this.transferMouseData(event, nativeEvent);\n event.deltaMode = nativeEvent.deltaMode;\n event.deltaX = nativeEvent.deltaX;\n event.deltaY = nativeEvent.deltaY;\n event.deltaZ = nativeEvent.deltaZ;\n var _a = this.getViewportXY(nativeEvent), x = _a.x, y = _a.y;\n event.viewport.x = x;\n event.viewport.y = y;\n var _b = this.context.eventService.viewport2Canvas(event.viewport), canvasX = _b.x, canvasY = _b.y;\n event.canvas.x = canvasX;\n event.canvas.y = canvasY;\n event.global.copyFrom(event.canvas);\n event.offset.copyFrom(event.canvas);\n event.nativeEvent = nativeEvent;\n event.type = nativeEvent.type;\n return event;\n };\n /**\n * Transfers base & mouse event data from the nativeEvent to the federated event.\n */\n EventPlugin.prototype.transferMouseData = function (event, nativeEvent) {\n event.isTrusted = nativeEvent.isTrusted;\n event.srcElement = nativeEvent.srcElement;\n event.timeStamp = clock.now();\n event.type = nativeEvent.type;\n event.altKey = nativeEvent.altKey;\n event.metaKey = nativeEvent.metaKey;\n event.shiftKey = nativeEvent.shiftKey;\n event.ctrlKey = nativeEvent.ctrlKey;\n event.button = nativeEvent.button;\n event.buttons = nativeEvent.buttons;\n event.client.x = nativeEvent.clientX;\n event.client.y = nativeEvent.clientY;\n event.movement.x = nativeEvent.movementX;\n event.movement.y = nativeEvent.movementY;\n event.page.x = nativeEvent.pageX;\n event.page.y = nativeEvent.pageY;\n event.screen.x = nativeEvent.screenX;\n event.screen.y = nativeEvent.screenY;\n event.relatedTarget = null;\n };\n EventPlugin.prototype.setCursor = function (cursor) {\n this.context.contextService.applyCursorStyle(cursor || this.context.config.cursor || 'default');\n };\n EventPlugin.prototype.normalizeToPointerEvent = function (event, canvas) {\n var normalizedEvents = [];\n if (canvas.isTouchEvent(event)) {\n for (var i = 0; i < event.changedTouches.length; i++) {\n var touch = event.changedTouches[i];\n // use changedTouches instead of touches since touchend has no touches\n // @see https://stackoverflow.com/a/10079076\n if (isUndefined(touch.button))\n touch.button = 0;\n if (isUndefined(touch.buttons))\n touch.buttons = 1;\n if (isUndefined(touch.isPrimary)) {\n touch.isPrimary =\n event.touches.length === 1 && event.type === 'touchstart';\n }\n if (isUndefined(touch.width))\n touch.width = touch.radiusX || 1;\n if (isUndefined(touch.height))\n touch.height = touch.radiusY || 1;\n if (isUndefined(touch.tiltX))\n touch.tiltX = 0;\n if (isUndefined(touch.tiltY))\n touch.tiltY = 0;\n if (isUndefined(touch.pointerType))\n touch.pointerType = 'touch';\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/Touch/identifier\n if (isUndefined(touch.pointerId))\n touch.pointerId = touch.identifier || 0;\n if (isUndefined(touch.pressure))\n touch.pressure = touch.force || 0.5;\n if (isUndefined(touch.twist))\n touch.twist = 0;\n if (isUndefined(touch.tangentialPressure))\n touch.tangentialPressure = 0;\n touch.isNormalized = true;\n touch.type = event.type;\n normalizedEvents.push(touch);\n }\n }\n else if (canvas.isMouseEvent(event)) {\n var tempEvent = event;\n if (isUndefined(tempEvent.isPrimary))\n tempEvent.isPrimary = true;\n if (isUndefined(tempEvent.width))\n tempEvent.width = 1;\n if (isUndefined(tempEvent.height))\n tempEvent.height = 1;\n if (isUndefined(tempEvent.tiltX))\n tempEvent.tiltX = 0;\n if (isUndefined(tempEvent.tiltY))\n tempEvent.tiltY = 0;\n if (isUndefined(tempEvent.pointerType))\n tempEvent.pointerType = 'mouse';\n if (isUndefined(tempEvent.pointerId))\n tempEvent.pointerId = MOUSE_POINTER_ID;\n if (isUndefined(tempEvent.pressure))\n tempEvent.pressure = 0.5;\n if (isUndefined(tempEvent.twist))\n tempEvent.twist = 0;\n if (isUndefined(tempEvent.tangentialPressure))\n tempEvent.tangentialPressure = 0;\n tempEvent.isNormalized = true;\n normalizedEvents.push(tempEvent);\n }\n else {\n normalizedEvents.push(event);\n }\n return normalizedEvents;\n };\n EventPlugin.tag = 'Event';\n return EventPlugin;\n}());\n\n// group is not a 2d shape\nvar shape2D = [\n Shape.CIRCLE,\n Shape.ELLIPSE,\n Shape.IMAGE,\n Shape.RECT,\n Shape.LINE,\n Shape.POLYLINE,\n Shape.POLYGON,\n Shape.TEXT,\n Shape.PATH,\n Shape.HTML,\n];\nvar FrustumCullingStrategy = /** @class */ (function () {\n function FrustumCullingStrategy() {\n }\n FrustumCullingStrategy.prototype.isVisible = function (camera, object) {\n // return true;\n var _a, _b;\n var cullable = object.cullable;\n if (!cullable.enable) {\n return true;\n }\n var renderBounds = object.getRenderBounds();\n if (AABB.isEmpty(renderBounds)) {\n return false;\n }\n // get VP matrix from camera\n var frustum = camera.getFrustum();\n var parentVisibilityPlaneMask = (_b = (_a = object.parentNode) === null || _a === void 0 ? void 0 : _a.cullable) === null || _b === void 0 ? void 0 : _b.visibilityPlaneMask;\n cullable.visibilityPlaneMask = this.computeVisibilityWithPlaneMask(object, renderBounds, parentVisibilityPlaneMask || Mask.INDETERMINATE, frustum.planes);\n cullable.visible = cullable.visibilityPlaneMask !== Mask.OUTSIDE;\n return cullable.visible;\n };\n /**\n *\n * @see「Optimized View Frustum Culling Algorithms for Bounding Boxes」\n * @see https://github.com/antvis/GWebGPUEngine/issues/3\n *\n * * 基础相交测试 the basic intersection test\n * * 标记 masking @see https://cesium.com/blog/2015/08/04/fast-hierarchical-culling/\n * * TODO: 平面一致性测试 the plane-coherency test\n * * TODO: 支持 mesh 指定自身的剔除策略,参考 Babylon.js @see https://doc.babylonjs.com/how_to/optimizing_your_scene#changing-mesh-culling-strategy\n *\n * @param aabb aabb\n * @param parentPlaneMask mask of parent\n * @param planes planes of frustum\n */\n FrustumCullingStrategy.prototype.computeVisibilityWithPlaneMask = function (object, aabb, parentPlaneMask, planes) {\n if (parentPlaneMask === Mask.OUTSIDE || parentPlaneMask === Mask.INSIDE) {\n // 父节点完全位于视锥内或者外部,直接返回\n return parentPlaneMask;\n }\n // Start with MASK_INSIDE (all zeros) so that after the loop, the return value can be compared with MASK_INSIDE.\n // (Because if there are fewer than 31 planes, the upper bits wont be changed.)\n var mask = Mask.INSIDE;\n var isShape2D = shape2D.indexOf(object.nodeName) > -1;\n // Use viewport culling for 2D shapes\n // @see https://github.com/antvis/g/issues/914\n for (var k = 0, len = planes.length; k < len; ++k) {\n // For k greater than 31 (since 31 is the maximum number of INSIDE/INTERSECTING bits we can store), skip the optimization.\n var flag = 1 << k;\n if ((parentPlaneMask & flag) === 0) {\n // 父节点处于当前面内部,可以跳过\n continue;\n }\n // skip near & far planes when testing 2D shapes\n if (isShape2D && (k === 4 || k === 5)) {\n continue;\n }\n // p-vertex n-vertex <-|plane p-vertex n-vertex\n // 使用 p-vertex 和 n-vertex 加速,避免进行平面和 aabb 全部顶点的相交检测\n var _a = planes[k], normal = _a.normal, distance = _a.distance;\n if (vec3.dot(normal, aabb.getPositiveFarPoint(planes[k])) + distance <\n 0) {\n return Mask.OUTSIDE;\n }\n if (vec3.dot(normal, aabb.getNegativeFarPoint(planes[k])) + distance <\n 0) {\n // 和当前面相交,对应位置为1,继续检测下一个面\n mask |= flag;\n }\n }\n return mask;\n };\n return FrustumCullingStrategy;\n}());\n\nvar PrepareRendererPlugin = /** @class */ (function () {\n function PrepareRendererPlugin() {\n /**\n * sync to RBush later\n */\n this.toSync = new Set();\n }\n // private isFirstTimeRendering = true;\n // private syncing = false;\n PrepareRendererPlugin.prototype.apply = function (context) {\n var _this = this;\n var renderingService = context.renderingService, renderingContext = context.renderingContext, rBushRoot = context.rBushRoot;\n var canvas = renderingContext.root.ownerDocument.defaultView;\n this.rBush = rBushRoot;\n var handleAttributeChanged = function (e) {\n var object = e.target;\n object.renderable.dirty = true;\n renderingService.dirtify();\n };\n var handleBoundsChanged = function (e) {\n var affectChildren = e.detail.affectChildren;\n var object = e.target;\n if (affectChildren) {\n object.forEach(function (node) {\n _this.toSync.add(node);\n });\n }\n var p = object;\n while (p) {\n if (p.renderable) {\n _this.toSync.add(p);\n }\n p = p.parentElement;\n }\n // this.pushToSync(e.composedPath().slice(0, -2) as DisplayObject[]);\n renderingService.dirtify();\n };\n var handleMounted = function (e) {\n var object = e.target;\n if (runtime.enableCSSParsing) {\n // recalc style values\n runtime.styleValueRegistry.recalc(object);\n }\n runtime.sceneGraphService.dirtifyToRoot(object);\n renderingService.dirtify();\n };\n var handleUnmounted = function (e) {\n var object = e.target;\n var rBushNode = object.rBushNode;\n if (rBushNode.aabb) {\n _this.rBush.remove(rBushNode.aabb);\n }\n _this.toSync.delete(object);\n runtime.sceneGraphService.dirtifyToRoot(object);\n renderingService.dirtify();\n };\n renderingService.hooks.init.tap(PrepareRendererPlugin.tag, function () {\n canvas.addEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.addEventListener(ElementEvent.UNMOUNTED, handleUnmounted);\n canvas.addEventListener(ElementEvent.ATTR_MODIFIED, handleAttributeChanged);\n canvas.addEventListener(ElementEvent.BOUNDS_CHANGED, handleBoundsChanged);\n });\n renderingService.hooks.destroy.tap(PrepareRendererPlugin.tag, function () {\n canvas.removeEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.removeEventListener(ElementEvent.UNMOUNTED, handleUnmounted);\n canvas.removeEventListener(ElementEvent.ATTR_MODIFIED, handleAttributeChanged);\n canvas.removeEventListener(ElementEvent.BOUNDS_CHANGED, handleBoundsChanged);\n _this.toSync.clear();\n });\n renderingService.hooks.endFrame.tap(PrepareRendererPlugin.tag, function () {\n // if (this.isFirstTimeRendering) {\n // this.isFirstTimeRendering = false;\n // this.syncing = true;\n // // @see https://github.com/antvis/G/issues/1117\n // setTimeout(() => {\n // this.syncRTree();\n // console.log('fcp...');\n // });\n // } else {\n // console.log('next...');\n _this.syncRTree();\n // }\n });\n };\n PrepareRendererPlugin.prototype.syncRTree = function () {\n // if (this.syncing) {\n // return;\n // }\n var _this = this;\n // bounds changed, need re-inserting its children\n var bulk = [];\n Array.from(this.toSync)\n // some objects may be removed since last frame\n .filter(function (object) { return object.isConnected; })\n .forEach(function (node) {\n var rBushNode = node.rBushNode;\n // clear dirty node\n if (rBushNode && rBushNode.aabb) {\n _this.rBush.remove(rBushNode.aabb);\n }\n var renderBounds = node.getRenderBounds();\n if (renderBounds) {\n var _a = __read(renderBounds.getMin(), 2), minX = _a[0], minY = _a[1];\n var _b = __read(renderBounds.getMax(), 2), maxX = _b[0], maxY = _b[1];\n if (!rBushNode.aabb) {\n rBushNode.aabb = {};\n }\n rBushNode.aabb.displayObject = node;\n rBushNode.aabb.minX = minX;\n rBushNode.aabb.minY = minY;\n rBushNode.aabb.maxX = maxX;\n rBushNode.aabb.maxY = maxY;\n }\n if (rBushNode.aabb) {\n // TODO: NaN occurs when width/height of Rect is 0\n if (!isNaN(rBushNode.aabb.maxX) &&\n !isNaN(rBushNode.aabb.maxX) &&\n !isNaN(rBushNode.aabb.minX) &&\n !isNaN(rBushNode.aabb.minY)) {\n bulk.push(rBushNode.aabb);\n }\n }\n });\n // use bulk inserting, which is ~2-3 times faster\n // @see https://github.com/mourner/rbush#bulk-inserting-data\n this.rBush.load(bulk);\n bulk.length = 0;\n this.toSync.clear();\n // this.syncing = false;\n };\n PrepareRendererPlugin.tag = 'Prepare';\n return PrepareRendererPlugin;\n}());\n\nfunction isCanvas(value) {\n return !!value.document;\n}\nvar CanvasEvent;\n(function (CanvasEvent) {\n CanvasEvent[\"READY\"] = \"ready\";\n CanvasEvent[\"BEFORE_RENDER\"] = \"beforerender\";\n CanvasEvent[\"RERENDER\"] = \"rerender\";\n CanvasEvent[\"AFTER_RENDER\"] = \"afterrender\";\n CanvasEvent[\"BEFORE_DESTROY\"] = \"beforedestroy\";\n CanvasEvent[\"AFTER_DESTROY\"] = \"afterdestroy\";\n CanvasEvent[\"RESIZE\"] = \"resize\";\n CanvasEvent[\"DIRTY_RECTANGLE\"] = \"dirtyrectangle\";\n CanvasEvent[\"RENDERER_CHANGED\"] = \"rendererchanged\";\n})(CanvasEvent || (CanvasEvent = {}));\nvar DEFAULT_CAMERA_Z = 500;\nvar DEFAULT_CAMERA_NEAR = 0.1;\nvar DEFAULT_CAMERA_FAR = 1000;\n/**\n * reuse custom event preventing from re-create them in every frame\n */\nvar mountedEvent = new CustomEvent(ElementEvent.MOUNTED);\nvar unmountedEvent = new CustomEvent(ElementEvent.UNMOUNTED);\nvar beforeRenderEvent = new CustomEvent(CanvasEvent.BEFORE_RENDER);\nvar rerenderEvent = new CustomEvent(CanvasEvent.RERENDER);\nvar afterRenderEvent = new CustomEvent(CanvasEvent.AFTER_RENDER);\n/**\n * can be treated like Window in DOM\n * provide some extra methods like `window`, such as:\n * * `window.requestAnimationFrame`\n * * `window.devicePixelRatio`\n *\n * prototype chains: Canvas(Window) -> EventTarget\n */\nvar Canvas = /** @class */ (function (_super) {\n __extends(Canvas, _super);\n function Canvas(config) {\n var _this = _super.call(this) || this;\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element\n */\n _this.Element = DisplayObject;\n _this.inited = false;\n _this.context = {};\n // create document\n _this.document = new Document();\n _this.document.defaultView = _this;\n // create registry of custom elements\n _this.customElements = new CustomElementRegistry();\n var container = config.container, canvas = config.canvas, offscreenCanvas = config.offscreenCanvas, width = config.width, height = config.height, devicePixelRatio = config.devicePixelRatio, renderer = config.renderer, background = config.background, cursor = config.cursor, document = config.document, requestAnimationFrame = config.requestAnimationFrame, cancelAnimationFrame = config.cancelAnimationFrame, createImage = config.createImage, supportsPointerEvents = config.supportsPointerEvents, supportsTouchEvents = config.supportsTouchEvents, supportsCSSTransform = config.supportsCSSTransform, supportsMutipleCanvasesInOneContainer = config.supportsMutipleCanvasesInOneContainer, useNativeClickEvent = config.useNativeClickEvent, alwaysTriggerPointerEventOnCanvas = config.alwaysTriggerPointerEventOnCanvas, isTouchEvent = config.isTouchEvent, isMouseEvent = config.isMouseEvent;\n if (!supportsMutipleCanvasesInOneContainer) {\n cleanExistedCanvas(container, _this);\n }\n var canvasWidth = width;\n var canvasHeight = height;\n var dpr = devicePixelRatio;\n // use user-defined or OffscreenCanvas\n if (canvas) {\n // infer width & height with dpr\n dpr = devicePixelRatio || (isBrowser && window.devicePixelRatio) || 1;\n dpr = dpr >= 1 ? Math.ceil(dpr) : 1;\n canvasWidth = width || getWidth(canvas) || canvas.width / dpr;\n canvasHeight = height || getHeight(canvas) || canvas.height / dpr;\n }\n // override it in runtime\n if (offscreenCanvas) {\n runtime.offscreenCanvas = offscreenCanvas;\n }\n /**\n * implements `Window` interface\n */\n _this.devicePixelRatio = dpr;\n _this.requestAnimationFrame =\n requestAnimationFrame !== null && requestAnimationFrame !== void 0 ? requestAnimationFrame : raf.bind(runtime.globalThis);\n _this.cancelAnimationFrame =\n cancelAnimationFrame !== null && cancelAnimationFrame !== void 0 ? cancelAnimationFrame : caf.bind(runtime.globalThis);\n /**\n * limits query\n */\n // the following feature-detect from hammer.js\n // @see https://github.com/hammerjs/hammer.js/blob/master/src/inputjs/input-consts.js#L5\n _this.supportsTouchEvents =\n supportsTouchEvents !== null && supportsTouchEvents !== void 0 ? supportsTouchEvents : 'ontouchstart' in runtime.globalThis;\n _this.supportsPointerEvents =\n supportsPointerEvents !== null && supportsPointerEvents !== void 0 ? supportsPointerEvents : !!runtime.globalThis.PointerEvent;\n _this.isTouchEvent =\n isTouchEvent !== null && isTouchEvent !== void 0 ? isTouchEvent : (function (event) {\n return _this.supportsTouchEvents &&\n event instanceof runtime.globalThis.TouchEvent;\n });\n _this.isMouseEvent =\n isMouseEvent !== null && isMouseEvent !== void 0 ? isMouseEvent : (function (event) {\n return !runtime.globalThis.MouseEvent ||\n (event instanceof runtime.globalThis.MouseEvent &&\n (!_this.supportsPointerEvents ||\n !(event instanceof runtime.globalThis.PointerEvent)));\n });\n _this.initRenderingContext({\n container: container,\n canvas: canvas,\n width: canvasWidth,\n height: canvasHeight,\n renderer: renderer,\n offscreenCanvas: offscreenCanvas,\n devicePixelRatio: dpr,\n cursor: cursor || 'default',\n background: background || 'transparent',\n createImage: createImage,\n document: document,\n supportsCSSTransform: supportsCSSTransform,\n useNativeClickEvent: useNativeClickEvent,\n alwaysTriggerPointerEventOnCanvas: alwaysTriggerPointerEventOnCanvas,\n });\n _this.initDefaultCamera(canvasWidth, canvasHeight, renderer.clipSpaceNearZ);\n _this.initRenderer(renderer, true);\n return _this;\n }\n Canvas.prototype.initRenderingContext = function (mergedConfig) {\n this.context.config = mergedConfig;\n // bind rendering context, shared by all renderers\n this.context.renderingContext = {\n /**\n * the root node in scene graph\n */\n root: this.document.documentElement,\n renderListCurrentFrame: [],\n unculledEntities: [],\n renderReasons: new Set(),\n force: false,\n dirty: false,\n };\n };\n Canvas.prototype.initDefaultCamera = function (width, height, clipSpaceNearZ) {\n var _this = this;\n // set a default ortho camera\n var camera = new runtime.CameraContribution();\n camera.clipSpaceNearZ = clipSpaceNearZ;\n camera\n .setType(CameraType.EXPLORING, CameraTrackingMode.DEFAULT)\n .setPosition(width / 2, height / 2, DEFAULT_CAMERA_Z)\n .setFocalPoint(width / 2, height / 2, 0)\n .setOrthographic(width / -2, width / 2, height / 2, height / -2, DEFAULT_CAMERA_NEAR, DEFAULT_CAMERA_FAR);\n // keep ref since it will use raf in camera animation\n camera.canvas = this;\n // redraw when camera changed\n camera.eventEmitter.on(CameraEvent.UPDATED, function () {\n _this.context.renderingContext.renderReasons.add(RenderReason.CAMERA_CHANGED);\n });\n // bind camera\n this.context.camera = camera;\n };\n Canvas.prototype.getConfig = function () {\n return this.context.config;\n };\n /**\n * get the root displayObject in scenegraph\n * @alias this.document.documentElement\n */\n Canvas.prototype.getRoot = function () {\n return this.document.documentElement;\n };\n /**\n * get the camera of canvas\n */\n Canvas.prototype.getCamera = function () {\n return this.context.camera;\n };\n Canvas.prototype.getContextService = function () {\n return this.context.contextService;\n };\n Canvas.prototype.getEventService = function () {\n return this.context.eventService;\n };\n Canvas.prototype.getRenderingService = function () {\n return this.context.renderingService;\n };\n Canvas.prototype.getRenderingContext = function () {\n return this.context.renderingContext;\n };\n Canvas.prototype.getStats = function () {\n return this.getRenderingService().getStats();\n };\n Object.defineProperty(Canvas.prototype, \"ready\", {\n // /**\n // * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Window/getComputedStyle\n // */\n // getComputedStyle(node: DisplayObject) {\n // return node.computedStyle;\n // }\n get: function () {\n var _this = this;\n if (!this.readyPromise) {\n this.readyPromise = new Promise(function (resolve) {\n _this.resolveReadyPromise = function () {\n resolve(_this);\n };\n });\n if (this.inited) {\n this.resolveReadyPromise();\n }\n }\n return this.readyPromise;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * `cleanUp` means clean all the internal services of Canvas which happens when calling `canvas.destroy()`.\n */\n Canvas.prototype.destroy = function (cleanUp, skipTriggerEvent) {\n if (cleanUp === void 0) { cleanUp = true; }\n if (skipTriggerEvent === void 0) { skipTriggerEvent = false; }\n if (!skipTriggerEvent) {\n this.dispatchEvent(new CustomEvent(CanvasEvent.BEFORE_DESTROY));\n }\n if (this.frameId) {\n var cancelRAF = this.getConfig().cancelAnimationFrame || cancelAnimationFrame;\n cancelRAF(this.frameId);\n }\n // unmount all children\n var root = this.getRoot();\n this.unmountChildren(root);\n if (cleanUp) {\n // destroy Document\n this.document.destroy();\n this.getEventService().destroy();\n }\n // destroy services\n this.getRenderingService().destroy();\n this.getContextService().destroy();\n // clear root after renderservice destroyed\n if (cleanUp && this.context.rBushRoot) {\n // clear rbush\n this.context.rBushRoot.clear();\n this.context.rBushRoot = null;\n this.context.renderingContext.root = null;\n }\n if (!skipTriggerEvent) {\n this.dispatchEvent(new CustomEvent(CanvasEvent.AFTER_DESTROY));\n }\n };\n /**\n * compatible with G 3.0\n * @deprecated\n * @alias resize\n */\n Canvas.prototype.changeSize = function (width, height) {\n this.resize(width, height);\n };\n Canvas.prototype.resize = function (width, height) {\n // update canvas' config\n var canvasConfig = this.context.config;\n canvasConfig.width = width;\n canvasConfig.height = height;\n // resize context\n this.getContextService().resize(width, height);\n // resize camera\n var camera = this.context.camera;\n var projectionMode = camera.getProjectionMode();\n camera\n .setPosition(width / 2, height / 2, DEFAULT_CAMERA_Z)\n .setFocalPoint(width / 2, height / 2, 0);\n if (projectionMode === CameraProjectionMode.ORTHOGRAPHIC) {\n camera.setOrthographic(width / -2, width / 2, height / 2, height / -2, camera.getNear(), camera.getFar());\n }\n else {\n camera.setAspect(width / height);\n }\n this.dispatchEvent(new CustomEvent(CanvasEvent.RESIZE, { width: width, height: height }));\n };\n // proxy to document.documentElement\n Canvas.prototype.appendChild = function (child, index) {\n return this.document.documentElement.appendChild(child, index);\n };\n Canvas.prototype.insertBefore = function (newChild, refChild) {\n return this.document.documentElement.insertBefore(newChild, refChild);\n };\n Canvas.prototype.removeChild = function (child) {\n return this.document.documentElement.removeChild(child);\n };\n /**\n * Remove all children which can be appended to its original parent later again.\n */\n Canvas.prototype.removeChildren = function () {\n this.document.documentElement.removeChildren();\n };\n /**\n * Recursively destroy all children which can not be appended to its original parent later again.\n * But the canvas remains running which means display objects can be appended later.\n */\n Canvas.prototype.destroyChildren = function () {\n this.document.documentElement.destroyChildren();\n };\n Canvas.prototype.render = function () {\n var _this = this;\n this.dispatchEvent(beforeRenderEvent);\n var renderingService = this.getRenderingService();\n renderingService.render(this.getConfig(), function () {\n // trigger actual rerender event\n // @see https://github.com/antvis/G/issues/1268\n _this.dispatchEvent(rerenderEvent);\n });\n this.dispatchEvent(afterRenderEvent);\n };\n Canvas.prototype.run = function () {\n var _this = this;\n var tick = function () {\n _this.render();\n _this.frameId = _this.requestAnimationFrame(tick);\n };\n tick();\n };\n Canvas.prototype.initRenderer = function (renderer, firstContentfullPaint) {\n var _this = this;\n if (firstContentfullPaint === void 0) { firstContentfullPaint = false; }\n if (!renderer) {\n throw new Error('Renderer is required.');\n }\n // reset\n this.inited = false;\n this.readyPromise = undefined;\n // FIXME: should re-create here?\n this.context.rBushRoot = new RBush();\n // reset rendering plugins\n this.context.renderingPlugins = [];\n this.context.renderingPlugins.push(new EventPlugin(), new PrepareRendererPlugin(), \n // new DirtyCheckPlugin(),\n new CullingPlugin([new FrustumCullingStrategy()]));\n //\n this.loadRendererContainerModule(renderer);\n // init context service\n this.context.contextService = new this.context.ContextService(__assign(__assign({}, runtime), this.context));\n // init rendering service\n this.context.renderingService = new RenderingService(runtime, this.context);\n // init event service\n this.context.eventService = new EventService(runtime, this.context);\n this.context.eventService.init();\n if (this.context.contextService.init) {\n this.context.contextService.init();\n this.initRenderingService(renderer, firstContentfullPaint, true);\n }\n else {\n this.context.contextService.initAsync().then(function () {\n _this.initRenderingService(renderer, firstContentfullPaint);\n });\n }\n };\n Canvas.prototype.initRenderingService = function (renderer, firstContentfullPaint, async) {\n var _this = this;\n if (firstContentfullPaint === void 0) { firstContentfullPaint = false; }\n if (async === void 0) { async = false; }\n this.context.renderingService.init(function () {\n _this.inited = true;\n if (firstContentfullPaint) {\n if (async) {\n _this.requestAnimationFrame(function () {\n _this.dispatchEvent(new CustomEvent(CanvasEvent.READY));\n });\n }\n else {\n _this.dispatchEvent(new CustomEvent(CanvasEvent.READY));\n }\n if (_this.readyPromise) {\n _this.resolveReadyPromise();\n }\n }\n else {\n _this.dispatchEvent(new CustomEvent(CanvasEvent.RENDERER_CHANGED));\n }\n if (!firstContentfullPaint) {\n _this.getRoot().forEach(function (node) {\n var renderable = node.renderable;\n if (renderable) {\n renderable.renderBoundsDirty = true;\n renderable.boundsDirty = true;\n renderable.dirty = true;\n }\n });\n }\n // keep current scenegraph unchanged, just trigger mounted event\n _this.mountChildren(_this.getRoot());\n if (renderer.getConfig().enableAutoRendering) {\n _this.run();\n }\n });\n };\n Canvas.prototype.loadRendererContainerModule = function (renderer) {\n var _this = this;\n // load other container modules provided by g-canvas/g-svg/g-webgl\n var plugins = renderer.getPlugins();\n plugins.forEach(function (plugin) {\n plugin.context = _this.context;\n plugin.init(runtime);\n });\n };\n Canvas.prototype.setRenderer = function (renderer) {\n // update canvas' config\n var canvasConfig = this.getConfig();\n if (canvasConfig.renderer === renderer) {\n return;\n }\n var oldRenderer = canvasConfig.renderer;\n canvasConfig.renderer = renderer;\n // keep all children undestroyed\n this.destroy(false, true);\n // destroy all plugins, reverse will mutate origin array\n __spreadArray([], __read(oldRenderer === null || oldRenderer === void 0 ? void 0 : oldRenderer.getPlugins()), false).reverse().forEach(function (plugin) {\n plugin.destroy(runtime);\n });\n this.initRenderer(renderer);\n };\n Canvas.prototype.setCursor = function (cursor) {\n var canvasConfig = this.getConfig();\n canvasConfig.cursor = cursor;\n this.getContextService().applyCursorStyle(cursor);\n };\n Canvas.prototype.unmountChildren = function (parent) {\n var _this = this;\n // unmountChildren recursively\n parent.childNodes.forEach(function (child) {\n _this.unmountChildren(child);\n });\n if (this.inited) {\n if (parent.isMutationObserved) {\n parent.dispatchEvent(unmountedEvent);\n }\n else {\n unmountedEvent.target = parent;\n this.dispatchEvent(unmountedEvent, true);\n }\n // skip document.documentElement\n if (parent !== this.document.documentElement) {\n parent.ownerDocument = null;\n }\n parent.isConnected = false;\n }\n // trigger after unmounted\n if (parent.isCustomElement) {\n if (parent.disconnectedCallback) {\n parent.disconnectedCallback();\n }\n }\n };\n Canvas.prototype.mountChildren = function (parent) {\n var _this = this;\n if (this.inited) {\n if (!parent.isConnected) {\n parent.ownerDocument = this.document;\n parent.isConnected = true;\n if (parent.isMutationObserved) {\n parent.dispatchEvent(mountedEvent);\n }\n else {\n mountedEvent.target = parent;\n this.dispatchEvent(mountedEvent, true);\n }\n }\n }\n else {\n console.warn(\"[g]: You are trying to call `canvas.appendChild` before canvas' initialization finished. You can either await `canvas.ready` or listen to `CanvasEvent.READY` manually.\", 'appended child: ', parent.nodeName);\n }\n // recursively mount children\n parent.childNodes.forEach(function (child) {\n _this.mountChildren(child);\n });\n // trigger after mounted\n if (parent.isCustomElement) {\n if (parent.connectedCallback) {\n parent.connectedCallback();\n }\n }\n };\n Canvas.prototype.client2Viewport = function (client) {\n return this.getEventService().client2Viewport(client);\n };\n Canvas.prototype.viewport2Client = function (canvas) {\n return this.getEventService().viewport2Client(canvas);\n };\n Canvas.prototype.viewport2Canvas = function (viewport) {\n return this.getEventService().viewport2Canvas(viewport);\n };\n Canvas.prototype.canvas2Viewport = function (canvas) {\n return this.getEventService().canvas2Viewport(canvas);\n };\n /**\n * @deprecated\n * @alias client2Viewport\n */\n Canvas.prototype.getPointByClient = function (clientX, clientY) {\n return this.client2Viewport({ x: clientX, y: clientY });\n };\n /**\n * @deprecated\n * @alias viewport2Client\n */\n Canvas.prototype.getClientByPoint = function (x, y) {\n return this.viewport2Client({ x: x, y: y });\n };\n return Canvas;\n}(EventTarget));\n\nexport { AABB, AbstractRenderer, AbstractRendererPlugin, BUILT_IN_PROPERTIES, CSS, CSSGradientValue, CSSKeywordValue, CSSRGB, CSSStyleValue, CSSUnitValue, Camera, CameraEvent, CameraProjectionMode, CameraTrackingMode, CameraType, Canvas, CanvasEvent, Circle, CircleUpdater, ClipSpaceNearZ, CustomElement, CustomElementRegistry, CustomEvent, DefaultSceneGraphSelector, DefaultSceneGraphService, DisplayObject, Document, ERROR_MSG_METHOD_NOT_IMPLEMENTED, Element, ElementEvent, Ellipse, EllipseUpdater, EventService, EventTarget, FederatedEvent, FederatedMouseEvent, FederatedPointerEvent, FederatedWheelEvent, Frustum, GradientType, Group, HTML, Image, Line, LineUpdater, Mask, MutationEvent, Node, OffscreenCanvasCreator, Path, PathUpdater, Plane, Point, Polygon, Polyline, PolylineUpdater, PropertySyntax, RBush, Rect, RectUpdater, Rectangle, RenderReason, RenderingService, Shape, SortReason, Strategy, Text, TextService, TextUpdater, UnitType, computeLinearGradient, computeRadialGradient, convertToPath, createVec3, decompose, definedProps, deg2rad, deg2turn, findClosestClipPathTarget, fromRotationTranslationScale, getAngle, getEuler, getOrCalculatePathTotalLength, grad2deg, isBrowser, isCSSGradientValue, isCSSRGB, isCanvas, isDisplayObject, isFederatedEvent, isFillOrStrokeAffected, isPattern, mergeColors, parseColor, parseLength, parsePath, parseTransform, parsedTransformToMat4, propertyMetadataCache, rad2deg, resetEntityCounter, runtime, setDOMSize, translatePathToString, turn2deg };\n//# sourceMappingURL=index.esm.js.map\n","import { getAngle, CameraType, deg2rad, createVec3, runtime, Camera } from '@antv/g-lite';\nimport { __extends, __spreadArray, __read } from 'tslib';\nimport { isString, isNumber } from '@antv/util';\nimport { quat, mat4, vec3 } from 'gl-matrix';\n\n/**\n * Provides camera action & animation.\n */\nvar AdvancedCamera = /** @class */ (function (_super) {\n __extends(AdvancedCamera, _super);\n function AdvancedCamera() {\n var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n /**\n * switch between multiple landmarks\n */\n _this.landmarks = [];\n return _this;\n /**\n * Sets the camera to a distance such that the area covered by the bounding box is viewed.\n */\n // shot(displayObject: DisplayObject) {\n // const aabb = displayObject.getBounds();\n // if (!AABB.isEmpty(aabb)) {\n // this.setElevation(0);\n // this.setAzimuth(0);\n // this.setRoll(0);\n // const { halfExtents, center } = aabb;\n // const maxDim = Math.max(halfExtents[0] * 2, halfExtents[1] * 2);\n // const cc = center.map((c: number) => Math.round(c * 1000) / 1000) as [number, number, number];\n // if (maxDim !== 0) {\n // const d = (1.5 * maxDim) / Math.tan(this.fov * DEG_2_RAD);\n // this.setPosition([cc[0], cc[1], cc[2] + d]);\n // }\n // this.setFocalPoint(cc);\n // }\n // }\n }\n /**\n * Changes the azimuth and elevation with respect to the current camera axes\n * @param {Number} azimuth the relative azimuth\n * @param {Number} elevation the relative elevation\n * @param {Number} roll the relative roll\n */\n AdvancedCamera.prototype.rotate = function (azimuth, elevation, roll) {\n this.relElevation = getAngle(elevation);\n this.relAzimuth = getAngle(azimuth);\n this.relRoll = getAngle(roll);\n this.elevation += this.relElevation;\n this.azimuth += this.relAzimuth;\n this.roll += this.relRoll;\n if (this.type === CameraType.EXPLORING) {\n var rotX = quat.setAxisAngle(quat.create(), [1, 0, 0], deg2rad((this.rotateWorld ? 1 : -1) * this.relElevation));\n var rotY = quat.setAxisAngle(quat.create(), [0, 1, 0], deg2rad((this.rotateWorld ? 1 : -1) * this.relAzimuth));\n var rotZ = quat.setAxisAngle(quat.create(), [0, 0, 1], deg2rad(this.relRoll));\n var rotQ = quat.multiply(quat.create(), rotY, rotX);\n rotQ = quat.multiply(quat.create(), rotQ, rotZ);\n var rotMatrix = mat4.fromQuat(mat4.create(), rotQ);\n mat4.translate(this.matrix, this.matrix, [0, 0, -this.distance]);\n mat4.multiply(this.matrix, this.matrix, rotMatrix);\n mat4.translate(this.matrix, this.matrix, [0, 0, this.distance]);\n }\n else {\n if (Math.abs(this.elevation) > 90) {\n return this;\n }\n this.computeMatrix();\n }\n this._getAxes();\n if (this.type === CameraType.ORBITING ||\n this.type === CameraType.EXPLORING) {\n this._getPosition();\n }\n else if (this.type === CameraType.TRACKING) {\n this._getFocalPoint();\n }\n this._update();\n return this;\n };\n /**\n * 沿水平(right) & 垂直(up)平移相机\n */\n AdvancedCamera.prototype.pan = function (tx, ty) {\n var coords = createVec3(tx, ty, 0);\n var pos = vec3.clone(this.position);\n vec3.add(pos, pos, vec3.scale(vec3.create(), this.right, coords[0]));\n vec3.add(pos, pos, vec3.scale(vec3.create(), this.up, coords[1]));\n this._setPosition(pos);\n this.triggerUpdate();\n return this;\n };\n /**\n * 沿 n 轴移动,当距离视点远时移动速度较快,离视点越近速度越慢\n */\n AdvancedCamera.prototype.dolly = function (value) {\n var n = this.forward;\n var pos = vec3.clone(this.position);\n var step = value * this.dollyingStep;\n var updatedDistance = this.distance + value * this.dollyingStep;\n // 限制视点距离范围\n step =\n Math.max(Math.min(updatedDistance, this.maxDistance), this.minDistance) -\n this.distance;\n pos[0] += step * n[0];\n pos[1] += step * n[1];\n pos[2] += step * n[2];\n this._setPosition(pos);\n if (this.type === CameraType.ORBITING ||\n this.type === CameraType.EXPLORING) {\n // 重新计算视点距离\n this._getDistance();\n }\n else if (this.type === CameraType.TRACKING) {\n // 保持视距,移动视点位置\n vec3.add(this.focalPoint, pos, this.distanceVector);\n }\n this.triggerUpdate();\n return this;\n };\n AdvancedCamera.prototype.cancelLandmarkAnimation = function () {\n if (this.landmarkAnimationID !== undefined) {\n this.canvas.cancelAnimationFrame(this.landmarkAnimationID);\n }\n };\n AdvancedCamera.prototype.createLandmark = function (name, params) {\n var _a, _b, _c, _d;\n if (params === void 0) { params = {}; }\n var _e = params.position, position = _e === void 0 ? this.position : _e, _f = params.focalPoint, focalPoint = _f === void 0 ? this.focalPoint : _f, roll = params.roll, zoom = params.zoom;\n var camera = new runtime.CameraContribution();\n camera.setType(this.type, undefined);\n camera.setPosition(position[0], (_a = position[1]) !== null && _a !== void 0 ? _a : this.position[1], (_b = position[2]) !== null && _b !== void 0 ? _b : this.position[2]);\n camera.setFocalPoint(focalPoint[0], (_c = focalPoint[1]) !== null && _c !== void 0 ? _c : this.focalPoint[1], (_d = focalPoint[2]) !== null && _d !== void 0 ? _d : this.focalPoint[2]);\n camera.setRoll(roll !== null && roll !== void 0 ? roll : this.roll);\n camera.setZoom(zoom !== null && zoom !== void 0 ? zoom : this.zoom);\n var landmark = {\n name: name,\n matrix: mat4.clone(camera.getWorldTransform()),\n right: vec3.clone(camera.right),\n up: vec3.clone(camera.up),\n forward: vec3.clone(camera.forward),\n position: vec3.clone(camera.getPosition()),\n focalPoint: vec3.clone(camera.getFocalPoint()),\n distanceVector: vec3.clone(camera.getDistanceVector()),\n distance: camera.getDistance(),\n dollyingStep: camera.getDollyingStep(),\n azimuth: camera.getAzimuth(),\n elevation: camera.getElevation(),\n roll: camera.getRoll(),\n relAzimuth: camera.relAzimuth,\n relElevation: camera.relElevation,\n relRoll: camera.relRoll,\n zoom: camera.getZoom(),\n };\n this.landmarks.push(landmark);\n return landmark;\n };\n AdvancedCamera.prototype.gotoLandmark = function (name, options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n var landmark = isString(name)\n ? this.landmarks.find(function (l) { return l.name === name; })\n : name;\n if (landmark) {\n var _a = isNumber(options) ? { duration: options } : options, _b = _a.easing, easing = _b === void 0 ? 'linear' : _b, _c = _a.duration, duration_1 = _c === void 0 ? 100 : _c, _d = _a.easingFunction, easingFunction = _d === void 0 ? undefined : _d, _e = _a.onfinish, onfinish_1 = _e === void 0 ? undefined : _e, _f = _a.onframe, onframe_1 = _f === void 0 ? undefined : _f;\n var epsilon_1 = 0.01;\n if (duration_1 === 0) {\n this.syncFromLandmark(landmark);\n if (onfinish_1) {\n onfinish_1();\n }\n return;\n }\n // cancel ongoing animation\n this.cancelLandmarkAnimation();\n var destPosition_1 = landmark.position;\n var destFocalPoint_1 = landmark.focalPoint;\n var destZoom_1 = landmark.zoom;\n var destRoll_1 = landmark.roll;\n var easingFunc_1 = easingFunction || runtime.EasingFunction(easing);\n var timeStart_1;\n var endAnimation_1 = function () {\n _this.setFocalPoint(destFocalPoint_1);\n _this.setPosition(destPosition_1);\n _this.setRoll(destRoll_1);\n _this.setZoom(destZoom_1);\n _this.computeMatrix();\n _this.triggerUpdate();\n if (onfinish_1) {\n onfinish_1();\n }\n };\n var animate_1 = function (timestamp) {\n if (timeStart_1 === undefined) {\n timeStart_1 = timestamp;\n }\n var elapsed = timestamp - timeStart_1;\n if (elapsed > duration_1) {\n endAnimation_1();\n return;\n }\n // use the same ease function in animation system\n var t = easingFunc_1(elapsed / duration_1);\n var interFocalPoint = vec3.create();\n var interPosition = vec3.create();\n var interZoom = 1;\n var interRoll = 0;\n vec3.lerp(interFocalPoint, _this.focalPoint, destFocalPoint_1, t);\n vec3.lerp(interPosition, _this.position, destPosition_1, t);\n interRoll = _this.roll * (1 - t) + destRoll_1 * t;\n interZoom = _this.zoom * (1 - t) + destZoom_1 * t;\n _this.setFocalPoint(interFocalPoint);\n _this.setPosition(interPosition);\n _this.setRoll(interRoll);\n _this.setZoom(interZoom);\n var dist = vec3.dist(interFocalPoint, destFocalPoint_1) +\n vec3.dist(interPosition, destPosition_1);\n if (dist <= epsilon_1 && destZoom_1 == undefined && destRoll_1 == undefined) {\n endAnimation_1();\n return;\n }\n _this.computeMatrix();\n _this.triggerUpdate();\n if (elapsed < duration_1) {\n if (onframe_1) {\n onframe_1(t);\n }\n _this.landmarkAnimationID = _this.canvas.requestAnimationFrame(animate_1);\n }\n };\n this.canvas.requestAnimationFrame(animate_1);\n }\n };\n AdvancedCamera.prototype.syncFromLandmark = function (landmark) {\n this.matrix = mat4.copy(this.matrix, landmark.matrix);\n this.right = vec3.copy(this.right, landmark.right);\n this.up = vec3.copy(this.up, landmark.up);\n this.forward = vec3.copy(this.forward, landmark.forward);\n this.position = vec3.copy(this.position, landmark.position);\n this.focalPoint = vec3.copy(this.focalPoint, landmark.focalPoint);\n this.distanceVector = vec3.copy(this.distanceVector, landmark.distanceVector);\n this.azimuth = landmark.azimuth;\n this.elevation = landmark.elevation;\n this.roll = landmark.roll;\n this.relAzimuth = landmark.relAzimuth;\n this.relElevation = landmark.relElevation;\n this.relRoll = landmark.relRoll;\n this.dollyingStep = landmark.dollyingStep;\n this.distance = landmark.distance;\n this.zoom = landmark.zoom;\n };\n return AdvancedCamera;\n}(Camera));\n\nruntime.CameraContribution = AdvancedCamera;\n\nexport { AdvancedCamera };\n//# sourceMappingURL=index.esm.js.map\n","import { FederatedEvent, ERROR_MSG_METHOD_NOT_IMPLEMENTED, propertyMetadataCache, runtime } from '@antv/g-lite';\nimport { __extends, __read, __spreadArray } from 'tslib';\nimport { clamp, isNumber, isNil } from '@antv/util';\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationPlaybackEvent\n */\n// @ts-ignore\nvar AnimationEvent = /** @class */ (function (_super) {\n __extends(AnimationEvent, _super);\n function AnimationEvent(manager, target, currentTime, timelineTime) {\n var _this = _super.call(this, manager) || this;\n _this.currentTime = currentTime;\n _this.timelineTime = timelineTime;\n // @ts-ignore\n _this.target = target;\n _this.type = 'finish';\n _this.bubbles = false;\n // @ts-ignore\n _this.currentTarget = target;\n _this.defaultPrevented = false;\n _this.eventPhase = _this.AT_TARGET;\n _this.timeStamp = Date.now();\n _this.currentTime = currentTime;\n _this.timelineTime = timelineTime;\n return _this;\n }\n return AnimationEvent;\n}(FederatedEvent));\n\nvar sequenceNumber = 0;\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Animation/Animation\n */\nvar Animation = /** @class */ (function () {\n function Animation(effect, timeline) {\n var _a;\n this.currentTimePending = false;\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Animation/playState\n */\n // playState: AnimationPlayState;\n this._idle = true;\n this._paused = false;\n this._finishedFlag = true;\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Animation/currentTime\n */\n this._currentTime = 0;\n this._playbackRate = 1;\n this._inTimeline = true;\n this.effect = effect;\n effect.animation = this;\n this.timeline = timeline;\n this.id = \"\".concat(sequenceNumber++);\n this._inEffect = !!this.effect.update(0);\n this._totalDuration = Number((_a = this.effect) === null || _a === void 0 ? void 0 : _a.getComputedTiming().endTime);\n this._holdTime = 0;\n this._paused = false;\n this.oldPlayState = 'idle';\n this.updatePromises();\n }\n Object.defineProperty(Animation.prototype, \"pending\", {\n // animation: InternalAnimation | null;\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Animation/pending\n */\n get: function () {\n return ((this._startTime === null && !this._paused && this.playbackRate !== 0) ||\n this.currentTimePending);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"playState\", {\n get: function () {\n if (this._idle)\n return 'idle';\n if (this._isFinished)\n return 'finished';\n if (this._paused)\n return 'paused';\n return 'running';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"ready\", {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Animation/ready\n * @example\n animation.pause();\n animation.ready.then(function() {\n // Displays 'running'\n alert(animation.playState);\n });\n animation.play();\n */\n get: function () {\n var _this = this;\n if (!this.readyPromise) {\n if (this.timeline.animationsWithPromises.indexOf(this) === -1) {\n this.timeline.animationsWithPromises.push(this);\n }\n this.readyPromise = new Promise(function (resolve, reject) {\n _this.resolveReadyPromise = function () {\n resolve(_this);\n };\n _this.rejectReadyPromise = function () {\n reject(new Error());\n };\n });\n if (!this.pending) {\n this.resolveReadyPromise();\n }\n }\n return this.readyPromise;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"finished\", {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Animation/finished\n * @example\n Promise.all(\n elem.getAnimations().map(\n function(animation) {\n return animation.finished\n }\n )\n ).then(\n function() {\n return elem.remove();\n }\n );\n */\n get: function () {\n var _this = this;\n if (!this.finishedPromise) {\n if (this.timeline.animationsWithPromises.indexOf(this) === -1) {\n this.timeline.animationsWithPromises.push(this);\n }\n this.finishedPromise = new Promise(function (resolve, reject) {\n _this.resolveFinishedPromise = function () {\n resolve(_this);\n };\n _this.rejectFinishedPromise = function () {\n reject(new Error());\n };\n });\n if (this.playState === 'finished') {\n this.resolveFinishedPromise();\n }\n }\n return this.finishedPromise;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"currentTime\", {\n get: function () {\n this.updatePromises();\n return this._idle || this.currentTimePending ? null : this._currentTime;\n },\n set: function (newTime) {\n var _a;\n newTime = Number(newTime);\n if (isNaN(newTime))\n return;\n this.timeline.restart();\n if (!this._paused && this._startTime !== null) {\n this._startTime =\n Number((_a = this.timeline) === null || _a === void 0 ? void 0 : _a.currentTime) - newTime / this.playbackRate;\n }\n this.currentTimePending = false;\n if (this._currentTime === newTime) {\n return;\n }\n if (this._idle) {\n this._idle = false;\n this._paused = true;\n }\n this.tickCurrentTime(newTime, true);\n this.timeline.applyDirtiedAnimation(this);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"startTime\", {\n get: function () {\n return this._startTime;\n },\n set: function (newTime) {\n if (newTime !== null) {\n this.updatePromises();\n newTime = Number(newTime);\n if (isNaN(newTime))\n return;\n if (this._paused || this._idle)\n return;\n this._startTime = newTime;\n this.tickCurrentTime((Number(this.timeline.currentTime) - this._startTime) *\n this.playbackRate);\n this.timeline.applyDirtiedAnimation(this);\n this.updatePromises();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"playbackRate\", {\n get: function () {\n return this._playbackRate;\n },\n set: function (value) {\n if (value === this._playbackRate) {\n return;\n }\n this.updatePromises();\n var oldCurrentTime = this.currentTime;\n this._playbackRate = value;\n this.startTime = null;\n if (this.playState !== 'paused' && this.playState !== 'idle') {\n this._finishedFlag = false;\n this._idle = false;\n this.ensureAlive();\n this.timeline.applyDirtiedAnimation(this);\n }\n if (oldCurrentTime !== null) {\n this.currentTime = oldCurrentTime;\n }\n this.updatePromises();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"_isFinished\", {\n get: function () {\n return (!this._idle &&\n ((this._playbackRate > 0 &&\n Number(this._currentTime) >= this._totalDuration) ||\n (this._playbackRate < 0 && Number(this._currentTime) <= 0)));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"totalDuration\", {\n get: function () {\n return this._totalDuration;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"_needsTick\", {\n get: function () {\n return this.pending || this.playState === 'running' || !this._finishedFlag;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * state machine,\n * resolve/reject ready/finished Promise according to current state\n */\n Animation.prototype.updatePromises = function () {\n var oldPlayState = this.oldPlayState;\n var newPlayState = this.pending ? 'pending' : this.playState;\n if (this.readyPromise && newPlayState !== oldPlayState) {\n if (newPlayState === 'idle') {\n this.rejectReadyPromise();\n this.readyPromise = undefined;\n }\n else if (oldPlayState === 'pending') {\n this.resolveReadyPromise();\n }\n else if (newPlayState === 'pending') {\n this.readyPromise = undefined;\n }\n }\n if (this.finishedPromise && newPlayState !== oldPlayState) {\n if (newPlayState === 'idle') {\n this.rejectFinishedPromise();\n this.finishedPromise = undefined;\n }\n else if (newPlayState === 'finished') {\n this.resolveFinishedPromise();\n }\n else if (oldPlayState === 'finished') {\n this.finishedPromise = undefined;\n }\n }\n this.oldPlayState = newPlayState;\n return this.readyPromise || this.finishedPromise;\n };\n Animation.prototype.play = function () {\n this.updatePromises();\n this._paused = false;\n if (this._isFinished || this._idle) {\n this.rewind();\n this._startTime = null;\n }\n this._finishedFlag = false;\n this._idle = false;\n this.ensureAlive();\n this.timeline.applyDirtiedAnimation(this);\n if (this.timeline.animations.indexOf(this) === -1) {\n this.timeline.animations.push(this);\n }\n this.updatePromises();\n };\n Animation.prototype.pause = function () {\n this.updatePromises();\n if (this.currentTime) {\n this._holdTime = this.currentTime;\n }\n if (!this._isFinished && !this._paused && !this._idle) {\n this.currentTimePending = true;\n }\n else if (this._idle) {\n this.rewind();\n this._idle = false;\n }\n this._startTime = null;\n this._paused = true;\n this.updatePromises();\n };\n Animation.prototype.finish = function () {\n this.updatePromises();\n if (this._idle)\n return;\n this.currentTime = this._playbackRate > 0 ? this._totalDuration : 0;\n this._startTime = this._totalDuration - this.currentTime;\n this.currentTimePending = false;\n this.timeline.applyDirtiedAnimation(this);\n this.updatePromises();\n };\n Animation.prototype.cancel = function () {\n var _this = this;\n this.updatePromises();\n if (!this._inEffect)\n return;\n this._inEffect = false;\n this._idle = true;\n this._paused = false;\n this._finishedFlag = true;\n this._currentTime = 0;\n this._startTime = null;\n this.effect.update(null);\n // effects are invalid after cancellation as the animation state\n // needs to un-apply.\n this.timeline.applyDirtiedAnimation(this);\n this.updatePromises();\n /**\n * 1. Reject the current finished promise with a DOMException named \"AbortError\".\n * 2. Let current finished promise be a new promise\n * @see https://w3c.github.io/csswg-drafts/web-animations-1/#canceling-an-animation-section\n */\n // if (this.finishedPromise) {\n // this.rejectFinishedPromise();\n // this.finishedPromise = undefined;\n // }\n if (this.oncancel) {\n var event_1 = new AnimationEvent(null, this, this.currentTime, null);\n setTimeout(function () {\n _this.oncancel(event_1);\n });\n }\n };\n Animation.prototype.reverse = function () {\n this.updatePromises();\n var oldCurrentTime = this.currentTime;\n this.playbackRate *= -1;\n this.play();\n if (oldCurrentTime !== null) {\n this.currentTime = oldCurrentTime;\n }\n this.updatePromises();\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Animation/updatePlaybackRate\n */\n Animation.prototype.updatePlaybackRate = function (playbackRate) {\n this.playbackRate = playbackRate;\n };\n Animation.prototype.targetAnimations = function () {\n var _a;\n var target = (_a = this.effect) === null || _a === void 0 ? void 0 : _a.target;\n return target.getAnimations();\n };\n Animation.prototype.markTarget = function () {\n var animations = this.targetAnimations();\n if (animations.indexOf(this) === -1) {\n animations.push(this);\n }\n };\n Animation.prototype.unmarkTarget = function () {\n var animations = this.targetAnimations();\n var index = animations.indexOf(this);\n if (index !== -1) {\n animations.splice(index, 1);\n }\n };\n Animation.prototype.tick = function (timelineTime, isAnimationFrame) {\n if (!this._idle && !this._paused) {\n if (this._startTime === null) {\n if (isAnimationFrame) {\n this.startTime = timelineTime - this._currentTime / this.playbackRate;\n }\n }\n else if (!this._isFinished) {\n this.tickCurrentTime((timelineTime - this._startTime) * this.playbackRate);\n }\n }\n if (isAnimationFrame) {\n this.currentTimePending = false;\n this.fireEvents(timelineTime);\n }\n };\n Animation.prototype.rewind = function () {\n if (this.playbackRate >= 0) {\n this.currentTime = 0;\n }\n else if (this._totalDuration < Infinity) {\n this.currentTime = this._totalDuration;\n }\n else {\n throw new Error('Unable to rewind negative playback rate animation with infinite duration');\n }\n };\n Animation.prototype.persist = function () {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Animation.prototype.addEventListener = function (type, listener, options) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Animation.prototype.removeEventListener = function (type, listener, options) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Animation.prototype.dispatchEvent = function (event) {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n // replaceState: AnimationReplaceState;\n Animation.prototype.commitStyles = function () {\n throw new Error(ERROR_MSG_METHOD_NOT_IMPLEMENTED);\n };\n Animation.prototype.ensureAlive = function () {\n var _a, _b;\n // If an animation is playing backwards and is not fill backwards/both\n // then it should go out of effect when it reaches the start of its\n // active interval (currentTime === 0).\n if (this.playbackRate < 0 && this.currentTime === 0) {\n this._inEffect = !!((_a = this.effect) === null || _a === void 0 ? void 0 : _a.update(-1));\n }\n else {\n this._inEffect = !!((_b = this.effect) === null || _b === void 0 ? void 0 : _b.update(this.currentTime));\n }\n if (!this._inTimeline && (this._inEffect || !this._finishedFlag)) {\n this._inTimeline = true;\n this.timeline.animations.push(this);\n }\n };\n Animation.prototype.tickCurrentTime = function (newTime, ignoreLimit) {\n if (newTime !== this._currentTime) {\n this._currentTime = newTime;\n if (this._isFinished && !ignoreLimit) {\n this._currentTime = this._playbackRate > 0 ? this._totalDuration : 0;\n }\n this.ensureAlive();\n }\n };\n Animation.prototype.fireEvents = function (baseTime) {\n var _this = this;\n if (this._isFinished) {\n if (!this._finishedFlag) {\n if (this.onfinish) {\n var event_2 = new AnimationEvent(null, this, this.currentTime, baseTime);\n setTimeout(function () {\n if (_this.onfinish) {\n _this.onfinish(event_2);\n }\n });\n }\n this._finishedFlag = true;\n }\n }\n else {\n if (this.onframe && this.playState === 'running') {\n var event_3 = new AnimationEvent(null, this, this.currentTime, baseTime);\n this.onframe(event_3);\n }\n this._finishedFlag = false;\n }\n };\n return Animation;\n}());\n\n/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\nvar float32ArraySupported = typeof Float32Array === 'function';\nvar A = function (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; };\nvar B = function (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; };\nvar C = function (aA1) { return 3.0 * aA1; };\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nvar calcBezier = function (aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n};\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nvar getSlope = function (aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n};\nvar binarySubdivide = function (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0)\n aB = currentT;\n else\n aA = currentT;\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n};\nvar newtonRaphsonIterate = function (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0)\n return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n};\nvar bezier = function (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1))\n throw new Error('bezier x values must be in [0, 1] range');\n if (mX1 === mY1 && mX2 === mY2)\n return function (t) { return t; };\n // Precompute samples table\n var sampleValues = float32ArraySupported\n ? new Float32Array(kSplineTableSize)\n : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n var getTForX = function (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample)\n intervalStart += kSampleStepSize;\n --currentSample;\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) /\n (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE)\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n else if (initialSlope === 0.0)\n return guessForT;\n else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return function (t) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (t === 0 || t === 1)\n return t;\n return calcBezier(getTForX(t), mY1, mY2);\n };\n};\n\nvar convertToDash = function (str) {\n str = str.replace(/([A-Z])/g, function (letter) { return \"-\".concat(letter.toLowerCase()); });\n // Remove first dash\n return str.charAt(0) === '-' ? str.substring(1) : str;\n};\n/**\n Easing Functions from anime.js, they are tried and true, so, its better to use them instead of other alternatives\n*/\nvar Quad = function (t) { return Math.pow(t, 2); };\nvar Cubic = function (t) { return Math.pow(t, 3); };\nvar Quart = function (t) { return Math.pow(t, 4); };\nvar Quint = function (t) { return Math.pow(t, 5); };\nvar Expo = function (t) { return Math.pow(t, 6); };\nvar Sine = function (t) { return 1 - Math.cos((t * Math.PI) / 2); };\nvar Circ = function (t) { return 1 - Math.sqrt(1 - t * t); };\nvar Back = function (t) { return t * t * (3 * t - 2); };\nvar Bounce = function (t) {\n var pow2, b = 4;\n while (t < ((pow2 = Math.pow(2, --b)) - 1) / 11) { }\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow((pow2 * 3 - 2) / 22 - t, 2);\n};\nvar Elastic = function (t, params) {\n if (params === void 0) { params = []; }\n var _a = __read(params, 2), _b = _a[0], amplitude = _b === void 0 ? 1 : _b, _c = _a[1], period = _c === void 0 ? 0.5 : _c;\n var a = clamp(Number(amplitude), 1, 10);\n var p = clamp(Number(period), 0.1, 2);\n if (t === 0 || t === 1)\n return t;\n return (-a *\n Math.pow(2, 10 * (t - 1)) *\n Math.sin(((t - 1 - (p / (Math.PI * 2)) * Math.asin(1 / a)) * (Math.PI * 2)) / p));\n};\nvar Spring = function (t, params, duration) {\n if (params === void 0) { params = []; }\n var _a = __read(params, 4), _b = _a[0], mass = _b === void 0 ? 1 : _b, _c = _a[1], stiffness = _c === void 0 ? 100 : _c, _d = _a[2], damping = _d === void 0 ? 10 : _d, _e = _a[3], velocity = _e === void 0 ? 0 : _e;\n mass = clamp(mass, 0.1, 1000);\n stiffness = clamp(stiffness, 0.1, 1000);\n damping = clamp(damping, 0.1, 1000);\n velocity = clamp(velocity, 0.1, 1000);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress =\n Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n }\n else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1)\n return t;\n return 1 - progress;\n};\n/**\n * Cache the durations at set easing parameters\n */\n// export const EasingDurationCache: Map = new Map();\n/**\n * The threshold for an infinite loop\n */\n// const INTINITE_LOOP_LIMIT = 10000;\n/** Convert easing parameters to Array of numbers, e.g. \"spring(2, 500)\" to [2, 500] */\n// export const parseEasingParameters = (str: string) => {\n// const match = /(\\(|\\s)([^)]+)\\)?/.exec(str);\n// return match\n// ? match[2].split(',').map((value) => {\n// const num = parseFloat(value);\n// return !Number.isNaN(num) ? num : value.trim();\n// })\n// : [];\n// };\n/**\n * The spring easing function will only look smooth at certain durations, with certain parameters.\n * This functions returns the optimal duration to create a smooth springy animation based on physics\n *\n * Note: it can also be used to determine the optimal duration of other types of easing function, but be careful of 'in-'\n * easing functions, because of the nature of the function it can sometimes create an infinite loop, I suggest only using\n * `getEasingDuration` for `spring`, specifically 'out-spring' and 'spring'\n */\n// export const getEasingDuration = (easing: string | TypeEasingFunction = 'spring') => {\n// if (EasingDurationCache.has(easing)) return EasingDurationCache.get(easing);\n// // eslint-disable-next-line @typescript-eslint/no-use-before-define\n// const easingFunction = typeof easing == 'function' ? easing : getEasingFunction(easing as string);\n// const params = typeof easing == 'function' ? [] : parseEasingParameters(easing);\n// const frame = 1 / 6;\n// let elapsed = 0;\n// let rest = 0;\n// let count = 0;\n// while (++count < INTINITE_LOOP_LIMIT) {\n// elapsed += frame;\n// if (easingFunction(elapsed, params, undefined) === 1) {\n// rest++;\n// if (rest >= 16) break;\n// } else {\n// rest = 0;\n// }\n// }\n// const duration = elapsed * frame * 1000;\n// EasingDurationCache.set(easing, duration);\n// return duration;\n// };\n/**\n These Easing Functions are based off of the Sozi Project's easing functions\n https://github.com/sozi-projects/Sozi/blob/d72e44ebd580dc7579d1e177406ad41e632f961d/src/js/player/Timing.js\n*/\nvar Steps = function (t, params) {\n if (params === void 0) { params = []; }\n var _a = __read(params, 2), _b = _a[0], steps = _b === void 0 ? 10 : _b, type = _a[1];\n var trunc = type == 'start' ? Math.ceil : Math.floor;\n return trunc(clamp(t, 0, 1) * steps) / steps;\n};\n// @ts-ignore\nvar Bezier = function (t, params) {\n if (params === void 0) { params = []; }\n var _a = __read(params, 4), mX1 = _a[0], mY1 = _a[1], mX2 = _a[2], mY2 = _a[3];\n return bezier(mX1, mY1, mX2, mY2)(t);\n};\n/** The default `ease-in` easing function */\nvar easein = bezier(0.42, 0.0, 1.0, 1.0);\n/** Converts easing functions to their `out`counter parts */\nvar EaseOut = function (ease) {\n return function (t, params, duration) {\n if (params === void 0) { params = []; }\n return 1 - ease(1 - t, params, duration);\n };\n};\n/** Converts easing functions to their `in-out` counter parts */\nvar EaseInOut = function (ease) {\n return function (t, params, duration) {\n if (params === void 0) { params = []; }\n return t < 0.5 ? ease(t * 2, params, duration) / 2 : 1 - ease(t * -2 + 2, params, duration) / 2;\n };\n};\n/** Converts easing functions to their `out-in` counter parts */\nvar EaseOutIn = function (ease) {\n return function (t, params, duration) {\n if (params === void 0) { params = []; }\n return t < 0.5\n ? (1 - ease(1 - t * 2, params, duration)) / 2\n : (ease(t * 2 - 1, params, duration) + 1) / 2;\n };\n};\nvar EasingFunctions = {\n steps: Steps,\n 'step-start': function (t) { return Steps(t, [1, 'start']); },\n 'step-end': function (t) { return Steps(t, [1, 'end']); },\n linear: function (t) { return t; },\n 'cubic-bezier': Bezier,\n ease: function (t) { return Bezier(t, [0.25, 0.1, 0.25, 1.0]); },\n in: easein,\n out: EaseOut(easein),\n 'in-out': EaseInOut(easein),\n 'out-in': EaseOutIn(easein),\n 'in-quad': Quad,\n 'out-quad': EaseOut(Quad),\n 'in-out-quad': EaseInOut(Quad),\n 'out-in-quad': EaseOutIn(Quad),\n 'in-cubic': Cubic,\n 'out-cubic': EaseOut(Cubic),\n 'in-out-cubic': EaseInOut(Cubic),\n 'out-in-cubic': EaseOutIn(Cubic),\n 'in-quart': Quart,\n 'out-quart': EaseOut(Quart),\n 'in-out-quart': EaseInOut(Quart),\n 'out-in-quart': EaseOutIn(Quart),\n 'in-quint': Quint,\n 'out-quint': EaseOut(Quint),\n 'in-out-quint': EaseInOut(Quint),\n 'out-in-quint': EaseOutIn(Quint),\n 'in-expo': Expo,\n 'out-expo': EaseOut(Expo),\n 'in-out-expo': EaseInOut(Expo),\n 'out-in-expo': EaseOutIn(Expo),\n 'in-sine': Sine,\n 'out-sine': EaseOut(Sine),\n 'in-out-sine': EaseInOut(Sine),\n 'out-in-sine': EaseOutIn(Sine),\n 'in-circ': Circ,\n 'out-circ': EaseOut(Circ),\n 'in-out-circ': EaseInOut(Circ),\n 'out-in-circ': EaseOutIn(Circ),\n 'in-back': Back,\n 'out-back': EaseOut(Back),\n 'in-out-back': EaseInOut(Back),\n 'out-in-back': EaseOutIn(Back),\n 'in-bounce': Bounce,\n 'out-bounce': EaseOut(Bounce),\n 'in-out-bounce': EaseInOut(Bounce),\n 'out-in-bounce': EaseOutIn(Bounce),\n 'in-elastic': Elastic,\n 'out-elastic': EaseOut(Elastic),\n 'in-out-elastic': EaseInOut(Elastic),\n 'out-in-elastic': EaseOutIn(Elastic),\n spring: Spring,\n 'spring-in': Spring,\n 'spring-out': EaseOut(Spring),\n 'spring-in-out': EaseInOut(Spring),\n 'spring-out-in': EaseOutIn(Spring),\n};\n/**\n * Convert string easing to their proper form\n */\nvar complexEasingSyntax = function (ease) {\n return convertToDash(ease)\n .replace(/^ease-/, '') // Remove the \"ease-\" keyword\n .replace(/(\\(|\\s).+/, '') // Remove the function brackets and parameters\n .toLowerCase()\n .trim();\n};\n/** Re-maps a number from one range to another. Numbers outside the range are not clamped to 0 and 1, because out-of-range values are often intentional and useful. */\nvar getEasingFunction = function (ease) {\n return EasingFunctions[complexEasingSyntax(ease)] || EasingFunctions.linear;\n};\n// /**\n// * Allows you to register new easing functions\n// */\n// export const registerEasingFunction = (key: string, fn: TypeEasingFunction) => {\n// Object.assign(EasingFunctions, {\n// [key]: fn,\n// });\n// };\n// /**\n// * Allows you to register multiple new easing functions\n// */\n// export const registerEasingFunctions = (...obj: typeof EasingFunctions[]) => {\n// Object.assign(EasingFunctions, ...obj);\n// };\n\nvar linear = function (x) {\n return x;\n};\nvar Start = 1;\nvar Middle = 0.5;\nvar End = 0;\nfunction step(count, pos) {\n return function (x) {\n if (x >= 1) {\n return 1;\n }\n var stepSize = 1 / count;\n x += pos * stepSize;\n return x - (x % stepSize);\n };\n}\nvar numberString = '\\\\s*(-?\\\\d+\\\\.?\\\\d*|-?\\\\.\\\\d+)\\\\s*';\nvar cubicBezierRe = new RegExp('cubic-bezier\\\\(' +\n numberString +\n ',' +\n numberString +\n ',' +\n numberString +\n ',' +\n numberString +\n '\\\\)');\nvar step1Re = /steps\\(\\s*(\\d+)\\s*\\)/;\nvar step2Re = /steps\\(\\s*(\\d+)\\s*,\\s*(start|middle|end)\\s*\\)/;\nfunction parseEasingFunction(normalizedEasing) {\n var cubicData = cubicBezierRe.exec(normalizedEasing);\n if (cubicData) {\n // @ts-ignore\n return bezier.apply(void 0, __spreadArray([], __read(cubicData.slice(1).map(Number)), false));\n }\n var step1Data = step1Re.exec(normalizedEasing);\n if (step1Data) {\n return step(Number(step1Data[1]), End);\n }\n var step2Data = step2Re.exec(normalizedEasing);\n if (step2Data) {\n // @ts-ignore\n return step(Number(step2Data[1]), { start: Start, middle: Middle, end: End }[step2Data[2]]);\n }\n return getEasingFunction(normalizedEasing);\n}\nfunction calculateActiveDuration(timing) {\n // @ts-ignore\n return Math.abs(repeatedDuration(timing) / (timing.playbackRate || 1));\n}\nfunction repeatedDuration(timing) {\n var _a;\n // https://drafts.csswg.org/web-animations/#calculating-the-active-duration\n if (timing.duration === 0 || timing.iterations === 0) {\n return 0;\n }\n // @see https://developer.mozilla.org/en-US/docs/Web/API/EffectTiming/duration#value\n // if (timing.duration === 'auto') {\n // timing.duration = 0;\n // }\n return (timing.duration === 'auto' ? 0 : Number(timing.duration)) * ((_a = timing.iterations) !== null && _a !== void 0 ? _a : 1);\n}\nvar PhaseNone = 0;\nvar PhaseBefore = 1;\nvar PhaseAfter = 2;\nvar PhaseActive = 3;\nfunction calculatePhase(activeDuration, localTime, timing) {\n // https://drafts.csswg.org/web-animations/#animation-effect-phases-and-states\n if (localTime === null) {\n return PhaseNone;\n }\n var endTime = timing.endTime;\n if (localTime < Math.min(timing.delay, endTime)) {\n return PhaseBefore;\n }\n if (localTime >= Math.min(timing.delay + activeDuration + timing.endDelay, endTime)) {\n return PhaseAfter;\n }\n return PhaseActive;\n}\nfunction calculateActiveTime(activeDuration, fillMode, localTime, phase, delay) {\n // https://drafts.csswg.org/web-animations/#calculating-the-active-time\n switch (phase) {\n case PhaseBefore:\n if (fillMode === 'backwards' || fillMode === 'both')\n return 0;\n return null;\n case PhaseActive:\n return localTime - delay;\n case PhaseAfter:\n if (fillMode === 'forwards' || fillMode === 'both')\n return activeDuration;\n return null;\n case PhaseNone:\n return null;\n }\n}\nfunction calculateOverallProgress(iterationDuration, phase, iterations, activeTime, iterationStart) {\n // https://drafts.csswg.org/web-animations/#calculating-the-overall-progress\n var overallProgress = iterationStart;\n if (iterationDuration === 0) {\n if (phase !== PhaseBefore) {\n overallProgress += iterations;\n }\n }\n else {\n overallProgress += activeTime / iterationDuration;\n }\n return overallProgress;\n}\nfunction calculateSimpleIterationProgress(overallProgress, iterationStart, phase, iterations, activeTime, iterationDuration) {\n // https://drafts.csswg.org/web-animations/#calculating-the-simple-iteration-progress\n var simpleIterationProgress = overallProgress === Infinity ? iterationStart % 1 : overallProgress % 1;\n if (simpleIterationProgress === 0 &&\n phase === PhaseAfter &&\n iterations !== 0 &&\n (activeTime !== 0 || iterationDuration === 0)) {\n simpleIterationProgress = 1;\n }\n return simpleIterationProgress;\n}\nfunction calculateCurrentIteration(phase, iterations, simpleIterationProgress, overallProgress) {\n // https://drafts.csswg.org/web-animations/#calculating-the-current-iteration\n if (phase === PhaseAfter && iterations === Infinity) {\n return Infinity;\n }\n if (simpleIterationProgress === 1) {\n return Math.floor(overallProgress) - 1;\n }\n return Math.floor(overallProgress);\n}\nfunction calculateDirectedProgress(playbackDirection, currentIteration, simpleIterationProgress) {\n // https://drafts.csswg.org/web-animations/#calculating-the-directed-progress\n var currentDirection = playbackDirection;\n if (playbackDirection !== 'normal' && playbackDirection !== 'reverse') {\n var d = currentIteration;\n if (playbackDirection === 'alternate-reverse') {\n d += 1;\n }\n currentDirection = 'normal';\n if (d !== Infinity && d % 2 !== 0) {\n currentDirection = 'reverse';\n }\n }\n if (currentDirection === 'normal') {\n return simpleIterationProgress;\n }\n return 1 - simpleIterationProgress;\n}\nfunction calculateIterationProgress(activeDuration, localTime, timing) {\n var phase = calculatePhase(activeDuration, localTime, timing);\n var activeTime = calculateActiveTime(activeDuration, timing.fill, localTime, phase, timing.delay);\n if (activeTime === null)\n return null;\n var duration = timing.duration === 'auto' ? 0 : timing.duration;\n var overallProgress = calculateOverallProgress(duration, phase, timing.iterations, activeTime, timing.iterationStart);\n var simpleIterationProgress = calculateSimpleIterationProgress(overallProgress, timing.iterationStart, phase, timing.iterations, activeTime, duration);\n var currentIteration = calculateCurrentIteration(phase, timing.iterations, simpleIterationProgress, overallProgress);\n var directedProgress = calculateDirectedProgress(timing.direction, currentIteration, simpleIterationProgress);\n timing.currentIteration = currentIteration;\n timing.progress = directedProgress;\n // https://drafts.csswg.org/web-animations/#calculating-the-transformed-progress\n // https://drafts.csswg.org/web-animations/#calculating-the-iteration-progress\n return timing.easingFunction(directedProgress);\n}\n\nfunction convertEffectInput(keyframes, timing, target) {\n var propertySpecificKeyframeGroups = makePropertySpecificKeyframeGroups(keyframes, timing);\n var interpolations = makeInterpolations(propertySpecificKeyframeGroups, target);\n return function (target, fraction) {\n if (fraction !== null) {\n interpolations\n .filter(function (interpolation) {\n return (fraction >= interpolation.applyFrom &&\n fraction < interpolation.applyTo);\n })\n .forEach(function (interpolation) {\n var offsetFraction = fraction - interpolation.startOffset;\n var localDuration = interpolation.endOffset - interpolation.startOffset;\n var scaledLocalTime = localDuration === 0\n ? 0\n : interpolation.easingFunction(offsetFraction / localDuration);\n // apply updated attribute\n target.setAttribute(interpolation.property, interpolation.interpolation(scaledLocalTime), false, false);\n // if (interpolation.property === 'visibility') {\n // console.log(\n // scaledLocalTime,\n // interpolation.interpolation(scaledLocalTime),\n // );\n // }\n });\n }\n else {\n for (var property in propertySpecificKeyframeGroups)\n if (isNotReservedWord(property)) {\n // clear attribute\n target.setAttribute(property, null);\n }\n }\n };\n}\nfunction isNotReservedWord(member) {\n return (member !== 'offset' &&\n member !== 'easing' &&\n member !== 'composite' &&\n member !== 'computedOffset');\n}\nfunction makePropertySpecificKeyframeGroups(keyframes, timing) {\n var propertySpecificKeyframeGroups = {};\n for (var i = 0; i < keyframes.length; i++) {\n for (var member in keyframes[i]) {\n if (isNotReservedWord(member)) {\n var propertySpecificKeyframe = {\n offset: keyframes[i].offset,\n computedOffset: keyframes[i].computedOffset,\n easing: keyframes[i].easing,\n easingFunction: parseEasingFunction(keyframes[i].easing) || timing.easingFunction,\n value: keyframes[i][member],\n };\n propertySpecificKeyframeGroups[member] =\n propertySpecificKeyframeGroups[member] || [];\n propertySpecificKeyframeGroups[member].push(propertySpecificKeyframe);\n }\n }\n }\n return propertySpecificKeyframeGroups;\n}\nfunction makeInterpolations(propertySpecificKeyframeGroups, target) {\n var interpolations = [];\n for (var groupName in propertySpecificKeyframeGroups) {\n var keyframes = propertySpecificKeyframeGroups[groupName];\n for (var i = 0; i < keyframes.length - 1; i++) {\n var startIndex = i;\n var endIndex = i + 1;\n var startOffset = keyframes[startIndex].computedOffset;\n var endOffset = keyframes[endIndex].computedOffset;\n var applyFrom = startOffset;\n var applyTo = endOffset;\n if (i === 0) {\n applyFrom = -Infinity;\n if (endOffset === 0) {\n endIndex = startIndex;\n }\n }\n if (i === keyframes.length - 2) {\n applyTo = Infinity;\n if (startOffset === 1) {\n startIndex = endIndex;\n }\n }\n interpolations.push({\n applyFrom: applyFrom,\n applyTo: applyTo,\n startOffset: keyframes[startIndex].computedOffset,\n endOffset: keyframes[endIndex].computedOffset,\n easingFunction: keyframes[startIndex].easingFunction,\n property: groupName,\n interpolation: propertyInterpolation(groupName, keyframes[startIndex].value, keyframes[endIndex].value, target),\n });\n }\n }\n interpolations.sort(function (leftInterpolation, rightInterpolation) {\n return leftInterpolation.startOffset - rightInterpolation.startOffset;\n });\n return interpolations;\n}\nvar InterpolationFactory = function (from, to, \n// eslint-disable-next-line @typescript-eslint/ban-types\nconvertToString) {\n return function (f) {\n var interpolated = interpolate(from, to, f);\n return !runtime.enableCSSParsing && isNumber(interpolated)\n ? interpolated\n : convertToString(interpolated);\n };\n};\nfunction propertyInterpolation(property, left, right, target) {\n var metadata = propertyMetadataCache[property];\n // discrete step\n // if (property === 'visibility') {\n // return function (t: number) {\n // if (t === 0) return left;\n // if (t === 1) return right;\n // debugger;\n // return t < 0.5 ? left : right;\n // };\n // }\n if (metadata && metadata.syntax && metadata.int) {\n var propertyHandler = runtime.styleValueRegistry.getPropertySyntax(metadata.syntax);\n if (propertyHandler) {\n var usedLeft = void 0;\n var usedRight = void 0;\n if (runtime.enableCSSParsing) {\n var computedLeft = runtime.styleValueRegistry.parseProperty(property, left, target, false);\n var computedRight = runtime.styleValueRegistry.parseProperty(property, right, target, false);\n usedLeft = runtime.styleValueRegistry.computeProperty(property, computedLeft, target, false);\n usedRight = runtime.styleValueRegistry.computeProperty(property, computedRight, target, false);\n }\n else {\n var parser = propertyHandler.parserWithCSSDisabled;\n usedLeft = parser ? parser(left, target) : left;\n usedRight = parser ? parser(right, target) : right;\n }\n // merger [left, right, n2string()]\n var interpolationArgs = propertyHandler.mixer(usedLeft, usedRight, target);\n if (interpolationArgs) {\n var interp_1 = InterpolationFactory.apply(void 0, __spreadArray([], __read(interpolationArgs), false));\n return function (t) {\n if (t === 0)\n return left;\n if (t === 1)\n return right;\n return interp_1(t);\n };\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return InterpolationFactory(false, true, function (bool) {\n return bool ? right : left;\n });\n}\n/**\n * interpolate with number, boolean, number[], boolean[]\n */\nfunction interpolate(from, to, f) {\n if (typeof from === 'number' && typeof to === 'number') {\n return from * (1 - f) + to * f;\n }\n if ((typeof from === 'boolean' && typeof to === 'boolean') ||\n (typeof from === 'string' && typeof to === 'string') // skip string, eg. path ['M', 10, 10]\n ) {\n return f < 0.5 ? from : to;\n }\n if (Array.isArray(from) && Array.isArray(to)) {\n // interpolate arrays/matrix\n var fromLength = from.length;\n var toLength = to.length;\n var length_1 = Math.max(fromLength, toLength);\n var r = [];\n for (var i = 0; i < length_1; i++) {\n r.push(interpolate(from[i < fromLength ? i : fromLength - 1], to[i < toLength ? i : toLength - 1], f));\n }\n return r;\n }\n throw new Error('Mismatched interpolation arguments ' + from + ':' + to);\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EffectTiming\n */\nvar AnimationEffectTiming = /** @class */ (function () {\n function AnimationEffectTiming() {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EffectTiming/delay\n */\n this.delay = 0;\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EffectTiming/direction\n */\n this.direction = 'normal';\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EffectTiming/duration\n */\n this.duration = 'auto';\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EffectTiming/easing\n */\n this._easing = 'linear';\n this.easingFunction = linear;\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EffectTiming/endDelay\n */\n this.endDelay = 0;\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EffectTiming/fill\n */\n this.fill = 'auto';\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EffectTiming/iterationStart\n */\n this.iterationStart = 0;\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EffectTiming/iterations\n */\n this.iterations = 1;\n this.currentIteration = null;\n this.progress = null;\n }\n Object.defineProperty(AnimationEffectTiming.prototype, \"easing\", {\n get: function () {\n return this._easing;\n },\n set: function (value) {\n this.easingFunction = parseEasingFunction(value);\n this._easing = value;\n },\n enumerable: false,\n configurable: true\n });\n return AnimationEffectTiming;\n}());\n\n/**\n * @example\n {\n translateY: [200, 300],\n scale: [1, 10],\n }\n\n * groups' length can be different, the following config should generate 3 frames:\n @example\n {\n translateY: [200, 300, 400],\n scale: [1, 10],\n }\n */\nfunction convertToArrayForm(effectInput) {\n var normalizedEffectInput = [];\n for (var property in effectInput) {\n // skip reserved props\n if (property in ['easing', 'offset', 'composite']) {\n continue;\n }\n // @ts-ignore\n var values = effectInput[property];\n if (!Array.isArray(values)) {\n values = [values];\n }\n var numKeyframes = values.length;\n for (var i = 0; i < numKeyframes; i++) {\n if (!normalizedEffectInput[i]) {\n var keyframe = {};\n if ('offset' in effectInput) {\n keyframe.offset = Number(effectInput.offset);\n }\n if ('easing' in effectInput) {\n // @ts-ignore\n keyframe.easing = effectInput.easing;\n }\n if ('composite' in effectInput) {\n // @ts-ignore\n keyframe.composite = effectInput.composite;\n }\n normalizedEffectInput[i] = keyframe;\n }\n if (values[i] !== undefined && values[i] !== null) {\n normalizedEffectInput[i][property] = values[i];\n }\n }\n }\n normalizedEffectInput.sort(function (a, b) {\n return (a.computedOffset || 0) - (b.computedOffset || 0);\n });\n return normalizedEffectInput;\n}\nfunction normalizeKeyframes(effectInput, timing) {\n if (effectInput === null) {\n return [];\n }\n if (!Array.isArray(effectInput)) {\n effectInput = convertToArrayForm(effectInput);\n }\n var keyframes = effectInput.map(function (originalKeyframe) {\n var keyframe = {};\n if (timing === null || timing === void 0 ? void 0 : timing.composite) {\n // This will be auto if the composite operation specified on the effect is being used.\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API/Keyframe_Formats\n keyframe.composite = 'auto';\n }\n for (var member in originalKeyframe) {\n var memberValue = originalKeyframe[member];\n if (member === 'offset') {\n if (memberValue !== null) {\n memberValue = Number(memberValue);\n if (!isFinite(memberValue))\n throw new Error('Keyframe offsets must be numbers.');\n if (memberValue < 0 || memberValue > 1)\n throw new Error('Keyframe offsets must be between 0 and 1.');\n keyframe.computedOffset = memberValue;\n }\n }\n else if (member === 'composite') {\n // TODO: Support add & accumulate in KeyframeEffect.composite\n // @see https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect/composite\n if (['replace', 'add', 'accumulate', 'auto'].indexOf(memberValue) === -1) {\n throw new Error(\"\".concat(memberValue, \" compositing is not supported\"));\n }\n }\n else ;\n // assign to keyframe, no need to parse shorthand value\n keyframe[member] = memberValue;\n }\n if (keyframe.offset === undefined) {\n keyframe.offset = null;\n }\n if (keyframe.easing === undefined) {\n // override with timing.easing\n keyframe.easing = (timing === null || timing === void 0 ? void 0 : timing.easing) || 'linear';\n }\n if (keyframe.composite === undefined) {\n keyframe.composite = 'auto';\n }\n return keyframe;\n });\n var everyFrameHasOffset = true;\n var previousOffset = -Infinity;\n for (var i = 0; i < keyframes.length; i++) {\n var offset = keyframes[i].offset;\n if (!isNil(offset)) {\n if (offset < previousOffset) {\n throw new TypeError('Keyframes are not loosely sorted by offset. Sort or specify offsets.');\n }\n previousOffset = offset;\n }\n else {\n everyFrameHasOffset = false;\n }\n }\n keyframes = keyframes.filter(function (keyframe) {\n return Number(keyframe.offset) >= 0 && Number(keyframe.offset) <= 1;\n });\n function spaceKeyframes() {\n var _a, _b;\n var length = keyframes.length;\n keyframes[length - 1].computedOffset = Number((_a = keyframes[length - 1].offset) !== null && _a !== void 0 ? _a : 1);\n if (length > 1) {\n keyframes[0].computedOffset = Number((_b = keyframes[0].offset) !== null && _b !== void 0 ? _b : 0);\n }\n var previousIndex = 0;\n var previousOffset = Number(keyframes[0].computedOffset);\n for (var i = 1; i < length; i++) {\n var offset = keyframes[i].computedOffset;\n if (!isNil(offset) && !isNil(previousOffset)) {\n for (var j = 1; j < i - previousIndex; j++)\n keyframes[previousIndex + j].computedOffset =\n previousOffset + ((Number(offset) - previousOffset) * j) / (i - previousIndex);\n previousIndex = i;\n previousOffset = Number(offset);\n }\n }\n }\n if (!everyFrameHasOffset)\n spaceKeyframes();\n return keyframes;\n}\n\nvar fills = 'backwards|forwards|both|none'.split('|');\nvar directions = 'reverse|alternate|alternate-reverse'.split('|');\nfunction makeTiming(timingInput, forGroup) {\n var timing = new AnimationEffectTiming();\n if (forGroup) {\n timing.fill = 'both';\n timing.duration = 'auto';\n }\n if (typeof timingInput === 'number' && !isNaN(timingInput)) {\n timing.duration = timingInput;\n }\n else if (timingInput !== undefined) {\n Object.keys(timingInput).forEach(function (property) {\n if (timingInput[property] !== undefined &&\n timingInput[property] !== null &&\n timingInput[property] !== 'auto') {\n if (typeof timing[property] === 'number' || property === 'duration') {\n if (typeof timingInput[property] !== 'number' ||\n isNaN(timingInput[property])) {\n return;\n }\n }\n if (property === 'fill' &&\n fills.indexOf(timingInput[property]) === -1) {\n return;\n }\n if (property === 'direction' &&\n directions.indexOf(timingInput[property]) === -1) {\n return;\n }\n // @ts-ignore\n timing[property] = timingInput[property];\n }\n });\n }\n return timing;\n}\nfunction normalizeTimingInput(timingInput, forGroup) {\n timingInput = numericTimingToObject(timingInput !== null && timingInput !== void 0 ? timingInput : { duration: 'auto' });\n return makeTiming(timingInput, forGroup);\n}\nfunction numericTimingToObject(timingInput) {\n if (typeof timingInput === 'number') {\n if (isNaN(timingInput)) {\n timingInput = { duration: 'auto' };\n }\n else {\n timingInput = { duration: timingInput };\n }\n }\n return timingInput;\n}\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect\n * @example\n const circleDownKeyframes = new KeyframeEffect(\n circle, // element to animate\n [\n { transform: 'translateY(0)' }, // keyframe\n { transform: 'translateY(100)' } // keyframe\n ],\n { duration: 3000, fill: 'forwards' } // keyframe options\n );\n *\n */\nvar KeyframeEffect = /** @class */ (function () {\n function KeyframeEffect(target, effectInput, timingInput) {\n var _this = this;\n this.composite = 'replace';\n this.iterationComposite = 'replace';\n this.target = target;\n this.timing = normalizeTimingInput(timingInput, false);\n this.timing.effect = this;\n this.timing.activeDuration = calculateActiveDuration(this.timing);\n this.timing.endTime = Math.max(0, this.timing.delay + this.timing.activeDuration + this.timing.endDelay);\n this.normalizedKeyframes = normalizeKeyframes(effectInput, this.timing);\n this.interpolations = convertEffectInput(this.normalizedKeyframes, this.timing, this.target);\n // 不支持 proxy 时降级成 this.timing\n var Proxy = runtime.globalThis.Proxy;\n this.computedTiming = Proxy\n ? new Proxy(this.timing, {\n get: function (target, prop) {\n if (prop === 'duration') {\n return target.duration === 'auto' ? 0 : target.duration;\n }\n else if (prop === 'fill') {\n return target.fill === 'auto' ? 'none' : target.fill;\n }\n else if (prop === 'localTime') {\n return (_this.animation && _this.animation.currentTime) || null;\n }\n else if (prop === 'currentIteration') {\n if (!_this.animation || _this.animation.playState !== 'running') {\n return null;\n }\n return target.currentIteration || 0;\n }\n else if (prop === 'progress') {\n if (!_this.animation || _this.animation.playState !== 'running') {\n return null;\n }\n return target.progress || 0;\n }\n return target[prop];\n },\n set: function () {\n return true;\n },\n })\n : this.timing;\n }\n KeyframeEffect.prototype.applyInterpolations = function () {\n this.interpolations(this.target, Number(this.timeFraction));\n };\n KeyframeEffect.prototype.update = function (localTime) {\n if (localTime === null) {\n return false;\n }\n this.timeFraction = calculateIterationProgress(this.timing.activeDuration, localTime, this.timing);\n return this.timeFraction !== null;\n };\n KeyframeEffect.prototype.getKeyframes = function () {\n return this.normalizedKeyframes;\n };\n KeyframeEffect.prototype.setKeyframes = function (keyframes) {\n this.normalizedKeyframes = normalizeKeyframes(keyframes);\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEffect/getComputedTiming\n */\n KeyframeEffect.prototype.getComputedTiming = function () {\n return this.computedTiming;\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEffect/getTiming\n */\n KeyframeEffect.prototype.getTiming = function () {\n return this.timing;\n };\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEffect/updateTiming\n */\n KeyframeEffect.prototype.updateTiming = function (timing) {\n var _this = this;\n Object.keys(timing || {}).forEach(function (name) {\n _this.timing[name] = timing[name];\n });\n };\n return KeyframeEffect;\n}());\n\nfunction compareAnimations(leftAnimation, rightAnimation) {\n return Number(leftAnimation.id) - Number(rightAnimation.id);\n}\n/**\n * @see https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/web-animations-js/index.d.ts\n */\nvar AnimationTimeline = /** @class */ (function () {\n function AnimationTimeline(document) {\n var _this = this;\n this.document = document;\n /**\n * all active animations\n */\n this.animations = [];\n this.ticking = false;\n this.timelineTicking = false;\n this.hasRestartedThisFrame = false;\n this.animationsWithPromises = [];\n this.inTick = false;\n this.pendingEffects = [];\n this.currentTime = null;\n this.rafId = 0;\n this.rafCallbacks = [];\n this.webAnimationsNextTick = function (t) {\n _this.currentTime = t;\n _this.discardAnimations();\n if (_this.animations.length === 0) {\n _this.timelineTicking = false;\n }\n else {\n _this.requestAnimationFrame(_this.webAnimationsNextTick);\n }\n };\n this.processRafCallbacks = function (t) {\n var processing = _this.rafCallbacks;\n _this.rafCallbacks = [];\n if (t < Number(_this.currentTime))\n t = Number(_this.currentTime);\n _this.animations.sort(compareAnimations);\n _this.animations = _this.tick(t, true, _this.animations)[0];\n processing.forEach(function (entry) {\n entry[1](t);\n });\n _this.applyPendingEffects();\n };\n }\n AnimationTimeline.prototype.getAnimations = function () {\n this.discardAnimations();\n return this.animations.slice();\n };\n AnimationTimeline.prototype.isTicking = function () {\n return this.inTick;\n };\n AnimationTimeline.prototype.play = function (target, keyframes, options) {\n var effect = new KeyframeEffect(target, keyframes, options);\n var animation = new Animation(effect, this);\n this.animations.push(animation);\n this.restartWebAnimationsNextTick();\n animation.updatePromises();\n animation.play();\n animation.updatePromises();\n return animation;\n };\n // RAF is supposed to be the last script to occur before frame rendering but not\n // all browsers behave like this. This function is for synchonously updating an\n // animation's effects whenever its state is mutated by script to work around\n // incorrect script execution ordering by the browser.\n AnimationTimeline.prototype.applyDirtiedAnimation = function (animation) {\n var _this = this;\n if (this.inTick) {\n return;\n }\n // update active animations in displayobject\n animation.markTarget();\n var animations = animation.targetAnimations();\n animations.sort(compareAnimations);\n // clear inactive animations\n var inactiveAnimations = this.tick(Number(this.currentTime), false, animations.slice())[1];\n inactiveAnimations.forEach(function (animation) {\n var index = _this.animations.indexOf(animation);\n if (index !== -1) {\n _this.animations.splice(index, 1);\n }\n });\n this.applyPendingEffects();\n };\n AnimationTimeline.prototype.restart = function () {\n if (!this.ticking) {\n this.ticking = true;\n this.requestAnimationFrame(function () { });\n this.hasRestartedThisFrame = true;\n }\n return this.hasRestartedThisFrame;\n };\n AnimationTimeline.prototype.destroy = function () {\n this.document.defaultView.cancelAnimationFrame(this.frameId);\n };\n AnimationTimeline.prototype.applyPendingEffects = function () {\n this.pendingEffects.forEach(function (effect) {\n effect === null || effect === void 0 ? void 0 : effect.applyInterpolations();\n });\n this.pendingEffects = [];\n };\n AnimationTimeline.prototype.updateAnimationsPromises = function () {\n this.animationsWithPromises = this.animationsWithPromises.filter(function (animation) {\n return animation.updatePromises();\n });\n };\n AnimationTimeline.prototype.discardAnimations = function () {\n this.updateAnimationsPromises();\n this.animations = this.animations.filter(function (animation) {\n return animation.playState !== 'finished' && animation.playState !== 'idle';\n });\n };\n AnimationTimeline.prototype.restartWebAnimationsNextTick = function () {\n if (!this.timelineTicking) {\n this.timelineTicking = true;\n this.requestAnimationFrame(this.webAnimationsNextTick);\n }\n };\n AnimationTimeline.prototype.rAF = function (f) {\n var id = this.rafId++;\n if (this.rafCallbacks.length === 0) {\n this.frameId = this.document.defaultView.requestAnimationFrame(this.processRafCallbacks);\n }\n this.rafCallbacks.push([id, f]);\n return id;\n };\n AnimationTimeline.prototype.requestAnimationFrame = function (f) {\n var _this = this;\n return this.rAF(function (x) {\n _this.updateAnimationsPromises();\n f(x);\n _this.updateAnimationsPromises();\n });\n };\n AnimationTimeline.prototype.tick = function (t, isAnimationFrame, updatingAnimations) {\n var _a, _b;\n var _this = this;\n this.inTick = true;\n this.hasRestartedThisFrame = false;\n this.currentTime = t;\n this.ticking = false;\n var newPendingClears = [];\n var newPendingEffects = [];\n var activeAnimations = [];\n var inactiveAnimations = [];\n updatingAnimations.forEach(function (animation) {\n animation.tick(t, isAnimationFrame);\n if (!animation._inEffect) {\n newPendingClears.push(animation.effect);\n animation.unmarkTarget();\n }\n else {\n newPendingEffects.push(animation.effect);\n animation.markTarget();\n }\n if (animation._needsTick)\n _this.ticking = true;\n var alive = animation._inEffect || animation._needsTick;\n animation._inTimeline = alive;\n if (alive) {\n activeAnimations.push(animation);\n }\n else {\n inactiveAnimations.push(animation);\n }\n });\n (_a = this.pendingEffects).push.apply(_a, __spreadArray([], __read(newPendingClears), false));\n (_b = this.pendingEffects).push.apply(_b, __spreadArray([], __read(newPendingEffects), false));\n if (this.ticking)\n this.requestAnimationFrame(function () { });\n this.inTick = false;\n return [activeAnimations, inactiveAnimations];\n };\n return AnimationTimeline;\n}());\n\nruntime.EasingFunction = parseEasingFunction;\nruntime.AnimationTimeline = AnimationTimeline;\n\nexport { Animation, AnimationEvent, AnimationTimeline, EasingFunctions, KeyframeEffect, compareAnimations, makeTiming, normalizeKeyframes, normalizeTimingInput, numericTimingToObject };\n//# sourceMappingURL=index.esm.js.map\n","import { Group, Rect, Circle, Path, Text, Ellipse, Image, Line, Polygon, Polyline, HTML, } from '@antv/g';\nimport { group } from 'd3-array';\nimport { error } from './helper';\nexport function select(node) {\n return new Selection([node], null, node, node.ownerDocument);\n}\n/**\n * A simple implementation of d3-selection for @antv/g.\n * It has the core features of d3-selection and extended ability.\n * Every methods of selection returns new selection if elements\n * are mutated(e.g. append, remove), otherwise return the selection itself(e.g. attr, style).\n * @see https://github.com/d3/d3-selection\n * @see https://github.com/antvis/g\n * @todo Nested selections.\n * @todo More useful functor.\n */\nexport class Selection {\n constructor(elements = null, data = null, parent = null, document = null, selections = [\n null,\n null,\n null,\n null,\n null,\n ], transitions = [], updateElements = []) {\n this._elements = Array.from(elements);\n this._data = data;\n this._parent = parent;\n this._document = document;\n this._enter = selections[0];\n this._update = selections[1];\n this._exit = selections[2];\n this._merge = selections[3];\n this._split = selections[4];\n this._transitions = transitions;\n this._facetElements = updateElements;\n }\n selectAll(selector) {\n const elements = typeof selector === 'string'\n ? this._parent.querySelectorAll(selector)\n : selector;\n return new Selection(elements, null, this._elements[0], this._document);\n }\n selectFacetAll(selector) {\n const elements = typeof selector === 'string'\n ? this._parent.querySelectorAll(selector)\n : selector;\n return new Selection(this._elements, null, this._parent, this._document, undefined, undefined, elements);\n }\n /**\n * @todo Replace with querySelector which has bug now.\n */\n select(selector) {\n const element = typeof selector === 'string'\n ? this._parent.querySelectorAll(selector)[0] || null\n : selector;\n return new Selection([element], null, element, this._document);\n }\n append(node) {\n const callback = typeof node === 'function' ? node : () => this.createElement(node);\n const elements = [];\n if (this._data !== null) {\n // For empty selection, append new element to parent.\n // Each element is bind with datum.\n for (let i = 0; i < this._data.length; i++) {\n const d = this._data[i];\n const [datum, from] = Array.isArray(d) ? d : [d, null];\n const newElement = callback(datum, i);\n newElement.__data__ = datum;\n if (from !== null)\n newElement.__fromElements__ = from;\n this._parent.appendChild(newElement);\n elements.push(newElement);\n }\n return new Selection(elements, null, this._parent, this._document);\n }\n else {\n // For non-empty selection, append new element to\n // selected element and return new selection.\n for (let i = 0; i < this._elements.length; i++) {\n const element = this._elements[i];\n const datum = element.__data__;\n const newElement = callback(datum, i);\n element.appendChild(newElement);\n elements.push(newElement);\n }\n return new Selection(elements, null, elements[0], this._document);\n }\n }\n maybeAppend(id, node, className) {\n const element = this._elements[0];\n const child = element.getElementById(id);\n if (child) {\n return new Selection([child], null, this._parent, this._document);\n }\n const newChild = typeof node === 'string' ? this.createElement(node) : node();\n newChild.id = id;\n if (className)\n newChild.className = className;\n element.appendChild(newChild);\n return new Selection([newChild], null, this._parent, this._document);\n }\n /**\n * Bind data to elements, and produce three selection:\n * Enter: Selection with empty elements and data to be bind to elements.\n * Update: Selection with elements to be updated.\n * Exit: Selection with elements to be removed.\n */\n data(data, id = (d) => d, groupId = () => null) {\n // An Array of new data.\n const enter = [];\n // An Array of elements to be updated.\n const update = [];\n // A Set of elements to be removed.\n const exit = new Set(this._elements);\n // An Array of data to be merged into one element.\n const merge = [];\n // A Set of elements to be split into multiple datum.\n const split = new Set();\n // A Map from key to each element.\n const keyElement = new Map(this._elements.map((d, i) => [id(d.__data__, i), d]));\n // A Map from key to exist element. The Update Selection\n // can get element from this map, this is for diff among\n // facets.\n const keyUpdateElement = new Map(this._facetElements.map((d, i) => [id(d.__data__, i), d]));\n // A Map from groupKey to a group of elements.\n const groupKeyElements = group(this._elements, (d) => groupId(d.__data__));\n // Diff data with selection(elements with data).\n // !!! Note\n // The switch is strictly ordered, not not change the order of them.\n for (let i = 0; i < data.length; i++) {\n const datum = data[i];\n const key = id(datum, i);\n const groupKey = groupId(datum, i);\n // Append element to update selection if incoming data has\n // exactly the same key with elements.\n if (keyElement.has(key)) {\n const element = keyElement.get(key);\n element.__data__ = datum;\n element.__facet__ = false;\n update.push(element);\n exit.delete(element);\n keyElement.delete(key);\n // Append element to update selection if incoming data has\n // exactly the same key with updateElements.\n }\n else if (keyUpdateElement.has(key)) {\n const element = keyUpdateElement.get(key);\n element.__data__ = datum;\n // Flag this element should update its parentNode.\n element.__facet__ = true;\n update.push(element);\n keyUpdateElement.delete(key);\n // Append datum to merge selection if existed elements has\n // its key as groupKey.\n }\n else if (groupKeyElements.has(key)) {\n const group = groupKeyElements.get(key);\n merge.push([datum, group]);\n for (const element of group)\n exit.delete(element);\n groupKeyElements.delete(key);\n // Append element to split selection if incoming data has\n // groupKey as its key, and bind to datum for it.\n }\n else if (keyElement.has(groupKey)) {\n const element = keyElement.get(groupKey);\n if (element.__toData__)\n element.__toData__.push(datum);\n else\n element.__toData__ = [datum];\n split.add(element);\n exit.delete(element);\n }\n else {\n // @todo Data with non-unique key.\n enter.push(datum);\n }\n }\n // Create new selection with enter, update and exit.\n const S = [\n new Selection([], enter, this._parent, this._document),\n new Selection(update, null, this._parent, this._document),\n new Selection(exit, null, this._parent, this._document),\n new Selection([], merge, this._parent, this._document),\n new Selection(split, null, this._parent, this._document),\n ];\n return new Selection(this._elements, null, this._parent, this._document, S);\n }\n merge(other) {\n const elements = [...this._elements, ...other._elements];\n const transitions = [...this._transitions, ...other._transitions];\n return new Selection(elements, null, this._parent, this._document, undefined, transitions);\n }\n createElement(type) {\n if (this._document) {\n return this._document.createElement(type, {});\n }\n const Ctor = Selection.registry[type];\n if (Ctor)\n return new Ctor();\n return error(`Unknown node type: ${type}`);\n }\n /**\n * Apply callback for each selection(enter, update, exit)\n * and merge them into one selection.\n */\n join(enter = (d) => d, update = (d) => d, exit = (d) => d.remove(), merge = (d) => d, split = (d) => d.remove()) {\n const newEnter = enter(this._enter);\n const newUpdate = update(this._update);\n const newExit = exit(this._exit);\n const newMerge = merge(this._merge);\n const newSplit = split(this._split);\n return newUpdate\n .merge(newEnter)\n .merge(newExit)\n .merge(newMerge)\n .merge(newSplit);\n }\n remove() {\n // Remove node immediately if there is no transition,\n // otherwise wait until transition finished.\n for (let i = 0; i < this._elements.length; i++) {\n const transition = this._transitions[i];\n if (transition) {\n const T = Array.isArray(transition) ? transition : [transition];\n Promise.all(T.map((d) => d.finished)).then(() => {\n const element = this._elements[i];\n element.remove();\n });\n }\n else {\n const element = this._elements[i];\n element.remove();\n }\n }\n return new Selection([], null, this._parent, this._document, undefined, this._transitions);\n }\n each(callback) {\n for (let i = 0; i < this._elements.length; i++) {\n const element = this._elements[i];\n const datum = element.__data__;\n callback(datum, i, element);\n }\n return this;\n }\n attr(key, value) {\n const callback = typeof value !== 'function' ? () => value : value;\n return this.each(function (d, i, element) {\n if (value !== undefined)\n element[key] = callback(d, i, element);\n });\n }\n style(key, value) {\n const callback = typeof value !== 'function' ? () => value : value;\n return this.each(function (d, i, element) {\n if (value !== undefined)\n element.style[key] = callback(d, i, element);\n });\n }\n transition(value) {\n const callback = typeof value !== 'function' ? () => value : value;\n const { _transitions: T } = this;\n return this.each(function (d, i, element) {\n T[i] = callback(d, i, element);\n });\n }\n on(event, handler) {\n this.each(function (d, i, element) {\n element.addEventListener(event, handler);\n });\n return this;\n }\n call(callback, ...args) {\n callback(this, ...args);\n return this;\n }\n node() {\n return this._elements[0];\n }\n nodes() {\n return this._elements;\n }\n transitions() {\n return this._transitions;\n }\n parent() {\n return this._parent;\n }\n}\nSelection.registry = {\n g: Group,\n rect: Rect,\n circle: Circle,\n path: Path,\n text: Text,\n ellipse: Ellipse,\n image: Image,\n line: Line,\n polygon: Polygon,\n polyline: Polyline,\n html: HTML,\n};\n//# sourceMappingURL=selection.js.map","/**\n * Clamp number within the inclusive range within the lower and upper bounds.\n */\nexport function clamp(v, lower, upper) {\n return Math.max(lower, Math.min(v, upper));\n}\n/**\n * Precision conversion\n */\nexport function prettyNumber(n, precision = 10) {\n if (typeof n !== 'number')\n return n;\n return Math.abs(n) < 1e-15 ? n : parseFloat(n.toFixed(precision));\n}\n//# sourceMappingURL=number.js.map","import { Linear } from '@antv/scale';\nimport { isNumber, lowerFirst } from '@antv/util';\nimport { extent } from 'd3-array';\nimport { indexOf } from '../utils/array';\nimport { isPolar, isTranspose } from '../utils/coordinate';\nimport { angle, angleWithQuadrant, dist, sub } from '../utils/vector';\nexport function applyStyle(selection, style) {\n for (const [key, value] of Object.entries(style)) {\n selection.style(key, value);\n }\n}\n/**\n * Draw polygon path with points.\n * @param path\n * @param points\n */\nexport function appendPolygon(path, points) {\n points.forEach((p, idx) => idx === 0 ? path.moveTo(p[0], p[1]) : path.lineTo(p[0], p[1]));\n path.closePath();\n return path;\n}\n/**\n * Draw arrow between `from` and `to`.\n * @param from\n * @param to\n * @returns\n */\nexport function arrowPoints(from, to, options) {\n const { arrowSize } = options;\n const size = typeof arrowSize === 'string'\n ? (+parseFloat(arrowSize) / 100) * dist(from, to)\n : arrowSize;\n // TODO Use config from style.\n // Default arrow rotate is 30°.\n const arrowAngle = Math.PI / 6;\n const angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n const arrowAngle1 = Math.PI / 2 - angle - arrowAngle;\n const arrow1 = [\n to[0] - size * Math.sin(arrowAngle1),\n to[1] - size * Math.cos(arrowAngle1),\n ];\n const arrowAngle2 = angle - arrowAngle;\n const arrow2 = [\n to[0] - size * Math.cos(arrowAngle2),\n to[1] - size * Math.sin(arrowAngle2),\n ];\n return [arrow1, arrow2];\n}\n/**\n * Draw arc by from -> to, with center and radius.\n * @param path\n * @param from\n * @param to\n * @param center\n * @param radius\n */\nexport function appendArc(path, from, to, center, radius) {\n const startAngle = angle(sub(center, from)) + Math.PI;\n const endAngle = angle(sub(center, to)) + Math.PI;\n path.arc(center[0], center[1], radius, startAngle, endAngle, endAngle - startAngle < 0);\n return path;\n}\n/**\n * @todo Fix wrong key point.\n */\nexport function computeGradient(C, X, Y, from = 'y', mode = 'between', tpShape = false) {\n // The angles of gradients rendering are varies when 'from' and 'tpShape' are different.\n const getTheta = (from, tpShape) => {\n if (from === 'y' || from === true) {\n if (tpShape) {\n return 180;\n }\n else {\n return 90;\n }\n }\n else {\n if (tpShape) {\n return 90;\n }\n else {\n return 0;\n }\n }\n };\n const P = from === 'y' || from === true ? Y : X;\n const theta = getTheta(from, tpShape);\n const I = indexOf(P);\n const [min, max] = extent(I, (i) => P[i]);\n // This need to improve for non-uniform distributed colors.\n const p = new Linear({\n domain: [min, max],\n range: [0, 100],\n });\n const percentage = (i) => isNumber(P[i]) && !Number.isNaN(P[i]) ? p.map(P[i]) : 0;\n const gradientMode = {\n // Interpolate the colors for this segment.\n between: (i) => `${C[i]} ${percentage(i)}%`,\n // Use the color of the start point as the color for this segment.\n start: (i) => i === 0\n ? `${C[i]} ${percentage(i)}%`\n : `${C[i - 1]} ${percentage(i)}%, ${C[i]} ${percentage(i)}%`,\n // Use the color of the end point as the color for this segment.\n end: (i) => i === C.length - 1\n ? `${C[i]} ${percentage(i)}%`\n : `${C[i]} ${percentage(i)}%, ${C[i + 1]} ${percentage(i)}%`,\n };\n const gradient = I.sort((a, b) => percentage(a) - percentage(b))\n .map(gradientMode[mode] || gradientMode['between'])\n .join(',');\n return `linear-gradient(${theta}deg, ${gradient})`;\n}\nexport function reorder(points) {\n const [p0, p1, p2, p3] = points;\n return [p3, p0, p1, p2];\n}\nexport function getArcObject(coordinate, points, Y) {\n const [p0, p1, , p3] = isTranspose(coordinate) ? reorder(points) : points;\n const [y, y1] = Y;\n const center = coordinate.getCenter();\n const a1 = angleWithQuadrant(sub(p0, center));\n const a2 = angleWithQuadrant(sub(p1, center));\n // There are two situations that a2 === a1:\n // 1. a1 - a2 = 0\n // 2. |a1 - a2| = Math.PI * 2\n // Distinguish them by y and y1:\n const a3 = a2 === a1 && y !== y1 ? a2 + Math.PI * 2 : a2;\n return {\n startAngle: a1,\n endAngle: a3 - a1 >= 0 ? a3 : Math.PI * 2 + a3,\n innerRadius: dist(p3, center),\n outerRadius: dist(p0, center),\n };\n}\n/**\n * Pick connectStyle from style.\n * @param style\n */\nexport function getConnectStyle(style) {\n const PREFIX = 'connect';\n return Object.fromEntries(Object.entries(style)\n .filter(([key]) => key.startsWith(PREFIX))\n .map(([key, value]) => [\n lowerFirst(key.replace(PREFIX, '').trim()),\n value,\n ])\n .filter(([key]) => key !== undefined));\n}\nexport function toOpacityKey(options) {\n const { colorAttribute, opacityAttribute = colorAttribute } = options;\n return `${opacityAttribute}Opacity`;\n}\nexport function getTransform(coordinate, value) {\n if (!isPolar(coordinate))\n return '';\n const center = coordinate.getCenter();\n const { transform: suffix } = value;\n return `translate(${center[0]}, ${center[1]}) ${suffix || ''}`;\n}\nexport function getOrigin(points) {\n if (points.length === 1)\n return points[0];\n const [[x0, y0, z0 = 0], [x2, y2, z2 = 0]] = points;\n return [(x0 + x2) / 2, (y0 + y2) / 2, (z0 + z2) / 2];\n}\n//# sourceMappingURL=utils.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { arc } from 'd3-shape';\nimport { isPolar, isHelix, isTranspose } from '../../utils/coordinate';\nimport { select } from '../../utils/selection';\nimport { sub } from '../../utils/vector';\nimport { clamp } from '../../utils/number';\nimport { applyStyle, getArcObject, reorder, toOpacityKey } from '../utils';\n// Render rect in different coordinate.\nexport function rect(document, points, value, coordinate, style = {}) {\n const { inset = 0, radius = 0, insetLeft = inset, insetTop = inset, insetRight = inset, insetBottom = inset, radiusBottomLeft = radius, radiusBottomRight = radius, radiusTopLeft = radius, radiusTopRight = radius, minWidth = -Infinity, maxWidth = Infinity, minHeight = -Infinity } = style, rest = __rest(style, [\"inset\", \"radius\", \"insetLeft\", \"insetTop\", \"insetRight\", \"insetBottom\", \"radiusBottomLeft\", \"radiusBottomRight\", \"radiusTopLeft\", \"radiusTopRight\", \"minWidth\", \"maxWidth\", \"minHeight\"]);\n if (!isPolar(coordinate) && !isHelix(coordinate)) {\n const tpShape = !!isTranspose(coordinate);\n const [p0, , p2] = tpShape ? reorder(points) : points;\n const [x, y] = p0;\n const [width, height] = sub(p2, p0);\n // Deal with width or height is negative.\n const absX = width > 0 ? x : x + width;\n const absY = height > 0 ? y : y + height;\n const absWidth = Math.abs(width);\n const absHeight = Math.abs(height);\n const finalX = absX + insetLeft;\n const finalY = absY + insetTop;\n const finalWidth = absWidth - (insetLeft + insetRight);\n const finalHeight = absHeight - (insetTop + insetBottom);\n const clampWidth = tpShape\n ? clamp(finalWidth, minHeight, Infinity)\n : clamp(finalWidth, minWidth, maxWidth);\n const clampHeight = tpShape\n ? clamp(finalHeight, minWidth, maxWidth)\n : clamp(finalHeight, minHeight, Infinity);\n const clampX = tpShape ? finalX : finalX - (clampWidth - finalWidth) / 2;\n const clampY = tpShape\n ? finalY - (clampHeight - finalHeight) / 2\n : finalY - (clampHeight - finalHeight);\n return select(document.createElement('rect', {}))\n .style('x', clampX)\n .style('y', clampY)\n .style('width', clampWidth)\n .style('height', clampHeight)\n .style('radius', [\n radiusTopLeft,\n radiusTopRight,\n radiusBottomRight,\n radiusBottomLeft,\n ])\n .call(applyStyle, rest)\n .node();\n }\n // Render path in polar coordinate.\n const { y, y1 } = value;\n const center = coordinate.getCenter();\n const arcObject = getArcObject(coordinate, points, [y, y1]);\n const path = arc()\n .cornerRadius(radius)\n .padAngle((inset * Math.PI) / 180);\n return select(document.createElement('path', {}))\n .style('path', path(arcObject))\n .style('transform', `translate(${center[0]}, ${center[1]})`)\n .style('radius', radius)\n .style('inset', inset)\n .call(applyStyle, rest)\n .node();\n}\n/**\n * Render rect in different coordinate.\n * Calc arc path based on control points directly rather startAngle, endAngle, innerRadius,\n * outerRadius. This is not accurate and will cause bug when the range of y scale is [1, 0]\n * for cell geometry.\n */\nexport const Color = (options, context) => {\n // Render border only when colorAttribute is stroke.\n const { colorAttribute, opacityAttribute = 'fill', first = true, last = true } = options, style = __rest(options, [\"colorAttribute\", \"opacityAttribute\", \"first\", \"last\"]);\n const { coordinate, document } = context;\n return (points, value, defaults) => {\n const { color: defaultColor, radius: defaultRadius = 0 } = defaults, restDefaults = __rest(defaults, [\"color\", \"radius\"]);\n const defaultLineWidth = restDefaults.lineWidth || 1;\n const { stroke, radius = defaultRadius, radiusTopLeft = radius, radiusTopRight = radius, radiusBottomRight = radius, radiusBottomLeft = radius, innerRadius = 0, innerRadiusTopLeft = innerRadius, innerRadiusTopRight = innerRadius, innerRadiusBottomRight = innerRadius, innerRadiusBottomLeft = innerRadius, lineWidth = colorAttribute === 'stroke' || stroke ? defaultLineWidth : 0, inset = 0, insetLeft = inset, insetRight = inset, insetBottom = inset, insetTop = inset, minWidth, maxWidth, minHeight } = style, rest = __rest(style, [\"stroke\", \"radius\", \"radiusTopLeft\", \"radiusTopRight\", \"radiusBottomRight\", \"radiusBottomLeft\", \"innerRadius\", \"innerRadiusTopLeft\", \"innerRadiusTopRight\", \"innerRadiusBottomRight\", \"innerRadiusBottomLeft\", \"lineWidth\", \"inset\", \"insetLeft\", \"insetRight\", \"insetBottom\", \"insetTop\", \"minWidth\", \"maxWidth\", \"minHeight\"]);\n const { color = defaultColor, opacity } = value;\n // Extended style, which is not supported by native g shape,\n // should apply at first.\n const standardDirRadius = [\n first ? radiusTopLeft : innerRadiusTopLeft,\n first ? radiusTopRight : innerRadiusTopRight,\n last ? radiusBottomRight : innerRadiusBottomRight,\n last ? radiusBottomLeft : innerRadiusBottomLeft,\n ];\n const standardDir = [\n 'radiusTopLeft',\n 'radiusTopRight',\n 'radiusBottomRight',\n 'radiusBottomLeft',\n ];\n // Transpose: rotate it clockwise by 90.\n if (isTranspose(coordinate)) {\n standardDir.push(standardDir.shift());\n }\n const extendedStyle = Object.assign(Object.assign({ radius }, Object.fromEntries(standardDir.map((d, i) => [d, standardDirRadius[i]]))), { inset,\n insetLeft,\n insetRight,\n insetBottom,\n insetTop,\n minWidth,\n maxWidth,\n minHeight });\n return (select(rect(document, points, value, coordinate, extendedStyle))\n .call(applyStyle, restDefaults)\n .style('fill', 'transparent')\n .style(colorAttribute, color)\n .style(toOpacityKey(options), opacity)\n .style('lineWidth', lineWidth)\n .style('stroke', stroke === undefined ? color : stroke)\n // shape.style has higher priority.\n .call(applyStyle, rest)\n .node());\n };\n};\n// @todo Should Shape have default animations using for ordinal scale?\nColor.props = {\n defaultEnterAnimation: 'scaleInY',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=color.js.map","import { Color } from './color';\n/**\n * Render rect in different coordinate and using color channel for stroke and fill attribute.\n * The stroke attribute is valid with specified lineWidth attribute which defaults to zero.\n */\nexport const Rect = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'fill' }, options), context);\n};\nRect.props = Object.assign(Object.assign({}, Color.props), { defaultMarker: 'square' });\n//# sourceMappingURL=rect.js.map","import { Color } from './color';\n/**\n * Render rect in different coordinate and using color channel for stroke attribute.\n */\nexport const Hollow = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke' }, options), context);\n};\nHollow.props = Object.assign(Object.assign({}, Color.props), { defaultMarker: 'hollowSquare' });\n//# sourceMappingURL=hollow.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { line, curveLinearClosed } from 'd3-shape';\nimport { isTranspose } from '../../utils/coordinate';\nimport { select } from '../../utils/selection';\nimport { applyStyle, reorder } from '../utils';\n/**\n * Adjust and return the new `points`.\n */\nfunction getFunnelPoints(points, nextPoints, coordinate) {\n const [p0, p1, p2, p3] = points;\n if (isTranspose(coordinate)) {\n const newP1 = [nextPoints ? nextPoints[0][0] : p1[0], p1[1]];\n const newP2 = [nextPoints ? nextPoints[3][0] : p2[0], p2[1]];\n return [p0, newP1, newP2, p3];\n }\n const newP1 = [p1[0], nextPoints ? nextPoints[0][1] : p1[1]];\n const newP2 = [p2[0], nextPoints ? nextPoints[3][1] : p2[1]];\n return [p0, newP1, newP2, p3];\n}\n/**\n * Render funnel in different coordinate and using color channel for stroke and fill attribute.\n */\nexport const Funnel = (options, context) => {\n const { adjustPoints = getFunnelPoints } = options, style = __rest(options, [\"adjustPoints\"]);\n const { coordinate, document } = context;\n return (points, value, defaults, point2d) => {\n const { index } = value;\n const { color: defaultColor } = defaults, rest = __rest(defaults, [\"color\"]);\n const nextPoints = point2d[index + 1];\n const funnelPoints = adjustPoints(points, nextPoints, coordinate);\n const tpShape = !!isTranspose(coordinate);\n const [p0, p1, p2, p3] = tpShape ? reorder(funnelPoints) : funnelPoints;\n const { color = defaultColor, opacity } = value;\n const b = line().curve(curveLinearClosed)([p0, p1, p2, p3]);\n return select(document.createElement('path', {}))\n .call(applyStyle, rest)\n .style('path', b)\n .style('fill', color)\n .style('fillOpacity', opacity)\n .call(applyStyle, style)\n .node();\n };\n};\nFunnel.props = {\n defaultMarker: 'square',\n};\n//# sourceMappingURL=funnel.js.map","import { isTranspose } from '../../utils/coordinate';\nimport { Funnel } from './funnel';\n/**\n * Adjust and return the new `points`.\n */\nfunction getPyramidPoints(points, nextPoints, coordinate) {\n const [p0, p1, p2, p3] = points;\n if (isTranspose(coordinate)) {\n const newP1 = [\n nextPoints ? nextPoints[0][0] : (p1[0] + p2[0]) / 2,\n p1[1],\n ];\n const newP2 = [\n nextPoints ? nextPoints[3][0] : (p1[0] + p2[0]) / 2,\n p2[1],\n ];\n return [p0, newP1, newP2, p3];\n }\n const newP1 = [\n p1[0],\n nextPoints ? nextPoints[0][1] : (p1[1] + p2[1]) / 2,\n ];\n const newP2 = [\n p2[0],\n nextPoints ? nextPoints[3][1] : (p1[1] + p2[1]) / 2,\n ];\n return [p0, newP1, newP2, p3];\n}\n/**\n * Render pyramid in different coordinate and using color channel for stroke and fill attribute.\n */\nexport const Pyramid = (options, context) => {\n return Funnel(Object.assign({ adjustPoints: getPyramidPoints }, options), context);\n};\nPyramid.props = {\n defaultMarker: 'square',\n};\n//# sourceMappingURL=pyramid.js.map","import { CustomElement } from '@antv/g';\nexport function createElement(descriptor) {\n const render = typeof descriptor === 'function' ? descriptor : descriptor.render;\n return class extends CustomElement {\n connectedCallback() {\n this.draw();\n }\n attributeChangedCallback() {\n this.draw();\n }\n draw() {\n render(this);\n }\n };\n}\n//# sourceMappingURL=createElement.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { line, lineRadial } from 'd3-shape';\nimport { isPolar, isTranspose } from '../../utils/coordinate';\nimport { select } from '../../utils/selection';\nimport { applyStyle, computeGradient, getTransform } from '../utils';\nimport { createElement } from '../../utils/createElement';\nimport { subObject } from '../../utils/helper';\nimport { angleWithQuadrant, dist, sub } from '../../utils/vector';\nconst DoublePath = createElement((g) => {\n const { d1, d2, style1, style2 } = g.attributes;\n const document = g.ownerDocument;\n select(g)\n .maybeAppend('line', () => document.createElement('path', {}))\n .style('d', d1)\n .call(applyStyle, style1);\n select(g)\n .maybeAppend('line1', () => document.createElement('path', {}))\n .style('d', d2)\n .call(applyStyle, style2);\n});\n/**\n * Given a points sequence, split it into an array of defined points\n * and an array of undefined segments.\n *\n * Input - [[1, 2], [3, 4], [null, null], [null, null], [5, 6], [null, null], [7, 8]]\n * Output\n * - [[1, 2], [3, 4], [5, 6], [7, 8]]\n * - [\n * [[3, 4], [5, 6]],\n * [[5, 6], [7, 8]]\n * ]\n */\nfunction segmentation(points, defined) {\n const definedPoints = [];\n const segments = [];\n let m = false; // Is in a undefined sequence.\n let dp = null; // The previous defined point.\n for (const p of points) {\n // If current point is a undefined point,\n // enter a undefined sequence.\n if (!defined(p[0]) || !defined(p[1]))\n m = true;\n else {\n definedPoints.push(p);\n // If current point is a defined point,\n // and is in a undefined sequence, save\n // the two closest defined points as this\n // undefined sequence and exit it.\n if (m) {\n m = false;\n segments.push([dp, p]);\n }\n // Update the previous defined point.\n dp = p;\n }\n }\n return [definedPoints, segments];\n}\nexport const Curve = (options, context) => {\n const { curve, gradient = false, \n // The color for each segment.\n gradientColor = 'between', defined = (d) => !Number.isNaN(d) && d !== undefined && d !== null, connect: connectNulls = false } = options, style = __rest(options, [\"curve\", \"gradient\", \"gradientColor\", \"defined\", \"connect\"]);\n const { coordinate, document } = context;\n return (P, value, defaults) => {\n // Compute styles.\n const { color: defaultColor, lineWidth: defaultSize } = defaults, rest = __rest(defaults, [\"color\", \"lineWidth\"]);\n const { color = defaultColor, size = defaultSize, seriesColor: sc, seriesX: sx, seriesY: sy, } = value;\n const transform = getTransform(coordinate, value);\n const tpShape = isTranspose(coordinate);\n const stroke = gradient && sc\n ? computeGradient(sc, sx, sy, gradient, gradientColor, tpShape)\n : color;\n const finalStyle = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, rest), (stroke && { stroke })), (size && { lineWidth: size })), (transform && { transform })), style);\n // Compute points and segments.\n let linePath;\n if (isPolar(coordinate)) {\n const center = coordinate.getCenter();\n linePath = (points) => lineRadial()\n .angle((_, idx) => angleWithQuadrant(sub(points[idx], center)))\n .radius((_, idx) => dist(points[idx], center))\n .defined(([x, y]) => defined(x) && defined(y))\n .curve(curve)(points);\n }\n else {\n linePath = line()\n .x((d) => d[0])\n .y((d) => d[1])\n .defined(([x, y]) => defined(x) && defined(y))\n .curve(curve);\n }\n const [DP, MS] = segmentation(P, defined);\n const connectStyle = subObject(finalStyle, 'connect');\n const missing = !!MS.length;\n // Draw one path of connected defined points.\n if (!missing || (connectNulls && !Object.keys(connectStyle).length)) {\n return select(document.createElement('path', {}))\n .style('d', linePath(DP) || [])\n .call(applyStyle, finalStyle)\n .node();\n }\n // Draw one path of unconnected defined points.\n if (missing && !connectNulls) {\n return select(document.createElement('path', {}))\n .style('d', linePath(P))\n .call(applyStyle, finalStyle)\n .node();\n }\n // Draw two path.\n // One for unconnected defined points.\n // One for connected segments.\n const connectPath = (segments) => segments.map(linePath).join(',');\n return select(new DoublePath())\n .style('style1', Object.assign(Object.assign({}, finalStyle), connectStyle))\n .style('style2', finalStyle)\n .style('d1', connectPath(MS))\n .style('d2', linePath(P))\n .node();\n };\n};\nCurve.props = {\n defaultMarker: 'smooth',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=curve.js.map","import { curveLinear, curveLinearClosed } from 'd3-shape';\nimport { isPolar } from '../../utils/coordinate';\nimport { Curve } from './curve';\nexport const Line = (options, context) => {\n const { coordinate } = context;\n return (...params) => {\n const curve = isPolar(coordinate) ? curveLinearClosed : curveLinear;\n return Curve(Object.assign({ curve }, options), context)(...params);\n };\n};\nLine.props = Object.assign(Object.assign({}, Curve.props), { defaultMarker: 'line' });\n//# sourceMappingURL=line.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { curveMonotoneX, curveMonotoneY, curveCatmullRomClosed, } from 'd3-shape';\nimport { isPolar, isTranspose } from '../../utils/coordinate';\nimport { Curve } from './curve';\nexport const Smooth = (options, context) => {\n const rest = __rest(options, []);\n const { coordinate } = context;\n return (...params) => {\n const curve = isPolar(coordinate)\n ? curveCatmullRomClosed\n : isTranspose(coordinate)\n ? curveMonotoneY\n : curveMonotoneX;\n return Curve(Object.assign({ curve }, rest), context)(...params);\n };\n};\nSmooth.props = Object.assign(Object.assign({}, Curve.props), { defaultMarker: 'smooth' });\n//# sourceMappingURL=smooth.js.map","import { curveStepAfter } from 'd3-shape';\nimport { Curve } from './curve';\nexport const HV = (options, context) => {\n return Curve(Object.assign({ curve: curveStepAfter }, options), context);\n};\nHV.props = Object.assign(Object.assign({}, Curve.props), { defaultMarker: 'hv' });\n//# sourceMappingURL=hv.js.map","import { curveStepBefore } from 'd3-shape';\nimport { Curve } from './curve';\nexport const VH = (options, context) => {\n return Curve(Object.assign({ curve: curveStepBefore }, options), context);\n};\nVH.props = Object.assign(Object.assign({}, Curve.props), { defaultMarker: 'vh' });\n//# sourceMappingURL=vh.js.map","import { curveStep } from 'd3-shape';\nimport { Curve } from './curve';\nexport const HVH = (options, context) => {\n return Curve(Object.assign({ curve: curveStep }, options), context);\n};\nHVH.props = Object.assign(Object.assign({}, Curve.props), { defaultMarker: 'hvh' });\n//# sourceMappingURL=hvh.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { path as d3path } from 'd3-path';\nimport { select } from '../../utils/selection';\nimport { applyStyle } from '../utils';\nimport { angle, sub, add } from '../../utils/vector';\nimport { defined } from '../../utils/helper';\nimport { Curve } from './curve';\n/**\n *\n * x9-x0---------x1-x2\n * / |r1 |r2 \\\n *x8---p0---------p1---x3\n * \\ r4| | r3 /\n * x7-x6--------x5-x4\n */\nfunction stroke(path, p0, p1, s0, s1) {\n const v = sub(p1, p0);\n const a = angle(v);\n const a1 = a + Math.PI / 2;\n const r1 = [(s0 / 2) * Math.cos(a1), (s0 / 2) * Math.sin(a1)];\n const r2 = [(s1 / 2) * Math.cos(a1), (s1 / 2) * Math.sin(a1)];\n const r3 = [(s1 / 2) * Math.cos(a), (s1 / 2) * Math.sin(a)];\n const r4 = [(s0 / 2) * Math.cos(a), (s0 / 2) * Math.sin(a)];\n const x0 = add(p0, r1);\n const x1 = add(p1, r2);\n const x2 = add(x1, r3);\n const x3 = add(p1, r3);\n const x4 = sub(x3, r2);\n const x5 = sub(p1, r2);\n const x6 = sub(p0, r1);\n const x7 = sub(x6, r4);\n const x8 = sub(p0, r4);\n const x9 = sub(x0, r4);\n path.moveTo(...x0);\n path.lineTo(...x1);\n path.arcTo(...x2, ...x3, s1 / 2);\n path.arcTo(...x4, ...x5, s1 / 2);\n path.lineTo(...x6);\n path.arcTo(...x7, ...x8, s0 / 2);\n path.arcTo(...x9, ...x0, s0 / 2);\n path.closePath();\n}\n// @todo Support connect and connectStyle.\nexport const Trail = (options, context) => {\n const { document } = context;\n return (P, value, defaults) => {\n const { seriesSize, color } = value;\n const { color: defaultColor } = defaults, rest = __rest(defaults, [\"color\"]);\n const path = d3path();\n for (let i = 0; i < P.length - 1; i++) {\n const p0 = P[i];\n const p1 = P[i + 1];\n const s0 = seriesSize[i];\n const s1 = seriesSize[i + 1];\n if ([...p0, ...p1].every(defined))\n stroke(path, p0, p1, s0, s1);\n }\n return select(document.createElement('path', {}))\n .call(applyStyle, rest)\n .style('fill', color || defaultColor)\n .style('d', path.toString())\n .call(applyStyle, options)\n .node();\n };\n};\nTrail.props = Object.assign(Object.assign({}, Curve.props), { defaultMarker: 'line' });\n//# sourceMappingURL=trail.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Path } from '@antv/g';\nconst point = (x, y, r) => {\n return [\n ['M', x - r, y],\n ['A', r, r, 0, 1, 0, x + r, y],\n ['A', r, r, 0, 1, 0, x - r, y],\n ['Z'],\n ];\n};\npoint.style = ['fill'];\nconst hollowPoint = point.bind(undefined);\nhollowPoint.style = ['stroke', 'lineWidth'];\nconst square = (x, y, r) => {\n return [\n ['M', x - r, y - r],\n ['L', x + r, y - r],\n ['L', x + r, y + r],\n ['L', x - r, y + r],\n ['Z'],\n ];\n};\nsquare.style = ['fill'];\nconst rect = square.bind(undefined);\nrect.style = ['fill'];\nconst hollowSquare = square.bind(undefined);\nhollowSquare.style = ['stroke', 'lineWidth'];\nconst diamond = (x, y, r) => {\n const hr = r * 0.618;\n return [\n ['M', x - hr, y],\n ['L', x, y - r],\n ['L', x + hr, y],\n ['L', x, y + r],\n ['Z'],\n ];\n};\ndiamond.style = ['fill'];\nconst hollowDiamond = diamond.bind(undefined);\nhollowDiamond.style = ['stroke', 'lineWidth'];\nconst triangle = (x, y, r) => {\n const diffY = r * Math.sin((1 / 3) * Math.PI);\n return [\n ['M', x - r, y + diffY],\n ['L', x, y - diffY],\n ['L', x + r, y + diffY],\n ['Z'],\n ];\n};\ntriangle.style = ['fill'];\nconst hollowTriangle = triangle.bind(undefined);\nhollowTriangle.style = ['stroke', 'lineWidth'];\nconst triangleDown = (x, y, r) => {\n const diffY = r * Math.sin((1 / 3) * Math.PI);\n return [\n ['M', x - r, y - diffY],\n ['L', x + r, y - diffY],\n ['L', x, y + diffY],\n ['Z'],\n ];\n};\ntriangleDown.style = ['fill'];\nconst hollowTriangleDown = triangleDown.bind(undefined);\nhollowTriangleDown.style = ['stroke', 'lineWidth'];\nconst hexagon = (x, y, r) => {\n const diffX = (r / 2) * Math.sqrt(3);\n return [\n ['M', x, y - r],\n ['L', x + diffX, y - r / 2],\n ['L', x + diffX, y + r / 2],\n ['L', x, y + r],\n ['L', x - diffX, y + r / 2],\n ['L', x - diffX, y - r / 2],\n ['Z'],\n ];\n};\nhexagon.style = ['fill'];\nconst hollowHexagon = hexagon.bind(undefined);\nhollowHexagon.style = ['stroke', 'lineWidth'];\nconst bowtie = (x, y, r) => {\n const diffY = r - 1.5;\n return [\n ['M', x - r, y - diffY],\n ['L', x + r, y + diffY],\n ['L', x + r, y - diffY],\n ['L', x - r, y + diffY],\n ['Z'],\n ];\n};\nbowtie.style = ['fill'];\nconst hollowBowtie = bowtie.bind(undefined);\nhollowBowtie.style = ['stroke', 'lineWidth'];\nconst line = (x, y, r) => {\n return [\n ['M', x, y + r],\n ['L', x, y - r],\n ];\n};\nline.style = ['stroke', 'lineWidth'];\nconst cross = (x, y, r) => {\n return [\n ['M', x - r, y - r],\n ['L', x + r, y + r],\n ['M', x + r, y - r],\n ['L', x - r, y + r],\n ];\n};\ncross.style = ['stroke', 'lineWidth'];\nconst tick = (x, y, r) => {\n return [\n ['M', x - r / 2, y - r],\n ['L', x + r / 2, y - r],\n ['M', x, y - r],\n ['L', x, y + r],\n ['M', x - r / 2, y + r],\n ['L', x + r / 2, y + r],\n ];\n};\ntick.style = ['stroke', 'lineWidth'];\nconst plus = (x, y, r) => {\n return [\n ['M', x - r, y],\n ['L', x + r, y],\n ['M', x, y - r],\n ['L', x, y + r],\n ];\n};\nplus.style = ['stroke', 'lineWidth'];\nconst hyphen = (x, y, r) => {\n return [\n ['M', x - r, y],\n ['L', x + r, y],\n ];\n};\nhyphen.style = ['stroke', 'lineWidth'];\nconst dot = (x, y, r) => {\n return [\n ['M', x - r, y],\n ['L', x + r, y],\n ];\n};\ndot.style = ['stroke', 'lineWidth'];\nconst dash = dot.bind(undefined);\ndash.style = ['stroke', 'lineWidth'];\nconst smooth = (x, y, r) => {\n return [\n ['M', x - r, y],\n ['A', r / 2, r / 2, 0, 1, 1, x, y],\n ['A', r / 2, r / 2, 0, 1, 0, x + r, y],\n ];\n};\nsmooth.style = ['stroke', 'lineWidth'];\nconst hv = (x, y, r) => {\n return [\n ['M', x - r - 1, y - 2.5],\n ['L', x, y - 2.5],\n ['L', x, y + 2.5],\n ['L', x + r + 1, y + 2.5],\n ];\n};\nhv.style = ['stroke', 'lineWidth'];\nconst vh = (x, y, r) => {\n return [\n ['M', x - r - 1, y + 2.5],\n ['L', x, y + 2.5],\n ['L', x, y - 2.5],\n ['L', x + r + 1, y - 2.5],\n ];\n};\nvh.style = ['stroke', 'lineWidth'];\nconst hvh = (x, y, r) => {\n return [\n ['M', x - (r + 1), y + 2.5],\n ['L', x - r / 2, y + 2.5],\n ['L', x - r / 2, y - 2.5],\n ['L', x + r / 2, y - 2.5],\n ['L', x + r / 2, y + 2.5],\n ['L', x + r + 1, y + 2.5],\n ];\n};\nhvh.style = ['stroke', 'lineWidth'];\nconst vhv = (x, y, r) => {\n return [\n ['M', x - 5, y + 2.5],\n ['L', x - 5, y],\n ['L', x, y],\n ['L', x, y - 3],\n ['L', x, y + 3],\n ['L', x + 6.5, y + 3],\n ];\n};\nvhv.style = ['stroke', 'lineWidth'];\nexport const Symbols = new Map([\n ['bowtie', bowtie],\n ['cross', cross],\n ['dash', dash],\n ['diamond', diamond],\n ['dot', dot],\n ['hexagon', hexagon],\n ['hollowBowtie', hollowBowtie],\n ['hollowDiamond', hollowDiamond],\n ['hollowHexagon', hollowHexagon],\n ['hollowPoint', hollowPoint],\n ['hollowSquare', hollowSquare],\n ['hollowTriangle', hollowTriangle],\n ['hollowTriangleDown', hollowTriangleDown],\n ['hv', hv],\n ['hvh', hvh],\n ['hyphen', hyphen],\n ['line', line],\n ['plus', plus],\n ['point', point],\n ['rect', rect],\n ['smooth', smooth],\n ['square', square],\n ['tick', tick],\n ['triangleDown', triangleDown],\n ['triangle', triangle],\n ['vh', vh],\n ['vhv', vhv],\n]);\nexport function useMarker(type, _a) {\n var { d, fill, strokeWidth, path, stroke, lineWidth, color } = _a, style = __rest(_a, [\"d\", \"fill\", \"strokeWidth\", \"path\", \"stroke\", \"lineWidth\", \"color\"]);\n const symbol = Symbols.get(type) || Symbols.get('point');\n return (...args) => {\n const path = new Path({\n style: Object.assign(Object.assign({}, style), { path: symbol(...args), stroke: symbol.style.includes('stroke') ? color || stroke : '', fill: symbol.style.includes('fill') ? color || fill : '', lineWidth: symbol.style.includes('lineWidth')\n ? lineWidth || lineWidth || 2\n : 0 }),\n });\n return path;\n };\n}\nexport function registerSymbol(type, marker) {\n Symbols.set(type, marker);\n}\nexport function unregisterSymbol(type) {\n Symbols.delete(type);\n}\n//# sourceMappingURL=marker.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { isFisheye } from '../../utils/coordinate';\nimport { Symbols } from '../../utils/marker';\nimport { select } from '../../utils/selection';\nimport { applyStyle, getOrigin, toOpacityKey } from '../utils';\nfunction getRadius(mode, points, value, coordinate) {\n if (points.length === 1)\n return undefined;\n const { size } = value;\n if (mode === 'fixed')\n return size;\n if (mode === 'normal' || isFisheye(coordinate)) {\n const [[x0, y0], [x2, y2]] = points;\n const a = Math.abs((x2 - x0) / 2);\n const b = Math.abs((y2 - y0) / 2);\n return Math.max(0, (a + b) / 2);\n }\n return size;\n}\n/**\n * Render point in different coordinate.\n */\nexport const Color = (options, context) => {\n // Render border only when colorAttribute is stroke.\n const { colorAttribute, symbol, mode = 'auto' } = options, style = __rest(options, [\"colorAttribute\", \"symbol\", \"mode\"]);\n const path = Symbols.get(symbol) || Symbols.get('point');\n const { coordinate, document } = context;\n return (points, value, defaults) => {\n const { lineWidth, color: defaultColor } = defaults;\n const finalLineWidth = style.stroke ? lineWidth || 1 : lineWidth;\n const { color = defaultColor, transform, opacity } = value;\n const [cx, cy] = getOrigin(points);\n const r = getRadius(mode, points, value, coordinate);\n const finalRadius = r || style.r || defaults.r;\n return select(document.createElement('path', {}))\n .call(applyStyle, defaults)\n .style('fill', 'transparent')\n .style('d', path(cx, cy, finalRadius))\n .style('lineWidth', finalLineWidth)\n .style('transform', transform)\n .style('stroke', color)\n .style(toOpacityKey(options), opacity)\n .style(colorAttribute, color)\n .call(applyStyle, style)\n .node();\n };\n};\nColor.props = {\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=color.js.map","import { Color } from './color';\n/**\n * ▷◁\n */\nexport const HollowBowtie = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke', symbol: 'bowtie' }, options), context);\n};\nHollowBowtie.props = Object.assign({ defaultMarker: 'hollowBowtie' }, Color.props);\n//# sourceMappingURL=hollowBowtie.js.map","import { Color } from './color';\n/**\n * ◇\n */\nexport const HollowDiamond = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke', symbol: 'diamond' }, options), context);\n};\nHollowDiamond.props = Object.assign({ defaultMarker: 'hollowDiamond' }, Color.props);\n//# sourceMappingURL=hollowDiamond.js.map","import { Color } from './color';\n/**\n * ⬡\n */\nexport const HollowHexagon = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke', symbol: 'hexagon' }, options), context);\n};\nHollowHexagon.props = Object.assign({ defaultMarker: 'hollowHexagon' }, Color.props);\n//# sourceMappingURL=hollowHexagon.js.map","import { Color } from './color';\n/**\n * ○\n */\nexport const HollowPoint = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke', symbol: 'point' }, options), context);\n};\nHollowPoint.props = Object.assign({ defaultMarker: 'hollowPoint' }, Color.props);\n//# sourceMappingURL=hollow.js.map","import { Color } from './color';\n/**\n * □\n */\nexport const HollowSquare = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke', symbol: 'square' }, options), context);\n};\nHollowSquare.props = Object.assign({ defaultMarker: 'hollowSquare' }, Color.props);\n//# sourceMappingURL=hollowSquare.js.map","import { Color } from './color';\n/**\n * △\n */\nexport const HollowTriangle = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke', symbol: 'triangle' }, options), context);\n};\nHollowTriangle.props = Object.assign({ defaultMarker: 'hollowTriangle' }, Color.props);\n//# sourceMappingURL=hollowTriangle.js.map","import { Color } from './color';\n/**\n * ▽\n */\nexport const HollowTriangleDown = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke', symbol: 'triangle-down' }, options), context);\n};\nHollowTriangleDown.props = Object.assign({ defaultMarker: 'hollowTriangleDown' }, Color.props);\n//# sourceMappingURL=hollowTriangleDown.js.map","import { Color } from './color';\n/**\n * ▶◀\n */\nexport const Bowtie = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'fill', symbol: 'bowtie' }, options), context);\n};\nBowtie.props = Object.assign({ defaultMarker: 'bowtie' }, Color.props);\n//# sourceMappingURL=bowtie.js.map","import { Color } from './color';\n/**\n * ✕\n */\nexport const Cross = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke', symbol: 'cross' }, options), context);\n};\nCross.props = Object.assign({ defaultMarker: 'cross' }, Color.props);\n//# sourceMappingURL=cross.js.map","import { Color } from './color';\n/**\n * ◆\n */\nexport const Diamond = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'fill', symbol: 'diamond' }, options), context);\n};\nDiamond.props = Object.assign({ defaultMarker: 'diamond' }, Color.props);\n//# sourceMappingURL=diamond.js.map","import { Color } from './color';\n/**\n * ⭓\n */\nexport const Hexagon = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'fill', symbol: 'hexagon' }, options), context);\n};\nHexagon.props = Object.assign({ defaultMarker: 'hexagon' }, Color.props);\n//# sourceMappingURL=hexagon.js.map","import { Color } from './color';\n/**\n * -\n */\nexport const Hyphen = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke', symbol: 'hyphen' }, options), context);\n};\nHyphen.props = Object.assign({ defaultMarker: 'hyphen' }, Color.props);\n//# sourceMappingURL=hyphen.js.map","import { Color } from './color';\n/**\n * |\n */\nexport const Line = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke', symbol: 'line' }, options), context);\n};\nLine.props = Object.assign({ defaultMarker: 'line' }, Color.props);\n//# sourceMappingURL=line.js.map","import { Color } from './color';\n/**\n * +\n */\nexport const Plus = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke', symbol: 'plus' }, options), context);\n};\nPlus.props = Object.assign({ defaultMarker: 'plus' }, Color.props);\n//# sourceMappingURL=plus.js.map","import { Color } from './color';\n/**\n * ●\n */\nexport const Point = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'fill', symbol: 'point' }, options), context);\n};\nPoint.props = Object.assign({ defaultMarker: 'point' }, Color.props);\n//# sourceMappingURL=point.js.map","import { Color } from './color';\n/**\n * ■\n */\nexport const Square = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'fill', symbol: 'square' }, options), context);\n};\nSquare.props = Object.assign({ defaultMarker: 'square' }, Color.props);\n//# sourceMappingURL=square.js.map","import { Color } from './color';\n/**\n * 工\n */\nexport const Tick = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'stroke', symbol: 'tick' }, options), context);\n};\nTick.props = Object.assign({ defaultMarker: 'tick' }, Color.props);\n//# sourceMappingURL=tick.js.map","import { Color } from './color';\n/**\n * ▲\n */\nexport const Triangle = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'fill', symbol: 'triangle' }, options), context);\n};\nTriangle.props = Object.assign({ defaultMarker: 'triangle' }, Color.props);\n//# sourceMappingURL=triangle.js.map","import { Color } from './color';\n/**\n * ▼\n */\nexport const TriangleDown = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'fill', symbol: 'triangle-down' }, options), context);\n};\nTriangleDown.props = Object.assign({ defaultMarker: 'triangleDown' }, Color.props);\n//# sourceMappingURL=triangleDown.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { path as d3path } from 'd3-path';\nimport { applyStyle, arrowPoints } from '../utils';\nimport { select } from '../../utils/selection';\n/**\n * Connect 2 points with a single line with arrow.\n * ----->\n */\nexport const Vector = (options, context) => {\n const { arrow = true, arrowSize = '40%' } = options, style = __rest(options, [\"arrow\", \"arrowSize\"]);\n const { document } = context;\n return (points, value, defaults) => {\n const { defaultColor } = defaults, rest = __rest(defaults, [\"defaultColor\"]);\n const { color = defaultColor, transform } = value;\n const [from, to] = points;\n // Draw line\n const path = d3path();\n path.moveTo(...from);\n path.lineTo(...to);\n // Draw 2 arrows.\n if (arrow) {\n // Calculate arrow end point.\n const [arrow1, arrow2] = arrowPoints(from, to, { arrowSize });\n path.moveTo(...to);\n path.lineTo(...arrow1);\n path.moveTo(...to);\n path.lineTo(...arrow2);\n }\n return select(document.createElement('path', {}))\n .call(applyStyle, rest)\n .style('d', path.toString())\n .style('stroke', color)\n .style('transform', transform)\n .call(applyStyle, style)\n .node();\n };\n};\nVector.props = {\n defaultMarker: 'line',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=vector.js.map","export function traverse(element, callback) {\n callback(element);\n if (element.children) {\n element.children.forEach(function (child) {\n if (child)\n traverse(child, callback);\n });\n }\n}\n//# sourceMappingURL=traverse.js.map","import { traverse } from './traverse';\nexport function show(element) {\n visibility(element, true);\n}\nexport function hide(element) {\n visibility(element, false);\n}\nexport function visibility(element, visible) {\n var value = visible ? 'visible' : 'hidden';\n traverse(element, function (node) {\n node.attr('visibility', value);\n });\n}\n//# sourceMappingURL=visibility.js.map","import { __extends, __read, __spreadArray } from \"tslib\";\nimport { ElementEvent } from '@antv/g';\nimport { Group } from '../shapes/Group';\nimport { hide } from './visibility';\nvar OffscreenGroup = /** @class */ (function (_super) {\n __extends(OffscreenGroup, _super);\n function OffscreenGroup() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, __spreadArray([], __read(args), false)) || this;\n _this.addEventListener(ElementEvent.INSERTED, function () {\n hide(_this);\n });\n return _this;\n }\n return OffscreenGroup;\n}(Group));\nexport function createOffscreenGroup(container) {\n var group = container.appendChild(new OffscreenGroup({\n class: 'offscreen',\n }));\n hide(group);\n return group;\n}\nexport function isInOffscreenGroup(group) {\n var ancestor = group;\n while (ancestor) {\n if (ancestor.className === 'offscreen') {\n return true;\n }\n ancestor = ancestor.parent;\n }\n return false;\n}\n//# sourceMappingURL=offscreen.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { Text as GText } from '@antv/g';\nimport { createOffscreenGroup } from '../util/offscreen';\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text(_a) {\n if (_a === void 0) { _a = {}; }\n var style = _a.style, restOptions = __rest(_a, [\"style\"]);\n return _super.call(this, __assign({ style: __assign({ text: '', fill: 'black', fontFamily: 'sans-serif', fontSize: 16, fontStyle: 'normal', fontVariant: 'normal', fontWeight: 'normal', lineWidth: 1, textAlign: 'start', textBaseline: 'middle' }, style) }, restOptions)) || this;\n }\n Object.defineProperty(Text.prototype, \"offscreenGroup\", {\n get: function () {\n if (!this._offscreen)\n this._offscreen = createOffscreenGroup(this);\n return this._offscreen;\n },\n enumerable: false,\n configurable: true\n });\n Text.prototype.disconnectedCallback = function () {\n var _a;\n (_a = this._offscreen) === null || _a === void 0 ? void 0 : _a.destroy();\n };\n return Text;\n}(GText));\nexport { Text };\n//# sourceMappingURL=Text.js.map","export function degToRad(deg) {\n return (deg * Math.PI) / 180;\n}\nexport function radToDeg(rad) {\n return Number(((rad * 180) / Math.PI).toPrecision(5));\n}\n//# sourceMappingURL=angle-converter.js.map","import { __read } from \"tslib\";\nvar BBox = /** @class */ (function () {\n function BBox(x, y, width, height) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n Object.defineProperty(BBox.prototype, \"bottom\", {\n get: function () {\n return this.y + this.height;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"left\", {\n get: function () {\n return this.x;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"right\", {\n get: function () {\n return this.x + this.width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BBox.prototype, \"top\", {\n get: function () {\n return this.y;\n },\n enumerable: false,\n configurable: true\n });\n BBox.fromRect = function (other) {\n return new BBox(other.x, other.y, other.width, other.height);\n };\n BBox.prototype.toJSON = function () {\n return {\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height,\n top: this.top,\n right: this.right,\n bottom: this.bottom,\n left: this.left,\n };\n };\n /**\n * 点是否在 bbox 中\n * @param p\n */\n BBox.prototype.isPointIn = function (x, y) {\n return x >= this.left && x <= this.right && y >= this.top && y <= this.bottom;\n };\n return BBox;\n}());\nexport { BBox };\nexport function getRenderBBox(element) {\n var _a = element.getRenderBounds(), _b = __read(_a.min, 2), minX = _b[0], minY = _b[1], _c = __read(_a.max, 2), maxX = _c[0], maxY = _c[1];\n var width = maxX - minX;\n var height = maxY - minY;\n return new BBox(minX, minY, width, height);\n}\n//# sourceMappingURL=bbox.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { isFunction } from '@antv/util';\nexport function getCallbackValue(value, params) {\n return isFunction(value) ? value.apply(void 0, __spreadArray([], __read(params), false)) : value;\n}\n//# sourceMappingURL=callback.js.map","import { __read } from \"tslib\";\nexport var classNames = function (cls, prefix) {\n var PREFIX = function (str) { return \"\".concat(prefix, \"-\").concat(str); };\n var obj = Object.fromEntries(Object.entries(cls).map(function (_a) {\n var _b = __read(_a, 2), k = _b[0], v = _b[1];\n var name = PREFIX(v);\n return [\n k,\n {\n name: name,\n class: \".\".concat(name),\n id: \"#\".concat(name),\n toString: function () {\n return name;\n },\n },\n ];\n }));\n Object.assign(obj, { prefix: PREFIX });\n return obj;\n};\n//# sourceMappingURL=classnames.js.map","import { __read } from \"tslib\";\nimport { isPlainObject, isArray } from '@antv/util';\nvar MAX_MIX_LEVEL = 5;\nvar deep = function (dist, src, level, maxLevel) {\n if (level === void 0) { level = 0; }\n if (maxLevel === void 0) { maxLevel = MAX_MIX_LEVEL; }\n Object.entries(src).forEach(function (_a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n var res = dist;\n if (Object.prototype.hasOwnProperty.call(src, key)) {\n if (!value) {\n // null 、 undefined 等情况直接赋值\n res[key] = value;\n }\n else if (isPlainObject(value)) {\n if (!isPlainObject(dist[key])) {\n res[key] = {};\n }\n if (level < maxLevel) {\n deep(dist[key], value, level + 1, maxLevel);\n }\n else {\n // 层级过深直接赋值,性能问题\n res[key] = src[key];\n }\n }\n else if (isArray(value)) {\n res[key] = [];\n res[key] = res[key].concat(value);\n }\n else {\n res[key] = value;\n }\n }\n });\n};\nexport var deepAssign = function (rst) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i += 1) {\n deep(rst, args[i]);\n }\n return rst;\n};\n//# sourceMappingURL=deep-assign.js.map","export var defined = function (x) { return x !== undefined && x != null && !Number.isNaN(x); };\n//# sourceMappingURL=defined.js.map","import { runtime } from '@antv/g';\nimport { memoize } from '@antv/util';\nvar ctx;\nvar mockMeasureTextWidth;\nexport function setMockMeasureTextWidth(mock) {\n mockMeasureTextWidth = mock;\n}\n/**\n * 计算文本在画布中的宽度\n */\nexport var measureTextWidth = memoize(function (text, font) {\n var fontSize = font.fontSize, fontFamily = font.fontFamily, fontWeight = font.fontWeight, fontStyle = font.fontStyle, fontVariant = font.fontVariant;\n if (mockMeasureTextWidth) {\n return mockMeasureTextWidth(text, fontSize);\n }\n if (!ctx) {\n // @ts-ignore\n ctx = runtime.offscreenCanvasCreator.getOrCreateContext(undefined);\n }\n ctx.font = [fontStyle, fontVariant, fontWeight, \"\".concat(fontSize, \"px\"), fontFamily].join(' ');\n return ctx.measureText(text).width;\n}, function (text, font) { return [text, Object.values(font || getFont(text)).join()].join(''); }, 4096);\nexport var getFont = function (textShape) {\n var fontFamily = textShape.style.fontFamily || 'sans-serif';\n var fontWeight = textShape.style.fontWeight || 'normal';\n var fontStyle = textShape.style.fontStyle || 'normal';\n var fontVariant = textShape.style.fontVariant;\n var fontSize = textShape.style.fontSize;\n fontSize = typeof fontSize === 'object' ? fontSize.value : fontSize;\n return { fontSize: fontSize, fontFamily: fontFamily, fontWeight: fontWeight, fontStyle: fontStyle, fontVariant: fontVariant };\n};\nexport function textOf(node) {\n if (node.nodeName === 'text') {\n return node;\n }\n if (node.nodeName === 'g' && node.children.length === 1 && node.children[0].nodeName === 'text') {\n return node.children[0];\n }\n return null;\n}\nexport function applyToText(node, style) {\n var text = textOf(node);\n if (text)\n text.attr(style);\n}\n//# sourceMappingURL=text.js.map","import { applyToText } from './text';\nexport function ellipsisIt(node, w, suffix) {\n if (suffix === void 0) { suffix = '...'; }\n applyToText(node, { wordWrap: true, wordWrapWidth: w, maxLines: 1, textOverflow: suffix });\n}\n//# sourceMappingURL=ellipsis.js.map","import { applyToText } from './text';\nexport function wrapIt(node, wordWrapWidth, maxLines, textBaseline) {\n if (maxLines === void 0) { maxLines = 2; }\n if (textBaseline === void 0) { textBaseline = 'top'; }\n applyToText(node, { wordWrap: true, wordWrapWidth: wordWrapWidth, maxLines: maxLines, textBaseline: textBaseline });\n}\n//# sourceMappingURL=wrap.js.map","/**\n * 获得触发事件的坐标\n */\nexport function getEventPos(e) {\n var canvas = e.canvas, touches = e.touches, offsetX = e.offsetX, offsetY = e.offsetY;\n if (canvas) {\n var x = canvas.x, y = canvas.y;\n return [x, y];\n }\n if (touches) {\n var _a = touches[0], clientX = _a.clientX, clientY = _a.clientY;\n return [clientX, clientY];\n }\n if (offsetX && offsetY)\n return [offsetX, offsetY];\n return [0, 0];\n}\n//# sourceMappingURL=event.js.map","import { isNumber, isString } from '@antv/util';\nimport { Text } from '../shapes';\nexport function renderExtDo(el) {\n if (typeof el === 'function')\n return el();\n return isString(el) || isNumber(el) ? new Text({ style: { text: String(el) } }) : el;\n}\n//# sourceMappingURL=extend-display-object.js.map","export function groupBy(source, by) {\n return source.reduce(function (acc, curr) {\n (acc[curr[by]] = acc[curr[by]] || []).push(curr);\n return acc;\n }, {});\n}\n//# sourceMappingURL=group-by.js.map","export function ifShow(show, container, creator, removeChildren, removeHandler) {\n if (removeChildren === void 0) { removeChildren = true; }\n if (removeHandler === void 0) { removeHandler = function (g) {\n g.node().removeChildren();\n }; }\n if (show) {\n return creator(container);\n }\n if (removeChildren)\n removeHandler(container);\n return null;\n}\n//# sourceMappingURL=if-show.js.map","export function inRange(n, start, end, includeLeft, includeRight) {\n if (includeLeft === void 0) { includeLeft = true; }\n if (includeRight === void 0) { includeRight = false; }\n if ((includeLeft && n === start) || (includeRight && n === end))\n return true;\n return n > start && n < end;\n}\n//# sourceMappingURL=in-range.js.map","import { __read } from \"tslib\";\nexport var numberInterpolate = function (from, to) {\n return function (t) {\n return from * (1 - t) + to * t;\n };\n};\nexport function arrayInterpolate(from, to) {\n var nb = to ? to.length : 0;\n var na = from ? Math.min(nb, from.length) : 0;\n return function (t) {\n var x = new Array(na);\n var c = new Array(nb);\n var i = 0;\n for (i = 0; i < na; ++i)\n x[i] = interpolate(from[i], to[i]);\n for (; i < nb; ++i)\n c[i] = to[i];\n for (i = 0; i < na; ++i)\n c[i] = x[i](t);\n return c;\n };\n}\nexport function objectInterpolate(from, to) {\n if (from === void 0) { from = {}; }\n if (to === void 0) { to = {}; }\n var i = {};\n var c = {};\n Object.entries(to).forEach(function (_a) {\n var _b = __read(_a, 2), k = _b[0], v = _b[1];\n if (k in from)\n i[k] = interpolate(from[k], v);\n else\n c[k] = v;\n });\n return function (t) {\n Object.entries(i).forEach(function (_a) {\n var _b = __read(_a, 2), k = _b[0], v = _b[1];\n return (c[k] = v(t));\n });\n return c;\n };\n}\nexport function interpolate(from, to) {\n if (typeof from === 'number' && typeof to === 'number') {\n // @ts-ignore\n return numberInterpolate(from, to);\n }\n if (Array.isArray(from) && Array.isArray(to)) {\n // @ts-ignore\n return arrayInterpolate(from, to);\n }\n if (typeof from === 'object' && typeof to === 'object') {\n // @ts-ignore\n return objectInterpolate(from, to);\n }\n return (function (t) { return from; });\n}\n//# sourceMappingURL=interpolate.js.map","import { __assign } from \"tslib\";\nimport { interpolate } from './interpolate';\nexport function keyframeInterpolate(element, from, to, options) {\n if (!options) {\n element.attr('__keyframe_data__', to);\n return null;\n }\n var _a = options.duration, duration = _a === void 0 ? 0 : _a;\n var int = interpolate(from, to);\n var count = Math.ceil(+duration / 16);\n var keyframes = new Array(count)\n .fill(0)\n .map(function (datum, index, array) { return ({ __keyframe_data__: int(index / (array.length - 1)) }); });\n // @ts-ignore\n return element.animate(keyframes, __assign({ fill: 'both' }, options));\n}\n//# sourceMappingURL=keyframe-interpolate.js.map","import { __read } from \"tslib\";\nimport { BBox } from '../../bbox';\nexport function getItemsBBox(items) {\n var minX = Infinity;\n var minY = Infinity;\n var maxX = -Infinity;\n var maxY = -Infinity;\n for (var i = 0; i < items.length; i++) {\n var _a = items[i], x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var _b = __read([x + width, y + height], 2), X = _b[0], Y = _b[1];\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (X > maxX)\n maxX = X;\n if (Y > maxY)\n maxY = Y;\n }\n return new BBox(minX, minY, maxX - minX, maxY - minY);\n}\n//# sourceMappingURL=helper.js.map","import { __read } from \"tslib\";\nimport { getItemsBBox } from '../utils';\nimport { BBox } from '../../bbox';\nexport var flex = function (container, children, config) {\n var width = container.width, height = container.height;\n var _a = config.flexDirection, flexDirection = _a === void 0 ? 'row' : _a, _b = config.flexWrap, flexWrap = _b === void 0 ? 'nowrap' : _b, _c = config.justifyContent, justifyContent = _c === void 0 ? 'flex-start' : _c, _d = config.alignContent, alignContent = _d === void 0 ? 'flex-start' : _d, _e = config.alignItems, alignItems = _e === void 0 ? 'flex-start' : _e;\n var isHorizontalFlow = flexDirection === 'row'; // || flexDirection === 'row-reverse';\n var isLeftToRightFlow = flexDirection === 'row' || flexDirection === 'column';\n // implement default layout;\n // flex direction\n var direction = isHorizontalFlow ? (isLeftToRightFlow ? [1, 0] : [-1, 0]) : isLeftToRightFlow ? [0, 1] : [0, -1];\n var _f = __read([0, 0], 2), offsetX = _f[0], offsetY = _f[1];\n var itemsFromDirection = children.map(function (child) {\n var _a;\n var width = child.width, height = child.height;\n var _b = __read([offsetX, offsetY], 2), x = _b[0], y = _b[1];\n _a = __read([offsetX + width * direction[0], offsetY + height * direction[1]], 2), offsetX = _a[0], offsetY = _a[1];\n return new BBox(x, y, width, height);\n });\n // flex wrap\n // todo\n // justify content\n // flex-start, flex-end, center\n var itemsForJustifyContentBBox = getItemsBBox(itemsFromDirection);\n var justifyContentOffset = {\n 'flex-start': 0,\n 'flex-end': isHorizontalFlow\n ? width - itemsForJustifyContentBBox.width\n : height - itemsForJustifyContentBBox.height,\n center: isHorizontalFlow\n ? (width - itemsForJustifyContentBBox.width) / 2\n : (height - itemsForJustifyContentBBox.height) / 2,\n };\n var itemsFromJustifyContent = itemsFromDirection.map(function (item) {\n var x = item.x, y = item.y;\n var itemBox = BBox.fromRect(item);\n itemBox.x = isHorizontalFlow ? x + justifyContentOffset[justifyContent] : x;\n itemBox.y = isHorizontalFlow ? y : y + justifyContentOffset[justifyContent];\n return itemBox;\n });\n // align items\n // flex-start, flex-end, center\n var itemsForAlignItemsBBox = getItemsBBox(itemsFromJustifyContent);\n var calcAlignItemsOffset = function (box) {\n var _a = __read(isHorizontalFlow ? ['height', height] : ['width', width], 2), key = _a[0], size = _a[1];\n switch (alignItems) {\n case 'flex-start':\n return 0;\n case 'flex-end':\n return size - box[key];\n case 'center':\n return size / 2 - box[key] / 2;\n default:\n return 0;\n }\n };\n var itemsFromAlignItems = itemsFromJustifyContent.map(function (item) {\n var x = item.x, y = item.y;\n var itemBox = BBox.fromRect(item);\n itemBox.x = isHorizontalFlow ? x : x + calcAlignItemsOffset(itemBox);\n itemBox.y = isHorizontalFlow ? y + calcAlignItemsOffset(itemBox) : y;\n return itemBox;\n });\n var finalItems = itemsFromAlignItems.map(function (item) {\n var _a, _b;\n var itemBox = BBox.fromRect(item);\n itemBox.x += (_a = container.x) !== null && _a !== void 0 ? _a : 0;\n itemBox.y += (_b = container.y) !== null && _b !== void 0 ? _b : 0;\n return itemBox;\n });\n return finalItems;\n};\n//# sourceMappingURL=index.js.map","export var grid = function (container, children, config) {\n // todo\n return [];\n};\n//# sourceMappingURL=index.js.map","import { flex } from './flex';\nimport { grid } from './grid';\nexport default (function (container, children, config) {\n if (children.length === 0)\n return [];\n var callers = { flex: flex, grid: grid };\n var caller = config.display in callers ? callers[config.display] : null;\n // @ts-ignore\n return (caller === null || caller === void 0 ? void 0 : caller.call(null, container, children, config)) || [];\n});\n//# sourceMappingURL=executer.js.map","import { __read } from \"tslib\";\n/**\n * @param vec\n * @param s\n */\nexport function scale(vec, s) {\n return [vec[0] * s, vec[1] * s];\n}\nexport function add(vec1, vec2) {\n return [vec1[0] + vec2[0], vec1[1] + vec2[1]];\n}\nexport function sub(vec1, vec2) {\n return [vec1[0] - vec2[0], vec1[1] - vec2[1]];\n}\nexport function min(vec1, vec2) {\n return [Math.min(vec1[0], vec2[0]), Math.min(vec1[1], vec2[1])];\n}\nexport function max(vec1, vec2) {\n return [Math.max(vec1[0], vec2[0]), Math.max(vec1[1], vec2[1])];\n}\nexport function distance(vec1, vec2) {\n return Math.sqrt(Math.pow((vec1[0] - vec2[0]), 2) + Math.pow((vec1[1] - vec2[1]), 2));\n}\nexport function normalize(vec) {\n if (vec[0] === 0 && vec[1] === 0)\n return [0, 0];\n var len = Math.sqrt(Math.pow(vec[0], 2) + Math.pow(vec[1], 2));\n return [vec[0] / len, vec[1] / len];\n}\n/**\n * 将给定向量围绕指定点旋转指定角度\n * @param vec\n * @param origin 旋转中心\n * @param angle 旋转角度,弧度制\n */\nexport function rotate(vec, origin, angle) {\n var _a = __read(vec, 2), x = _a[0], y = _a[1];\n var _b = __read(origin, 2), ox = _b[0], oy = _b[1];\n var dx = x - ox;\n var dy = y - oy;\n var sin = Math.sin(angle);\n var cos = Math.cos(angle);\n return [dx * cos - dy * sin + ox, dx * sin + dy * cos + oy];\n}\nexport function vertical(vec, flag) {\n return flag ? [vec[1], -vec[0]] : [-vec[1], vec[0]];\n}\n//# sourceMappingURL=matrix.js.map","/**\n * 保留x位小数\n */\nexport function toPrecision(num, precision) {\n return +num.toPrecision(precision);\n}\n/**\n * 千分位\n * 100000 -> 10,000\n */\nexport function toThousands(num) {\n return num.toLocaleString();\n}\n/**\n * 获得数字科学计数\n * 1000000 = 1e6\n */\nexport function toScientificNotation(num) {\n return num.toExponential();\n}\n/**\n * 用k的方式表达\n * 1234 -> 1K\n * 12345 -> 12K\n */\nexport function toKNotation(num, precision) {\n if (precision === void 0) { precision = 0; }\n if (Math.abs(num) < 1000)\n return String(num);\n return \"\".concat(toPrecision(num / 1000, precision).toLocaleString(), \"K\");\n}\n// Condition if x is smaller than zero.\nexport var ifNegative = function (x, a, b) { return (x < 0 && Number.isFinite(x) ? a : b); };\n// Condition if x is greater than zero.\nexport var ifPositive = function (x, a, b) { return (x > 0 && Number.isFinite(x) ? a : b); };\n// Calculate the result of a * b.\nexport var multi = function (a, b) { return a * b; };\n// Calculate the result of (a + b) / 2.\nexport var mid = function (a, b) { return a / 2 + (b || 0) / 2; };\n//# sourceMappingURL=number.js.map","export function omit(obj, keys) {\n var res = {};\n var innerKeys = Array.isArray(keys) ? keys : [keys];\n for (var key in obj) {\n if (!innerKeys.includes(key)) {\n res[key] = obj[key];\n }\n }\n return res;\n}\n//# sourceMappingURL=omit.js.map","import { __read } from \"tslib\";\nimport { add, sub, min as _min, max as _max, scale, distance } from './matrix';\nfunction smoothBezier(points, smooth, isLoop, constraint) {\n var _a;\n var cps = [];\n var hasConstraint = !!constraint;\n var prevPoint;\n var nextPoint;\n var min = [Infinity, Infinity];\n var max = [-Infinity, -Infinity];\n var nextCp0;\n var cp1;\n var cp0;\n if (hasConstraint) {\n _a = __read(constraint, 2), min = _a[0], max = _a[1];\n for (var i = 0, l = points.length; i < l; i += 1) {\n var point = points[i];\n min = _min(min, point);\n max = _max(max, point);\n }\n }\n for (var i = 0, len = points.length; i < len; i += 1) {\n var point = points[i];\n if (i === 0 && !isLoop) {\n cp0 = point;\n }\n else if (i === len - 1 && !isLoop) {\n cp1 = point;\n cps.push(cp0);\n cps.push(cp1);\n }\n else {\n var prevIdx = [i ? i - 1 : len - 1, i - 1][isLoop ? 0 : 1];\n prevPoint = points[prevIdx];\n nextPoint = points[isLoop ? (i + 1) % len : i + 1];\n var v = [0, 0];\n v = sub(nextPoint, prevPoint);\n v = scale(v, smooth);\n var d0 = distance(point, prevPoint);\n var d1 = distance(point, nextPoint);\n var sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n var v1 = scale(v, -d0);\n var v2 = scale(v, d1);\n cp1 = add(point, v1);\n nextCp0 = add(point, v2);\n // 下一个控制点必须在这个点和下一个点之间\n nextCp0 = _min(nextCp0, _max(nextPoint, point));\n nextCp0 = _max(nextCp0, _min(nextPoint, point));\n // 重新计算 cp1 的值\n v1 = sub(nextCp0, point);\n v1 = scale(v1, -d0 / d1);\n cp1 = add(point, v1);\n // 上一个控制点必须要在上一个点和这一个点之间\n cp1 = _min(cp1, _max(prevPoint, point));\n cp1 = _max(cp1, _min(prevPoint, point));\n // 重新计算 nextCp0 的值\n v2 = sub(point, cp1);\n v2 = scale(v2, d1 / d0);\n nextCp0 = add(point, v2);\n if (hasConstraint) {\n cp1 = _max(cp1, min);\n cp1 = _min(cp1, max);\n nextCp0 = _max(nextCp0, min);\n nextCp0 = _min(nextCp0, max);\n }\n cps.push(cp0);\n cps.push(cp1);\n cp0 = nextCp0;\n }\n }\n if (isLoop) {\n cps.push(cps.shift());\n }\n return cps;\n}\n/**\n * create bezier spline from catmull rom spline\n * @param {Array} crp Catmull Rom Points\n * @param {boolean} z Spline is loop\n * @param {Array} constraint Constraint\n */\nexport function catmullRom2Bezier(crp, z, constraint) {\n var _a;\n if (z === void 0) { z = false; }\n if (constraint === void 0) { constraint = [\n [0, 0],\n [1, 1],\n ]; }\n var isLoop = !!z;\n var pointList = [];\n for (var i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([crp[i], crp[i + 1]]);\n }\n var controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n var len = pointList.length;\n var d1 = [];\n var cp1;\n var cp2;\n var p;\n for (var i = 0; i < len - 1; i += 1) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n _a = __read(pointList, 1), p = _a[0];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n return d1;\n}\n//# sourceMappingURL=path.js.map","export var PRIMILTIVE_ATTRIBUTES = [\n '$el',\n 'anchor',\n 'cx',\n 'cy',\n 'd',\n 'defX',\n 'defY',\n 'dx',\n 'dy',\n 'fill',\n 'fillOpacity',\n 'filter',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'height',\n 'img',\n 'increasedLineWidthForHitTesting',\n 'innerHTML',\n 'isBillboard',\n 'billboardRotation',\n 'isSizeAttenuation',\n 'isClosed',\n 'isOverflowing',\n 'leading',\n 'letterSpacing',\n 'lineDash',\n 'lineHeight',\n 'lineWidth',\n 'markerEnd',\n 'markerEndOffset',\n 'markerMid',\n 'markerStart',\n 'markerStartOffset',\n 'maxLines',\n 'metrics',\n 'miterLimit',\n 'offsetX',\n 'offsetY',\n 'opacity',\n 'path',\n 'points',\n 'r',\n 'radius',\n 'rx',\n 'ry',\n 'shadowColor',\n 'src',\n 'stroke',\n 'strokeOpacity',\n 'text',\n 'textAlign',\n 'textBaseline',\n 'textDecorationColor',\n 'textDecorationLine',\n 'textDecorationStyle',\n 'textOverflow',\n 'textPath',\n 'textPathSide',\n 'textPathStartOffset',\n 'transform',\n 'transformOrigin',\n 'visibility',\n 'width',\n 'wordWrap',\n 'wordWrapWidth',\n 'x',\n 'x1',\n 'x2',\n 'y',\n 'y1',\n 'y2',\n 'z1',\n 'z2',\n 'zIndex',\n];\nexport function isPrimitiveAttribute(key) {\n return PRIMILTIVE_ATTRIBUTES.includes(key);\n}\nexport function getPrimitiveAttributes(attributes) {\n var object = {};\n for (var key in attributes) {\n if (isPrimitiveAttribute(key))\n object[key] = attributes[key];\n }\n return object;\n}\n//# sourceMappingURL=primitive.js.map","export function sampling(data, size) {\n if (data.length <= size)\n return data;\n var step = Math.floor(data.length / size);\n var result = [];\n for (var i = 0; i < data.length; i += step) {\n result.push(data[i]);\n }\n return result;\n}\n//# sourceMappingURL=sampling.js.map","/**\n * scale a shape to a given size\n */\nexport function scaleToPixel(el, size, applyScale) {\n if (applyScale === void 0) { applyScale = false; }\n var _a = el.getBBox(), width = _a.width, height = _a.height;\n var scale = size / Math.max(width, height);\n if (applyScale)\n el.scale(scale);\n return scale;\n}\n//# sourceMappingURL=scale-to-pixel.js.map","export function group(array, keyFunc) {\n var grouped = new Map();\n array.forEach(function (item) {\n var key = keyFunc(item);\n if (!grouped.has(key)) {\n grouped.set(key, []);\n }\n grouped.get(key).push(item);\n });\n return grouped;\n}\n//# sourceMappingURL=group.js.map","import { __classPrivateFieldGet, __read, __spreadArray, __values } from \"tslib\";\nimport { Circle, Ellipse, Group, HTML, Image, Line, Path, Polygon, Polyline, Rect, Text } from '../shapes';\nimport { group } from './group';\nfunction error(msg) {\n throw new Error(msg);\n}\n/**\n * A simple implementation of d3-selection for @antv/g.\n * It has the core features of d3-selection and extended ability.\n * Every methods of selection returns new selection if elements\n * are mutated(e.g. append, remove), otherwise return the selection itself(e.g. attr, style).\n * @see https://github.com/d3/d3-selection\n * @see https://github.com/antvis/g\n * @todo Nested selections.\n * @todo More useful functor.\n */\nvar Selection = /** @class */ (function () {\n function Selection(elements, data, parent, document, selections, transitions, updateElements) {\n if (elements === void 0) { elements = null; }\n if (data === void 0) { data = null; }\n if (parent === void 0) { parent = null; }\n if (document === void 0) { document = null; }\n if (selections === void 0) { selections = [null, null, null, null, null]; }\n if (transitions === void 0) { transitions = []; }\n if (updateElements === void 0) { updateElements = []; }\n _Selection_instances.add(this);\n this._elements = Array.from(elements);\n this._data = data;\n this._parent = parent;\n this._document = document;\n this._enter = selections[0];\n this._update = selections[1];\n this._exit = selections[2];\n this._merge = selections[3];\n this._split = selections[4];\n this._transitions = transitions;\n this._facetElements = updateElements;\n }\n Selection.prototype.selectAll = function (selector) {\n var elements = typeof selector === 'string' ? this._parent.querySelectorAll(selector) : selector;\n return new _a(elements, null, this._elements[0], this._document);\n };\n Selection.prototype.selectFacetAll = function (selector) {\n var elements = typeof selector === 'string' ? this._parent.querySelectorAll(selector) : selector;\n return new _a(this._elements, null, this._parent, this._document, undefined, undefined, elements);\n };\n /**\n * @todo Replace with querySelector which has bug now.\n */\n Selection.prototype.select = function (selector) {\n var element = typeof selector === 'string' ? this._parent.querySelectorAll(selector)[0] || null : selector;\n return new _a([element], null, element, this._document);\n };\n Selection.prototype.append = function (node) {\n var _this = this;\n var callback = typeof node === 'function' ? node : function () { return _this.createElement(node); };\n var elements = [];\n if (this._data !== null) {\n // For empty selection, append new element to parent.\n // Each element is bind with datum.\n for (var i = 0; i < this._data.length; i++) {\n var d = this._data[i];\n var _b = __read(Array.isArray(d) ? d : [d, null], 2), datum = _b[0], from = _b[1];\n var newElement = callback(datum, i);\n newElement.__data__ = datum;\n if (from !== null)\n newElement.__fromElements__ = from;\n this._parent.appendChild(newElement);\n elements.push(newElement);\n }\n return new _a(elements, null, this._parent, this._document);\n }\n // For non-empty selection, append new element to\n // selected element and return new selection.\n for (var i = 0; i < this._elements.length; i++) {\n var element = this._elements[i];\n var datum = element.__data__;\n var newElement = callback(datum, i);\n element.appendChild(newElement);\n elements.push(newElement);\n }\n return new _a(elements, null, elements[0], this._document);\n };\n Selection.prototype.maybeAppend = function (id, node) {\n var element = __classPrivateFieldGet(this, _Selection_instances, \"m\", _Selection_maybeAppend).call(this, id[0] === '#' ? id : \"#\".concat(id), node);\n element.attr('id', id);\n return element;\n };\n Selection.prototype.maybeAppendByClassName = function (className, node) {\n var cls = className.toString();\n var element = __classPrivateFieldGet(this, _Selection_instances, \"m\", _Selection_maybeAppend).call(this, cls[0] === '.' ? cls : \".\".concat(cls), node);\n element.attr('className', cls);\n return element;\n };\n Selection.prototype.maybeAppendByName = function (name, node) {\n var element = __classPrivateFieldGet(this, _Selection_instances, \"m\", _Selection_maybeAppend).call(this, \"[name=\\\"\".concat(name, \"\\\"]\"), node);\n element.attr('name', name);\n return element;\n };\n /**\n * Bind data to elements, and produce three selection:\n * Enter: Selection with empty elements and data to be bind to elements.\n * Update: Selection with elements to be updated.\n * Exit: Selection with elements to be removed.\n */\n Selection.prototype.data = function (data, id, groupId) {\n var e_1, _b;\n if (id === void 0) { id = function (d) { return d; }; }\n if (groupId === void 0) { groupId = function () { return null; }; }\n // An Array of new data.\n var enter = [];\n // An Array of elements to be updated.\n var update = [];\n // A Set of elements to be removed.\n var exit = new Set(this._elements);\n // An Array of data to be merged into one element.\n var merge = [];\n // A Set of elements to be split into multiple datum.\n var split = new Set();\n // A Map from key to each element.\n var keyElement = new Map(this._elements.map(function (d, i) { return [id(d.__data__, i), d]; }));\n // A Map from key to exist element. The Update Selection\n // can get element from this map, this is for diff among\n // facets.\n var keyUpdateElement = new Map(this._facetElements.map(function (d, i) { return [id(d.__data__, i), d]; }));\n // A Map from groupKey to a group of elements.\n var groupKeyElements = group(this._elements, function (d) { return groupId(d.__data__); });\n // Diff data with selection(elements with data).\n // !!! Note\n // The switch is strictly ordered, not not change the order of them.\n for (var i = 0; i < data.length; i++) {\n var datum = data[i];\n var key = id(datum, i);\n var groupKey = groupId(datum, i);\n // Append element to update selection if incoming data has\n // exactly the same key with elements.\n if (keyElement.has(key)) {\n var element = keyElement.get(key);\n element.__data__ = datum;\n element.__facet__ = false;\n update.push(element);\n exit.delete(element);\n keyElement.delete(key);\n // Append element to update selection if incoming data has\n // exactly the same key with updateElements.\n }\n else if (keyUpdateElement.has(key)) {\n var element = keyUpdateElement.get(key);\n element.__data__ = datum;\n // Flag this element should update its parentNode.\n element.__facet__ = true;\n update.push(element);\n keyUpdateElement.delete(key);\n // Append datum to merge selection if existed elements has\n // its key as groupKey.\n }\n else if (groupKeyElements.has(key)) {\n var group_2 = groupKeyElements.get(key);\n merge.push([datum, group_2]);\n try {\n for (var group_1 = (e_1 = void 0, __values(group_2)), group_1_1 = group_1.next(); !group_1_1.done; group_1_1 = group_1.next()) {\n var element = group_1_1.value;\n exit.delete(element);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (group_1_1 && !group_1_1.done && (_b = group_1.return)) _b.call(group_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n groupKeyElements.delete(key);\n // Append element to split selection if incoming data has\n // groupKey as its key, and bind to datum for it.\n }\n else if (keyElement.has(groupKey)) {\n var element = keyElement.get(groupKey);\n if (element.__toData__)\n element.__toData__.push(datum);\n else\n element.__toData__ = [datum];\n split.add(element);\n exit.delete(element);\n }\n else {\n enter.push(datum);\n }\n }\n // Create new selection with enter, update and exit.\n var S = [\n new _a([], enter, this._parent, this._document),\n new _a(update, null, this._parent, this._document),\n new _a(exit, null, this._parent, this._document),\n new _a([], merge, this._parent, this._document),\n new _a(split, null, this._parent, this._document),\n ];\n return new _a(this._elements, null, this._parent, this._document, S);\n };\n Selection.prototype.merge = function (other) {\n var elements = __spreadArray(__spreadArray([], __read(this._elements), false), __read(other._elements), false);\n var transitions = __spreadArray(__spreadArray([], __read(this._transitions), false), __read(other._transitions), false);\n return new _a(elements, null, this._parent, this._document, undefined, transitions);\n };\n Selection.prototype.createElement = function (type) {\n if (this._document) {\n return this._document.createElement(type, {});\n }\n var Ctor = _a.registry[type];\n if (Ctor)\n return new Ctor();\n return error(\"Unknown node type: \".concat(type));\n };\n /**\n * Apply callback for each selection(enter, update, exit)\n * and merge them into one selection.\n */\n Selection.prototype.join = function (enter, update, exit, merge, split) {\n if (enter === void 0) { enter = function (d) { return d; }; }\n if (update === void 0) { update = function (d) { return d; }; }\n if (exit === void 0) { exit = function (d) { return d.remove(); }; }\n if (merge === void 0) { merge = function (d) { return d; }; }\n if (split === void 0) { split = function (d) { return d.remove(); }; }\n var newEnter = enter(this._enter);\n var newUpdate = update(this._update);\n var newExit = exit(this._exit);\n var newMerge = merge(this._merge);\n var newSplit = split(this._split);\n return newUpdate.merge(newEnter).merge(newExit).merge(newMerge).merge(newSplit);\n };\n Selection.prototype.remove = function () {\n var _loop_1 = function (i) {\n var element = this_1._elements[i];\n var transition = this_1._transitions[i];\n if (transition) {\n transition.then(function () { return element.remove(); });\n }\n else {\n element.remove();\n }\n };\n var this_1 = this;\n // Remove node immediately if there is no transition,\n // otherwise wait until transition finished.\n for (var i = 0; i < this._elements.length; i++) {\n _loop_1(i);\n }\n return new _a([], null, this._parent, this._document, undefined, this._transitions);\n };\n Selection.prototype.each = function (callback) {\n for (var i = 0; i < this._elements.length; i++) {\n var element = this._elements[i];\n var datum = element.__data__;\n callback.call(element, datum, i);\n }\n return this;\n };\n Selection.prototype.attr = function (key, value) {\n var callback = typeof value !== 'function' ? function () { return value; } : value;\n return this.each(function (d, i) {\n if (value !== undefined)\n this[key] = callback.call(this, d, i);\n });\n };\n Selection.prototype.style = function (key, value, callable) {\n if (callable === void 0) { callable = true; }\n var callback = typeof value !== 'function' || !callable ? function () { return value; } : value;\n return this.each(function (d, i) {\n if (value !== undefined)\n this.style[key] = callback.call(this, d, i);\n });\n };\n Selection.prototype.styles = function (style, callable) {\n if (style === void 0) { style = {}; }\n if (callable === void 0) { callable = true; }\n return this.each(function (d, i) {\n var _this = this;\n Object.entries(style).forEach(function (_b) {\n var _c = __read(_b, 2), key = _c[0], value = _c[1];\n var callback = typeof value !== 'function' || !callable ? function () { return value; } : value;\n if (value !== undefined)\n _this.attr(key, callback.call(_this, d, i));\n });\n });\n };\n Selection.prototype.update = function (option, callable) {\n if (callable === void 0) { callable = true; }\n var callback = typeof option !== 'function' || !callable ? function () { return option; } : option;\n return this.each(function (d, i) {\n if (option && this.update)\n this.update(callback.call(this, d, i));\n });\n };\n /** if current stage is maybeAppend, skip update stage */\n Selection.prototype.maybeUpdate = function (option, callable) {\n if (callable === void 0) { callable = true; }\n var callback = typeof option !== 'function' || !callable ? function () { return option; } : option;\n return this.each(function (d, i) {\n if (option && this.update)\n this.update(callback.call(this, d, i));\n });\n };\n Selection.prototype.transition = function (callback) {\n var T = this._transitions;\n return this.each(function (d, i) {\n T[i] = callback.call(this, d, i);\n });\n };\n Selection.prototype.on = function (event, handler) {\n this.each(function () {\n this.addEventListener(event, handler);\n });\n return this;\n };\n Selection.prototype.call = function (callback) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n callback.call.apply(callback, __spreadArray([this._parent, this], __read(args), false));\n return this;\n };\n Selection.prototype.node = function () {\n return this._elements[0];\n };\n Selection.prototype.nodes = function () {\n return this._elements;\n };\n Selection.prototype.transitions = function () {\n return this._transitions.filter(function (t) { return !!t; });\n };\n Selection.prototype.parent = function () {\n return this._parent;\n };\n var _Selection_instances, _a, _Selection_maybeAppend;\n _a = Selection, _Selection_instances = new WeakSet(), _Selection_maybeAppend = function _Selection_maybeAppend(selector, node) {\n var element = this._elements[0];\n var child = element.querySelector(selector);\n if (child)\n return new _a([child], null, this._parent, this._document);\n var newChild = typeof node === 'string' ? this.createElement(node) : node();\n element.appendChild(newChild);\n return new _a([newChild], null, this._parent, this._document);\n };\n Selection.registry = {\n g: Group,\n rect: Rect,\n circle: Circle,\n path: Path,\n text: Text,\n ellipse: Ellipse,\n image: Image,\n line: Line,\n polygon: Polygon,\n polyline: Polyline,\n html: HTML,\n };\n return Selection;\n}());\nexport { Selection };\nexport function select(node) {\n return new Selection([node], null, node, node.ownerDocument);\n}\nexport function maybeAppend(parent, selector, node) {\n if (!parent.querySelector(selector)) {\n return select(parent).append(node);\n }\n return select(parent).select(selector);\n}\n//# sourceMappingURL=selection.js.map","import { isNumber, isArray } from '@antv/util';\n/**\n * 规范化padding\n */\nexport function parseSeriesAttr(series) {\n if (isNumber(series)) {\n return [series, series, series, series];\n }\n if (isArray(series)) {\n var len = series.length;\n if (len === 1) {\n return [series[0], series[0], series[0], series[0]];\n }\n if (len === 2) {\n return [series[0], series[1], series[0], series[1]];\n }\n if (len === 3) {\n return [series[0], series[1], series[2], series[1]];\n }\n if (len === 4) {\n return series;\n }\n }\n return [0, 0, 0, 0];\n}\n//# sourceMappingURL=series.js.map","import { __assign, __read, __values } from \"tslib\";\nimport { select } from './selection';\n/**\n * 获得图形的x、y、width、height\n */\nexport function getShapeSpace(shape) {\n var bounds = shape && shape.getRenderBounds();\n if (!bounds)\n return {\n width: 0,\n height: 0,\n };\n var max = bounds.getMax();\n var min = bounds.getMin();\n return {\n width: max[0] - min[0],\n height: max[1] - min[1],\n };\n}\nexport function getLocalBBox(shape) {\n var _a = shape.getLocalBounds(), min = _a.min, max = _a.max;\n var _b = __read([min, max], 2), _c = __read(_b[0], 2), x1 = _c[0], y1 = _c[1], _d = __read(_b[1], 2), x2 = _d[0], y2 = _d[1];\n return { x: x1, y: y1, width: x2 - x1, height: y2 - y1, left: x1, bottom: y2, top: y1, right: x2 };\n}\nexport function createTempText(group, attrs) {\n var textNode = select(group).append('text').node();\n textNode.attr(__assign(__assign({}, attrs), { visibility: 'hidden' }));\n return textNode;\n}\nexport function isHorizontal(p1, p2) {\n var _a = __read(p1, 2), x1 = _a[0], y1 = _a[1];\n var _b = __read(p2, 2), x2 = _b[0], y2 = _b[1];\n return x1 !== x2 && y1 === y2;\n}\nexport function isVertical(p1, p2) {\n var _a = __read(p1, 2), x1 = _a[0], y1 = _a[1];\n var _b = __read(p2, 2), x2 = _b[0], y2 = _b[1];\n return x1 === x2 && y1 !== y2;\n}\nexport function copyAttributes(target, source) {\n var e_1, _a;\n var attributes = source.attributes;\n try {\n for (var _b = __values(Object.entries(attributes)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2), key = _d[0], value = _d[1];\n if (key !== 'id' && key !== 'className')\n target.attr(key, 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//# sourceMappingURL=shape.js.map","export function toUppercaseFirstLetter(string) {\n return string.toString().charAt(0).toUpperCase() + string.toString().slice(1);\n}\nexport function toLowercaseFirstLetter(string) {\n return string.toString().charAt(0).toLowerCase() + string.toString().slice(1);\n}\nexport function addPrefix(string, prefix) {\n return \"\".concat(prefix).concat(toUppercaseFirstLetter(string));\n}\nexport function removePrefix(string, prefix, lowercaseFirstLetter) {\n var _a;\n if (lowercaseFirstLetter === void 0) { lowercaseFirstLetter = true; }\n var inferPrefix = prefix || ((_a = string.match(/^([a-z][a-z0-9]+)/)) === null || _a === void 0 ? void 0 : _a[0]) || '';\n var withoutPrefix = string.replace(new RegExp(\"^(\".concat(inferPrefix, \")\")), '');\n return lowercaseFirstLetter ? toLowercaseFirstLetter(withoutPrefix) : withoutPrefix;\n}\n//# sourceMappingURL=string.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { addPrefix, removePrefix, toUppercaseFirstLetter } from './string';\n/**\n * 对给定HTML对象应用给定样式\n * @param style {[key: string]: Object}\n * 样式表参考结构\n * {\n * '.selector': {\n * 'attrName': 'attr',\n * 'padding': '0 0 0 0',\n * 'background-color': 'red'\n * }\n * }\n */\nexport function applyStyleSheet(element, style) {\n Object.entries(style).forEach(function (_a) {\n var _b = __read(_a, 2), selector = _b[0], styleString = _b[1];\n // apply styles to element and children\n __spreadArray([element], __read(element.querySelectorAll(selector)), false).filter(function (el) { return el.matches(selector); })\n .forEach(function (target) {\n if (!target)\n return;\n var temp = target;\n temp.style.cssText += Object.entries(styleString).reduce(function (total, currVal) {\n return \"\".concat(total).concat(currVal.join(':'), \";\");\n }, '');\n });\n });\n}\nvar startsWith = function (text, prefix) {\n if (!(text === null || text === void 0 ? void 0 : text.startsWith(prefix)))\n return false;\n var nextChart = text[prefix.length];\n return nextChart >= 'A' && nextChart <= 'Z';\n};\nexport function subStyleProps(style, prefix, invert) {\n if (invert === void 0) { invert = false; }\n var result = {};\n Object.entries(style).forEach(function (_a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n // never transfer class property\n if (key === 'className' || key === 'class') {\n // do nothing\n }\n // @example showHandle -> showHandle, showHandleLabel -> showLabel\n else if (startsWith(key, 'show') && startsWith(removePrefix(key, 'show'), prefix) !== invert) {\n if (key === addPrefix(prefix, 'show'))\n result[key] = value;\n else\n result[key.replace(new RegExp(toUppercaseFirstLetter(prefix)), '')] = value;\n }\n // @example navFormatter -> formatter\n else if (!startsWith(key, 'show') && startsWith(key, prefix) !== invert) {\n var name_1 = removePrefix(key, prefix);\n // don't transfer filter if it represents “过滤器”\n if (name_1 === 'filter' && typeof value === 'function') {\n // do nothing\n }\n else\n result[name_1] = value;\n }\n });\n return result;\n}\nexport function superStyleProps(style, prefix) {\n return Object.entries(style).reduce(function (acc, _a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n if (key.startsWith('show'))\n acc[\"show\".concat(prefix).concat(key.slice(4))] = value;\n else\n acc[\"\".concat(prefix).concat(toUppercaseFirstLetter(key))] = value;\n return acc;\n }, {});\n}\n/**\n * extract group style from mixin style\n * @param style\n * @param ignoreStyleDict style will be ignore from style\n * @returns shape style and rest style\n */\nexport function splitStyle(style, ignoreStyleDict) {\n if (ignoreStyleDict === void 0) { ignoreStyleDict = ['x', 'y', 'class', 'className']; }\n var groupStyleDict = [\n 'transform',\n 'transformOrigin',\n 'anchor',\n 'visibility',\n 'pointerEvents',\n 'zIndex',\n 'cursor',\n 'clipPath',\n 'clipPathTargets',\n 'offsetPath',\n 'offsetPathTargets',\n 'offsetDistance',\n 'draggable',\n 'droppable',\n ];\n var output = {};\n var groupStyle = {};\n Object.entries(style).forEach(function (_a) {\n var _b = __read(_a, 2), key = _b[0], val = _b[1];\n if (ignoreStyleDict.includes(key)) {\n // do nothing\n }\n else if (groupStyleDict.indexOf(key) !== -1)\n groupStyle[key] = val;\n else\n output[key] = val;\n });\n return [output, groupStyle];\n}\n//# sourceMappingURL=style.js.map","import { __read } from \"tslib\";\nexport function getTranslate(node, x, y) {\n var _a = node.getBBox(), width = _a.width, height = _a.height;\n var _b = __read([x, y].map(function (v, i) {\n var _a;\n return v.includes('%')\n ? (parseFloat(((_a = v.match(/[+-]?([0-9]*[.])?[0-9]+/)) === null || _a === void 0 ? void 0 : _a[0]) || '0') / 100) * (i === 0 ? width : height)\n : v;\n }), 2), tx = _b[0], ty = _b[1];\n return [tx, ty];\n}\n/**\n * transform that support translate percent value\n */\nexport function percentTransform(node, val) {\n if (!val)\n return;\n try {\n var reg = /translate\\(([+-]*[\\d]+[%]*),[ ]*([+-]*[\\d]+[%]*)\\)/g;\n var computedVal = val.replace(reg, function (match, x, y) { return \"translate(\".concat(getTranslate(node, x, y), \")\"); });\n node.attr('transform', computedVal);\n }\n catch (e) {\n // do nothing\n }\n}\n//# sourceMappingURL=transform.js.map","export function transpose(m) {\n var _a;\n return ((_a = m[0]) === null || _a === void 0 ? void 0 : _a.map(function (x, i) { return m.map(function (x) { return x[i]; }); })) || [];\n}\n//# sourceMappingURL=transpose.js.map","import { __extends } from \"tslib\";\nimport { CustomElement } from '../shapes';\nimport { createOffscreenGroup, deepAssign, visibility } from '../util';\nfunction applyVisibility() {\n visibility(this, this.attributes.visibility !== 'hidden');\n}\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n function Component(options, defaultStyleProps) {\n if (defaultStyleProps === void 0) { defaultStyleProps = {}; }\n var _this = _super.call(this, deepAssign({}, { style: defaultStyleProps }, options)) || this;\n _this.initialized = false;\n _this._defaultOptions = defaultStyleProps;\n return _this;\n }\n Object.defineProperty(Component.prototype, \"offscreenGroup\", {\n get: function () {\n if (!this._offscreen)\n this._offscreen = createOffscreenGroup(this);\n return this._offscreen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"defaultOptions\", {\n get: function () {\n return this._defaultOptions;\n },\n enumerable: false,\n configurable: true\n });\n Component.prototype.connectedCallback = function () {\n this.render(this.attributes, this);\n this.bindEvents(this.attributes, this);\n this.initialized = true;\n };\n Component.prototype.disconnectedCallback = function () {\n var _a;\n (_a = this._offscreen) === null || _a === void 0 ? void 0 : _a.destroy();\n };\n Component.prototype.attributeChangedCallback = function (name) {\n if (name === 'visibility') {\n applyVisibility.call(this);\n }\n };\n Component.prototype.update = function (attr, animate) {\n var _a;\n this.attr(deepAssign({}, this.attributes, attr || {}));\n return (_a = this.render) === null || _a === void 0 ? void 0 : _a.call(this, this.attributes, this, animate);\n };\n Component.prototype.clear = function () {\n this.removeChildren();\n };\n Component.prototype.bindEvents = function (attributes, container) { };\n return Component;\n}(CustomElement));\nexport { Component };\n//# sourceMappingURL=component.js.map","/**\n * ○\n */\nexport var circle = function (x, y, r) {\n return [['M', x - r, y], ['A', r, r, 0, 1, 0, x + r, y], ['A', r, r, 0, 1, 0, x - r, y], ['Z']];\n};\n/**\n * Cname circle to point.\n */\nexport var point = circle;\n/**\n * □\n */\nexport var square = function (x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n};\n/**\n * ◇\n */\nexport var diamond = function (x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n};\n/**\n * △\n */\nexport var triangle = function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['Z']];\n};\n/**\n * ▽\n */\nexport var triangleDown = function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n};\n/**\n * ⬡\n */\nexport var hexagon = function (x, y, r) {\n var diffX = (r / 2) * Math.sqrt(3);\n return [\n ['M', x, y - r],\n ['L', x + diffX, y - r / 2],\n ['L', x + diffX, y + r / 2],\n ['L', x, y + r],\n ['L', x - diffX, y + r / 2],\n ['L', x - diffX, y - r / 2],\n ['Z'],\n ];\n};\n/**\n * ▷◁\n */\nexport var bowtie = function (x, y, r) {\n var diffY = r - 1.5;\n return [['M', x - r, y - diffY], ['L', x + r, y + diffY], ['L', x + r, y - diffY], ['L', x - r, y + diffY], ['Z']];\n};\n/** -- 非闭合图形 ------------------------------------------------------------------------------- */\n/**\n * |\n */\nexport var line = function (x, y, r) {\n return [\n ['M', x, y + r],\n ['L', x, y - r],\n ];\n};\n/**\n * ✕\n */\nexport var cross = function (x, y, r) {\n return [\n ['M', x - r, y - r],\n ['L', x + r, y + r],\n ['M', x + r, y - r],\n ['L', x - r, y + r],\n ];\n};\n/**\n * 工\n */\nexport var tick = function (x, y, r) {\n return [\n ['M', x - r / 2, y - r],\n ['L', x + r / 2, y - r],\n ['M', x, y - r],\n ['L', x, y + r],\n ['M', x - r / 2, y + r],\n ['L', x + r / 2, y + r],\n ];\n};\n/**\n * +\n */\nexport var plus = function (x, y, r) {\n return [\n ['M', x - r, y],\n ['L', x + r, y],\n ['M', x, y - r],\n ['L', x, y + r],\n ];\n};\n/**\n * -\n */\nexport var hyphen = function (x, y, r) {\n return [\n ['M', x - r, y],\n ['L', x + r, y],\n ];\n};\n/** -- 用于图例的 marker ------------------------------------------------------------------------------- */\n/**\n * ---\n */\nexport var dot = function (x, y, r) {\n return [\n ['M', x - r, y],\n ['L', x + r, y],\n ];\n};\nexport var dash = dot;\nexport var smooth = function (x, y, r) {\n return [\n ['M', x - r, y],\n ['A', r / 2, r / 2, 0, 1, 1, x, y],\n ['A', r / 2, r / 2, 0, 1, 0, x + r, y],\n ];\n};\nexport var hv = function (x, y, r) {\n return [\n ['M', x - r - 1, y - 2.5],\n ['L', x, y - 2.5],\n ['L', x, y + 2.5],\n ['L', x + r + 1, y + 2.5],\n ];\n};\nexport var vh = function (x, y, r) {\n return [\n ['M', x - r - 1, y + 2.5],\n ['L', x, y + 2.5],\n ['L', x, y - 2.5],\n ['L', x + r + 1, y - 2.5],\n ];\n};\nexport var hvh = function (x, y, r) {\n return [\n ['M', x - (r + 1), y + 2.5],\n ['L', x - r / 2, y + 2.5],\n ['L', x - r / 2, y - 2.5],\n ['L', x + r / 2, y - 2.5],\n ['L', x + r / 2, y + 2.5],\n ['L', x + r + 1, y + 2.5],\n ];\n};\nexport function vhv(x, y) {\n // 宽 13px,高 8px\n return [\n ['M', x - 5, y + 2.5],\n ['L', x - 5, y],\n ['L', x, y],\n ['L', x, y - 3],\n ['L', x, y + 3],\n ['L', x + 6.5, y + 3],\n ];\n}\n/** --------------------------------------------------------------------------------- */\nexport var button = function (x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y], ['L', x - r, y + r], ['Z']];\n};\n//# sourceMappingURL=symbol.js.map","import { isObject, isString, isFunction } from '@antv/util';\n/**\n * 解析marker类型\n */\nexport function parseMarker(icon) {\n var type = 'default';\n if (isObject(icon) && icon instanceof Image)\n type = 'image';\n else if (isFunction(icon))\n type = 'symbol';\n else if (isString(icon)) {\n var dataURLsPattern = new RegExp('data:(image|text)');\n if (icon.match(dataURLsPattern)) {\n type = 'base64';\n }\n else if (/^(https?:\\/\\/(([a-zA-Z0-9]+-?)+[a-zA-Z0-9]+\\.)+[a-zA-Z]+)(:\\d+)?(\\/.*)?(\\?.*)?(#.*)?$/.test(icon)) {\n type = 'url';\n }\n else {\n // 不然就当作symbol string 处理\n type = 'symbol';\n }\n }\n return type;\n}\n//# sourceMappingURL=utils.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { isFunction } from '@antv/util';\nimport { Component } from '../../core';\nimport { ifShow, select } from '../../util';\nimport { bowtie, circle, cross, dash, diamond, dot, hexagon, hv, hvh, hyphen, line, plus, point, smooth, square, tick, triangle, triangleDown, vh, vhv, } from './symbol';\nimport { parseMarker } from './utils';\nfunction getType(symbol) {\n var markerType = parseMarker(symbol);\n if (['base64', 'url', 'image'].includes(markerType)) {\n return 'image';\n }\n if (symbol && markerType === 'symbol') {\n return 'path';\n }\n return null;\n}\nvar Marker = /** @class */ (function (_super) {\n __extends(Marker, _super);\n function Marker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Marker.prototype.render = function (attributes, container) {\n var symbol = attributes.symbol, _a = attributes.size, size = _a === void 0 ? 16 : _a, style = __rest(attributes, [\"symbol\", \"size\"]);\n var type = getType(symbol);\n ifShow(!!type, select(container), function (group) {\n group\n .maybeAppendByClassName(\"marker\", type)\n .attr('className', \"marker \".concat(type, \"-marker\"))\n .call(function (selection) {\n if (type === 'image') {\n // todo 大小和 path symbol 保持一致\n var r = size * 2;\n selection.styles({\n img: symbol,\n width: r,\n height: r,\n x: -size,\n y: -size,\n });\n }\n else {\n var r = size / 2;\n var symbolFn = isFunction(symbol) ? symbol : Marker.getSymbol(symbol);\n selection.styles(__assign({ path: symbolFn === null || symbolFn === void 0 ? void 0 : symbolFn(0, 0, r) }, style));\n }\n });\n });\n };\n Marker.MARKER_SYMBOL_MAP = new Map();\n /**\n * 注册 icon 类型\n * @param type\n * @param path\n */\n Marker.registerSymbol = function (type, symbol) {\n Marker.MARKER_SYMBOL_MAP.set(type, symbol);\n };\n /**\n * 获取已经注册的 icon 的 path\n */\n Marker.getSymbol = function (type) {\n return Marker.MARKER_SYMBOL_MAP.get(type);\n };\n /**\n * @returns 获取已经注册的 icon 的类型\n */\n Marker.getSymbols = function () {\n return Array.from(Marker.MARKER_SYMBOL_MAP.keys());\n };\n return Marker;\n}(Component));\nexport { Marker };\n/** Shapes for Point Geometry */\nMarker.registerSymbol('cross', cross);\nMarker.registerSymbol('hyphen', hyphen);\nMarker.registerSymbol('line', line);\nMarker.registerSymbol('plus', plus);\nMarker.registerSymbol('tick', tick);\nMarker.registerSymbol('circle', circle);\nMarker.registerSymbol('point', point);\nMarker.registerSymbol('bowtie', bowtie);\nMarker.registerSymbol('hexagon', hexagon);\nMarker.registerSymbol('square', square);\nMarker.registerSymbol('diamond', diamond);\nMarker.registerSymbol('triangle', triangle);\nMarker.registerSymbol('triangle-down', triangleDown);\n/** LineSymbols */\nMarker.registerSymbol('line', line);\nMarker.registerSymbol('dot', dot);\nMarker.registerSymbol('dash', dash);\nMarker.registerSymbol('smooth', smooth);\nMarker.registerSymbol('hv', hv);\nMarker.registerSymbol('vh', vh);\nMarker.registerSymbol('hvh', hvh);\nMarker.registerSymbol('vhv', vhv);\n//# sourceMappingURL=index.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { deepMix } from '@antv/util';\nimport { DisplayObject, Group } from '../../shapes';\nimport { deepAssign, select } from '../../util';\nvar Columns = /** @class */ (function (_super) {\n __extends(Columns, _super);\n function Columns(_a) {\n var _this = this;\n var style = _a.style, rest = __rest(_a, [\"style\"]);\n _this = _super.call(this, deepMix({}, { type: 'column' }, __assign({ style: style }, rest))) || this;\n _this.columnsGroup = new Group({ name: 'columns' });\n _this.appendChild(_this.columnsGroup);\n _this.render();\n return _this;\n }\n Columns.prototype.render = function () {\n var columns = this.attributes.columns;\n select(this.columnsGroup)\n .selectAll('.column')\n .data(columns.flat())\n .join(function (enter) {\n return enter\n .append('rect')\n .attr('className', 'column')\n .each(function (style) {\n this.attr(style);\n });\n }, function (update) {\n return update.each(function (style) {\n this.attr(style);\n });\n }, function (exit) { return exit.remove(); });\n };\n Columns.prototype.update = function (attr) {\n this.attr(deepAssign({}, this.attributes, attr));\n this.render();\n };\n Columns.prototype.clear = function () {\n this.removeChildren();\n };\n return Columns;\n}(DisplayObject));\nexport { Columns };\n//# sourceMappingURL=columns.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { deepMix } from '@antv/util';\nimport { DisplayObject, Group } from '../../shapes';\nimport { deepAssign, select } from '../../util';\nvar Lines = /** @class */ (function (_super) {\n __extends(Lines, _super);\n function Lines(_a) {\n var _this = this;\n var style = _a.style, rest = __rest(_a, [\"style\"]);\n _this = _super.call(this, deepMix({}, { type: 'lines' }, __assign({ style: style }, rest))) || this;\n _this.linesGroup = _this.appendChild(new Group());\n _this.areasGroup = _this.appendChild(new Group());\n _this.render();\n return _this;\n }\n Lines.prototype.render = function () {\n var _a = this.attributes, lines = _a.lines, areas = _a.areas;\n if (lines)\n this.renderLines(lines);\n if (areas)\n this.renderAreas(areas);\n };\n Lines.prototype.clear = function () {\n this.linesGroup.removeChildren();\n this.areasGroup.removeChildren();\n };\n Lines.prototype.update = function (attr) {\n this.attr(deepAssign({}, this.attributes, attr));\n this.render();\n };\n Lines.prototype.renderLines = function (lines) {\n select(this.linesGroup)\n .selectAll('.line')\n .data(lines)\n .join(function (enter) {\n return enter\n .append('path')\n .attr('className', 'line')\n .each(function (style) {\n this.attr(style);\n });\n }, function (update) {\n return update.each(function (style) {\n this.attr(style);\n });\n }, function (exit) { return exit.remove(); });\n };\n Lines.prototype.renderAreas = function (areas) {\n select(this.linesGroup)\n .selectAll('.area')\n .data(areas)\n .join(function (enter) {\n return enter\n .append('path')\n .attr('className', 'area')\n .each(function (style) {\n this.attr(style);\n });\n }, function (update) {\n return update.each(function (style) {\n this.style(style);\n });\n }, function (exit) { return exit.remove(); });\n };\n return Lines;\n}(DisplayObject));\nexport { Lines };\n//# sourceMappingURL=lines.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { clone, isEqual, clamp } from '@antv/util';\nimport { catmullRom2Bezier } from '../../util';\n/**\n * 根据数据获得每条线各点x,y值\n */\nexport function dataToLines(data, scales) {\n var _a;\n var x = scales.x, y = scales.y;\n var _b = __read((y.getOptions().range || [0, 0]), 2), max = _b[0], min = _b[1];\n if (min > max)\n _a = __read([max, min], 2), min = _a[0], max = _a[1];\n return data.map(function (points) {\n var lines = points.map(function (val, idx) {\n return [x.map(idx), clamp(y.map(val), min, max)];\n });\n return lines;\n });\n}\n/**\n * 根据线的点数据生成折线path\n */\nexport function lineToLinePath(line, reverse) {\n if (reverse === void 0) { reverse = false; }\n var M = reverse ? line.length - 1 : 0;\n var linePath = line.map(function (point, idx) { return __spreadArray([idx === M ? 'M' : 'L'], __read(point), false); });\n return reverse ? linePath.reverse() : linePath;\n}\n/**\n * 根据点数据生成曲线path\n * @param points 点数据\n * @param reverse 是否倒序生成\n */\nexport function lineToCurvePath(line, reverse) {\n if (reverse === void 0) { reverse = false; }\n if (line.length <= 2) {\n return lineToLinePath(line);\n }\n var data = [];\n var len = line.length;\n for (var idx = 0; idx < len; idx += 1) {\n var point = reverse ? line[len - idx - 1] : line[idx];\n if (!isEqual(point, data.slice(-2))) {\n data.push.apply(data, __spreadArray([], __read(point), false));\n }\n }\n var path = catmullRom2Bezier(data, false);\n if (reverse) {\n path.unshift(__spreadArray(['M'], __read(line[len - 1]), false));\n }\n else {\n path.unshift(__spreadArray(['M'], __read(line[0]), false));\n }\n return path;\n}\n/**\n * 根据baseline将path闭合\n */\nexport function closePathByBaseLine(path, width, baseline) {\n var closedPath = clone(path);\n closedPath.push(['L', width, baseline], ['L', 0, baseline], ['Z']);\n return closedPath;\n}\n/**\n * 将多条线的点数据生成区域path\n * 可以是折线或曲线\n */\nexport function linesToAreaPaths(lines, smooth, width, baseline) {\n return lines.map(function (line) {\n return closePathByBaseLine(smooth ? lineToCurvePath(line) : lineToLinePath(line), width, baseline);\n });\n}\n/**\n * 生成折线堆叠区域封闭图形路径\n */\nexport function linesToStackAreaPaths(lines, width, baseline) {\n var paths = [];\n for (var idx = lines.length - 1; idx >= 0; idx -= 1) {\n var currLine = lines[idx];\n var currCurvePath = lineToLinePath(currLine);\n var path = void 0;\n if (idx === 0) {\n // 最底部的线直接与y=0连接成闭合区域\n path = closePathByBaseLine(currCurvePath, width, baseline);\n }\n else {\n // 计算下一根曲线的反向路径\n var belowLine = lines[idx - 1];\n var belowCurvePath = lineToLinePath(belowLine, true);\n belowCurvePath[0][0] = 'L';\n // 连接路径\n path = __spreadArray(__spreadArray(__spreadArray([], __read(currCurvePath), false), __read(belowCurvePath), false), [['Z']], false);\n }\n paths.push(path);\n }\n return paths;\n}\n/**\n * 生成曲线堆叠区域封闭图形路径\n */\nexport function linesToStackCurveAreaPaths(lines, width, baseline) {\n var paths = [];\n for (var idx = lines.length - 1; idx >= 0; idx -= 1) {\n var currLine = lines[idx];\n var currCurvePath = lineToCurvePath(currLine);\n var path = void 0;\n if (idx === 0) {\n // 最底部的线直接与y=0连接成闭合区域\n path = closePathByBaseLine(currCurvePath, width, baseline);\n }\n else {\n // 计算下一根曲线的反向路径\n var belowLine = lines[idx - 1];\n var belowCurvePath = lineToCurvePath(belowLine, true);\n /**\n * 将线条连接成闭合路径\n * M C C C C C\n * A ~ -> ~ B\n * ⬆ ⬇\n * D ~ <- ~ C\n * C C C C C M\n *\n */\n var A = currLine[0];\n // const B = currLine[currLine.length - 1];\n // const C = belowLine[belowLine.length - 1];\n // const D = belowLine[0];\n // 将反向曲线开头 M X Y 改为 L X Y\n belowCurvePath[0][0] = 'L';\n // 连接路径\n path = __spreadArray(__spreadArray(__spreadArray([], __read(currCurvePath), false), __read(belowCurvePath), false), [__spreadArray(['M'], __read(A), false), ['Z']], false);\n }\n paths.push(path);\n }\n return paths;\n}\n//# sourceMappingURL=path.js.map","import { __read } from \"tslib\";\nimport { clone, min, minBy, max, maxBy } from '@antv/util';\n/**\n * 获得数据的最值\n */\nexport function getRange(data) {\n if (data.length === 0)\n return [0, 0];\n return [min(minBy(data, function (arr) { return min(arr) || 0; })), max(maxBy(data, function (arr) { return max(arr) || 0; }))];\n}\n/**\n * 数据转换为堆叠数据\n */\nexport function getStackedData(_) {\n var data = clone(_);\n // 生成堆叠数据\n var datumLen = data[0].length;\n // 上一个堆叠的数据值,分别记录正负\n var _a = __read([Array(datumLen).fill(0), Array(datumLen).fill(0)], 2), positivePrev = _a[0], negativePrev = _a[1];\n for (var i = 0; i < data.length; i += 1) {\n var datum = data[i];\n for (var j = 0; j < datumLen; j += 1) {\n if (datum[j] >= 0) {\n datum[j] += positivePrev[j];\n positivePrev[j] = datum[j];\n }\n else {\n datum[j] += negativePrev[j];\n negativePrev[j] = datum[j];\n }\n }\n }\n return data;\n}\n//# sourceMappingURL=utils.js.map","import { __assign, __extends, __read } from \"tslib\";\nimport { Band, Linear } from '@antv/scale';\nimport { clone, isArray, isFunction, isNumber } from '@antv/util';\nimport { Component } from '../../core';\nimport { maybeAppend, select, subStyleProps } from '../../util';\nimport { Columns } from './columns';\nimport { Lines } from './lines';\nimport { dataToLines, lineToCurvePath, lineToLinePath, linesToAreaPaths, linesToStackAreaPaths, linesToStackCurveAreaPaths, } from './path';\nimport { getRange, getStackedData } from './utils';\nvar Sparkline = /** @class */ (function (_super) {\n __extends(Sparkline, _super);\n function Sparkline(options) {\n return _super.call(this, options, {\n type: 'line',\n width: 200,\n height: 20,\n isStack: false,\n color: ['#83daad', '#edbf45', '#d2cef9', '#e290b3', '#6f63f4'],\n smooth: true,\n lineLineWidth: 1,\n areaOpacity: 0,\n isGroup: false,\n columnLineWidth: 1,\n columnStroke: '#fff',\n scale: 1,\n spacing: 0,\n }) || this;\n }\n Object.defineProperty(Sparkline.prototype, \"rawData\", {\n /**\n * 将data统一格式化为数组形式\n * 如果堆叠,则生成堆叠数据\n */\n get: function () {\n var rawData = this.attributes.data;\n if (!rawData || (rawData === null || rawData === void 0 ? void 0 : rawData.length) === 0)\n return [[]];\n var data = clone(rawData);\n // number[] -> number[][]\n return isNumber(data[0]) ? [data] : data;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"data\", {\n get: function () {\n if (this.attributes.isStack)\n return getStackedData(this.rawData);\n return this.rawData;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"scales\", {\n get: function () {\n return this.createScales(this.data);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"baseline\", {\n /**\n * 基准线,默认为 0\n */\n get: function () {\n var y = this.scales.y;\n var _a = __read(y.getOptions().domain || [0, 0], 2), y1 = _a[0], y2 = _a[1];\n if (y2 < 0) {\n return y.map(y2);\n }\n return y.map(y1 < 0 ? 0 : y1);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"containerShape\", {\n get: function () {\n var _a = this.attributes, width = _a.width, height = _a.height;\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"linesStyle\", {\n get: function () {\n var _this = this;\n var _a = this.attributes, type = _a.type, isStack = _a.isStack, smooth = _a.smooth;\n if (type !== 'line')\n throw new Error('linesStyle can only be used in line type');\n var areaStyle = subStyleProps(this.attributes, 'area');\n var lineStyle = subStyleProps(this.attributes, 'line');\n var width = this.containerShape.width;\n var data = this.data;\n if (data[0].length === 0)\n return { lines: [], areas: [] };\n var _b = this.scales, x = _b.x, y = _b.y;\n // 线条Path\n var lines = dataToLines(data, { type: 'line', x: x, y: y });\n // 生成区域path\n var areas = [];\n if (areaStyle) {\n var baseline = this.baseline;\n if (isStack) {\n areas = smooth\n ? linesToStackCurveAreaPaths(lines, width, baseline)\n : linesToStackAreaPaths(lines, width, baseline);\n }\n else {\n areas = linesToAreaPaths(lines, smooth, width, baseline);\n }\n }\n return {\n lines: lines.map(function (line, idx) {\n return __assign({ stroke: _this.getColor(idx), path: smooth ? lineToCurvePath(line) : lineToLinePath(line) }, lineStyle);\n }),\n areas: areas.map(function (path, idx) {\n return __assign({ path: path, fill: _this.getColor(idx) }, areaStyle);\n }),\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"columnsStyle\", {\n get: function () {\n var _this = this;\n var columnStyle = subStyleProps(this.attributes, 'column');\n var _a = this.attributes, isStack = _a.isStack, type = _a.type, scale = _a.scale;\n if (type !== 'column')\n throw new Error('columnsStyle can only be used in column type');\n var height = this.containerShape.height;\n var data = this.rawData;\n if (!data)\n return { columns: [] };\n if (isStack)\n data = getStackedData(data);\n var _b = this.createScales(data), x = _b.x, y = _b.y;\n var _c = __read(getRange(data), 2), minVal = _c[0], maxVal = _c[1];\n var heightScale = new Linear({\n domain: [0, maxVal - (minVal > 0 ? 0 : minVal)],\n range: [0, height * scale],\n });\n var bandWidth = x.getBandWidth();\n var rawData = this.rawData;\n return {\n columns: data.map(function (column, i) {\n return column.map(function (val, j) {\n var barWidth = bandWidth / data.length;\n var getShape = function () {\n return {\n x: x.map(j) + barWidth * i,\n y: val >= 0 ? y.map(val) : y.map(0),\n width: barWidth,\n height: heightScale.map(Math.abs(val)),\n };\n };\n var getStackShape = function () {\n return {\n x: x.map(j),\n y: y.map(val),\n width: bandWidth,\n height: heightScale.map(rawData[i][j]),\n };\n };\n return __assign(__assign({ fill: _this.getColor(i) }, columnStyle), (isStack ? getStackShape() : getShape()));\n });\n }),\n };\n },\n enumerable: false,\n configurable: true\n });\n Sparkline.prototype.render = function (attributes, container) {\n maybeAppend(container, '.container', 'rect').attr('className', 'container').node();\n var type = attributes.type;\n var className = \"spark\".concat(type);\n var style = type === 'line' ? this.linesStyle : this.columnsStyle;\n select(container)\n .selectAll('.spark')\n .data([type])\n .join(function (enter) {\n return enter\n .append(function (type) {\n if (type === 'line')\n return new Lines({ className: className, style: style });\n return new Columns({ className: className, style: style });\n })\n .attr('className', \"spark \".concat(className));\n }, function (update) { return update.update(style); }, function (exit) { return exit.remove(); });\n };\n /**\n * 根据数据索引获取color\n */\n Sparkline.prototype.getColor = function (index) {\n var color = this.attributes.color;\n if (isArray(color)) {\n return color[index % color.length];\n }\n if (isFunction(color)) {\n return color.call(null, index);\n }\n return color;\n };\n /**\n * 根据数据生成scale\n */\n Sparkline.prototype.createScales = function (data) {\n var _a, _b;\n var _c = this.attributes, type = _c.type, scale = _c.scale, _d = _c.range, range = _d === void 0 ? [] : _d, spacing = _c.spacing;\n var _e = this.containerShape, width = _e.width, height = _e.height;\n var _f = __read(getRange(data), 2), minVal = _f[0], maxVal = _f[1];\n var yScale = new Linear({\n domain: [(_a = range[0]) !== null && _a !== void 0 ? _a : minVal, (_b = range[1]) !== null && _b !== void 0 ? _b : maxVal],\n range: [height, height * (1 - scale)],\n });\n if (type === 'line') {\n return {\n type: type,\n x: new Linear({\n domain: [0, data[0].length - 1],\n range: [0, width],\n }),\n y: yScale,\n };\n }\n return {\n type: type,\n x: new Band({\n domain: data[0].map(function (val, idx) { return idx; }),\n range: [0, width],\n paddingInner: spacing,\n paddingOuter: spacing / 2,\n align: 0.5,\n }),\n y: yScale,\n };\n };\n Sparkline.tag = 'sparkline';\n return Sparkline;\n}(Component));\nexport { Sparkline };\n//# sourceMappingURL=index.js.map","import { __assign, __read } from \"tslib\";\n/* global Keyframe */\nimport { isNil } from '@antv/util';\nimport { show, hide } from '../util';\nfunction isStandardAnimationOption(option) {\n if (typeof option === 'boolean')\n return false;\n return 'enter' in option && 'update' in option && 'exit' in option;\n}\nexport function parseAnimationOption(option) {\n // option is false => all animation is false\n // option is { enter: {}, update: {}, exit: {}, ...baseOption } =>\n // { enter: { ...enter, ...baseOption }, update: { ...update, ...baseOption }, exit: { ...exit, ...baseOption } }\n // option is { enter: {}, update: {}, exit: {} } => option\n if (!option)\n return { enter: false, update: false, exit: false };\n var keys = ['enter', 'update', 'exit'];\n var baseOption = Object.fromEntries(Object.entries(option).filter(function (_a) {\n var _b = __read(_a, 1), k = _b[0];\n return !keys.includes(k);\n }));\n return Object.fromEntries(keys.map(function (k) {\n if (isStandardAnimationOption(option)) {\n if (option[k] === false)\n return [k, false];\n return [k, __assign(__assign({}, option[k]), baseOption)];\n }\n return [k, baseOption];\n }));\n}\nexport function onAnimateFinished(animation, callback) {\n if (!animation)\n callback();\n else\n animation.finished.then(callback);\n}\nexport function onAnimatesFinished(animations, callback) {\n if (animations.length === 0)\n callback();\n else\n Promise.all(animations.map(function (a) { return a === null || a === void 0 ? void 0 : a.finished; })).then(callback);\n}\nfunction attr(target, value) {\n if ('update' in target)\n target.update(value);\n else\n target.attr(value);\n}\nexport function animate(target, keyframes, options) {\n if (keyframes.length === 0)\n return null;\n if (!options) {\n var state = keyframes.slice(-1)[0];\n attr(target, { style: state });\n return null;\n }\n return target.animate(keyframes, options);\n}\nfunction identicalTextNode(source, target) {\n if (source.nodeName !== 'text' || target.nodeName !== 'text')\n return false;\n if (source.attributes.text !== target.attributes.text)\n return false;\n return true;\n}\n/**\n * transition source shape to target shape\n * @param source\n * @param target\n * @param options\n * @param after destroy or hide source shape after transition\n */\nexport function transitionShape(source, target, options, after) {\n if (after === void 0) { after = 'destroy'; }\n // If source and target are both text node and with same text,\n // do not apply shape animation.\n if (identicalTextNode(source, target)) {\n source.remove();\n return [null];\n }\n var afterTransition = function () {\n if (after === 'destroy')\n source.destroy();\n else if (after === 'hide')\n hide(source);\n if (target.isVisible())\n show(target);\n };\n if (!options) {\n afterTransition();\n return [null];\n }\n var _a = options.duration, duration = _a === void 0 ? 0 : _a, _b = options.delay, delay = _b === void 0 ? 0 : _b;\n var middle = Math.ceil(+duration / 2);\n var offset = +duration / 4;\n var getPosition = function (shape) {\n if (shape.nodeName === 'circle') {\n var _a = __read(shape.getLocalPosition(), 2), cx = _a[0], cy = _a[1];\n var r = shape.attr('r');\n return [cx - r, cy - r];\n }\n return shape.getLocalPosition();\n };\n var _c = __read(getPosition(source), 2), sx = _c[0], sy = _c[1];\n var _d = __read(getPosition(target), 2), ex = _d[0], ey = _d[1];\n var _e = __read([(sx + ex) / 2 - sx, (sy + ey) / 2 - sy], 2), mx = _e[0], my = _e[1];\n var _f = source.style.opacity, so = _f === void 0 ? 1 : _f;\n var _g = target.style.opacity, to = _g === void 0 ? 1 : _g;\n var sourceAnimation = source.animate([\n { opacity: so, transform: 'translate(0, 0)' },\n { opacity: 0, transform: \"translate(\".concat(mx, \", \").concat(my, \")\") },\n ], __assign(__assign({ fill: 'both' }, options), { duration: delay + middle + offset }));\n var targetAnimation = target.animate([\n { opacity: 0, transform: \"translate(\".concat(-mx, \", \").concat(-my, \")\"), offset: 0.01 },\n { opacity: to, transform: 'translate(0, 0)' },\n ], __assign(__assign({ fill: 'both' }, options), { duration: middle + offset, delay: delay + middle - offset }));\n onAnimateFinished(targetAnimation, afterTransition);\n return [sourceAnimation, targetAnimation];\n}\n/**\n * execute transition animation on element\n * @description in the current stage, only support the following properties:\n * x, y, width, height, opacity, fill, stroke, lineWidth, radius\n * @param target element to be animated\n * @param state target properties or element\n * @param options transition options\n * @param animate whether to animate\n * @returns transition instance\n */\nexport function transition(target, state, options) {\n var from = {};\n var to = {};\n Object.entries(state).forEach(function (_a) {\n var _b = __read(_a, 2), key = _b[0], tarStyle = _b[1];\n if (!isNil(tarStyle)) {\n // 关闭 CSS 解析后,attr / getAttribute 只能获取到用户显式传入的属性,此时可以\n // 获取解析值,如果仍获取不到(例如 x/y),则使用 0 作为默认值\n var currStyle = target.style[key] || target.parsedStyle[key] || 0; // x/y\n if (currStyle !== tarStyle) {\n from[key] = currStyle;\n to[key] = tarStyle;\n }\n }\n });\n if (!options) {\n attr(target, to);\n return null;\n }\n return animate(target, [from, to], __assign({ fill: 'both' }, options));\n}\n//# sourceMappingURL=utils.js.map","import { transition } from './utils';\nexport default function (element, options) {\n if (!element.style.opacity)\n element.style.opacity = 1;\n return transition(element, { opacity: 0 }, options);\n}\n//# sourceMappingURL=fadeOut.js.map","import { classNames } from '../../util';\nexport var HANDLE_ICON_DEFAULT_CFG = {\n fill: '#fff',\n lineWidth: 1,\n radius: 2,\n size: 10,\n stroke: '#bfbfbf',\n strokeOpacity: 1,\n zIndex: 0,\n};\nexport var HANDLE_LABEL_DEFAULT_CFG = {\n fill: '#000',\n fillOpacity: 0.45,\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle',\n zIndex: 1,\n};\nexport var HANDLE_DEFAULT_CFG = {\n orientation: 'horizontal',\n showLabel: true,\n type: 'start',\n};\nexport var CLASS_NAMES = classNames({\n foreground: 'foreground',\n handle: 'handle',\n selection: 'selection',\n sparkline: 'sparkline',\n sparklineGroup: 'sparkline-group',\n track: 'track',\n brushArea: 'brush-area',\n}, 'slider');\n//# sourceMappingURL=constant.js.map","import { __assign, __extends, __read, __rest } from \"tslib\";\nimport { Component } from '../../core';\nimport { classNames, ifShow, select, splitStyle, subStyleProps } from '../../util';\nimport { HANDLE_DEFAULT_CFG, HANDLE_ICON_DEFAULT_CFG, HANDLE_LABEL_DEFAULT_CFG } from './constant';\nvar CLASS_NAMES = classNames({\n labelGroup: 'label-group',\n label: 'label',\n iconGroup: 'icon-group',\n icon: 'icon',\n iconRect: 'icon-rect',\n iconLine: 'icon-line',\n}, 'handle');\nvar HandleIcon = /** @class */ (function (_super) {\n __extends(HandleIcon, _super);\n function HandleIcon() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HandleIcon.prototype.render = function (attributes, container) {\n var _a = attributes.size, size = _a === void 0 ? 10 : _a, _b = attributes.radius, radius = _b === void 0 ? size / 4 : _b, orientation = attributes.orientation, iconStyle = __rest(attributes, [\"size\", \"radius\", \"orientation\"]);\n // 默认手柄\n var width = size;\n var height = width * 2.4;\n var rect = select(container)\n .maybeAppendByClassName(CLASS_NAMES.iconRect, 'rect')\n .styles(__assign(__assign({}, iconStyle), { width: width, height: height, radius: radius, x: -width / 2, y: -height / 2 }));\n var x1 = (1 / 3) * width;\n var x2 = (2 / 3) * width;\n var y1 = (1 / 4) * height;\n var y2 = (3 / 4) * height;\n rect.maybeAppendByClassName(\"\".concat(CLASS_NAMES.iconLine, \"-1\"), 'line').styles(__assign({ x1: x1, x2: x1, y1: y1, y2: y2 }, iconStyle));\n rect.maybeAppendByClassName(\"\".concat(CLASS_NAMES.iconLine, \"-2\"), 'line').styles(__assign({ x1: x2, x2: x2, y1: y1, y2: y2 }, iconStyle));\n rect.node().setOrigin(width / 2, height / 2);\n if (orientation === 'vertical')\n container.setLocalEulerAngles(90);\n else\n container.setLocalEulerAngles(0);\n };\n return HandleIcon;\n}(Component));\nvar Handle = /** @class */ (function (_super) {\n __extends(Handle, _super);\n function Handle(options) {\n return _super.call(this, options, HANDLE_DEFAULT_CFG) || this;\n }\n Handle.prototype.renderLabel = function (container) {\n var _this = this;\n var showLabel = this.attributes.showLabel;\n var _a = subStyleProps(this.attributes, 'label'), transform = _a.transform, style = __rest(_a, [\"transform\"]);\n var _b = __read(splitStyle(style, []), 2), labelStyle = _b[0], groupStyle = _b[1];\n var labelGroup = select(container).maybeAppendByClassName(CLASS_NAMES.labelGroup, 'g').styles(groupStyle);\n // @ts-ignore\n var _c = __assign(__assign({}, HANDLE_LABEL_DEFAULT_CFG), labelStyle), text = _c.text, rest = __rest(_c, [\"text\"]);\n ifShow(!!showLabel, labelGroup, function (group) {\n _this.label = group.maybeAppendByClassName(CLASS_NAMES.label, 'text').styles(__assign(__assign({}, rest), { transform: transform, text: \"\".concat(text) }));\n /** avoid trigger event on label */\n _this.label.on('mousedown', function (e) {\n e.stopPropagation();\n });\n _this.label.on('touchstart', function (e) {\n e.stopPropagation();\n });\n });\n };\n Handle.prototype.renderIcon = function (container) {\n var _a = this.attributes, orientation = _a.orientation, type = _a.type;\n var iconStyle = __assign(__assign({ orientation: orientation }, HANDLE_ICON_DEFAULT_CFG), subStyleProps(this.attributes, 'icon'));\n var _b = this.attributes.iconShape, iconShape = _b === void 0 ? function () { return new HandleIcon({ style: iconStyle }); } : _b;\n var iconGroup = select(container).maybeAppendByClassName(CLASS_NAMES.iconGroup, 'g');\n iconGroup\n .selectAll(CLASS_NAMES.icon.class)\n .data([iconShape])\n .join(function (enter) {\n return enter\n .append(typeof iconShape === 'string' ? iconShape : function () { return iconShape(type); })\n .attr('className', CLASS_NAMES.icon.name);\n }, function (update) { return update.update(iconStyle); }, function (exit) { return exit.remove(); });\n };\n Handle.prototype.render = function (attributes, container) {\n this.renderIcon(container);\n this.renderLabel(container);\n };\n return Handle;\n}(Component));\nexport { Handle };\n//# sourceMappingURL=handle.js.map","import { __assign, __extends, __read } from \"tslib\";\nimport { CustomEvent } from '@antv/g';\nimport { clamp } from '@antv/util';\nimport { transition } from '../../animation';\nimport { Component } from '../../core';\nimport { Text } from '../../shapes';\nimport { getEventPos, ifShow, parseSeriesAttr, select, subStyleProps, superStyleProps, toPrecision } from '../../util';\nimport { Sparkline } from '../sparkline';\nimport { CLASS_NAMES, HANDLE_DEFAULT_CFG, HANDLE_ICON_DEFAULT_CFG, HANDLE_LABEL_DEFAULT_CFG } from './constant';\nimport { Handle } from './handle';\nvar Slider = /** @class */ (function (_super) {\n __extends(Slider, _super);\n function Slider(options) {\n var _this = _super.call(this, options, __assign(__assign(__assign({ animate: { duration: 100, fill: 'both' }, brushable: true, formatter: function (val) { return val.toString(); }, handleSpacing: 2, orientation: 'horizontal', padding: 0, autoFitLabel: true, scrollable: true, selectionFill: '#5B8FF9', selectionFillOpacity: 0.45, selectionZIndex: 2, showHandle: true, showLabel: true, slidable: true, trackFill: '#416180', trackLength: 200, trackOpacity: 0.05, trackSize: 20, trackZIndex: -1, values: [0, 1], type: 'range', selectionType: 'select', handleIconOffset: 0 }, superStyleProps(HANDLE_DEFAULT_CFG, 'handle')), superStyleProps(HANDLE_ICON_DEFAULT_CFG, 'handleIcon')), superStyleProps(HANDLE_LABEL_DEFAULT_CFG, 'handleLabel'))) || this;\n _this.range = [0, 1];\n _this.onDragStart = function (target) { return function (e) {\n e.stopPropagation();\n _this.target = target;\n _this.prevPos = _this.getOrientVal(getEventPos(e));\n var _a = _this.availableSpace, x = _a.x, y = _a.y;\n var _b = _this.getBBox(), X = _b.x, Y = _b.y;\n _this.selectionStartPos = _this.getRatio(_this.prevPos - _this.getOrientVal([x, y]) - _this.getOrientVal([+X, +Y]));\n _this.selectionWidth = 0;\n document.addEventListener('pointermove', _this.onDragging);\n document.addEventListener('pointerup', _this.onDragEnd);\n }; };\n _this.onDragging = function (e) {\n var _a = _this.attributes, slidable = _a.slidable, brushable = _a.brushable, type = _a.type;\n e.stopPropagation();\n var currPos = _this.getOrientVal(getEventPos(e));\n var diffPos = currPos - _this.prevPos;\n if (!diffPos)\n return;\n var deltaVal = _this.getRatio(diffPos);\n switch (_this.target) {\n case 'start':\n if (slidable)\n _this.setValuesOffset(deltaVal);\n break;\n case 'end':\n if (slidable)\n _this.setValuesOffset(0, deltaVal);\n break;\n case 'selection':\n if (slidable)\n _this.setValuesOffset(deltaVal, deltaVal);\n break;\n case 'track':\n if (!brushable)\n return;\n // 绘制蒙板\n _this.selectionWidth += deltaVal;\n if (type === 'range') {\n _this.innerSetValues([_this.selectionStartPos, _this.selectionStartPos + _this.selectionWidth].sort(), true);\n }\n else\n _this.innerSetValues([0, _this.selectionStartPos + _this.selectionWidth], true);\n break;\n default:\n break;\n }\n _this.prevPos = currPos;\n };\n _this.onDragEnd = function () {\n document.removeEventListener('pointermove', _this.onDragging);\n document.removeEventListener('pointermove', _this.onDragging);\n document.removeEventListener('pointerup', _this.onDragEnd);\n _this.target = '';\n // 更新 handle 状态\n _this.updateHandlesPosition(false);\n };\n _this.onValueChange = function (oldValue) {\n var _a = _this.attributes, onChange = _a.onChange, type = _a.type;\n var internalOldValue = type === 'range' ? oldValue : oldValue[1];\n var value = type === 'range' ? _this.getValues() : _this.getValues()[1];\n var evt = new CustomEvent('valuechange', {\n detail: { oldValue: internalOldValue, value: value },\n });\n _this.dispatchEvent(evt);\n onChange === null || onChange === void 0 ? void 0 : onChange(value);\n };\n _this.selectionStartPos = 0;\n _this.selectionWidth = 0;\n _this.prevPos = 0;\n _this.target = '';\n return _this;\n }\n Object.defineProperty(Slider.prototype, \"values\", {\n get: function () {\n return this.attributes.values;\n },\n set: function (values) {\n this.attributes.values = this.clampValues(values);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Slider.prototype, \"sparklineStyle\", {\n get: function () {\n var orientation = this.attributes.orientation;\n if (orientation !== 'horizontal')\n return null;\n var attr = subStyleProps(this.attributes, 'sparkline');\n return __assign(__assign({ zIndex: 0 }, this.availableSpace), attr);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Slider.prototype, \"shape\", {\n get: function () {\n var _a = this.attributes, trackLength = _a.trackLength, trackSize = _a.trackSize;\n var _b = __read(this.getOrientVal([\n [trackLength, trackSize],\n [trackSize, trackLength],\n ]), 2), width = _b[0], height = _b[1];\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Slider.prototype, \"availableSpace\", {\n get: function () {\n var padding = this.attributes.padding;\n var _a = __read(parseSeriesAttr(padding), 4), top = _a[0], right = _a[1], bottom = _a[2], left = _a[3];\n var _b = this.shape, width = _b.width, height = _b.height;\n return {\n x: left,\n y: top,\n width: width - (left + right),\n height: height - (top + bottom),\n };\n },\n enumerable: false,\n configurable: true\n });\n Slider.prototype.getValues = function () {\n return this.values;\n };\n /** 不触发重绘 */\n Slider.prototype.setValues = function (values, animate) {\n if (values === void 0) { values = [0, 0]; }\n if (animate === void 0) { animate = false; }\n this.attributes.values = values;\n var animation = animate === false ? false : this.attributes.animate;\n this.updateSelectionArea(animation);\n this.updateHandlesPosition(animation);\n };\n Slider.prototype.updateSelectionArea = function (animation) {\n var newSelectionArea = this.calcSelectionArea();\n this.foregroundGroup.selectAll(CLASS_NAMES.selection.class).each(function (datum, index) {\n transition(this, newSelectionArea[index], animation);\n });\n };\n Slider.prototype.updateHandlesPosition = function (animation) {\n if (!this.attributes.showHandle)\n return;\n this.startHandle && transition(this.startHandle, this.getHandleStyle('start'), animation);\n this.endHandle && transition(this.endHandle, this.getHandleStyle('end'), animation);\n };\n Slider.prototype.innerSetValues = function (values, trigger) {\n if (values === void 0) { values = [0, 0]; }\n if (trigger === void 0) { trigger = false; }\n var oldValues = this.values;\n var newValues = this.clampValues(values);\n this.attributes.values = newValues;\n this.setValues(newValues);\n if (trigger) {\n this.onValueChange(oldValues);\n }\n };\n Slider.prototype.renderTrack = function (container) {\n var style = subStyleProps(this.attributes, 'track');\n this.trackShape = select(container)\n .maybeAppendByClassName(CLASS_NAMES.track, 'rect')\n .styles(__assign(__assign({}, this.shape), style));\n };\n Slider.prototype.renderBrushArea = function (container) {\n var brushable = this.attributes.brushable;\n this.brushArea = select(container)\n .maybeAppendByClassName(CLASS_NAMES.brushArea, 'rect')\n .styles(__assign({ fill: 'transparent', cursor: brushable ? 'crosshair' : 'default' }, this.shape));\n };\n Slider.prototype.renderSparkline = function (container) {\n var _this = this;\n var orientation = this.attributes.orientation;\n var sparklineGroup = select(container).maybeAppendByClassName(CLASS_NAMES.sparklineGroup, 'g');\n ifShow(orientation === 'horizontal', sparklineGroup, function (group) {\n var style = _this.sparklineStyle;\n group.maybeAppendByClassName(CLASS_NAMES.sparkline, function () { return new Sparkline({ style: style }); }).update(style);\n });\n };\n Slider.prototype.renderHandles = function () {\n var _this = this;\n var _a;\n var _b = this.attributes, showHandle = _b.showHandle, type = _b.type;\n var availableHandle = type === 'range' ? ['start', 'end'] : ['end'];\n var data = showHandle ? availableHandle : [];\n var that = this;\n (_a = this.foregroundGroup) === null || _a === void 0 ? void 0 : _a.selectAll(CLASS_NAMES.handle.class).data(data.map(function (type) { return ({ type: type }); }), function (d) { return d.type; }).join(function (enter) {\n return enter\n .append(function (_a) {\n var type = _a.type;\n return new Handle({ style: _this.getHandleStyle(type) });\n })\n .each(function (_a) {\n var type = _a.type;\n this.attr('class', \"\".concat(CLASS_NAMES.handle.name, \" \").concat(type, \"-handle\"));\n var name = \"\".concat(type, \"Handle\");\n that[name] = this;\n this.addEventListener('pointerdown', that.onDragStart(type));\n });\n }, function (update) {\n return update.each(function (_a) {\n var type = _a.type;\n this.update(that.getHandleStyle(type));\n });\n }, function (exit) {\n return exit\n .each(function (_a) {\n var type = _a.type;\n var name = \"\".concat(type, \"Handle\");\n that[name] = undefined;\n })\n .remove();\n });\n };\n Slider.prototype.renderSelection = function (container) {\n var _a = this.attributes, type = _a.type, selectionType = _a.selectionType;\n this.foregroundGroup = select(container).maybeAppendByClassName(CLASS_NAMES.foreground, 'g');\n // value 类型的 slider 不渲染选区\n var selectionStyle = subStyleProps(this.attributes, 'selection');\n var applyStyle = function (selection) {\n return selection\n .style('visibility', function (d) { return (d.show ? 'visible' : 'hidden'); })\n .style('cursor', function (d) {\n if (selectionType === 'select')\n return 'grab';\n if (selectionType === 'invert')\n return 'crosshair';\n return 'default';\n })\n .styles(selectionStyle);\n };\n var that = this;\n this.foregroundGroup\n .selectAll(CLASS_NAMES.selection.class)\n .data(type === 'value'\n ? []\n : this.calcSelectionArea().map(function (area, index) { return ({\n style: __assign({}, area),\n index: index,\n // 是否可见\n show: selectionType === 'select' ? index === 1 : index !== 1,\n }); }), function (d) { return d.index; })\n .join(function (enter) {\n return enter\n .append('rect')\n .attr('className', CLASS_NAMES.selection.name)\n .call(applyStyle)\n .each(function (datum, index) {\n var _this = this;\n if (index === 1) {\n that.selectionShape = select(this);\n // 选区drag事件\n this.on('pointerdown', function (e) {\n _this.attr('cursor', 'grabbing');\n that.onDragStart('selection')(e);\n });\n // 选区hover事件\n that.dispatchCustomEvent(this, 'pointerenter', 'selectionMouseenter');\n that.dispatchCustomEvent(this, 'pointerleave', 'selectionMouseleave');\n that.dispatchCustomEvent(this, 'click', 'selectionClick');\n // 拖拽交互\n this.addEventListener('pointerdown', function () {\n _this.attr('cursor', 'grabbing');\n });\n this.addEventListener('pointerup', function () {\n _this.attr('cursor', 'pointer');\n });\n this.addEventListener('pointerover', function () {\n _this.attr('cursor', 'pointer');\n });\n }\n else {\n this.on('pointerdown', that.onDragStart('track'));\n }\n });\n }, function (update) { return update.call(applyStyle); }, function (exit) { return exit.remove(); });\n this.updateSelectionArea(false);\n this.renderHandles();\n };\n Slider.prototype.render = function (attributes, container) {\n this.renderTrack(container);\n this.renderSparkline(container);\n this.renderBrushArea(container);\n this.renderSelection(container);\n };\n Slider.prototype.clampValues = function (values, precision) {\n var _a;\n if (precision === void 0) { precision = 4; }\n var _b = __read(this.range, 2), min = _b[0], max = _b[1];\n var _c = __read(this.getValues().map(function (num) { return toPrecision(num, precision); }), 2), prevStart = _c[0], prevEnd = _c[1];\n var internalValues = Array.isArray(values) ? values : [prevStart, values !== null && values !== void 0 ? values : prevEnd];\n var _d = __read((internalValues || [prevStart, prevEnd]).map(function (num) { return toPrecision(num, precision); }), 2), startVal = _d[0], endVal = _d[1];\n if (this.attributes.type === 'value')\n return [0, clamp(endVal, min, max)];\n // 交换startVal endVal\n if (startVal > endVal) {\n _a = __read([endVal, startVal], 2), startVal = _a[0], endVal = _a[1];\n }\n var range = endVal - startVal;\n // 超出范围就全选\n if (range > max - min)\n return [min, max];\n if (startVal < min) {\n if (prevStart === min && prevEnd === endVal)\n return [min, endVal];\n return [min, range + min];\n }\n if (endVal > max) {\n if (prevEnd === max && prevStart === startVal)\n return [startVal, max];\n return [max - range, max];\n }\n // 保留小数\n return [startVal, endVal];\n };\n /**\n * 计算选区坐标和宽高\n * 默认用来计算前景位置大小\n */\n Slider.prototype.calcSelectionArea = function (values) {\n var _a = __read(this.clampValues(values), 2), start = _a[0], end = _a[1];\n var _b = this.availableSpace, x = _b.x, y = _b.y, width = _b.width, height = _b.height;\n // 中间为选区,两端为反选区\n return this.getOrientVal([\n [\n { y: y, height: height, x: x, width: start * width },\n { y: y, height: height, x: start * width + x, width: (end - start) * width },\n { y: y, height: height, x: end * width, width: (1 - end) * width },\n ],\n [\n { x: x, width: width, y: y, height: start * height },\n { x: x, width: width, y: start * height + y, height: (end - start) * height },\n { x: x, width: width, y: end * height, height: (1 - end) * height },\n ],\n ]);\n };\n /**\n * 计算手柄的x y\n */\n Slider.prototype.calcHandlePosition = function (handleType) {\n var handleIconOffset = this.attributes.handleIconOffset;\n var _a = this.availableSpace, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var _b = __read(this.clampValues(), 2), stVal = _b[0], endVal = _b[1];\n var offset = handleType === 'start' ? -handleIconOffset : handleIconOffset;\n var L = (handleType === 'start' ? stVal : endVal) * this.getOrientVal([width, height]) + offset;\n return {\n x: x + this.getOrientVal([L, width / 2]),\n y: y + this.getOrientVal([height / 2, L]),\n };\n };\n Slider.prototype.inferTextStyle = function (handleType) {\n var orientation = this.attributes.orientation;\n if (orientation === 'horizontal')\n return {};\n if (handleType === 'start')\n return { transform: 'rotate(90)', textAlign: 'start' };\n if (handleType === 'end')\n return { transform: 'rotate(90)', textAlign: 'end' };\n return {};\n };\n /**\n * 计算手柄应当处于的位置\n * @param handleType start手柄还是end手柄\n * @returns\n */\n Slider.prototype.calcHandleText = function (handleType) {\n var _a;\n var _b = this.attributes, type = _b.type, orientation = _b.orientation, formatter = _b.formatter, autoFitLabel = _b.autoFitLabel;\n var handleStyle = subStyleProps(this.attributes, 'handle');\n var labelStyle = subStyleProps(handleStyle, 'label');\n var spacing = handleStyle.spacing;\n var size = this.getHandleSize();\n var values = this.clampValues();\n var value = handleType === 'start' ? values[0] : values[1];\n var text = formatter(value);\n var temp = new Text({\n style: __assign(__assign(__assign({}, labelStyle), this.inferTextStyle(handleType)), { text: text }),\n });\n // 文字包围盒的宽高\n var _c = temp.getBBox(), textWidth = _c.width, textHeight = _c.height;\n temp.destroy();\n if (!autoFitLabel) {\n if (type === 'value')\n return { text: text, x: 0, y: -textHeight - spacing };\n var finaleWidth = spacing + size + (orientation === 'horizontal' ? textWidth / 2 : 0);\n return _a = { text: text }, _a[orientation === 'horizontal' ? 'x' : 'y'] = handleType === 'start' ? -finaleWidth : finaleWidth, _a;\n }\n var x = 0;\n var y = 0;\n // 相对于获取两端可用空间\n var _d = this.availableSpace, iW = _d.width, iH = _d.height;\n var _e = this.calcSelectionArea()[1], fX = _e.x, fY = _e.y, fW = _e.width, fH = _e.height;\n var totalSpacing = spacing + size;\n if (orientation === 'horizontal') {\n var finalWidth = totalSpacing + textWidth / 2;\n if (handleType === 'start') {\n var left = fX - totalSpacing - textWidth;\n x = left > 0 ? -finalWidth : finalWidth;\n }\n else {\n var sign = iW - fX - fW - totalSpacing > textWidth;\n x = sign ? finalWidth : -finalWidth;\n }\n }\n else {\n var positiveSize = totalSpacing;\n var negativeSize = textHeight + totalSpacing;\n if (handleType === 'start') {\n y = fY - size > textHeight ? -negativeSize : positiveSize;\n }\n else {\n y = iH - (fY + fH) - size > textHeight ? negativeSize : -positiveSize;\n }\n }\n return { x: x, y: y, text: text };\n };\n Slider.prototype.getHandleLabelStyle = function (handleType) {\n var style = subStyleProps(this.attributes, 'handleLabel');\n return __assign(__assign(__assign({}, style), this.calcHandleText(handleType)), this.inferTextStyle(handleType));\n };\n Slider.prototype.getHandleIconStyle = function () {\n var shape = this.attributes.handleIconShape;\n var style = subStyleProps(this.attributes, 'handleIcon');\n var cursor = this.getOrientVal(['ew-resize', 'ns-resize']);\n var size = this.getHandleSize();\n return __assign({ cursor: cursor, shape: shape, size: size }, style);\n };\n Slider.prototype.getHandleStyle = function (handleType) {\n var _a = this.attributes, showLabel = _a.showLabel, showLabelOnInteraction = _a.showLabelOnInteraction, orientation = _a.orientation;\n var handlePosition = this.calcHandlePosition(handleType);\n var textStyle = this.calcHandleText(handleType);\n var internalShowLabel = showLabel;\n if (!showLabel && showLabelOnInteraction) {\n if (this.target)\n internalShowLabel = true;\n else\n internalShowLabel = false;\n }\n return __assign(__assign(__assign(__assign({}, superStyleProps(this.getHandleIconStyle(), 'icon')), superStyleProps(__assign(__assign({}, this.getHandleLabelStyle(handleType)), textStyle), 'label')), handlePosition), { orientation: orientation, showLabel: internalShowLabel, type: handleType, zIndex: 3 });\n };\n Slider.prototype.getHandleSize = function () {\n var _a = this.attributes, size = _a.handleIconSize, width = _a.width, height = _a.height;\n if (size)\n return size;\n // 没设置 size 的话,高度就取 height + 4 高度,手柄宽度是高度的 1/ 2.4\n return Math.floor((this.getOrientVal([+height, +width]) + 4) / 2.4);\n };\n Slider.prototype.getOrientVal = function (_a) {\n var _b = __read(_a, 2), x = _b[0], y = _b[1];\n var orientation = this.attributes.orientation;\n return orientation === 'horizontal' ? x : y;\n };\n Slider.prototype.setValuesOffset = function (stOffset, endOffset, animate) {\n if (endOffset === void 0) { endOffset = 0; }\n if (animate === void 0) { animate = false; }\n var type = this.attributes.type;\n var _a = __read(this.getValues(), 2), oldStartVal = _a[0], oldEndVal = _a[1];\n var internalStartOffset = type === 'range' ? stOffset : 0;\n var values = [oldStartVal + internalStartOffset, oldEndVal + endOffset].sort();\n if (animate)\n this.setValues(values);\n else\n this.innerSetValues(values, true);\n };\n Slider.prototype.getRatio = function (val) {\n var _a = this.availableSpace, width = _a.width, height = _a.height;\n return val / this.getOrientVal([width, height]);\n };\n Slider.prototype.dispatchCustomEvent = function (target, event, name) {\n var _this = this;\n target.on(event, function (e) {\n e.stopPropagation();\n _this.dispatchEvent(new CustomEvent(name, { detail: e }));\n });\n };\n Slider.prototype.bindEvents = function () {\n // scroll 事件\n this.addEventListener('wheel', this.onScroll);\n var brushArea = this.brushArea;\n this.dispatchCustomEvent(brushArea, 'click', 'trackClick');\n this.dispatchCustomEvent(brushArea, 'pointerenter', 'trackMouseenter');\n this.dispatchCustomEvent(brushArea, 'pointerleave', 'trackMouseleave');\n // Drag and brush\n brushArea.on('pointerdown', this.onDragStart('track'));\n };\n Slider.prototype.onScroll = function (event) {\n var scrollable = this.attributes.scrollable;\n if (scrollable) {\n var deltaX = event.deltaX, deltaY = event.deltaY;\n var offset = deltaY || deltaX;\n var deltaVal = this.getRatio(offset);\n this.setValuesOffset(deltaVal, deltaVal, true);\n }\n };\n Slider.tag = 'slider';\n return Slider;\n}(Component));\nexport { Slider };\n//# sourceMappingURL=index.js.map","import { __assign, __extends, __read } from \"tslib\";\nimport { CustomEvent } from '@antv/g';\nimport { clamp } from '@antv/util';\nimport { Component } from '../../core';\nimport { getEventPos, parseSeriesAttr, select, subStyleProps, superStyleProps } from '../../util';\nimport { Slider } from '../slider';\nvar Scrollbar = /** @class */ (function (_super) {\n __extends(Scrollbar, _super);\n function Scrollbar(options) {\n var _this = _super.call(this, options, {\n isRound: true,\n orientation: 'vertical',\n padding: [2, 2, 2, 2],\n scrollable: true,\n slidable: true,\n thumbCursor: 'default',\n trackSize: 10,\n value: 0,\n }) || this;\n _this.range = [0, 1];\n /**\n * 值改变事件\n */\n _this.onValueChange = function (oldValue) {\n var newValue = _this.attributes.value;\n if (oldValue === newValue)\n return;\n var evtVal = {\n detail: {\n oldValue: oldValue,\n value: newValue,\n },\n };\n _this.dispatchEvent(new CustomEvent('scroll', evtVal));\n _this.dispatchEvent(new CustomEvent('valuechange', evtVal));\n };\n /**\n * 点击轨道事件\n */\n _this.onTrackClick = function (e) {\n var slidable = _this.attributes.slidable;\n if (!slidable)\n return;\n var _a = __read(_this.getLocalPosition(), 2), x = _a[0], y = _a[1];\n var _b = __read(_this.padding, 4), top = _b[0], left = _b[3];\n var basePos = _this.getOrientVal([x + left, y + top]);\n var clickPos = _this.getOrientVal(getEventPos(e));\n var value = (clickPos - basePos) / _this.trackLength;\n _this.setValue(value, true);\n };\n _this.onThumbMouseenter = function (e) {\n _this.dispatchEvent(new CustomEvent('thumbMouseenter', { detail: e.detail }));\n };\n _this.onTrackMouseenter = function (e) {\n _this.dispatchEvent(new CustomEvent('trackMouseenter', { detail: e.detail }));\n };\n _this.onThumbMouseleave = function (e) {\n _this.dispatchEvent(new CustomEvent('thumbMouseleave', { detail: e.detail }));\n };\n _this.onTrackMouseleave = function (e) {\n _this.dispatchEvent(new CustomEvent('trackMouseleave', { detail: e.detail }));\n };\n return _this;\n }\n Object.defineProperty(Scrollbar.prototype, \"padding\", {\n get: function () {\n var padding = this.attributes.padding;\n return parseSeriesAttr(padding);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"value\", {\n get: function () {\n var value = this.attributes.value;\n var _a = __read(this.range, 2), min = _a[0], max = _a[1];\n return clamp(value, min, max);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"trackLength\", {\n get: function () {\n var _a = this.attributes, viewportLength = _a.viewportLength, _b = _a.trackLength, trackLength = _b === void 0 ? viewportLength : _b;\n return trackLength;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"availableSpace\", {\n get: function () {\n var trackSize = this.attributes.trackSize;\n var trackLength = this.trackLength;\n var _a = __read(this.padding, 4), top = _a[0], right = _a[1], bottom = _a[2], left = _a[3];\n var _b = __read(this.getOrientVal([\n [trackLength, trackSize],\n [trackSize, trackLength],\n ]), 2), width = _b[0], height = _b[1];\n return {\n x: left,\n y: top,\n width: +width - (left + right),\n height: +height - (top + bottom),\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"trackRadius\", {\n get: function () {\n var _a = this.attributes, isRound = _a.isRound, trackSize = _a.trackSize;\n if (!isRound)\n return 0;\n return trackSize / 2;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"thumbRadius\", {\n get: function () {\n var _a = this.attributes, isRound = _a.isRound, thumbRadius = _a.thumbRadius;\n if (!isRound)\n return 0;\n var _b = this.availableSpace, width = _b.width, height = _b.height;\n return thumbRadius || this.getOrientVal([height, width]) / 2;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * accord to thumbLen and value, calculate the values of slider\n */\n Scrollbar.prototype.getValues = function (value) {\n if (value === void 0) { value = this.value; }\n var _a = this.attributes, viewportLength = _a.viewportLength, contentLength = _a.contentLength;\n var unit = viewportLength / contentLength;\n var _b = __read(this.range, 2), min = _b[0], max = _b[1];\n var start = value * (max - min - unit);\n return [start, start + unit];\n };\n Scrollbar.prototype.getValue = function () {\n return this.value;\n };\n Scrollbar.prototype.renderSlider = function (container) {\n var _a = this.attributes, orientation = _a.orientation, trackSize = _a.trackSize, padding = _a.padding, slidable = _a.slidable;\n var trackStyle = subStyleProps(this.attributes, 'track');\n var selectionStyle = subStyleProps(this.attributes, 'thumb');\n var style = __assign(__assign({ brushable: false, orientation: orientation, padding: padding, selectionRadius: this.thumbRadius, showHandle: false, slidable: slidable, trackLength: this.trackLength, trackRadius: this.trackRadius, trackSize: trackSize, values: this.getValues() }, superStyleProps(trackStyle, 'track')), superStyleProps(selectionStyle, 'selection'));\n this.slider = select(container)\n .maybeAppendByClassName('scrollbar', function () { return new Slider({ style: style }); })\n .update(style)\n .node();\n };\n Scrollbar.prototype.render = function (attributes, container) {\n this.renderSlider(container);\n };\n /**\n * 设置value\n * @param value 当前位置的占比\n */\n Scrollbar.prototype.setValue = function (value, animate) {\n if (animate === void 0) { animate = false; }\n var oldValue = this.attributes.value;\n var _a = __read(this.range, 2), min = _a[0], max = _a[1];\n this.slider.setValues(this.getValues(clamp(value, min, max)), animate);\n // 通知触发valueChange\n // todo 调用 setValue 不触发 valuechange\n this.onValueChange(oldValue);\n };\n Scrollbar.prototype.bindEvents = function () {\n var _this = this;\n this.slider.addEventListener('trackClick', function (e) {\n e.stopPropagation();\n _this.onTrackClick(e.detail);\n });\n this.onHover();\n };\n /**\n * 根据orient取出对应轴向上的值\n * 主要用于取鼠标坐标在orient方向上的位置\n */\n Scrollbar.prototype.getOrientVal = function (values) {\n var orientation = this.attributes.orientation;\n return orientation === 'horizontal' ? values[0] : values[1];\n };\n /**\n * 悬浮事件\n */\n Scrollbar.prototype.onHover = function () {\n this.slider.addEventListener('selectionMouseenter', this.onThumbMouseenter);\n this.slider.addEventListener('trackMouseenter', this.onTrackMouseenter);\n this.slider.addEventListener('selectionMouseleave', this.onThumbMouseleave);\n this.slider.addEventListener('trackMouseleave', this.onTrackMouseleave);\n };\n Scrollbar.tag = 'scrollbar';\n return Scrollbar;\n}(Component));\nexport { Scrollbar };\n//# sourceMappingURL=index.js.map","import { deepMix } from '@antv/util';\nimport { Path } from '../../shapes';\nimport { classNames } from '../../util';\nexport var AXIS_BASE_DEFAULT_ATTR = {\n data: [],\n animate: {\n enter: false,\n update: {\n duration: 100,\n easing: 'ease-in-out-sine',\n fill: 'both',\n },\n exit: {\n duration: 100,\n fill: 'both',\n },\n },\n showArrow: true,\n showGrid: true,\n showLabel: true,\n showLine: true,\n showTick: true,\n showTitle: true,\n showTrunc: false,\n dataThreshold: 100,\n lineLineWidth: 1,\n lineStroke: 'black',\n crossPadding: 10,\n titleFill: 'black',\n titleFontSize: 12,\n titlePosition: 'lb',\n titleSpacing: 0,\n titleTextAlign: 'center',\n titleTextBaseline: 'middle',\n lineArrow: function () {\n return new Path({\n style: {\n path: [['M', 10, 10], ['L', -10, 0], ['L', 10, -10], ['L', 0, 0], ['L', 10, 10], ['Z']],\n anchor: '0.5 0.5',\n fill: 'black',\n transformOrigin: 'center',\n },\n });\n },\n labelAlign: 'parallel',\n labelDirection: 'positive',\n labelFontSize: 12,\n labelSpacing: 0,\n gridConnect: 'line',\n gridControlAngles: [],\n gridDirection: 'positive',\n gridLength: 0,\n gridType: 'segment',\n lineArrowOffset: 15,\n lineArrowSize: 10,\n tickDirection: 'positive',\n tickLength: 5,\n tickLineWidth: 1,\n tickStroke: 'black',\n labelOverlap: [\n // { type: 'rotate', optionalAngles: [0, 45, 90] },\n // { type: 'ellipsis', suffix: '...', minLength: 14, maxLength: 160 },\n // { type: 'hide' },\n ],\n};\nexport var ARC_DEFAULT_OPTIONS = deepMix({}, AXIS_BASE_DEFAULT_ATTR, {\n style: {\n type: 'arc',\n },\n});\nexport var HELIX_DEFAULT_OPTIONS = deepMix({}, AXIS_BASE_DEFAULT_ATTR, {\n style: {},\n});\nexport var CLASS_NAMES = classNames({\n mainGroup: 'main-group',\n gridGroup: 'grid-group',\n grid: 'grid',\n lineGroup: 'line-group',\n line: 'line',\n tickGroup: 'tick-group',\n tick: 'tick',\n tickItem: 'tick-item',\n labelGroup: 'label-group',\n label: 'label',\n labelItem: 'label-item',\n titleGroup: 'title-group',\n title: 'title',\n lineFirst: 'line-first',\n lineSecond: 'line-second',\n}, 'axis');\n//# sourceMappingURL=constant.js.map","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport { fadeOut, onAnimateFinished, transition } from '../../animation';\nimport { Component } from '../../core';\nimport { classNames, distance, getCallbackValue, getPrimitiveAttributes, select } from '../../util';\nvar CLASS_NAMES = classNames({\n lineGroup: 'line-group',\n line: 'line',\n regionGroup: 'region-group',\n region: 'region',\n}, 'grid');\nfunction getStraightPath(points) {\n return points.reduce(function (acc, curr, idx) {\n acc.push(__spreadArray([idx === 0 ? 'M' : 'L'], __read(curr), false));\n return acc;\n }, []);\n}\nfunction getSurroundPath(points, attr, reversed) {\n var _a = attr.connect, connect = _a === void 0 ? 'line' : _a, center = attr.center;\n if (connect === 'line')\n return getStraightPath(points);\n if (!center)\n return [];\n var radius = distance(points[0], center);\n var sweepFlag = reversed ? 0 : 1;\n return points.reduce(function (r, p, idx) {\n if (idx === 0)\n r.push(__spreadArray(['M'], __read(p), false));\n else\n r.push(__spreadArray(['A', radius, radius, 0, 0, sweepFlag], __read(p), false));\n return r;\n }, []);\n}\nfunction getLinePath(points, cfg, reversed) {\n if (cfg.type === 'surround')\n return getSurroundPath(points, cfg, reversed);\n return getStraightPath(points);\n}\nfunction connectPaths(from, to, cfg) {\n var type = cfg.type, connect = cfg.connect, center = cfg.center, closed = cfg.closed;\n var closeFlag = closed ? [['Z']] : [];\n var _a = __read([getLinePath(from, cfg), getLinePath(to.slice().reverse(), cfg, true)], 2), path1 = _a[0], path2 = _a[1];\n var _b = __read([from[0], to.slice(-1)[0]], 2), startOfFrom = _b[0], endOfTo = _b[1];\n var createPath = function (insertA, insertB) {\n return [path1, insertA, path2, insertB, closeFlag].flat();\n };\n if (connect === 'line' || type === 'surround') {\n return createPath([__spreadArray(['L'], __read(endOfTo), false)], [__spreadArray(['L'], __read(startOfFrom), false)]);\n }\n if (!center)\n throw new Error('Arc grid need to specified center');\n var _c = __read([distance(endOfTo, center), distance(startOfFrom, center)], 2), raduis1 = _c[0], radius2 = _c[1];\n return createPath([\n __spreadArray(['A', raduis1, raduis1, 0, 0, 1], __read(endOfTo), false),\n __spreadArray(['L'], __read(endOfTo), false),\n ], [\n __spreadArray(['A', radius2, radius2, 0, 0, 0], __read(startOfFrom), false),\n __spreadArray(['L'], __read(startOfFrom), false),\n ]);\n}\nfunction renderGridLine(container, data, attr, style) {\n var animate = attr.animate, isBillboard = attr.isBillboard;\n var lines = data.map(function (item, idx) {\n return {\n id: item.id || \"grid-line-\".concat(idx),\n path: getLinePath(item.points, attr),\n };\n });\n return container\n .selectAll(CLASS_NAMES.line.class)\n .data(lines, function (d) { return d.id; })\n .join(function (enter) {\n return enter.append('path').each(function (datum, index) {\n var lineStyle = getCallbackValue(getPrimitiveAttributes(__assign({ path: datum.path }, style)), [datum, index, lines]);\n this.attr(__assign({ class: CLASS_NAMES.line.name, stroke: '#D9D9D9', lineWidth: 1, lineDash: [4, 4], isBillboard: isBillboard }, lineStyle));\n });\n }, function (update) {\n return update.transition(function (datum, index) {\n var lineStyle = getCallbackValue(getPrimitiveAttributes(__assign({ path: datum.path }, style)), [datum, index, lines]);\n return transition(this, lineStyle, animate.update);\n });\n }, function (exit) {\n return exit.transition(function () {\n var _this = this;\n var animation = fadeOut(this, animate.exit);\n onAnimateFinished(animation, function () { return _this.remove(); });\n return animation;\n });\n })\n .transitions();\n}\nfunction renderAlternateRegion(container, data, style) {\n var animate = style.animate, connect = style.connect, areaFill = style.areaFill;\n if (data.length < 2 || !areaFill || !connect)\n return [];\n var colors = Array.isArray(areaFill) ? areaFill : [areaFill, 'transparent'];\n var getColor = function (idx) { return colors[idx % colors.length]; };\n var regions = [];\n for (var idx = 0; idx < data.length - 1; idx++) {\n var _a = __read([data[idx].points, data[idx + 1].points], 2), prev = _a[0], curr = _a[1];\n var path = connectPaths(prev, curr, style);\n regions.push({ path: path, fill: getColor(idx) });\n }\n return container\n .selectAll(CLASS_NAMES.region.class)\n .data(regions, function (_, i) { return i; })\n .join(function (enter) {\n return enter\n .append('path')\n .each(function (datum, index) {\n var regionStyle = getCallbackValue(datum, [datum, index, regions]);\n this.attr(regionStyle);\n })\n .attr('className', CLASS_NAMES.region.name);\n }, function (update) {\n return update.transition(function (datum, index) {\n var regionStyle = getCallbackValue(datum, [datum, index, regions]);\n return transition(this, regionStyle, animate.update);\n });\n }, function (exit) {\n return exit.transition(function () {\n var _this = this;\n var animation = fadeOut(this, animate.exit);\n onAnimateFinished(animation, function () { return _this.remove(); });\n return animation;\n });\n })\n .transitions();\n}\nfunction getData(attr) {\n var _a = attr.data, data = _a === void 0 ? [] : _a, closed = attr.closed;\n if (!closed)\n return data;\n return data.map(function (datum) {\n var points = datum.points;\n var _a = __read(points, 1), start = _a[0];\n return __assign(__assign({}, datum), { points: __spreadArray(__spreadArray([], __read(points), false), [start], false) });\n });\n}\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n function Grid() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Grid.prototype.render = function (attributes, container) {\n // @ts-ignore do no passBy className\n var type = attributes.type, center = attributes.center, areaFill = attributes.areaFill, closed = attributes.closed, style = __rest(attributes, [\"type\", \"center\", \"areaFill\", \"closed\"]);\n var data = getData(attributes);\n var lineGroup = select(container).maybeAppendByClassName(CLASS_NAMES.lineGroup, 'g');\n var regionGroup = select(container).maybeAppendByClassName(CLASS_NAMES.regionGroup, 'g');\n var lineTransitions = renderGridLine(lineGroup, data, attributes, style);\n var reigionTransitions = renderAlternateRegion(regionGroup, data, attributes);\n return __spreadArray(__spreadArray([], __read(lineTransitions), false), __read(reigionTransitions), false);\n };\n return Grid;\n}(Component));\nexport { Grid };\n//# sourceMappingURL=index.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { isFunction } from '@antv/util';\nimport { degToRad, getCallbackValue, normalize, vertical } from '../../../util';\nexport function getCallbackStyle(style, params) {\n return Object.fromEntries(Object.entries(style).map(function (_a) {\n var _b = __read(_a, 2), key = _b[0], val = _b[1];\n return [key, getCallbackValue(val, params)];\n }));\n}\nexport function baseDependencies(attr) {\n if (attr.type === 'linear') {\n var startPos = attr.startPos, endPos = attr.endPos;\n return __spreadArray(__spreadArray([], __read(startPos), false), __read(endPos), false);\n }\n var startAngle = attr.startAngle, endAngle = attr.endAngle, center = attr.center, radius = attr.radius;\n return __spreadArray(__spreadArray([startAngle, endAngle], __read(center), false), [radius], false);\n}\nexport function filterExec(data, filter) {\n return !!filter && isFunction(filter) ? data.filter(filter) : data;\n}\n/** ---- to avoid cycle dependency */\nexport function getLineAngle(value, attr) {\n var startAngle = attr.startAngle, endAngle = attr.endAngle;\n return (endAngle - startAngle) * value + startAngle;\n}\nexport function getLineTangentVector(value, attr) {\n if (attr.type === 'linear') {\n var _a = __read(attr.startPos, 2), startX = _a[0], startY = _a[1], _b = __read(attr.endPos, 2), endX = _b[0], endY = _b[1];\n var _c = __read([endX - startX, endY - startY], 2), dx = _c[0], dy = _c[1];\n return normalize([dx, dy]);\n }\n var angle = degToRad(getLineAngle(value, attr));\n return [-Math.sin(angle), Math.cos(angle)];\n}\nexport function getDirectionVector(value, direction, attr) {\n var tangentVector = getLineTangentVector(value, attr);\n return vertical(tangentVector, direction !== 'positive');\n}\nexport function getLabelVector(value, attr) {\n return getDirectionVector(value, attr.labelDirection, attr);\n}\n//# sourceMappingURL=utils.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { get } from '@antv/util';\nimport { transition } from '../../../animation';\nimport { degToRad, keyframeInterpolate, omit, renderExtDo, scaleToPixel, subStyleProps, } from '../../../util';\nimport { CLASS_NAMES } from '../constant';\nimport { getLineAngle, getLineTangentVector } from './utils';\nexport function getLinearValuePos(value, attr) {\n var _a = __read(attr.startPos, 2), sx = _a[0], sy = _a[1], _b = __read(attr.endPos, 2), ex = _b[0], ey = _b[1];\n var _c = __read([ex - sx, ey - sy], 2), dx = _c[0], dy = _c[1];\n return [sx + dx * value, sy + dy * value];\n}\nexport function getArcValuePos(value, attr) {\n var radius = attr.radius, _a = __read(attr.center, 2), cx = _a[0], cy = _a[1];\n var angle = degToRad(getLineAngle(value, attr));\n return [cx + radius * Math.cos(angle), cy + radius * Math.sin(angle)];\n}\nexport function getValuePos(value, attr) {\n if (attr.type === 'linear')\n return getLinearValuePos(value, attr);\n return getArcValuePos(value, attr);\n}\nexport function isAxisHorizontal(attr) {\n return getLineTangentVector(0, attr)[1] === 0;\n}\nexport function isAxisVertical(attr) {\n return getLineTangentVector(0, attr)[0] === 0;\n}\nfunction isCircle(startAngle, endAngle) {\n return endAngle - startAngle === 360;\n}\nfunction getArcPath(startAngle, endAngle, cx, cy, radius) {\n var diffAngle = endAngle - startAngle;\n var _a = __read([radius, radius], 2), rx = _a[0], ry = _a[1];\n var _b = __read([degToRad(startAngle), degToRad(endAngle)], 2), startAngleRadians = _b[0], endAngleRadians = _b[1];\n var getPosByAngle = function (angle) { return [cx + radius * Math.cos(angle), cy + radius * Math.sin(angle)]; };\n var _c = __read(getPosByAngle(startAngleRadians), 2), x1 = _c[0], y1 = _c[1];\n var _d = __read(getPosByAngle(endAngleRadians), 2), x2 = _d[0], y2 = _d[1];\n if (isCircle(startAngle, endAngle)) {\n var middleAngleRadians = (endAngleRadians + startAngleRadians) / 2;\n var _e = __read(getPosByAngle(middleAngleRadians), 2), xm = _e[0], ym = _e[1];\n return [\n ['M', x1, y1],\n ['A', rx, ry, 0, 1, 0, xm, ym],\n ['A', rx, ry, 0, 1, 0, x2, y2],\n ];\n }\n // 大小弧\n var large = diffAngle > 180 ? 1 : 0;\n // 1-顺时针 0-逆时针\n var sweep = startAngle > endAngle ? 0 : 1;\n var isClosePath = false;\n return isClosePath\n ? \"M\".concat(cx, \",\").concat(cy, \",L\").concat(x1, \",\").concat(y1, \",A\").concat(rx, \",\").concat(ry, \",0,\").concat(large, \",\").concat(sweep, \",\").concat(x2, \",\").concat(y2, \",L\").concat(cx, \",\").concat(cy)\n : \"M\".concat(x1, \",\").concat(y1, \",A\").concat(rx, \",\").concat(ry, \",0,\").concat(large, \",\").concat(sweep, \",\").concat(x2, \",\").concat(y2);\n}\nfunction getArcAttr(arc) {\n var _a = arc.attributes, startAngle = _a.startAngle, endAngle = _a.endAngle, center = _a.center, radius = _a.radius;\n return __spreadArray(__spreadArray([startAngle, endAngle], __read(center), false), [radius], false);\n}\nfunction renderArc(container, attr, style, animate) {\n var startAngle = attr.startAngle, endAngle = attr.endAngle, center = attr.center, radius = attr.radius;\n return container\n .selectAll(CLASS_NAMES.line.class)\n .data([{ path: getArcPath.apply(void 0, __spreadArray(__spreadArray([startAngle, endAngle], __read(center), false), [radius], false)) }], function (d, i) { return i; })\n .join(function (enter) {\n return enter\n .append('path')\n .attr('className', CLASS_NAMES.line.name)\n .styles(attr)\n .styles({ path: function (d) { return d.path; } });\n }, function (update) {\n return update\n .transition(function () {\n var _this = this;\n var animation = keyframeInterpolate(this, getArcAttr(this), __spreadArray(__spreadArray([startAngle, endAngle], __read(center), false), [radius], false), animate.update);\n if (animation) {\n var layout = function () {\n var data = get(_this.attributes, '__keyframe_data__');\n _this.style.path = getArcPath.apply(void 0, __spreadArray([], __read(data), false));\n };\n animation.onframe = layout;\n animation.onfinish = layout;\n }\n return animation;\n })\n .styles(attr);\n }, function (exit) { return exit.remove(); })\n .styles(style)\n .transitions();\n}\nfunction renderTruncation(container, _a) {\n var truncRange = _a.truncRange, truncShape = _a.truncShape, lineExtension = _a.lineExtension;\n // TODO\n}\nfunction extendLine(startPos, endPos, range) {\n if (range === void 0) { range = [0, 0]; }\n var _a = __read([startPos, endPos, range], 3), _b = __read(_a[0], 2), x1 = _b[0], y1 = _b[1], _c = __read(_a[1], 2), x2 = _c[0], y2 = _c[1], _d = __read(_a[2], 2), l1 = _d[0], l2 = _d[1];\n var _e = __read([x2 - x1, y2 - y1], 2), x = _e[0], y = _e[1];\n var L = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n var _f = __read([-l1 / L, l2 / L], 2), s1 = _f[0], s2 = _f[1];\n return [s1 * x, s1 * y, s2 * x, s2 * y];\n}\nfunction getLinePath(points) {\n var _a = __read(points, 2), _b = __read(_a[0], 2), x1 = _b[0], y1 = _b[1], _c = __read(_a[1], 2), x2 = _c[0], y2 = _c[1];\n return { x1: x1, y1: y1, x2: x2, y2: y2 };\n}\nfunction renderLinear(container, attr, style, animate) {\n var showTrunc = attr.showTrunc, startPos = attr.startPos, endPos = attr.endPos, truncRange = attr.truncRange, lineExtension = attr.lineExtension;\n var _a = __read([startPos, endPos], 2), _b = __read(_a[0], 2), x1 = _b[0], y1 = _b[1], _c = __read(_a[1], 2), x2 = _c[0], y2 = _c[1];\n var _d = __read(lineExtension ? extendLine(startPos, endPos, lineExtension) : new Array(4).fill(0), 4), ox1 = _d[0], oy1 = _d[1], ox2 = _d[2], oy2 = _d[3];\n var renderLine = function (data) {\n return container\n .selectAll(CLASS_NAMES.line.class)\n .data(data, function (d, i) { return i; })\n .join(function (enter) {\n return enter\n .append('line')\n .attr('className', function (d) { return \"\".concat(CLASS_NAMES.line.name, \" \").concat(d.className); })\n .styles(style)\n .transition(function (d) {\n return transition(this, getLinePath(d.line), false);\n });\n }, function (update) {\n return update.styles(style).transition(function (_a) {\n var line = _a.line;\n return transition(this, getLinePath(line), animate.update);\n });\n }, function (exit) { return exit.remove(); })\n .transitions();\n };\n if (!showTrunc || !truncRange) {\n return renderLine([\n {\n line: [\n [x1 + ox1, y1 + oy1],\n [x2 + ox2, y2 + oy2],\n ],\n className: CLASS_NAMES.line.name,\n },\n ]);\n }\n var _e = __read(truncRange, 2), r1 = _e[0], r2 = _e[1];\n var dx = x2 - x1;\n var dy = y2 - y1;\n var _f = __read([x1 + dx * r1, y1 + dy * r1], 2), x3 = _f[0], y3 = _f[1];\n var _g = __read([x1 + dx * r2, y1 + dy * r2], 2), x4 = _g[0], y4 = _g[1];\n var animation = renderLine([\n {\n line: [\n [x1 + ox1, y1 + oy1],\n [x3, y3],\n ],\n className: CLASS_NAMES.lineFirst.name,\n },\n {\n line: [\n [x4, y4],\n [x2 + ox2, y2 + oy2],\n ],\n className: CLASS_NAMES.lineSecond.name,\n },\n ]);\n renderTruncation(container, attr);\n return animation;\n}\nfunction renderAxisArrow(container, type, attr, style) {\n var showArrow = attr.showArrow, showTrunc = attr.showTrunc, lineArrow = attr.lineArrow, lineArrowOffset = attr.lineArrowOffset, lineArrowSize = attr.lineArrowSize;\n var shapeToAddArrow;\n if (type === 'arc')\n shapeToAddArrow = container.select(CLASS_NAMES.line.class);\n else if (showTrunc)\n shapeToAddArrow = container.select(CLASS_NAMES.lineSecond.class);\n else\n shapeToAddArrow = container.select(CLASS_NAMES.line.class);\n if (!showArrow || !lineArrow || (attr.type === 'arc' && isCircle(attr.startAngle, attr.endAngle))) {\n var node = shapeToAddArrow.node();\n if (node)\n node.style.markerEnd = undefined;\n return;\n }\n var arrow = renderExtDo(lineArrow);\n arrow.attr(style);\n scaleToPixel(arrow, lineArrowSize, true);\n shapeToAddArrow.style('markerEnd', arrow).style('markerEndOffset', -lineArrowOffset);\n}\nexport function renderAxisLine(container, attr, animate) {\n var type = attr.type;\n var animation;\n var style = subStyleProps(attr, 'line');\n if (type === 'linear')\n animation = renderLinear(container, attr, omit(style, 'arrow'), animate);\n else\n animation = renderArc(container, attr, omit(style, 'arrow'), animate);\n renderAxisArrow(container, type, attr, style);\n return animation;\n}\n//# sourceMappingURL=line.js.map","import { __assign, __read } from \"tslib\";\nimport { isFunction } from '@antv/util';\nimport { degToRad, getCallbackValue, scale, subStyleProps } from '../../../util';\nimport { Grid } from '../../grid';\nimport { CLASS_NAMES } from '../constant';\nimport { getValuePos } from './line';\nimport { filterExec, getDirectionVector } from './utils';\nfunction getGridVector(value, attr) {\n return getDirectionVector(value, attr.gridDirection, attr);\n}\nfunction getGridCenter(attr) {\n var type = attr.type, gridCenter = attr.gridCenter;\n if (type === 'linear')\n return gridCenter;\n return gridCenter || attr.center;\n}\nfunction renderStraight(data, attr) {\n var gridLength = attr.gridLength;\n return data.map(function (_a, index) {\n var value = _a.value;\n var _b = __read(getValuePos(value, attr), 2), x = _b[0], y = _b[1];\n var _c = __read(scale(getGridVector(value, attr), gridLength), 2), dx = _c[0], dy = _c[1];\n return {\n id: index,\n points: [\n [x, y],\n [x + dx, y + dy],\n ],\n };\n });\n}\nfunction renderSurround(data, attr) {\n var controlAngles = attr.gridControlAngles;\n var center = getGridCenter(attr);\n if (!center)\n throw new Error('grid center is not provide');\n if (data.length < 2)\n throw new Error('Invalid grid data');\n if (!controlAngles || controlAngles.length === 0)\n throw new Error('Invalid gridControlAngles');\n var _a = __read(center, 2), cx = _a[0], cy = _a[1];\n return data.map(function (_a, index) {\n var value = _a.value;\n var _b = __read(getValuePos(value, attr), 2), sx = _b[0], sy = _b[1];\n var _c = __read([sx - cx, sy - cy], 2), dx = _c[0], dy = _c[1];\n var points = [];\n controlAngles.forEach(function (angle) {\n var angleInRad = degToRad(angle);\n var _a = __read([Math.cos(angleInRad), Math.sin(angleInRad)], 2), cosa = _a[0], sina = _a[1];\n var x = dx * cosa - dy * sina + cx;\n var y = dx * sina + dy * cosa + cy;\n points.push([x, y]);\n });\n return { points: points, id: index };\n });\n}\nexport function renderGrid(container, data, attr, animate) {\n var gridAttr = subStyleProps(attr, 'grid');\n var type = gridAttr.type, areaFill = gridAttr.areaFill;\n var center = getGridCenter(attr);\n var finalData = filterExec(data, attr.gridFilter);\n var gridItems = type === 'segment' ? renderStraight(finalData, attr) : renderSurround(finalData, attr);\n var style = __assign(__assign({}, gridAttr), { center: center, areaFill: isFunction(areaFill)\n ? finalData.map(function (datum, index) { return getCallbackValue(areaFill, [datum, index, finalData]); })\n : areaFill, animate: animate, data: gridItems });\n return container\n .selectAll(CLASS_NAMES.grid.class)\n .data([1])\n .join(function (enter) { return enter.append(function () { return new Grid({ style: style }); }).attr('className', CLASS_NAMES.grid.name); }, function (update) {\n return update.transition(function () {\n return this.update(style);\n });\n }, function (exit) { return exit.remove(); })\n .transitions();\n}\n//# sourceMappingURL=grid.js.map","import { __read } from \"tslib\";\nimport { degToRad, parseSeriesAttr, textOf } from '../../../util';\nvar Bounds = /** @class */ (function () {\n function Bounds(x1, y1, x2, y2) {\n this.set(x1, y1, x2, y2);\n }\n Object.defineProperty(Bounds.prototype, \"left\", {\n get: function () {\n return this.x1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Bounds.prototype, \"top\", {\n get: function () {\n return this.y1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Bounds.prototype, \"right\", {\n get: function () {\n return this.x2;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Bounds.prototype, \"bottom\", {\n get: function () {\n return this.y2;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Bounds.prototype, \"width\", {\n get: function () {\n return this.defined('x2') && this.defined('x1') ? this.x2 - this.x1 : undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Bounds.prototype, \"height\", {\n get: function () {\n return this.defined('y2') && this.defined('y1') ? this.y2 - this.y1 : undefined;\n },\n enumerable: false,\n configurable: true\n });\n Bounds.prototype.rotatedPoints = function (radian, x, y) {\n var _a = this, x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n var cos = Math.cos(radian);\n var sin = Math.sin(radian);\n var cx = x - x * cos + y * sin;\n var cy = y - x * sin - y * cos;\n var points = [\n [cos * x1 - sin * y2 + cx, sin * x1 + cos * y2 + cy],\n [cos * x2 - sin * y2 + cx, sin * x2 + cos * y2 + cy],\n [cos * x1 - sin * y1 + cx, sin * x1 + cos * y1 + cy],\n [cos * x2 - sin * y1 + cx, sin * x2 + cos * y1 + cy],\n ];\n return points;\n };\n Bounds.prototype.set = function (x1, y1, x2, y2) {\n if (x2 < x1) {\n this.x2 = x1;\n this.x1 = x2;\n }\n else {\n this.x1 = x1;\n this.x2 = x2;\n }\n if (y2 < y1) {\n this.y2 = y1;\n this.y1 = y2;\n }\n else {\n this.y1 = y1;\n this.y2 = y2;\n }\n return this;\n };\n Bounds.prototype.defined = function (key) {\n return this[key] !== Number.MAX_VALUE && this[key] !== -Number.MAX_VALUE;\n };\n return Bounds;\n}());\nexport { Bounds };\nexport function getBounds(item, margin) {\n var angle = item.getEulerAngles() || 0;\n item.setEulerAngles(0);\n // get dimensions\n var _a = item.getLocalBounds(), _b = __read(_a.min, 2), x = _b[0], y = _b[1], _c = __read(_a.max, 2), right = _c[0], bottom = _c[1];\n var _d = getBBox(item), w = _d.width, h = _d.height;\n var height = h;\n var dx = 0;\n var dy = 0;\n var anchorX = x;\n var anchorY = y;\n var text = textOf(item);\n if (text) {\n // [to fix] 目前 G 上计算 bbox 有一点误差\n height -= 1.5;\n var a = text.style.textAlign;\n var b_1 = text.style.textBaseline;\n // horizontal alignment\n if (a === 'center') {\n anchorX = (x + right) / 2;\n }\n else if (a === 'right' || a === 'end') {\n anchorX = right;\n }\n else {\n // left by default, do nothing\n }\n // vertical alignment\n if (b_1 === 'middle') {\n anchorY = (y + bottom) / 2;\n }\n else if (b_1 === 'bottom') {\n anchorY = bottom;\n }\n }\n var _e = __read(parseSeriesAttr(margin), 4), _f = _e[0], t = _f === void 0 ? 0 : _f, _g = _e[1], r = _g === void 0 ? 0 : _g, _h = _e[2], b = _h === void 0 ? t : _h, _j = _e[3], l = _j === void 0 ? r : _j;\n var bounds = new Bounds((dx += x) - l, (dy += y) - t, dx + w + r, dy + height + b);\n item.setEulerAngles(angle);\n return bounds.rotatedPoints(degToRad(angle), anchorX, anchorY);\n}\nexport function getBBox(shape) {\n // @ts-ignore\n if (shape.__bbox__)\n return shape.__bbox__;\n return shape.getBBox();\n}\n//# sourceMappingURL=bounds.js.map","import { getBounds } from './bounds';\nfunction onLine(line, point) {\n return (point[0] <= Math.max(line[0][0], line[1][0]) &&\n point[0] <= Math.min(line[0][0], line[1][0]) &&\n point[1] <= Math.max(line[0][1], line[1][1]) &&\n point[1] <= Math.min(line[0][1], line[1][1]));\n}\nfunction direction(a, b, c) {\n var val = (b[1] - a[1]) * (c[0] - b[0]) - (b[0] - a[0]) * (c[1] - b[1]);\n if (val === 0)\n return 0;\n return val < 0 ? 2 : 1;\n}\nfunction isIntersect(line1, line2) {\n var dir1 = direction(line1[0], line1[1], line2[0]);\n var dir2 = direction(line1[0], line1[1], line2[1]);\n var dir3 = direction(line2[0], line2[1], line1[0]);\n var dir4 = direction(line2[0], line2[1], line1[1]);\n if (dir1 !== dir2 && dir3 !== dir4)\n return true;\n if (dir1 === 0 && onLine(line1, line2[0]))\n return true;\n if (dir2 === 0 && onLine(line1, line2[1]))\n return true;\n if (dir3 === 0 && onLine(line2, line1[0]))\n return true;\n if (dir4 === 0 && onLine(line2, line1[1]))\n return true;\n return false;\n}\nexport function isPointInsideRectangle(polygon, point) {\n var n = polygon.length;\n if (n < 3)\n return false;\n var lineToInfinity = [point, [9999, point[1]]];\n var count = 0;\n var i = 0;\n do {\n var side = [polygon[i], polygon[(i + 1) % n]];\n if (isIntersect(side, lineToInfinity)) {\n if (direction(side[0], point, side[1]) === 0)\n return onLine(side, point);\n count++;\n }\n i = (i + 1) % n;\n } while (i !== 0);\n return !!(count & 1);\n}\nexport function isRectangleBInsideA(rectA, rectB) {\n return rectB.every(function (point) { return isPointInsideRectangle(rectA, point); });\n}\n/**\n * 检测 child 是否完全在 container 内部\n */\nexport function contain(container, child, margin) {\n var x1 = container.x1, x2 = container.x2, y1 = container.y1, y2 = container.y2;\n var parent = [\n [x1, y1],\n [x2, y1],\n [x2, y2],\n [x1, y2],\n ];\n var element = getBounds(child, margin);\n return isRectangleBInsideA(parent, element);\n}\n//# sourceMappingURL=contain.js.map","import { __read, __values } from \"tslib\";\nimport { getBounds } from './bounds';\n/**\n * Detect whether line-line collision.\n * From: https://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect\n */\nfunction lineToLine(line1, line2) {\n var _a = __read(line1, 4), x0 = _a[0], y0 = _a[1], x1 = _a[2], y1 = _a[3];\n var _b = __read(line2, 4), x2 = _b[0], y2 = _b[1], x3 = _b[2], y3 = _b[3];\n var s10x = x1 - x0;\n var s10y = y1 - y0;\n var s32x = x3 - x2;\n var s32y = y3 - y2;\n var denom = s10x * s32y - s32x * s10y;\n if (denom === 0)\n return false;\n var denomPositive = denom > 0;\n var s02x = x0 - x2;\n var s02y = y0 - y2;\n var sNum = s10x * s02y - s10y * s02x;\n if (sNum < 0 === denomPositive)\n return false;\n var tNum = s32x * s02y - s32y * s02x;\n if (tNum < 0 === denomPositive)\n return false;\n if (sNum > denom === denomPositive || tNum > denom === denomPositive)\n return false;\n return true;\n}\nfunction intersectBoxLine(box /** 八个顶点 */, line) {\n var lines = [\n [box[0], box[1], box[2], box[3]],\n [box[2], box[3], box[4], box[5]],\n [box[4], box[5], box[6], box[7]],\n [box[6], box[7], box[0], box[1]],\n ];\n return lines.some(function (boxLine) { return lineToLine(line, boxLine); });\n}\nexport var IntersectUtils = { lineToLine: lineToLine, intersectBoxLine: intersectBoxLine, getBounds: getBounds };\n/**\n * 检测两个 DisplayObject 是否相交\n */\nexport function intersect(a, b, margin) {\n var e_1, _a;\n var p = getBounds(a, margin).flat(1);\n var q = getBounds(b, margin).flat(1);\n var linesP = [\n [p[0], p[1], p[2], p[3]],\n [p[0], p[1], p[4], p[5]],\n [p[4], p[5], p[6], p[7]],\n [p[2], p[3], p[6], p[7]],\n ];\n try {\n for (var linesP_1 = __values(linesP), linesP_1_1 = linesP_1.next(); !linesP_1_1.done; linesP_1_1 = linesP_1.next()) {\n var line = linesP_1_1.value;\n if (intersectBoxLine(q, line))\n return true;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (linesP_1_1 && !linesP_1_1.done && (_a = linesP_1.return)) _a.call(linesP_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return false;\n}\n//# sourceMappingURL=intersect.js.map","import { __read, __values } from \"tslib\";\nimport { parseSeriesAttr, scale } from '../../../util';\nimport { getLabelVector } from '../guides/utils';\nimport { isAxisVertical } from '../guides/line';\nimport { Bounds } from './bounds';\nimport { contain } from './contain';\nimport { intersect } from './intersect';\n/**\n * 创建副轴包围盒\n * @returns return false if no crossSize, else croseBBox\n */\nfunction createCrossBBox(attr, padding) {\n var type = attr.type, labelDirection = attr.labelDirection, crossSize = attr.crossSize;\n if (!crossSize)\n return false;\n if (type === 'arc') {\n var center = attr.center, radius = attr.radius;\n var _a = __read(center, 2), cx = _a[0], cy = _a[1];\n var size = labelDirection === 'negative' ? 0 : crossSize;\n var dMin = -radius - size;\n var dMax = radius + size;\n var _b = __read(parseSeriesAttr(padding), 4), top_1 = _b[0], right_1 = _b[1], bottom_1 = _b[2], left_1 = _b[3];\n // 假定始终为顺时针方向\n return new Bounds(cx + dMin - left_1, cy + dMin - top_1, cx + dMax + right_1, cy + dMax + bottom_1);\n }\n var _c = __read(attr.startPos, 2), sx = _c[0], sy = _c[1], _d = __read(attr.endPos, 2), ex = _d[0], ey = _d[1];\n // 水平时取左右,垂直时取上下\n var _e = __read(isAxisVertical(attr)\n ? [-padding, 0, padding, 0]\n : [0, padding, 0, -padding], 4), top = _e[0], right = _e[1], bottom = _e[2], left = _e[3];\n var labelVector = getLabelVector(0, attr);\n var diff = scale(labelVector, crossSize);\n var bbox = new Bounds(sx, sy, ex, ey);\n bbox.x1 += left;\n bbox.y1 += top;\n bbox.x2 += right + diff[0];\n bbox.y2 += bottom + diff[1];\n return bbox;\n}\nexport function boundTest(items, attr, margin) {\n var e_1, _a;\n var crossPadding = attr.crossPadding;\n var resultSet = new Set();\n var prev = null;\n var crossBBox = createCrossBBox(attr, crossPadding);\n var testContain = function (item) {\n if (crossBBox)\n return contain(crossBBox, item);\n return true;\n };\n var testIntersect = function (prevItem, currItem) {\n if (!prevItem)\n return true;\n return !intersect(prevItem, currItem, parseSeriesAttr(margin));\n };\n try {\n for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {\n var curr = items_1_1.value;\n if (!testContain(curr)) {\n resultSet.add(curr);\n }\n else if (!prev || testIntersect(prev, curr)) {\n prev = curr;\n }\n else {\n resultSet.add(prev);\n resultSet.add(curr);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return Array.from(resultSet);\n}\n//# sourceMappingURL=test.js.map","import { __read } from \"tslib\";\nimport { isNil } from '@antv/util';\nimport { getFont, measureTextWidth } from '../../../util';\nimport { getBBox } from '../utils/bounds';\nimport { boundTest } from '../utils/test';\nfunction parseLengthString(str, font) {\n if (font === void 0) { font = {}; }\n if (isNil(str))\n return 0;\n if (typeof str === 'number')\n return str;\n return Math.floor(measureTextWidth(str, font));\n}\nexport default function ellipseLabels(labels, overlapCfg, attr, utils) {\n if (labels.length <= 1)\n return;\n var _a = overlapCfg.suffix, suffix = _a === void 0 ? '...' : _a, minLength = overlapCfg.minLength, _b = overlapCfg.maxLength, maxLength = _b === void 0 ? Infinity : _b, _c = overlapCfg.step, ellipsisStep = _c === void 0 ? ' ' : _c, _d = overlapCfg.margin, margin = _d === void 0 ? [0, 0, 0, 0] : _d;\n var font = getFont(utils.getTextShape(labels[0]));\n var step = parseLengthString(ellipsisStep, font);\n var min = minLength ? parseLengthString(minLength, font) : step;\n var max = parseLengthString(maxLength, font);\n // Enable to ellipsis label when overlap.\n if (isNil(max) || max === Infinity) {\n max = Math.max.apply(null, labels.map(function (d) { return getBBox(d).width; }));\n }\n // Generally, 100 ticks cost less than 300ms. If cost time exceed, means ticks count is too large to see.\n var source = labels.slice();\n var _e = __read(margin, 4), _f = _e[0], top = _f === void 0 ? 0 : _f, _g = _e[1], right = _g === void 0 ? 0 : _g, _h = _e[2], bottom = _h === void 0 ? top : _h, _j = _e[3], left = _j === void 0 ? right : _j;\n var _loop_1 = function (allowedLength) {\n source.forEach(function (label) {\n utils.ellipsis(utils.getTextShape(label), allowedLength, suffix);\n });\n source = boundTest(labels, attr, margin);\n // 碰撞检测\n if (source.length < 1)\n return { value: void 0 };\n };\n for (var allowedLength = max; allowedLength > min + step; allowedLength -= step) {\n var state_1 = _loop_1(allowedLength);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n}\n//# sourceMappingURL=autoEllipsis.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { defined, getLocalBBox, hide } from '../../../util';\nimport { isAxisHorizontal, isAxisVertical } from '../guides/line';\nimport { boundTest } from '../utils/test';\nimport { getBBox } from '../utils/bounds';\nvar methods = {\n parity: function (items, _a) {\n var _b = _a.seq, seq = _b === void 0 ? 2 : _b;\n return items.filter(function (item, i) { return (i % seq ? (hide(item), false) : true); });\n },\n};\nvar filterDefined = function (arr) { return arr.filter(defined); };\nexport default function hideLabels(labels, overlapCfg, attr, utils) {\n var count = labels.length;\n var keepHeader = overlapCfg.keepHeader, keepTail = overlapCfg.keepTail;\n if (count <= 1 || (count === 2 && keepHeader && keepTail))\n return;\n var parityHide = methods.parity;\n var reset = function (els) { return (els.forEach(utils.show), els); };\n var seq = 2;\n var source = labels.slice();\n var target = labels.slice();\n var minLabelWidth = Math.min.apply(Math, __spreadArray([1], __read(labels.map(function (d) { return getBBox(d).width; })), false));\n if (attr.type === 'linear' && (isAxisHorizontal(attr) || isAxisVertical(attr))) {\n var minX = getLocalBBox(labels[0]).left;\n var maxX = getLocalBBox(labels[count - 1]).right;\n var distance = Math.abs(maxX - minX) || 1;\n seq = Math.max(Math.floor((count * minLabelWidth) / distance), seq);\n }\n var first;\n var last;\n if (keepHeader)\n first = source.splice(0, 1)[0];\n if (keepTail) {\n last = source.splice(-1, 1)[0];\n source.reverse();\n }\n reset(source);\n while (seq < labels.length &&\n boundTest(filterDefined(last ? __spreadArray(__spreadArray([last], __read(target), false), [first], false) : __spreadArray([first], __read(target), false)), attr, overlapCfg === null || overlapCfg === void 0 ? void 0 : overlapCfg.margin).length) {\n // 每两步,减一个 (不需要考虑保留 first)\n if (last && !first && seq % 2 === 0) {\n var rest = source.splice(0, 1);\n rest.forEach(utils.hide);\n }\n else if (last && first) {\n // 如果有 first 的话,每一步,减一个(增加迭代次数)\n var rest = source.splice(0, 1);\n rest.forEach(utils.hide);\n }\n target = parityHide(reset(source), { seq: seq });\n seq++;\n }\n}\n//# sourceMappingURL=autoHide.js.map","import { __values } from \"tslib\";\nimport { boundTest } from '../utils/test';\nexport default function rotateLabels(labels, overlapCfg, attr, utils) {\n var e_1, _a;\n var _b = overlapCfg.optionalAngles, optionalAngles = _b === void 0 ? [0, 45, 90] : _b, margin = overlapCfg.margin, _c = overlapCfg.recoverWhenFailed, recoverWhenFailed = _c === void 0 ? true : _c;\n var defaultAngles = labels.map(function (label) { return label.getLocalEulerAngles(); });\n var runAndPassed = function () { return boundTest(labels, attr, margin).length < 1; };\n var setLabelsRotate = function (angle) {\n return labels.forEach(function (label, index) {\n var rotate = Array.isArray(angle) ? angle[index] : angle;\n utils.rotate(label, +rotate);\n });\n };\n try {\n for (var optionalAngles_1 = __values(optionalAngles), optionalAngles_1_1 = optionalAngles_1.next(); !optionalAngles_1_1.done; optionalAngles_1_1 = optionalAngles_1.next()) {\n var angle = optionalAngles_1_1.value;\n setLabelsRotate(angle);\n if (runAndPassed())\n return;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (optionalAngles_1_1 && !optionalAngles_1_1.done && (_a = optionalAngles_1.return)) _a.call(optionalAngles_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (recoverWhenFailed) {\n setLabelsRotate(defaultAngles);\n }\n}\n//# sourceMappingURL=autoRotate.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { isAxisHorizontal } from '../guides/line';\nimport { boundTest } from '../utils/test';\nfunction inferTextBaseline(attr) {\n var type = attr.type, labelDirection = attr.labelDirection;\n if (type === 'linear' && isAxisHorizontal(attr)) {\n return labelDirection === 'negative' ? 'bottom' : 'top';\n }\n return 'middle';\n}\nexport default function wrapLabels(labels, overlapCfg, attr, utils) {\n var _a = overlapCfg.wordWrapWidth, wordWrapWidth = _a === void 0 ? 50 : _a, _b = overlapCfg.maxLines, maxLines = _b === void 0 ? 3 : _b, _c = overlapCfg.recoverWhenFailed, recoverWhenFailed = _c === void 0 ? true : _c, _d = overlapCfg.margin, margin = _d === void 0 ? [0, 0, 0, 0] : _d;\n var defaultLines = labels.map(function (label) { return label.attr('maxLines') || 1; });\n var minLines = Math.min.apply(Math, __spreadArray([], __read(defaultLines), false));\n var runAndPassed = function () { return boundTest(labels, attr, margin).length < 1; };\n var textBaseline = inferTextBaseline(attr);\n var setLabelsWrap = function (lines) {\n return labels.forEach(function (label, index) {\n var maxLines = Array.isArray(lines) ? lines[index] : lines;\n utils.wrap(label, wordWrapWidth, maxLines, textBaseline);\n });\n };\n if (minLines > maxLines)\n return;\n for (var lines = minLines; lines <= maxLines; lines++) {\n setLabelsWrap(lines);\n if (runAndPassed())\n return;\n }\n if (recoverWhenFailed) {\n setLabelsWrap(defaultLines);\n }\n}\n//# sourceMappingURL=autoWrap.js.map","import { isInOffscreenGroup } from '../../../util';\nimport ellipsis from './autoEllipsis';\nimport hide from './autoHide';\nimport rotate from './autoRotate';\nimport wrap from './autoWrap';\nexport var OverlapUtils = new Map([\n ['hide', hide],\n ['rotate', rotate],\n ['ellipsis', ellipsis],\n ['wrap', wrap],\n]);\nexport function canProcessOverlap(labels, attr, type) {\n if (attr.labelOverlap.length < 1)\n return false;\n if (type === 'hide')\n return !isInOffscreenGroup(labels[0]);\n if (type === 'rotate')\n return !labels.some(function (label) { var _a; return !!((_a = label.attr('transform')) === null || _a === void 0 ? void 0 : _a.includes('rotate')); });\n if (type === 'ellipsis' || type === 'wrap')\n return labels.filter(function (item) { return item.querySelector('text'); }).length > 1;\n return true;\n}\nexport function processOverlap(labels, attr, utils) {\n var _a = attr.labelOverlap, labelOverlap = _a === void 0 ? [] : _a;\n if (!labelOverlap.length)\n return;\n labelOverlap.forEach(function (overlapCfg) {\n var type = overlapCfg.type;\n var util = OverlapUtils.get(type);\n if (canProcessOverlap(labels, attr, type))\n util === null || util === void 0 ? void 0 : util(labels, overlapCfg, attr, utils);\n });\n}\n//# sourceMappingURL=index.js.map","export * from './test';\nexport function getFactor() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var fn = function (str) { return (str === 'positive' ? -1 : 1); };\n return args.reduce(function (acc, cur) { return acc * fn(cur); }, 1);\n}\n//# sourceMappingURL=index.js.map","import { __assign, __read, __rest, __spreadArray } from \"tslib\";\nimport { get, isFunction } from '@antv/util';\nimport { fadeOut, onAnimateFinished, onAnimatesFinished, transition, transitionShape } from '../../../animation';\nimport { add, defined, ellipsisIt, getCallbackValue, hide, inRange, percentTransform, radToDeg, renderExtDo, scale, select, show, splitStyle, subStyleProps, wrapIt, } from '../../../util';\nimport { CLASS_NAMES } from '../constant';\nimport { processOverlap } from '../overlap';\nimport { getFactor } from '../utils';\nimport { getValuePos } from './line';\nimport { filterExec, getCallbackStyle, getLabelVector, getLineTangentVector } from './utils';\nfunction angleNormalizer(angle) {\n var normalizedAngle = angle;\n while (normalizedAngle < 0)\n normalizedAngle += 360;\n return Math.round(normalizedAngle % 360);\n}\nfunction getAngle(v1, v2) {\n var _a = __read(v1, 2), x1 = _a[0], y1 = _a[1];\n var _b = __read(v2, 2), x2 = _b[0], y2 = _b[1];\n var _c = __read([x1 * x2 + y1 * y2, x1 * y2 - y1 * x2], 2), dot = _c[0], det = _c[1];\n return Math.atan2(det, dot);\n}\n/** to correct label rotation to avoid inverted character */\nfunction correctLabelRotation(_rotate) {\n var rotate = (_rotate + 360) % 180;\n if (!inRange(rotate, -90, 90))\n rotate += 180;\n return rotate;\n}\n/** get rotation from preset or layout */\nfunction getLabelRotation(datum, label, attr) {\n var _a;\n var labelAlign = attr.labelAlign;\n // if label rotate is set, use it\n var customRotate = (_a = label.style.transform) === null || _a === void 0 ? void 0 : _a.includes('rotate');\n if (customRotate)\n return label.getLocalEulerAngles();\n var rotate = 0;\n var labelVector = getLabelVector(datum.value, attr);\n var tangentVector = getLineTangentVector(datum.value, attr);\n if (labelAlign === 'horizontal')\n return 0;\n if (labelAlign === 'perpendicular')\n rotate = getAngle([1, 0], labelVector);\n else\n rotate = getAngle([tangentVector[0] < 0 ? -1 : 1, 0], tangentVector);\n return correctLabelRotation(radToDeg(rotate));\n}\n/** get the label align according to its tick and label angle */\nfunction getLabelStyle(value, rotate, attr) {\n var type = attr.type, labelAlign = attr.labelAlign;\n var labelVector = getLabelVector(value, attr);\n var labelAngle = angleNormalizer(rotate);\n var tickAngle = angleNormalizer(radToDeg(getAngle([1, 0], labelVector)));\n var textAlign = 'center';\n var textBaseline = 'middle';\n if (type === 'linear') {\n // tick 和 label 均为水平或垂直时,做快速判断\n if ([90, 270].includes(tickAngle) && labelAngle === 0) {\n textAlign = 'center';\n textBaseline = labelVector[1] === 1 ? 'top' : 'bottom';\n }\n else if (!(tickAngle % 180) && [90, 270].includes(labelAngle)) {\n textAlign = 'center';\n }\n // 根据 tick 和 label 的角度,判断 label 的对齐方式\n else if (tickAngle === 0) {\n if (inRange(labelAngle, 0, 90, false, true)) {\n textAlign = 'start';\n }\n else if (inRange(labelAngle, 0, 90) || inRange(labelAngle, 270, 360)) {\n textAlign = 'start';\n }\n }\n else if (tickAngle === 90) {\n if (inRange(labelAngle, 0, 90, false, true)) {\n textAlign = 'start';\n }\n else if (inRange(labelAngle, 90, 180) || inRange(labelAngle, 270, 360)) {\n textAlign = 'end';\n }\n }\n else if (tickAngle === 270) {\n if (inRange(labelAngle, 0, 90, false, true)) {\n textAlign = 'end';\n }\n else if (inRange(labelAngle, 90, 180) || inRange(labelAngle, 270, 360)) {\n textAlign = 'start';\n }\n }\n else if (tickAngle === 180) {\n if (labelAngle === 90) {\n textAlign = 'start';\n }\n else if (inRange(labelAngle, 0, 90) || inRange(labelAngle, 270, 360)) {\n textAlign = 'end';\n }\n }\n /**\n * todo tick 倾斜时的判断逻辑,该情况下坐标轴非垂直或水平\n */\n }\n else {\n // 弧线坐标轴 label 的对齐方式判断逻辑\n if (labelAlign === 'parallel') {\n if (inRange(tickAngle, 0, 180, true)) {\n textBaseline = 'top';\n }\n else {\n textBaseline = 'bottom';\n }\n }\n else if (labelAlign === 'horizontal') {\n if (inRange(tickAngle, 90, 270, false)) {\n textAlign = 'end';\n }\n else if (inRange(tickAngle, 270, 360, false) || inRange(tickAngle, 0, 90)) {\n textAlign = 'start';\n }\n }\n else if (labelAlign === 'perpendicular') {\n if (inRange(tickAngle, 90, 270)) {\n textAlign = 'end';\n }\n else {\n textAlign = 'start';\n }\n }\n }\n return { textAlign: textAlign, textBaseline: textBaseline };\n}\nfunction setRotateAndAdjustLabelAlign(rotate, group, attr) {\n group.setLocalEulerAngles(rotate);\n var value = group.__data__.value;\n var textStyle = getLabelStyle(value, rotate, attr);\n var label = group.querySelector(CLASS_NAMES.labelItem.class);\n if (label)\n applyTextStyle(label, textStyle);\n}\nfunction getLabelPos(datum, data, attr) {\n var showTick = attr.showTick, tickLength = attr.tickLength, tickDirection = attr.tickDirection, labelDirection = attr.labelDirection, labelSpacing = attr.labelSpacing;\n var index = data.indexOf(datum);\n var finalLabelSpacing = getCallbackValue(labelSpacing, [datum, index, data]);\n var _a = __read([getLabelVector(datum.value, attr), getFactor(labelDirection, tickDirection)], 2), labelVector = _a[0], unionFactor = _a[1];\n var extraLength = unionFactor === 1 ? getCallbackValue(showTick ? tickLength : 0, [datum, index, data]) : 0;\n var _b = __read(add(scale(labelVector, finalLabelSpacing + extraLength), getValuePos(datum.value, attr)), 2), x = _b[0], y = _b[1];\n return { x: x, y: y };\n}\nfunction formatter(datum, index, data, attr) {\n var labelFormatter = attr.labelFormatter;\n var element = isFunction(labelFormatter)\n ? function () { return renderExtDo(getCallbackValue(labelFormatter, [datum, index, data, getLabelVector(datum.value, attr)])); }\n : function () { return renderExtDo(datum.label || ''); };\n return element;\n}\nfunction applyTextStyle(node, style) {\n if (node.nodeName === 'text')\n node.attr(style);\n}\nfunction overlapHandler(attr) {\n processOverlap(this.node().childNodes, attr, {\n hide: hide,\n show: show,\n rotate: function (label, angle) {\n setRotateAndAdjustLabelAlign(+angle, label, attr);\n },\n ellipsis: function (label, len, suffix) {\n label && ellipsisIt(label, len || Infinity, suffix);\n },\n wrap: function (label, width, lines) {\n label && wrapIt(label, width, lines);\n },\n getTextShape: function (label) { return label.querySelector('text'); },\n });\n}\nfunction renderLabel(container, datum, data, style, attr) {\n var index = data.indexOf(datum);\n var label = select(container)\n .append(formatter(datum, index, data, attr))\n .attr('className', CLASS_NAMES.labelItem.name)\n .node();\n var _a = __read(splitStyle(getCallbackStyle(style, [datum, index, data])), 2), labelStyle = _a[0], _b = _a[1], transform = _b.transform, groupStyle = __rest(_b, [\"transform\"]);\n percentTransform(container, transform);\n var rotate = getLabelRotation(datum, container, attr);\n container.setLocalEulerAngles(+rotate);\n applyTextStyle(label, __assign(__assign({}, getLabelStyle(datum.value, rotate, attr)), labelStyle));\n // todo G transform 存在问题,需要二次设置\n percentTransform(container, transform);\n container.attr(groupStyle);\n return label;\n}\nexport function renderLabels(container, data, attr, animate) {\n var finalData = filterExec(data, attr.labelFilter);\n var style = subStyleProps(attr, 'label');\n return container\n .selectAll(CLASS_NAMES.label.class)\n .data(finalData, function (d, i) { return i; })\n .join(function (enter) {\n return enter\n .append('g')\n .attr('className', CLASS_NAMES.label.name)\n .transition(function (datum) {\n renderLabel(this, datum, data, style, attr);\n this.attr(getLabelPos(datum, data, attr));\n this.__bbox__ = datum.bbox;\n return null;\n })\n .call(function () { return overlapHandler.call(container, attr); });\n }, function (update) {\n return update\n .transition(function (datum) {\n var prevLabel = this.querySelector(CLASS_NAMES.labelItem.class);\n var label = renderLabel(this, datum, data, style, attr);\n var shapeAnimation = transitionShape(prevLabel, label, animate.update);\n var animation = transition(this, getLabelPos(datum, data, attr), animate.update);\n this.__bbox__ = datum.bbox;\n return __spreadArray(__spreadArray([], __read(shapeAnimation), false), [animation], false);\n })\n .call(function (selection) {\n var transitions = get(selection, '_transitions').flat().filter(defined);\n onAnimatesFinished(transitions, function () { return overlapHandler.call(container, attr); });\n });\n }, function (exit) {\n return exit.transition(function () {\n var _this = this;\n var animation = fadeOut(this.childNodes[0], animate.exit);\n onAnimateFinished(animation, function () { return select(_this).remove(); });\n return animation;\n });\n })\n .transitions();\n}\n//# sourceMappingURL=labels.js.map","import { __assign, __read } from \"tslib\";\nimport { isFunction } from '@antv/util';\nimport { fadeOut, onAnimateFinished, transition } from '../../../animation';\nimport { getCallbackValue, select, splitStyle, subStyleProps } from '../../../util';\nimport { CLASS_NAMES } from '../constant';\nimport { getValuePos } from './line';\nimport { filterExec, getCallbackStyle, getDirectionVector } from './utils';\nexport function getTickVector(value, attr) {\n return getDirectionVector(value, attr.tickDirection, attr);\n}\nexport function getTickPoints(unitVector, tickLength) {\n var _a = __read(unitVector, 2), dx = _a[0], dy = _a[1];\n return [\n [0, 0],\n [dx * tickLength, dy * tickLength],\n ];\n}\nfunction getTickLineLayout(datum, index, data, tickVector, attr) {\n var tickLength = attr.tickLength;\n var _a = __read(getTickPoints(tickVector, getCallbackValue(tickLength, [datum, index, data])), 2), _b = __read(_a[0], 2), x1 = _b[0], y1 = _b[1], _c = __read(_a[1], 2), x2 = _c[0], y2 = _c[1];\n return { x1: x1, x2: x2, y1: y1, y2: y2 };\n}\nfunction createTickEl(container, datum, index, data, attr) {\n var formatter = attr.tickFormatter;\n var tickVector = getTickVector(datum.value, attr);\n var el = 'line';\n if (isFunction(formatter))\n el = function () { return getCallbackValue(formatter, [datum, index, data, tickVector]); };\n return container.append(el).attr('className', CLASS_NAMES.tickItem.name);\n}\nfunction applyTickStyle(datum, index, data, tick, group, attr, style) {\n var tickVector = getTickVector(datum.value, attr);\n var _a = getTickLineLayout(datum, index, data, tickVector, attr), x1 = _a.x1, x2 = _a.x2, y1 = _a.y1, y2 = _a.y2;\n var _b = __read(splitStyle(getCallbackStyle(style, [datum, index, data, tickVector])), 2), tickStyle = _b[0], groupStyle = _b[1];\n tick.node().nodeName === 'line' && tick.styles(__assign({ x1: x1, x2: x2, y1: y1, y2: y2 }, tickStyle));\n group.attr(groupStyle);\n tick.styles(tickStyle);\n}\nfunction createTick(datum, index, data, attr, tickAttr, animate) {\n var tick = createTickEl(select(this), datum, index, data, attr);\n applyTickStyle(datum, index, data, tick, this, attr, tickAttr);\n var _a = __read(getValuePos(datum.value, attr), 2), x = _a[0], y = _a[1];\n return transition(this, { x: x, y: y }, animate);\n}\nexport function renderTicks(container, axisData, attr, animate) {\n var finalData = filterExec(axisData, attr.tickFilter);\n var tickAttr = subStyleProps(attr, 'tick');\n return container\n .selectAll(CLASS_NAMES.tick.class)\n .data(finalData, function (d) { return d.id || d.label; })\n .join(function (enter) {\n return enter\n .append('g')\n .attr('className', CLASS_NAMES.tick.name)\n .transition(function (datum, index) {\n return createTick.call(this, datum, index, finalData, attr, tickAttr, false);\n });\n }, function (update) {\n return update.transition(function (datum, index) {\n this.removeChildren();\n return createTick.call(this, datum, index, finalData, attr, tickAttr, animate.update);\n });\n }, function (exit) {\n return exit.transition(function () {\n var _this = this;\n var animation = fadeOut(this.childNodes[0], animate.exit);\n onAnimateFinished(animation, function () { return _this.remove(); });\n return animation;\n });\n })\n .transitions();\n}\n//# sourceMappingURL=ticks.js.map","import { __extends, __read, __rest } from \"tslib\";\nimport { Component } from '../../core';\nimport { BBox, classNames, ifShow, parseSeriesAttr, select, splitStyle } from '../../util';\nvar CLASS_NAMES = classNames({\n text: 'text',\n}, 'title');\n/**\n * @example\n * lt -> ['l', 't']\n * left-top -> ['l', 't']\n * inner -> i\n */\nexport function parsePosition(position) {\n if (!/\\S+-\\S+/g.test(position))\n return position.length > 2 ? [position[0]] : position.split('');\n return position.split('-').map(function (str) {\n return str[0];\n });\n}\n/**\n * calculate the actual bbox of the element with title\n * @example a legend with width x, height y, but the real bbox is x1 < x, y1 < y\n */\nexport function getBBox(title, content) {\n var _a = title.attributes, position = _a.position, spacing = _a.spacing, inset = _a.inset, text = _a.text;\n var titleBBox = title.getBBox();\n var contentBBox = content.getBBox();\n var pos = parsePosition(position);\n var _b = __read(parseSeriesAttr(text ? spacing : 0), 4), spacingTop = _b[0], spacingRight = _b[1], spacingBottom = _b[2], spacingLeft = _b[3];\n var _c = __read(parseSeriesAttr(inset), 4), insetTop = _c[0], insetRight = _c[1], insetBottom = _c[2], insetLeft = _c[3];\n var _d = __read([spacingLeft + spacingRight, spacingTop + spacingBottom], 2), spacingWidth = _d[0], spacingHeight = _d[1];\n var _e = __read([insetLeft + insetRight, insetTop + insetBottom], 2), insetWidth = _e[0], insetHeight = _e[1];\n // 只基于第一个 pos 进行判断\n // 如果在左边或者上边,直接包围盒相加再加上间距\n if (pos[0] === 'l') {\n return new BBox(titleBBox.x, titleBBox.y, contentBBox.width + titleBBox.width + spacingWidth + insetWidth, Math.max(contentBBox.height + insetHeight, titleBBox.height));\n }\n if (pos[0] === 't') {\n return new BBox(titleBBox.x, titleBBox.y, Math.max(contentBBox.width + insetWidth, titleBBox.width), contentBBox.height + titleBBox.height + spacingHeight + insetHeight);\n }\n // 如果在右边或者下边,基于 content.width, content.height 相加再加上间距\n var _f = __read([\n content.attributes.width || contentBBox.width,\n content.attributes.height || contentBBox.height,\n ], 2), contentWidth = _f[0], contentHeight = _f[1];\n return new BBox(contentBBox.x, contentBBox.y, contentWidth + titleBBox.width + spacingWidth + insetWidth, contentHeight + titleBBox.height + spacingHeight + insetHeight);\n}\nfunction mayApplyStyle(el, style) {\n var finalStyle = Object.entries(style).reduce(function (acc, _a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n var currAttr = el.node().attr(key);\n if (!currAttr)\n acc[key] = value;\n return acc;\n }, {});\n el.styles(finalStyle);\n}\nfunction getTitleLayout(cfg) {\n var _a, _b, _c, _d;\n var _e = cfg, width = _e.width, height = _e.height, position = _e.position;\n var _f = __read([+width / 2, +height / 2], 2), hW = _f[0], hH = _f[1];\n var _g = __read([+hW, +hH, 'center', 'middle'], 4), x = _g[0], y = _g[1], textAlign = _g[2], textBaseline = _g[3];\n var pos = parsePosition(position);\n if (pos.includes('l'))\n _a = __read([0, 'start'], 2), x = _a[0], textAlign = _a[1];\n if (pos.includes('r'))\n _b = __read([+width, 'end'], 2), x = _b[0], textAlign = _b[1];\n if (pos.includes('t'))\n _c = __read([0, 'top'], 2), y = _c[0], textBaseline = _c[1];\n if (pos.includes('b'))\n _d = __read([+height, 'bottom'], 2), y = _d[0], textBaseline = _d[1];\n return { x: x, y: y, textAlign: textAlign, textBaseline: textBaseline };\n}\nvar Title = /** @class */ (function (_super) {\n __extends(Title, _super);\n function Title(options) {\n return _super.call(this, options, {\n text: '',\n width: 0,\n height: 0,\n fill: '#4a505a',\n fontWeight: 'bold',\n fontSize: 12,\n fontFamily: 'sans-serif',\n inset: 0,\n spacing: 0,\n position: 'top-left',\n }) || this;\n }\n Title.prototype.getAvailableSpace = function () {\n var container = this;\n var _a = this.attributes, containerWidth = _a.width, containerHeight = _a.height, position = _a.position, spacing = _a.spacing, inset = _a.inset;\n var title = container.querySelector(CLASS_NAMES.text.class);\n if (!title)\n return new BBox(0, 0, +containerWidth, +containerHeight);\n var _b = title.getBBox(), titleWidth = _b.width, titleHeight = _b.height;\n var _c = __read(parseSeriesAttr(spacing), 4), spacingTop = _c[0], spacingRight = _c[1], spacingBottom = _c[2], spacingLeft = _c[3];\n var _d = __read([0, 0, +containerWidth, +containerHeight], 4), x = _d[0], y = _d[1], width = _d[2], height = _d[3];\n var pos = parsePosition(position);\n if (pos.includes('i'))\n return new BBox(x, y, width, height);\n pos.forEach(function (p, i) {\n var _a, _b, _c, _d;\n if (p === 't')\n _a = __read(i === 0\n ? [titleHeight + spacingBottom, +containerHeight - titleHeight - spacingBottom]\n : [0, +containerHeight], 2), y = _a[0], height = _a[1];\n if (p === 'r')\n _b = __read([+containerWidth - titleWidth - spacingLeft], 1), width = _b[0];\n if (p === 'b')\n _c = __read([+containerHeight - titleHeight - spacingTop], 1), height = _c[0];\n if (p === 'l')\n _d = __read(i === 0 ? [titleWidth + spacingRight, +containerWidth - titleWidth - spacingRight] : [0, +containerWidth], 2), x = _d[0], width = _d[1];\n });\n var _e = __read(parseSeriesAttr(inset), 4), insetTop = _e[0], insetRight = _e[1], insetBottom = _e[2], insetLeft = _e[3];\n var _f = __read([insetLeft + insetRight, insetTop + insetBottom], 2), insetWidth = _f[0], insetHeight = _f[1];\n return new BBox(x + insetLeft, y + insetTop, width - insetWidth, height - insetHeight);\n };\n Title.prototype.getBBox = function () {\n if (this.title)\n return this.title.getBBox();\n return new BBox(0, 0, 0, 0);\n };\n Title.prototype.render = function (attributes, container) {\n var _this = this;\n var width = attributes.width, height = attributes.height, position = attributes.position, spacing = attributes.spacing, restStyle = __rest(attributes, [\"width\", \"height\", \"position\", \"spacing\"]);\n var _a = __read(splitStyle(restStyle), 1), titleStyle = _a[0];\n var _b = getTitleLayout(attributes), x = _b.x, y = _b.y, textAlign = _b.textAlign, textBaseline = _b.textBaseline;\n ifShow(!!restStyle.text, select(container), function (group) {\n _this.title = group\n .maybeAppendByClassName(CLASS_NAMES.text, 'text')\n .styles(titleStyle)\n .call(mayApplyStyle, { x: x, y: y, textAlign: textAlign, textBaseline: textBaseline })\n .node();\n });\n };\n return Title;\n}(Component));\nexport { Title };\n//# sourceMappingURL=index.js.map","import { __read, __rest } from \"tslib\";\nimport { transition } from '../../../animation';\nimport { normalize, parseSeriesAttr, percentTransform, renderExtDo, scale, select, splitStyle, subStyleProps, } from '../../../util';\nimport { parsePosition } from '../../title';\nimport { CLASS_NAMES } from '../constant';\nfunction getTitlePosition(mainGroup, titleGroup, attr) {\n var _a = attr.titlePosition, position = _a === void 0 ? 'lb' : _a, spacing = attr.titleSpacing;\n var pos = parsePosition(position);\n var _b = mainGroup.node().getLocalBounds(), _c = __read(_b.min, 2), mainX = _c[0], mainY = _c[1], _d = __read(_b.halfExtents, 2), mainHalfWidth = _d[0], mainHalfHeight = _d[1];\n var _e = __read(titleGroup.node().getLocalBounds().halfExtents, 2), titleHalfWidth = _e[0], titleHalfHeight = _e[1];\n var _f = __read([mainX + mainHalfWidth, mainY + mainHalfHeight], 2), x = _f[0], y = _f[1];\n var _g = __read(parseSeriesAttr(spacing), 4), spacingTop = _g[0], spacingRight = _g[1], spacingBottom = _g[2], spacingLeft = _g[3];\n if (['start', 'end'].includes(position) && attr.type === 'linear') {\n var startPos = attr.startPos, endPos = attr.endPos;\n // todo did not consider the truncate case\n var _h = __read(position === 'start' ? [startPos, endPos] : [endPos, startPos], 2), from = _h[0], to = _h[1];\n var direction = normalize([-to[0] + from[0], -to[1] + from[1]]);\n var _j = __read(scale(direction, spacingTop), 2), dx = _j[0], dy = _j[1];\n return { x: from[0] + dx, y: from[1] + dy };\n }\n if (pos.includes('t'))\n y -= mainHalfHeight + titleHalfHeight + spacingTop;\n if (pos.includes('r'))\n x += mainHalfWidth + titleHalfWidth + spacingRight;\n if (pos.includes('l'))\n x -= mainHalfWidth + titleHalfWidth * 2 + spacingLeft;\n if (pos.includes('b'))\n y += mainHalfHeight + titleHalfHeight * 2 + spacingBottom;\n return { x: x, y: y };\n}\nfunction inferTransform(n, direction, position) {\n var node = n.cloneNode(true);\n node.style.transform = 'scale(1, 1)';\n node.style.transform = 'none';\n var height = node.getBBox().height;\n if (direction === 'vertical') {\n if (position === 'left')\n return \"rotate(-90) translate(0, \".concat(height / 2, \")\");\n if (position === 'right')\n return \"rotate(-90) translate(0, -\".concat(height / 2, \")\");\n }\n return '';\n}\nfunction applyTitleStyle(title, group, axis, attr, animate) {\n var style = subStyleProps(attr, 'title');\n var _a = __read(splitStyle(style), 2), titleStyle = _a[0], _b = _a[1], specified = _b.transform, groupStyle = __rest(_b, [\"transform\"]);\n title.styles(titleStyle);\n group.styles(groupStyle);\n var transform = specified || inferTransform(title.node(), titleStyle.direction, titleStyle.position);\n percentTransform(title.node(), transform);\n var _c = getTitlePosition(\n // @ts-ignore\n select(axis._offscreen || axis.querySelector(CLASS_NAMES.mainGroup.class)), group, attr), x = _c.x, y = _c.y;\n var animation = transition(group.node(), { x: x, y: y }, animate);\n percentTransform(title.node(), transform);\n return animation;\n}\nexport function renderTitle(container, axis, attr, animate) {\n var titleText = attr.titleText;\n return container\n .selectAll(CLASS_NAMES.title.class)\n .data([{ title: titleText }].filter(function (d) { return !!d.title; }), function (d, i) { return d.title; })\n .join(function (enter) {\n return enter\n .append(function () { return renderExtDo(titleText); })\n .attr('className', CLASS_NAMES.title.name)\n .transition(function () {\n return applyTitleStyle(select(this), container, axis, attr, animate.enter);\n });\n }, function (update) {\n return update.transition(function () {\n return applyTitleStyle(select(this), container, axis, attr, animate.update);\n });\n }, function (exit) { return exit.remove(); })\n .transitions();\n}\n//# sourceMappingURL=title.js.map","import { __extends, __read, __spreadArray } from \"tslib\";\nimport { parseAnimationOption } from '../../animation';\nimport { Component } from '../../core';\nimport { ifShow, sampling, select } from '../../util';\nimport { AXIS_BASE_DEFAULT_ATTR, CLASS_NAMES } from './constant';\nimport { renderGrid } from './guides/grid';\nimport { renderLabels } from './guides/labels';\nimport { renderAxisLine } from './guides/line';\nimport { renderTicks } from './guides/ticks';\nimport { renderTitle } from './guides/title';\nfunction renderAxisMain(attributes, container, data, animation) {\n var showLine = attributes.showLine, showTick = attributes.showTick, showLabel = attributes.showLabel;\n /** line */\n var lineGroup = container.maybeAppendByClassName(CLASS_NAMES.lineGroup, 'g');\n var lineTransitions = ifShow(showLine, lineGroup, function (group) {\n return renderAxisLine(group, attributes, animation);\n }) || [];\n /** tick */\n var tickGroup = container.maybeAppendByClassName(CLASS_NAMES.tickGroup, 'g');\n var tickTransitions = ifShow(showTick, tickGroup, function (group) {\n return renderTicks(group, data, attributes, animation);\n }) || [];\n /** label */\n var labelGroup = container.maybeAppendByClassName(CLASS_NAMES.labelGroup, 'g');\n var labelTransitions = ifShow(showLabel, labelGroup, function (group) {\n return renderLabels(group, data, attributes, animation);\n }) || [];\n return __spreadArray(__spreadArray(__spreadArray([], __read(lineTransitions), false), __read(tickTransitions), false), __read(labelTransitions), false).filter(function (t) { return !!t; });\n}\nvar Axis = /** @class */ (function (_super) {\n __extends(Axis, _super);\n function Axis(options) {\n return _super.call(this, options, AXIS_BASE_DEFAULT_ATTR) || this;\n }\n Axis.prototype.render = function (attributes, container, specificAnimation) {\n var _this = this;\n var titleText = attributes.titleText, data = attributes.data, animate = attributes.animate, showTitle = attributes.showTitle, showGrid = attributes.showGrid, dataThreshold = attributes.dataThreshold, truncRange = attributes.truncRange;\n var sampledData = sampling(data, dataThreshold).filter(function (_a) {\n var value = _a.value;\n if (truncRange && value > truncRange[0] && value < truncRange[1])\n return false;\n return true;\n });\n var finalAnimation = parseAnimationOption(specificAnimation === undefined ? animate : specificAnimation);\n /** grid */\n var gridGroup = select(container).maybeAppendByClassName(CLASS_NAMES.gridGroup, 'g');\n var gridTransitions = ifShow(showGrid, gridGroup, function (group) { return renderGrid(group, sampledData, attributes, finalAnimation); }) || [];\n /** main group */\n var mainGroup = select(container).maybeAppendByClassName(CLASS_NAMES.mainGroup, 'g');\n if (titleText && ((!this.initialized && finalAnimation.enter) || (this.initialized && finalAnimation.update))) {\n renderAxisMain(attributes, select(this.offscreenGroup), sampledData, parseAnimationOption(false));\n }\n // render\n var mainTransitions = renderAxisMain(attributes, select(mainGroup.node()), sampledData, finalAnimation);\n /** title */\n var titleGroup = select(container).maybeAppendByClassName(CLASS_NAMES.titleGroup, 'g');\n var titleTransitions = ifShow(showTitle, titleGroup, function (group) {\n return renderTitle(group, _this, attributes, finalAnimation);\n }) || [];\n return __spreadArray(__spreadArray(__spreadArray([], __read(gridTransitions), false), __read(mainTransitions), false), __read(titleTransitions), false).flat().filter(function (t) { return !!t; });\n };\n return Axis;\n}(Component));\nexport { Axis };\n//# sourceMappingURL=axis.js.map","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport { ElementEvent } from '@antv/g';\nimport { clamp, debounce } from '@antv/util';\nimport { animate, onAnimateFinished } from '../../animation';\nimport { Component } from '../../core';\nimport { Group } from '../../shapes';\nimport { BBox, classNames, hide, scaleToPixel, select, show, splitStyle, subStyleProps, transpose, visibility, } from '../../util';\nimport { button } from '../marker/symbol';\nvar CLASS_NAMES = classNames({\n prevBtnGroup: 'prev-btn-group',\n prevBtn: 'prev-btn',\n nextBtnGroup: 'next-btn-group',\n nextBtn: 'next-btn',\n pageInfoGroup: 'page-info-group',\n pageInfo: 'page-info',\n playWindow: 'play-window',\n contentGroup: 'content-group',\n controller: 'controller',\n clipPath: 'clip-path',\n}, 'navigator');\nvar Navigator = /** @class */ (function (_super) {\n __extends(Navigator, _super);\n function Navigator(options) {\n var _this = _super.call(this, options, {\n animate: {\n easing: 'linear',\n duration: 200,\n fill: 'both',\n },\n buttonCursor: 'pointer',\n buttonFill: 'black',\n buttonPath: button(0, 0, 6),\n buttonSize: 12,\n controllerPadding: 5,\n controllerSpacing: 5,\n formatter: function (curr, total) { return \"\".concat(curr, \"/\").concat(total); },\n defaultPage: 0,\n loop: false,\n orientation: 'horizontal',\n pageNumFill: 'black',\n pageNumFontSize: 12,\n pageNumTextAlign: 'start',\n pageNumTextBaseline: 'middle',\n }) || this;\n _this.playState = 'idle';\n _this.contentGroup = _this.appendChild(new Group({ class: CLASS_NAMES.contentGroup.name }));\n _this.playWindow = _this.contentGroup.appendChild(new Group({ class: CLASS_NAMES.playWindow.name }));\n _this.innerCurrPage = _this.defaultPage;\n return _this;\n }\n Object.defineProperty(Navigator.prototype, \"defaultPage\", {\n get: function () {\n var defaultPage = this.attributes.defaultPage;\n return clamp(defaultPage, 0, Math.max(this.pageViews.length - 1, 0));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"pageViews\", {\n get: function () {\n return this.playWindow.children;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"controllerShape\", {\n // todo fixme\n get: function () {\n return this.totalPages > 1 ? { width: 55, height: 0 } : { width: 0, height: 0 };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"pageShape\", {\n get: function () {\n var pageViews = this.pageViews;\n var _a = __read(transpose(pageViews.map(function (pageView) {\n var _a = pageView.getBBox(), width = _a.width, height = _a.height;\n return [width, height];\n })).map(function (arr) { return Math.max.apply(Math, __spreadArray([], __read(arr), false)); }), 2), maxWidth = _a[0], maxHeight = _a[1];\n var _b = this.attributes, _c = _b.pageWidth, pageWidth = _c === void 0 ? maxWidth : _c, _d = _b.pageHeight, pageHeight = _d === void 0 ? maxHeight : _d;\n return { pageWidth: pageWidth, pageHeight: pageHeight };\n },\n enumerable: false,\n configurable: true\n });\n Navigator.prototype.getContainer = function () {\n return this.playWindow;\n };\n Object.defineProperty(Navigator.prototype, \"totalPages\", {\n get: function () {\n return this.pageViews.length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"currPage\", {\n get: function () {\n return this.innerCurrPage;\n },\n enumerable: false,\n configurable: true\n });\n Navigator.prototype.getBBox = function () {\n var _a = _super.prototype.getBBox.call(this), x = _a.x, y = _a.y;\n var controllerShape = this.controllerShape;\n var _b = this.pageShape, pageWidth = _b.pageWidth, pageHeight = _b.pageHeight;\n return new BBox(x, y, pageWidth + controllerShape.width, pageHeight);\n };\n Navigator.prototype.goTo = function (pageNum) {\n var _this = this;\n var animateOptions = this.attributes.animate;\n var _a = this, currPage = _a.currPage, playState = _a.playState, playWindow = _a.playWindow, pageViews = _a.pageViews;\n if (playState !== 'idle' || pageNum < 0 || pageViews.length <= 0 || pageNum >= pageViews.length)\n return null;\n pageViews[currPage].setLocalPosition(0, 0);\n this.prepareFollowingPage(pageNum);\n var _b = __read(this.getFollowingPageDiff(pageNum), 2), dx = _b[0], dy = _b[1];\n this.playState = 'running';\n var animation = animate(playWindow, [{ transform: \"translate(0, 0)\" }, { transform: \"translate(\".concat(-dx, \", \").concat(-dy, \")\") }], animateOptions);\n onAnimateFinished(animation, function () {\n _this.innerCurrPage = pageNum;\n _this.playState = 'idle';\n _this.setVisiblePages([pageNum]);\n _this.updatePageInfo();\n });\n return animation;\n };\n Navigator.prototype.prev = function () {\n var loop = this.attributes.loop;\n var pages = this.pageViews.length;\n var page = this.currPage;\n if (!loop && page <= 0)\n return null;\n var following = loop ? (page - 1 + pages) % pages : clamp(page - 1, 0, pages);\n return this.goTo(following);\n };\n Navigator.prototype.next = function () {\n var loop = this.attributes.loop;\n var pages = this.pageViews.length;\n var page = this.currPage;\n if (!loop && page >= pages - 1)\n return null;\n var following = loop ? (page + 1) % pages : clamp(page + 1, 0, pages);\n return this.goTo(following);\n };\n Navigator.prototype.renderClipPath = function (container) {\n var _a = this.pageShape, pageWidth = _a.pageWidth, pageHeight = _a.pageHeight;\n if (!pageWidth || !pageHeight) {\n this.contentGroup.style.clipPath = undefined;\n return;\n }\n this.clipPath = container.maybeAppendByClassName(CLASS_NAMES.clipPath, 'rect').styles({\n width: pageWidth,\n height: pageHeight,\n });\n this.contentGroup.attr('clipPath', this.clipPath.node());\n };\n Navigator.prototype.setVisiblePages = function (pages) {\n this.playWindow.children.forEach(function (page, index) {\n if (pages.includes(index))\n show(page);\n else\n hide(page);\n });\n };\n Navigator.prototype.adjustControllerLayout = function () {\n var _a = this, prevBtn = _a.prevBtnGroup, nextBtn = _a.nextBtnGroup, pageNum = _a.pageInfoGroup;\n var _b = this.attributes, orientation = _b.orientation, padding = _b.controllerPadding;\n var _c = pageNum.getBBox(), pW = _c.width, pH = _c.height;\n var _d = __read(orientation === 'horizontal' ? [-180, 0] : [-90, 90], 2), r1 = _d[0], r2 = _d[1];\n prevBtn.setLocalEulerAngles(r1);\n nextBtn.setLocalEulerAngles(r2);\n var _e = prevBtn.getBBox(), bpW = _e.width, bpH = _e.height;\n var _f = nextBtn.getBBox(), bnW = _f.width, bnH = _f.height;\n var maxWidth = Math.max(bpW, pW, bnW);\n var _g = orientation === 'horizontal'\n ? {\n offset: [\n [0, 0],\n [bpW / 2 + padding, 0],\n [bpW + pW + padding * 2, 0],\n ],\n textAlign: 'start',\n }\n : {\n offset: [\n [maxWidth / 2, -bpH - padding],\n [maxWidth / 2, 0],\n [maxWidth / 2, bnH + padding],\n ],\n textAlign: 'center',\n }, _h = __read(_g.offset, 3), _j = __read(_h[0], 2), o1x = _j[0], o1y = _j[1], _k = __read(_h[1], 2), o2x = _k[0], o2y = _k[1], _l = __read(_h[2], 2), o3x = _l[0], o3y = _l[1], textAlign = _g.textAlign;\n var pageNumText = pageNum.querySelector('text');\n pageNumText && (pageNumText.style.textAlign = textAlign);\n prevBtn.setLocalPosition(o1x, o1y);\n pageNum.setLocalPosition(o2x, o2y);\n nextBtn.setLocalPosition(o3x, o3y);\n };\n Navigator.prototype.updatePageInfo = function () {\n var _a;\n var _b = this, currPage = _b.currPage, pageViews = _b.pageViews, formatter = _b.attributes.formatter;\n if (pageViews.length < 2)\n return;\n (_a = this.pageInfoGroup.querySelector(CLASS_NAMES.pageInfo.class)) === null || _a === void 0 ? void 0 : _a.attr('text', formatter(currPage + 1, pageViews.length));\n this.adjustControllerLayout();\n };\n Navigator.prototype.getFollowingPageDiff = function (pageNum) {\n var currPage = this.currPage;\n if (currPage === pageNum)\n return [0, 0];\n var orientation = this.attributes.orientation;\n var _a = this.pageShape, pageWidth = _a.pageWidth, pageHeight = _a.pageHeight;\n var sign = pageNum < currPage ? -1 : 1;\n return orientation === 'horizontal' ? [sign * pageWidth, 0] : [0, sign * pageHeight];\n };\n Navigator.prototype.prepareFollowingPage = function (pageNum) {\n var _a = this, currPage = _a.currPage, pageViews = _a.pageViews;\n this.setVisiblePages([pageNum, currPage]);\n if (pageNum !== currPage) {\n var _b = __read(this.getFollowingPageDiff(pageNum), 2), dx = _b[0], dy = _b[1];\n pageViews[pageNum].setLocalPosition(dx, dy);\n }\n };\n Navigator.prototype.renderController = function (container) {\n var _this = this;\n var spacing = this.attributes.controllerSpacing;\n var _a = this.pageShape, pageWidth = _a.pageWidth, pageHeight = _a.pageHeight;\n var visible = this.pageViews.length >= 2;\n var group = container.maybeAppendByClassName(CLASS_NAMES.controller, 'g');\n visibility(group.node(), visible);\n if (!visible)\n return;\n var style = subStyleProps(this.attributes, 'button');\n var textStyle = subStyleProps(this.attributes, 'pageNum');\n var _b = __read(splitStyle(style), 2), _c = _b[0], groupStyle = _b[1], size = _c.size, pathStyle = __rest(_c, [\"size\"]);\n var whetherToAddEventListener = !group.select(CLASS_NAMES.prevBtnGroup.class).node();\n var prevBtnGroup = group.maybeAppendByClassName(CLASS_NAMES.prevBtnGroup, 'g').styles(groupStyle);\n this.prevBtnGroup = prevBtnGroup.node();\n var prevBtn = prevBtnGroup.maybeAppendByClassName(CLASS_NAMES.prevBtn, 'path');\n var nextBtnGroup = group.maybeAppendByClassName(CLASS_NAMES.nextBtnGroup, 'g').styles(groupStyle);\n this.nextBtnGroup = nextBtnGroup.node();\n var nextBtn = nextBtnGroup.maybeAppendByClassName(CLASS_NAMES.nextBtn, 'path');\n [prevBtn, nextBtn].forEach(function (btn) {\n btn.styles(__assign(__assign({}, pathStyle), { transformOrigin: 'center' }));\n scaleToPixel(btn.node(), size, true);\n });\n var pageInfoGroup = group.maybeAppendByClassName(CLASS_NAMES.pageInfoGroup, 'g');\n this.pageInfoGroup = pageInfoGroup.node();\n pageInfoGroup.maybeAppendByClassName(CLASS_NAMES.pageInfo, 'text').styles(textStyle);\n this.updatePageInfo();\n // put it on the right side of the container\n group.node().setLocalPosition(pageWidth + spacing, pageHeight / 2);\n if (whetherToAddEventListener) {\n this.prevBtnGroup.addEventListener('click', function () {\n _this.prev();\n });\n this.nextBtnGroup.addEventListener('click', function () {\n _this.next();\n });\n }\n };\n Navigator.prototype.render = function (attributes, container) {\n /**\n * container\n * |- contentGroup (with clip path)\n * |- playWindow (with animation)\n * |- pages\n * |- clipPath\n */\n var containerSelection = select(container);\n this.renderClipPath(containerSelection);\n this.renderController(containerSelection);\n this.setVisiblePages([this.defaultPage]);\n this.goTo(this.defaultPage);\n };\n Navigator.prototype.bindEvents = function () {\n var _this = this;\n var render = debounce(function () { return _this.render(_this.attributes, _this); }, 50);\n this.playWindow.addEventListener(ElementEvent.INSERTED, render);\n this.playWindow.addEventListener(ElementEvent.REMOVED, render);\n };\n return Navigator;\n}(Component));\nexport { Navigator };\n//# sourceMappingURL=index.js.map","import { __read } from \"tslib\";\nimport { Marker } from '../marker';\n/**\n * 将值转换至步长tick上\n */\nexport function getStepValueByValue(value, step, min) {\n var count = Math.round((value - min) / step);\n return min + count * step;\n}\nexport function hiddenHandle(x, y, r) {\n // 长宽比\n var ratio = 1.4;\n var diffY = ratio * r;\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x + r, y + diffY], ['L', x - r, y + diffY], ['Z']];\n}\n// 控制手柄\nvar HANDLE_HEIGHT_RATIO = 1.4;\nvar HANDLE_TRIANGLE_RATIO = 0.4;\n// 纵向手柄\nexport function verticalHandle(x, y, r) {\n var width = r;\n var height = width * HANDLE_HEIGHT_RATIO;\n var halfWidth = width / 2;\n var oneSixthWidth = width / 6;\n var triangleX = x + height * HANDLE_TRIANGLE_RATIO;\n return [\n ['M', x, y],\n ['L', triangleX, y + halfWidth],\n ['L', x + height, y + halfWidth],\n ['L', x + height, y - halfWidth],\n ['L', triangleX, y - halfWidth],\n ['Z'],\n // 绘制两条横线\n ['M', triangleX, y + oneSixthWidth],\n ['L', x + height - 2, y + oneSixthWidth],\n ['M', triangleX, y - oneSixthWidth],\n ['L', x + height - 2, y - oneSixthWidth],\n ];\n}\n// 横向手柄\nexport function horizontalHandle(x, y, r) {\n var width = r;\n var height = width * HANDLE_HEIGHT_RATIO;\n var halfWidth = width / 2;\n var oneSixthWidth = width / 6;\n var triangleY = y + height * HANDLE_TRIANGLE_RATIO;\n return [\n ['M', x, y],\n ['L', x - halfWidth, triangleY],\n ['L', x - halfWidth, y + height],\n ['L', x + halfWidth, y + height],\n ['L', x + halfWidth, triangleY],\n ['Z'],\n // 绘制两条竖线\n ['M', x - oneSixthWidth, triangleY],\n ['L', x - oneSixthWidth, y + height - 2],\n ['M', x + oneSixthWidth, triangleY],\n ['L', x + oneSixthWidth, y + height - 2],\n ];\n}\nMarker.registerSymbol('hiddenHandle', hiddenHandle);\nMarker.registerSymbol('verticalHandle', verticalHandle);\nMarker.registerSymbol('horizontalHandle', horizontalHandle);\nexport var ifH = function (orientation, a, b) {\n if (orientation === void 0) { orientation = 'horizontal'; }\n return (orientation === 'horizontal' ? a : b);\n};\n// 具体逻辑还没看,@chushen\nexport function getSafetySelections(domain, newSelection, oldSelection, precision) {\n var _a;\n if (precision === void 0) { precision = 4; }\n var _b = __read(domain, 2), min = _b[0], max = _b[1];\n var _c = __read(newSelection, 2), start = _c[0], end = _c[1];\n var _d = __read(oldSelection, 2), prevStart = _d[0], prevEnd = _d[1];\n var _e = __read([start, end], 2), startVal = _e[0], endVal = _e[1];\n var range = endVal - startVal;\n // 交换startVal endVal\n if (startVal > endVal) {\n _a = __read([endVal, startVal], 2), startVal = _a[0], endVal = _a[1];\n }\n // 超出范围就全选\n if (range > max - min) {\n return [min, max];\n }\n if (startVal < min) {\n if (prevStart === min && prevEnd === endVal) {\n return [min, endVal];\n }\n return [min, range + min];\n }\n if (endVal > max) {\n if (prevEnd === max && prevStart === startVal) {\n return [startVal, max];\n }\n return [max - range, max];\n }\n // 保留小数\n return [startVal, endVal];\n}\nexport function ifHorizontal(orientation, a, b) {\n if (orientation === void 0) { orientation = 'horizontal'; }\n return orientation === 'horizontal' ? a : b;\n}\n//# sourceMappingURL=utils.js.map","import { __assign, __extends, __read, __rest } from \"tslib\";\nimport { Circle, } from '@antv/g';\nimport { Component } from '../../../core';\nimport { classNames, copyAttributes, ellipsisIt, ifShow, parseSeriesAttr, renderExtDo, scaleToPixel, select, subStyleProps, } from '../../../util';\nvar CLASS_NAMES = classNames({\n layout: 'flex',\n markerGroup: 'marker-group',\n marker: 'marker',\n labelGroup: 'label-group',\n label: 'label',\n valueGroup: 'value-group',\n value: 'value',\n backgroundGroup: 'background-group',\n background: 'background',\n}, 'legend-category-item');\nfunction styleOfMarker(group) {\n var marker = group.querySelector(CLASS_NAMES.marker.class);\n if (marker)\n return marker.style;\n return {};\n}\nvar CategoryItem = /** @class */ (function (_super) {\n __extends(CategoryItem, _super);\n function CategoryItem(options) {\n return _super.call(this, options, {\n span: [1, 1],\n marker: function () { return new Circle({ style: { r: 6 } }); },\n markerSize: 10,\n labelFill: '#646464',\n valueFill: '#646464',\n labelFontSize: 12,\n valueFontSize: 12,\n labelTextBaseline: 'middle',\n valueTextBaseline: 'middle',\n }) || this;\n }\n Object.defineProperty(CategoryItem.prototype, \"showValue\", {\n get: function () {\n var valueText = this.attributes.valueText;\n if (!valueText)\n return false;\n if (typeof valueText === 'string' || typeof valueText === 'number')\n return valueText !== '';\n if (typeof valueText === 'function')\n return true;\n return valueText.attr('text') !== '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CategoryItem.prototype, \"actualSpace\", {\n get: function () {\n var label = this.labelGroup;\n var value = this.valueGroup;\n var markerSize = this.attributes.markerSize;\n var _a = label.node().getBBox(), labelWidth = _a.width, labelHeight = _a.height;\n var _b = value.node().getBBox(), valueWidth = _b.width, valueHeight = _b.height;\n return {\n markerWidth: markerSize,\n labelWidth: labelWidth,\n valueWidth: valueWidth,\n height: Math.max(markerSize, labelHeight, valueHeight),\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CategoryItem.prototype, \"span\", {\n get: function () {\n var span = this.attributes.span;\n if (!span)\n return [1, 1];\n var _a = __read(parseSeriesAttr(span), 2), span1 = _a[0], innerSpan = _a[1];\n var span2 = this.showValue ? innerSpan : 0;\n var basis = span1 + span2;\n return [span1 / basis, span2 / basis];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CategoryItem.prototype, \"shape\", {\n get: function () {\n var _a;\n var _b = this.attributes, markerSize = _b.markerSize, fullWidth = _b.width;\n var actualSpace = this.actualSpace;\n var markerWidth = actualSpace.markerWidth, height = actualSpace.height;\n var _c = this.actualSpace, labelWidth = _c.labelWidth, valueWidth = _c.valueWidth;\n var _d = __read(this.spacing, 2), spacing1 = _d[0], spacing2 = _d[1];\n if (fullWidth) {\n var width_1 = fullWidth - markerSize - spacing1 - spacing2;\n var _e = __read(this.span, 2), span1 = _e[0], span2 = _e[1];\n _a = __read([span1 * width_1, span2 * width_1], 2), labelWidth = _a[0], valueWidth = _a[1];\n }\n var width = markerWidth + labelWidth + valueWidth + spacing1 + spacing2;\n return { width: width, height: height, markerWidth: markerWidth, labelWidth: labelWidth, valueWidth: valueWidth };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CategoryItem.prototype, \"spacing\", {\n get: function () {\n var spacing = this.attributes.spacing;\n if (!spacing)\n return [0, 0];\n var _a = __read(parseSeriesAttr(spacing), 2), spacing1 = _a[0], spacing2 = _a[1];\n if (this.showValue)\n return [spacing1, spacing2];\n return [spacing1, 0];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CategoryItem.prototype, \"layout\", {\n get: function () {\n var _a = this.shape, markerWidth = _a.markerWidth, labelWidth = _a.labelWidth, valueWidth = _a.valueWidth, width = _a.width, height = _a.height;\n var _b = __read(this.spacing, 2), spacing1 = _b[0], spacing2 = _b[1];\n return {\n height: height,\n width: width,\n markerWidth: markerWidth,\n labelWidth: labelWidth,\n valueWidth: valueWidth,\n position: [markerWidth / 2, markerWidth + spacing1, markerWidth + labelWidth + spacing1 + spacing2],\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CategoryItem.prototype, \"scaleSize\", {\n get: function () {\n var markerShapeStyle = styleOfMarker(this.markerGroup.node());\n var _a = this.attributes, markerSize = _a.markerSize, _b = _a.markerStrokeWidth, markerStrokeWidth = _b === void 0 ? markerShapeStyle.strokeWidth : _b, _c = _a.markerLineWidth, markerLineWidth = _c === void 0 ? markerShapeStyle.lineWidth : _c, _d = _a.markerStroke, markerStroke = _d === void 0 ? markerShapeStyle.stroke : _d;\n // empirical value\n var strokeWidth = +(markerStrokeWidth || markerLineWidth || (markerStroke ? 1 : 0)) * Math.sqrt(2);\n var _e = this.markerGroup.node().getBBox(), width = _e.width, height = _e.height;\n return (1 - strokeWidth / Math.max(width, height)) * markerSize;\n },\n enumerable: false,\n configurable: true\n });\n CategoryItem.prototype.renderMarker = function (container) {\n var _this = this;\n var marker = this.attributes.marker;\n var style = subStyleProps(this.attributes, 'marker');\n this.markerGroup = container.maybeAppendByClassName(CLASS_NAMES.markerGroup, 'g').style('zIndex', 0);\n ifShow(!!marker, this.markerGroup, function () {\n var parent = _this.markerGroup.node();\n var oldMarker = parent.getElementsByClassName(CLASS_NAMES.marker.name)[0];\n var newMarker = marker();\n if (!oldMarker) {\n select(newMarker).attr('className', CLASS_NAMES.marker.name).styles(style);\n parent.appendChild(newMarker);\n }\n else if (newMarker.nodeName === oldMarker.nodeName) {\n copyAttributes(oldMarker, newMarker);\n select(oldMarker).styles(style);\n }\n else {\n oldMarker.remove();\n select(newMarker).attr('className', CLASS_NAMES.marker.name).styles(style);\n parent.appendChild(newMarker);\n }\n // record the scale of marker\n _this.markerGroup.node().scale(1 / _this.markerGroup.node().getScale()[0]);\n scaleToPixel(_this.markerGroup.node(), _this.scaleSize, true);\n });\n };\n CategoryItem.prototype.renderLabel = function (container) {\n var _a = subStyleProps(this.attributes, 'label'), label = _a.text, style = __rest(_a, [\"text\"]);\n this.labelGroup = container.maybeAppendByClassName(CLASS_NAMES.labelGroup, 'g').style('zIndex', 0);\n this.labelGroup.maybeAppendByClassName(CLASS_NAMES.label, function () { return renderExtDo(label); }).styles(style);\n };\n CategoryItem.prototype.renderValue = function (container) {\n var _this = this;\n var _a = subStyleProps(this.attributes, 'value'), value = _a.text, style = __rest(_a, [\"text\"]);\n this.valueGroup = container.maybeAppendByClassName(CLASS_NAMES.valueGroup, 'g').style('zIndex', 0);\n ifShow(this.showValue, this.valueGroup, function () {\n _this.valueGroup.maybeAppendByClassName(CLASS_NAMES.value, function () { return renderExtDo(value); }).styles(style);\n });\n };\n CategoryItem.prototype.renderBackground = function (container) {\n var _a = this.shape, width = _a.width, height = _a.height;\n var style = subStyleProps(this.attributes, 'background');\n this.background = container.maybeAppendByClassName(CLASS_NAMES.backgroundGroup, 'g').style('zIndex', -1);\n this.background.maybeAppendByClassName(CLASS_NAMES.background, 'rect').styles(__assign({ width: width, height: height }, style));\n };\n CategoryItem.prototype.adjustLayout = function () {\n var _a = this.layout, labelWidth = _a.labelWidth, valueWidth = _a.valueWidth, height = _a.height, _b = __read(_a.position, 3), markerX = _b[0], labelX = _b[1], valueX = _b[2];\n var halfHeight = height / 2;\n this.markerGroup.styles({ x: markerX, y: halfHeight });\n this.labelGroup.styles({ x: labelX, y: halfHeight });\n ellipsisIt(this.labelGroup.select(CLASS_NAMES.label.class).node(), Math.ceil(labelWidth));\n if (this.showValue) {\n this.valueGroup.styles({ x: valueX, y: halfHeight });\n ellipsisIt(this.valueGroup.select(CLASS_NAMES.value.class).node(), Math.ceil(valueWidth));\n }\n };\n CategoryItem.prototype.render = function (attributes, container) {\n var ctn = select(container);\n this.renderMarker(ctn);\n this.renderLabel(ctn);\n this.renderValue(ctn);\n this.renderBackground(ctn);\n this.adjustLayout();\n };\n return CategoryItem;\n}(Component));\nexport { CategoryItem };\n//# sourceMappingURL=item.js.map","import { __assign, __extends, __read, __spreadArray } from \"tslib\";\nimport { CustomEvent } from '@antv/g';\nimport { noop, set } from '@antv/util';\nimport { Component } from '../../../core';\nimport { Group } from '../../../shapes';\nimport { classNames, deepAssign, getCallbackValue, groupBy, select, subStyleProps, } from '../../../util';\nimport { Navigator } from '../../navigator';\nimport { ifHorizontal } from '../utils';\nimport { CategoryItem } from './item';\nvar CLASS_NAMES = classNames({\n page: 'item-page',\n navigator: 'navigator',\n item: 'item',\n}, 'items');\n/**\n * if value exists, it need to follow rule, otherwise, return default value\n * @param value\n * @param rule\n * @param defaultValue\n * @returns\n */\nvar ifSatisfied = function (value, rule, defaultValue) {\n if (defaultValue === void 0) { defaultValue = true; }\n if (value) {\n return rule(value);\n }\n return defaultValue;\n};\nvar CategoryItems = /** @class */ (function (_super) {\n __extends(CategoryItems, _super);\n function CategoryItems(options) {\n var _this = _super.call(this, options, {\n data: [],\n gridRow: Infinity,\n gridCol: undefined,\n padding: 0,\n width: 1000,\n height: 100,\n rowPadding: 0,\n colPadding: 0,\n layout: 'flex',\n orientation: 'horizontal',\n click: noop,\n mouseenter: noop,\n mouseleave: noop,\n }) || this;\n _this.navigatorShape = [0, 0];\n return _this;\n }\n Object.defineProperty(CategoryItems.prototype, \"pageViews\", {\n get: function () {\n return this.navigator.getContainer();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CategoryItems.prototype, \"grid\", {\n get: function () {\n var _a = this.attributes, gridRow = _a.gridRow, gridCol = _a.gridCol, data = _a.data;\n if (!gridRow && !gridCol)\n throw new Error('gridRow and gridCol can not be set null at the same time');\n if (!!gridRow && !!gridCol)\n return [gridRow, gridCol];\n if (gridRow)\n return [gridRow, data.length];\n return [data.length, gridCol]; // !!gridCol\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CategoryItems.prototype, \"renderData\", {\n get: function () {\n var _a = this.attributes, data = _a.data, layout = _a.layout;\n var style = subStyleProps(this.attributes, 'item');\n var d = data.map(function (datum, index) {\n var _a = datum.id, id = _a === void 0 ? index : _a, labelText = datum.label, valueText = datum.value;\n return {\n id: \"\".concat(id),\n index: index,\n style: __assign({ layout: layout, labelText: labelText, valueText: valueText }, Object.fromEntries(Object.entries(style).map(function (_a) {\n var _b = __read(_a, 2), key = _b[0], val = _b[1];\n return [key, getCallbackValue(val, [datum, index, data])];\n }))),\n };\n });\n return d;\n },\n enumerable: false,\n configurable: true\n });\n CategoryItems.prototype.getGridLayout = function () {\n var _this = this;\n var _a = this.attributes, orientation = _a.orientation, width = _a.width, rowPadding = _a.rowPadding, colPadding = _a.colPadding;\n var _b = __read(this.navigatorShape, 1), navWidth = _b[0];\n var _c = __read(this.grid, 2), gridRow = _c[0], gridCol = _c[1];\n var pageSize = gridCol * gridRow;\n var prevOffset = 0;\n return this.pageViews.children.map(function (item, index) {\n var _a, _b;\n // calc page, row and column\n var page = Math.floor(index / pageSize);\n var pageIndex = index % pageSize;\n var dir = _this.ifHorizontal(gridCol, gridRow);\n var pos = [Math.floor(pageIndex / dir), pageIndex % dir];\n if (orientation === 'vertical')\n pos.reverse();\n var _c = __read(pos, 2), row = _c[0], col = _c[1];\n // calc x, y and shape\n var colWidth = (width - navWidth - (gridCol - 1) * colPadding) / gridCol;\n // const rowHeight = getRenderBBox(item).height;\n var rowHeight = item.getBBox().height;\n var _d = __read([0, 0], 2), x = _d[0], y = _d[1];\n if (orientation === 'horizontal') {\n _a = __read([prevOffset, row * (rowHeight + rowPadding)], 2), x = _a[0], y = _a[1];\n prevOffset = col === gridCol - 1 ? 0 : prevOffset + colWidth + colPadding;\n }\n else {\n _b = __read([col * (colWidth + colPadding), prevOffset], 2), x = _b[0], y = _b[1];\n prevOffset = row === gridRow - 1 ? 0 : prevOffset + rowHeight + rowPadding;\n }\n return { page: page, index: index, row: row, col: col, pageIndex: pageIndex, width: colWidth, height: rowHeight, x: x, y: y };\n });\n };\n CategoryItems.prototype.getFlexLayout = function () {\n var _a = this.attributes, maxWidth = _a.width, maxHeight = _a.height, rowPadding = _a.rowPadding, cP = _a.colPadding;\n var _b = __read(this.navigatorShape, 1), navWidth = _b[0];\n var _c = __read(this.grid, 2), gridRow = _c[0], gridCol = _c[1];\n var _d = __read([maxWidth - navWidth, maxHeight], 2), limitWidth = _d[0], limitHeight = _d[1];\n var _e = __read([0, 0, 0, 0, 0, 0, 0, 0], 8), x = _e[0], y = _e[1], page = _e[2], pageIndex = _e[3], col = _e[4], row = _e[5], prevWidth = _e[6], prevHeight = _e[7];\n return this.pageViews.children.map(function (item, index) {\n var _a, _b, _c, _d;\n // const { width, height } = getRenderBBox(item);\n var _e = item.getBBox(), width = _e.width, height = _e.height;\n var colPadding = prevWidth === 0 ? 0 : cP;\n // assume that every item has the same height\n var nextWidth = prevWidth + colPadding + width;\n // inline\n if (nextWidth <= limitWidth && ifSatisfied(col, function (c) { return c < gridCol; })) {\n _a = __read([prevWidth + colPadding, prevHeight, nextWidth], 3), x = _a[0], y = _a[1], prevWidth = _a[2];\n return { width: width, height: height, x: x, y: y, page: page, index: index, pageIndex: pageIndex++, row: row, col: col++ };\n }\n // wrap\n _b = __read([row + 1, 0, 0, prevHeight + height + rowPadding], 4), row = _b[0], col = _b[1], prevWidth = _b[2], prevHeight = _b[3];\n var nextHeight = prevHeight + height;\n if (nextHeight <= limitHeight && ifSatisfied(row, function (r) { return r < gridRow; })) {\n _c = __read([prevWidth, prevHeight, width], 3), x = _c[0], y = _c[1], prevWidth = _c[2];\n return { width: width, height: height, x: x, y: y, page: page, index: index, pageIndex: pageIndex++, row: row, col: col++ };\n }\n // paging\n _d = __read([0, 0, width, 0, page + 1, 0, 0, 0], 8), x = _d[0], y = _d[1], prevWidth = _d[2], prevHeight = _d[3], page = _d[4], pageIndex = _d[5], row = _d[6], col = _d[7];\n return { width: width, height: height, x: x, y: y, page: page, index: index, pageIndex: pageIndex++, row: row, col: col++ };\n });\n };\n Object.defineProperty(CategoryItems.prototype, \"itemsLayout\", {\n get: function () {\n this.navigatorShape = [0, 0];\n var cb = this.attributes.layout === 'grid' ? this.getGridLayout : this.getFlexLayout;\n var layout = cb.call(this);\n // re layout\n if (layout.slice(-1)[0].page > 0) {\n this.navigatorShape = [55, 0];\n return cb.call(this);\n }\n return layout;\n },\n enumerable: false,\n configurable: true\n });\n CategoryItems.prototype.ifHorizontal = function (a, b) {\n var orientation = this.attributes.orientation;\n return ifHorizontal(orientation, a, b);\n };\n CategoryItems.prototype.flattenPage = function (container) {\n container.querySelectorAll(CLASS_NAMES.item.class).forEach(function (item) {\n container.appendChild(item);\n });\n container.querySelectorAll(CLASS_NAMES.page.class).forEach(function (page) {\n var removedPage = container.removeChild(page);\n removedPage.destroy();\n });\n };\n CategoryItems.prototype.renderItems = function (container) {\n var _a = this.attributes, click = _a.click, mouseenter = _a.mouseenter, mouseleave = _a.mouseleave;\n this.flattenPage(container);\n var dispatchCustomEvent = this.dispatchCustomEvent.bind(this);\n select(container)\n .selectAll(CLASS_NAMES.item.class)\n .data(this.renderData, function (d) { return d.id; })\n .join(function (enter) {\n return enter\n .append(function (_a) {\n var style = _a.style;\n return new CategoryItem({ style: style });\n })\n .attr('className', CLASS_NAMES.item.name)\n .on('click', function () {\n click === null || click === void 0 ? void 0 : click(this);\n dispatchCustomEvent('itemClick', { item: this });\n })\n .on('pointerenter', function () {\n mouseenter === null || mouseenter === void 0 ? void 0 : mouseenter(this);\n dispatchCustomEvent('itemMouseenter', { item: this });\n })\n .on('pointerleave', function () {\n mouseleave === null || mouseleave === void 0 ? void 0 : mouseleave(this);\n dispatchCustomEvent('itemMouseleave', { item: this });\n });\n }, function (update) {\n return update.each(function (_a) {\n var style = _a.style;\n this.update(style);\n });\n }, function (exit) { return exit.remove(); });\n };\n CategoryItems.prototype.relayoutNavigator = function () {\n var _a;\n var _b = this.attributes, layout = _b.layout, width = _b.width;\n var height = ((_a = this.pageViews.children[0]) === null || _a === void 0 ? void 0 : _a.getBBox().height) || 0;\n var _c = __read(this.navigatorShape, 2), navWidth = _c[0], navHeight = _c[1];\n this.navigator.update(layout === 'grid' ? { pageWidth: width - navWidth, pageHeight: height - navHeight } : {});\n };\n CategoryItems.prototype.adjustLayout = function () {\n var _this = this;\n var itemsLayouts = Object.entries(groupBy(this.itemsLayout, 'page')).map(function (_a) {\n var _b = __read(_a, 2), page = _b[0], layouts = _b[1];\n return ({\n page: page,\n layouts: layouts,\n });\n });\n var categoryItems = __spreadArray([], __read(this.navigator.getContainer().children), false);\n itemsLayouts.forEach(function (_a) {\n var layouts = _a.layouts;\n var page = _this.pageViews.appendChild(new Group({ className: CLASS_NAMES.page.name }));\n layouts.forEach(function (layout) {\n var x = layout.x, y = layout.y, index = layout.index, width = layout.width, height = layout.height;\n var item = categoryItems[index];\n // @ts-ignore\n page.appendChild(item);\n set(item, '__layout__', layout);\n item.update({ x: x, y: y, width: width, height: height });\n });\n });\n this.relayoutNavigator();\n };\n CategoryItems.prototype.renderNavigator = function (container) {\n var orientation = this.attributes.orientation;\n var navStyle = subStyleProps(this.attributes, 'nav');\n var style = deepAssign({ orientation: orientation }, navStyle);\n var that = this;\n container\n .selectAll(CLASS_NAMES.navigator.class)\n .data(['nav'])\n .join(function (enter) {\n return enter\n .append(function () { return new Navigator({ style: style }); })\n .attr('className', CLASS_NAMES.navigator.name)\n .each(function () {\n that.navigator = this;\n });\n }, function (update) {\n return update.each(function () {\n this.update(style);\n });\n }, function (exit) { return exit.remove(); });\n return this.navigator;\n };\n CategoryItems.prototype.getBBox = function () {\n return this.navigator.getBBox();\n };\n CategoryItems.prototype.render = function (attributes, container) {\n var data = this.attributes.data;\n if (!data || data.length === 0)\n return;\n /**\n * 1. render items\n * 2. paging\n * 3. layout\n */\n var navigator = this.renderNavigator(select(container));\n this.renderItems(navigator.getContainer());\n this.adjustLayout();\n };\n CategoryItems.prototype.dispatchCustomEvent = function (type, payload) {\n var evt = new CustomEvent(type, {\n detail: payload,\n });\n this.dispatchEvent(evt);\n };\n return CategoryItems;\n}(Component));\nexport { CategoryItems };\n//# sourceMappingURL=items.js.map","import { __assign, __extends, __read, __rest } from \"tslib\";\nimport { Component } from '../../../core';\nimport { classNames, ifShow, select, subStyleProps } from '../../../util';\nimport { Marker } from '../../marker';\nimport { ifHorizontal } from '../utils';\nvar CLASS_NAMES = classNames({\n markerGroup: 'marker-group',\n marker: 'marker',\n labelGroup: 'label-group',\n label: 'label',\n}, 'handle');\n// todo @xiaoiver, 配置 TEXT_INHERITABLE_PROPS 后文本包围盒依旧不准确\nexport var DEFAULT_HANDLE_CFG = {\n showLabel: true,\n formatter: function (val) { return val.toString(); },\n markerSize: 25,\n markerStroke: '#c5c5c5',\n markerFill: '#fff',\n markerLineWidth: 1,\n labelFontSize: 12,\n labelFill: '#c5c5c5',\n labelText: '',\n orientation: 'vertical',\n spacing: 0,\n};\nvar Handle = /** @class */ (function (_super) {\n __extends(Handle, _super);\n function Handle(options) {\n return _super.call(this, options, DEFAULT_HANDLE_CFG) || this;\n }\n Handle.prototype.render = function (attributes, container) {\n var markerGroup = select(container).maybeAppendByClassName(CLASS_NAMES.markerGroup, 'g');\n this.renderMarker(markerGroup);\n var labelGroup = select(container).maybeAppendByClassName(CLASS_NAMES.labelGroup, 'g');\n this.renderLabel(labelGroup);\n };\n Handle.prototype.renderMarker = function (container) {\n var _this = this;\n var _a = this.attributes, orientation = _a.orientation, _b = _a.markerSymbol, markerSymbol = _b === void 0 ? ifHorizontal(orientation, 'horizontalHandle', 'verticalHandle') : _b;\n ifShow(!!markerSymbol, container, function (group) {\n var handleStyle = subStyleProps(_this.attributes, 'marker');\n var markerStyle = __assign({ symbol: markerSymbol }, handleStyle);\n _this.marker = group\n .maybeAppendByClassName(CLASS_NAMES.marker, function () { return new Marker({ style: markerStyle }); })\n .update(markerStyle);\n });\n };\n Handle.prototype.renderLabel = function (container) {\n var _this = this;\n var _a = this.attributes, showLabel = _a.showLabel, orientation = _a.orientation, _b = _a.spacing, spacing = _b === void 0 ? 0 : _b, formatter = _a.formatter;\n ifShow(showLabel, container, function (group) {\n var _a;\n var _b = subStyleProps(_this.attributes, 'label'), text = _b.text, labelStyle = __rest(_b, [\"text\"]);\n // adjust layout\n var _c = ((_a = group.select(CLASS_NAMES.marker.class)) === null || _a === void 0 ? void 0 : _a.node().getBBox()) || {}, _d = _c.width, width = _d === void 0 ? 0 : _d, _e = _c.height, height = _e === void 0 ? 0 : _e;\n var _f = __read(ifHorizontal(orientation, [0, height + spacing, 'center', 'top'], [width + spacing, 0, 'start', 'middle']), 4), x = _f[0], y = _f[1], textAlign = _f[2], textBaseline = _f[3];\n group\n .maybeAppendByClassName(CLASS_NAMES.label, 'text')\n .styles(__assign(__assign({}, labelStyle), { x: x, y: y, text: formatter(text).toString(), textAlign: textAlign, textBaseline: textBaseline }));\n });\n };\n return Handle;\n}(Component));\nexport { Handle };\n//# sourceMappingURL=handle.js.map","import { classNames, deepAssign, superStyleProps } from '../../util';\nimport { DEFAULT_HANDLE_CFG } from './continuous/handle';\nexport var LEGEND_BASE_DEFAULT_OPTIONS = {\n showTitle: true,\n padding: 0,\n orientation: 'horizontal',\n backgroundFill: 'transparent',\n titleText: '',\n titleSpacing: 4,\n titlePosition: 'top-left',\n titleFill: '#2C3542',\n titleFontWeight: 'bold',\n titleFontFamily: 'sans-serif',\n titleFontSize: 12,\n};\nexport var CATEGORY_DEFAULT_OPTIONS = deepAssign({}, LEGEND_BASE_DEFAULT_OPTIONS, {});\nexport var CONTINUOUS_DEFAULT_OPTIONS = deepAssign({}, LEGEND_BASE_DEFAULT_OPTIONS, superStyleProps(DEFAULT_HANDLE_CFG, 'handle'), {\n color: [\n '#d0e3fa',\n '#acc7f6',\n '#8daaf2',\n '#6d8eea',\n '#4d73cd',\n '#325bb1',\n '#5a3e75',\n '#8c3c79',\n '#e23455',\n '#e7655b',\n ],\n indicatorBackgroundFill: '#262626',\n indicatorLabelFill: 'white',\n indicatorLabelFontSize: 12,\n indicatorVisibility: 'hidden',\n labelAlign: 'value',\n labelDirection: 'positive',\n labelSpacing: 5,\n showHandle: true,\n showIndicator: true,\n showLabel: true,\n slidable: true,\n titleText: '',\n type: 'continuous',\n});\n// 连续图例步长比例\nexport var STEP_RATIO = 0.01;\n// 分类图例name和value宽度比例\nexport var NAME_VALUE_RATIO = 0.5;\nexport var CLASS_NAMES = classNames({\n title: 'title',\n titleGroup: 'title-group',\n items: 'items',\n itemsGroup: 'items-group',\n contentGroup: 'content-group',\n ribbonGroup: 'ribbon-group',\n ribbon: 'ribbon',\n handlesGroup: 'handles-group',\n handle: 'handle',\n startHandle: 'start-handle',\n endHandle: 'end-handle',\n labelGroup: 'label-group',\n label: 'label',\n indicator: 'indicator',\n}, 'legend');\n//# sourceMappingURL=constant.js.map","import { __assign, __extends, __read } from \"tslib\";\nimport { Component } from '../../core';\nimport { BBox, select, splitStyle, subStyleProps } from '../../util';\nimport { getBBox, Title } from '../title';\nimport { CategoryItems } from './category/items';\nimport { CATEGORY_DEFAULT_OPTIONS, CLASS_NAMES } from './constant';\nvar Category = /** @class */ (function (_super) {\n __extends(Category, _super);\n function Category(options) {\n return _super.call(this, options, CATEGORY_DEFAULT_OPTIONS) || this;\n }\n Category.prototype.renderTitle = function (container, width, height) {\n var _a = this.attributes, showTitle = _a.showTitle, titleText = _a.titleText;\n var style = subStyleProps(this.attributes, 'title');\n var _b = __read(splitStyle(style), 2), titleStyle = _b[0], groupStyle = _b[1];\n this.titleGroup = container.maybeAppendByClassName(CLASS_NAMES.titleGroup, 'g').styles(groupStyle);\n var finalTitleStyle = __assign(__assign({ width: width, height: height }, titleStyle), { text: showTitle ? titleText : '' });\n this.title = this.titleGroup\n .maybeAppendByClassName(CLASS_NAMES.title, function () { return new Title({ style: finalTitleStyle }); })\n .update(finalTitleStyle);\n };\n Category.prototype.renderItems = function (container, bbox) {\n var x = bbox.x, y = bbox.y, width = bbox.width, height = bbox.height;\n var style = subStyleProps(this.attributes, 'title', true);\n var _a = __read(splitStyle(style), 2), partialItemStyle = _a[0], groupStyle = _a[1];\n // overwrite width and height to available space\n // overwrite x and y to 0\n var itemStyle = __assign(__assign({}, partialItemStyle), { width: width, height: height, x: 0, y: 0 });\n this.itemsGroup = container\n .maybeAppendByClassName(CLASS_NAMES.itemsGroup, 'g')\n .styles(__assign({ x: x, y: y }, groupStyle));\n var that = this;\n this.itemsGroup\n .selectAll(CLASS_NAMES.items.class)\n .data(['items'])\n .join(function (enter) {\n return enter\n .append(function () { return new CategoryItems({ style: itemStyle }); })\n .attr('className', CLASS_NAMES.items.name)\n .each(function () {\n that.items = select(this);\n });\n }, function (update) { return update.update(itemStyle); }, function (exit) { return exit.remove(); });\n };\n Category.prototype.adjustLayout = function () {\n var showTitle = this.attributes.showTitle;\n if (showTitle) {\n var _a = this.title.node().getAvailableSpace(), x = _a.x, y = _a.y;\n this.itemsGroup.node().setLocalPosition(x, y);\n }\n };\n Object.defineProperty(Category.prototype, \"availableSpace\", {\n get: function () {\n var _a = this.attributes, showTitle = _a.showTitle, width = _a.width, height = _a.height;\n if (!showTitle)\n return new BBox(0, 0, width, height);\n return this.title.node().getAvailableSpace();\n },\n enumerable: false,\n configurable: true\n });\n Category.prototype.getBBox = function () {\n var _a, _b;\n var title = (_a = this.title) === null || _a === void 0 ? void 0 : _a.node();\n var items = (_b = this.items) === null || _b === void 0 ? void 0 : _b.node();\n if (!title || !items)\n return _super.prototype.getBBox.call(this);\n return getBBox(title, items);\n };\n Category.prototype.render = function (attributes, container) {\n var width = attributes.width, height = attributes.height;\n var ctn = select(container);\n this.renderTitle(ctn, width, height);\n this.renderItems(ctn, this.availableSpace);\n this.adjustLayout();\n };\n return Category;\n}(Component));\nexport { Category };\n//# sourceMappingURL=category.js.map","export var DEFAULT_INDICATOR_STYLE_PROPS = {\n backgroundFill: '#262626',\n backgroundLineCap: 'round',\n backgroundLineWidth: 1,\n backgroundStroke: '#333',\n backgroundZIndex: -1,\n formatter: function (val) { return val.toString(); },\n labelFill: '#fff',\n labelFontSize: 12,\n labelTextBaseline: 'middle',\n padding: [2, 4],\n position: 'right',\n radius: 0,\n zIndex: 999,\n};\n//# sourceMappingURL=constant.js.map","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport { ElementEvent } from '@antv/g';\nimport { Component } from '../../core';\nimport { Group } from '../../shapes';\nimport { BBox, classNames, hide, isHorizontal, parseSeriesAttr, renderExtDo, select, show, splitStyle, subStyleProps, } from '../../util';\nimport { DEFAULT_INDICATOR_STYLE_PROPS } from './constant';\nvar CLASS_NAMES = classNames({\n background: 'background',\n labelGroup: 'label-group',\n label: 'label',\n}, 'indicator');\nvar Indicator = /** @class */ (function (_super) {\n __extends(Indicator, _super);\n function Indicator(options) {\n var _this = _super.call(this, options, DEFAULT_INDICATOR_STYLE_PROPS) || this;\n _this.point = [0, 0];\n _this.group = _this.appendChild(new Group({}));\n _this.isMutationObserved = true;\n return _this;\n }\n Indicator.prototype.renderBackground = function () {\n if (!this.label)\n return;\n var _a = this.attributes, position = _a.position, padding = _a.padding;\n var _b = __read(parseSeriesAttr(padding), 4), t = _b[0], r = _b[1], b = _b[2], l = _b[3];\n var _c = this.label.node().getLocalBounds(), min = _c.min, max = _c.max;\n var bbox = new BBox(min[0] - l, min[1] - t, max[0] + r - min[0] + l, max[1] + b - min[1] + t);\n var path = this.getPath(position, bbox);\n var style = subStyleProps(this.attributes, 'background');\n this.background = select(this.group)\n .maybeAppendByClassName(CLASS_NAMES.background, 'path')\n .styles(__assign(__assign({}, style), { path: path }));\n this.group.appendChild(this.label.node());\n };\n Indicator.prototype.renderLabel = function () {\n var _a = this.attributes, formatter = _a.formatter, labelText = _a.labelText;\n var style = subStyleProps(this.attributes, 'label');\n var _b = __read(splitStyle(style), 2), _c = _b[0], groupStyle = _b[1], rawText = _c.text, textStyle = __rest(_c, [\"text\"]);\n this.label = select(this.group).maybeAppendByClassName(CLASS_NAMES.labelGroup, 'g').styles(groupStyle);\n if (!labelText)\n return;\n var text = this.label\n .maybeAppendByClassName(CLASS_NAMES.label, function () { return renderExtDo(formatter(labelText)); })\n .style('text', formatter(labelText).toString());\n text.selectAll('text').styles(textStyle);\n };\n Indicator.prototype.adjustLayout = function () {\n var _a = __read(this.point, 2), dx = _a[0], dy = _a[1];\n this.group.attr('x', -dx).attr('y', -dy);\n };\n Indicator.prototype.getPath = function (position, bbox) {\n var r = this.attributes.radius;\n var x = bbox.x, y = bbox.y, width = bbox.width, height = bbox.height;\n var pathArray = [\n // 0 开始路径\n ['M', x + r, y],\n // 1 上边线\n ['L', x + width - r, y],\n // 2 右上角圆弧\n ['A', r, r, 0, 0, 1, x + width, y + r],\n // 3 右边线\n ['L', x + width, y + height - r],\n // 4 右下角圆弧\n ['A', r, r, 0, 0, 1, x + width - r, y + height],\n // 5 下边线\n ['L', x + r, y + height],\n // 6 左下角圆弧\n ['A', r, r, 0, 0, 1, x, y + height - r],\n // 7 左边线\n ['L', x, y + r],\n // 8 左上角圆弧\n ['A', r, r, 0, 0, 1, x + r, y],\n // 9 关闭路径\n ['Z'],\n ];\n // 将 position 反方向的边线替换为带尖角的边线\n var revertPositionMap = { top: 4, right: 6, bottom: 0, left: 2 };\n var index = revertPositionMap[position];\n var newPath = this.createCorner([pathArray[index].slice(-2), pathArray[index + 1].slice(-2)]);\n // 替换\n pathArray.splice.apply(pathArray, __spreadArray([index + 1, 1], __read(newPath), false));\n pathArray[0][0] = 'M';\n return pathArray;\n };\n Indicator.prototype.createCorner = function (edge, size) {\n if (size === void 0) { size = 10; }\n // intrinsic parameter\n var cornerScale = 0.8;\n var isH = isHorizontal.apply(void 0, __spreadArray([], __read(edge), false));\n var _a = __read(edge, 2), _b = __read(_a[0], 2), x0 = _b[0], y0 = _b[1], _c = __read(_a[1], 2), x1 = _c[0], y1 = _c[1];\n var _d = __read(isH ? [x1 - x0, [x0, x1]] : [y1 - y0, [y0, y1]], 2), len = _d[0], _e = __read(_d[1], 2), b0 = _e[0], b1 = _e[1];\n var hL = len / 2;\n var sign = len / Math.abs(len);\n var cL = size * sign;\n var hCL = cL / 2;\n var cS = ((cL * Math.sqrt(3)) / 2) * cornerScale;\n var _f = __read([b0, b0 + hL - hCL, b0 + hL, b0 + hL + hCL, b1], 5), a0 = _f[0], a1 = _f[1], a2 = _f[2], a3 = _f[3], a4 = _f[4];\n if (isH) {\n this.point = [a2, y0 - cS];\n return [\n ['L', a0, y0],\n ['L', a1, y0],\n ['L', a2, y0 - cS],\n ['L', a3, y0],\n ['L', a4, y0],\n ];\n }\n this.point = [x0 + cS, a2];\n return [\n ['L', x0, a0],\n ['L', x0, a1],\n ['L', x0 + cS, a2],\n ['L', x0, a3],\n ['L', x0, a4],\n ];\n };\n Indicator.prototype.applyVisibility = function () {\n var visibility = this.attributes.visibility;\n if (visibility === 'hidden')\n hide(this);\n else\n show(this);\n };\n Indicator.prototype.bindEvents = function () {\n this.label.on(ElementEvent.BOUNDS_CHANGED, this.renderBackground);\n };\n Indicator.prototype.render = function () {\n this.renderLabel();\n this.renderBackground();\n this.adjustLayout();\n this.applyVisibility();\n };\n return Indicator;\n}(Component));\nexport { Indicator };\n//# sourceMappingURL=indicator.js.map","import { __read } from \"tslib\";\nfunction search(array, value) {\n for (var i = 1; i < array.length; i += 1) {\n var st = array[i - 1];\n var end = array[i];\n if (value >= st && value <= end) {\n return [st, end];\n }\n }\n return [value, value];\n}\nexport function getBlockColor(partition, color, orientation) {\n var colors = Array.from(color);\n var count = partition.length;\n return new Array(count).fill(0).reduce(function (r, v, idx) {\n var c = colors[idx % colors.length];\n return (r += \" \".concat(partition[idx], \":\").concat(c).concat(idx < count - 1 ? \" \".concat(partition[idx + 1], \":\").concat(c) : ''));\n }, \"l(\".concat(orientation === 'horizontal' ? '0' : '270', \")\"));\n}\nexport function getNextTickValue(ticks, value) {\n var _a = __read(search(ticks, value), 2), v1 = _a[0], v2 = _a[1];\n return { tick: value > (v1 + v2) / 2 ? v2 : v1, range: [v1, v2] };\n}\n//# sourceMappingURL=utils.js.map","import { __assign, __extends, __read } from \"tslib\";\nimport { parseColor } from '@antv/g';\nimport { isFunction } from '@antv/util';\nimport { Component } from '../../../core';\nimport { classNames, select, subStyleProps } from '../../../util';\nimport { ifHorizontal } from '../utils';\nimport { getBlockColor } from './utils';\nvar CLASS_NAMES = classNames({\n trackGroup: 'background-group',\n track: 'background',\n selectionGroup: 'ribbon-group',\n selection: 'ribbon',\n clipPath: 'clip-path',\n}, 'ribbon');\nfunction getShape(attr) {\n var orientation = attr.orientation, size = attr.size, length = attr.length;\n return ifHorizontal(orientation, [length, size], [size, length]);\n}\nfunction getTrackPath(attr) {\n var type = attr.type;\n var _a = __read(getShape(attr), 2), cw = _a[0], ch = _a[1];\n if (type === 'size') {\n return [['M', 0, ch], ['L', 0 + cw, 0], ['L', 0 + cw, ch], ['Z']];\n }\n return [['M', 0, ch], ['L', 0, 0], ['L', 0 + cw, 0], ['L', 0 + cw, ch], ['Z']];\n}\nfunction getSelectionPath(attr) {\n return getTrackPath(attr);\n}\nfunction getColor(attr) {\n var orientation = attr.orientation, color = attr.color, block = attr.block, partition = attr.partition;\n var colors;\n if (isFunction(color)) {\n var len = 20;\n colors = new Array(len).fill(0).map(function (_, index, arr) { return color(index / (arr.length - 1)); });\n }\n else\n colors = color;\n var count = colors.length;\n var genericColor = colors.map(function (c) { return parseColor(c).toString(); });\n if (!count)\n return '';\n if (count === 1)\n return genericColor[0];\n if (block)\n return getBlockColor(partition, genericColor, orientation);\n return genericColor.reduce(function (r, c, idx) { return (r += \" \".concat(idx / (count - 1), \":\").concat(c)); }, \"l(\".concat(ifHorizontal(orientation, '0', '270'), \")\"));\n}\nfunction getClipPath(attr) {\n var orientation = attr.orientation, range = attr.range;\n if (!range)\n return [];\n var _a = __read(getShape(attr), 2), width = _a[0], height = _a[1];\n var _b = __read(range, 2), st = _b[0], et = _b[1];\n var x = ifHorizontal(orientation, st * width, 0);\n var y = ifHorizontal(orientation, 0, st * height);\n var w = ifHorizontal(orientation, et * width, width);\n var h = ifHorizontal(orientation, height, et * height);\n return [['M', x, y], ['L', x, h], ['L', w, h], ['L', w, y], ['Z']];\n}\nfunction renderTrack(container, attr) {\n var style = subStyleProps(attr, 'track');\n container.maybeAppendByClassName(CLASS_NAMES.track, 'path').styles(__assign({ path: getTrackPath(attr) }, style));\n}\nfunction renderSelection(container, attr) {\n var style = subStyleProps(attr, 'selection');\n var fill = getColor(attr);\n var ribbon = container\n .maybeAppendByClassName(CLASS_NAMES.selection, 'path')\n .styles(__assign({ path: getSelectionPath(attr), fill: fill }, style));\n var clipPath = ribbon\n .maybeAppendByClassName(CLASS_NAMES.clipPath, 'path')\n .styles({ path: getClipPath(attr) })\n .node();\n ribbon.style('clip-path', clipPath);\n}\nvar Ribbon = /** @class */ (function (_super) {\n __extends(Ribbon, _super);\n function Ribbon(options) {\n return _super.call(this, options, {\n type: 'color',\n orientation: 'horizontal',\n size: 30,\n range: [0, 1],\n length: 200,\n block: false,\n partition: [],\n color: ['#fff', '#000'],\n trackFill: '#e5e5e5',\n }) || this;\n }\n Ribbon.prototype.render = function (attribute, container) {\n var trackGroup = select(container).maybeAppendByClassName(CLASS_NAMES.trackGroup, 'g');\n renderTrack(trackGroup, attribute);\n /**\n * - ribbon group\n * |- ribbon\n * - clip path\n */\n var ribbonGroup = select(container).maybeAppendByClassName(CLASS_NAMES.selectionGroup, 'g');\n renderSelection(ribbonGroup, attribute);\n };\n return Ribbon;\n}(Component));\nexport { Ribbon };\n//# sourceMappingURL=ribbon.js.map","import { __assign, __extends, __read, __spreadArray } from \"tslib\";\nimport { CustomEvent } from '@antv/g';\nimport { Linear } from '@antv/scale';\nimport { clamp, isUndefined } from '@antv/util';\nimport { Component } from '../../core';\nimport { BBox, deepAssign, getEventPos, hide, ifShow, select, show, subStyleProps, superStyleProps, toPrecision, } from '../../util';\nimport { Axis } from '../axis';\nimport { CLASS_NAMES as AXIS_CLASS_NAMES } from '../axis/constant';\nimport { Indicator } from '../indicator';\nimport { Handle as SliderHandle } from '../slider/handle';\nimport { Title } from '../title';\nimport { CLASS_NAMES, CONTINUOUS_DEFAULT_OPTIONS, STEP_RATIO } from './constant';\nimport { Handle } from './continuous/handle';\nimport { Ribbon } from './continuous/ribbon';\nimport { getNextTickValue } from './continuous/utils';\nimport { getSafetySelections, getStepValueByValue, ifHorizontal } from './utils';\nfunction getMinMax(data) {\n return {\n min: Math.min.apply(Math, __spreadArray([], __read(data.map(function (d) { return d.value; })), false)),\n max: Math.max.apply(Math, __spreadArray([], __read(data.map(function (d) { return d.value; })), false)),\n };\n}\nvar Continuous = /** @class */ (function (_super) {\n __extends(Continuous, _super);\n function Continuous(options) {\n var _this = _super.call(this, options, CONTINUOUS_DEFAULT_OPTIONS) || this;\n _this.eventToOffsetScale = new Linear({});\n _this.innerRibbonScale = new Linear({});\n _this.cacheLabelBBox = null;\n _this.cacheHandleBBox = null;\n _this.onHovering = function (e) {\n var _a = _this.attributes, data = _a.data, block = _a.block;\n e.stopPropagation();\n var value = _this.getValueByCanvasPoint(e);\n if (block) {\n var range = getNextTickValue(data.map(function (_a) {\n var value = _a.value;\n return value;\n }), value).range;\n _this.showIndicator((range[0] + range[1]) / 2, \"\".concat(range[0], \"-\").concat(range[1]));\n _this.dispatchIndicated(value, range);\n }\n else {\n var safetyValue = _this.getTickValue(value);\n _this.showIndicator(safetyValue);\n _this.dispatchIndicated(safetyValue);\n }\n };\n _this.onDragStart = function (target) { return function (e) {\n e.stopPropagation();\n // 关闭滑动\n if (!_this.attributes.slidable)\n return;\n _this.target = target;\n _this.prevValue = _this.getTickValue(_this.getValueByCanvasPoint(e));\n document.addEventListener('mousemove', _this.onDragging);\n document.addEventListener('touchmove', _this.onDragging);\n document.addEventListener('mouseleave', _this.onDragEnd);\n document.addEventListener('mouseup', _this.onDragEnd);\n document.addEventListener('mouseup', _this.onDragEnd);\n document.addEventListener('touchend', _this.onDragEnd);\n }; };\n _this.onDragging = function (e) {\n var target = _this.target;\n _this.updateMouse();\n var _a = __read(_this.selection, 2), start = _a[0], end = _a[1];\n var currValue = _this.getTickValue(_this.getValueByCanvasPoint(e));\n var diffValue = currValue - _this.prevValue;\n if (target === 'start')\n start !== currValue && _this.updateSelection(currValue, end);\n else if (target === 'end')\n end !== currValue && _this.updateSelection(start, currValue);\n else if (target === 'ribbon' && diffValue !== 0) {\n _this.prevValue = currValue;\n _this.updateSelection(diffValue, diffValue, true);\n }\n };\n _this.onDragEnd = function () {\n _this.style.cursor = 'pointer';\n document.removeEventListener('mousemove', _this.onDragging);\n document.removeEventListener('touchmove', _this.onDragging);\n document.removeEventListener('mouseup', _this.onDragEnd);\n document.removeEventListener('touchend', _this.onDragEnd);\n };\n return _this;\n }\n Object.defineProperty(Continuous.prototype, \"handleOffsetRatio\", {\n get: function () {\n return this.ifHorizontal(0.5, 0.5);\n },\n enumerable: false,\n configurable: true\n });\n Continuous.prototype.getBBox = function () {\n var _a = this.attributes, width = _a.width, height = _a.height;\n return new BBox(0, 0, width, height);\n };\n Continuous.prototype.render = function (attributes, container) {\n var _this = this;\n // 渲染顺序\n // 1. 绘制 title, 获得可用空间\n // 2. 绘制 label, handle\n // 3. 基于可用空间、label高度、handle 宽高,计算 ribbon 宽高\n // 4. 绘制 ribbon\n // 5. 调整 label、handle 位置\n var showLabel = attributes.showLabel;\n /** title */\n this.renderTitle(select(container));\n var _a = this.availableSpace, x = _a.x, y = _a.y;\n /** label */\n /** content */\n var contentGroup = select(container).maybeAppendByClassName(CLASS_NAMES.contentGroup, 'g').styles({ x: x, y: y });\n var labelGroup = contentGroup.maybeAppendByClassName(CLASS_NAMES.labelGroup, 'g').styles({ zIndex: 1 });\n ifShow(!!showLabel, labelGroup, function (group) {\n _this.renderLabel(group);\n });\n var ribbonGroup = contentGroup.maybeAppendByClassName(CLASS_NAMES.ribbonGroup, 'g').styles({ zIndex: 0 });\n /** handle */\n this.handlesGroup = contentGroup.maybeAppendByClassName(CLASS_NAMES.handlesGroup, 'g').styles({ zIndex: 2 });\n this.renderHandles();\n /** ribbon */\n this.renderRibbon(ribbonGroup);\n this.renderIndicator(contentGroup);\n /** adjust */\n this.adjustLabel();\n this.adjustHandles();\n // this.adjustTitle();\n };\n Object.defineProperty(Continuous.prototype, \"range\", {\n get: function () {\n var _a = this.attributes, data = _a.data, domain = _a.domain;\n return domain ? { min: domain[0], max: domain[1] } : getMinMax(data);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Continuous.prototype, \"ribbonScale\", {\n get: function () {\n var _a = this.range, min = _a.min, max = _a.max;\n this.innerRibbonScale.update({\n domain: [min, max],\n range: [0, 1],\n });\n return this.innerRibbonScale;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Continuous.prototype, \"ribbonRange\", {\n get: function () {\n var _a = __read(this.selection, 2), min = _a[0], max = _a[1];\n var scale = this.ribbonScale;\n return [scale.map(min), scale.map(max)];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Continuous.prototype, \"selection\", {\n get: function () {\n var _a = this.range, min = _a.min, max = _a.max;\n var _b = this.attributes.defaultValue, _c = _b === void 0 ? [min, max] : _b, _d = __read(_c, 2), start = _d[0], end = _d[1];\n return [start, end];\n },\n enumerable: false,\n configurable: true\n });\n Continuous.prototype.ifHorizontal = function (a, b) {\n return ifHorizontal(this.attributes.orientation, typeof a === 'function' ? a() : a, typeof b === 'function' ? b() : b);\n };\n Continuous.prototype.renderTitle = function (container) {\n var _a = this.attributes, showTitle = _a.showTitle, titleText = _a.titleText, width = _a.width, height = _a.height;\n var style = subStyleProps(this.attributes, 'title');\n var finalTitleStyle = __assign(__assign({}, style), { width: width, height: height, text: titleText });\n var that = this;\n container\n .selectAll(CLASS_NAMES.title.class)\n .data(showTitle ? [titleText] : [])\n .join(function (enter) {\n return enter\n .append(function () { return new Title({ style: finalTitleStyle }); })\n .attr('className', CLASS_NAMES.title.name)\n .each(function () {\n that.title = this;\n });\n }, function (update) { return update.update(finalTitleStyle); }, function (exit) {\n return exit\n .each(function () {\n that.title = undefined;\n })\n .remove();\n });\n };\n Object.defineProperty(Continuous.prototype, \"availableSpace\", {\n get: function () {\n if (this.title)\n return this.title.getAvailableSpace();\n var _a = this.attributes, width = _a.width, height = _a.height;\n return new BBox(0, 0, width, height);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Continuous.prototype, \"labelFixedSpacing\", {\n get: function () {\n var showTick = this.attributes.showTick;\n return showTick ? 5 : 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Continuous.prototype, \"labelPosition\", {\n get: function () {\n var _a = this.attributes, orientation = _a.orientation, labelDirection = _a.labelDirection;\n var positions = {\n vertical: { positive: 'right', negative: 'left' },\n horizontal: { positive: 'bottom', negative: 'top' },\n };\n return positions[orientation][labelDirection];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Continuous.prototype, \"labelBBox\", {\n get: function () {\n var _a;\n var showLabel = this.attributes.showLabel;\n if (!showLabel)\n return new BBox(0, 0, 0, 0);\n if (this.cacheLabelBBox)\n return this.cacheLabelBBox;\n var _b = ((_a = this.label.querySelector(AXIS_CLASS_NAMES.labelGroup.class)) === null || _a === void 0 ? void 0 : _a.children.slice(-1)[0]).getBBox(), width = _b.width, height = _b.height;\n this.cacheLabelBBox = new BBox(0, 0, width, height);\n return this.cacheLabelBBox;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Continuous.prototype, \"labelShape\", {\n get: function () {\n var _a = this.attributes, showLabel = _a.showLabel, _b = _a.labelSpacing, labelSpacing = _b === void 0 ? 0 : _b;\n if (!showLabel)\n return { width: 0, height: 0, size: 0, length: 0 };\n var _c = this.labelBBox, width = _c.width, height = _c.height;\n var size = this.ifHorizontal(height, width) + labelSpacing + this.labelFixedSpacing;\n var length = this.ifHorizontal(width, height);\n return { width: width, height: height, size: size, length: length };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Continuous.prototype, \"ribbonBBox\", {\n get: function () {\n var _a = this.attributes, showHandle = _a.showHandle, userDefinedRibbonSize = _a.ribbonSize;\n var _b = this.availableSpace, availableWidth = _b.width, availableHeight = _b.height;\n var _c = this.labelShape, labelSize = _c.size, labelLength = _c.length;\n var _d = __read(this.ifHorizontal([availableHeight, availableWidth], [availableWidth, availableHeight]), 2), availableSize = _d[0], availableLength = _d[1];\n var _e = showHandle ? this.handleShape : { size: 0, length: 0 }, handleSize = _e.size, handleLength = _e.length;\n var handleRatio = this.handleOffsetRatio;\n var ribbonSize = 0;\n var labelPosition = this.labelPosition;\n if (userDefinedRibbonSize) {\n ribbonSize = userDefinedRibbonSize;\n }\n else if (['bottom', 'right'].includes(labelPosition)) {\n ribbonSize = Math.min(availableSize - labelSize, (availableSize - handleSize) / handleRatio);\n }\n else if (availableSize * (1 - handleRatio) > handleSize) {\n ribbonSize = Math.max(availableSize - labelSize, 0);\n }\n else\n ribbonSize = Math.max((availableSize - labelSize - handleSize) / handleRatio, 0);\n var edgeLength = Math.max(handleLength, labelLength);\n var ribbonLength = availableLength - edgeLength;\n var _f = __read(this.ifHorizontal([ribbonLength, ribbonSize], [ribbonSize, ribbonLength]), 2), width = _f[0], height = _f[1];\n // 需要考虑 handle 的占用空间\n // todo 为了防止因为 handle 文本变化导致的 ribbon 位置变化,handle size 取最大值\n var finalLabelOccupy = ['top', 'left'].includes(labelPosition) ? labelSize : 0;\n var _g = __read(this.ifHorizontal([edgeLength / 2, finalLabelOccupy], [finalLabelOccupy, edgeLength / 2]), 2), x = _g[0], y = _g[1];\n return new BBox(x, y, width, height);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Continuous.prototype, \"ribbonShape\", {\n get: function () {\n var _a = this.ribbonBBox, width = _a.width, height = _a.height;\n return this.ifHorizontal({ size: height, length: width }, { size: width, length: height });\n },\n enumerable: false,\n configurable: true\n });\n Continuous.prototype.renderRibbon = function (container) {\n var _a = this.attributes, data = _a.data, type = _a.type, orientation = _a.orientation, color = _a.color, block = _a.block;\n var ribbonStyle = subStyleProps(this.attributes, 'ribbon');\n var _b = this.range, min = _b.min, max = _b.max;\n var _c = this.ribbonBBox, x = _c.x, y = _c.y;\n var _d = this.ribbonShape, length = _d.length, size = _d.size;\n var style = deepAssign({\n x: x,\n y: y,\n length: length,\n size: size,\n type: type,\n orientation: orientation,\n color: color,\n block: block,\n partition: data.map(function (d) { return (d.value - min) / (max - min); }),\n range: this.ribbonRange,\n }, ribbonStyle);\n this.ribbon = container.maybeAppendByClassName(CLASS_NAMES.ribbon, function () { return new Ribbon({ style: style }); }).update(style);\n };\n Continuous.prototype.getHandleClassName = function (type) {\n // @ts-ignore\n return \"\".concat(CLASS_NAMES.prefix(\"\".concat(type, \"-handle\")));\n };\n Continuous.prototype.renderHandles = function () {\n var _a = this.attributes, showHandle = _a.showHandle, orientation = _a.orientation;\n var handleStyle = subStyleProps(this.attributes, 'handle');\n var _b = __read(this.selection, 2), min = _b[0], max = _b[1];\n var style = __assign(__assign({}, handleStyle), { orientation: orientation });\n var _c = handleStyle.shape, shape = _c === void 0 ? 'slider' : _c;\n var HandleCtor = shape === 'basic' ? Handle : SliderHandle;\n var that = this;\n this.handlesGroup\n .selectAll(CLASS_NAMES.handle.class)\n .data(showHandle\n ? [\n { value: min, type: 'start' },\n { value: max, type: 'end' },\n ]\n : [], function (d) { return d.type; })\n .join(function (enter) {\n return enter\n .append(function () { return new HandleCtor({ style: style }); })\n .attr('className', function (_a) {\n var type = _a.type;\n return \"\".concat(CLASS_NAMES.handle, \" \").concat(that.getHandleClassName(type));\n })\n .each(function (_a) {\n var type = _a.type, labelText = _a.value;\n this.update({ labelText: labelText });\n var name = \"\".concat(type, \"Handle\");\n that[name] = this;\n this.addEventListener('pointerdown', that.onDragStart(type));\n });\n }, function (update) {\n return update.update(style).each(function (_a) {\n var labelText = _a.value;\n this.update({ labelText: labelText });\n });\n }, function (exit) {\n return exit\n .each(function (_a) {\n var type = _a.type;\n var name = \"\".concat(type, \"Handle\");\n that[name] = undefined;\n })\n .remove();\n });\n };\n Continuous.prototype.adjustHandles = function () {\n var _a = __read(this.selection, 2), min = _a[0], max = _a[1];\n this.setHandlePosition('start', min);\n this.setHandlePosition('end', max);\n };\n Continuous.prototype.adjustTitle = function () {\n var _a = this.attributes, titlePosition = _a.titlePosition, orientation = _a.orientation;\n var _b = __read(this.getElementsByClassName(CLASS_NAMES.title.name), 1), title = _b[0];\n var handle = this.handlesGroup.select(\".\".concat(this.getHandleClassName('start'))).node();\n if (!title || !handle)\n return;\n if (titlePosition !== 'top-left' || orientation !== 'horizontal')\n return;\n var _c = __read(handle.getLocalBounds().min, 1), handleX = _c[0];\n var _d = __read(title.getLocalBounds().min, 1), titleX = _d[0];\n var diffX = handleX - titleX;\n title.style.x = +(this.style.x || 0) + diffX;\n };\n Object.defineProperty(Continuous.prototype, \"handleBBox\", {\n get: function () {\n if (this.cacheHandleBBox)\n return this.cacheHandleBBox;\n if (!this.attributes.showHandle)\n return new BBox(0, 0, 0, 0);\n var _a = this.startHandle.getBBox(), startHandleWidth = _a.width, startHandleHeight = _a.height;\n var _b = this.endHandle.getBBox(), endHandleWidth = _b.width, endHandleHeight = _b.height;\n var _c = __read([Math.max(startHandleWidth, endHandleWidth), Math.max(startHandleHeight, endHandleHeight)], 2), width = _c[0], height = _c[1];\n this.cacheHandleBBox = new BBox(0, 0, width, height);\n return this.cacheHandleBBox;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Continuous.prototype, \"handleShape\", {\n /**\n * 因为 handle label 的宽高是动态的,所以 handle bbox 是第一次渲染时的 bbox\n */\n get: function () {\n var _a = this.handleBBox, width = _a.width, height = _a.height;\n var _b = __read(this.ifHorizontal([height, width], [width, height]), 2), size = _b[0], length = _b[1];\n return { width: width, height: height, size: size, length: length };\n },\n enumerable: false,\n configurable: true\n });\n Continuous.prototype.setHandlePosition = function (type, value) {\n var handleFormatter = this.attributes.handleFormatter;\n var _a = this.ribbonBBox, ribbonX = _a.x, ribbonY = _a.y;\n var ribbonSize = this.ribbonShape.size;\n var offset = this.getOffset(value);\n var _b = __read(this.ifHorizontal([ribbonX + offset, ribbonY + ribbonSize * this.handleOffsetRatio], [ribbonX + ribbonSize * this.handleOffsetRatio, ribbonY + offset]), 2), x = _b[0], y = _b[1];\n var handle = this.handlesGroup.select(\".\".concat(this.getHandleClassName(type))).node();\n handle === null || handle === void 0 ? void 0 : handle.update({ x: x, y: y, formatter: handleFormatter });\n };\n Continuous.prototype.renderIndicator = function (container) {\n var style = subStyleProps(this.attributes, 'indicator');\n this.indicator = container.maybeAppendByClassName(CLASS_NAMES.indicator, function () { return new Indicator({}); }).update(style);\n // this.hideIndicator();\n };\n Object.defineProperty(Continuous.prototype, \"labelData\", {\n get: function () {\n var _this = this;\n var data = this.attributes.data;\n return data.reduce(function (acc, curr, index, arr) {\n var _a, _b;\n var id = (_a = curr === null || curr === void 0 ? void 0 : curr.id) !== null && _a !== void 0 ? _a : index.toString();\n acc.push(__assign(__assign({}, curr), { id: id, index: index, type: 'value', label: (_b = curr === null || curr === void 0 ? void 0 : curr.label) !== null && _b !== void 0 ? _b : curr.value.toString(), value: _this.ribbonScale.map(curr.value) }));\n if (index < arr.length - 1) {\n var next = arr[index + 1];\n var _c = __read([curr.value, next.value], 2), cr = _c[0], nx = _c[1];\n var midVal = (cr + nx) / 2;\n acc.push(__assign(__assign({}, curr), { id: id, index: index, type: 'range', range: [cr, nx], label: [cr, nx].join('~'), value: _this.ribbonScale.map(midVal) }));\n }\n return acc;\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Continuous.prototype, \"labelStyle\", {\n get: function () {\n var _a = __read(['center', 'middle'], 2), labelTextAlign = _a[0], labelTextBaseline = _a[1];\n var labelPosition = this.labelPosition;\n if (labelPosition === 'top')\n labelTextBaseline = 'bottom';\n else if (labelPosition === 'bottom')\n labelTextBaseline = 'top';\n else if (labelPosition === 'left')\n labelTextAlign = 'end';\n else if (labelPosition === 'right')\n labelTextAlign = 'start';\n return {\n labelTextAlign: labelTextAlign,\n labelTextBaseline: labelTextBaseline,\n };\n },\n enumerable: false,\n configurable: true\n });\n Continuous.prototype.renderLabel = function (container) {\n var _a = this.attributes, _b = _a.showTick, showTick = _b === void 0 ? false : _b, labelFilter = _a.labelFilter, labelFormatter = _a.labelFormatter;\n var tickStyle = subStyleProps(this.attributes, 'tick');\n var labelStyle = subStyleProps(this.attributes, 'label');\n var align = labelStyle.align;\n var style = deepAssign(__assign({ showLine: false, showGrid: false, showTick: showTick, type: 'linear', startPos: [0, 0], endPos: [0, 0], tickDirection: 'negative', labelTransform: 'rotate(0)' }, this.labelStyle), superStyleProps(tickStyle, 'tick'), superStyleProps(labelStyle, 'label'), { data: this.labelData });\n var functionStyle = {\n tickFilter: function (datum, index, data) {\n if ((datum === null || datum === void 0 ? void 0 : datum.type) !== 'value')\n return false;\n if (labelFilter)\n return labelFilter(datum, datum.index, data.filter(function (d) { return d.type !== 'value'; }));\n return true;\n },\n labelFilter: function (datum, index, data) {\n if ((datum === null || datum === void 0 ? void 0 : datum.type) !== align)\n return false;\n if (labelFilter)\n return labelFilter(datum, datum.index, data.filter(function (d) { return d.type === align; }));\n return true;\n },\n labelFormatter: labelFormatter,\n };\n var finalLabelStyle = __assign(__assign(__assign({}, style), functionStyle), { labelOverlap: [{ type: 'hide' }] });\n this.label = container.maybeAppendByClassName(CLASS_NAMES.label, function () { return new Axis({ style: finalLabelStyle }); }).node();\n this.label.update(finalLabelStyle, false);\n };\n Object.defineProperty(Continuous.prototype, \"labelAxisStyle\", {\n get: function () {\n // @ts-ignore\n var _a = this.attributes, showTick = _a.showTick, labelDirection = _a.labelDirection, labelSpacing = _a.labelSpacing, definedTickLength = _a.tickLength;\n var ribbonSize = this.ribbonShape.size;\n var labelPosition = this.labelPosition;\n var labelFixedSpacing = this.labelFixedSpacing;\n var _b = __read([0, 0, 0], 3), offset = _b[0], spacing = _b[1], tickLength = _b[2];\n var internalVal = definedTickLength !== null && definedTickLength !== void 0 ? definedTickLength : ribbonSize;\n if (showTick) {\n tickLength = internalVal;\n spacing = labelFixedSpacing;\n if (labelDirection === 'positive') {\n if (labelPosition === 'right') {\n offset = internalVal;\n tickLength = internalVal;\n }\n else if (labelPosition === 'bottom')\n offset = tickLength;\n }\n else if (labelDirection === 'negative') {\n if (labelPosition === 'top')\n offset = ribbonSize;\n else if (labelPosition === 'left')\n offset = ribbonSize;\n }\n }\n else if (labelDirection === 'positive') {\n if (labelPosition === 'right')\n spacing = internalVal;\n else if (labelPosition === 'bottom') {\n offset = ribbonSize + labelFixedSpacing;\n spacing = labelSpacing;\n }\n }\n else if (labelDirection === 'negative') {\n if (labelPosition === 'left')\n spacing = labelSpacing;\n else if (labelPosition === 'top')\n spacing = labelSpacing;\n }\n return { offset: offset, spacing: labelSpacing, tickLength: tickLength };\n },\n enumerable: false,\n configurable: true\n });\n Continuous.prototype.adjustLabel = function () {\n var showLabel = this.attributes.showLabel;\n if (!showLabel)\n return;\n var _a = this.ribbonBBox, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var _b = this.labelAxisStyle, axisOffset = _b.offset, axisSpacing = _b.spacing, axisTickLength = _b.tickLength;\n var _c = __read(this.ifHorizontal([\n [x, y + axisOffset],\n [x + width, y + axisOffset],\n ], [\n [x + axisOffset, y + height],\n [x + axisOffset, y],\n ]), 2), startPos = _c[0], endPos = _c[1];\n this.label.update({\n startPos: startPos,\n endPos: endPos,\n tickLength: axisTickLength,\n labelSpacing: axisSpacing,\n }, false);\n };\n Continuous.prototype.bindEvents = function () {\n this.style.cursor = 'pointer';\n // 绑定 drag 开始事件\n this.ribbon.on('pointerdown', this.onDragStart('ribbon'));\n this.ribbon.on('pointermove', this.onHovering);\n this.addEventListener('pointerout', this.hideIndicator);\n };\n Continuous.prototype.showIndicator = function (value, text) {\n if (text === void 0) { text = \"\".concat(value); }\n var showIndicator = this.attributes.showIndicator;\n if (!showIndicator || typeof value !== 'number') {\n this.hideIndicator();\n return;\n }\n var _a = this.range, min = _a.min, max = _a.max;\n var _b = this.ribbonBBox, x = _b.x, y = _b.y;\n var safeValue = clamp(value, min, max);\n var offset = this.getOffset(safeValue);\n var pos = this.ifHorizontal([offset + x, y], [x, offset + y]);\n this.indicator.update({\n x: pos[0],\n y: pos[1],\n position: this.ifHorizontal('top', 'left'),\n labelText: text,\n });\n show(this.indicator.node());\n };\n Continuous.prototype.hideIndicator = function () {\n hide(this.indicator.node());\n };\n Continuous.prototype.updateMouse = function () {\n if (this.attributes.slidable)\n this.style.cursor = 'grabbing';\n };\n Continuous.prototype.setSelection = function (start, end) {\n this.updateSelection(start, end);\n };\n Continuous.prototype.updateSelection = function (stVal, endVal, isOffset) {\n var _a;\n if (isOffset === void 0) { isOffset = false; }\n var _b = __read(this.selection, 2), currSt = _b[0], currEnd = _b[1];\n var _c = __read([stVal, endVal], 2), start = _c[0], end = _c[1];\n if (isOffset) {\n // 获取当前值\n start += currSt;\n end += currEnd;\n }\n // 值校验\n var _d = this.range, min = _d.min, max = _d.max;\n _a = __read(getSafetySelections([min, max], [start, end], this.selection), 2), start = _a[0], end = _a[1];\n this.update({ defaultValue: [start, end] });\n this.dispatchSelection();\n };\n Object.defineProperty(Continuous.prototype, \"step\", {\n get: function () {\n var _a = this.attributes.step, step = _a === void 0 ? 1 : _a;\n var _b = this.range, min = _b.min, max = _b.max;\n if (isUndefined(step))\n return toPrecision((max - min) * STEP_RATIO, 0);\n return step;\n },\n enumerable: false,\n configurable: true\n });\n Continuous.prototype.getTickValue = function (value) {\n var _a = this.attributes, data = _a.data, block = _a.block;\n var min = this.range.min;\n if (block)\n return getNextTickValue(data.map(function (_a) {\n var value = _a.value;\n return value;\n }), value).tick;\n return getStepValueByValue(value, this.step, min);\n };\n /**\n * 事件触发的位置对应的value值\n * @param limit {boolean} 我也忘了要干啥了\n */\n Continuous.prototype.getValueByCanvasPoint = function (e, limit) {\n if (limit === void 0) { limit = false; }\n var _a = this.range, min = _a.min, max = _a.max;\n var _b = __read(this.ribbon.node().getPosition(), 2), x = _b[0], y = _b[1];\n var startPos = this.ifHorizontal(x, y);\n var currValue = this.ifHorizontal.apply(this, __spreadArray([], __read(getEventPos(e)), false));\n var offset = currValue - startPos;\n var value = clamp(this.getOffset(offset, true), min, max);\n return value;\n };\n /** reverse: 屏幕偏移量 -> 值 */\n Continuous.prototype.getOffset = function (value, reverse) {\n if (reverse === void 0) { reverse = false; }\n var _a = this.range, min = _a.min, max = _a.max;\n var ribbonLen = this.ribbonShape.length;\n var scale = this.eventToOffsetScale;\n scale.update({ domain: [min, max], range: [0, ribbonLen] });\n if (reverse)\n return scale.invert(value);\n return scale.map(value);\n };\n Continuous.prototype.dispatchSelection = function () {\n var evt = new CustomEvent('valuechange', {\n detail: {\n value: this.selection,\n },\n });\n this.dispatchEvent(evt);\n };\n Continuous.prototype.dispatchIndicated = function (value, range) {\n var evt = new CustomEvent('indicate', {\n detail: { value: value, range: range },\n });\n this.dispatchEvent(evt);\n };\n return Continuous;\n}(Component));\nexport { Continuous };\n//# sourceMappingURL=continuous.js.map","import { __assign } from \"tslib\";\nexport function getClassNames(prefixCls) {\n if (prefixCls === void 0) { prefixCls = ''; }\n return {\n CONTAINER: \"\".concat(prefixCls, \"tooltip\"),\n TITLE: \"\".concat(prefixCls, \"tooltip-title\"),\n LIST: \"\".concat(prefixCls, \"tooltip-list\"),\n LIST_ITEM: \"\".concat(prefixCls, \"tooltip-list-item\"),\n NAME: \"\".concat(prefixCls, \"tooltip-list-item-name\"),\n MARKER: \"\".concat(prefixCls, \"tooltip-list-item-marker\"),\n NAME_LABEL: \"\".concat(prefixCls, \"tooltip-list-item-name-label\"),\n VALUE: \"\".concat(prefixCls, \"tooltip-list-item-value\"),\n CROSSHAIR_X: \"\".concat(prefixCls, \"tooltip-crosshair-x\"),\n CROSSHAIR_Y: \"\".concat(prefixCls, \"tooltip-crosshair-y\"),\n };\n}\nvar TEXT_OVERFLOW_STYLE = {\n overflow: 'hidden',\n 'white-space': 'nowrap',\n 'text-overflow': 'ellipsis',\n};\nexport function getDefaultTooltipStyle(prefixCls) {\n var _a;\n if (prefixCls === void 0) { prefixCls = ''; }\n var CLASS_NAME = getClassNames(prefixCls);\n return _a = {},\n _a[\".\".concat(CLASS_NAME.CONTAINER)] = {\n position: 'absolute',\n visibility: 'visible',\n // 'white-space': 'nowrap',\n 'z-index': 8,\n transition: 'visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1), ' +\n 'left 0.4s cubic-bezier(0.23, 1, 0.32, 1), ' +\n 'top 0.4s cubic-bezier(0.23, 1, 0.32, 1)',\n 'background-color': 'rgba(255, 255, 255, 0.96)',\n 'box-shadow': '0 6px 12px 0 rgba(0, 0, 0, 0.12)',\n 'border-radius': '4px',\n color: 'rgba(0, 0, 0, 0.65)',\n 'font-size': '12px',\n // 'font-family': ,\n 'line-height': '20px',\n padding: '12px',\n 'min-width': '120px',\n 'max-width': '360px',\n 'font-family': 'Roboto-Regular',\n },\n _a[\".\".concat(CLASS_NAME.TITLE)] = {\n color: 'rgba(0, 0, 0, 0.45)',\n },\n _a[\".\".concat(CLASS_NAME.LIST)] = {\n margin: '0px',\n 'list-style-type': 'none',\n padding: '0px',\n },\n _a[\".\".concat(CLASS_NAME.LIST_ITEM)] = {\n 'list-style-type': 'none',\n display: 'flex',\n 'line-height': '2em',\n 'align-items': 'center',\n 'justify-content': 'space-between',\n 'white-space': 'nowrap',\n },\n _a[\".\".concat(CLASS_NAME.MARKER)] = {\n width: '8px',\n height: '8px',\n 'border-radius': '50%',\n display: 'inline-block',\n 'margin-right': '4px',\n },\n _a[\".\".concat(CLASS_NAME.NAME)] = {\n display: 'flex',\n 'align-items': 'center',\n 'max-width': '216px',\n },\n _a[\".\".concat(CLASS_NAME.NAME_LABEL)] = __assign({ flex: 1 }, TEXT_OVERFLOW_STYLE),\n _a[\".\".concat(CLASS_NAME.VALUE)] = __assign({ display: 'inline-block', float: 'right', flex: 1, 'text-align': 'right', 'min-width': '28px', 'margin-left': '30px', color: 'rgba(0, 0, 0, 0.85)' }, TEXT_OVERFLOW_STYLE),\n _a[\".\".concat(CLASS_NAME.CROSSHAIR_X)] = {\n position: 'absolute',\n width: '1px',\n 'background-color': 'rgba(0, 0, 0, 0.25)',\n },\n _a[\".\".concat(CLASS_NAME.CROSSHAIR_Y)] = {\n position: 'absolute',\n height: '1px',\n 'background-color': 'rgba(0, 0, 0, 0.25)',\n },\n _a;\n}\n//# sourceMappingURL=constant.js.map","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport { substitute, createDOM } from '@antv/util';\nimport { Component } from '../../core';\nimport { BBox, applyStyleSheet } from '../../util';\nimport { getClassNames, getDefaultTooltipStyle } from './constant';\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n function Tooltip(options) {\n var _this = this;\n var _a, _b;\n var prefixCls = (_b = (_a = options.style) === null || _a === void 0 ? void 0 : _a.template) === null || _b === void 0 ? void 0 : _b.prefixCls;\n var CLASS_NAME = getClassNames(prefixCls);\n _this = _super.call(this, options, {\n data: [],\n x: 0,\n y: 0,\n visibility: 'visible',\n title: '',\n position: 'bottom-right',\n offset: [5, 5],\n enterable: false,\n container: {\n x: 0,\n y: 0,\n },\n bounding: null,\n template: {\n prefixCls: '',\n container: \"
\"),\n title: \"
\"),\n item: \"
  • \\n \\n \\n {name}\\n \\n {value}\\n
  • \"),\n },\n style: getDefaultTooltipStyle(prefixCls),\n }) || this;\n _this.timestamp = -1;\n _this.prevCustomContentKey = _this.attributes.contentKey;\n _this.initShape();\n _this.render(_this.attributes, _this);\n return _this;\n }\n Object.defineProperty(Tooltip.prototype, \"HTMLTooltipElement\", {\n get: function () {\n return this.element;\n },\n enumerable: false,\n configurable: true\n });\n Tooltip.prototype.getContainer = function () {\n return this.element;\n };\n Object.defineProperty(Tooltip.prototype, \"elementSize\", {\n get: function () {\n var width = this.element.offsetWidth;\n var height = this.element.offsetHeight;\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Tooltip.prototype, \"HTMLTooltipItemsElements\", {\n get: function () {\n var _a = this.attributes, data = _a.data, template = _a.template;\n return data.map(function (_a, idx) {\n var _b = _a.name, name = _b === void 0 ? '' : _b, _c = _a.color, color = _c === void 0 ? 'black' : _c, index = _a.index, rest = __rest(_a, [\"name\", \"color\", \"index\"]);\n var datum = __assign({ name: name, color: color, index: index !== null && index !== void 0 ? index : idx }, rest);\n return createDOM(substitute(template.item, datum));\n });\n },\n enumerable: false,\n configurable: true\n });\n Tooltip.prototype.render = function (attributes, container) {\n this.renderHTMLTooltipElement();\n this.updatePosition();\n };\n Tooltip.prototype.destroy = function () {\n var _a;\n (_a = this.element) === null || _a === void 0 ? void 0 : _a.remove();\n _super.prototype.destroy.call(this);\n };\n /**\n * 如果设置了坐标值,显示过程中会立即更新位置并关闭过渡动画\n */\n Tooltip.prototype.show = function (x, y) {\n var _this = this;\n if (x !== undefined && y !== undefined) {\n var isToggle = this.element.style.visibility === 'hidden';\n var setPosition = function () {\n _this.attributes.x = x !== null && x !== void 0 ? x : _this.attributes.x;\n _this.attributes.y = y !== null && y !== void 0 ? y : _this.attributes.y;\n _this.updatePosition();\n };\n // 只有从 hidden 状态变为 visible 状态时才需要关闭过渡动画\n isToggle ? this.closeTransition(setPosition) : setPosition();\n }\n this.element.style.visibility = 'visible';\n };\n /**\n * 如果 hide 时传入了坐标值,那么只有当鼠标不在 tooltip 上时才会隐藏\n * 对于 enterable = true 的时候,需要传入 x y,为了避免问题,建议上层在使用的时候,都传入 x y\n * @param x\n * @param y\n * @returns\n */\n Tooltip.prototype.hide = function (x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n var enterable = this.attributes.enterable;\n // 如果当前鼠标在 tooltip 上,则不隐藏\n if (enterable && this.isCursorEntered(x, y))\n return;\n this.element.style.visibility = 'hidden';\n };\n /**\n * 初始化容器\n */\n Tooltip.prototype.initShape = function () {\n var template = this.attributes.template;\n this.element = createDOM(template.container);\n if (this.id)\n this.element.setAttribute('id', this.id);\n };\n Tooltip.prototype.renderCustomContent = function () {\n if (this.prevCustomContentKey !== undefined && this.prevCustomContentKey === this.attributes.contentKey)\n return;\n this.prevCustomContentKey = this.attributes.contentKey;\n var content = this.attributes.content;\n if (!content)\n return;\n if (typeof content === 'string')\n this.element.innerHTML = content;\n else\n this.element.replaceChildren(content);\n };\n /**\n * 更新 HTML 上的内容\n */\n Tooltip.prototype.renderHTMLTooltipElement = function () {\n var _a, _b;\n var _c = this.attributes, template = _c.template, title = _c.title, enterable = _c.enterable, style = _c.style, content = _c.content;\n var CLASS_NAME = getClassNames(template.prefixCls);\n var container = this.element;\n this.element.style.pointerEvents = enterable ? 'auto' : 'none';\n if (content)\n this.renderCustomContent();\n else {\n if (title) {\n container.innerHTML = template.title;\n container.getElementsByClassName(CLASS_NAME.TITLE)[0].innerHTML = title;\n }\n else\n (_b = (_a = container.getElementsByClassName(CLASS_NAME.TITLE)) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.remove();\n var itemsElements = this.HTMLTooltipItemsElements;\n var ul = document.createElement('ul');\n ul.className = CLASS_NAME.LIST;\n ul.replaceChildren.apply(ul, __spreadArray([], __read(itemsElements), false));\n var list = this.element.querySelector(\".\".concat(CLASS_NAME.LIST));\n if (list)\n list.replaceWith(ul);\n else\n container.appendChild(ul);\n }\n applyStyleSheet(container, style);\n };\n /**\n * 根据 position 和指针位置,计算出 tooltip 相对于指针的偏移量\n * @param assignPosition {TooltipPosition} tooltip相对于指针的位置,不指定时使用默认参数\n */\n Tooltip.prototype.getRelativeOffsetFromCursor = function (assignPosition) {\n var _a = this.attributes, position = _a.position, offset = _a.offset;\n var interPosition = assignPosition || position;\n var finalPosition = interPosition.split('-');\n var positionScore = { left: [-1, 0], right: [1, 0], top: [0, -1], bottom: [0, 1] };\n var _b = this.elementSize, width = _b.width, height = _b.height;\n var absolutelyOffset = [-width / 2, -height / 2];\n finalPosition.forEach(function (pos) {\n var _a = __read(absolutelyOffset, 2), abs1 = _a[0], abs2 = _a[1];\n var _b = __read(positionScore[pos], 2), pos1 = _b[0], pos2 = _b[1];\n absolutelyOffset = [abs1 + (width / 2 + offset[0]) * pos1, abs2 + (height / 2 + offset[1]) * pos2];\n });\n return absolutelyOffset;\n };\n /**\n * 将相对于指针的偏移量生效到dom元素上\n */\n Tooltip.prototype.setOffsetPosition = function (_a) {\n var _b = __read(_a, 2), offsetX = _b[0], offsetY = _b[1];\n var _c = this.attributes, _d = _c.x, x = _d === void 0 ? 0 : _d, _e = _c.y, y = _e === void 0 ? 0 : _e, _f = _c.container, cx = _f.x, cy = _f.y;\n this.element.style.left = \"\".concat(+x + cx + offsetX, \"px\");\n this.element.style.top = \"\".concat(+y + cy + offsetY, \"px\");\n };\n /**\n * 更新tooltip的位置\n */\n Tooltip.prototype.updatePosition = function () {\n var _a = this.attributes.showDelay, showDelay = _a === void 0 ? 60 : _a;\n var currentTimestamp = Date.now();\n if (this.timestamp > 0 && currentTimestamp - this.timestamp < showDelay)\n return;\n this.timestamp = currentTimestamp;\n // 尝试当前的位置使用默认 position 能否放下\n // 如果不能,则改变取溢出边的反向 position\n /**\n * 默认位置\n * ⬇️\n * 计算自动调整位置\n * ⬇️\n * 实际摆放位置\n */\n this.setOffsetPosition(this.autoPosition(this.getRelativeOffsetFromCursor()));\n };\n /**\n * 计算自动调整位置后的相对位置\n * @param offsetX 根据position计算的横向偏移量\n * @param offsetY 根据position计算的纵向偏移量\n */\n Tooltip.prototype.autoPosition = function (_a) {\n var _b = __read(_a, 2), offsetX = _b[0], offsetY = _b[1];\n var _c = this.attributes, cursorX = _c.x, cursorY = _c.y, bounding = _c.bounding, position = _c.position;\n // 如果没有设置 bounds,那么意思就是不限制空间\n if (!bounding)\n return [offsetX, offsetY];\n // 更新前的位置和宽度\n var _d = this.element, offsetWidth = _d.offsetWidth, offsetHeight = _d.offsetHeight;\n // 预期放置的位置\n var _e = __read([+cursorX + offsetX, +cursorY + offsetY], 2), expectLeft = _e[0], expectTop = _e[1];\n // 反方向\n var inversion = {\n left: 'right',\n right: 'left',\n top: 'bottom',\n bottom: 'top',\n };\n // 各个边界是否超出容器边界\n var boundingX = bounding.x, boundingY = bounding.y, boundingWidth = bounding.width, boundingHeight = bounding.height;\n var edgeCompare = {\n left: expectLeft < boundingX,\n right: expectLeft + offsetWidth > boundingX + boundingWidth,\n top: expectTop < boundingY,\n bottom: expectTop + offsetHeight > boundingY + boundingHeight,\n };\n // 修正的位置\n var correctivePosition = [];\n // 判断是否超出边界\n position.split('-').forEach(function (pos) {\n // 如果在当前方向超出边界,则设置其反方向\n if (edgeCompare[pos])\n correctivePosition.push(inversion[pos]);\n else\n correctivePosition.push(pos);\n });\n var correctedPositionString = correctivePosition.join('-');\n return this.getRelativeOffsetFromCursor(correctedPositionString);\n };\n Tooltip.prototype.isCursorEntered = function (clientX, clientY) {\n // 是可捕获的,并且点在 tooltip dom 上\n if (this.element) {\n var _a = this.element.getBoundingClientRect(), x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n // const { container } = this.attributes;\n // const { x: cx, y: cy } = container;\n // console.log(1113, [clientX, clientY], [x, y, width, height], [cx, cy], new BBox(x - cx, y - cy, width, height).isPointIn(cursorX, cursorY));\n return new BBox(x, y, width, height).isPointIn(clientX, clientY);\n }\n return false;\n };\n Tooltip.prototype.closeTransition = function (callback) {\n var _this = this;\n var transition = this.element.style.transition;\n this.element.style.transition = 'none';\n callback();\n setTimeout(function () {\n _this.element.style.transition = transition;\n }, 10);\n };\n Tooltip.tag = 'tooltip';\n return Tooltip;\n}(Component));\nexport { Tooltip };\n//# sourceMappingURL=index.js.map","import { __extends, __read } from \"tslib\";\nimport { ElementEvent } from '@antv/g';\nimport { Group } from '../../shapes';\nimport { BBox } from '../../util';\nimport { calcLayout } from '../../util/layout';\nimport { parseSeriesAttr } from '../../util/series';\nvar Layout = /** @class */ (function (_super) {\n __extends(Layout, _super);\n function Layout(options) {\n var _this = _super.call(this, options) || this;\n _this.layoutEvents = [ElementEvent.BOUNDS_CHANGED, ElementEvent.INSERTED, ElementEvent.REMOVED];\n _this.$margin = parseSeriesAttr(0);\n _this.$padding = parseSeriesAttr(0);\n var _a = options.style || {}, _b = _a.margin, margin = _b === void 0 ? 0 : _b, _c = _a.padding, padding = _c === void 0 ? 0 : _c;\n _this.margin = margin;\n _this.padding = padding;\n _this.isMutationObserved = true;\n _this.bindEvents();\n return _this;\n }\n Object.defineProperty(Layout.prototype, \"margin\", {\n get: function () {\n return this.$margin;\n },\n set: function (value) {\n this.$margin = parseSeriesAttr(value);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Layout.prototype, \"padding\", {\n get: function () {\n return this.$padding;\n },\n set: function (value) {\n this.$padding = parseSeriesAttr(value);\n },\n enumerable: false,\n configurable: true\n });\n Layout.prototype.getBBox = function () {\n var _a = this.attributes, _b = _a.x, x = _b === void 0 ? 0 : _b, _c = _a.y, y = _c === void 0 ? 0 : _c, width = _a.width, height = _a.height;\n var _d = __read(this.$margin, 4), marginTop = _d[0], marginRight = _d[1], marginBottom = _d[2], marginLeft = _d[3];\n return new BBox(x - marginLeft, y - marginTop, width + marginLeft + marginRight, height + marginTop + marginBottom);\n };\n Layout.prototype.appendChild = function (child, index) {\n child.isMutationObserved = true;\n _super.prototype.appendChild.call(this, child, index);\n return child;\n };\n Layout.prototype.getAvailableSpace = function () {\n var _a = this.attributes, width = _a.width, height = _a.height;\n var _b = __read(this.$padding, 4), paddingTop = _b[0], paddingRight = _b[1], paddingBottom = _b[2], paddingLeft = _b[3];\n var _c = __read(this.$margin, 4), marginTop = _c[0], marginLeft = _c[3];\n return new BBox(paddingLeft + marginLeft, paddingTop + marginTop, width - paddingLeft - paddingRight, height - paddingTop - paddingBottom);\n };\n Layout.prototype.layout = function () {\n if (!this.attributes.display || !this.isConnected)\n return;\n if (this.children.some(function (child) { return !child.isConnected; }))\n return;\n try {\n var bboxes_1 = calcLayout(this.getAvailableSpace(), this.children.map(function (child) { return child.getBBox(); }), this.attributes);\n this.children.forEach(function (child, index) {\n var _a = bboxes_1[index], x = _a.x, y = _a.y;\n child.attr({ x: x, y: y });\n });\n }\n catch (e) {\n // do nothing\n }\n };\n Layout.prototype.bindEvents = function () {\n var _this = this;\n this.layoutEvents.forEach(function (event) {\n _this.addEventListener(event, function (e) {\n e.target.isMutationObserved = true;\n _this.layout();\n });\n });\n };\n Layout.prototype.attributeChangedCallback = function (name, oldValue, newValue) {\n if (name === 'margin')\n this.margin = newValue;\n else if (name === 'padding')\n this.padding = newValue;\n this.layout();\n };\n return Layout;\n}(Group));\nexport { Layout };\n//# sourceMappingURL=layout.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { isNumber } from '@antv/util';\nimport { Marker } from '@antv/component';\nimport { line } from 'd3-shape';\nimport { createElement } from '../../utils/createElement';\nimport { applyStyle } from '../utils';\nimport { subObject } from '../../utils/helper';\nimport { select } from '../../utils/selection';\nimport { dist } from '../../utils/vector';\nfunction getConnectorPoint(shape) {\n const { min: [x0, y0], max: [x1, y1], } = shape.getLocalBounds();\n let x = 0;\n let y = 0;\n if (x0 > 0)\n x = x0;\n if (x1 < 0)\n x = x1;\n if (y0 > 0)\n y = y0;\n if (y1 < 0)\n y = y1;\n return [x, y];\n}\nfunction inferBackgroundBounds(textShape, padding = []) {\n const [top = 0, right = 0, bottom = top, left = right] = padding;\n const container = textShape.parentNode;\n const angle = container.getEulerAngles();\n container.setEulerAngles(0);\n const { min, halfExtents } = textShape.getLocalBounds();\n const [x, y] = min;\n const [hw, hh] = halfExtents;\n container.setEulerAngles(angle);\n return {\n x: x - left,\n y: y - top,\n width: hw * 2 + left + right,\n height: hh * 2 + top + bottom,\n };\n}\nconst cos = (p0, p1, p2) => {\n const a = dist(p0, p1);\n const b = dist(p1, p2);\n const c = dist(p2, p0);\n return (Math.pow(a, 2) + Math.pow(b, 2) - Math.pow(c, 2)) / (2 * a * b);\n};\nfunction inferConnectorPath(shape, points, controlPoints, coordCenter) {\n const [[x0, y0], [x1, y1]] = points;\n const [x, y] = getConnectorPoint(shape);\n // Straight connector line.\n if (x0 === x1 && y0 === y1) {\n return line()([\n [0, 0],\n [x, y],\n ]);\n }\n const P = [[x0 - x1, y0 - y1]].concat(controlPoints.length ? controlPoints : [[0, 0]]);\n const p0 = [coordCenter[0] - x1, coordCenter[1] - y1];\n const [p1, p2] = P;\n // If angle is smaller than 90, which will cause connector overlap with element.\n if (cos(p0, p1, p2) > 0) {\n const x2 = (() => {\n const { min, max } = shape.getLocalBounds();\n // A(x1,y2) perpendicular to B(x2,y2) => x1*x2 + y1*y2 = 0\n const vx = p1[0] + ((p1[1] - p0[1]) * (p1[1] - 0)) / (p1[0] - p0[0]);\n if (max[0] < p0[0])\n return Math.min(max[0], vx);\n return Math.max(min[0], vx);\n })();\n P.splice(1, 1, [x2, 0]);\n }\n return line()(P);\n}\nexport const Advance = createElement((g) => {\n const _a = g.attributes, { className, \n // Do not pass className\n class: _c, transform, rotate, labelTransform, labelTransformOrigin, x, y, x0 = x, y0 = y, text, background, connector, startMarker, endMarker, coordCenter, innerHTML } = _a, rest = __rest(_a, [\"className\", \"class\", \"transform\", \"rotate\", \"labelTransform\", \"labelTransformOrigin\", \"x\", \"y\", \"x0\", \"y0\", \"text\", \"background\", \"connector\", \"startMarker\", \"endMarker\", \"coordCenter\", \"innerHTML\"]);\n // Position is invalid, do not render the UI,\n // or clear previous elements.\n if ([x, y, x0, y0].some((v) => !isNumber(v))) {\n g.children.forEach((d) => d.remove());\n return;\n }\n const _b = subObject(rest, 'background'), { padding } = _b, backgroundStyle = __rest(_b, [\"padding\"]);\n const _d = subObject(rest, 'connector'), { points = [] } = _d, connectorStyle = __rest(_d, [\"points\"]);\n const endPoints = [\n [+x0, +y0],\n [+x, +y],\n ];\n let textShape;\n // Use html to customize advance text.\n if (innerHTML) {\n textShape = select(g)\n .maybeAppend('html', 'html', className)\n .style('zIndex', 0)\n .style('innerHTML', innerHTML)\n .call(applyStyle, Object.assign({ transform: labelTransform, transformOrigin: labelTransformOrigin }, rest))\n .node();\n }\n else {\n textShape = select(g)\n .maybeAppend('text', 'text')\n .style('zIndex', 0)\n .style('text', text)\n .call(applyStyle, Object.assign({ textBaseline: 'middle', transform: labelTransform, transformOrigin: labelTransformOrigin }, rest))\n .node();\n }\n const rect = select(g)\n .maybeAppend('background', 'rect')\n .style('zIndex', -1)\n .call(applyStyle, inferBackgroundBounds(textShape, padding))\n .call(applyStyle, background ? backgroundStyle : {})\n .node();\n const connectorPath = inferConnectorPath(rect, endPoints, points, coordCenter);\n const markerStart = startMarker &&\n new Marker({\n id: 'startMarker',\n style: Object.assign({ x: 0, y: 0 }, subObject(rest, 'startMarker')),\n });\n const markerEnd = endMarker &&\n new Marker({\n id: 'endMarker',\n style: Object.assign({ x: 0, y: 0 }, subObject(rest, 'endMarker')),\n });\n select(g)\n .maybeAppend('connector', 'path')\n .style('zIndex', 0)\n .style('path', connectorPath)\n .style('markerStart', markerStart)\n .style('markerEnd', markerEnd)\n .call(applyStyle, connector ? connectorStyle : {});\n});\n//# sourceMappingURL=advance.js.map","import { applyStyle } from '../../shape/utils';\nimport { select } from '../../utils/selection';\nimport { Advance } from './advance';\n/**\n * @todo autoRotate when in polar coordinate\n */\nexport const Text = (options, context) => {\n const { coordinate } = context;\n return (points, value, defaults) => {\n const { color, text = '', fontSize, rotate = 0, transform = '' } = value;\n const textStyle = {\n text: String(text),\n stroke: color,\n fill: color,\n fontSize,\n };\n const [[x0, y0]] = points;\n return select(new Advance())\n .style('x', x0)\n .style('y', y0)\n .call(applyStyle, defaults)\n .style('transform', `${transform}rotate(${+rotate})`)\n .style('coordCenter', coordinate.getCenter())\n .call(applyStyle, textStyle)\n .call(applyStyle, options)\n .node();\n };\n};\nText.props = {\n defaultMarker: 'point',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=text.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Marker } from '@antv/component';\nimport { createElement } from '../../utils/createElement';\nimport { subObject } from '../../utils/helper';\nimport { select } from '../../utils/selection';\nimport { applyStyle } from '../../shape/utils';\n/**\n * Get the path to draw a built-in badge, which is like a balloon.\n */\nfunction getPath(r) {\n const offset = r / Math.sqrt(2);\n const dy = r * Math.sqrt(2);\n const [p0x, p0y] = [-offset, offset - dy];\n const [p1x, p1y] = [0, 0];\n const [p2x, p2y] = [offset, offset - dy];\n return [\n ['M', p0x, p0y],\n ['A', r, r, 0, 1, 1, p2x, p2y],\n ['L', p1x, p1y],\n ['Z'],\n ];\n}\nfunction inferTextPosition(shape) {\n const { min, max } = shape.getLocalBounds();\n return [(min[0] + max[0]) * 0.5, (min[1] + max[1]) * 0.5];\n}\nconst BadgeShape = createElement((g) => {\n const _a = g.attributes, { class: className, x: x0, y: y0 } = _a, rest = __rest(_a, [\"class\", \"x\", \"y\"]);\n const markerStyle = subObject(rest, 'marker');\n const { size = 24 } = markerStyle;\n const symbol = () => getPath(size / 2);\n const bgShape = select(g)\n .maybeAppend('marker', () => new Marker({}))\n .call((selection) => selection.node().update(Object.assign({ symbol }, markerStyle)))\n .node();\n const [x, y] = inferTextPosition(bgShape);\n select(g)\n .maybeAppend('text', 'text')\n .style('x', x)\n .style('y', y)\n .call(applyStyle, rest);\n});\nexport const Badge = (options, context) => {\n const style = __rest(options, []);\n return (points, value, defaults) => {\n const { color: defaultColor } = defaults, rest = __rest(defaults, [\"color\"]);\n const { color = defaultColor, text = '' } = value;\n const textStyle = {\n text: String(text),\n stroke: color,\n fill: color,\n };\n const [[x0, y0]] = points;\n return select(new BadgeShape())\n .call(applyStyle, rest)\n .style('x', x0)\n .style('y', y0)\n .call(applyStyle, textStyle)\n .call(applyStyle, style)\n .node();\n };\n};\nBadge.props = {\n defaultMarker: 'point',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=badge.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { area, areaRadial } from 'd3-shape';\nimport { select } from '../../utils/selection';\nimport { isPolar, isTranspose } from '../../utils/coordinate';\nimport { angleWithQuadrant, sub, dist } from '../../utils/vector';\nimport { applyStyle, computeGradient, getTransform } from '../utils';\nimport { subObject } from '../../utils/helper';\nimport { createElement } from '../../utils/createElement';\n/**\n * Given a points sequence, split it into an array of defined points\n * and an array of undefined segments.\n *\n * Input - [p0, p1, p2, p3, p4, p5], p1 ~ p2 is `Y1`, p3 ~ p5 is `Y0`.\n * Output - When all of Y1 & Y0 is defined, move into defined points, or else undefined segments.\n */\nfunction segmentation(points, defined) {\n const definedPointsY1 = [];\n const definedPointsY0 = [];\n const segments = [];\n let m = false; // Is in a undefined sequence.\n let dp = null; // The previous defined point.\n const mid = points.length / 2;\n for (let i = 0; i < mid; i++) {\n const y1 = points[i];\n const y0 = points[i + mid];\n // If current point is a undefined point,\n // enter a undefined sequence.\n if ([...y1, ...y0].some((v) => !defined(v)))\n m = true;\n else {\n definedPointsY1.push(y1);\n definedPointsY0.push(y0);\n // If current point is a defined point,\n // and is in a undefined sequence, save\n // the two closest defined points as this\n // undefined sequence and exit it.\n if (m && dp) {\n m = false;\n const [dpy1, dpy0] = dp;\n segments.push([dpy1, y1, dpy0, y0]);\n }\n // Update the previous defined point.\n dp = [y1, y0];\n }\n }\n return [definedPointsY1.concat(definedPointsY0), segments];\n}\nconst DoubleArea = createElement((g) => {\n const { areaPath, connectPath, areaStyle, connectStyle } = g.attributes;\n const document = g.ownerDocument;\n select(g)\n .maybeAppend('connect-path', () => document.createElement('path', {}))\n .style('d', connectPath)\n .call(applyStyle, connectStyle);\n select(g)\n .maybeAppend('area-path', () => document.createElement('path', {}))\n .style('d', areaPath)\n .call(applyStyle, areaStyle);\n});\nexport const Curve = (options, context) => {\n const { curve, gradient = false, defined = (d) => !Number.isNaN(d) && d !== undefined && d !== null, connect: connectNulls = false } = options, style = __rest(options, [\"curve\", \"gradient\", \"defined\", \"connect\"]);\n const { coordinate, document } = context;\n return (P, value, defaults) => {\n const { color: defaultColor } = defaults;\n const { color = defaultColor, seriesColor: sc, seriesX: sx, seriesY: sy, } = value;\n const tpShape = isTranspose(coordinate);\n const transform = getTransform(coordinate, value);\n const fill = gradient && sc\n ? computeGradient(sc, sx, sy, gradient, undefined, tpShape)\n : color;\n const finalStyle = Object.assign(Object.assign(Object.assign(Object.assign({}, defaults), { stroke: fill, fill: fill }), (transform && { transform })), style);\n const [DP, MS] = segmentation(P, defined);\n const connectStyle = subObject(finalStyle, 'connect');\n const missing = !!MS.length;\n const getPathNode = (path) => {\n return select(document.createElement('path', {}))\n .style('d', path || '')\n .call(applyStyle, finalStyle)\n .node();\n };\n if (!isPolar(coordinate)) {\n /**\n * Draw area shape by points.\n */\n const areaPath = (points) => {\n const Y1 = points.slice(0, points.length / 2);\n const Y0 = points.slice(points.length / 2);\n return tpShape\n ? area()\n .y((_, idx) => Y1[idx][1])\n .x1((_, idx) => Y1[idx][0])\n .x0((_, idx) => Y0[idx][0])\n .defined((_, idx) => [...Y1[idx], ...Y0[idx]].every(defined))\n .curve(curve)(Y1)\n : area()\n .x((_, idx) => Y1[idx][0])\n .y1((_, idx) => Y1[idx][1])\n .y0((_, idx) => Y0[idx][1])\n .defined((_, idx) => [...Y1[idx], ...Y0[idx]].every(defined))\n .curve(curve)(Y1);\n };\n // Draw one area of connected defined points.\n if (!missing || (connectNulls && !Object.keys(connectStyle).length)) {\n return getPathNode(areaPath(DP));\n }\n // Draw one area of unconnected defined points.\n if (missing && !connectNulls) {\n return getPathNode(areaPath(P));\n }\n // Draw two area.\n // One for unconnected defined points.\n // One for connected segments.\n return select(new DoubleArea())\n .style('areaStyle', finalStyle)\n .style('connectStyle', Object.assign(Object.assign({}, connectStyle), style))\n .style('areaPath', areaPath(P))\n .style('connectPath', MS.map(areaPath).join(''))\n .node();\n }\n else {\n /**\n * Draw areaRadial shape by points.\n */\n const areaRadialPath = (points) => {\n const center = coordinate.getCenter();\n const Y1 = points.slice(0, points.length / 2);\n const Y0 = points.slice(points.length / 2);\n return areaRadial()\n .angle((_, idx) => angleWithQuadrant(sub(Y1[idx], center)))\n .outerRadius((_, idx) => dist(Y1[idx], center))\n .innerRadius((_, idx) => dist(Y0[idx], center))\n .defined((_, idx) => [...Y1[idx], ...Y0[idx]].every(defined))\n .curve(curve)(Y0);\n };\n // Draw one area of connected defined points.\n if (!missing || (connectNulls && !Object.keys(connectStyle).length)) {\n return getPathNode(areaRadialPath(DP));\n }\n // Draw one area of unconnected defined points.\n if (missing && !connectNulls) {\n return getPathNode(areaRadialPath(P));\n }\n // Draw two area.\n // One for unconnected defined points.\n // One for connected segments.\n return select(new DoubleArea())\n .style('areaStyle', finalStyle)\n .style('connectStyle', Object.assign(Object.assign({}, connectStyle), style))\n .style('areaPath', areaRadialPath(P))\n .style('connectPath', MS.map(areaRadialPath).join(''))\n .node();\n }\n };\n};\nCurve.props = {\n defaultMarker: 'smooth',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=curve.js.map","import { curveLinearClosed, curveLinear } from 'd3-shape';\nimport { isPolar } from '../../utils/coordinate';\nimport { Curve } from './curve';\nexport const Area = (options, context) => {\n const { coordinate } = context;\n return (...params) => {\n const curve = isPolar(coordinate) ? curveLinearClosed : curveLinear;\n return Curve(Object.assign({ curve: curve }, options), context)(...params);\n };\n};\nArea.props = Object.assign(Object.assign({}, Curve.props), { defaultMarker: 'square' });\n//# sourceMappingURL=area.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { curveCatmullRomClosed, curveMonotoneX, curveMonotoneY, } from 'd3-shape';\nimport { isPolar, isTranspose } from '../../utils/coordinate';\nimport { Curve } from './curve';\nexport const Smooth = (options, context) => {\n const rest = __rest(options, []);\n const { coordinate } = context;\n return (...params) => {\n const curve = isPolar(coordinate)\n ? curveCatmullRomClosed\n : isTranspose(coordinate)\n ? curveMonotoneY\n : curveMonotoneX;\n return Curve(Object.assign({ curve }, rest), context)(...params);\n };\n};\nSmooth.props = Object.assign(Object.assign({}, Curve.props), { defaultMarker: 'smooth' });\n//# sourceMappingURL=smooth.js.map","import { curveStep } from 'd3-shape';\nimport { Curve } from './curve';\nexport const HVH = (options, context) => {\n return (...params) => {\n return Curve(Object.assign({ curve: curveStep }, options), context)(...params);\n };\n};\nHVH.props = Object.assign(Object.assign({}, Curve.props), { defaultMarker: 'hvh' });\n//# sourceMappingURL=hvh.js.map","import { curveStepBefore } from 'd3-shape';\nimport { Curve } from './curve';\nexport const VH = (options, context) => {\n return (...params) => {\n return Curve(Object.assign({ curve: curveStepBefore }, options), context)(...params);\n };\n};\nVH.props = Object.assign(Object.assign({}, Curve.props), { defaultMarker: 'vh' });\n//# sourceMappingURL=vh.js.map","import { curveStepAfter } from 'd3-shape';\nimport { Curve } from './curve';\nexport const HV = (options, context) => {\n return (...params) => {\n return Curve(Object.assign({ curve: curveStepAfter }, options), context)(...params);\n };\n};\nHV.props = Object.assign(Object.assign({}, Curve.props), { defaultMarker: 'hv' });\n//# sourceMappingURL=hv.js.map","import { Vector } from '../../shape/vector/vector';\n/**\n * Connect 2 points with a single line with arrow.\n * ----->\n */\nexport const Link = (options, context) => {\n const { arrow = false } = options;\n return (...params) => {\n return Vector(Object.assign(Object.assign({}, options), { arrow }), context)(...params);\n };\n};\nLink.props = {\n defaultMarker: 'line',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=link.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { path as d3path } from 'd3-path';\nimport { applyStyle } from '../utils';\nimport { select } from '../../utils/selection';\n/**\n * Connect 2 points with a smooth line, used in tree.\n */\nexport const Smooth = (options, context) => {\n const style = __rest(options, []);\n const { document } = context;\n return (points, value, defaults) => {\n const { color: defaultColor } = defaults, rest = __rest(defaults, [\"color\"]);\n const { color = defaultColor, transform } = value;\n const [from, to] = points;\n const path = d3path();\n path.moveTo(from[0], from[1]);\n path.bezierCurveTo(from[0] / 2 + to[0] / 2, from[1], from[0] / 2 + to[0] / 2, to[1], to[0], to[1]);\n return select(document.createElement('path', {}))\n .call(applyStyle, rest)\n .style('d', path.toString())\n .style('stroke', color)\n .style('transform', transform)\n .call(applyStyle, style)\n .node();\n };\n};\nSmooth.props = {\n defaultMarker: 'smooth',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=smooth.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { path as d3path } from 'd3-path';\nimport { appendArc, applyStyle } from '../utils';\nimport { select } from '../../utils/selection';\nimport { isTranspose, isPolar } from '../../utils/coordinate';\nimport { dist } from '../../utils/vector';\n/**\n * Get vhv path in different coordinate.\n */\nfunction getVHVPath(from, to, coordinate, ratio) {\n const path = d3path();\n if (isPolar(coordinate)) {\n const center = coordinate.getCenter();\n const a = dist(from, center);\n const b = dist(to, center);\n const radius = (b - a) * ratio + a;\n path.moveTo(from[0], from[1]);\n appendArc(path, from, to, center, radius);\n path.lineTo(to[0], to[1]);\n return path;\n }\n if (isTranspose(coordinate)) {\n path.moveTo(from[0], from[1]);\n // VHV in x.\n path.lineTo(from[0] + (to[0] - from[0]) * ratio, from[1]);\n path.lineTo(from[0] + (to[0] - from[0]) * ratio, to[1]);\n path.lineTo(to[0], to[1]);\n return path;\n }\n path.moveTo(from[0], from[1]);\n // VHV in y.\n path.lineTo(from[0], from[1] + (to[1] - from[1]) * ratio);\n path.lineTo(to[0], from[1] + (to[1] - from[1]) * ratio);\n path.lineTo(to[0], to[1]);\n return path;\n}\n/**\n * Connect 2 points with a VHV line, used in tree.\n */\nexport const VHV = (options, context) => {\n const { cornerRatio = 1 / 3 } = options, style = __rest(options, [\"cornerRatio\"]);\n const { coordinate, document } = context;\n return (points, value, defaults) => {\n const { defaultColor } = defaults, rest = __rest(defaults, [\"defaultColor\"]);\n const { color = defaultColor, transform } = value;\n const [from, to] = points;\n const path = getVHVPath(from, to, coordinate, cornerRatio);\n return select(document.createElement('path', {}))\n .call(applyStyle, rest)\n .style('d', path.toString())\n .style('stroke', color)\n .style('transform', transform)\n .call(applyStyle, style)\n .node();\n };\n};\nVHV.props = {\n defaultMarker: 'vhv',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=vhv.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { path as d3path } from 'd3-path';\nimport { appendArc, applyStyle } from '../utils';\nimport { select } from '../../utils/selection';\nimport { isPolar } from '../../utils/coordinate';\nimport { dist, mid } from '../../utils/vector';\n/**\n * Connect points for 2 points:\n * - In rect, draw half circle.\n * - In polar, draw quadratic curve.\n */\nexport const Arc = (options, context) => {\n const style = __rest(options, []);\n const { coordinate, document } = context;\n return (points, value, defaults) => {\n const { color: defaultColor } = defaults, rest = __rest(defaults, [\"color\"]);\n const { color = defaultColor, transform } = value;\n const [from, to] = points;\n const path = d3path();\n path.moveTo(from[0], from[1]);\n if (isPolar(coordinate)) {\n const center = coordinate.getCenter();\n path.quadraticCurveTo(center[0], center[1], to[0], to[1]);\n }\n else {\n const center = mid(from, to);\n const raduis = dist(from, to) / 2;\n appendArc(path, from, to, center, raduis);\n }\n return select(document.createElement('path', {}))\n .call(applyStyle, rest)\n .style('d', path.toString())\n .style('stroke', color)\n .style('transform', transform)\n .call(applyStyle, style)\n .node();\n };\n};\nArc.props = {\n defaultMarker: 'smooth',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=arc.js.map","import { MaybeKey, MaybeTitle, MaybeTooltip } from '../transform';\nexport function baseChannels(options = {}) {\n const { shapes } = options;\n return [\n { name: 'color' },\n { name: 'opacity' },\n { name: 'shape', range: shapes },\n { name: 'enterType' },\n { name: 'enterDelay', scaleKey: 'enter' },\n { name: 'enterDuration', scaleKey: 'enter' },\n { name: 'enterEasing' },\n { name: 'key', scale: 'identity' },\n { name: 'groupKey', scale: 'identity' },\n { name: 'label', scale: 'identity' },\n ];\n}\nexport function baseGeometryChannels(options = {}) {\n return [...baseChannels(options), { name: 'title', scale: 'identity' }];\n}\nexport function tooltip3d() {\n return [\n { type: MaybeTitle, channel: 'color' },\n { type: MaybeTooltip, channel: ['x', 'y', 'z'] },\n ];\n}\nexport function tooltip2d() {\n return [\n { type: MaybeTitle, channel: 'color' },\n { type: MaybeTooltip, channel: ['x', 'y'] },\n ];\n}\nexport function tooltip1d() {\n return [\n { type: MaybeTitle, channel: 'x' },\n { type: MaybeTooltip, channel: ['y'] },\n ];\n}\nexport function tooltipXd() {\n return [\n { type: MaybeTitle, channel: 'color' },\n { type: MaybeTooltip, channel: ['position'] },\n ];\n}\nexport function baseAnnotationChannels(options = {}) {\n return baseChannels(options);\n}\nexport function basePreInference() {\n return [{ type: MaybeKey }];\n}\nexport function basePostInference() {\n return [];\n}\nexport function bandWidth(scale, x) {\n return scale.getBandWidth(scale.invert(x));\n}\nexport function createBandOffset(scale, value, options = {}) {\n const { x: X, y: Y, series: S } = value;\n const { x, y, series } = scale;\n const { style: { bandOffset = series ? 0 : 0.5, bandOffsetX = bandOffset, bandOffsetY = bandOffset, } = {}, } = options;\n const isBandX = !!(x === null || x === void 0 ? void 0 : x.getBandWidth);\n const isBandY = !!(y === null || y === void 0 ? void 0 : y.getBandWidth);\n const isSeries = !!(series === null || series === void 0 ? void 0 : series.getBandWidth);\n if (!isBandX && !isBandY)\n return (d) => d;\n return (d, i) => {\n const widthX = isBandX ? bandWidth(x, X[i]) : 0;\n const widthY = isBandY ? bandWidth(y, Y[i]) : 0;\n const f = () => (bandWidth(series, S[i]) / 2 + +S[i]) * widthX;\n const offset = isSeries && S ? f() : 0;\n const [x0, y0] = d;\n return [x0 + bandOffsetX * widthX + offset, y0 + bandOffsetY * widthY];\n };\n}\nexport function p(d) {\n return parseFloat(d) / 100;\n}\nexport function visualMark(index, scale, value, coordinate) {\n const { x: X, y: Y } = value;\n const { innerWidth, innerHeight } = coordinate.getOptions();\n const P = Array.from(index, (i) => {\n const x0 = X[i];\n const y0 = Y[i];\n const x = typeof x0 === 'string' ? p(x0) * innerWidth : +x0;\n const y = typeof y0 === 'string' ? p(y0) * innerHeight : +y0;\n return [[x, y]];\n });\n return [index, P];\n}\nexport function field(encode) {\n return typeof encode === 'function' ? encode : (d) => d[encode];\n}\nexport function valueof(data, encode) {\n return Array.from(data, field(encode));\n}\nexport function initializeData(data, encode) {\n const { source = (d) => d.source, target = (d) => d.target, value = (d) => d.value, } = encode;\n const { links, nodes } = data;\n const LS = valueof(links, source);\n const LT = valueof(links, target);\n const LV = valueof(links, value);\n return {\n links: links.map((_, i) => ({\n target: LT[i],\n source: LS[i],\n value: LV[i],\n })),\n nodes: nodes || Array.from(new Set([...LS, ...LT]), (key) => ({ key })),\n };\n}\n//# sourceMappingURL=utils.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { applyStyle } from '../utils';\nimport { select } from '../../utils/selection';\nimport { p } from '../../mark/utils';\nexport const Image = (options, context) => {\n const { coordinate, document } = context;\n return (points, value, defaults) => {\n const { color: defaultColor } = defaults, rest = __rest(defaults, [\"color\"]);\n const { color = defaultColor, src = '', size = 32, transform = '' } = value;\n let { width = size, height = size } = options;\n const [[x0, y0]] = points;\n // Support percentage width, height.\n const [w, h] = coordinate.getSize();\n width = typeof width === 'string' ? p(width) * w : width;\n height = typeof height === 'string' ? p(height) * h : height;\n const x = x0 - Number(width) / 2;\n const y = y0 - Number(height) / 2;\n return select(document.createElement('image', {}))\n .call(applyStyle, rest)\n .style('x', x)\n .style('y', y)\n .style('img', src)\n .style('stroke', color)\n .style('transform', transform)\n .call(applyStyle, options)\n .style('width', width)\n .style('height', height)\n .node();\n };\n};\nImage.props = {\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=image.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { path as d3path } from 'd3-path';\nimport { isPolar } from '../../utils/coordinate';\nimport { applyStyle, appendPolygon, appendArc } from '../utils';\nimport { select } from '../../utils/selection';\nimport { dist } from '../../utils/vector';\nfunction getPolygonPath(points, coordinate) {\n const path = d3path();\n // In polar, draw arc.\n if (isPolar(coordinate)) {\n const center = coordinate.getCenter();\n const closedPoints = [...points, points[0]];\n // Calculate dist array for cache.\n const dists = closedPoints.map((p) => dist(p, center));\n closedPoints.forEach((curr, idx) => {\n if (idx === 0) {\n path.moveTo(curr[0], curr[1]);\n return;\n }\n const currDist = dists[idx];\n const prev = points[idx - 1];\n const prevDist = dists[idx - 1];\n // When radius is equal, draw 2 point with arc.\n // todo: choose a minimum value.\n if (prevDist !== undefined && Math.abs(currDist - prevDist) < 1e-10) {\n appendArc(path, prev, curr, center, currDist);\n }\n else {\n path.lineTo(curr[0], curr[1]);\n }\n });\n path.closePath();\n return path;\n }\n // In rect, draw polygon.\n return appendPolygon(path, points);\n}\nexport const Polygon = (options, context) => {\n const { coordinate, document } = context;\n return (points, value, defaults) => {\n const { color: defaultColor } = defaults, rest = __rest(defaults, [\"color\"]);\n const { color = defaultColor, transform } = value;\n const path = getPolygonPath(points, coordinate);\n return select(document.createElement('path', {}))\n .call(applyStyle, rest)\n .style('d', path.toString())\n .style('stroke', color)\n .style('fill', color)\n .style('transform', transform)\n .call(applyStyle, options)\n .node();\n };\n};\nPolygon.props = {\n defaultMarker: 'square',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=polygon.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { path as d3path } from 'd3-path';\nimport { appendArc, applyStyle } from '../utils';\nimport { select } from '../../utils/selection';\nimport { isPolar } from '../../utils/coordinate';\nimport { dist } from '../../utils/vector';\nfunction getRibbonPath(points, coordinate) {\n const [p0, p1, p2, p3] = points;\n const path = d3path();\n // In polar, draw shape only for Chord.\n if (isPolar(coordinate)) {\n const center = coordinate.getCenter();\n const radius = dist(center, p0);\n path.moveTo(p0[0], p0[1]);\n // p0 -> p2\n path.quadraticCurveTo(center[0], center[1], p2[0], p2[1]);\n // p2 -> p3\n appendArc(path, p2, p3, center, radius);\n // p3 -> p1\n path.quadraticCurveTo(center[0], center[1], p1[0], p1[1]);\n // p1 -> p0\n appendArc(path, p1, p0, center, radius);\n path.closePath();\n return path;\n }\n // In Rect, draw shape for Sankey.\n path.moveTo(p0[0], p0[1]);\n path.bezierCurveTo(p0[0] / 2 + p2[0] / 2, p0[1], p0[0] / 2 + p2[0] / 2, p2[1], p2[0], p2[1]);\n path.lineTo(p3[0], p3[1]);\n path.bezierCurveTo(p3[0] / 2 + p1[0] / 2, p3[1], p3[0] / 2 + p1[0] / 2, p1[1], p1[0], p1[1]);\n path.lineTo(p0[0], p0[1]);\n path.closePath();\n return path;\n}\n/**\n * Connect points for 4 points:\n * - In rect, draw ribbon used in Sankey.\n * - In polar, draw arc used in Chord.\n */\nexport const Ribbon = (options, context) => {\n const style = __rest(options, []);\n const { coordinate, document } = context;\n return (points, value, defaults) => {\n const { color: defaultColor } = defaults, rest = __rest(defaults, [\"color\"]);\n const { color = defaultColor, transform } = value;\n const path = getRibbonPath(points, coordinate);\n return select(document.createElement('path', {}))\n .call(applyStyle, rest)\n .style('d', path.toString())\n .style('fill', color || defaultColor)\n .style('stroke', color || defaultColor)\n .style('transform', transform)\n .call(applyStyle, style)\n .node();\n };\n};\nRibbon.props = {\n defaultMarker: 'square',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=ribbon.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { path as d3path } from 'd3-path';\nimport { applyStyle } from '../utils';\nimport { select } from '../../utils/selection';\nimport { isPolar } from '../../utils/coordinate';\nimport { angle, sub, dist } from '../../utils/vector';\nfunction getPath(points, coordinate) {\n const path = d3path();\n if (!isPolar(coordinate)) {\n path.moveTo(...points[0]);\n path.lineTo(...points[1]);\n path.moveTo(...points[2]);\n path.lineTo(...points[3]);\n path.moveTo(...points[4]);\n path.lineTo(...points[5]);\n path.lineTo(...points[6]);\n path.lineTo(...points[7]);\n path.closePath();\n path.moveTo(...points[8]);\n path.lineTo(...points[9]);\n path.moveTo(...points[10]);\n path.lineTo(...points[11]);\n path.moveTo(...points[12]);\n path.lineTo(...points[13]);\n }\n else {\n // In polar coordinate.\n const center = coordinate.getCenter();\n const [x, y] = center;\n const startAngle = angle(sub(points[0], center));\n const endAngle = angle(sub(points[1], center));\n const radiusHigh = dist(center, points[2]);\n const radiusQ3 = dist(center, points[3]);\n const radiusMedian = dist(center, points[8]);\n const radiusQ1 = dist(center, points[10]);\n const radiusLow = dist(center, points[11]);\n path.moveTo(...points[0]);\n path.arc(x, y, radiusHigh, startAngle, endAngle);\n path.arc(x, y, radiusHigh, endAngle, startAngle, true);\n path.moveTo(...points[2]);\n path.lineTo(...points[3]);\n path.moveTo(...points[4]);\n path.arc(x, y, radiusQ3, startAngle, endAngle); // 4 -> 5\n path.lineTo(...points[6]); // 5 -> 6\n path.arc(x, y, radiusQ1, endAngle, startAngle, true); // 6 -> 7\n path.closePath();\n path.moveTo(...points[8]);\n path.arc(x, y, radiusMedian, startAngle, endAngle); // 8 -> 9\n path.arc(x, y, radiusMedian, endAngle, startAngle, true); // 9 -> 8\n path.moveTo(...points[10]);\n path.lineTo(...points[11]);\n path.moveTo(...points[12]);\n path.arc(x, y, radiusLow, startAngle, endAngle); // 12 -> 13\n path.arc(x, y, radiusLow, endAngle, startAngle, true); // 13 -> 12\n }\n return path;\n}\nexport const Box = (options, context) => {\n const { coordinate, document } = context;\n return (points, value, defaults) => {\n const { color, transform } = value;\n const { color: defaultColor, fill = defaultColor, stroke = defaultColor } = defaults, rest = __rest(defaults, [\"color\", \"fill\", \"stroke\"]);\n const path = getPath(points, coordinate);\n return select(document.createElement('path', {}))\n .call(applyStyle, rest)\n .style('d', path.toString())\n .style('stroke', stroke)\n .style('fill', color || fill)\n .style('transform', transform)\n .call(applyStyle, options)\n .node();\n };\n};\nBox.props = {\n defaultMarker: 'point',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=box.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { path as d3path } from 'd3-path';\nimport { applyStyle } from '../utils';\nimport { select } from '../../utils/selection';\nimport { isPolar } from '../../utils/coordinate';\nimport { angle, sub, dist } from '../../utils/vector';\nfunction getPath(p, coordinate, size = 4) {\n const path = d3path();\n if (!isPolar(coordinate)) {\n path.moveTo(...p[2]);\n path.lineTo(...p[3]);\n path.lineTo(p[3][0] - size, p[3][1]);\n path.lineTo(p[10][0] - size, p[10][1]);\n path.lineTo(p[10][0] + size, p[10][1]);\n path.lineTo(p[3][0] + size, p[3][1]);\n path.lineTo(...p[3]);\n path.closePath();\n path.moveTo(...p[10]);\n path.lineTo(...p[11]);\n path.moveTo(p[3][0] + size / 2, p[8][1]);\n path.arc(p[3][0], p[8][1], size / 2, 0, Math.PI * 2);\n path.closePath();\n return path;\n }\n const center = coordinate.getCenter();\n const [x, y] = center;\n const radiusQ3 = dist(center, p[3]);\n const radiusMedian = dist(center, p[8]);\n const radiusQ1 = dist(center, p[10]);\n const middleAngle = angle(sub(p[2], center));\n const rectAngle = Math.asin(size / radiusMedian);\n const startAngle = middleAngle - rectAngle;\n const endAngle = middleAngle + rectAngle;\n path.moveTo(...p[2]);\n path.lineTo(...p[3]);\n path.moveTo(Math.cos(startAngle) * radiusQ3 + x, Math.sin(startAngle) * radiusQ3 + y);\n path.arc(x, y, radiusQ3, startAngle, endAngle);\n path.lineTo(Math.cos(endAngle) * radiusQ1 + x, Math.sin(endAngle) * radiusQ1 + y);\n path.arc(x, y, radiusQ1, endAngle, startAngle, true);\n path.lineTo(Math.cos(startAngle) * radiusQ3 + x, Math.sin(startAngle) * radiusQ3 + y);\n path.closePath();\n path.moveTo(...p[10]);\n path.lineTo(...p[11]);\n const a = (startAngle + endAngle) / 2;\n path.moveTo(Math.cos(a) * (radiusMedian + size / 2) + x, Math.sin(a) * (radiusMedian + size / 2) + y);\n path.arc(Math.cos(a) * radiusMedian + x, Math.sin(a) * radiusMedian + y, size / 2, a, Math.PI * 2 + a);\n path.closePath();\n return path;\n}\nexport const Violin = (options, context) => {\n const { coordinate, document } = context;\n return (points, value, defaults) => {\n const { color, transform } = value;\n // TODO: how to setting it by size channel.\n const size = 4;\n const { color: defaultColor, fill = defaultColor, stroke = defaultColor } = defaults, rest = __rest(defaults, [\"color\", \"fill\", \"stroke\"]);\n const path = getPath(points, coordinate, size);\n return select(document.createElement('path', {}))\n .call(applyStyle, rest)\n .style('d', path.toString())\n .style('stroke', stroke)\n .style('fill', color || fill)\n .style('transform', transform)\n .call(applyStyle, options)\n .node();\n };\n};\nViolin.props = {\n defaultMarker: 'point',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=violin.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { arc, line } from 'd3-shape';\nimport { isPolar } from '../../utils/coordinate';\nimport { select } from '../../utils/selection';\nimport { dist } from '../../utils/vector';\nimport { subObject } from '../../utils/helper';\nimport { applyStyle } from '../utils';\nfunction getArrowMarker(document, arrowSize, arrowStyle) {\n const arrowMarker = document.createElement('path', {\n style: Object.assign({ path: `M ${arrowSize},${arrowSize} L -${arrowSize},0 L ${arrowSize},-${arrowSize} L 0,0 Z`, anchor: '0.5 0.5', transformOrigin: 'center' }, arrowStyle),\n });\n return arrowMarker;\n}\nfunction getPath(points, coordinate) {\n if (!isPolar(coordinate))\n return line()\n .x((d) => d[0])\n .y((d) => d[1])(points);\n const center = coordinate.getCenter();\n return arc()({\n startAngle: 0,\n endAngle: Math.PI * 2,\n outerRadius: dist(points[0], center),\n innerRadius: dist(points[1], center),\n });\n}\nfunction getTransform(coordinate, transform) {\n if (!isPolar(coordinate))\n return transform;\n const [cx, cy] = coordinate.getCenter();\n return `translate(${cx}, ${cy}) ${transform || ''}`;\n}\nexport const Line = (options, context) => {\n const { arrow, arrowSize = 4 } = options, style = __rest(options, [\"arrow\", \"arrowSize\"]);\n const { coordinate, document } = context;\n return (points, value, defaults) => {\n const { color: defaultColor, lineWidth } = defaults, shapeTheme = __rest(defaults, [\"color\", \"lineWidth\"]);\n const { color = defaultColor, size = lineWidth } = value;\n const arrowMarker = arrow\n ? getArrowMarker(document, arrowSize, Object.assign({ fill: style.stroke || color, stroke: style.stroke || color }, subObject(style, 'arrow')))\n : null;\n const path = getPath(points, coordinate);\n const transform = getTransform(coordinate, value.transform);\n return select(document.createElement('path', {}))\n .call(applyStyle, shapeTheme)\n .style('d', path)\n .style('stroke', color)\n .style('lineWidth', size)\n .style('transform', transform)\n .style('markerEnd', arrowMarker)\n .call(applyStyle, style)\n .node();\n };\n};\nLine.props = {\n defaultMarker: 'line',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=line.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Path } from '@antv/g';\nimport { Marker } from '@antv/component';\nimport { line as d3line } from 'd3-shape';\nimport { isTranspose } from '../../utils/coordinate';\nimport { subObject } from '../../utils/helper';\nimport { select } from '../../utils/selection';\nimport { applyStyle } from '../utils';\nfunction inferSymbol(x, y, r) {\n return [['M', x, y], ['L', x + 2 * r, y - r], ['L', x + 2 * r, y + r], ['Z']];\n}\n/**\n * @todo support polar later.\n */\nfunction inferConnectorPath(points) {\n return d3line()\n .x((d) => d[0])\n .y((d) => d[1])(points);\n}\nfunction getPoints(coordinate, points, offset1, offset2, length1 = 0) {\n const [[x0, y0], [x1, y1]] = points;\n if (isTranspose(coordinate)) {\n const X0 = x0 + offset1;\n const X1 = x1 + offset2;\n const X = X0 + length1;\n return [\n [X0, y0],\n [X, y0],\n [X, y1],\n [X1, y1],\n ];\n }\n const Y0 = y0 - offset1;\n const Y1 = y1 - offset2;\n const Y = Y0 - length1;\n return [\n [x0, Y0],\n [x0, Y],\n [x1, Y],\n [x1, Y1],\n ];\n}\nexport const Connector = (options, context) => {\n const { offset = 0, offset1 = offset, offset2 = offset, connectLength1: length1, endMarker = true } = options, style = __rest(options, [\"offset\", \"offset1\", \"offset2\", \"connectLength1\", \"endMarker\"]);\n const { coordinate } = context;\n return (points, value, defaults) => {\n const { color: defaultColor, connectLength1 } = defaults, rest = __rest(defaults, [\"color\", \"connectLength1\"]);\n const { color, transform } = value;\n const P = getPoints(coordinate, points, offset1, offset2, length1 !== null && length1 !== void 0 ? length1 : connectLength1);\n const makerStyle = subObject(Object.assign(Object.assign({}, style), defaults), 'endMarker');\n return select(new Path())\n .call(applyStyle, rest)\n .style('path', inferConnectorPath(P))\n .style('stroke', color || defaultColor)\n .style('transform', transform)\n .style('markerEnd', endMarker\n ? new Marker({\n className: 'marker',\n style: Object.assign(Object.assign({}, makerStyle), { symbol: inferSymbol }),\n })\n : null)\n .call(applyStyle, style)\n .node();\n };\n};\nConnector.props = {\n defaultMarker: 'line',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=connector.js.map","/**\n * camelCase('foo-bar');\n * // => 'fooBar'\n * @param s\n */\nexport function camelCase(s) {\n return s.replace(/-(\\w)/g, function (_, letter) {\n return letter.toUpperCase();\n });\n}\n/**\n * kebabCase('fooBar');\n * // => 'foo-bar'\n * @param s\n */\nexport function kebabCase(s) {\n return s.replace(/([A-Z])/g, '-$1').toLowerCase();\n}\n//# sourceMappingURL=string.js.map","import { maxIndex } from 'd3-array';\nimport { sub, angle } from '../../../utils/vector';\n/**\n * Only for Area label.\n */\nexport function area(position, points, value, coordinate) {\n const l = points.length / 2;\n const Y1 = points.slice(0, l);\n const Y0 = points.slice(l);\n // Get the maximal space for label.\n let idx = maxIndex(Y1, (p, i) => Math.abs(p[1] - Y0[i][1]));\n // Do not show label at first and last.\n idx = Math.max(Math.min(idx, l - 2), 1);\n const mid = (i) => [Y1[i][0], (Y1[i][1] + Y0[i][1]) / 2];\n const point = mid(idx);\n const prev = mid(idx - 1);\n const next = mid(idx + 1);\n // todo: G rotate only support deg.\n const rotate = (angle(sub(next, prev)) / Math.PI) * 180;\n return {\n x: point[0],\n y: point[1],\n transform: `rotate(${rotate})`,\n textAlign: 'center',\n textBaseline: 'middle',\n };\n}\n//# sourceMappingURL=area.js.map","import { getArcObject } from '../../../shape/utils';\nimport { isCircular, isRadial } from '../../../utils/coordinate';\nimport { maybePercentage } from '../../../utils/helper';\nimport { mid } from '../../../utils/vector';\nexport function inferNonCircularStyle(position, points, value, coordinate) {\n const { bounds } = value;\n const [[x0, y0], [x1, y1]] = bounds;\n const w = x1 - x0;\n const h = y1 - y0;\n const xy = (options) => {\n const { x: ox, y: oy } = options;\n const px = maybePercentage(value.x, w);\n const py = maybePercentage(value.y, h);\n return Object.assign(Object.assign({}, options), { x: (px || ox) + x0, y: (py || oy) + y0 });\n };\n // 4 direction.\n if (position === 'left')\n return xy({ x: 0, y: h / 2, textAnchor: 'start', textBaseline: 'middle' });\n if (position === 'right')\n return xy({ x: w, y: h / 2, textAnchor: 'end', textBaseline: 'middle' });\n if (position === 'top')\n return xy({ x: w / 2, y: 0, textAnchor: 'center', textBaseline: 'top' });\n if (position === 'bottom')\n return xy({ x: w / 2, y: h, textAnchor: 'center', textBaseline: 'bottom' });\n // 4 corner position.\n if (position === 'top-left')\n return xy({ x: 0, y: 0, textAnchor: 'start', textBaseline: 'top' });\n if (position === 'top-right')\n return xy({ x: w, y: 0, textAnchor: 'end', textBaseline: 'top' });\n if (position === 'bottom-left')\n return xy({ x: 0, y: h, textAnchor: 'start', textBaseline: 'bottom' });\n if (position === 'bottom-right')\n return xy({ x: w, y: h, textAnchor: 'end', textBaseline: 'bottom' });\n // default return 'inside'\n return xy({\n x: w / 2,\n y: h / 2,\n textAnchor: 'center',\n textBaseline: 'middle',\n });\n}\nexport function inferRadialStyle(position, points, value, coordinate) {\n const { y, y1, autoRotate, rotateToAlignArc } = value;\n const center = coordinate.getCenter();\n const arcObject = getArcObject(coordinate, points, [y, y1]);\n const { innerRadius, outerRadius, startAngle, endAngle } = arcObject;\n const angle = position === 'inside' ? (startAngle + endAngle) / 2 : endAngle;\n const rotate = inferRotation(angle, autoRotate, rotateToAlignArc);\n const point = (() => {\n const [p0, p1] = points;\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const [x, y] = position === 'inside' ? pointOfArc(center, angle, radius) : mid(p0, p1);\n return { x, y };\n })();\n return Object.assign(Object.assign({}, point), { textAlign: position === 'inside' ? 'center' : 'start', textBaseline: 'middle', rotate });\n}\nexport function pointOfArc(center, angle, radius) {\n return [\n center[0] + Math.sin(angle) * radius,\n center[1] - Math.cos(angle) * radius,\n ];\n}\nexport function inferRotation(angle, autoRotate, rotateToAlignArc) {\n if (!autoRotate)\n return 0;\n const append = rotateToAlignArc ? 0 : Math.sin(angle) < 0 ? 90 : -90;\n return (angle / Math.PI) * 180 + append;\n}\nfunction inferInnerCircularStyle(position, points, value, coordinate) {\n const { y, y1, autoRotate, rotateToAlignArc, radius: radiusRatio = 0.5, offset = 0, } = value;\n const arcObject = getArcObject(coordinate, points, [y, y1]);\n const { startAngle, endAngle } = arcObject;\n const center = coordinate.getCenter();\n const angle = (startAngle + endAngle) / 2;\n const rotate = inferRotation(angle, autoRotate, rotateToAlignArc);\n const textStyle = { textAlign: 'center', textBaseline: 'middle', rotate };\n const { innerRadius, outerRadius } = arcObject;\n const r0 = innerRadius + (outerRadius - innerRadius) * radiusRatio;\n const r1 = r0 + offset;\n const [x0, y0] = pointOfArc(center, angle, r1);\n return Object.assign({ x: x0, y: y0 }, textStyle);\n}\n// Set to null will not be set with default value as below.\n// const { x = 0 } = options;\nfunction maybeUndefined(d) {\n return d === undefined ? null : d;\n}\nexport function inferIdentityStyle(position, points, value, coordinate) {\n const { bounds } = value;\n const [p] = bounds;\n return {\n x: maybeUndefined(p[0]),\n y: maybeUndefined(p[1]),\n };\n}\nexport function getDefaultStyle(position, points, value, coordinate) {\n const { bounds } = value;\n // When bounds.length = 1\n // For series mark, such as line and area.\n // The bounds for text is defined with only one point.\n // Use this point as the label position.\n if (bounds.length === 1) {\n return inferIdentityStyle(position, points, value, coordinate);\n }\n const inferDefaultStyle = isRadial(coordinate)\n ? inferRadialStyle\n : isCircular(coordinate)\n ? inferInnerCircularStyle\n : inferNonCircularStyle;\n return inferDefaultStyle(position, points, value, coordinate);\n}\n//# sourceMappingURL=default.js.map","import { getArcObject } from '../../../shape/utils';\nimport { isCircular, isRadial } from '../../../utils/coordinate';\nimport { pointOfArc, inferRotation, inferIdentityStyle, inferRadialStyle, inferNonCircularStyle, } from './default';\nexport function linePoints(center, angle, radius, radius1, offsetX) {\n const [x0, y0] = pointOfArc(center, angle, radius);\n const [x1, y1] = pointOfArc(center, angle, radius1);\n const sign = Math.sin(angle) > 0 ? 1 : -1;\n return [\n [x0, y0],\n [x1, y1],\n [x1 + sign * offsetX, y1],\n ];\n}\nexport function radiusOf(points, value, coordinate) {\n const arcObject = getArcObject(coordinate, points, [value.y, value.y1]);\n const { innerRadius, outerRadius } = arcObject;\n return innerRadius + (outerRadius - innerRadius);\n}\nexport function angleOf(points, value, coordinate) {\n const arcObject = getArcObject(coordinate, points, [value.y, value.y1]);\n const { startAngle, endAngle } = arcObject;\n return (startAngle + endAngle) / 2;\n}\nexport function inferOutsideCircularStyle(position, points, value, coordinate) {\n const { autoRotate, rotateToAlignArc, offset = 0, connector = true, connectorLength = offset, connectorLength2 = 0, connectorDistance = 0, } = value;\n const center = coordinate.getCenter();\n const angle = angleOf(points, value, coordinate);\n const sign = Math.sin(angle) > 0 ? 1 : -1;\n const rotate = inferRotation(angle, autoRotate, rotateToAlignArc);\n const textStyle = {\n textAlign: sign > 0 || isRadial(coordinate) ? 'start' : 'end',\n textBaseline: 'middle',\n rotate,\n };\n const radius = radiusOf(points, value, coordinate);\n const radius1 = radius + (connector ? connectorLength : offset);\n const [[x0, y0], [x1, y1], [x2, y2]] = linePoints(center, angle, radius, radius1, connector ? connectorLength2 : 0);\n const dx = connector ? +connectorDistance * sign : 0;\n const x = x2 + dx;\n const y = y2;\n const connectorStyle = {\n connector,\n connectorPoints: [\n [x1 - x, y1 - y],\n [x2 - x, y2 - y],\n ],\n };\n return Object.assign(Object.assign({ x0,\n y0, x: x2 + dx, y: y2 }, textStyle), connectorStyle);\n}\nexport function outside(position, points, value, coordinate) {\n const { bounds } = value;\n // When bounds.length = 1\n // For series mark, such as line and area.\n // The bounds for text is defined with only one point.\n // Use this point as the label position.\n if (bounds.length === 1) {\n return inferIdentityStyle(position, points, value, coordinate);\n }\n const inferDefaultStyle = isRadial(coordinate)\n ? inferRadialStyle\n : isCircular(coordinate)\n ? inferOutsideCircularStyle\n : inferNonCircularStyle;\n return inferDefaultStyle(position, points, value, coordinate);\n}\n//# sourceMappingURL=outside.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { isCircular } from '../../../utils/coordinate';\nimport { inferOutsideCircularStyle, radiusOf, angleOf } from './outside';\n/**\n * Spider label transform only suitable for the labels in polar coordinate, labels should distinguish coordinate type.\n */\nexport function spider(position, points, value, coordinate) {\n if (!isCircular(coordinate))\n return {};\n const { connectorLength, connectorLength2, connectorDistance } = value;\n const style = __rest(inferOutsideCircularStyle('outside', points, value, coordinate), []);\n const center = coordinate.getCenter();\n const radius = radiusOf(points, value, coordinate);\n const angle = angleOf(points, value, coordinate);\n const radius1 = radius + connectorLength + connectorLength2;\n const sign = Math.sin(angle) > 0 ? 1 : -1;\n const newX = center[0] + (radius1 + +connectorDistance) * sign;\n const { x: originX } = style;\n const dx = newX - originX;\n style.x += dx;\n style.connectorPoints[0][0] -= dx;\n return style;\n}\n//# sourceMappingURL=spider.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { getRadius, isCircular } from '../../../utils/coordinate';\nimport { angleWithQuadrant } from '../../../utils/vector';\nimport { pointOfArc } from './default';\nimport { inferOutsideCircularStyle } from './outside';\n/**\n * Surround label transform is used to make labels surround circular.\n */\nexport function surround(position, points, value, coordinate) {\n if (!isCircular(coordinate))\n return {};\n const { connectorLength, connectorLength2, connectorDistance } = value;\n const style = __rest(inferOutsideCircularStyle('outside', points, value, coordinate), []);\n const { x0, y0 } = style;\n const center = coordinate.getCenter();\n const radius = getRadius(coordinate);\n const radius1 = radius + connectorLength;\n const angle = angleWithQuadrant([x0 - center[0], y0 - center[1]]);\n const sign = Math.sin(angle) > 0 ? 1 : -1;\n const [newX, newY] = pointOfArc(center, angle, radius1);\n style.x = newX + (connectorLength2 + connectorDistance) * sign;\n style.y = newY;\n return style;\n}\n//# sourceMappingURL=surround.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { select } from '../../utils/selection';\nimport { applyStyle } from '../../shape/utils';\nimport { isTranspose, isCircular } from '../../utils/coordinate';\nimport { camelCase } from '../../utils/string';\nimport { Advance } from '../text/advance';\nimport * as PositionProcessor from './position';\nfunction inferPosition(position, coordinate) {\n if (position !== undefined)\n return position;\n if (isCircular(coordinate))\n return 'inside';\n if (isTranspose(coordinate))\n return 'right';\n return 'top';\n}\nfunction getDefaultStyle(points, value, coordinate, theme, options) {\n // For non-series mark, calc position for label based on\n // position and the bounds of shape.\n const { position } = value;\n const { render } = options;\n const p = inferPosition(position, coordinate);\n const labelType = render\n ? 'htmlLabel'\n : p === 'inside'\n ? 'innerLabel'\n : 'label';\n const t = theme[labelType];\n const v = Object.assign({}, t, value);\n const processor = PositionProcessor[camelCase(p)];\n if (!processor) {\n throw new Error(`Unknown position: ${p}`);\n }\n return Object.assign(Object.assign({}, t), processor(p, points, v, coordinate, options));\n}\n/**\n * Render normal label for each mark.\n * @todo Support position option: middle...\n */\nexport const Label = (options, context) => {\n const { coordinate, theme } = context;\n const { render } = options;\n return (points, value) => {\n const { text, x, y, transform: specifiedTS = '', transformOrigin, className = '' } = value, overrideStyle = __rest(value, [\"text\", \"x\", \"y\", \"transform\", \"transformOrigin\", \"className\"]);\n const _a = getDefaultStyle(points, value, coordinate, theme, options), { rotate = 0, transform = '' } = _a, defaultStyle = __rest(_a, [\"rotate\", \"transform\"]);\n return select(new Advance())\n .call(applyStyle, defaultStyle)\n .style('text', `${text}`)\n .style('className', `${className} g2-label`)\n .style('innerHTML', render ? render(text, value.datum, value.index) : undefined)\n .style('labelTransform', `${transform} rotate(${+rotate}) ${specifiedTS}`.trim())\n .style('labelTransformOrigin', transformOrigin)\n .style('coordCenter', coordinate.getCenter())\n .call(applyStyle, overrideStyle)\n .node();\n };\n};\nLabel.props = {\n defaultMarker: 'point',\n};\n//# sourceMappingURL=label.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { applyStyle } from '../utils';\nimport { select } from '../../utils/selection';\n/**\n * Draw a filled or hollow path.\n */\nexport const Color = (options, context) => {\n const { arrow, colorAttribute } = options, style = __rest(options, [\"arrow\", \"colorAttribute\"]);\n const { coordinate, document } = context;\n return (points, value, defaults) => {\n const { color: defaultColor, stroke } = defaults, rest = __rest(defaults, [\"color\", \"stroke\"]);\n const { d, color = defaultColor } = value;\n const [width, height] = coordinate.getSize();\n return (select(document.createElement('path', {}))\n .call(applyStyle, rest)\n // Path support string, function with parameter { width, height }.\n .style('d', typeof d === 'function' ? d({ width, height }) : d)\n .style(colorAttribute, color)\n .call(applyStyle, style)\n .node());\n };\n};\nColor.props = {\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=color.js.map","import { Color } from './color';\n/**\n * A filled path.\n */\nexport const Path = (options, context) => {\n return Color(Object.assign({ colorAttribute: 'fill' }, options), context);\n};\nPath.props = {\n defaultMarker: 'hvh',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=path.js.map","import { Color } from './color';\n/**\n * A hollow path.\n */\nexport const Hollow = (options, context) => {\n return Color(Object.assign({ fill: 'none', colorAttribute: 'stroke' }, options), context);\n};\nHollow.props = {\n defaultMarker: 'hvh',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=hollow.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { path as d3path } from 'd3-path';\nimport { applyStyle } from '../utils';\nimport { select } from '../../utils/selection';\n/**\n * Draw density shape.\n */\nexport const Density = (options, context) => {\n const { document } = context;\n return (points, value, defaults) => {\n const { transform } = value;\n const { color: defaultColor } = defaults, rest = __rest(defaults, [\"color\"]);\n const { color = defaultColor } = value;\n const [first, ...p] = points;\n // todo smooth, hollow\n const path = d3path();\n path.moveTo(...first);\n p.forEach(([x, y]) => {\n path.lineTo(x, y);\n });\n path.closePath();\n return select(document.createElement('path', {}))\n .call(applyStyle, rest)\n .style('d', path.toString())\n .style('stroke', color || defaultColor) // Always has stroke color.\n .style('fill', color || defaultColor)\n .style('fillOpacity', 0.4)\n .style('transform', transform)\n .call(applyStyle, options)\n .node();\n };\n};\nDensity.props = {\n defaultMarker: 'square',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=density.js.map","export default function (max) {\n\tvar num, curr, prev;\n\tvar limit = max || 1;\n\n\tfunction keep(key, value) {\n\t\tif (++num > limit) {\n\t\t\tprev = curr;\n\t\t\treset(1);\n\t\t\t++num;\n\t\t}\n\t\tcurr[key] = value;\n\t}\n\n\tfunction reset(isPartial) {\n\t\tnum = 0;\n\t\tcurr = Object.create(null);\n\t\tisPartial || (prev=Object.create(null));\n\t}\n\n\treset();\n\n\treturn {\n\t\tclear: reset,\n\t\thas: function (key) {\n\t\t\treturn curr[key] !== void 0 || prev[key] !== void 0;\n\t\t},\n\t\tget: function (key) {\n\t\t\tvar val = curr[key];\n\t\t\tif (val !== void 0) return val;\n\t\t\tif ((val=prev[key]) !== void 0) {\n\t\t\t\tkeep(key, val);\n\t\t\t\treturn val;\n\t\t\t}\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (curr[key] !== void 0) {\n\t\t\t\tcurr[key] = value;\n\t\t\t} else {\n\t\t\t\tkeep(key, value);\n\t\t\t}\n\t\t}\n\t};\n}\n","import flru from 'flru';\nconst cache = flru(3);\n/**\n * A decorator to return new function with LRU cache.\n */\nexport function lru(fn, keyFn = (...args) => `${args[0]}`, maxSize = 16) {\n const cache = flru(maxSize);\n return (...args) => {\n const key = keyFn(...args);\n let v = cache.get(key);\n if (cache.has(key))\n return cache.get(key);\n v = fn(...args);\n cache.set(key, v);\n return v;\n };\n}\n//# sourceMappingURL=lru.js.map","/**\n * Parse heatmap gradient.\n */\nexport function parseGradient(gradient) {\n if (typeof gradient === 'string') {\n return gradient.split(' ').map((stop) => {\n const [r, c] = stop.split(':');\n return [+r, c];\n });\n }\n return gradient;\n}\n//# sourceMappingURL=gradient.js.map","import { lru } from '../../../utils/lru';\nimport { parseGradient } from './gradient';\nfunction newCanvas(createCanvas, width, height) {\n const c = createCanvas ? createCanvas() : document.createElement('canvas');\n c.width = width;\n c.height = height;\n return c;\n}\n/**\n * Get a point with template.\n * @param radius\n * @param blurFactor\n * @returns\n */\nconst getPointTemplate = lru((radius, blurFactor, createCanvas) => {\n const tplCanvas = newCanvas(createCanvas, radius * 2, radius * 2);\n const tplCtx = tplCanvas.getContext('2d');\n const x = radius;\n const y = radius;\n if (blurFactor === 1) {\n tplCtx.beginPath();\n tplCtx.arc(x, y, radius, 0, 2 * Math.PI, false);\n tplCtx.fillStyle = 'rgba(0,0,0,1)';\n tplCtx.fill();\n }\n else {\n const gradient = tplCtx.createRadialGradient(x, y, radius * blurFactor, x, y, radius);\n gradient.addColorStop(0, 'rgba(0,0,0,1)');\n gradient.addColorStop(1, 'rgba(0,0,0,0)');\n tplCtx.fillStyle = gradient;\n tplCtx.fillRect(0, 0, 2 * radius, 2 * radius);\n }\n return tplCanvas;\n}, (radius) => `${radius}`);\n/**\n * Get a color palette with len = 256 base on gradient.\n * @param gradientConfig\n * @returns\n */\nfunction getColorPalette(gradientConfig, createCanvas) {\n const paletteCanvas = newCanvas(createCanvas, 256, 1);\n const paletteCtx = paletteCanvas.getContext('2d');\n const gradient = paletteCtx.createLinearGradient(0, 0, 256, 1);\n parseGradient(gradientConfig).forEach(([r, c]) => {\n gradient.addColorStop(r, c);\n });\n paletteCtx.fillStyle = gradient;\n paletteCtx.fillRect(0, 0, 256, 1);\n return paletteCtx.getImageData(0, 0, 256, 1).data;\n}\n/**\n * Draw all circle with alpha.\n */\nfunction drawAlpha(shadowCtx, min, max, data, options, createCanvas) {\n const { blur } = options;\n let len = data.length;\n while (len--) {\n const { x, y, value: v, radius } = data[len];\n // Ff value is bigger than max, use max as value.\n const value = Math.min(v, max);\n const rectX = x - radius;\n const rectY = y - radius;\n const tpl = getPointTemplate(radius, 1 - blur, createCanvas);\n // Value from minimum / value range, => [0, 1].\n const templateAlpha = (value - min) / (max - min);\n // Small values are not visible because globalAlpha < .001 cannot be read from imageData.\n shadowCtx.globalAlpha = Math.max(templateAlpha, 0.001);\n shadowCtx.drawImage(tpl, rectX, rectY);\n }\n return shadowCtx;\n}\nfunction colorize(shadowCtx, maxWidth, maxHeight, palette, options) {\n const { minOpacity, opacity, maxOpacity, useGradientOpacity } = options;\n const x = 0;\n const y = 0;\n const width = maxWidth;\n const height = maxHeight;\n const img = shadowCtx.getImageData(x, y, width, height);\n const imgData = img.data;\n const len = imgData.length;\n for (let i = 3; i < len; i += 4) {\n const alpha = imgData[i];\n const offset = alpha * 4;\n if (!offset) {\n continue;\n }\n // Should be in [min, max], min >= 0.\n const finalAlpha = opacity || Math.max(0, Math.min(maxOpacity, Math.max(minOpacity, alpha)));\n // Update rgba.\n imgData[i - 3] = palette[offset];\n imgData[i - 2] = palette[offset + 1];\n imgData[i - 1] = palette[offset + 2];\n imgData[i] = useGradientOpacity ? palette[offset + 3] : finalAlpha;\n }\n return img;\n}\n/**\n * Render a heatmap with canvas.\n * See [heatmap.js](https://github.com/pa7/heatmap.js/blob/master/src/renderer/canvas2d.js).\n */\nexport function HeatmapRenderer(width, height, min, max, data, options, createCanvas) {\n const opts = Object.assign({ blur: 0.85, minOpacity: 0, opacity: 0.6, maxOpacity: 1, gradient: [\n [0.25, 'rgb(0,0,255)'],\n [0.55, 'rgb(0,255,0)'],\n [0.85, 'yellow'],\n [1.0, 'rgb(255,0,0)'],\n ] }, options);\n opts.minOpacity *= 255;\n opts.opacity *= 255;\n opts.maxOpacity *= 255;\n const shadowCanvas = newCanvas(createCanvas, width, height);\n const shadowCtx = shadowCanvas.getContext('2d');\n const palette = getColorPalette(opts.gradient, createCanvas);\n shadowCtx.clearRect(0, 0, width, height);\n drawAlpha(shadowCtx, min, max, data, opts, createCanvas);\n const img = colorize(shadowCtx, width, height, palette, opts);\n const canvas = newCanvas(createCanvas, width, height);\n const ctx = canvas.getContext('2d');\n ctx.putImageData(img, 0, 0);\n return ctx;\n}\n//# sourceMappingURL=index.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { max as d3max, min as d3min } from 'd3-array';\nimport { applyStyle } from '../utils';\nimport { select } from '../../utils/selection';\nimport { HeatmapRenderer } from './renderer';\nfunction deleteKey(obj, fn) {\n return Object.keys(obj).reduce((r, k) => {\n const v = obj[k];\n if (!fn(v, k))\n r[k] = v;\n return r;\n }, {});\n}\nexport const Heatmap = (options, context) => {\n const { gradient, opacity, maxOpacity, minOpacity, blur, useGradientOpacity } = options, style = __rest(options, [\"gradient\", \"opacity\", \"maxOpacity\", \"minOpacity\", \"blur\", \"useGradientOpacity\"]);\n const { coordinate, createCanvas, document } = context;\n return (points, value, defaults) => {\n const { transform } = value;\n const [width, height] = coordinate.getSize();\n const data = points.map((p) => ({\n x: p[0],\n y: p[1],\n value: p[2],\n radius: p[3],\n }));\n const min = d3min(points, (p) => p[2]);\n const max = d3max(points, (p) => p[2]);\n const options = {\n gradient,\n opacity,\n minOpacity,\n maxOpacity,\n blur,\n useGradientOpacity,\n };\n const ctx = width && height\n ? HeatmapRenderer(width, height, min, max, data, deleteKey(options, (v) => v === undefined), createCanvas)\n : { canvas: null };\n return select(document.createElement('image', {}))\n .call(applyStyle, defaults)\n .style('x', 0)\n .style('y', 0)\n .style('width', width)\n .style('height', height)\n .style('src', ctx.canvas)\n .style('transform', transform)\n .call(applyStyle, style)\n .node();\n };\n};\nHeatmap.props = {\n defaultMarker: 'point',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=heatmap.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n/**\n * Draw a custom shape.\n */\nexport const Shape = (options, context) => {\n const { render } = options, rest = __rest(options, [\"render\"]);\n return (points) => {\n const [[x0, y0]] = points;\n return render(Object.assign(Object.assign({}, rest), { x: x0, y: y0 }), context);\n };\n};\nShape.props = {\n defaultMarker: 'point',\n defaultEnterAnimation: 'fadeIn',\n defaultUpdateAnimation: 'morphing',\n defaultExitAnimation: 'fadeOut',\n};\n//# sourceMappingURL=shape.js.map","const DURATION = 5000;\n/**\n * A function of linear mapping.\n * @param min\n * @param max\n * @param factor\n */\nfunction lerp(min, max, factor) {\n return min + (max - min) * factor;\n}\n/**\n * Using Bessel curve to simulate sine wave.\n * Using Bezier curves to fit sine wave.\n * There is 4 control points for each curve of wave,\n * which is at 1/4 wave length of the sine wave.\n *\n * The control points for a wave from (a) to (d) are a-b-c-d:\n * c *----* d\n * b *\n * |\n * ... a * ..................\n *\n * Whose positions are a: (0, 0), b: (0.5, 0.5), c: (1, 1), d: (PI / 2, 1).\n *\n * @param x x position of the left-most point (a).\n * @param stage 0-3, stating which part of the wave it is.\n * @param waveLength wave length of the sine wave.\n * @param amplitude wave amplitude.\n * @return Sinusoidal segment curve.\n */\nfunction getWaterWavePositions(x, stage, waveLength, amplitude) {\n if (stage === 0) {\n return [\n [x + ((1 / 2) * waveLength) / Math.PI / 2, amplitude / 2],\n [x + ((1 / 2) * waveLength) / Math.PI, amplitude],\n [x + waveLength / 4, amplitude],\n ];\n }\n if (stage === 1) {\n return [\n [x + (((1 / 2) * waveLength) / Math.PI / 2) * (Math.PI - 2), amplitude],\n [\n x + (((1 / 2) * waveLength) / Math.PI / 2) * (Math.PI - 1),\n amplitude / 2,\n ],\n [x + waveLength / 4, 0],\n ];\n }\n if (stage === 2) {\n return [\n [x + ((1 / 2) * waveLength) / Math.PI / 2, -amplitude / 2],\n [x + ((1 / 2) * waveLength) / Math.PI, -amplitude],\n [x + waveLength / 4, -amplitude],\n ];\n }\n return [\n [x + (((1 / 2) * waveLength) / Math.PI / 2) * (Math.PI - 2), -amplitude],\n [\n x + (((1 / 2) * waveLength) / Math.PI / 2) * (Math.PI - 1),\n -amplitude / 2,\n ],\n [x + waveLength / 4, 0],\n ];\n}\n/**\n * Get wave path.\n * @param radius\n * @param waterLevel water level\n * @param waveLength wave length\n * @param phase\n * @param amplitude\n * @param cx center x\n * @param cy center y\n * @return path path\n */\nfunction getWaterWavePath(radius, waterLevel, waveLength, phase, amplitude, cx, cy) {\n const curves = Math.ceil(((2 * radius) / waveLength) * 4) * 4;\n const path = [];\n let _phase = phase;\n // Map phase to [-Math.PI * 2, 0].\n while (_phase < -Math.PI * 2) {\n _phase += Math.PI * 2;\n }\n while (_phase > 0) {\n _phase -= Math.PI * 2;\n }\n _phase = (_phase / Math.PI / 2) * waveLength;\n const left = cx - radius + _phase - radius * 2;\n /**\n * Top-left corner as start point.\n *\n * Draws this point.\n * |\n * \\|/\n * ~~~~~~~~\n * | |\n * +------+\n */\n path.push(['M', left, waterLevel]);\n /**\n * Top wave.\n *\n * ~~~~~~~~ <- Draws this sine wave.\n * | |\n * +------+\n */\n let waveRight = 0;\n for (let c = 0; c < curves; ++c) {\n const stage = c % 4;\n const pos = getWaterWavePositions((c * waveLength) / 4, stage, waveLength, amplitude);\n path.push([\n 'C',\n pos[0][0] + left,\n -pos[0][1] + waterLevel,\n pos[1][0] + left,\n -pos[1][1] + waterLevel,\n pos[2][0] + left,\n -pos[2][1] + waterLevel,\n ]);\n if (c === curves - 1) {\n waveRight = pos[2][0];\n }\n }\n /**\n * Top-right corner.\n *\n * ~~~~~~~~\n * 3. Draws this line. -> | | <- 1. Draws this line.\n * +------+\n * ^\n * |\n * 2. Draws this line.\n */\n path.push(['L', waveRight + left, cy + radius]);\n path.push(['L', left, cy + radius]);\n path.push(['Z']);\n return path;\n}\n/**\n * Add wave.\n * @param x center x\n * @param y center y\n * @param level wave level 0~1\n * @param waveCount wave count\n * @param waveAttrs style\n * @param group g\n * @param minY Minimum height\n * @param radius radius\n * @param waveLength wave length\n * @param animation animation config\n * @param document\n */\nexport function addWave(x, y, level, waveCount, waveAttrs, group, minY, radius, waveLength, animation, document) {\n // Box property Color width height.\n const { fill, fillOpacity, opacity } = waveAttrs;\n // Number of cyclic waveCount.\n for (let idx = 0; idx < waveCount; idx++) {\n const factor = waveCount <= 1 ? 1 : idx / (waveCount - 1);\n const path = getWaterWavePath(radius, minY + radius * level, waveLength, 0, \n // Amplitude height.\n radius / 40, x, y);\n // Create wave path.\n const wave = document.createElement('path', {\n style: {\n path,\n fill,\n opacity: lerp(0.2, 0.9, factor) * Number(opacity || fillOpacity),\n },\n });\n group.appendChild(wave);\n try {\n if (animation === false)\n return;\n const keyframes = [\n {\n transform: 'translate(0, 0)',\n },\n {\n transform: `translate(${waveLength * 2}px, 0)`,\n },\n ];\n wave.animate(keyframes, {\n duration: lerp(0.5 * DURATION, DURATION, factor) * 2,\n iterations: Infinity,\n });\n }\n catch (e) {\n console.warn('off-screen group animate error!');\n }\n }\n}\n//# sourceMappingURL=wave.js.map","/**\n * @param x center x\n * @param y center y\n * @param radius\n */\nfunction circle(x, y, r) {\n return `\n M ${x} ${y - r} \n a ${r} ${r} 0 1 0 0 ${r * 2}\n a ${r} ${r} 0 1 0 0 ${-r * 2}\n Z\n `;\n}\n/**\n * @param x center x\n * @param y center y\n * @param radius\n */\nfunction rect(x, y, r) {\n const GOLDEN_SECTION_RATIO = 0.618;\n const w = r * GOLDEN_SECTION_RATIO;\n return `\n M ${x - w} ${y - r}\n L ${x + w} ${y - r}\n L ${x + w} ${y + r}\n L ${x - w} ${y + r}\n Z\n `;\n}\n/**\n * @param x center x\n * @param y center y\n * @param radius\n */\nfunction diamond(x, y, r) {\n return `\n M ${x} ${y - r}\n L ${x + r} ${y}\n L ${x} ${y + r}\n L ${x - r} ${y}\n Z\n `;\n}\n/**\n * @param x center x\n * @param y center y\n * @param radius\n */\nfunction triangle(x, y, r) {\n return `\n M ${x} ${y - r}\n L ${x + r} ${y + r}\n L ${x - r} ${y + r}\n Z\n `;\n}\n/**\n * @param x center x\n * @param y center y\n * @param radius\n */\nfunction pin(x, y, radius) {\n const w = (radius * 4) / 3;\n const h = Math.max(w, radius * 2);\n const r = w / 2;\n // Attrs of the upper circle.\n const cx = x;\n const cy = r + y - h / 2;\n const theta = Math.asin(r / ((h - r) * 0.85));\n const dy = Math.sin(theta) * r;\n const dx = Math.cos(theta) * r;\n // The start point of the path.\n const x0 = cx - dx;\n const y0 = cy + dy;\n // Control point.\n const cpX = x;\n const cpY = cy + r / Math.sin(theta);\n return `\n M ${x0} ${y0}\n A ${r} ${r} 0 1 1 ${x0 + dx * 2} ${y0}\n Q ${cpX} ${cpY} ${x} ${y + h / 2}\n Q ${cpX} ${cpY} ${x0} ${y0}\n Z \n `;\n}\nexport const LiquidShapesPath = {\n pin,\n rect,\n circle,\n diamond,\n triangle,\n};\n//# sourceMappingURL=shapes.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { isFunction } from '@antv/util';\nimport { addWave } from './wave';\nimport { LiquidShapesPath } from './shapes';\nconst getLiquidShape = (shape = 'circle') => LiquidShapesPath[shape] || LiquidShapesPath.circle;\nexport const Liquid = (options, context) => {\n if (!context)\n return;\n const { coordinate } = context;\n const { liquidOptions, styleOptions } = options;\n const { liquidShape, percent } = liquidOptions;\n const { background: backgroundStyle, outline = {}, wave = {} } = styleOptions, attr = __rest(styleOptions, [\"background\", \"outline\", \"wave\"]);\n const { border = 2, distance = 0 } = outline, outlineStyle = __rest(outline, [\"border\", \"distance\"]);\n const { length = 192, count = 3 } = wave;\n return (points, cfg, defaultAttr) => {\n const { document } = context.canvas;\n const { color, fillOpacity } = defaultAttr;\n const attrs = Object.assign(Object.assign({ fill: color }, defaultAttr), attr);\n const g = document.createElement('g', {});\n // Center x/y.\n const [centerX, centerY] = coordinate.getCenter();\n // [width,height].\n const size = coordinate.getSize();\n const radius = Math.min(...size) / 2;\n // 1、Gets the path of the overall shape.\n const buildPath = isFunction(liquidShape)\n ? liquidShape\n : getLiquidShape(liquidShape);\n const shapePath = buildPath(centerX, centerY, radius, ...size);\n // 2、Background create.\n if (Object.keys(backgroundStyle).length) {\n const backgroundShape = document.createElement('path', {\n style: Object.assign({ path: shapePath, fill: '#fff' }, backgroundStyle),\n });\n g.appendChild(backgroundShape);\n }\n // Percent > 0 Mapping water waves.\n if (percent > 0) {\n // 3. Clip create.\n const clipShape = document.createElement('path', {\n style: {\n path: shapePath,\n },\n });\n g.appendChild(clipShape);\n g.style.clipPath = clipShape;\n // 4. Wave create.\n addWave(centerX, centerY, 1 - percent, count, attrs, g, clipShape.getBBox().y, radius * 2, length, true, document);\n }\n // 5. Draw distance.\n const distanceShape = document.createElement('path', {\n style: {\n path: shapePath,\n fill: 'transparent',\n lineWidth: border + 2 * distance,\n stroke: '#fff',\n },\n });\n // 6. Draw border.\n const borderShape = document.createElement('path', {\n style: Object.assign(Object.assign(Object.assign({ path: shapePath, stroke: color, strokeOpacity: fillOpacity, lineWidth: border }, attrs), outlineStyle), { fill: 'transparent' }),\n });\n g.appendChild(distanceShape);\n g.appendChild(borderShape);\n return g;\n };\n};\nLiquid.props = {};\n//# sourceMappingURL=liquid.js.map","import { MaybeZeroY1, MaybeZeroX } from '../transform';\nimport { IntervalShape, IntervalHollow, IntervalFunnel, IntervalPyramid, } from '../shape';\nimport { baseGeometryChannels, basePostInference, basePreInference, tooltip1d, } from './utils';\nfunction bandWidth(scale, x) {\n return scale.getBandWidth(scale.invert(x));\n}\nconst shape = {\n rect: IntervalShape,\n hollow: IntervalHollow,\n funnel: IntervalFunnel,\n pyramid: IntervalPyramid,\n};\n/**\n * Convert value for each channel to rect shapes.\n * p0 p1\n * ┌────┐\n * │ │\n * │ │\n * p3 └────┘ p2\n */\nexport const Interval = () => {\n return (index, scale, value, coordinate) => {\n const { x: X, y: Y, y1: Y1, series: S, size: SZ } = value;\n // Calc width for each interval.\n // The scales for x and series channels must be band scale.\n const x = scale.x;\n const series = scale.series;\n const [width] = coordinate.getSize();\n const NSZ = SZ ? SZ.map((d) => +d / width) : null;\n const x1x2 = !SZ\n ? (x, w, i) => [x, x + w]\n : (x, w, i) => {\n const mx = x + w / 2;\n const s = NSZ[i];\n return [mx - s / 2, mx + s / 2];\n };\n // Calc the points of bounding box for the interval.\n // They are start from left-top corner in clock wise order.\n const P = Array.from(index, (i) => {\n const groupWidth = bandWidth(x, X[i]);\n const ratio = series ? bandWidth(series, S === null || S === void 0 ? void 0 : S[i]) : 1;\n const width = groupWidth * ratio;\n const offset = (+(S === null || S === void 0 ? void 0 : S[i]) || 0) * groupWidth;\n const x0 = +X[i] + offset;\n const [x1, x2] = x1x2(x0, width, i);\n const y1 = +Y[i];\n const y2 = +Y1[i];\n const p1 = [x1, y1];\n const p2 = [x2, y1];\n const p3 = [x2, y2];\n const p4 = [x1, y2];\n return [p1, p2, p3, p4].map((d) => coordinate.map(d));\n });\n return [index, P];\n };\n};\nInterval.props = {\n defaultShape: 'rect',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', scale: 'band', required: true },\n { name: 'y', required: true },\n { name: 'series', scale: 'band' },\n { name: 'size' },\n ],\n preInference: [\n ...basePreInference(),\n { type: MaybeZeroY1 },\n { type: MaybeZeroX },\n ],\n postInference: [...basePostInference(), ...tooltip1d()],\n interaction: { shareTooltip: true },\n};\n//# sourceMappingURL=interval.js.map","import { RectShape, RectHollow } from '../shape';\nimport { MaybeZeroY1 } from '../transform';\nimport { baseGeometryChannels, basePostInference, basePreInference, tooltip1d, } from './utils';\nconst shape = {\n rect: RectShape,\n hollow: RectHollow,\n};\nexport const Rect = () => {\n return (index, scale, value, coordinate) => {\n const { x: X, x1: X1, y: Y, y1: Y1 } = value;\n const P = Array.from(index, (i) => {\n const p1 = [+X[i], +Y[i]];\n const p2 = [+X1[i], +Y[i]];\n const p3 = [+X1[i], +Y1[i]];\n const p4 = [+X[i], +Y1[i]];\n return [p1, p2, p3, p4].map((d) => coordinate.map(d));\n });\n return [index, P];\n };\n};\nRect.props = {\n defaultShape: 'rect',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n { name: 'y', required: true },\n ],\n preInference: [...basePreInference(), { type: MaybeZeroY1 }],\n postInference: [...basePostInference(), ...tooltip1d()],\n interaction: {\n shareTooltip: true,\n },\n};\n//# sourceMappingURL=rect.js.map","import { group } from 'd3-array';\nimport { isParallel } from '../utils/coordinate';\nimport { LineShape, LineHV, LineVH, LineHVH, LineTrail, LineSmooth, } from '../shape';\nimport { MaybeSeries, MaybeGradient } from '../transform';\nimport { baseGeometryChannels, basePostInference, basePreInference, tooltip1d, tooltipXd, } from './utils';\nconst shape = {\n line: LineShape,\n smooth: LineSmooth,\n hv: LineHV,\n vh: LineVH,\n hvh: LineHVH,\n trail: LineTrail,\n};\nconst line = (index, scale, value, coordinate) => {\n var _a, _b;\n const { series: S, x: X, y: Y } = value;\n const { x, y } = scale;\n // Because x and y channel is not strictly required in Line.props,\n // it should throw error with empty x or y channels.\n if (X === undefined || Y === undefined) {\n throw new Error('Missing encode for x or y channel.');\n }\n // Group data into series.\n // There is only one series without specified series encode.\n const series = S ? Array.from(group(index, (i) => S[i]).values()) : [index];\n const I = series.map((group) => group[0]).filter((i) => i !== undefined);\n // A group of data corresponds to one line.\n const xoffset = (((_a = x === null || x === void 0 ? void 0 : x.getBandWidth) === null || _a === void 0 ? void 0 : _a.call(x)) || 0) / 2;\n const yoffset = (((_b = y === null || y === void 0 ? void 0 : y.getBandWidth) === null || _b === void 0 ? void 0 : _b.call(y)) || 0) / 2;\n const P = Array.from(series, (I) => {\n return I.map((i) => coordinate.map([+X[i] + xoffset, +Y[i] + yoffset]));\n });\n return [I, P, series];\n};\nconst parallel = (index, scale, value, coordinate) => {\n // Extract all value for position[number] channels.\n const PV = Object.entries(value)\n .filter(([key]) => key.startsWith('position'))\n .map(([, value]) => value);\n // Because position channel is not strictly required in Line.props,\n // it should throw error with empty position values.\n if (PV.length === 0) {\n throw new Error('Missing encode for position channel.');\n }\n // One data corresponds to one line.\n const P = Array.from(index, (i) => {\n // Transform high dimension vector to a list of two-dimension vectors.\n // [a, b, c] -> [d, e, f, g, h, i]\n const vector = PV.map((pv) => +pv[i]);\n const vectors = coordinate.map(vector);\n // Two-dimension vectors are stored in a flat array, so extract them.\n // [d, e, f, g, h, i] -> [d, e], [f, g], [h, i]\n const points = [];\n for (let i = 0; i < vectors.length; i += 2) {\n points.push([vectors[i], vectors[i + 1]]);\n }\n return points;\n });\n return [index, P];\n};\n/**\n * Convert value for each channel to line shapes.\n */\nexport const Line = () => {\n return (index, scale, value, coordinate) => {\n const mark = isParallel(coordinate) ? parallel : line;\n return mark(index, scale, value, coordinate);\n };\n};\nLine.props = {\n defaultShape: 'line',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x' },\n { name: 'y' },\n { name: 'position', independent: true },\n { name: 'size' },\n { name: 'series', scale: 'band' },\n ],\n preInference: [\n ...basePreInference(),\n // !!!Note This order is very important.\n { type: MaybeGradient },\n { type: MaybeSeries },\n ],\n postInference: [...basePostInference(), ...tooltip1d(), ...tooltipXd()],\n interaction: {\n shareTooltip: true,\n seriesTooltip: true,\n crosshairs: true,\n },\n};\n//# sourceMappingURL=line.js.map","import { PointBowtie, PointCross, PointDiamond, PointHexagon, PointHollowBowtie, PointHollowDiamond, PointHollowHexagon, PointHollow, PointHollowSquare, PointHollowTriangle, PointHollowTriangleDown, PointHyphen, PointLine, PointTriangleDown, PointPlus, PointSquare, PointShape, PointTick, PointTriangle, } from '../shape';\nimport { MaybeZeroX, MaybeZeroY, MaybeSize } from '../transform';\nimport { baseGeometryChannels, basePostInference, basePreInference, createBandOffset, tooltip2d, } from './utils';\nconst shape = {\n hollow: PointHollow,\n hollowDiamond: PointHollowDiamond,\n hollowHexagon: PointHollowHexagon,\n hollowSquare: PointHollowSquare,\n hollowTriangleDown: PointHollowTriangleDown,\n hollowTriangle: PointHollowTriangle,\n hollowBowtie: PointHollowBowtie,\n point: PointShape,\n plus: PointPlus,\n diamond: PointDiamond,\n square: PointSquare,\n triangle: PointTriangle,\n hexagon: PointHexagon,\n cross: PointCross,\n bowtie: PointBowtie,\n hyphen: PointHyphen,\n line: PointLine,\n tick: PointTick,\n triangleDown: PointTriangleDown,\n};\n/**\n * Convert value for each channel to point shapes.\n * Calc the bbox of each point based on x, y and r.\n * This is for allowing their radius can be affected by coordinate(e.g. fisheye).\n */\nexport const Point = (options) => {\n return (index, scale, value, coordinate) => {\n const { x: X, y: Y, x1: X1, y1: Y1, size: S, dx: DX, dy: DY } = value;\n const [width, height] = coordinate.getSize();\n const offset = createBandOffset(scale, value, options);\n const xy = (i) => {\n const dx = +((DX === null || DX === void 0 ? void 0 : DX[i]) || 0);\n const dy = +((DY === null || DY === void 0 ? void 0 : DY[i]) || 0);\n const x = X1 ? (+X[i] + +X1[i]) / 2 : +X[i];\n const y = Y1 ? (+Y[i] + +Y1[i]) / 2 : +Y[i];\n const cx = x + dx;\n const cy = y + dy;\n return [cx, cy];\n };\n const P = S\n ? Array.from(index, (i) => {\n const [cx, cy] = xy(i);\n const r = +S[i];\n const a = r / width;\n const b = r / height;\n const p1 = [cx - a, cy - b];\n const p2 = [cx + a, cy + b];\n return [\n coordinate.map(offset(p1, i)),\n coordinate.map(offset(p2, i)),\n ];\n })\n : Array.from(index, (i) => [coordinate.map(offset(xy(i), i))]);\n return [index, P];\n };\n};\nPoint.props = {\n defaultShape: 'hollow',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n { name: 'y', required: true },\n { name: 'series', scale: 'band' },\n { name: 'size', quantitative: 'sqrt' },\n { name: 'dx', scale: 'identity' },\n { name: 'dy', scale: 'identity' },\n ],\n preInference: [\n ...basePreInference(),\n { type: MaybeZeroX },\n { type: MaybeZeroY },\n ],\n postInference: [...basePostInference(), { type: MaybeSize }, ...tooltip2d()],\n};\n//# sourceMappingURL=point.js.map","import { TextShape, TextBadge } from '../shape';\nimport { MaybeTuple, MaybeVisualPosition } from '../transform';\nimport { baseGeometryChannels, basePostInference, basePreInference, createBandOffset, tooltip2d, visualMark, } from './utils';\nconst shape = {\n text: TextShape,\n badge: TextBadge,\n};\nexport const Text = (options) => {\n const { cartesian = false } = options;\n if (cartesian)\n return visualMark;\n return ((index, scale, value, coordinate) => {\n const { x: X, y: Y } = value;\n const offset = createBandOffset(scale, value, options);\n const P = Array.from(index, (i) => {\n const p = [+X[i], +Y[i]];\n return [coordinate.map(offset(p, i))];\n });\n return [index, P];\n });\n};\nText.props = {\n defaultShape: 'text',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n { name: 'y', required: true },\n { name: 'text', scale: 'identity' },\n { name: 'fontSize' },\n { name: 'rotate' },\n ],\n preInference: [\n ...basePreInference(),\n { type: MaybeTuple },\n { type: MaybeVisualPosition },\n ],\n postInference: [...basePostInference(), ...tooltip2d()],\n};\n//# sourceMappingURL=text.js.map","import { CellShape, CellHollow } from '../shape';\nimport { MaybeZeroX, MaybeZeroY, MaybeZeroPadding } from '../transform';\nimport { baseGeometryChannels, basePostInference, basePreInference, tooltip2d, } from './utils';\nconst shape = {\n cell: CellShape,\n hollow: CellHollow,\n};\n/**\n * Convert value for each channel to Cell shapes.\n * Calc the bbox of each Cell based on x, y and r.\n * This is for allowing their radius can be affected by coordinate(e.g. fisheye).\n */\nexport const Cell = () => {\n return (index, scale, value, coordinate) => {\n const { x: X, y: Y } = value;\n const x = scale.x;\n const y = scale.y;\n const P = Array.from(index, (i) => {\n const width = x.getBandWidth(x.invert(+X[i]));\n const height = y.getBandWidth(y.invert(+Y[i]));\n const x1 = +X[i];\n const y1 = +Y[i];\n const p1 = [x1, y1];\n const p2 = [x1 + width, y1];\n const p3 = [x1 + width, y1 + height];\n const p4 = [x1, y1 + height];\n return [p1, p2, p3, p4].map((d) => coordinate.map(d));\n });\n return [index, P];\n };\n};\nCell.props = {\n defaultShape: 'cell',\n defaultLabelShape: 'label',\n shape,\n composite: false,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true, scale: 'band' },\n { name: 'y', required: true, scale: 'band' },\n ],\n preInference: [\n ...basePreInference(),\n { type: MaybeZeroX },\n { type: MaybeZeroY },\n { type: MaybeZeroPadding },\n ],\n postInference: [...basePostInference(), ...tooltip2d()],\n};\n//# sourceMappingURL=cell.js.map","import { group } from 'd3-array';\nimport { AreaShape, AreaHV, AreaHVH, AreaSmooth, AreaVH } from '../shape';\nimport { MaybeSeries, MaybeZeroY1, MaybeZeroPadding } from '../transform';\nimport { baseGeometryChannels, basePostInference, basePreInference, tooltip1d, } from './utils';\nconst shape = {\n area: AreaShape,\n smooth: AreaSmooth,\n hvh: AreaHVH,\n vh: AreaVH,\n hv: AreaHV,\n};\n/*\n * Convert value for each channel to area shapes.\n *\n * ▲\n * │\n * │ y2\n * │\n * │ y1 xxxxxxxxxxxxx\n * │ xxxx x\n * │ xxx x\n * │ xxx x\n * │ y0 xxx x\n * │ xxxxxxx x\n * │ x x\n * │ xx x\n * │ x x\n * │ x x\n * │ x x\n * │ x x\n * │ x x\n * │ x x\n * │ x x\n * ────┼─────────x───────────────────────────────x──────────────►\n * │ y3 y4 y5\n */\nexport const Area = () => {\n return (index, scale, value, coordinate) => {\n var _a, _b;\n const { x: X, y: Y, y1: Y1, series: S } = value;\n const { x, y } = scale;\n // Group data by series field.\n const series = S ? Array.from(group(index, (i) => S[i]).values()) : [index];\n const I = series.map((group) => group[0]).filter((i) => i !== undefined);\n // A group of data corresponds to one area.\n const xoffset = (((_a = x === null || x === void 0 ? void 0 : x.getBandWidth) === null || _a === void 0 ? void 0 : _a.call(x)) || 0) / 2;\n const yoffset = (((_b = y === null || y === void 0 ? void 0 : y.getBandWidth) === null || _b === void 0 ? void 0 : _b.call(y)) || 0) / 2;\n const P = Array.from(series, (SI) => {\n const l = SI.length;\n const points = new Array(l * 2);\n for (let idx = 0; idx < SI.length; idx++) {\n const i = SI[idx];\n points[idx] = coordinate.map([+X[i] + xoffset, +Y[i] + yoffset]); // y1\n points[l + idx] = coordinate.map([+X[i] + xoffset, +Y1[i] + yoffset]); // y0\n }\n return points;\n });\n return [I, P, series];\n };\n};\nArea.props = {\n defaultShape: 'area',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n { name: 'y', required: true },\n { name: 'size' },\n { name: 'series', scale: 'band' },\n ],\n preInference: [\n ...basePreInference(),\n { type: MaybeSeries },\n { type: MaybeZeroY1 },\n { type: MaybeZeroPadding },\n ],\n postInference: [...basePostInference(), ...tooltip1d()],\n interaction: {\n shareTooltip: true,\n seriesTooltip: true,\n crosshairs: true,\n },\n};\n//# sourceMappingURL=area.js.map","import { MaybeIdentityX, MaybeIdentityY } from '../transform';\nimport { LinkArc, LinkShape, LinkSmooth, LinkVHV } from '../shape';\nimport { baseGeometryChannels, basePostInference, basePreInference, createBandOffset, tooltip2d, } from './utils';\nconst shape = {\n link: LinkShape,\n arc: LinkArc,\n smooth: LinkSmooth,\n vhv: LinkVHV,\n};\n/**\n * Connect `start` to `end` with single line.\n */\nexport const Link = (options) => {\n return (index, scale, value, coordinate) => {\n const { x: X, y: Y, x1: X1 = X, y1: Y1 = Y } = value;\n const offset = createBandOffset(scale, value, options);\n const P = index.map((i) => [\n coordinate.map(offset([+X[i], +Y[i]], i)),\n coordinate.map(offset([+X1[i], +Y1[i]], i)),\n ]);\n return [index, P];\n };\n};\nLink.props = {\n defaultShape: 'link',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n { name: 'y', required: true },\n ],\n preInference: [\n ...basePreInference(),\n { type: MaybeIdentityY },\n { type: MaybeIdentityX },\n ],\n postInference: [...basePostInference(), ...tooltip2d()],\n};\n//# sourceMappingURL=link.js.map","import { MaybeTuple, MaybeVisualPosition } from '../transform';\nimport { ImageShape } from '../shape';\nimport { baseGeometryChannels, basePostInference, basePreInference, createBandOffset, tooltip2d, visualMark, } from './utils';\nconst shape = {\n image: ImageShape,\n};\nexport const Image = (options) => {\n const { cartesian } = options;\n if (cartesian)\n return visualMark;\n return (index, scale, value, coordinate) => {\n const { x: X, y: Y } = value;\n const offset = createBandOffset(scale, value, options);\n const P = Array.from(index, (i) => {\n const p = [+X[i], +Y[i]];\n return [coordinate.map(offset(p, i))];\n });\n return [index, P];\n };\n};\nImage.props = {\n defaultShape: 'image',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n { name: 'y', required: true },\n { name: 'src', scale: 'identity' },\n { name: 'size' },\n ],\n preInference: [\n ...basePreInference(),\n { type: MaybeTuple },\n { type: MaybeVisualPosition },\n ],\n postInference: [...basePostInference(), ...tooltip2d()],\n};\n//# sourceMappingURL=image.js.map","import { PolygonShape, PolygonRibbon } from '../shape';\nimport { baseGeometryChannels, basePostInference, basePreInference, tooltip2d, } from './utils';\nconst shape = {\n polygon: PolygonShape,\n ribbon: PolygonRibbon,\n};\n/**\n * Convert value for each channel to polygon shapes.\n */\nexport const Polygon = () => {\n return (index, scale, value, coordinate) => {\n const Xn = Object.entries(value)\n .filter(([key]) => key.startsWith('x'))\n .map(([, value]) => value);\n const Yn = Object.entries(value)\n .filter(([key]) => key.startsWith('y'))\n .map(([, value]) => value);\n const P = index.map((i) => {\n const Pn = [];\n for (let j = 0; j < Xn.length; j++) {\n const x = Xn[j][i];\n if (x === undefined)\n break;\n const y = Yn[j][i];\n Pn.push(coordinate.map([+x, +y]));\n }\n return Pn;\n });\n return [index, P];\n };\n};\nPolygon.props = {\n defaultShape: 'polygon',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n { name: 'y', required: true },\n ],\n preInference: [...basePreInference()],\n postInference: [...basePostInference(), ...tooltip2d()],\n};\n//# sourceMappingURL=polygon.js.map","import { BoxShape, BoxViolin } from '../shape';\nimport { MaybeZeroX } from '../transform';\nimport { baseGeometryChannels, basePostInference, basePreInference, tooltip1d, } from './utils';\nconst shape = {\n box: BoxShape,\n violin: BoxViolin,\n};\n/**\n * Convert value for each channel to box shapes.\n *\n * p0 p2 p1\n * ──────────┬──────────\n * │\n * │\n * │\n * │\n * │\n * │\n * │ p3\n * p4 ┌─────────┴──────────┐ p5\n * │ │\n * │ │\n * p8 ├────────────────────┤ p9\n * │ │\n * │ p10 │\n * p7 └─────────┬──────────┘ p6\n * │\n * │\n * │\n * │\n * │\n * │\n * │\n * │\n * ───────────┴───────────\n * p12 p11 p13\n */\nexport const Box = () => {\n return (index, scale, value, coordinate) => {\n const { x: X, y: Y, y1: Y1, y2: Y2, y3: Y3, y4: Y4, series: S } = value;\n // Calc width for each box.\n // The scales for x and series channels must be band scale.\n const xScale = scale.x;\n const series = scale.series;\n const P = Array.from(index, (i) => {\n const groupWidth = xScale.getBandWidth(xScale.invert(+X[i]));\n const ratio = series ? series.getBandWidth(series.invert(+(S === null || S === void 0 ? void 0 : S[i]))) : 1;\n const width = groupWidth * ratio;\n const offset = (+(S === null || S === void 0 ? void 0 : S[i]) || 0) * groupWidth;\n const x = +X[i] + offset + width / 2;\n const [low, q1, median, q3, high] = [\n +Y[i],\n +Y1[i],\n +Y2[i],\n +Y3[i],\n +Y4[i],\n ];\n const P13 = [\n [x - width / 2, high],\n [x + width / 2, high],\n [x, high],\n [x, q3],\n [x - width / 2, q3],\n [x + width / 2, q3],\n [x + width / 2, q1],\n [x - width / 2, q1],\n [x - width / 2, median],\n [x + width / 2, median],\n [x, q1],\n [x, low],\n [x - width / 2, low],\n [x + width / 2, low],\n ];\n return P13.map((d) => coordinate.map(d));\n });\n return [index, P];\n };\n};\nBox.props = {\n defaultShape: 'box',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', scale: 'band', required: true },\n { name: 'y', required: true },\n { name: 'series', scale: 'band' },\n ],\n preInference: [...basePreInference(), { type: MaybeZeroX }],\n postInference: [...basePostInference(), ...tooltip1d()],\n interaction: {\n shareTooltip: true,\n },\n};\n//# sourceMappingURL=box.js.map","import { VectorShape } from '../shape';\nimport { baseGeometryChannels, basePostInference, basePreInference, tooltip2d, } from './utils';\nconst shape = {\n vector: VectorShape,\n};\n/**\n * Convert value for each channel to start, end.\n * The angle starts from the X axis(right direction).\n */\nexport const Vector = () => {\n return (index, scale, value, coordinate) => {\n const { x: X, y: Y, size: S, rotate: R } = value;\n const [width, height] = coordinate.getSize();\n const P = index.map((i) => {\n const angle = (+R[i] / 180) * Math.PI;\n const s = +S[i];\n const a = s / width;\n const b = s / height;\n const vx = a * Math.cos(angle);\n const vy = -b * Math.sin(angle);\n return [\n coordinate.map([+X[i] - vx / 2, +Y[i] - vy / 2]),\n coordinate.map([+X[i] + vx / 2, +Y[i] + vy / 2]),\n ];\n });\n return [index, P];\n };\n};\nVector.props = {\n defaultShape: 'vector',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n { name: 'y', required: true },\n { name: 'rotate', required: true, scale: 'identity' },\n { name: 'size', required: true },\n ],\n preInference: [...basePreInference()],\n postInference: [...basePostInference(), ...tooltip2d()],\n};\n//# sourceMappingURL=vector.js.map","import { deepMix } from '@antv/util';\nimport { LineXY } from '../shape';\nimport { MaybeTupleY } from '../transform';\nimport { baseAnnotationChannels, basePreInference, basePostInference, createBandOffset, } from './utils';\nconst shape = {\n line: LineXY,\n};\nexport const LineY = (options) => {\n return (index, scale, value, coordinate) => {\n const { y: Y } = value;\n const offset = createBandOffset(scale, value, deepMix({ style: { bandOffset: 0 } }, options));\n const P = Array.from(index, (i) => {\n const p1 = [0, Y[i]];\n const p2 = [1, Y[i]];\n return [p1, p2].map((d) => coordinate.map(offset(d, i)));\n });\n return [index, P];\n };\n};\nLineY.props = {\n defaultShape: 'line',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseAnnotationChannels({ shapes: Object.keys(shape) }),\n { name: 'y', required: true },\n ],\n preInference: [...basePreInference(), { type: MaybeTupleY }],\n postInference: [...basePostInference()],\n};\n//# sourceMappingURL=lineY.js.map","import { deepMix } from '@antv/util';\nimport { LineXY } from '../shape';\nimport { MaybeTupleX } from '../transform';\nimport { basePostInference, baseAnnotationChannels, basePreInference, createBandOffset, } from './utils';\nconst shape = {\n line: LineXY,\n};\nexport const LineX = (options) => {\n return (index, scale, value, coordinate) => {\n const { x: X } = value;\n const offset = createBandOffset(scale, value, deepMix({ style: { bandOffset: 0 } }, options));\n const P = Array.from(index, (i) => {\n const p1 = [X[i], 1];\n const p2 = [X[i], 0];\n return [p1, p2].map((d) => coordinate.map(offset(d, i)));\n });\n return [index, P];\n };\n};\nLineX.props = {\n defaultShape: 'line',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseAnnotationChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n ],\n preInference: [...basePreInference(), { type: MaybeTupleX }],\n postInference: [...basePostInference()],\n};\n//# sourceMappingURL=lineX.js.map","import { ConnectorShape } from '../shape';\nimport { baseAnnotationChannels, basePostInference, basePreInference, } from './utils';\nimport { Link } from './link';\nconst shape = {\n connector: ConnectorShape,\n};\nexport const Connector = (...args) => {\n return Link(...args);\n};\nConnector.props = {\n defaultShape: 'connector',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseAnnotationChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n { name: 'y', required: true },\n ],\n preInference: [...basePreInference()],\n postInference: [...basePostInference()],\n};\n//# sourceMappingURL=connector.js.map","import { RangeShape } from '../shape';\nimport { baseAnnotationChannels, basePostInference, basePreInference, } from './utils';\nfunction extend(channel, extended, value, scale) {\n if (extended)\n return () => [0, 1];\n const { [channel]: C, [`${channel}1`]: C1 } = value;\n return (i) => {\n var _a;\n const offset = ((_a = scale.getBandWidth) === null || _a === void 0 ? void 0 : _a.call(scale, scale.invert(+C1[i]))) || 0;\n return [C[i], C1[i] + offset];\n };\n}\nexport function AbstractRange(options = {}) {\n const { extendX = false, extendY = false } = options;\n return (index, scale, value, coordinate) => {\n const x = extend('x', extendX, value, scale.x);\n const y = extend('y', extendY, value, scale.y);\n const P = Array.from(index, (i) => {\n const [x1, x2] = x(i);\n const [y1, y2] = y(i);\n const p1 = [x1, y1];\n const p2 = [x2, y1];\n const p3 = [x2, y2];\n const p4 = [x1, y2];\n return [p1, p2, p3, p4].map((d) => coordinate.map(d));\n });\n return [index, P];\n };\n}\nconst shape = { range: RangeShape };\nexport const Range = () => {\n return AbstractRange();\n};\nRange.props = {\n defaultShape: 'range',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseAnnotationChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n { name: 'y', required: true },\n ],\n preInference: [...basePreInference()],\n postInference: [...basePostInference()],\n};\n//# sourceMappingURL=range.js.map","import { RangeShape } from '../shape';\nimport { MaybeDefaultX } from '../transform';\nimport { baseAnnotationChannels, basePostInference, basePreInference, } from './utils';\nimport { AbstractRange } from './range';\nconst shape = {\n range: RangeShape,\n};\nexport const RangeX = () => {\n return AbstractRange({ extendY: true });\n};\nRangeX.props = {\n defaultShape: 'range',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseAnnotationChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n ],\n preInference: [...basePreInference(), { type: MaybeDefaultX }],\n postInference: [...basePostInference()],\n};\n//# sourceMappingURL=rangeX.js.map","import { RangeShape } from '../shape';\nimport { MaybeDefaultY } from '../transform';\nimport { baseAnnotationChannels, basePostInference, basePreInference, } from './utils';\nimport { AbstractRange } from './range';\nconst shape = {\n range: RangeShape,\n};\nexport const RangeY = () => {\n return AbstractRange({ extendX: true });\n};\nRangeY.props = {\n defaultShape: 'range',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseAnnotationChannels({ shapes: Object.keys(shape) }),\n { name: 'y', required: true },\n ],\n preInference: [...basePreInference(), { type: MaybeDefaultY }],\n postInference: [...basePostInference()],\n};\n//# sourceMappingURL=rangeY.js.map","import { min } from 'd3-array';\nfunction targetDepth(d) {\n return d.target.depth;\n}\nexport function left(node) {\n return node.depth;\n}\nexport function right(node, n) {\n return n - 1 - node.height;\n}\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\nexport function center(node) {\n return node.targetLinks.length\n ? node.depth\n : node.sourceLinks.length\n ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n//# sourceMappingURL=align.js.map","export function constant(x) {\n return function () {\n return x;\n };\n}\n//# sourceMappingURL=constant.js.map","import { sum, max, min } from 'd3-array';\nimport { justify } from './align';\nimport { constant } from './constant';\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\nfunction value(d) {\n return d.value;\n}\nfunction defaultId(d) {\n return d.index;\n}\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\nfunction defaultLinks(graph) {\n return graph.links;\n}\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node)\n throw new Error('missing: ' + id);\n return node;\n}\nfunction computeLinkBreadths({ nodes }) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\nexport function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let depth;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n function sankey(arg) {\n const graph = {\n nodes: nodes(arg),\n links: links(arg),\n };\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n sankey.update = function (graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n sankey.nodeId = function (_) {\n return arguments.length\n ? ((id = typeof _ === 'function' ? _ : constant(_)), sankey)\n : id;\n };\n sankey.nodeAlign = function (_) {\n return arguments.length\n ? ((align = typeof _ === 'function' ? _ : constant(_)), sankey)\n : align;\n };\n sankey.nodeDepth = function (_) {\n return arguments.length\n ? ((depth = typeof _ === 'function' ? _ : _), sankey)\n : depth;\n };\n sankey.nodeSort = function (_) {\n return arguments.length ? ((sort = _), sankey) : sort;\n };\n sankey.nodeWidth = function (_) {\n return arguments.length ? ((dx = +_), sankey) : dx;\n };\n sankey.nodePadding = function (_) {\n return arguments.length ? ((dy = py = +_), sankey) : dy;\n };\n sankey.nodes = function (_) {\n return arguments.length\n ? ((nodes = typeof _ === 'function' ? _ : constant(_)), sankey)\n : nodes;\n };\n sankey.links = function (_) {\n return arguments.length\n ? ((links = typeof _ === 'function' ? _ : constant(_)), sankey)\n : links;\n };\n sankey.linkSort = function (_) {\n return arguments.length ? ((linkSort = _), sankey) : linkSort;\n };\n sankey.size = function (_) {\n return arguments.length\n ? ((x0 = y0 = 0), (x1 = +_[0]), (y1 = +_[1]), sankey)\n : [x1 - x0, y1 - y0];\n };\n sankey.extent = function (_) {\n return arguments.length\n ? ((x0 = +_[0][0]),\n (x1 = +_[1][0]),\n (y0 = +_[0][1]),\n (y1 = +_[1][1]),\n sankey)\n : [\n [x0, y0],\n [x1, y1],\n ];\n };\n sankey.iterations = function (_) {\n return arguments.length ? ((iterations = +_), sankey) : iterations;\n };\n function computeNodeLinks({ nodes, links }) {\n nodes.forEach((node, idx) => {\n node.index = idx;\n node.sourceLinks = [];\n node.targetLinks = [];\n });\n const nodeById = new Map(nodes.map((d) => [id(d), d]));\n links.forEach((link, idx) => {\n link.index = idx;\n let { source, target } = link;\n if (typeof source !== 'object')\n source = link.source = find(nodeById, source);\n if (typeof target !== 'object')\n target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n });\n if (linkSort != null) {\n for (const { sourceLinks, targetLinks } of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n function computeNodeValues({ nodes }) {\n for (const node of nodes) {\n node.value =\n node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n function computeNodeDepths({ nodes }) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set();\n let x = 0;\n while (current.size) {\n current.forEach((node) => {\n node.depth = x;\n for (const { target } of node.sourceLinks) {\n next.add(target);\n }\n });\n if (++x > n)\n throw new Error('circular link');\n current = next;\n next = new Set();\n }\n // 如果配置了 depth,则设置自定义 depth\n if (depth) {\n const maxDepth = Math.max(max(nodes, (d) => d.depth) + 1, 0);\n let node;\n for (let i = 0; i < nodes.length; i++) {\n node = nodes[i];\n node.depth = depth.call(null, node, maxDepth);\n }\n }\n }\n function computeNodeHeights({ nodes }) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set();\n let x = 0;\n while (current.size) {\n current.forEach((node) => {\n node.height = x;\n for (const { source } of node.targetLinks) {\n next.add(source);\n }\n });\n if (++x > n)\n throw new Error('circular link');\n current = next;\n next = new Set();\n }\n }\n function computeNodeLayers({ nodes }) {\n const x = Math.max(max(nodes, (d) => d.depth) + 1, 0);\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x).fill(0).map(() => []);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i])\n columns[i].push(node);\n else\n columns[i] = [node];\n }\n if (sort)\n for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n function initializeNodeBreadths(columns) {\n const ky = min(columns, (c) => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, (c) => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const { source, value } of target.targetLinks) {\n const v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0))\n continue;\n const dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined)\n column.sort(ascendingBreadth);\n if (column.length)\n resolveCollisions(column, beta);\n }\n }\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const { target, value } of source.sourceLinks) {\n const v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0))\n continue;\n const dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined)\n column.sort(ascendingBreadth);\n if (column.length)\n resolveCollisions(column, beta);\n }\n }\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6)\n (node.y0 += dy), (node.y1 += dy);\n y = node.y1 + py;\n }\n }\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6)\n (node.y0 -= dy), (node.y1 -= dy);\n y = node.y0 - py;\n }\n }\n function reorderNodeLinks({ sourceLinks, targetLinks }) {\n if (linkSort === undefined) {\n for (const { source: { sourceLinks }, } of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const { target: { targetLinks }, } of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const { sourceLinks, targetLinks } of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - ((source.sourceLinks.length - 1) * py) / 2;\n for (const { target: node, width } of source.sourceLinks) {\n if (node === target)\n break;\n y += width + py;\n }\n for (const { source: node, width } of target.targetLinks) {\n if (node === source)\n break;\n y -= width;\n }\n return y;\n }\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - ((target.targetLinks.length - 1) * py) / 2;\n for (const { source: node, width } of target.targetLinks) {\n if (node === source)\n break;\n y += width + py;\n }\n for (const { target: node, width } of source.sourceLinks) {\n if (node === target)\n break;\n y -= width;\n }\n return y;\n }\n return sankey;\n}\n//# sourceMappingURL=sankey.js.map","import { sankey, left, right, center, justify } from './utils/d3-sankey';\nconst DEFAULT_OPTIONS = {\n nodeAlign: 'justify',\n nodeWidth: 0.008,\n nodePadding: 0.03,\n nodes: (graph) => graph.nodes,\n links: (graph) => graph.links,\n nodeSort: undefined,\n linkSort: undefined,\n iterations: 6,\n};\nconst ALIGN_METHOD = {\n left,\n right,\n center,\n justify,\n};\nfunction getNodeAlignFunction(nodeAlign) {\n const type = typeof nodeAlign;\n if (type === 'string')\n return ALIGN_METHOD[nodeAlign] || justify;\n if (type === 'function')\n return nodeAlign;\n return justify;\n}\n/**\n * Compute the node and edge position, return a graph representing the Sankey layout. All will be normalized to [[0, 0], [1, 1]]\n * Required graph data (nodes, edges)\n */\nexport const Sankey = (options) => {\n return (data) => {\n const { nodeId, nodeSort, nodeAlign, nodeWidth, nodePadding, nodeDepth, nodes: nodeNodes, links: nodeLinks, linkSort, iterations, } = Object.assign({}, DEFAULT_OPTIONS, options);\n const sankeyProcessor = sankey()\n .nodeSort(nodeSort)\n .linkSort(linkSort)\n .links(nodeLinks)\n .nodes(nodeNodes)\n .nodeWidth(nodeWidth)\n .nodePadding(nodePadding)\n .nodeDepth(nodeDepth)\n .nodeAlign(getNodeAlignFunction(nodeAlign))\n .iterations(iterations)\n .extent([\n [0, 0],\n [1, 1],\n ]);\n if (typeof nodeId === 'function') {\n sankeyProcessor.nodeId(nodeId);\n }\n const layoutData = sankeyProcessor(data);\n const { nodes: N, links: L } = layoutData;\n const nodes = N.map((node) => {\n const { x0, x1, y0, y1 } = node;\n /* points\n * 3---2\n * | |\n * 0---1\n */\n return Object.assign(Object.assign({}, node), { x: [x0, x1, x1, x0], y: [y0, y0, y1, y1] });\n });\n const links = L.map((edge) => {\n const { source, target } = edge;\n const sx = source.x1;\n const tx = target.x0;\n const offset = edge.width / 2;\n return Object.assign(Object.assign({}, edge), { x: [sx, sx, tx, tx], y: [\n edge.y0 + offset,\n edge.y0 - offset,\n edge.y1 + offset,\n edge.y1 - offset,\n ] });\n });\n return { nodes, links };\n };\n};\nSankey.props = {};\n//# sourceMappingURL=sankey.js.map","import { deepMix } from '@antv/util';\nimport { isUnset, subObject } from './helper';\nexport function subTooltip(tooltip, name, defaults = {}, main = false) {\n if (isUnset(tooltip))\n return tooltip;\n if (Array.isArray(tooltip) && main)\n return tooltip;\n const sub = subObject(tooltip, name);\n return deepMix(defaults, sub);\n}\nexport function maybeTooltip(tooltip, defaults = {}) {\n if (isUnset(tooltip))\n return tooltip;\n if (Array.isArray(tooltip))\n return tooltip;\n if (!isFullTooltip(tooltip))\n return tooltip;\n return deepMix(defaults, tooltip);\n}\nexport function isFullTooltip(tooltip) {\n if (Object.keys(tooltip).length === 0)\n return true;\n const { title, items } = tooltip;\n return title !== undefined || items !== undefined;\n}\nexport function maybeAnimation(animate, sub) {\n return typeof animate === 'object' ? subObject(animate, sub) : animate;\n}\n//# sourceMappingURL=mark.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { Sankey as SankeyTransform } from '../data/sankey';\nimport { subObject } from '../utils/helper';\nimport { subTooltip, maybeAnimation } from '../utils/mark';\nimport { field, initializeData } from './utils';\nconst DEFAULT_LAYOUT_OPTIONS = {\n nodeId: (d) => d.key,\n nodeWidth: 0.02,\n nodePadding: 0.02,\n};\nconst DEFAULT_NODE_OPTIONS = {\n type: 'polygon',\n axis: false,\n legend: false,\n encode: {\n shape: 'polygon',\n x: 'x',\n y: 'y',\n },\n scale: {\n x: { type: 'identity' },\n y: { type: 'identity' },\n },\n style: {\n stroke: '#000',\n },\n};\nconst DEFAULT_LINK_OPTIONS = {\n type: 'polygon',\n axis: false,\n legend: false,\n encode: {\n shape: 'ribbon',\n x: 'x',\n y: 'y',\n },\n style: {\n fillOpacity: 0.5,\n stroke: undefined,\n },\n};\nconst DEFAULT_LABEL_OPTIONS = {\n textAlign: (d) => (d.x[0] < 0.5 ? 'start' : 'end'),\n position: (d) => (d.x[0] < 0.5 ? 'right' : 'left'),\n fontSize: 10,\n};\n/**\n * @todo Add interaction\n * @todo Add source-link color mode\n */\nexport const Sankey = (options) => {\n const { data, encode = {}, scale, style = {}, layout = {}, nodeLabels = [], linkLabels = [], animate = {}, tooltip = {}, } = options;\n // Initialize data, generating nodes by link if is not specified.\n const { links, nodes } = initializeData(data, encode);\n // Extract encode for node and link.\n const nodeEncode = subObject(encode, 'node');\n const linkEncode = subObject(encode, 'link');\n const { key: nodeKey = (d) => d.key, color = nodeKey } = nodeEncode;\n // Transform data, using nodeKey as nodeId.\n const { links: linkData, nodes: nodeData } = SankeyTransform(Object.assign(Object.assign(Object.assign({}, DEFAULT_LAYOUT_OPTIONS), { nodeId: field(nodeKey) }), layout))({ links, nodes });\n // Extract label style and apply defaults.\n const _a = subObject(style, 'label'), { text = nodeKey, spacing = 5 } = _a, labelStyle = __rest(_a, [\"text\", \"spacing\"]);\n const key1 = field(nodeKey);\n const nodeTooltip = subTooltip(tooltip, 'node', {\n title: key1,\n items: [{ field: 'value' }],\n }, true);\n const linkTooltip = subTooltip(tooltip, 'link', {\n title: '',\n items: [\n (d) => ({ name: 'source', value: key1(d.source) }),\n (d) => ({ name: 'target', value: key1(d.target) }),\n ],\n });\n return [\n deepMix({}, DEFAULT_NODE_OPTIONS, {\n data: nodeData,\n encode: Object.assign(Object.assign({}, nodeEncode), { color }),\n scale,\n style: subObject(style, 'node'),\n labels: [\n Object.assign(Object.assign(Object.assign({}, DEFAULT_LABEL_OPTIONS), { text, dx: (d) => (d.x[0] < 0.5 ? spacing : -spacing) }), labelStyle),\n ...nodeLabels,\n ],\n tooltip: nodeTooltip,\n animate: maybeAnimation(animate, 'node'),\n axis: false,\n }),\n deepMix({}, DEFAULT_LINK_OPTIONS, {\n data: linkData,\n encode: linkEncode,\n labels: linkLabels,\n style: Object.assign({ fill: linkEncode.color ? undefined : '#aaa', strokeWidth: 0 }, subObject(style, 'link')),\n tooltip: linkTooltip,\n animate: maybeAnimation(animate, 'link'),\n }),\n ];\n};\nSankey.props = {};\n//# sourceMappingURL=sankey.js.map","export function weight(a, b) {\n return b.value - a.value;\n}\nexport function frequency(a, b) {\n return b.frequency - a.frequency;\n}\nexport function id(a, b) {\n return `${a.id}`.localeCompare(`${b.id}`);\n}\nexport function name(a, b) {\n return `${a.name}`.localeCompare(`${b.name}`);\n}\n//# sourceMappingURL=sort.js.map","import { group, sum } from 'd3-array';\nimport { error } from '../../../utils/helper';\nimport * as SortMethods from './sort';\nconst DEFAULT_OPTIONS = {\n y: 0,\n thickness: 0.05,\n weight: false,\n marginRatio: 0.1,\n id: (node) => node.id,\n source: (edge) => edge.source,\n target: (edge) => edge.target,\n sourceWeight: (edge) => edge.value || 1,\n targetWeight: (edge) => edge.value || 1,\n sortBy: null,\n};\n/**\n * Layout for Arc / Chord diagram with d3 style.\n */\nexport function Arc(options) {\n const { y, thickness, weight, marginRatio, id, source, target, sourceWeight, targetWeight, sortBy, } = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);\n function arc(data) {\n // Clone first.\n const nodes = data.nodes.map((n) => (Object.assign({}, n)));\n const edges = data.edges.map((n) => (Object.assign({}, n)));\n // Keep reference in below functions.\n preprocess(nodes, edges);\n sortNodes(nodes, edges);\n layoutNodes(nodes, edges);\n layoutEdges(nodes, edges);\n return { nodes, edges };\n }\n /**\n * Calculate id, value, frequency for node, and source,target for edge.\n */\n function preprocess(nodes, edges) {\n edges.forEach((edge) => {\n edge.source = source(edge);\n edge.target = target(edge);\n edge.sourceWeight = sourceWeight(edge);\n edge.targetWeight = targetWeight(edge);\n });\n // Group edges by source, target.\n const edgesBySource = group(edges, (e) => e.source);\n const edgesByTarget = group(edges, (e) => e.target);\n nodes.forEach((node) => {\n node.id = id(node);\n const sources = edgesBySource.has(node.id)\n ? edgesBySource.get(node.id)\n : [];\n const targets = edgesByTarget.has(node.id)\n ? edgesByTarget.get(node.id)\n : [];\n node.frequency = sources.length + targets.length;\n node.value =\n sum(sources, (d) => d.sourceWeight) +\n sum(targets, (d) => d.targetWeight);\n });\n return { nodes, edges };\n }\n function sortNodes(nodes, edges) {\n const method = typeof sortBy === 'function' ? sortBy : SortMethods[sortBy];\n if (method) {\n nodes.sort(method);\n }\n }\n function layoutNodes(nodes, edges) {\n const size = nodes.length;\n if (!size) {\n throw error(\"Invalid nodes: it's empty!\");\n }\n // No weight.\n if (!weight) {\n const deltaX = 1 / size;\n nodes.forEach((node, i) => {\n node.x = (i + 0.5) * deltaX;\n node.y = y;\n });\n return { nodes, edges };\n }\n // todo: marginRatio should be in [0, 1)\n // todo: thickness shoule be in (0, 1)\n const margin = marginRatio / (2 * size);\n const total = nodes.reduce((prev, node) => (prev += node.value), 0);\n nodes.reduce((deltaX, node) => {\n node.weight = node.value / total;\n node.width = node.weight * (1 - marginRatio);\n node.height = thickness;\n /* points\n * 3---2\n * | |\n * 0---1\n */\n const minX = margin + deltaX;\n const maxX = minX + node.width;\n const minY = y - thickness / 2;\n const maxY = minY + thickness;\n node.x = [minX, maxX, maxX, minX];\n node.y = [minY, minY, maxY, maxY];\n // Return next deltaX.\n return deltaX + node.width + 2 * margin;\n }, 0);\n return {\n nodes,\n edges,\n };\n }\n /**\n * Get edge layout information from nodes, and save into edge object.\n */\n function layoutEdges(nodes, edges) {\n const nodesMap = new Map(nodes.map((d) => [d.id, d]));\n if (!weight) {\n edges.forEach((edge) => {\n const sourceId = source(edge);\n const targetId = target(edge);\n const sourceNode = nodesMap.get(sourceId);\n const targetNode = nodesMap.get(targetId);\n // Edge's layout information is Equal with node.\n if (sourceNode && targetNode) {\n edge.x = [sourceNode.x, targetNode.x];\n edge.y = [sourceNode.y, targetNode.y];\n }\n });\n return { nodes, edges };\n }\n // Initial edge.x, edge.y.\n edges.forEach((edge) => {\n edge.x = [0, 0, 0, 0];\n edge.y = [y, y, y, y];\n });\n // Group edges by source, target.\n const edgesBySource = group(edges, (e) => e.source);\n const edgesByTarget = group(edges, (e) => e.target);\n // When weight = true, we need to calculation the bbox of edge start/end.\n nodes.forEach((node) => {\n const { edges, width, x, y, value, id } = node;\n const sourceEdges = edgesBySource.get(id) || [];\n const targetEdges = edgesByTarget.get(id) || [];\n let offset = 0;\n /* points\n * 0----------2\n * | |\n * 1----------3\n */\n sourceEdges.map((edge) => {\n const w = (edge.sourceWeight / value) * width;\n edge.x[0] = x[0] + offset;\n edge.x[1] = x[0] + offset + w;\n offset += w;\n });\n targetEdges.forEach((edge) => {\n const w = (edge.targetWeight / value) * width;\n edge.x[3] = x[0] + offset;\n edge.x[2] = x[0] + offset + w;\n offset += w;\n });\n });\n }\n return arc;\n}\n//# sourceMappingURL=arc.js.map","import { Arc as ArcLayout } from '../data/utils/arc';\n/**\n * For arc diagram(edge with weight) or chord diagram(with weight)\n */\nexport const Arc = (options) => {\n return (data) => {\n return ArcLayout(options)(data);\n };\n};\nArc.props = {};\n//# sourceMappingURL=arc.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { subObject } from '../utils/helper';\nimport { subTooltip, maybeAnimation } from '../utils/mark';\nimport { Arc } from '../data/arc';\nimport { field, initializeData } from './utils';\nconst DEFAULT_LAYOUT_OPTIONS = {\n y: 0,\n thickness: 0.05,\n marginRatio: 0.1,\n id: (node) => node.key,\n source: (edge) => edge.source,\n target: (edge) => edge.target,\n sourceWeight: (edge) => edge.value || 1,\n targetWeight: (edge) => edge.value || 1,\n sortBy: null, // optional, id | weight | frequency | {function}\n};\nconst DEFAULT_NODE_OPTIONS = {\n type: 'polygon',\n axis: false,\n legend: false,\n encode: {\n shape: 'polygon',\n x: 'x',\n y: 'y',\n },\n scale: {\n x: { type: 'identity' },\n y: { type: 'identity' },\n },\n style: {\n opacity: 1,\n fillOpacity: 1,\n lineWidth: 1,\n },\n};\nconst DEFAULT_LINK_OPTIONS = {\n type: 'polygon',\n axis: false,\n legend: false,\n encode: {\n shape: 'ribbon',\n x: 'x',\n y: 'y',\n },\n style: {\n opacity: 0.5,\n lineWidth: 1,\n strokeWidth: 1,\n },\n};\nconst DEFAULT_LABEL_OPTIONS = {\n position: 'outside',\n fontSize: 10,\n};\nexport const Chord = (options, context) => {\n const { data, encode = {}, scale, style = {}, layout = {}, nodeLabels = [], linkLabels = [], animate = {}, tooltip = {}, } = options;\n // Initialize data, generating nodes by link if is not specified.\n const { nodes, links } = initializeData(data, encode);\n // Extract encode for node and link.\n const nodeEncode = subObject(encode, 'node');\n const linkEncode = subObject(encode, 'link');\n const { key: nodeKey = (d) => d.key, color = nodeKey } = nodeEncode;\n const { linkEncodeColor = (d) => d.source } = linkEncode;\n const { nodeWidthRatio = DEFAULT_LAYOUT_OPTIONS.thickness, nodePaddingRatio = DEFAULT_LAYOUT_OPTIONS.marginRatio } = layout, restLayout = __rest(layout, [\"nodeWidthRatio\", \"nodePaddingRatio\"]);\n const { nodes: nodeData, edges: linkData } = Arc(Object.assign(Object.assign(Object.assign(Object.assign({}, DEFAULT_LAYOUT_OPTIONS), { id: field(nodeKey), thickness: nodeWidthRatio, marginRatio: nodePaddingRatio }), restLayout), { weight: true }))({ nodes, edges: links });\n // Extract label style and apply defaults.\n const _a = subObject(style, 'label'), { text = nodeKey } = _a, labelStyle = __rest(_a, [\"text\"]);\n const nodeTooltip = subTooltip(tooltip, 'node', {\n title: '',\n items: [(d) => ({ name: d.key, value: d.value })],\n }, true);\n const linkTooltip = subTooltip(tooltip, 'link', {\n title: '',\n items: [(d) => ({ name: `${d.source} -> ${d.target}`, value: d.value })],\n });\n const { height, width } = context;\n const minimumLen = Math.min(height, width);\n return [\n deepMix({}, DEFAULT_LINK_OPTIONS, {\n data: linkData,\n encode: Object.assign(Object.assign({}, linkEncode), { color: linkEncodeColor }),\n labels: linkLabels,\n style: Object.assign({ fill: linkEncodeColor ? undefined : '#aaa' }, subObject(style, 'link')),\n tooltip: linkTooltip,\n animate: maybeAnimation(animate, 'link'),\n }),\n deepMix({}, DEFAULT_NODE_OPTIONS, {\n data: nodeData,\n encode: Object.assign(Object.assign({}, nodeEncode), { color }),\n scale,\n style: subObject(style, 'node'),\n coordinate: {\n type: 'polar',\n // Leave enough rendering space for the label.\n outerRadius: (minimumLen - 20) / minimumLen,\n startAngle: -Math.PI * 2,\n endAngle: 0,\n },\n labels: [\n Object.assign(Object.assign(Object.assign({}, DEFAULT_LABEL_OPTIONS), { text }), labelStyle),\n ...nodeLabels,\n ],\n tooltip: nodeTooltip,\n animate: maybeAnimation(animate, 'node'),\n axis: false,\n }),\n ];\n};\nChord.props = {};\n//# sourceMappingURL=chord.js.map","import { PathShape, PathHollow } from '../shape';\nimport { baseGeometryChannels, basePostInference, basePreInference, } from './utils';\nconst shape = {\n path: PathShape,\n hollow: PathHollow,\n};\n/**\n * Draw a path.\n */\nexport const Path = (options) => {\n return (index, scale, value, coordinate) => {\n // The points is meaning less for path mark,\n // because the position of path shapes specified\n // by the d option. So set [0, 0] for render pipeline.\n return [index, index.map(() => [[0, 0]])];\n };\n};\nPath.props = {\n defaultShape: 'path',\n defaultLabelShape: 'label',\n shape,\n composite: false,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'd', scale: 'identity' },\n ],\n preInference: [...basePreInference()],\n postInference: [...basePostInference()],\n};\n//# sourceMappingURL=path.js.map","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","export default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array, random) {\n let m = array.length,\n t,\n i;\n\n while (m) {\n i = random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle} from \"../array.js\";\nimport lcg from \"../lcg.js\";\n\nexport default function(circles) {\n return packEncloseRandom(circles, lcg());\n}\n\nexport function packEncloseRandom(circles, random) {\n var i = 0, n = (circles = shuffle(Array.from(circles), random)).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import array from \"../array.js\";\nimport lcg from \"../lcg.js\";\nimport {packEncloseRandom} from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packSiblingsRandom(circles, random) {\n if (!(n = (circles = array(circles)).length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = packEncloseRandom(a, random);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packSiblingsRandom(circles, lcg());\n return circles;\n}\n","import {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\nimport lcg from \"../lcg.js\";\nimport {packSiblingsRandom} from \"./siblings.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n const random = lcg();\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildrenRandom(padding, 0.5, random))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildrenRandom(constantZero, 1, random))\n .eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildrenRandom(padding, k, random) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packSiblingsRandom(children, random);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {optional} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n ambiguous = {},\n imputed = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId,\n path;\n\n function stratify(data) {\n var nodes = Array.from(data),\n currentId = id,\n currentParentId = parentId,\n n,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map;\n\n if (path != null) {\n const I = nodes.map((d, i) => normalize(path(d, i, data)));\n const P = I.map(parentof);\n const S = new Set(I).add(\"\");\n for (const i of P) {\n if (!S.has(i)) {\n S.add(i);\n I.push(i);\n P.push(parentof(i));\n nodes.push(imputed);\n }\n }\n currentId = (_, i) => I[i];\n currentParentId = (_, i) => P[i];\n }\n\n for (i = 0, n = nodes.length; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n\n // When imputing internal nodes, only introduce roots if needed.\n // Then replace the imputed marker data with null.\n if (path != null) {\n while (root.data === imputed && root.children.length === 1) {\n root = root.children[0], --n;\n }\n for (let i = nodes.length - 1; i >= 0; --i) {\n node = nodes[i];\n if (node.data !== imputed) break;\n node.data = null;\n }\n }\n\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = optional(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = optional(x), stratify) : parentId;\n };\n\n stratify.path = function(x) {\n return arguments.length ? (path = optional(x), stratify) : path;\n };\n\n return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n path = `${path}`;\n let i = path.length;\n if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n return path[0] === \"/\" ? path : `/${path}`;\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" ⇥ \"/foo\", \"/foo\" ⇥ \"/\", \"/\" ↦ \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n let i = path.length;\n if (i < 2) return \"\";\n while (--i > 1) if (slash(path, i)) break;\n return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n if (path[i] === \"/\") {\n let k = 0;\n while (i > 0 && path[--i] === \"\\\\\") ++k;\n if ((k & 1) === 0) return true;\n }\n return false;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","import { isArray, get } from '@antv/util';\nimport { stratify, hierarchy, treemap as treemapLayout, treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify, } from 'd3-hierarchy';\nimport { field } from '../mark/utils';\n/**\n * @description Path need when the data is a flat json structure,\n * and the tree object structure do not need.\n */\nfunction generateHierarchyRoot(data, path) {\n if (Array.isArray(data)) {\n return typeof path === 'function'\n ? stratify().path(path)(data)\n : stratify()(data);\n }\n return hierarchy(data);\n}\nfunction addObjectDataPath(root, path = [root.data.name]) {\n root.id = root.id || root.data.name;\n root.path = path;\n if (root.children) {\n root.children.forEach((item) => {\n item.id = `${root.id}/${item.data.name}`;\n item.path = [...path, item.data.name];\n addObjectDataPath(item, item.path);\n });\n }\n}\nfunction addArrayDataPath(root) {\n const name = get(root, ['data', 'name']);\n if (name.replaceAll) {\n root.path = name.replaceAll('.', '/').split('/');\n }\n if (root.children) {\n root.children.forEach((item) => {\n addArrayDataPath(item);\n });\n }\n}\nfunction getTileMethod(tile, ratio) {\n const tiles = {\n treemapBinary,\n treemapDice,\n treemapSlice,\n treemapSliceDice,\n treemapSquarify,\n treemapResquarify,\n };\n const tileMethod = tile === 'treemapSquarify' ? tiles[tile].ratio(ratio) : tiles[tile];\n if (!tileMethod) {\n throw new TypeError('Invalid tile method!');\n }\n return tileMethod;\n}\nexport function treeDataTransform(data, layout, encode) {\n const { value } = encode;\n const tileMethod = getTileMethod(layout.tile, layout.ratio);\n const root = generateHierarchyRoot(data, layout.path);\n if (isArray(data)) {\n addArrayDataPath(root);\n }\n else {\n addObjectDataPath(root);\n }\n // Calculate the value and sort.\n value\n ? root\n .sum((d) => layout.ignoreParentValue && d.children ? 0 : field(value)(d))\n .sort(layout.sort)\n : root.count();\n treemapLayout()\n .tile(tileMethod)\n // @ts-ignore\n .size(layout.size)\n .round(layout.round)\n .paddingInner(layout.paddingInner)\n .paddingOuter(layout.paddingOuter)\n .paddingTop(layout.paddingTop)\n .paddingRight(layout.paddingRight)\n .paddingBottom(layout.paddingBottom)\n .paddingLeft(layout.paddingLeft)(root);\n const nodes = root.descendants().map((d) => Object.assign(d, {\n id: d.id.replace(/^\\//, ''),\n x: [d.x0, d.x1],\n y: [d.y0, d.y1],\n }));\n const filterData = nodes.filter(typeof layout.layer === 'function'\n ? layout.layer\n : (d) => d.height === layout.layer);\n return [filterData, nodes];\n}\n//# sourceMappingURL=treeDataTransform.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix, get, last } from '@antv/util';\nimport { subObject } from '../utils/helper';\nimport { maybeTooltip } from '../utils/mark';\nimport { treeDataTransform } from '../utils/treeDataTransform';\n// Defaults\nconst GET_DEFAULT_LAYOUT_OPTIONS = (width, height) => ({\n tile: 'treemapSquarify',\n ratio: 0.5 * (1 + Math.sqrt(5)),\n size: [width, height],\n round: false,\n ignoreParentValue: true,\n padding: 0,\n paddingInner: 0,\n paddingOuter: 0,\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n sort: (a, b) => b.value - a.value,\n layer: 0,\n});\nconst GET_DEFAULT_OPTIONS = (width, height) => ({\n type: 'rect',\n axis: false,\n encode: {\n x: 'x',\n y: 'y',\n key: 'id',\n color: (d) => d.path[1],\n },\n scale: {\n x: { domain: [0, width], range: [0, 1] },\n y: { domain: [0, height], range: [0, 1] },\n },\n style: {\n stroke: '#fff',\n },\n state: {\n active: { opacity: 0.6 },\n inactive: { opacity: 1 },\n },\n});\nconst DEFAULT_LABEL_OPTIONS = {\n fontSize: 10,\n text: (d) => last(d.path),\n position: 'inside',\n fill: '#000',\n textOverflow: 'clip',\n wordWrap: true,\n maxLines: 1,\n wordWrapWidth: (d) => d.x1 - d.x0,\n};\nconst DEFAULT_TOOLTIP_OPTIONS = {\n title: (d) => { var _a, _b; return (_b = (_a = d.path) === null || _a === void 0 ? void 0 : _a.join) === null || _b === void 0 ? void 0 : _b.call(_a, '.'); },\n items: [{ field: 'value' }],\n};\nconst DEFAULT_TOOLTIP_OPTIONS_DRILL = {\n title: (d) => last(d.path),\n items: [{ field: 'value' }],\n};\nexport const Treemap = (options, context) => {\n const { width, height, options: markOptions } = context;\n const { data, encode = {}, scale, style = {}, layout = {}, labels = [], tooltip = {} } = options, resOptions = __rest(options, [\"data\", \"encode\", \"scale\", \"style\", \"layout\", \"labels\", \"tooltip\"]);\n const treemapDrillDown = get(markOptions, [\n 'interaction',\n 'treemapDrillDown',\n ]);\n // Layout\n const layoutOptions = deepMix({}, GET_DEFAULT_LAYOUT_OPTIONS(width, height), layout, {\n layer: treemapDrillDown\n ? (d) => {\n return d.depth === 1;\n }\n : layout.layer,\n });\n // Data\n const [transformedData, transformedDataAll] = treeDataTransform(data, layoutOptions, encode);\n // Label\n const labelStyle = subObject(style, 'label');\n return deepMix({}, GET_DEFAULT_OPTIONS(width, height), Object.assign(Object.assign({ data: transformedData, scale,\n style, labels: [\n Object.assign(Object.assign({}, DEFAULT_LABEL_OPTIONS), labelStyle),\n ...labels,\n ] }, resOptions), { encode, tooltip: maybeTooltip(tooltip, DEFAULT_TOOLTIP_OPTIONS), axis: false }), treemapDrillDown\n ? {\n interaction: Object.assign(Object.assign({}, resOptions.interaction), { treemapDrillDown: treemapDrillDown\n ? Object.assign(Object.assign({}, treemapDrillDown), { originData: transformedDataAll, layout: layoutOptions }) : undefined }),\n encode: Object.assign({ color: (d) => last(d.path) }, encode),\n tooltip: maybeTooltip(tooltip, DEFAULT_TOOLTIP_OPTIONS_DRILL),\n }\n : {});\n};\nTreemap.props = {};\n//# sourceMappingURL=treemap.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix, isArray } from '@antv/util';\nimport { stratify, hierarchy, pack as packLayout } from 'd3-hierarchy';\nimport { subObject } from '../utils/helper';\nimport { maybeTooltip } from '../utils/mark';\nimport { field } from './utils';\nconst GET_DEFAULT_LAYOUT_OPTIONS = (width, height) => ({\n size: [width, height],\n padding: 0,\n sort: (a, b) => b.value - a.value,\n});\nconst GET_DEFAULT_OPTIONS = (width, height, encode) => ({\n type: 'point',\n axis: false,\n legend: false,\n scale: {\n x: { domain: [0, width] },\n y: { domain: [0, height] },\n size: { type: 'identity' },\n },\n encode: {\n x: 'x',\n y: 'y',\n size: 'r',\n shape: 'point',\n },\n style: {\n fill: !encode.color ? (d) => (d.height === 0 ? '#ddd' : '#fff') : undefined,\n stroke: !encode.color ? (d) => (d.height === 0 ? '' : '#000') : undefined,\n },\n});\nconst DEFAULT_LABEL_OPTIONS = {\n text: '',\n position: 'inside',\n textOverflow: 'clip',\n wordWrap: true,\n maxLines: 1,\n wordWrapWidth: (d) => d.r * 2,\n};\nconst DEFAULT_TOOLTIP_OPTIONS = {\n title: (d) => d.data.name,\n items: [{ field: 'value' }],\n};\nconst dataTransform = (data, layout, encode) => {\n const { value } = encode;\n const root = isArray(data)\n ? stratify().path(layout.path)(data)\n : hierarchy(data);\n value ? root.sum((d) => field(value)(d)).sort(layout.sort) : root.count();\n // @ts-ignore\n packLayout().size(layout.size).padding(layout.padding)(root);\n return root.descendants();\n};\nexport const Pack = (markOptions, context) => {\n const { width, height } = context;\n const { data, encode = {}, scale = {}, style = {}, layout = {}, labels = [], tooltip = {} } = markOptions, resOptions = __rest(markOptions, [\"data\", \"encode\", \"scale\", \"style\", \"layout\", \"labels\", \"tooltip\"]);\n const DEFAULT_OPTIONS = GET_DEFAULT_OPTIONS(width, height, encode);\n const transformedData = dataTransform(data, deepMix({}, GET_DEFAULT_LAYOUT_OPTIONS(width, height), layout), deepMix({}, DEFAULT_OPTIONS['encode'], encode));\n const labelStyle = subObject(style, 'label');\n return deepMix({}, DEFAULT_OPTIONS, Object.assign(Object.assign({ data: transformedData, encode,\n scale,\n style, labels: [\n Object.assign(Object.assign({}, DEFAULT_LABEL_OPTIONS), labelStyle),\n ...labels,\n ] }, resOptions), { tooltip: maybeTooltip(tooltip, DEFAULT_TOOLTIP_OPTIONS), axis: false }));\n};\nPack.props = {};\n//# sourceMappingURL=pack.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { min as d3Min, max as d3Max, quantile, group } from 'd3-array';\nimport { subObject } from '../utils/helper';\nimport { maybeAnimation, subTooltip } from '../utils/mark';\nfunction min(I, V) {\n return d3Min(I, (i) => V[i]);\n}\nfunction max(I, V) {\n return d3Max(I, (i) => V[i]);\n}\nfunction lower(I, V) {\n const lo = q1(I, V) * 2.5 - q3(I, V) * 1.5;\n return d3Min(I, (i) => (V[i] >= lo ? V[i] : NaN));\n}\nfunction q1(I, V) {\n return quantile(I, 0.25, (i) => V[i]);\n}\nfunction q2(I, V) {\n return quantile(I, 0.5, (i) => V[i]);\n}\nfunction q3(I, V) {\n return quantile(I, 0.75, (i) => V[i]);\n}\nfunction upper(I, V) {\n const hi = q3(I, V) * 2.5 - q1(I, V) * 1.5;\n return d3Max(I, (i) => (V[i] <= hi ? V[i] : NaN));\n}\n/**\n * Group marks by x and reserve outlier indexes.\n */\nfunction OutlierY() {\n return (I, mark) => {\n const { encode } = mark;\n const { y, x } = encode;\n const { value: V } = y;\n const { value: X } = x;\n const GI = Array.from(group(I, (i) => X[+i]).values());\n const FI = GI.flatMap((I) => {\n const lo = lower(I, V);\n const hi = upper(I, V);\n return I.filter((i) => V[i] < lo || V[i] > hi);\n });\n return [FI, mark];\n };\n}\nexport const Boxplot = (options) => {\n const { data, encode, style = {}, tooltip = {}, transform, animate } = options, rest = __rest(options, [\"data\", \"encode\", \"style\", \"tooltip\", \"transform\", \"animate\"]);\n const { point = true } = style, restStyle = __rest(style, [\"point\"]);\n const { y } = encode;\n const encodeY = { y, y1: y, y2: y, y3: y, y4: y };\n const qy = { y1: q1, y2: q2, y3: q3 };\n // Tooltips.\n const boxTooltip = subTooltip(tooltip, 'box', {\n items: [\n { channel: 'y', name: 'min' },\n { channel: 'y1', name: 'q1' },\n { channel: 'y2', name: 'q2' },\n { channel: 'y3', name: 'q3' },\n { channel: 'y4', name: 'max' },\n ],\n }, true);\n const pointTooltip = subTooltip(tooltip, 'point', {\n title: { channel: 'x' },\n items: [{ name: 'outlier', channel: 'y' }],\n });\n // Only show min and max instead of lower and upper.\n // Only draw a box.\n if (!point) {\n return Object.assign({ type: 'box', data: data, transform: [\n Object.assign(Object.assign({ type: 'groupX', y: min }, qy), { y4: max }),\n ], encode: Object.assign(Object.assign({}, encode), encodeY), style: restStyle, tooltip: boxTooltip }, rest);\n }\n const boxStyle = subObject(restStyle, 'box');\n const pointStyle = subObject(restStyle, 'point');\n return [\n Object.assign({ type: 'box', data: data, transform: [\n Object.assign(Object.assign({ type: 'groupX', y: lower }, qy), { y4: upper }),\n ], encode: Object.assign(Object.assign({}, encode), encodeY), style: boxStyle, tooltip: boxTooltip, animate: maybeAnimation(animate, 'box') }, rest),\n // Draw outliers.\n {\n type: 'point',\n data: data,\n transform: [{ type: OutlierY }],\n encode,\n style: Object.assign({}, pointStyle),\n tooltip: pointTooltip,\n animate: maybeAnimation(animate, 'point'),\n },\n ];\n};\nBoxplot.props = {};\n//# sourceMappingURL=boxplot.js.map","import { ShapeShape } from '../shape';\nimport { MaybeTuple, MaybeVisualPosition, MaybeFunctionAttribute, } from '../transform';\nimport { basePreInference, createBandOffset, visualMark } from './utils';\nconst shape = {\n shape: ShapeShape,\n};\n/**\n * @todo Unify with text, image and point.\n */\nexport const Shape = (options) => {\n const { cartesian } = options;\n if (cartesian)\n return visualMark;\n return (index, scale, value, coordinate) => {\n const { x: X, y: Y } = value;\n const offset = createBandOffset(scale, value, options);\n const P = Array.from(index, (i) => {\n const p = [+X[i], +Y[i]];\n return [coordinate.map(offset(p, i))];\n });\n return [index, P];\n };\n};\nShape.props = {\n defaultShape: 'shape',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n { name: 'x', required: true },\n { name: 'y', required: true },\n ],\n preInference: [\n ...basePreInference(),\n { type: MaybeTuple },\n { type: MaybeVisualPosition },\n { type: MaybeFunctionAttribute },\n ],\n};\n//# sourceMappingURL=shape.js.map","export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { forceSimulation, forceManyBody, forceLink, forceX, forceY, forceCenter, } from 'd3-force';\nimport { deepMix } from '@antv/util';\nimport { subObject } from '../utils/helper';\nimport { maybeAnimation, subTooltip } from '../utils/mark';\nimport { field, initializeData } from './utils';\nconst DEFAULT_LAYOUT_OPTIONS = {\n joint: true,\n};\nconst DEFAULT_LINK_OPTIONS = {\n type: 'link',\n axis: false,\n legend: false,\n encode: {\n x: [(d) => d.source.x, (d) => d.target.x],\n y: [(d) => d.source.y, (d) => d.target.y],\n },\n style: {\n stroke: '#999',\n strokeOpacity: 0.6,\n },\n};\nconst DEFAULT_NODE_OPTIONS = {\n type: 'point',\n axis: false,\n legend: false,\n encode: {\n x: 'x',\n y: 'y',\n size: 5,\n color: 'group',\n shape: 'point',\n },\n style: {\n stroke: '#fff',\n },\n};\nconst DEFAULT_LABEL_OPTIONS = {\n text: '',\n};\nfunction dataTransform(data, layout, encode) {\n const { nodes, links } = data;\n const { joint, nodeStrength, linkStrength } = layout;\n const { nodeKey = (d) => d.id, linkKey = (d) => d.id } = encode;\n const nodeForce = forceManyBody();\n const linkForce = forceLink(links).id(field(linkKey));\n typeof nodeStrength === 'function' && nodeForce.strength(nodeStrength);\n typeof linkStrength === 'function' && linkForce.strength(linkStrength);\n const simulation = forceSimulation(nodes)\n .force('link', linkForce)\n .force('charge', nodeForce);\n joint\n ? simulation.force('center', forceCenter())\n : simulation.force('x', forceX()).force('y', forceY());\n simulation.stop();\n const n = Math.ceil(Math.log(simulation.alphaMin()) / Math.log(1 - simulation.alphaDecay()));\n for (let i = 0; i < n; i++)\n simulation.tick();\n return {\n nodesData: nodes,\n linksData: links,\n };\n}\nexport const ForceGraph = (options) => {\n const { data, encode: e = {}, scale, style = {}, layout = {}, nodeLabels = [], linkLabels = [], animate = {}, tooltip = {}, } = options;\n const { nodeKey = (d) => d.id, linkKey = (d) => d.id } = e, restEncode = __rest(e, [\"nodeKey\", \"linkKey\"]);\n const encode = Object.assign({ nodeKey, linkKey }, restEncode);\n const nodeEncode = subObject(encode, 'node');\n const linkEncode = subObject(encode, 'link');\n const { links, nodes } = initializeData(data, encode);\n const { nodesData, linksData } = dataTransform({ links, nodes }, deepMix({}, DEFAULT_LAYOUT_OPTIONS, layout), encode);\n const linkTooltip = subTooltip(tooltip, 'link', {\n items: [\n (d) => ({ name: 'source', value: field(linkKey)(d.source) }),\n (d) => ({ name: 'target', value: field(linkKey)(d.target) }),\n ],\n });\n const nodeTooltip = subTooltip(tooltip, 'node', {\n items: [(d) => ({ name: 'key', value: field(nodeKey)(d) })],\n }, true);\n return [\n deepMix({}, DEFAULT_LINK_OPTIONS, {\n data: linksData,\n encode: linkEncode,\n labels: linkLabels,\n style: subObject(style, 'link'),\n tooltip: linkTooltip,\n animate: maybeAnimation(animate, 'link'),\n }),\n deepMix({}, DEFAULT_NODE_OPTIONS, {\n data: nodesData,\n encode: Object.assign({}, nodeEncode),\n scale,\n style: subObject(style, 'node'),\n tooltip: nodeTooltip,\n labels: [\n Object.assign(Object.assign({}, DEFAULT_LABEL_OPTIONS), subObject(style, 'label')),\n ...nodeLabels,\n ],\n animate: maybeAnimation(animate, 'link'),\n }),\n ];\n};\nForceGraph.props = {};\n//# sourceMappingURL=forceGraph.js.map","import { cluster, hierarchy } from 'd3-hierarchy';\nexport const hierarchyFunction = (layoutFunction) => (options) => {\n return (data) => {\n const { field = 'value', nodeSize, separation, sortBy, as = ['x', 'y'], } = options;\n const [x, y] = as;\n // Process root data.\n const root = hierarchy(data, (d) => d.children)\n .sum((d) => d[field])\n .sort(sortBy);\n // Layout\n const c = layoutFunction();\n c.size([1, 1]);\n if (nodeSize)\n c.nodeSize(nodeSize);\n if (separation)\n c.separation(separation);\n c(root);\n const nodes = [];\n root.each((node) => {\n node[x] = node.x;\n node[y] = node.y;\n node.name = node.data.name;\n nodes.push(node);\n });\n const edges = root.links();\n edges.forEach((edge) => {\n edge[x] = [edge.source[x], edge.target[x]];\n edge[y] = [edge.source[y], edge.target[y]];\n });\n return { nodes, edges };\n };\n};\nexport const Cluster = (options) => {\n return hierarchyFunction(cluster)(options);\n};\nCluster.props = {};\n//# sourceMappingURL=cluster.js.map","import { tree } from 'd3-hierarchy';\nimport { hierarchyFunction } from './cluster';\nexport const Tree = (options) => {\n return hierarchyFunction(tree)(options);\n};\nTree.props = {};\n//# sourceMappingURL=tree.js.map","import { deepMix } from '@antv/util';\nimport { subObject } from '../utils/helper';\nimport { Tree as TreeTransform, } from '../data/tree';\nimport { maybeAnimation, subTooltip } from '../utils/mark';\nconst DEFAULT_LAYOUT_OPTIONS = {\n sortBy: (a, b) => b.value - a.value,\n};\nconst DEFAULT_NODE_OPTIONS = {\n axis: false,\n legend: false,\n type: 'point',\n encode: {\n x: 'x',\n y: 'y',\n size: 2,\n shape: 'point',\n },\n};\nconst DEFAULT_LINK_OPTIONS = {\n type: 'link',\n encode: {\n x: 'x',\n y: 'y',\n shape: 'smooth',\n },\n};\nconst DEFAULT_LABEL_OPTIONS = {\n text: '',\n fontSize: 10,\n};\nexport const Tree = (options) => {\n const { data, encode = {}, scale = {}, style = {}, layout = {}, nodeLabels = [], linkLabels = [], animate = {}, tooltip = {}, } = options;\n const valueEncode = encode === null || encode === void 0 ? void 0 : encode.value;\n const { nodes, edges } = TreeTransform(Object.assign(Object.assign(Object.assign({}, DEFAULT_LAYOUT_OPTIONS), layout), { field: valueEncode }))(data);\n const nodeTooltip = subTooltip(tooltip, 'node', {\n title: 'name',\n items: ['value'],\n }, true);\n const linkTooltip = subTooltip(tooltip, 'link', {\n title: '',\n items: [\n (d) => ({ name: 'source', value: d.source.name }),\n (d) => ({ name: 'target', value: d.target.name }),\n ],\n });\n return [\n deepMix({}, DEFAULT_LINK_OPTIONS, {\n data: edges,\n encode: subObject(encode, 'link'),\n scale: subObject(scale, 'link'),\n labels: linkLabels,\n style: Object.assign({ stroke: '#999' }, subObject(style, 'link')),\n tooltip: linkTooltip,\n animate: maybeAnimation(animate, 'link'),\n }),\n deepMix({}, DEFAULT_NODE_OPTIONS, {\n data: nodes,\n scale: subObject(scale, 'node'),\n encode: subObject(encode, 'node'),\n labels: [\n Object.assign(Object.assign({}, DEFAULT_LABEL_OPTIONS), subObject(style, 'label')),\n ...nodeLabels,\n ],\n style: Object.assign({}, subObject(style, 'node')),\n tooltip: nodeTooltip,\n animate: maybeAnimation(animate, 'node'),\n }),\n ];\n};\nTree.props = {};\n//# sourceMappingURL=tree.js.map","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nconst fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { dsvFormat, autoType as d3AutoType } from 'd3-dsv';\nimport { identity } from '../utils/helper';\nexport const Fetch = (options) => {\n const { value, format = value.split('.').pop(), delimiter = ',', autoType = true, } = options;\n return () => __awaiter(void 0, void 0, void 0, function* () {\n const response = yield fetch(value);\n if (format === 'csv') {\n // @see: https://github.com/d3/d3-dsv#dsv_parse\n const str = yield response.text();\n return dsvFormat(delimiter).parse(str, autoType ? d3AutoType : identity);\n }\n else if (format === 'json') {\n return yield response.json();\n }\n throw new Error(`Unknown format: ${format}.`);\n });\n};\nFetch.props = {};\n//# sourceMappingURL=fetch.js.map","export function isEmpty(obj) {\n return !obj || Object.keys(obj).length === 0;\n}\n/**\n * Collapses (or “folds”) one or more data fields into two\n * properties: `key` (contains the original data field name)\n * and `value` (contains the original data value.)\n */\nexport const Fold = (options) => {\n const { fields, key = 'key', value = 'value' } = options;\n return (data) => {\n if (isEmpty(fields))\n return data;\n return data.flatMap((d) => fields.map((f) => (Object.assign(Object.assign({}, d), { [key]: f, [value]: d[f] }))));\n };\n};\nFold.props = {};\n//# sourceMappingURL=fold.js.map","export function defined(d) {\n return d !== undefined && d !== null && !Number.isNaN(d);\n}\n/**\n * Filter data by specified fields and filter callback for each fields.\n * It saves datum with every fields defined by default.\n */\nexport const Filter = (options) => {\n const { callback = defined } = options;\n return (data) => data.filter(callback);\n};\nFilter.props = {};\n//# sourceMappingURL=filter.js.map","export function defined(d) {\n return d !== undefined && d !== null && !Number.isNaN(d);\n}\n/**\n * Sort data similar with Array.prototypo.sort.\n */\nexport const Sort = (options) => {\n const { callback } = options;\n return (data) => (Array.isArray(data) ? [...data].sort(callback) : data);\n};\nSort.props = {};\n//# sourceMappingURL=sort.js.map","function pick(v, fields = []) {\n return fields.reduce((datum, field) => {\n // Pick the data deeply.\n if (field in v) {\n datum[field] = v[field];\n }\n return datum;\n }, {});\n}\n/**\n * Immutable data pick by specified fields.\n */\nexport const Pick = (options) => {\n const { fields } = options;\n return (data) => data.map((d) => pick(d, fields));\n};\nPick.props = {};\n//# sourceMappingURL=pick.js.map","export function isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n/**\n * Immutable data rename by specified fields.\n */\nexport const Rename = (options) => {\n return (data) => {\n if (!options || isEmpty(options))\n return data;\n const rename = (v) => Object.entries(v).reduce((datum, [key, value]) => ((datum[options[key] || key] = value), datum), {});\n return data.map(rename);\n };\n};\nRename.props = {};\n//# sourceMappingURL=rename.js.map","/**\n *\n * @description Converts a random format array into a regular two-dimensional array\n * @example ['a', 'b', ['c', value]] => [['a', defaultValue], ['b', defaultValue], ['c', value]]\n */\nexport function normalizeFields(fields, defaultValue) {\n return fields.map((d) => {\n if (Array.isArray(d)) {\n const [field, value = defaultValue] = d;\n return [field, value];\n }\n return [d, defaultValue];\n });\n}\n//# sourceMappingURL=fields.js.map","import { normalizeFields } from './utils/fields';\n/**\n * Immutable data sort by specified fields.\n */\nexport const SortBy = (options) => {\n const { fields: F = [] } = options;\n const normalizedF = normalizeFields(F, true);\n return (data) => {\n const comparator = (a, b) => normalizedF.reduce((ret, [field, order = true]) => {\n if (ret !== 0) {\n return ret;\n }\n if (order) {\n return a[field] < b[field] ? -1 : +(a[field] !== b[field]);\n }\n else {\n return a[field] > b[field] ? -1 : +(a[field] !== b[field]);\n }\n }, 0);\n return [...data].sort(comparator);\n };\n};\nSortBy.props = {};\n//# sourceMappingURL=sortBy.js.map","export const Inline = (options) => {\n const { value } = options;\n return () => value;\n};\nInline.props = {};\n//# sourceMappingURL=inline.js.map","import { identity } from '../utils/helper';\n/**\n * Connector transfom by function.\n */\nexport const Custom = (options) => {\n const { callback = identity } = options;\n return (data) => callback(data);\n};\nCustom.props = {};\n//# sourceMappingURL=custom.js.map","import { identity } from '../utils/helper';\n/**\n * Map transform by function.\n */\nexport const Map = (options) => {\n const { callback = identity } = options;\n return (data) => (Array.isArray(data) ? data.map(callback) : data);\n};\nMap.props = {};\n//# sourceMappingURL=map.js.map","const cloudRadians = Math.PI / 180, cw = (1 << 11) >> 5, ch = 1 << 11;\nfunction cloudText(d) {\n return d.text;\n}\nfunction cloudFont() {\n return 'serif';\n}\nfunction cloudFontNormal() {\n return 'normal';\n}\nfunction cloudFontSize(d) {\n return d.value;\n}\nfunction cloudRotate() {\n return ~~(Math.random() * 2) * 90;\n}\nfunction cloudPadding() {\n return 1;\n}\nfunction cloudDispatch() {\n return;\n}\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite)\n return;\n const c = contextAndRatio.context, ratio = contextAndRatio.ratio;\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n let x = 0, y = 0, maxh = 0;\n const n = data.length;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font =\n d.style +\n ' ' +\n d.weight +\n ' ' +\n ~~((d.size + 1) / ratio) +\n 'px ' +\n d.font;\n let w = c.measureText(d.text + 'm').width * ratio, h = d.size << 1;\n if (d.rotate) {\n const sr = Math.sin(d.rotate * cloudRadians), cr = Math.cos(d.rotate * cloudRadians), wcr = w * cr, wsr = w * sr, hcr = h * cr, hsr = h * sr;\n w =\n ((Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5) << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n }\n else {\n w = ((w + 0x1f) >> 5) << 5;\n }\n if (h > maxh)\n maxh = h;\n if (x + w >= cw << 5) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch)\n break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate)\n c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n const pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data, sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText)\n continue;\n const w = d.width, w32 = w >> 5;\n let h = d.y1 - d.y0;\n // Zero the buffer\n for (let i = 0; i < h * w32; i++)\n sprite[i] = 0;\n x = d.xoff;\n if (x == null)\n return;\n y = d.yoff;\n let seen = 0, seenRow = -1;\n for (let j = 0; j < h; j++) {\n for (let i = 0; i < w; i++) {\n const k = w32 * j + (i >> 5), m = pixels[((y + j) * (cw << 5) + (x + i)) << 2]\n ? 1 << (31 - (i % 32))\n : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen)\n seenRow = j;\n else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n const sprite = tag.sprite, w = tag.width >> 5, lx = tag.x - (w << 4), sx = lx & 0x7f, msx = 32 - sx, h = tag.y1 - tag.y0;\n let x = (tag.y + tag.y0) * sw + (lx >> 5), last;\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) &\n board[x + i])\n return true;\n }\n x += sw;\n }\n return false;\n}\nfunction cloudBounds(bounds, d) {\n const b0 = bounds[0], b1 = bounds[1];\n if (d.x + d.x0 < b0.x)\n b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y)\n b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x)\n b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y)\n b1.y = d.y + d.y1;\n}\nfunction collideRects(a, b) {\n return (a.x + a.x1 > b[0].x &&\n a.x + a.x0 < b[1].x &&\n a.y + a.y1 > b[0].y &&\n a.y + a.y0 < b[1].y);\n}\nfunction archimedeanSpiral(size) {\n const e = size[0] / size[1];\n return function (t) {\n return [e * (t *= 0.1) * Math.cos(t), t * Math.sin(t)];\n };\n}\nfunction rectangularSpiral(size) {\n const dy = 4, dx = (dy * size[0]) / size[1];\n let x = 0, y = 0;\n return function (t) {\n const sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) {\n case 0:\n x += dx;\n break;\n case 1:\n y += dy;\n break;\n case 2:\n x -= dx;\n break;\n default:\n y -= dy;\n break;\n }\n return [x, y];\n };\n}\n// TODO reuse arrays?\nfunction zeroArray(n) {\n const a = [];\n let i = -1;\n while (++i < n)\n a[i] = 0;\n return a;\n}\nfunction cloudCanvas() {\n return document.createElement('canvas');\n}\nfunction functor(d) {\n return typeof d === 'function'\n ? d\n : function () {\n return d;\n };\n}\nconst spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral,\n};\nexport function tagCloud() {\n let size = [256, 256], text = cloudText, font = cloudFont, fontSize = cloudFontSize, fontWeight = cloudFontNormal, rotate = cloudRotate, padding = cloudPadding, spiral = archimedeanSpiral, random = Math.random, event = cloudDispatch, words = [], timer = null, timeInterval = Infinity;\n const fontStyle = cloudFontNormal;\n const canvas = cloudCanvas;\n const cloud = {};\n cloud.start = function () {\n const [width, height] = size;\n const contextAndRatio = getContext(canvas()), board = cloud.board ? cloud.board : zeroArray((size[0] >> 5) * size[1]), n = words.length, tags = [], data = words\n .map(function (d, i, data) {\n d.text = text.call(this, d, i, data);\n d.font = font.call(this, d, i, data);\n d.style = fontStyle.call(this, d, i, data);\n d.weight = fontWeight.call(this, d, i, data);\n d.rotate = rotate.call(this, d, i, data);\n d.size = ~~fontSize.call(this, d, i, data);\n d.padding = padding.call(this, d, i, data);\n return d;\n })\n .sort(function (a, b) {\n return b.size - a.size;\n });\n let i = -1, bounds = !cloud.board\n ? undefined\n : [\n {\n x: 0,\n y: 0,\n },\n {\n x: width,\n y: height,\n },\n ];\n if (timer)\n clearInterval(timer);\n timer = setInterval(step, 0);\n step();\n function step() {\n const start = Date.now();\n while (Date.now() - start < timeInterval && ++i < n) {\n const d = data[i];\n d.x = (width * (random() + 0.5)) >> 1;\n d.y = (height * (random() + 0.5)) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n event.call(null, 'word', { cloud, word: d });\n tags.push(d);\n if (bounds) {\n if (!cloud.hasImage) {\n // update bounds if image mask not set\n cloudBounds(bounds, d);\n }\n }\n else {\n bounds = [\n { x: d.x + d.x0, y: d.y + d.y0 },\n { x: d.x + d.x1, y: d.y + d.y1 },\n ];\n }\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n cloud._tags = tags;\n cloud._bounds = bounds;\n if (i >= n) {\n cloud.stop();\n event.call(null, 'end', { cloud, words: tags, bounds });\n }\n }\n return cloud;\n };\n cloud.stop = function () {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n return cloud;\n };\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n const ratio = Math.sqrt(canvas.getContext('2d').getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n const context = canvas.getContext('2d');\n context.fillStyle = context.strokeStyle = 'red';\n context.textAlign = 'center';\n return { context, ratio };\n }\n function place(board, tag, bounds) {\n // const perimeter = [{ x: 0, y: 0 }, { x: size[0], y: size[1] }],\n const startX = tag.x, startY = tag.y, maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]), s = spiral(size), dt = random() < 0.5 ? 1 : -1;\n let dxdy, t = -dt, dx, dy;\n while ((dxdy = s((t += dt)))) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta)\n break;\n tag.x = startX + dx;\n tag.y = startY + dy;\n if (tag.x + tag.x0 < 0 ||\n tag.y + tag.y0 < 0 ||\n tag.x + tag.x1 > size[0] ||\n tag.y + tag.y1 > size[1])\n continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n const sprite = tag.sprite, w = tag.width >> 5, sw = size[0] >> 5, lx = tag.x - (w << 4), sx = lx & 0x7f, msx = 32 - sx, h = tag.y1 - tag.y0;\n let last, x = (tag.y + tag.y0) * sw + (lx >> 5);\n for (let j = 0; j < h; j++) {\n last = 0;\n for (let i = 0; i <= w; i++) {\n board[x + i] |=\n (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n delete tag.sprite;\n return true;\n }\n }\n }\n return false;\n }\n cloud.createMask = (img) => {\n const can = document.createElement('canvas');\n const [width, height] = size;\n // 当 width 或 height 为 0 时,调用 cxt.getImageData 会报错\n if (!width || !height) {\n return;\n }\n const w32 = width >> 5;\n const board = zeroArray((width >> 5) * height);\n can.width = width;\n can.height = height;\n const cxt = can.getContext('2d');\n cxt.drawImage(img, 0, 0, img.width, img.height, 0, 0, width, height);\n const imageData = cxt.getImageData(0, 0, width, height).data;\n for (let j = 0; j < height; j++) {\n for (let i = 0; i < width; i++) {\n const k = w32 * j + (i >> 5);\n const tmp = (j * width + i) << 2;\n const flag = imageData[tmp] >= 250 &&\n imageData[tmp + 1] >= 250 &&\n imageData[tmp + 2] >= 250;\n const m = flag ? 1 << (31 - (i % 32)) : 0;\n board[k] |= m;\n }\n }\n cloud.board = board;\n cloud.hasImage = true;\n };\n cloud.timeInterval = function (_) {\n timeInterval = _ == null ? Infinity : _;\n };\n cloud.words = function (_) {\n words = _;\n };\n cloud.size = function (_ = []) {\n size = [+_[0], +_[1]];\n };\n cloud.text = function (_) {\n text = functor(_);\n };\n cloud.font = function (_) {\n font = functor(_);\n };\n cloud.fontWeight = function (_) {\n fontWeight = functor(_);\n };\n cloud.rotate = function (_) {\n rotate = functor(_);\n };\n cloud.spiral = function (_) {\n spiral = spirals[_] || _;\n };\n cloud.fontSize = function (_) {\n fontSize = functor(_);\n };\n cloud.padding = function (_) {\n padding = functor(_);\n };\n cloud.random = function (_) {\n random = functor(_);\n };\n cloud.on = function (_) {\n event = functor(_);\n };\n return cloud;\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n/**\n * @todo Combine with the `Container` util\n */\nexport function flow(target, source) {\n return {\n set(key, normalize, callback) {\n if (source[key] === undefined)\n return this;\n const value = normalize ? normalize.call(null, source[key]) : source[key];\n if (callback)\n callback.call(null, value);\n else if (typeof target[key] === 'function')\n target[key](value);\n else\n target[key] = value;\n return this;\n },\n setAsync(key, normalize, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n if (source[key] === undefined)\n return this;\n const value = normalize\n ? yield normalize.call(null, source[key])\n : source[key];\n if (callback)\n callback.call(null, value);\n else if (typeof target[key] === 'function')\n target[key](value);\n else\n target[key] = value;\n return this;\n });\n },\n };\n}\n//# sourceMappingURL=flow.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { min, max } from 'd3-array';\nimport { tagCloud } from './utils/d3-cloud';\nimport { flow } from './utils/flow';\nconst DEFAULT_OPTIONS = {\n size: [500, 500],\n fontSize: [14, 28],\n};\nexport function processImageMask(img) {\n return new Promise((res, rej) => {\n if (img instanceof HTMLImageElement) {\n res(img);\n return;\n }\n if (typeof img === 'string') {\n const image = new Image();\n image.crossOrigin = 'anonymous';\n image.src = img;\n image.onload = () => res(image);\n image.onerror = () => {\n console.error(`'image ${img} load failed !!!'`);\n rej();\n };\n return;\n }\n rej();\n });\n}\nexport function normalizeFontSize(fontSize, range) {\n if (typeof fontSize === 'function')\n return fontSize;\n if (Array.isArray(fontSize)) {\n const [fMin, fMax] = fontSize;\n if (!range)\n return () => (fMax + fMin) / 2;\n const [min, max] = range;\n if (max === min)\n return () => (fMax + fMin) / 2;\n return ({ value }) => ((fMax - fMin) / (max - min)) * (value - min) + fMin;\n }\n return () => fontSize;\n}\nexport const WordCloud = (options) => {\n return (data) => __awaiter(void 0, void 0, void 0, function* () {\n const cloudOptions = Object.assign({}, DEFAULT_OPTIONS, options);\n const layout = tagCloud();\n yield flow(layout, cloudOptions)\n .set('fontSize', (v) => {\n const arr = data.map((d) => d.value);\n return normalizeFontSize(v, [min(arr), max(arr)]);\n })\n .set('font')\n .set('fontStyle')\n .set('fontWeight')\n .set('padding')\n .set('rotate')\n .set('size')\n .set('spiral')\n .set('timeInterval')\n .set('random')\n .set('text')\n .set('on')\n .setAsync('imageMask', processImageMask, layout.createMask);\n layout.words([...data]);\n const result = layout.start();\n const [cw, ch] = cloudOptions.size;\n const defaultBounds = [\n { x: 0, y: 0 },\n { x: cw, y: ch },\n ];\n const { _bounds: bounds = defaultBounds, _tags, hasImage } = result;\n const tags = _tags.map((_a) => {\n var { x, y } = _a, rest = __rest(_a, [\"x\", \"y\"]);\n return (Object.assign(Object.assign({}, rest), { x: x + cw / 2, y: y + ch / 2 }));\n });\n // Append two data to replace the corner of top-left and bottom-right, avoid calculate the actual bounds will occur some error.\n const [{ x: tlx, y: tly }, { x: brx, y: bry }] = bounds;\n const invisibleText = { text: '', value: 0, opacity: 0, fontSize: 0 };\n tags.push(Object.assign(Object.assign({}, invisibleText), { x: hasImage ? 0 : tlx, y: hasImage ? 0 : tly }), Object.assign(Object.assign({}, invisibleText), { x: hasImage ? cw : brx, y: hasImage ? ch : bry }));\n return tags;\n });\n};\nWordCloud.props = {};\n//# sourceMappingURL=wordCloud.js.map","import { rollup } from 'd3-array';\nfunction field(key) {\n return typeof key === 'string' ? (d) => d[key] : key;\n}\n/**\n * Join data with another dataset by SQL style.\n */\nexport const Join = (options) => {\n // const { fromKey, from, key, unknown = NaN, ...rest } = options;\n const { join, on, select = [], as = select, unknown = NaN } = options;\n const [key, fromKey] = on;\n const fk = field(fromKey);\n const k = field(key);\n const keyData = rollup(join, ([d]) => d, // Get the first matched.\n (d) => fk(d));\n return (data) => data.map((d) => {\n const source = keyData.get(k(d));\n return Object.assign(Object.assign({}, d), select.reduce((prev, key, idx) => ((prev[as[idx]] = source ? source[key] : unknown), prev), {}));\n });\n};\nJoin.props = {};\n//# sourceMappingURL=join.js.map","/**\n * Slice data between `start` ~ `end`.\n * Same with https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice\n */\nexport const Slice = (options) => {\n const { start, end } = options;\n return (data) => data.slice(start, end);\n};\nSlice.props = {};\n//# sourceMappingURL=slice.js.map","'use strict';\n\nvar self = module.exports;\n\nmodule.exports.isNumber = function (x) {\n return (typeof x === 'number');\n};\n\nmodule.exports.findMin = function (arr) {\n if (arr.length === 0) {\n return Infinity;\n }\n\n var curr = arr[0];\n for (var i = 1; i < arr.length; i++) {\n curr = Math.min(curr, arr[i]);\n }\n return curr;\n};\n\nmodule.exports.findMax = function (arr) {\n if (arr.length === 0) {\n return -Infinity;\n }\n\n var curr = arr[0];\n for (var i = 1; i < arr.length; i++) {\n curr = Math.max(curr, arr[i]);\n }\n return curr;\n};\n\nmodule.exports.findMinMulti = function (arr) {\n var curr = self.findMin(arr[0]);\n for (var i = 1; i < arr.length; i++) {\n curr = Math.min(curr, self.findMin(arr[i]));\n }\n return curr;\n};\n\nmodule.exports.findMaxMulti = function (arr) {\n var curr = self.findMax(arr[0]);\n for (var i = 1; i < arr.length; i++) {\n curr = Math.max(curr, self.findMax(arr[i]));\n }\n return curr;\n};\n\nmodule.exports.inside = function (min, max, x) {\n return (min <= x) && (x <= max);\n};\n","'use strict';\n\nvar DEFAULT_SIZE = 50;\nvar DEFAULT_WIDTH = 2;\n\nvar LN_2 = Math.log(2);\nvar self = module.exports;\n\nvar helper = require('./helper');\n\n// Triangle\nfunction kernel(x) {\n return 1 - Math.abs(x);\n}\n\n/**\n * Get min and max value for the pdf, covering all arr data range while respecting options' data\n * @param arr\n * @param options\n * @returns {*}\n */\nmodule.exports.getUnifiedMinMax = function (arr, options) {\n return self.getUnifiedMinMaxMulti([arr], options);\n};\n\nmodule.exports.getUnifiedMinMaxMulti = function (arrMulti, options) {\n options = options || {};\n\n var relaxMin = false;\n var relaxMax = false;\n\n var width = helper.isNumber(options.width) ? options.width : DEFAULT_WIDTH;\n var size = helper.isNumber(options.size) ? options.size : DEFAULT_SIZE;\n var min = helper.isNumber(options.min) ? options.min : (relaxMin = true, helper.findMinMulti(arrMulti));\n var max = helper.isNumber(options.max) ? options.max : (relaxMax = true, helper.findMaxMulti(arrMulti));\n\n var range = max - min;\n var step = range / (size - 1);\n\n // Relax?\n if (relaxMin) {\n min = min - 2 * width * step;\n }\n if (relaxMax) {\n max = max + 2 * width * step;\n }\n\n return {\n min: min,\n max: max\n };\n};\n\nmodule.exports.create = function (arr, options) {\n options = options || {};\n\n if (!arr || (arr.length === 0)) {\n return [];\n }\n\n var size = helper.isNumber(options.size) ? options.size : DEFAULT_SIZE;\n var width = helper.isNumber(options.width) ? options.width : DEFAULT_WIDTH;\n var normalizedMinMax = self.getUnifiedMinMax(arr, {\n size: size,\n width: width,\n min: options.min,\n max: options.max\n });\n\n var min = normalizedMinMax.min;\n var max = normalizedMinMax.max;\n\n var range = max - min;\n var step = range / (size - 1);\n if (range === 0) {\n // Special case...\n return [{x: min, y: 1}];\n }\n\n // Good to go\n\n var buckets = [];\n for (var i = 0; i < size; i++) {\n buckets.push({\n x: min + i * step,\n y: 0\n });\n }\n\n var xToBucket = function (x) {\n return Math.floor((x - min) / step);\n };\n\n var partialArea = generatePartialAreas(kernel, width);\n var fullArea = partialArea[width];\n var c = partialArea[width-1] - partialArea[width-2];\n\n var initalValue = 0;\n arr.forEach(function (x) {\n var bucket = xToBucket(x);\n\n // Totally outside?\n if ((bucket + width < 0) || (bucket - width >= buckets.length)) {\n return;\n }\n\n var start = Math.max(bucket - width, 0);\n var mid = bucket;\n var end = Math.min(bucket + width, buckets.length - 1);\n\n var leftBlockCount = start - (bucket - width);\n var rightBlockCount = (bucket + width) - end;\n var spilledAreaLeft = partialArea[-width-1 + leftBlockCount] || 0;\n var spilledAreaRight = partialArea[-width-1 + rightBlockCount] || 0;\n var weight = fullArea / (fullArea - spilledAreaLeft - spilledAreaRight);\n\n if (leftBlockCount > 0) {\n initalValue += weight * (leftBlockCount - 1) * c;\n }\n\n // Add grads\n var startGradPos = Math.max(0, bucket-width+1);\n if (helper.inside(0, buckets.length-1, startGradPos)) {\n buckets[startGradPos].y += weight * 1 * c;\n }\n if (helper.inside(0, buckets.length-1, mid + 1)) {\n buckets[mid + 1].y -= weight * 2 * c;\n }\n if (helper.inside(0, buckets.length-1, end + 1)) {\n buckets[end + 1].y += weight * 1 * c;\n }\n });\n\n var accumulator = initalValue;\n var gradAccumulator = 0;\n var area = 0;\n buckets.forEach(function (bucket) {\n gradAccumulator += bucket.y;\n accumulator += gradAccumulator;\n\n bucket.y = accumulator;\n area += accumulator;\n });\n\n // Normalize\n if (area > 0) {\n buckets.forEach(function (bucket) {\n bucket.y /= area;\n });\n }\n\n return buckets;\n};\n\nfunction generatePartialAreas(kernel, width) {\n var partialAreas = {};\n\n var accumulator = 0;\n for (var i = -width; i <= width; i++) {\n accumulator += kernel(i/width);\n partialAreas[i] = accumulator;\n }\n\n return partialAreas;\n}\n\nmodule.exports.getExpectedValueFromPdf = function (pdf) {\n if (!pdf || (pdf.length === 0)) {\n return undefined;\n }\n\n var expected = 0;\n\n pdf.forEach(function (obj) {\n expected += obj.x * obj.y;\n });\n\n return expected;\n};\n\nmodule.exports.getXWithLeftTailArea = function (pdf, area) {\n if (!pdf || (pdf.length === 0)) {\n return undefined;\n }\n\n var accumulator = 0;\n var last = 0;\n for (var i = 0; i < pdf.length; i++) {\n last = i;\n accumulator += pdf[i].y;\n\n if (accumulator >= area) {\n break;\n }\n }\n\n return pdf[last].x;\n};\n\nmodule.exports.getPerplexity = function (pdf) {\n if (!pdf || (pdf.length === 0)) {\n return undefined;\n }\n\n var entropy = 0;\n pdf.forEach(function (obj) {\n var ln = Math.log(obj.y);\n\n if (isFinite(ln)) {\n entropy += obj.y * ln;\n }\n });\n entropy = -entropy / LN_2;\n\n return Math.pow(2, entropy);\n};\n","import pdf from 'pdfast';\nimport { group } from 'd3-array';\nexport function defined(d) {\n return d !== undefined && d !== null && !Number.isNaN(d);\n}\n/**\n * Kernel Density Estimation base on [pdfast](https://www.npmjs.com/package/pdfast),\n * generating probability density function (pdf) using triangular kernel,\n * optimized to run in O(N + K).\n */\nexport const KDE = (options) => {\n const { field, groupBy, as = ['y', 'size'], min, max, size = 10, width, } = options;\n const [yField, sizeField] = as;\n return (data) => {\n const gs = Array.from(group(data, (d) => groupBy.map((gb) => d[gb]).join('-')).values());\n return gs.map((g) => {\n const pdfResult = pdf.create(g.map((i) => i[field]), {\n min,\n max,\n size,\n width,\n });\n const _y = pdfResult.map((result) => result.x);\n const _size = pdfResult.map((result) => result.y);\n return Object.assign(Object.assign({}, g[0]), { [yField]: _y, [sizeField]: _size });\n });\n };\n};\nKDE.props = {};\n//# sourceMappingURL=kde.js.map","/** finds the zeros of a function, given two starting points (which must\n * have opposite signs */\nexport function bisect(f, a, b, parameters) {\n parameters = parameters || {};\n var maxIterations = parameters.maxIterations || 100,\n tolerance = parameters.tolerance || 1e-10,\n fA = f(a),\n fB = f(b),\n delta = b - a;\n\n if (fA * fB > 0) {\n throw \"Initial bisect points must have opposite signs\";\n }\n\n if (fA === 0) return a;\n if (fB === 0) return b;\n\n for (var i = 0; i < maxIterations; ++i) {\n delta /= 2;\n var mid = a + delta,\n fMid = f(mid);\n\n if (fMid * fA >= 0) {\n a = mid;\n }\n\n if ((Math.abs(delta) < tolerance) || (fMid === 0)) {\n return mid;\n }\n }\n return a + delta;\n}\n","// need some basic operations on vectors, rather than adding a dependency,\n// just define here\nexport function zeros(x) { var r = new Array(x); for (var i = 0; i < x; ++i) { r[i] = 0; } return r; }\nexport function zerosM(x,y) { return zeros(x).map(function() { return zeros(y); }); }\n\nexport function dot(a, b) {\n var ret = 0;\n for (var i = 0; i < a.length; ++i) {\n ret += a[i] * b[i];\n }\n return ret;\n}\n\nexport function norm2(a) {\n return Math.sqrt(dot(a, a));\n}\n\nexport function scale(ret, value, c) {\n for (var i = 0; i < value.length; ++i) {\n ret[i] = value[i] * c;\n }\n}\n\nexport function weightedSum(ret, w1, v1, w2, v2) {\n for (var j = 0; j < ret.length; ++j) {\n ret[j] = w1 * v1[j] + w2 * v2[j];\n }\n}\n","import {dot, norm2, weightedSum} from \"./blas1\";\n\n/** minimizes a function using the downhill simplex method */\nexport function nelderMead(f, x0, parameters) {\n parameters = parameters || {};\n\n var maxIterations = parameters.maxIterations || x0.length * 200,\n nonZeroDelta = parameters.nonZeroDelta || 1.05,\n zeroDelta = parameters.zeroDelta || 0.001,\n minErrorDelta = parameters.minErrorDelta || 1e-6,\n minTolerance = parameters.minErrorDelta || 1e-5,\n rho = (parameters.rho !== undefined) ? parameters.rho : 1,\n chi = (parameters.chi !== undefined) ? parameters.chi : 2,\n psi = (parameters.psi !== undefined) ? parameters.psi : -0.5,\n sigma = (parameters.sigma !== undefined) ? parameters.sigma : 0.5,\n maxDiff;\n\n // initialize simplex.\n var N = x0.length,\n simplex = new Array(N + 1);\n simplex[0] = x0;\n simplex[0].fx = f(x0);\n simplex[0].id = 0;\n for (var i = 0; i < N; ++i) {\n var point = x0.slice();\n point[i] = point[i] ? point[i] * nonZeroDelta : zeroDelta;\n simplex[i+1] = point;\n simplex[i+1].fx = f(point);\n simplex[i+1].id = i+1;\n }\n\n function updateSimplex(value) {\n for (var i = 0; i < value.length; i++) {\n simplex[N][i] = value[i];\n }\n simplex[N].fx = value.fx;\n }\n\n var sortOrder = function(a, b) { return a.fx - b.fx; };\n\n var centroid = x0.slice(),\n reflected = x0.slice(),\n contracted = x0.slice(),\n expanded = x0.slice();\n\n for (var iteration = 0; iteration < maxIterations; ++iteration) {\n simplex.sort(sortOrder);\n\n if (parameters.history) {\n // copy the simplex (since later iterations will mutate) and\n // sort it to have a consistent order between iterations\n var sortedSimplex = simplex.map(function (x) {\n var state = x.slice();\n state.fx = x.fx;\n state.id = x.id;\n return state;\n });\n sortedSimplex.sort(function(a,b) { return a.id - b.id; });\n\n parameters.history.push({x: simplex[0].slice(),\n fx: simplex[0].fx,\n simplex: sortedSimplex});\n }\n\n maxDiff = 0;\n for (i = 0; i < N; ++i) {\n maxDiff = Math.max(maxDiff, Math.abs(simplex[0][i] - simplex[1][i]));\n }\n\n if ((Math.abs(simplex[0].fx - simplex[N].fx) < minErrorDelta) &&\n (maxDiff < minTolerance)) {\n break;\n }\n\n // compute the centroid of all but the worst point in the simplex\n for (i = 0; i < N; ++i) {\n centroid[i] = 0;\n for (var j = 0; j < N; ++j) {\n centroid[i] += simplex[j][i];\n }\n centroid[i] /= N;\n }\n\n // reflect the worst point past the centroid and compute loss at reflected\n // point\n var worst = simplex[N];\n weightedSum(reflected, 1+rho, centroid, -rho, worst);\n reflected.fx = f(reflected);\n\n // if the reflected point is the best seen, then possibly expand\n if (reflected.fx < simplex[0].fx) {\n weightedSum(expanded, 1+chi, centroid, -chi, worst);\n expanded.fx = f(expanded);\n if (expanded.fx < reflected.fx) {\n updateSimplex(expanded);\n } else {\n updateSimplex(reflected);\n }\n }\n\n // if the reflected point is worse than the second worst, we need to\n // contract\n else if (reflected.fx >= simplex[N-1].fx) {\n var shouldReduce = false;\n\n if (reflected.fx > worst.fx) {\n // do an inside contraction\n weightedSum(contracted, 1+psi, centroid, -psi, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < worst.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n } else {\n // do an outside contraction\n weightedSum(contracted, 1-psi * rho, centroid, psi*rho, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < reflected.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n }\n\n if (shouldReduce) {\n // if we don't contract here, we're done\n if (sigma >= 1) break;\n\n // do a reduction\n for (i = 1; i < simplex.length; ++i) {\n weightedSum(simplex[i], 1 - sigma, simplex[0], sigma, simplex[i]);\n simplex[i].fx = f(simplex[i]);\n }\n }\n } else {\n updateSimplex(reflected);\n }\n }\n\n simplex.sort(sortOrder);\n return {fx : simplex[0].fx,\n x : simplex[0]};\n}\n","import {dot, weightedSum} from \"./blas1\";\n\n\n/// searches along line 'pk' for a point that satifies the wolfe conditions\n/// See 'Numerical Optimization' by Nocedal and Wright p59-60\n/// f : objective function\n/// pk : search direction\n/// current: object containing current gradient/loss\n/// next: output: contains next gradient/loss\n/// returns a: step size taken\nexport function wolfeLineSearch(f, pk, current, next, a, c1, c2) {\n var phi0 = current.fx, phiPrime0 = dot(current.fxprime, pk),\n phi = phi0, phi_old = phi0,\n phiPrime = phiPrime0,\n a0 = 0;\n\n a = a || 1;\n c1 = c1 || 1e-6;\n c2 = c2 || 0.1;\n\n function zoom(a_lo, a_high, phi_lo) {\n for (var iteration = 0; iteration < 16; ++iteration) {\n a = (a_lo + a_high)/2;\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n\n if ((phi > (phi0 + c1 * a * phiPrime0)) ||\n (phi >= phi_lo)) {\n a_high = a;\n\n } else {\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime * (a_high - a_lo) >=0) {\n a_high = a_lo;\n }\n\n a_lo = a;\n phi_lo = phi;\n }\n }\n\n return 0;\n }\n\n for (var iteration = 0; iteration < 10; ++iteration) {\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n if ((phi > (phi0 + c1 * a * phiPrime0)) ||\n (iteration && (phi >= phi_old))) {\n return zoom(a0, a, phi_old);\n }\n\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime >= 0 ) {\n return zoom(a, a0, phi);\n }\n\n phi_old = phi;\n a0 = a;\n a *= 2;\n }\n\n return a;\n}\n","import {dot, norm2, scale, weightedSum} from \"./blas1\";\nimport {wolfeLineSearch} from \"./linesearch\";\n\nexport function conjugateGradient(f, initial, params) {\n // allocate all memory up front here, keep out of the loop for perfomance\n // reasons\n var current = {x: initial.slice(), fx: 0, fxprime: initial.slice()},\n next = {x: initial.slice(), fx: 0, fxprime: initial.slice()},\n yk = initial.slice(),\n pk, temp,\n a = 1,\n maxIterations;\n\n params = params || {};\n maxIterations = params.maxIterations || initial.length * 20;\n\n current.fx = f(current.x, current.fxprime);\n pk = current.fxprime.slice();\n scale(pk, current.fxprime,-1);\n\n for (var i = 0; i < maxIterations; ++i) {\n a = wolfeLineSearch(f, pk, current, next, a);\n\n // todo: history in wrong spot?\n if (params.history) {\n params.history.push({x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a});\n }\n\n if (!a) {\n // faiiled to find point that satifies wolfe conditions.\n // reset direction for next iteration\n scale(pk, current.fxprime, -1);\n\n } else {\n // update direction using Polak–Ribiere CG method\n weightedSum(yk, 1, next.fxprime, -1, current.fxprime);\n\n var delta_k = dot(current.fxprime, current.fxprime),\n beta_k = Math.max(0, dot(yk, next.fxprime) / delta_k);\n\n weightedSum(pk, beta_k, pk, -1, next.fxprime);\n\n temp = current;\n current = next;\n next = temp;\n }\n\n if (norm2(current.fxprime) <= 1e-5) {\n break;\n }\n }\n\n if (params.history) {\n params.history.push({x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a});\n }\n\n return current;\n}\n","const SMALL = 1e-10;\n/**\n * Returns the intersection area of a bunch of circles (where each circle\n * is an object having an x,y and radius property)\n */\nexport function intersectionArea(circles, stats) {\n // Get all the intersection points of the circles\n const intersectionPoints = getIntersectionPoints(circles);\n // Filter out points that aren't included in all the circles\n const innerPoints = intersectionPoints.filter(function (p) {\n return containedInCircles(p, circles);\n });\n let arcArea = 0, polygonArea = 0, i;\n const arcs = [];\n // If we have intersection points that are within all the circles,\n // then figure out the area contained by them\n if (innerPoints.length > 1) {\n // Sort the points by angle from the center of the polygon, which lets\n // us just iterate over points to get the edges\n const center = getCenter(innerPoints);\n for (i = 0; i < innerPoints.length; ++i) {\n const p = innerPoints[i];\n p.angle = Math.atan2(p.x - center.x, p.y - center.y);\n }\n innerPoints.sort(function (a, b) {\n return b.angle - a.angle;\n });\n // Iterate over all points, get arc between the points\n // and update the areas\n let p2 = innerPoints[innerPoints.length - 1];\n for (i = 0; i < innerPoints.length; ++i) {\n const p1 = innerPoints[i];\n // Polygon area updates easily ...\n polygonArea += (p2.x + p1.x) * (p1.y - p2.y);\n // Updating the arc area is a little more involved\n const midPoint = { x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 };\n let arc = null;\n for (let j = 0; j < p1.parentIndex.length; ++j) {\n if (p2.parentIndex.indexOf(p1.parentIndex[j]) > -1) {\n // Figure out the angle halfway between the two points\n // on the current circle\n const circle = circles[p1.parentIndex[j]], a1 = Math.atan2(p1.x - circle.x, p1.y - circle.y), a2 = Math.atan2(p2.x - circle.x, p2.y - circle.y);\n let angleDiff = a2 - a1;\n if (angleDiff < 0) {\n angleDiff += 2 * Math.PI;\n }\n // and use that angle to figure out the width of the\n // arc\n const a = a2 - angleDiff / 2;\n let width = distance(midPoint, {\n x: circle.x + circle.radius * Math.sin(a),\n y: circle.y + circle.radius * Math.cos(a),\n });\n // Clamp the width to the largest is can actually be\n // (sometimes slightly overflows because of FP errors)\n if (width > circle.radius * 2) {\n width = circle.radius * 2;\n }\n // Pick the circle whose arc has the smallest width\n if (arc === null || arc.width > width) {\n arc = { circle: circle, width: width, p1: p1, p2: p2 };\n }\n }\n }\n if (arc !== null) {\n arcs.push(arc);\n arcArea += circleArea(arc.circle.radius, arc.width);\n p2 = p1;\n }\n }\n }\n else {\n // No intersection points, is either disjoint - or is completely\n // overlapped. figure out which by examining the smallest circle\n let smallest = circles[0];\n for (i = 1; i < circles.length; ++i) {\n if (circles[i].radius < smallest.radius) {\n smallest = circles[i];\n }\n }\n // Make sure the smallest circle is completely contained in all\n // the other circles\n let disjoint = false;\n for (i = 0; i < circles.length; ++i) {\n if (distance(circles[i], smallest) >\n Math.abs(smallest.radius - circles[i].radius)) {\n disjoint = true;\n break;\n }\n }\n if (disjoint) {\n arcArea = polygonArea = 0;\n }\n else {\n arcArea = smallest.radius * smallest.radius * Math.PI;\n arcs.push({\n circle: smallest,\n p1: { x: smallest.x, y: smallest.y + smallest.radius },\n p2: { x: smallest.x - SMALL, y: smallest.y + smallest.radius },\n width: smallest.radius * 2,\n });\n }\n }\n polygonArea /= 2;\n if (stats) {\n stats.area = arcArea + polygonArea;\n stats.arcArea = arcArea;\n stats.polygonArea = polygonArea;\n stats.arcs = arcs;\n stats.innerPoints = innerPoints;\n stats.intersectionPoints = intersectionPoints;\n }\n return arcArea + polygonArea;\n}\n/**\n * Returns whether a point is contained by all of a list of circles\n */\nexport function containedInCircles(point, circles) {\n for (let i = 0; i < circles.length; ++i) {\n if (distance(point, circles[i]) > circles[i].radius + SMALL) {\n return false;\n }\n }\n return true;\n}\n/** Gets all intersection points between a bunch of circles */\nfunction getIntersectionPoints(circles) {\n const ret = [];\n for (let i = 0; i < circles.length; ++i) {\n for (let j = i + 1; j < circles.length; ++j) {\n const intersect = circleCircleIntersection(circles[i], circles[j]);\n for (let k = 0; k < intersect.length; ++k) {\n const p = intersect[k];\n p.parentIndex = [i, j];\n ret.push(p);\n }\n }\n }\n return ret;\n}\n/** Circular segment area calculation. See http://mathworld.wolfram.com/CircularSegment.html */\nexport function circleArea(r, width) {\n return (r * r * Math.acos(1 - width / r) -\n (r - width) * Math.sqrt(width * (2 * r - width)));\n}\n/** Euclidean distance between two points */\nexport function distance(p1, p2) {\n return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));\n}\n/** Returns the overlap area of two circles of radius r1 and r2 - that\nhave their centers separated by distance d. Simpler faster\ncircle intersection for only two circles */\nexport function circleOverlap(r1, r2, d) {\n // no overlap\n if (d >= r1 + r2) {\n return 0;\n }\n // Completely overlapped\n if (d <= Math.abs(r1 - r2)) {\n return Math.PI * Math.min(r1, r2) * Math.min(r1, r2);\n }\n const w1 = r1 - (d * d - r2 * r2 + r1 * r1) / (2 * d), w2 = r2 - (d * d - r1 * r1 + r2 * r2) / (2 * d);\n return circleArea(r1, w1) + circleArea(r2, w2);\n}\n/** Given two circles (containing a x/y/radius attributes),\nreturns the intersecting points if possible.\nnote: doesn't handle cases where there are infinitely many\nintersection points (circles are equivalent):, or only one intersection point*/\nexport function circleCircleIntersection(p1, p2) {\n const d = distance(p1, p2), r1 = p1.radius, r2 = p2.radius;\n // If to far away, or self contained - can't be done\n if (d >= r1 + r2 || d <= Math.abs(r1 - r2)) {\n return [];\n }\n const a = (r1 * r1 - r2 * r2 + d * d) / (2 * d), h = Math.sqrt(r1 * r1 - a * a), x0 = p1.x + (a * (p2.x - p1.x)) / d, y0 = p1.y + (a * (p2.y - p1.y)) / d, rx = -(p2.y - p1.y) * (h / d), ry = -(p2.x - p1.x) * (h / d);\n return [\n { x: x0 + rx, y: y0 - ry },\n { x: x0 - rx, y: y0 + ry },\n ];\n}\n/** Returns the center of a bunch of points */\nexport function getCenter(points) {\n const center = { x: 0, y: 0 };\n for (let i = 0; i < points.length; ++i) {\n center.x += points[i].x;\n center.y += points[i].y;\n }\n center.x /= points.length;\n center.y /= points.length;\n return center;\n}\n//# sourceMappingURL=circleintersection.js.map","import { bisect, conjugateGradient, nelderMead, norm2, scale, zeros, zerosM, } from 'fmin';\nimport { circleCircleIntersection, circleOverlap, distance, intersectionArea, } from './circleintersection';\n/** given a list of set objects, and their corresponding overlaps.\nupdates the (x, y, radius) attribute on each set such that their positions\nroughly correspond to the desired overlaps */\nexport function venn(areas, parameters) {\n parameters = parameters || {};\n parameters.maxIterations = parameters.maxIterations || 500;\n const initialLayout = parameters.initialLayout || bestInitialLayout;\n const loss = parameters.lossFunction || lossFunction;\n // add in missing pairwise areas as having 0 size\n areas = addMissingAreas(areas);\n // initial layout is done greedily\n const circles = initialLayout(areas, parameters);\n // transform x/y coordinates to a vector to optimize\n const initial = [], setids = [];\n let setid;\n for (setid in circles) {\n // eslint-disable-next-line\n if (circles.hasOwnProperty(setid)) {\n initial.push(circles[setid].x);\n initial.push(circles[setid].y);\n setids.push(setid);\n }\n }\n // optimize initial layout from our loss function\n const solution = nelderMead(function (values) {\n const current = {};\n for (let i = 0; i < setids.length; ++i) {\n const setid = setids[i];\n current[setid] = {\n x: values[2 * i],\n y: values[2 * i + 1],\n radius: circles[setid].radius,\n };\n }\n return loss(current, areas);\n }, initial, parameters);\n // transform solution vector back to x/y points\n const positions = solution.x;\n for (let i = 0; i < setids.length; ++i) {\n setid = setids[i];\n circles[setid].x = positions[2 * i];\n circles[setid].y = positions[2 * i + 1];\n }\n return circles;\n}\nconst SMALL = 1e-10;\n/** Returns the distance necessary for two circles of radius r1 + r2 to\nhave the overlap area 'overlap' */\nexport function distanceFromIntersectArea(r1, r2, overlap) {\n // handle complete overlapped circles\n if (Math.min(r1, r2) * Math.min(r1, r2) * Math.PI <= overlap + SMALL) {\n return Math.abs(r1 - r2);\n }\n return bisect(function (distance) {\n return circleOverlap(r1, r2, distance) - overlap;\n }, 0, r1 + r2);\n}\n/** Missing pair-wise intersection area data can cause problems:\n treating as an unknown means that sets will be laid out overlapping,\n which isn't what people expect. To reflect that we want disjoint sets\n here, set the overlap to 0 for all missing pairwise set intersections */\nfunction addMissingAreas(areas) {\n areas = areas.slice();\n // two circle intersections that aren't defined\n const ids = [], pairs = {};\n let i, j, a, b;\n for (i = 0; i < areas.length; ++i) {\n const area = areas[i];\n if (area.sets.length == 1) {\n ids.push(area.sets[0]);\n }\n else if (area.sets.length == 2) {\n a = area.sets[0];\n b = area.sets[1];\n // @ts-ignore\n pairs[[a, b]] = true;\n // @ts-ignore\n pairs[[b, a]] = true;\n }\n }\n ids.sort((a, b) => {\n return a > b ? 1 : -1;\n });\n for (i = 0; i < ids.length; ++i) {\n a = ids[i];\n for (j = i + 1; j < ids.length; ++j) {\n b = ids[j];\n // @ts-ignore\n if (!([a, b] in pairs)) {\n areas.push({ sets: [a, b], size: 0 });\n }\n }\n }\n return areas;\n}\n/// Returns two matrices, one of the euclidean distances between the sets\n/// and the other indicating if there are subset or disjoint set relationships\nexport function getDistanceMatrices(areas, sets, setids) {\n // initialize an empty distance matrix between all the points\n const distances = zerosM(sets.length, sets.length), constraints = zerosM(sets.length, sets.length);\n // compute required distances between all the sets such that\n // the areas match\n areas\n .filter(function (x) {\n return x.sets.length == 2;\n })\n .map(function (current) {\n const left = setids[current.sets[0]], right = setids[current.sets[1]], r1 = Math.sqrt(sets[left].size / Math.PI), r2 = Math.sqrt(sets[right].size / Math.PI), distance = distanceFromIntersectArea(r1, r2, current.size);\n distances[left][right] = distances[right][left] = distance;\n // also update constraints to indicate if its a subset or disjoint\n // relationship\n let c = 0;\n if (current.size + 1e-10 >= Math.min(sets[left].size, sets[right].size)) {\n c = 1;\n }\n else if (current.size <= 1e-10) {\n c = -1;\n }\n constraints[left][right] = constraints[right][left] = c;\n });\n return { distances: distances, constraints: constraints };\n}\n/// computes the gradient and loss simulatenously for our constrained MDS optimizer\nfunction constrainedMDSGradient(x, fxprime, distances, constraints) {\n let loss = 0, i;\n for (i = 0; i < fxprime.length; ++i) {\n fxprime[i] = 0;\n }\n for (i = 0; i < distances.length; ++i) {\n const xi = x[2 * i], yi = x[2 * i + 1];\n for (let j = i + 1; j < distances.length; ++j) {\n const xj = x[2 * j], yj = x[2 * j + 1], dij = distances[i][j], constraint = constraints[i][j];\n const squaredDistance = (xj - xi) * (xj - xi) + (yj - yi) * (yj - yi), distance = Math.sqrt(squaredDistance), delta = squaredDistance - dij * dij;\n if ((constraint > 0 && distance <= dij) ||\n (constraint < 0 && distance >= dij)) {\n continue;\n }\n loss += 2 * delta * delta;\n fxprime[2 * i] += 4 * delta * (xi - xj);\n fxprime[2 * i + 1] += 4 * delta * (yi - yj);\n fxprime[2 * j] += 4 * delta * (xj - xi);\n fxprime[2 * j + 1] += 4 * delta * (yj - yi);\n }\n }\n return loss;\n}\n/// takes the best working variant of either constrained MDS or greedy\nexport function bestInitialLayout(areas, params) {\n let initial = greedyLayout(areas, params);\n const loss = params.lossFunction || lossFunction;\n // greedylayout is sufficient for all 2/3 circle cases. try out\n // constrained MDS for higher order problems, take its output\n // if it outperforms. (greedy is aesthetically better on 2/3 circles\n // since it axis aligns)\n if (areas.length >= 8) {\n const constrained = constrainedMDSLayout(areas, params), constrainedLoss = loss(constrained, areas), greedyLoss = loss(initial, areas);\n if (constrainedLoss + 1e-8 < greedyLoss) {\n initial = constrained;\n }\n }\n return initial;\n}\n/// use the constrained MDS variant to generate an initial layout\nexport function constrainedMDSLayout(areas, params) {\n params = params || {};\n const restarts = params.restarts || 10;\n // bidirectionally map sets to a rowid (so we can create a matrix)\n const sets = [], setids = {};\n let i;\n for (i = 0; i < areas.length; ++i) {\n const area = areas[i];\n if (area.sets.length == 1) {\n setids[area.sets[0]] = sets.length;\n sets.push(area);\n }\n }\n const matrices = getDistanceMatrices(areas, sets, setids);\n let distances = matrices.distances;\n const constraints = matrices.constraints;\n // keep distances bounded, things get messed up otherwise.\n // TODO: proper preconditioner?\n const norm = norm2(distances.map(norm2)) / distances.length;\n distances = distances.map(function (row) {\n return row.map(function (value) {\n return value / norm;\n });\n });\n const obj = function (x, fxprime) {\n return constrainedMDSGradient(x, fxprime, distances, constraints);\n };\n let best, current;\n for (i = 0; i < restarts; ++i) {\n const initial = zeros(distances.length * 2).map(Math.random);\n current = conjugateGradient(obj, initial, params);\n if (!best || current.fx < best.fx) {\n best = current;\n }\n }\n const positions = best.x;\n // translate rows back to (x,y,radius) coordinates\n const circles = {};\n for (i = 0; i < sets.length; ++i) {\n const set = sets[i];\n circles[set.sets[0]] = {\n x: positions[2 * i] * norm,\n y: positions[2 * i + 1] * norm,\n radius: Math.sqrt(set.size / Math.PI),\n };\n }\n if (params.history) {\n for (i = 0; i < params.history.length; ++i) {\n scale(params.history[i].x, norm);\n }\n }\n return circles;\n}\n/** Lays out a Venn diagram greedily, going from most overlapped sets to\nleast overlapped, attempting to position each new set such that the\noverlapping areas to already positioned sets are basically right */\nexport function greedyLayout(areas, params) {\n const loss = params && params.lossFunction ? params.lossFunction : lossFunction;\n // define a circle for each set\n const circles = {}, setOverlaps = {};\n let set;\n for (let i = 0; i < areas.length; ++i) {\n const area = areas[i];\n if (area.sets.length == 1) {\n set = area.sets[0];\n circles[set] = {\n x: 1e10,\n y: 1e10,\n // rowid: circles.length, // fix to ->\n rowid: Object.keys(circles).length,\n size: area.size,\n radius: Math.sqrt(area.size / Math.PI),\n };\n setOverlaps[set] = [];\n }\n }\n areas = areas.filter(function (a) {\n return a.sets.length == 2;\n });\n // map each set to a list of all the other sets that overlap it\n for (let i = 0; i < areas.length; ++i) {\n const current = areas[i];\n // eslint-disable-next-line\n let weight = current.hasOwnProperty('weight') ? current.weight : 1.0;\n const left = current.sets[0], right = current.sets[1];\n // completely overlapped circles shouldn't be positioned early here\n if (current.size + SMALL >=\n Math.min(circles[left].size, circles[right].size)) {\n weight = 0;\n }\n setOverlaps[left].push({ set: right, size: current.size, weight: weight });\n setOverlaps[right].push({ set: left, size: current.size, weight: weight });\n }\n // get list of most overlapped sets\n const mostOverlapped = [];\n for (set in setOverlaps) {\n // eslint-disable-next-line\n if (setOverlaps.hasOwnProperty(set)) {\n let size = 0;\n for (let i = 0; i < setOverlaps[set].length; ++i) {\n size += setOverlaps[set][i].size * setOverlaps[set][i].weight;\n }\n mostOverlapped.push({ set: set, size: size });\n }\n }\n // sort by size desc\n function sortOrder(a, b) {\n return b.size - a.size;\n }\n mostOverlapped.sort(sortOrder);\n // keep track of what sets have been laid out\n const positioned = {};\n function isPositioned(element) {\n return element.set in positioned;\n }\n // adds a point to the output\n function positionSet(point, index) {\n circles[index].x = point.x;\n circles[index].y = point.y;\n positioned[index] = true;\n }\n // add most overlapped set at (0,0)\n positionSet({ x: 0, y: 0 }, mostOverlapped[0].set);\n // get distances between all points. TODO, necessary?\n // answer: probably not\n // var distances = venn.getDistanceMatrices(circles, areas).distances;\n for (let i = 1; i < mostOverlapped.length; ++i) {\n const setIndex = mostOverlapped[i].set, overlap = setOverlaps[setIndex].filter(isPositioned);\n set = circles[setIndex];\n overlap.sort(sortOrder);\n if (overlap.length === 0) {\n // this shouldn't happen anymore with addMissingAreas\n throw 'ERROR: missing pairwise overlap information';\n }\n const points = [];\n for (let j = 0; j < overlap.length; ++j) {\n // get appropriate distance from most overlapped already added set\n const p1 = circles[overlap[j].set], d1 = distanceFromIntersectArea(set.radius, p1.radius, overlap[j].size);\n // sample positions at 90 degrees for maximum aesthetics\n points.push({ x: p1.x + d1, y: p1.y });\n points.push({ x: p1.x - d1, y: p1.y });\n points.push({ y: p1.y + d1, x: p1.x });\n points.push({ y: p1.y - d1, x: p1.x });\n // if we have at least 2 overlaps, then figure out where the\n // set should be positioned analytically and try those too\n for (let k = j + 1; k < overlap.length; ++k) {\n const p2 = circles[overlap[k].set], d2 = distanceFromIntersectArea(set.radius, p2.radius, overlap[k].size);\n const extraPoints = circleCircleIntersection({ x: p1.x, y: p1.y, radius: d1 }, { x: p2.x, y: p2.y, radius: d2 });\n for (let l = 0; l < extraPoints.length; ++l) {\n points.push(extraPoints[l]);\n }\n }\n }\n // we have some candidate positions for the set, examine loss\n // at each position to figure out where to put it at\n let bestLoss = 1e50, bestPoint = points[0];\n for (let j = 0; j < points.length; ++j) {\n circles[setIndex].x = points[j].x;\n circles[setIndex].y = points[j].y;\n const localLoss = loss(circles, areas);\n if (localLoss < bestLoss) {\n bestLoss = localLoss;\n bestPoint = points[j];\n }\n }\n positionSet(bestPoint, setIndex);\n }\n return circles;\n}\n/** Given a bunch of sets, and the desired overlaps between these sets - computes\nthe distance from the actual overlaps to the desired overlaps. Note that\nthis method ignores overlaps of more than 2 circles */\nexport function lossFunction(sets, overlaps) {\n let output = 0;\n function getCircles(indices) {\n return indices.map(function (i) {\n return sets[i];\n });\n }\n for (let i = 0; i < overlaps.length; ++i) {\n const area = overlaps[i];\n let overlap;\n if (area.sets.length == 1) {\n continue;\n }\n else if (area.sets.length == 2) {\n const left = sets[area.sets[0]], right = sets[area.sets[1]];\n overlap = circleOverlap(left.radius, right.radius, distance(left, right));\n }\n else {\n overlap = intersectionArea(getCircles(area.sets));\n }\n // eslint-disable-next-line\n const weight = area.hasOwnProperty('weight') ? area.weight : 1.0;\n output += weight * (overlap - area.size) * (overlap - area.size);\n }\n return output;\n}\n// orientates a bunch of circles to point in orientation\nfunction orientateCircles(circles, orientation, orientationOrder) {\n if (orientationOrder === null) {\n circles.sort(function (a, b) {\n return b.radius - a.radius;\n });\n }\n else {\n circles.sort(orientationOrder);\n }\n let i;\n // shift circles so largest circle is at (0, 0)\n if (circles.length > 0) {\n const largestX = circles[0].x, largestY = circles[0].y;\n for (i = 0; i < circles.length; ++i) {\n circles[i].x -= largestX;\n circles[i].y -= largestY;\n }\n }\n if (circles.length == 2) {\n // if the second circle is a subset of the first, arrange so that\n // it is off to one side. hack for https://github.com/benfred/venn.js/issues/120\n const dist = distance(circles[0], circles[1]);\n if (dist < Math.abs(circles[1].radius - circles[0].radius)) {\n circles[1].x =\n circles[0].x + circles[0].radius - circles[1].radius - 1e-10;\n circles[1].y = circles[0].y;\n }\n }\n // rotate circles so that second largest is at an angle of 'orientation'\n // from largest\n if (circles.length > 1) {\n const rotation = Math.atan2(circles[1].x, circles[1].y) - orientation;\n let x, y;\n const c = Math.cos(rotation), s = Math.sin(rotation);\n for (i = 0; i < circles.length; ++i) {\n x = circles[i].x;\n y = circles[i].y;\n circles[i].x = c * x - s * y;\n circles[i].y = s * x + c * y;\n }\n }\n // mirror solution if third solution is above plane specified by\n // first two circles\n if (circles.length > 2) {\n let angle = Math.atan2(circles[2].x, circles[2].y) - orientation;\n while (angle < 0) {\n angle += 2 * Math.PI;\n }\n while (angle > 2 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n if (angle > Math.PI) {\n const slope = circles[1].y / (1e-10 + circles[1].x);\n for (i = 0; i < circles.length; ++i) {\n const d = (circles[i].x + slope * circles[i].y) / (1 + slope * slope);\n circles[i].x = 2 * d - circles[i].x;\n circles[i].y = 2 * d * slope - circles[i].y;\n }\n }\n }\n}\nexport function disjointCluster(circles) {\n // union-find clustering to get disjoint sets\n circles.map(function (circle) {\n circle.parent = circle;\n });\n // path compression step in union find\n function find(circle) {\n if (circle.parent !== circle) {\n circle.parent = find(circle.parent);\n }\n return circle.parent;\n }\n function union(x, y) {\n const xRoot = find(x), yRoot = find(y);\n xRoot.parent = yRoot;\n }\n // get the union of all overlapping sets\n for (let i = 0; i < circles.length; ++i) {\n for (let j = i + 1; j < circles.length; ++j) {\n const maxDistance = circles[i].radius + circles[j].radius;\n if (distance(circles[i], circles[j]) + 1e-10 < maxDistance) {\n union(circles[j], circles[i]);\n }\n }\n }\n // find all the disjoint clusters and group them together\n const disjointClusters = {};\n let setid;\n for (let i = 0; i < circles.length; ++i) {\n setid = find(circles[i]).parent.setid;\n if (!(setid in disjointClusters)) {\n disjointClusters[setid] = [];\n }\n disjointClusters[setid].push(circles[i]);\n }\n // cleanup bookkeeping\n circles.map(function (circle) {\n delete circle.parent;\n });\n // return in more usable form\n const ret = [];\n for (setid in disjointClusters) {\n // eslint-disable-next-line\n if (disjointClusters.hasOwnProperty(setid)) {\n ret.push(disjointClusters[setid]);\n }\n }\n return ret;\n}\nfunction getBoundingBox(circles) {\n const minMax = function (d) {\n const hi = Math.max.apply(null, circles.map(function (c) {\n return c[d] + c.radius;\n })), lo = Math.min.apply(null, circles.map(function (c) {\n return c[d] - c.radius;\n }));\n return { max: hi, min: lo };\n };\n return { xRange: minMax('x'), yRange: minMax('y') };\n}\nexport function normalizeSolution(solution, orientation, orientationOrder) {\n if (orientation === null) {\n orientation = Math.PI / 2;\n }\n // work with a list instead of a dictionary, and take a copy so we\n // don't mutate input\n let circles = [], i, setid;\n for (setid in solution) {\n // eslint-disable-next-line\n if (solution.hasOwnProperty(setid)) {\n const previous = solution[setid];\n circles.push({\n x: previous.x,\n y: previous.y,\n radius: previous.radius,\n setid: setid,\n });\n }\n }\n // get all the disjoint clusters\n const clusters = disjointCluster(circles);\n // orientate all disjoint sets, get sizes\n for (i = 0; i < clusters.length; ++i) {\n orientateCircles(clusters[i], orientation, orientationOrder);\n const bounds = getBoundingBox(clusters[i]);\n clusters[i].size =\n (bounds.xRange.max - bounds.xRange.min) *\n (bounds.yRange.max - bounds.yRange.min);\n clusters[i].bounds = bounds;\n }\n clusters.sort(function (a, b) {\n return b.size - a.size;\n });\n // orientate the largest at 0,0, and get the bounds\n circles = clusters[0];\n // @ts-ignore fixme 从逻辑上看似乎是不对的,后续看看\n let returnBounds = circles.bounds;\n const spacing = (returnBounds.xRange.max - returnBounds.xRange.min) / 50;\n function addCluster(cluster, right, bottom) {\n if (!cluster)\n return;\n const bounds = cluster.bounds;\n let xOffset, yOffset, centreing;\n if (right) {\n xOffset = returnBounds.xRange.max - bounds.xRange.min + spacing;\n }\n else {\n xOffset = returnBounds.xRange.max - bounds.xRange.max;\n centreing =\n (bounds.xRange.max - bounds.xRange.min) / 2 -\n (returnBounds.xRange.max - returnBounds.xRange.min) / 2;\n if (centreing < 0)\n xOffset += centreing;\n }\n if (bottom) {\n yOffset = returnBounds.yRange.max - bounds.yRange.min + spacing;\n }\n else {\n yOffset = returnBounds.yRange.max - bounds.yRange.max;\n centreing =\n (bounds.yRange.max - bounds.yRange.min) / 2 -\n (returnBounds.yRange.max - returnBounds.yRange.min) / 2;\n if (centreing < 0)\n yOffset += centreing;\n }\n for (let j = 0; j < cluster.length; ++j) {\n cluster[j].x += xOffset;\n cluster[j].y += yOffset;\n circles.push(cluster[j]);\n }\n }\n let index = 1;\n while (index < clusters.length) {\n addCluster(clusters[index], true, false);\n addCluster(clusters[index + 1], false, true);\n addCluster(clusters[index + 2], true, true);\n index += 3;\n // have one cluster (in top left). lay out next three relative\n // to it in a grid\n returnBounds = getBoundingBox(circles);\n }\n // convert back to solution form\n const ret = {};\n for (i = 0; i < circles.length; ++i) {\n ret[circles[i].setid] = circles[i];\n }\n return ret;\n}\n/** Scales a solution from venn.venn or venn.greedyLayout such that it fits in\na rectangle of width/height - with padding around the borders. also\ncenters the diagram in the available space at the same time */\nexport function scaleSolution(solution, width, height, padding) {\n const circles = [], setids = [];\n for (const setid in solution) {\n // eslint-disable-next-line\n if (solution.hasOwnProperty(setid)) {\n setids.push(setid);\n circles.push(solution[setid]);\n }\n }\n width -= 2 * padding;\n height -= 2 * padding;\n const bounds = getBoundingBox(circles), xRange = bounds.xRange, yRange = bounds.yRange;\n if (xRange.max == xRange.min || yRange.max == yRange.min) {\n console.log('not scaling solution: zero size detected');\n return solution;\n }\n const xScaling = width / (xRange.max - xRange.min), yScaling = height / (yRange.max - yRange.min), scaling = Math.min(yScaling, xScaling), \n // while we're at it, center the diagram too\n xOffset = (width - (xRange.max - xRange.min) * scaling) / 2, yOffset = (height - (yRange.max - yRange.min) * scaling) / 2;\n const scaled = {};\n for (let i = 0; i < circles.length; ++i) {\n const circle = circles[i];\n scaled[setids[i]] = {\n radius: scaling * circle.radius,\n x: padding + xOffset + (circle.x - xRange.min) * scaling,\n y: padding + yOffset + (circle.y - yRange.min) * scaling,\n };\n }\n return scaled;\n}\n//# sourceMappingURL=layout.js.map","import { intersectionArea } from './circleintersection';\n/**\n * 根据圆心(x, y) 半径 r 返回圆的绘制 path\n * @param x 圆心点 x\n * @param y 圆心点 y\n * @param r 圆的半径\n * @returns 圆的 path\n */\nfunction circlePath(x, y, r) {\n const ret = [];\n // ret.push('\\nM', x, y);\n // ret.push('\\nm', -r, 0);\n // ret.push('\\na', r, r, 0, 1, 0, r * 2, 0);\n // ret.push('\\na', r, r, 0, 1, 0, -r * 2, 0);\n const x0 = x - r;\n const y0 = y;\n ret.push('M', x0, y0);\n ret.push('A', r, r, 0, 1, 0, x0 + 2 * r, y0);\n ret.push('A', r, r, 0, 1, 0, x0, y0);\n return ret.join(' ');\n}\n/** returns a svg path of the intersection area of a bunch of circles */\nexport function intersectionAreaPath(circles) {\n const stats = {};\n intersectionArea(circles, stats);\n const arcs = stats.arcs;\n if (arcs.length === 0) {\n return 'M 0 0';\n }\n else if (arcs.length == 1) {\n const circle = arcs[0].circle;\n return circlePath(circle.x, circle.y, circle.radius);\n }\n else {\n // draw path around arcs\n const ret = ['\\nM', arcs[0].p2.x, arcs[0].p2.y];\n for (let i = 0; i < arcs.length; ++i) {\n const arc = arcs[i], r = arc.circle.radius, wide = arc.width > r;\n ret.push('\\nA', r, r, 0, wide ? 1 : 0, 1, arc.p1.x, arc.p1.y);\n }\n return ret.join(' ');\n }\n}\n//# sourceMappingURL=diagram.js.map","import { intersectionAreaPath, scaleSolution, venn } from './utils/venn';\n/**\n * Layout venn data, get the path string for each set.\n */\nexport const Venn = (options) => {\n const { sets = 'sets', size = 'size', as = ['key', 'path'], padding = 0, } = options;\n const [key, path] = as;\n return (data) => {\n // Transform the data, venn layout use `sets` and `size` field.\n const vennData = data.map((d) => (Object.assign(Object.assign({}, d), { sets: d[sets], size: d[size], [key]: d.sets.join('&') })));\n // Sort data, avoid data occlusion.\n vennData.sort((a, b) => a.sets.length - b.sets.length);\n // Layout venn data.\n const solution = venn(vennData);\n let circles;\n return vennData.map((datum) => {\n const setsValue = datum[sets];\n const pathFunc = ({ width, height }) => {\n circles = circles\n ? circles\n : scaleSolution(solution, width, height, padding);\n const setCircles = setsValue.map((set) => circles[set]);\n let p = intersectionAreaPath(setCircles);\n // Close the path for event picker.\n if (!/[zZ]$/.test(p))\n p += ' Z';\n return p;\n };\n return Object.assign(Object.assign({}, datum), { [path]: pathFunc });\n });\n };\n};\nVenn.props = {};\n//# sourceMappingURL=venn.js.map","/**\n * Console.log the data section for dev debugger.\n */\nexport const Log = () => {\n return (data) => {\n console.log('G2 data section:', data);\n return data;\n };\n};\nLog.props = {};\n//# sourceMappingURL=log.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { WordCloud as WordCloudTransform } from '../data';\nfunction initializeData(data, encode) {\n const { text = 'text', value = 'value' } = encode;\n return data.map((d) => (Object.assign(Object.assign({}, d), { text: d[text], value: d[value] })));\n}\nconst GET_DEFAULT_LAYOUT_OPTIONS = (width, height) => ({\n size: [width, height],\n});\nconst GET_DEFAULT_OPTIONS = (width, height) => ({\n axis: false,\n type: 'text',\n encode: {\n x: 'x',\n y: 'y',\n text: 'text',\n rotate: 'rotate',\n fontSize: 'size',\n },\n scale: {\n x: { domain: [0, width], range: [0, 1] },\n y: { domain: [0, height], range: [0, 1] },\n fontSize: { type: 'identity' },\n rotate: { type: 'identity' },\n },\n style: {\n textAlign: 'center',\n },\n});\nexport const WordCloud = (options, context) => __awaiter(void 0, void 0, void 0, function* () {\n const { width, height } = context;\n const { data, encode = {}, scale, style = {}, layout = {} } = options, resOptions = __rest(options, [\"data\", \"encode\", \"scale\", \"style\", \"layout\"]);\n const initializedData = initializeData(data, encode);\n const transformData = yield WordCloudTransform(Object.assign(Object.assign({}, GET_DEFAULT_LAYOUT_OPTIONS(width, height)), layout))(initializedData);\n return deepMix({}, GET_DEFAULT_OPTIONS(width, height), Object.assign(Object.assign({ data: transformData, encode,\n scale,\n style }, resOptions), { axis: false }));\n});\nWordCloud.props = {};\n//# sourceMappingURL=wordCloud.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix, isNumber } from '@antv/util';\nimport { Group } from '@antv/g';\nimport { filterPrefixObject, isUnset, subObject } from '../utils/helper';\nimport { getTransformOptions } from '../utils/coordinate';\nimport { Radial } from '../coordinate';\nimport { applyStyle, getOrigin } from '../shape/utils';\nimport { select } from '../utils/selection';\nconst indicatorShape = (options, context) => {\n const { shape, radius } = options, style = __rest(options, [\"shape\", \"radius\"]);\n const pointerStyle = subObject(style, 'pointer');\n const pinStyle = subObject(style, 'pin');\n const { shape: pointerShape } = pointerStyle, resPointerStyle = __rest(pointerStyle, [\"shape\"]);\n const { shape: pinShape } = pinStyle, resPinStyle = __rest(pinStyle, [\"shape\"]);\n const { coordinate, theme } = context;\n return (points, value) => {\n // Invert points.\n const invertedPoints = points.map((p) => coordinate.invert(p));\n // Get new coordinate.\n const [startAngle, endAngle, innerRadius] = getTransformOptions(coordinate, 'polar');\n const newCoordinate = coordinate.clone();\n const { color: stroke } = value;\n const newTransformations = Radial({\n startAngle,\n endAngle,\n innerRadius,\n outerRadius: radius,\n });\n newTransformations.push(['cartesian']);\n newCoordinate.update({\n transformations: newTransformations,\n });\n const newPoints = invertedPoints.map((p) => newCoordinate.map(p));\n const [x, y] = getOrigin(newPoints);\n const [cx, cy] = coordinate.getCenter();\n const pointerAttrs = Object.assign(Object.assign({ x1: x, y1: y, x2: cx, y2: cy, stroke }, resPointerStyle), style);\n const pinAttrs = Object.assign(Object.assign({ cx,\n cy,\n stroke }, resPinStyle), style);\n const indicatorGroup = select(new Group());\n if (!isUnset(pointerShape)) {\n typeof pointerShape === 'function'\n ? indicatorGroup.append(() => pointerShape(newPoints, value, newCoordinate, theme))\n : indicatorGroup.append('line').call(applyStyle, pointerAttrs).node();\n }\n if (!isUnset(pinShape)) {\n typeof pinShape === 'function'\n ? indicatorGroup.append(() => pinShape(newPoints, value, newCoordinate, theme))\n : indicatorGroup.append('circle').call(applyStyle, pinAttrs).node();\n }\n return indicatorGroup.node();\n };\n};\nconst DEFAULT_OPTIONS = {\n coordinate: {\n type: 'radial',\n innerRadius: 0.9,\n outerRadius: 1,\n startAngle: (-11 / 10) * Math.PI,\n endAngle: (1 / 10) * Math.PI,\n },\n axis: {\n x: false,\n },\n legend: false,\n tooltip: false,\n encode: {\n x: 'x',\n y: 'y',\n color: 'color',\n },\n scale: {\n color: {\n range: ['#30BF78', '#D0D0D0'],\n },\n },\n};\nconst DEFAULT_INDICATOR_OPTIONS = {\n style: {\n shape: indicatorShape,\n lineWidth: 4,\n pointerLineCap: 'round',\n pinR: 10,\n pinFill: '#fff',\n radius: 0.6,\n },\n};\nconst DEFAULT_TEXT_OPTIONS = {\n type: 'text',\n style: {\n x: '50%',\n y: '60%',\n textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 20,\n fontWeight: 800,\n fill: '#888',\n },\n};\nfunction getGaugeData(data) {\n if (isNumber(data)) {\n // Percent range [0, 1].\n const percent = Math.max(0, Math.min(data, 1));\n return {\n percent,\n target: percent,\n total: 1,\n };\n }\n return data;\n}\nfunction dataTransform(data, scale) {\n const { name = 'score', target, total, percent, thresholds = [], } = getGaugeData(data);\n const _target = percent || target;\n const _total = percent ? 1 : total;\n const newScale = Object.assign({ y: {\n domain: [0, _total],\n } }, scale);\n if (!thresholds.length) {\n return {\n targetData: [{ x: name, y: _target, color: 'target' }],\n totalData: [\n { x: name, y: _target, color: 'target' },\n { x: name, y: _total - _target, color: 'total' },\n ],\n target: _target,\n total: _total,\n scale: newScale,\n };\n }\n return {\n targetData: [{ x: name, y: _target, color: 'target' }],\n totalData: thresholds.map((d, i) => ({\n x: name,\n y: i >= 1 ? d - thresholds[i - 1] : d,\n color: i,\n })),\n target: _target,\n total: _total,\n scale: newScale,\n };\n}\nfunction getTextContent(textStyle, { target, total }) {\n const { content } = textStyle;\n return content ? content(target, total) : target.toString();\n}\nexport const Gauge = (options) => {\n const { data = {}, scale = {}, style = {}, animate = {}, transform = [] } = options, resOptions = __rest(options, [\"data\", \"scale\", \"style\", \"animate\", \"transform\"]);\n const { targetData, totalData, target, total, scale: newScale, } = dataTransform(data, scale);\n const textStyle = subObject(style, 'text');\n // pointer + pin\n const indicatorStyle = filterPrefixObject(style, ['pointer', 'pin']);\n return [\n deepMix({}, DEFAULT_OPTIONS, Object.assign({ type: 'interval', transform: [{ type: 'stackY' }], data: totalData, scale: newScale, style: subObject(style, 'arc'), animate: typeof animate === 'object' ? subObject(animate, 'arc') : animate }, resOptions)),\n deepMix({}, DEFAULT_OPTIONS, DEFAULT_INDICATOR_OPTIONS, Object.assign({ type: 'point', data: targetData, scale: newScale, style: indicatorStyle, animate: typeof animate === 'object' ? subObject(animate, 'indicator') : animate }, resOptions)),\n deepMix({}, DEFAULT_TEXT_OPTIONS, {\n style: Object.assign({ text: getTextContent(textStyle, { target, total }) }, textStyle),\n animate: typeof animate === 'object' ? subObject(animate, 'text') : animate,\n }),\n ];\n};\nGauge.props = {};\n//# sourceMappingURL=gauge.js.map","import { DensityShape } from '../shape';\nimport { MaybeZeroY1, MaybeZeroX } from '../transform';\nimport { baseGeometryChannels, basePostInference, basePreInference, tooltip1d, } from './utils';\nconst shape = {\n density: DensityShape,\n};\nexport const Density = () => {\n return (index, scale, value, coordinate) => {\n const { x: X, series: S } = value;\n const Yn = Object.entries(value)\n .filter(([key]) => key.startsWith('y'))\n .map(([, value]) => value);\n const SZn = Object.entries(value)\n .filter(([key]) => key.startsWith('size'))\n .map(([, value]) => value);\n // Because x and y channel is not strictly required in Line.props,\n // it should throw error with empty x or y channels.\n if (X === undefined || Yn === undefined || SZn === undefined) {\n throw new Error('Missing encode for x or y or size channel.');\n }\n // Calc width for each box.\n // The scales for x and series channels must be band scale.\n const xScale = scale.x;\n const series = scale.series;\n const P = Array.from(index, (i) => {\n const groupWidth = xScale.getBandWidth(xScale.invert(+X[i]));\n const ratio = series ? series.getBandWidth(series.invert(+(S === null || S === void 0 ? void 0 : S[i]))) : 1;\n const width = groupWidth * ratio;\n const offset = (+(S === null || S === void 0 ? void 0 : S[i]) || 0) * groupWidth;\n const x = +X[i] + offset + width / 2;\n const PN = [\n ...Yn.map((_, idx) => [x + +SZn[idx][i] / index.length, +Yn[idx][i]]),\n ...Yn.map((_, idx) => [\n x - +SZn[idx][i] / index.length,\n +Yn[idx][i],\n ]).reverse(), // left\n ];\n return PN.map((p) => coordinate.map(p));\n });\n return [index, P];\n };\n};\nDensity.props = {\n defaultShape: 'density',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', scale: 'band', required: true },\n { name: 'y', required: true },\n { name: 'size', required: true },\n { name: 'series', scale: 'band' },\n { name: 'size', required: true, scale: 'identity' },\n ],\n preInference: [\n ...basePreInference(),\n { type: MaybeZeroY1 },\n { type: MaybeZeroX },\n ],\n postInference: [...basePostInference(), ...tooltip1d()],\n interaction: { shareTooltip: true },\n};\n//# sourceMappingURL=density.js.map","import { HeatmapShape } from '../shape';\nimport { MaybeZeroX, MaybeZeroY } from '../transform';\nimport { baseGeometryChannels, basePostInference, basePreInference, tooltip2d, } from './utils';\nconst shape = {\n heatmap: HeatmapShape,\n};\n/**\n * Draw heatmap with gradient.\n */\nexport const Heatmap = (options) => {\n return (index, scale, value, coordinate) => {\n const { x: X, y: Y, size: S, color: C } = value;\n const P = Array.from(index, (i) => {\n // Default size = 40.\n const r = S ? +S[i] : 40;\n // Warning: x, y, value, radius.\n return [...coordinate.map([+X[i], +Y[i]]), C[i], r];\n });\n return [[0], [P]];\n };\n};\nHeatmap.props = {\n defaultShape: 'heatmap',\n defaultLabelShape: 'label',\n composite: false,\n shape,\n channels: [\n ...baseGeometryChannels({ shapes: Object.keys(shape) }),\n { name: 'x', required: true },\n { name: 'y', required: true },\n { name: 'color', scale: 'identity', required: true },\n { name: 'size' },\n ],\n preInference: [\n ...basePreInference(),\n { type: MaybeZeroX },\n { type: MaybeZeroY },\n ],\n postInference: [...basePostInference(), ...tooltip2d()],\n};\n//# sourceMappingURL=heatmap.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix, isNumber } from '@antv/util';\nimport { subObject } from '../utils/helper';\nimport { prettyNumber } from '../utils/number';\nimport { LiquidShape } from '../shape';\nconst DEFAULT_OPTIONS = {\n axis: {\n x: false,\n y: false,\n },\n legend: false,\n tooltip: false,\n encode: {\n x: 'type',\n y: 'percent',\n },\n scale: {\n y: {\n domain: [0, 1],\n },\n },\n style: {\n shape: LiquidShape,\n },\n animate: {\n enter: {\n type: 'fadeIn',\n },\n },\n};\nconst DEFAULT_TEXT_OPTIONS = {\n type: 'text',\n style: {\n x: '50%',\n y: '50%',\n textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 20,\n fontWeight: 800,\n fill: '#888',\n },\n animate: {\n enter: {\n type: 'fadeIn',\n },\n },\n};\nexport const Liquid = (options) => {\n const { data = {}, style = {}, animate } = options, resOptions = __rest(options, [\"data\", \"style\", \"animate\"]);\n // Compatible with old data structures: { percent: number } and percent >= 0.\n const percent = Math.max(0, isNumber(data) ? data : data === null || data === void 0 ? void 0 : data.percent);\n const newData = [{ percent, type: 'liquid' }];\n const contentStyle = Object.assign(Object.assign({}, subObject(style, 'text')), subObject(style, 'content'));\n const outline = subObject(style, 'outline');\n const wave = subObject(style, 'wave');\n const background = subObject(style, 'background');\n return [\n deepMix({}, DEFAULT_OPTIONS, Object.assign({ type: 'interval', data: newData, style: {\n liquidOptions: {\n percent,\n liquidShape: style === null || style === void 0 ? void 0 : style.shape,\n },\n styleOptions: Object.assign(Object.assign({}, style), { outline,\n wave,\n background }),\n }, animate }, resOptions)),\n deepMix({}, DEFAULT_TEXT_OPTIONS, {\n style: Object.assign({ text: `${prettyNumber(percent * 100)} %` }, contentStyle),\n animate,\n }),\n ];\n};\nLiquid.props = {};\n//# sourceMappingURL=liquid.js.map","/**\n * Classic palette of AntV for ordinal data with 10 colors.\n */\nexport const Category10 = () => {\n return [\n '#5B8FF9',\n '#5AD8A6',\n '#5D7092',\n '#F6BD16',\n '#6F5EF9',\n '#6DC8EC',\n '#945FB9',\n '#FF9845',\n '#1E9493',\n '#FF99C3',\n ];\n};\nCategory10.props = {};\n//# sourceMappingURL=category10.js.map","/**\n * Classic palette of AntV for ordinal data with 20 colors.\n */\nexport const Category20 = () => {\n return [\n '#5B8FF9',\n '#CDDDFD',\n '#5AD8A6',\n '#CDF3E4',\n '#5D7092',\n '#CED4DE',\n '#F6BD16',\n '#FCEBB9',\n '#6F5EF9',\n '#D3CEFD',\n '#6DC8EC',\n '#D3EEF9',\n '#945FB9',\n '#DECFEA',\n '#FF9845',\n '#FFE0C7',\n '#1E9493',\n '#BBDEDE',\n '#FF99C3',\n '#FFE0ED',\n ];\n};\nCategory20.props = {};\n//# sourceMappingURL=category20.js.map","import { Band as BandScale } from '@antv/scale';\nexport const Band = (options) => {\n return new BandScale(options);\n};\nBand.props = {};\n//# sourceMappingURL=band.js.map","import { Linear as LinearScale } from '@antv/scale';\nexport const Linear = (options) => {\n return new LinearScale(options);\n};\nLinear.props = {};\n//# sourceMappingURL=linear.js.map","import { Ordinal as OrdinalScale } from '@antv/scale';\nexport const Ordinal = (options) => {\n return new OrdinalScale(options);\n};\nOrdinal.props = {};\n//# sourceMappingURL=ordinal.js.map","import { Identity as IdentityScale } from '@antv/scale';\nexport const Identity = (options) => {\n return new IdentityScale(options);\n};\nIdentity.props = {};\n//# sourceMappingURL=identity.js.map","import { Point as PointScale } from '@antv/scale';\nexport const Point = (options) => {\n return new PointScale(options);\n};\nPoint.props = {};\n//# sourceMappingURL=point.js.map","import { Time as TimeScale } from '@antv/scale';\nexport const Time = (options) => {\n return new TimeScale(options);\n};\nTime.props = {};\n//# sourceMappingURL=time.js.map","import { Log as LogScale } from '@antv/scale';\nexport const Log = (options) => {\n return new LogScale(options);\n};\nLog.props = {};\n//# sourceMappingURL=log.js.map","import { Pow as PowScale } from '@antv/scale';\nexport const Pow = (options) => {\n return new PowScale(options);\n};\nPow.props = {};\n//# sourceMappingURL=pow.js.map","import { Threshold as ThresholdScale } from '@antv/scale';\nexport const Threshold = (options) => {\n return new ThresholdScale(options);\n};\nThreshold.props = {};\n//# sourceMappingURL=threshold.js.map","import { Quantile as QuantileScale } from '@antv/scale';\nexport const Quantile = (options) => {\n return new QuantileScale(options);\n};\nQuantile.props = {};\n//# sourceMappingURL=quantile.js.map","import { Quantize as QuantizeScale } from '@antv/scale';\nexport const Quantize = (options) => {\n return new QuantizeScale(options);\n};\nQuantize.props = {};\n//# sourceMappingURL=quantize.js.map","import { Sqrt as SqrtScale } from '@antv/scale';\nexport const Sqrt = (options) => {\n return new SqrtScale(options);\n};\nSqrt.props = {};\n//# sourceMappingURL=sqrt.js.map","import { Sequential as SequentialScale } from '@antv/scale';\nexport const Sequential = (options) => {\n return new SequentialScale(options);\n};\nSequential.props = {};\n//# sourceMappingURL=sequential.js.map","import { Constant as ConstantScale } from '@antv/scale';\nexport const Constant = (options) => {\n return new ConstantScale(options);\n};\nConstant.props = {};\n//# sourceMappingURL=constant.js.map","export function create({ colorDefault, colorBlack, colorWhite, colorStroke, colorBackground, padding1, padding2, padding3, alpha90, alpha65, alpha45, alpha25, alpha10, category10, category20, sizeDefault = 1, padding = 'auto', margin = 16, }) {\n return {\n padding,\n margin,\n size: sizeDefault,\n color: colorDefault,\n category10,\n category20,\n enter: {\n duration: 300,\n fill: 'both',\n delay: 0,\n },\n update: {\n duration: 300,\n fill: 'both',\n delay: 0,\n },\n exit: {\n duration: 300,\n fill: 'both',\n delay: 0,\n },\n view: {\n viewFill: colorBackground,\n plotFill: 'transparent',\n mainFill: 'transparent',\n contentFill: 'transparent',\n },\n line: {\n line: {\n fill: '',\n strokeOpacity: 1,\n lineWidth: 1,\n lineCap: 'round',\n },\n },\n point: {\n point: {\n r: 3,\n fillOpacity: 0.95,\n lineWidth: 0,\n },\n hollow: {\n r: 3,\n strokeOpacity: 0.95,\n lineWidth: 1,\n },\n plus: {\n r: 3,\n strokeOpacity: 0.95,\n lineWidth: 3,\n },\n diamond: {\n r: 3,\n strokeOpacity: 0.95,\n lineWidth: 1,\n },\n },\n interval: {\n rect: {\n fillOpacity: 0.95,\n },\n hollow: {\n fill: '',\n strokeOpacity: 1,\n lineWidth: 2,\n },\n },\n area: {\n area: {\n fillOpacity: 0.85,\n lineWidth: 0,\n },\n },\n polygon: {\n polygon: {\n fillOpacity: 0.95,\n },\n },\n cell: {\n cell: {\n fillOpacity: 0.95,\n },\n hollow: {\n fill: '',\n strokeOpacity: 1,\n lineWidth: 2,\n },\n },\n rect: {\n rect: {\n fillOpacity: 0.95,\n },\n hollow: {\n fill: '',\n strokeOpacity: 1,\n lineWidth: 2,\n },\n },\n link: {\n link: {\n fill: '',\n strokeOpacity: 1,\n },\n },\n vector: {\n vector: {\n fillOpacity: 1,\n },\n },\n box: {\n box: {\n fillOpacity: 0.95,\n stroke: colorBlack,\n lineWidth: 1,\n },\n },\n text: {\n text: {\n fill: '#1D2129',\n fontSize: 12,\n strokeWidth: 0,\n connectorStroke: colorStroke,\n connectorStrokeOpacity: 0.45,\n connectorLineWidth: 1,\n backgroundFill: colorStroke,\n backgroundFillOpacity: 0.15,\n backgroundPadding: [2, 4],\n startMarkerSymbol: 'circle',\n startMarkerSize: 4,\n endMarkerSymbol: 'circle',\n endMarkerSize: 4,\n },\n badge: {\n fill: '#1D2129',\n fillOpacity: 0.65,\n strokeWidth: 0,\n fontSize: 10,\n textAlign: 'center',\n textBaseline: 'middle',\n markerFill: colorStroke,\n markerFillOpacity: 0.25,\n markerStrokeOpacity: 0,\n },\n },\n lineX: {\n line: {\n stroke: colorStroke,\n strokeOpacity: 0.45,\n lineWidth: 1,\n },\n },\n lineY: {\n line: {\n stroke: colorStroke,\n strokeOpacity: 0.45,\n lineWidth: 1,\n },\n },\n rangeX: {\n range: {\n fill: colorStroke,\n fillOpacity: 0.15,\n lineWidth: 0,\n },\n },\n rangeY: {\n range: {\n fill: colorStroke,\n fillOpacity: 0.15,\n lineWidth: 0,\n },\n },\n connector: {\n connector: {\n stroke: colorStroke,\n strokeOpacity: 0.45,\n lineWidth: 1,\n connectLength1: 12,\n endMarker: true,\n endMarkerSize: 6,\n endMarkerFill: colorStroke,\n endMarkerFillOpacity: 0.95,\n },\n },\n axis: {\n arrow: false,\n gridLineDash: [3, 4],\n gridLineWidth: 0.5,\n gridStroke: colorBlack,\n gridStrokeOpacity: alpha10,\n labelAlign: 'horizontal',\n labelFill: colorBlack,\n labelOpacity: alpha45,\n labelFontSize: 12,\n labelFontWeight: 'normal',\n labelSpacing: padding1,\n line: false,\n lineLineWidth: 0.5,\n lineStroke: colorBlack,\n lineStrokeOpacity: alpha45,\n tickLength: 4,\n tickLineWidth: 1,\n tickStroke: colorBlack,\n tickOpacity: alpha45,\n titleFill: colorBlack,\n titleOpacity: alpha90,\n titleFontSize: 12,\n titleFontWeight: 'normal',\n titleSpacing: 12,\n titleTransformOrigin: 'center',\n lineArrowOffset: 6,\n lineArrowSize: 6,\n },\n axisTop: {\n gridDirection: 'positive',\n labelDirection: 'negative',\n tickDirection: 'negative',\n titlePosition: 'top',\n titleSpacing: 12,\n labelSpacing: 4,\n titleTextBaseline: 'middle',\n },\n axisBottom: {\n gridDirection: 'negative',\n labelDirection: 'positive',\n tickDirection: 'positive',\n titlePosition: 'bottom',\n titleSpacing: 12,\n labelSpacing: 4,\n titleTextBaseline: 'bottom',\n },\n axisLeft: {\n gridDirection: 'positive',\n labelDirection: 'negative',\n labelSpacing: 4,\n tickDirection: 'negative',\n titlePosition: 'left',\n titleSpacing: 12,\n titleTextBaseline: 'middle',\n titleDirection: 'vertical',\n titleTransformOrigin: 'center',\n },\n axisRight: {\n gridDirection: 'negative',\n labelDirection: 'positive',\n labelSpacing: 4,\n tickDirection: 'positive',\n titlePosition: 'right',\n titleSpacing: 12,\n titleTextBaseline: 'top',\n titleDirection: 'vertical',\n titleTransformOrigin: 'center',\n },\n axisLinear: {\n girdClosed: true,\n gridConnect: 'arc',\n gridDirection: 'negative',\n gridType: 'surround',\n titlePosition: 'top',\n titleSpacing: 0,\n },\n axisArc: {\n title: false,\n titlePosition: 'inner',\n line: false,\n tick: true,\n labelSpacing: 4,\n },\n axisRadar: {\n girdClosed: true,\n gridStrokeOpacity: 0.3,\n gridType: 'surround',\n label: false,\n tick: false,\n titlePosition: 'start',\n },\n legendCategory: {\n backgroundFill: 'transparent',\n itemBackgroundFill: 'transparent',\n itemLabelFill: colorBlack,\n itemLabelFillOpacity: alpha90,\n itemLabelFontSize: 12,\n itemLabelFontWeight: 'normal',\n itemMarkerFillOpacity: 1,\n itemMarkerSize: 8,\n itemSpacing: [padding1, padding1],\n itemValueFill: colorBlack,\n itemValueFillOpacity: 0.65,\n itemValueFontSize: 12,\n itemValueFontWeight: 'normal',\n navButtonFill: colorBlack,\n navButtonFillOpacity: 0.65,\n navPageNumFill: colorBlack,\n navPageNumFillOpacity: 0.45,\n navPageNumFontSize: 12,\n padding: 8,\n title: false,\n titleFill: colorBlack,\n titleFillOpacity: 0.65,\n titleFontSize: 12,\n titleFontWeight: 'normal',\n titleSpacing: 4,\n tickStroke: colorBlack,\n tickStrokeOpacity: 0.25,\n rowPadding: padding1,\n colPadding: padding2,\n maxRows: 3,\n maxCols: 3,\n },\n legendContinuous: {\n handleHeight: 12,\n handleLabelFill: colorBlack,\n handleLabelFillOpacity: alpha45,\n handleLabelFontSize: 12,\n handleLabelFontWeight: 'normal',\n handleMarkerFill: colorBlack,\n handleMarkerFillOpacity: 0.6,\n handleMarkerLineWidth: 1,\n handleMarkerStroke: colorBlack,\n handleMarkerStrokeOpacity: 0.25,\n handleWidth: 10,\n labelFill: colorBlack,\n labelFillOpacity: alpha45,\n labelFontSize: 12,\n labelFontWeight: 'normal',\n labelSpacing: 3,\n tick: true,\n tickLength: 12,\n ribbonSize: 12,\n ribbonFill: '#aaa',\n handle: true,\n handleLabel: false,\n handleShape: 'slider',\n handleIconSize: 12 / 1.8,\n indicator: false,\n titleFontSize: 12,\n titleSpacing: 4,\n titleFontWeight: 'normal',\n titleFillOpacity: alpha90,\n tickStroke: colorBlack,\n tickStrokeOpacity: alpha45,\n },\n label: {\n fill: colorBlack,\n fillOpacity: 0.65,\n fontSize: 12,\n fontWeight: 'normal',\n stroke: undefined,\n offset: 12,\n connectorStroke: colorBlack,\n connectorStrokeOpacity: 0.45,\n connectorLineWidth: 1,\n connectorLength: 12,\n connectorLength2: 8,\n connectorDistance: 4,\n },\n innerLabel: {\n fill: colorWhite,\n fontSize: 12,\n fillOpacity: 0.85,\n fontWeight: 'normal',\n stroke: undefined,\n offset: 0,\n },\n htmlLabel: {\n fontSize: 12,\n opacity: 0.65,\n color: colorBlack,\n fontWeight: 'normal',\n },\n slider: {\n trackSize: 16,\n trackFill: colorStroke,\n trackFillOpacity: 1,\n selectionFill: colorDefault,\n selectionFillOpacity: 0.15,\n handleIconSize: 10,\n handleIconFill: '#f7f7f7',\n handleIconFillOpacity: 1,\n handleIconStroke: colorBlack,\n handleIconStrokeOpacity: 0.25,\n handleIconLineWidth: 1,\n handleIconRadius: 2,\n handleLabelFill: colorBlack,\n handleLabelFillOpacity: 0.45,\n handleLabelFontSize: 12,\n handleLabelFontWeight: 'normal',\n },\n scrollbar: {\n padding: [0, 0, 0, 0],\n trackSize: 6,\n isRound: true,\n slidable: true,\n scrollable: true,\n trackFill: '#e5e5e5',\n trackFillOpacity: 0,\n thumbFill: '#000',\n thumbFillOpacity: 0.15,\n thumbHighlightedFillOpacity: 0.2,\n },\n title: {\n spacing: 8,\n titleFill: colorBlack,\n titleFillOpacity: alpha90,\n titleFontSize: 16,\n titleFontWeight: 'bold',\n titleTextBaseline: 'top',\n subtitleFill: colorBlack,\n subtitleFillOpacity: alpha65,\n subtitleFontSize: 12,\n subtitleFontWeight: 'normal',\n subtitleTextBaseline: 'top',\n },\n };\n}\n//# sourceMappingURL=create.js.map","import { deepMix } from '@antv/util';\nimport { create } from './create';\nexport const tokens = {\n colorBlack: '#1D2129',\n colorWhite: '#ffffff',\n colorStroke: '#416180',\n colorDefault: '#1783FF',\n colorBackground: 'transparent',\n category10: [\n '#1783FF',\n '#00C9C9',\n '#F0884D',\n '#D580FF',\n '#7863FF',\n '#60C42D',\n '#BD8F24',\n '#FF80CA',\n '#2491B3',\n '#17C76F',\n ],\n category20: [\n '#1783FF',\n '#00C9C9',\n '#F0884D',\n '#D580FF',\n '#7863FF',\n '#60C42D',\n '#BD8F24',\n '#FF80CA',\n '#2491B3',\n '#17C76F',\n '#AABA01',\n '#BC7CFC',\n '#237CBC',\n '#2DE379',\n '#CE8032',\n '#FF7AF4',\n '#545FD3',\n '#AFE410',\n '#D8C608',\n '#FFA1E0',\n ],\n padding1: 8,\n padding2: 12,\n padding3: 20,\n alpha90: 0.9,\n alpha65: 0.65,\n alpha45: 0.45,\n alpha25: 0.25,\n alpha10: 0.1,\n};\nconst defaults = create(tokens);\n/**\n * Default theme.\n */\nexport const Light = (options) => {\n return deepMix({}, defaults, options);\n};\nLight.props = {};\n//# sourceMappingURL=light.js.map","import { deepMix } from '@antv/util';\nimport { Light } from './light';\n/**\n * Default theme.\n */\nexport const Classic = (options) => {\n return deepMix({}, Light(), {\n category10: 'category10',\n category20: 'category20',\n }, options);\n};\nClassic.props = {};\n//# sourceMappingURL=classic.js.map","import { deepMix } from '@antv/util';\nimport { create } from './create';\nexport const tokens = {\n colorBlack: '#fff',\n colorWhite: '#000',\n colorStroke: '#416180',\n colorDefault: '#1783FF',\n colorBackground: '#141414',\n category10: [\n '#1783FF',\n '#00C9C9',\n '#F0884D',\n '#D580FF',\n '#7863FF',\n '#60C42D',\n '#BD8F24',\n '#FF80CA',\n '#2491B3',\n '#17C76F',\n ],\n category20: [\n '#1783FF',\n '#00C9C9',\n '#F0884D',\n '#D580FF',\n '#7863FF',\n '#60C42D',\n '#BD8F24',\n '#FF80CA',\n '#2491B3',\n '#17C76F',\n '#AABA01',\n '#BC7CFC',\n '#237CBC',\n '#2DE379',\n '#CE8032',\n '#FF7AF4',\n '#545FD3',\n '#AFE410',\n '#D8C608',\n '#FFA1E0',\n ],\n padding1: 8,\n padding2: 12,\n padding3: 20,\n alpha90: 0.9,\n alpha65: 0.65,\n alpha45: 0.45,\n alpha25: 0.25,\n alpha10: 0.25,\n};\nconst defaults = create(tokens);\nexport const Dark = (options) => {\n return deepMix({}, defaults, {\n tooltip: {\n crosshairsStroke: '#fff',\n crosshairsLineWidth: 1,\n crosshairsStrokeOpacity: 0.25,\n css: {\n '.g2-tooltip': {\n background: '#1f1f1f',\n opacity: 0.95,\n },\n '.g2-tooltip-title': {\n color: '#A6A6A6',\n },\n '.g2-tooltip-list-item-name-label': {\n color: '#A6A6A6',\n },\n '.g2-tooltip-list-item-value': {\n color: '#A6A6A6',\n },\n },\n },\n }, options);\n};\n//# sourceMappingURL=dark.js.map","import { Dark } from './dark';\n/**\n * Dark theme.\n */\nexport const ClassicDark = (options) => {\n return Object.assign({}, Dark(), {\n category10: 'category10',\n category20: 'category20',\n }, options);\n};\nClassicDark.props = {};\n//# sourceMappingURL=classicDark.js.map","import { deepMix } from '@antv/util';\nimport { create } from './create';\nexport const tokens = {\n colorBlack: '#000',\n colorWhite: '#fff',\n colorStroke: '#888',\n colorDefault: '#4e79a7',\n colorBackground: 'transparent',\n category10: [\n '#4e79a7',\n '#f28e2c',\n '#e15759',\n '#76b7b2',\n '#59a14f',\n '#edc949',\n '#af7aa1',\n '#ff9da7',\n '#9c755f',\n '#bab0ab',\n ],\n category20: [\n '#4e79a7',\n '#f28e2c',\n '#e15759',\n '#76b7b2',\n '#59a14f',\n '#edc949',\n '#af7aa1',\n '#ff9da7',\n '#9c755f',\n '#bab0ab',\n ],\n padding1: 8,\n padding2: 12,\n padding3: 20,\n alpha90: 0.9,\n alpha65: 0.65,\n alpha45: 0.45,\n alpha25: 0.25,\n alpha10: 0.1,\n};\nconst defaults = create(tokens);\nexport const Academy = (options) => {\n return deepMix({}, defaults, {\n text: { text: { fontSize: 10 } },\n axis: {\n gridLineDash: [0, 0],\n gridLineWidth: 1,\n gridStroke: '#ddd',\n gridStrokeOpacity: 1,\n labelOpacity: 1,\n labelStrokeOpacity: 1,\n labelFontSize: 10,\n line: true,\n lineLineWidth: 1,\n lineStroke: '#888',\n lineStrokeOpacity: 1,\n tickLength: 5,\n tickStrokeOpacity: 1,\n titleOpacity: 1,\n titleStrokeOpacity: 1,\n titleFillOpacity: 1,\n titleFontSize: 11,\n titleFontWeight: 'bold',\n },\n axisLeft: {\n gridFilter: (_, i) => i !== 0,\n },\n axisRight: {\n gridFilter: (_, i) => i !== 0,\n },\n legendCategory: {\n itemLabelFillOpacity: 1,\n itemLabelFontSize: 10,\n itemValueFillOpacity: 1,\n itemValueFontSize: 10,\n titleFillOpacity: 1,\n titleFontSize: 11,\n titleFontWeight: 'bold',\n },\n legendContinuous: {\n handleLabelFontSize: 10,\n labelFillOpacity: 0.45,\n labelFontSize: 10,\n },\n label: {\n fontSize: 10,\n },\n innerLabel: {\n fontSize: 10,\n },\n htmlLabel: {\n fontSize: 10,\n },\n slider: {\n handleLabelFontSize: 10,\n trackFillOpacity: 0.05,\n },\n }, options);\n};\nAcademy.props = {};\n//# sourceMappingURL=academy.js.map","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { CustomElement } from '@antv/g';\nimport { Layout } from '@antv/component';\nimport { deepMix, upperFirst } from '@antv/util';\nimport { select } from '../utils/selection';\nexport function createComponent(descriptor) {\n return class extends CustomElement {\n constructor(config) {\n super(config);\n this.descriptor = descriptor;\n }\n connectedCallback() {\n var _a, _b;\n (_b = (_a = this.descriptor).render) === null || _b === void 0 ? void 0 : _b.call(_a, this.attributes, this);\n }\n update(cfg = {}) {\n var _a, _b;\n this.attr(deepMix({}, this.attributes, cfg));\n (_b = (_a = this.descriptor).render) === null || _b === void 0 ? void 0 : _b.call(_a, this.attributes, this);\n }\n };\n}\nexport function maybeAppend(parent, selector, node) {\n if (!parent.querySelector(selector)) {\n return select(parent).append(node);\n }\n return select(parent).select(selector);\n}\nexport function titleContent(field) {\n return Array.isArray(field) ? field.join(', ') : `${field || ''}`;\n}\nexport function inferComponentLayout(position, userDefinitions) {\n const preset = {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'center',\n };\n let { flexDirection, justifyContent, alignItems } = preset;\n const layout = {\n top: ['row', 'flex-start', 'center'],\n bottom: ['row', 'flex-start', 'center'],\n left: ['column', 'flex-start', 'center'],\n right: ['column', 'flex-start', 'center'],\n center: ['column', 'center', 'center'],\n };\n if (position in layout) {\n [flexDirection, justifyContent, alignItems] = layout[position];\n }\n return Object.assign({ display: 'flex', flexDirection,\n justifyContent,\n alignItems }, userDefinitions);\n}\nexport class G2Layout extends Layout {\n get child() {\n var _a;\n return (_a = this.children) === null || _a === void 0 ? void 0 : _a[0];\n }\n update(options) {\n var _a;\n this.attr(options);\n const { subOptions } = options;\n (_a = this.child) === null || _a === void 0 ? void 0 : _a.update(subOptions);\n }\n}\nexport class LegendCategoryLayout extends G2Layout {\n update(options) {\n var _a;\n const { subOptions } = options;\n this.attr(options);\n (_a = this.child) === null || _a === void 0 ? void 0 : _a.update(subOptions);\n }\n}\nexport function scaleOf(scales, type) {\n var _a;\n return (_a = scales.filter((s) => s.getOptions().name === type)) === null || _a === void 0 ? void 0 : _a[0];\n}\nexport function isHorizontal(orientation) {\n return orientation === 'horizontal' || orientation === 0;\n}\nexport function isVertical(orientation) {\n return orientation === 'vertical' || orientation === -Math.PI / 2;\n}\nexport function inferComponentShape(value, options, component) {\n const { bbox } = value;\n const { position = 'top', size: userDefinedSize, length: userDefinedLength, } = options;\n const isHorizontal = ['top', 'bottom', 'center'].includes(position);\n const [bboxSize, bboxLength] = isHorizontal\n ? [bbox.height, bbox.width]\n : [bbox.width, bbox.height];\n const { defaultSize, defaultLength } = component.props;\n const size = userDefinedSize || defaultSize || bboxSize;\n const length = userDefinedLength || defaultLength || bboxLength;\n const orientation = isHorizontal ? 'horizontal' : 'vertical';\n const [width, height] = isHorizontal ? [length, size] : [size, length];\n return {\n orientation,\n width,\n height,\n size,\n length,\n };\n}\nexport function domainOf(scales) {\n // to get a available scale's domain\n return scales\n .find((scale) => scale.getOptions().domain.length > 0)\n .getOptions().domain;\n}\nexport function adaptor(style) {\n const reservedKeys = [\n 'arrow',\n 'crosshairs',\n 'grid',\n 'handle',\n 'handleLabel',\n 'indicator',\n 'label',\n 'line',\n 'tick',\n 'tip',\n 'title',\n 'trunc',\n ];\n // @ts-ignore\n const { style: styles } = style, rest = __rest(style, [\"style\"]);\n const finalStyle = {};\n Object.entries(rest).forEach(([key, value]) => {\n if (reservedKeys.includes(key)) {\n finalStyle[`show${upperFirst(key)}`] = value;\n }\n else\n finalStyle[key] = value;\n });\n return Object.assign(Object.assign({}, finalStyle), styles);\n}\n//# sourceMappingURL=utils.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Axis as AxisComponent } from '@antv/component';\nimport { Linear as LinearScale } from '@antv/scale';\nimport { deepMix, omit, upperFirst } from '@antv/util';\nimport { extent } from 'd3-array';\nimport { format } from 'd3-format';\nimport { angleOf, isFisheye, isParallel, isPolar, isRadial, isTheta, isTranspose, radiusOf, } from '../utils/coordinate';\nimport { prettyNumber } from '../utils/number';\nimport { capitalizeFirst } from '../utils/helper';\nimport { adaptor, isVertical, titleContent } from './utils';\nexport function rotateAxis(axis, options) {\n const { eulerAngles, origin } = options;\n if (origin) {\n axis.setOrigin(origin);\n }\n if (eulerAngles) {\n axis.rotate(eulerAngles[0], eulerAngles[1], eulerAngles[2]);\n }\n}\nfunction sizeOf(coordinate) {\n // @ts-ignore\n const { innerWidth, innerHeight, depth } = coordinate.getOptions();\n return [innerWidth, innerHeight, depth];\n}\nfunction createFisheye(position, coordinate) {\n const { width, height } = coordinate.getOptions();\n return (tick) => {\n if (!isFisheye(coordinate))\n return tick;\n const tickPoint = position === 'bottom' ? [tick, 1] : [0, tick];\n const vector = coordinate.map(tickPoint);\n if (position === 'bottom') {\n const v = vector[0];\n const x = new LinearScale({\n domain: [0, width],\n range: [0, 1],\n });\n return x.map(v);\n }\n else if (position === 'left') {\n const v = vector[1];\n const x = new LinearScale({\n domain: [0, height],\n range: [0, 1],\n });\n return x.map(v);\n }\n return tick;\n };\n}\nfunction ticksOf(scale, domain, tickMethod) {\n if (scale.getTicks)\n return scale.getTicks();\n if (!tickMethod)\n return domain;\n const [min, max] = extent(domain, (d) => +d);\n const { tickCount } = scale.getOptions();\n return tickMethod(min, max, tickCount);\n}\n// Set inset for axis.\nfunction createInset(position, coordinate) {\n if (isPolar(coordinate))\n return (d) => d;\n const options = coordinate.getOptions();\n const { innerWidth, innerHeight, insetTop, insetBottom, insetLeft, insetRight, } = options;\n const [start, end, size] = position === 'left' || position === 'right'\n ? [insetTop, insetBottom, innerHeight]\n : [insetLeft, insetRight, innerWidth];\n const x = new LinearScale({\n domain: [0, 1],\n range: [start / size, 1 - end / size],\n });\n return (i) => x.map(i);\n}\n/**\n * Calc ticks based on scale and coordinate.\n */\nfunction getData(scale, domain, tickCount, defaultTickFormatter, tickFilter, tickMethod, position, coordinate) {\n var _a;\n if (tickCount !== undefined || tickMethod !== undefined) {\n scale.update(Object.assign(Object.assign({}, (tickCount && { tickCount })), (tickMethod && { tickMethod })));\n }\n const ticks = ticksOf(scale, domain, tickMethod);\n const filteredTicks = tickFilter ? ticks.filter(tickFilter) : ticks;\n const toString = (d) => d instanceof Date\n ? String(d)\n : typeof d === 'object' && !!d\n ? d\n : String(d);\n const labelFormatter = defaultTickFormatter || ((_a = scale.getFormatter) === null || _a === void 0 ? void 0 : _a.call(scale)) || toString;\n const applyInset = createInset(position, coordinate);\n const applyFisheye = createFisheye(position, coordinate);\n const isHorizontal = (position) => ['top', 'bottom', 'center', 'outer'].includes(position);\n const isVertical = (position) => ['left', 'right'].includes(position);\n // @todo GUI should consider the overlap problem for the first\n // and label of arc axis.\n if (isPolar(coordinate) || isTranspose(coordinate)) {\n return filteredTicks.map((d, i, array) => {\n var _a, _b;\n const offset = ((_a = scale.getBandWidth) === null || _a === void 0 ? void 0 : _a.call(scale, d)) / 2 || 0;\n const tick = applyInset(scale.map(d) + offset);\n const shouldReverse = (isRadial(coordinate) && position === 'center') ||\n (isTranspose(coordinate) &&\n ((_b = scale.getTicks) === null || _b === void 0 ? void 0 : _b.call(scale)) &&\n isHorizontal(position)) ||\n (isTranspose(coordinate) && isVertical(position));\n return {\n value: shouldReverse ? 1 - tick : tick,\n label: toString(labelFormatter(prettyNumber(d), i, array)),\n id: String(i),\n };\n });\n }\n return filteredTicks.map((d, i, array) => {\n var _a;\n const offset = ((_a = scale.getBandWidth) === null || _a === void 0 ? void 0 : _a.call(scale, d)) / 2 || 0;\n const tick = applyFisheye(applyInset(scale.map(d) + offset));\n const shouldReverse = isVertical(position);\n return {\n value: shouldReverse ? 1 - tick : tick,\n label: toString(labelFormatter(prettyNumber(d), i, array)),\n id: String(i),\n };\n });\n}\nfunction inferGridLength(position, coordinate, plane = 'xy') {\n const [width, height, depth] = sizeOf(coordinate);\n if (plane === 'xy') {\n if (position.includes('bottom') || position.includes('top'))\n return height;\n return width;\n }\n else if (plane === 'xz') {\n if (position.includes('bottom') || position.includes('top'))\n return depth;\n return width;\n }\n else {\n if (position.includes('bottom') || position.includes('top'))\n return height;\n return depth;\n }\n}\nfunction inferLabelOverlap(transform = [], style) {\n if (transform.length > 0)\n return transform;\n const { labelAutoRotate, labelAutoHide, labelAutoEllipsis, labelAutoWrap } = style;\n const finalTransforms = [];\n const addToTransforms = (overlap, state) => {\n if (state) {\n finalTransforms.push(Object.assign(Object.assign({}, overlap), state));\n }\n };\n addToTransforms({\n type: 'rotate',\n optionalAngles: [0, 15, 30, 45, 60, 90],\n }, labelAutoRotate);\n addToTransforms({ type: 'ellipsis', minLength: 20 }, labelAutoEllipsis);\n addToTransforms({ type: 'hide' }, labelAutoHide);\n addToTransforms({ type: 'wrap', wordWrapWidth: 100, maxLines: 3, recoveryWhenFail: true }, labelAutoWrap);\n return finalTransforms;\n}\nfunction inferArcStyle(position, bbox, innerRadius, outerRadius, coordinate) {\n const { x, y, width, height } = bbox;\n const center = [x + width / 2, y + height / 2];\n const radius = Math.min(width, height) / 2;\n const [startAngle, endAngle] = angleOf(coordinate);\n const [w, h] = sizeOf(coordinate);\n const r = Math.min(w, h) / 2;\n const common = {\n center,\n radius,\n startAngle,\n endAngle,\n gridLength: (outerRadius - innerRadius) * r,\n };\n if (position === 'inner') {\n // @ts-ignore\n const { insetLeft, insetTop } = coordinate.getOptions();\n return Object.assign(Object.assign({}, common), { center: [center[0] - insetLeft, center[1] - insetTop], labelAlign: 'perpendicular', labelDirection: 'positive', tickDirection: 'positive', gridDirection: 'negative' });\n }\n // arc outer\n return Object.assign(Object.assign({}, common), { labelAlign: 'parallel', labelDirection: 'negative', tickDirection: 'negative', gridDirection: 'positive' });\n}\nfunction inferGrid(value, coordinate, scale) {\n if (isTheta(coordinate) || isParallel(coordinate))\n return false;\n // Display axis grid for non-discrete values.\n return value === undefined ? !!scale.getTicks : value;\n}\nfunction infer3DAxisLinearOverrideStyle(coordinate) {\n // @ts-ignore\n const { depth } = coordinate.getOptions();\n return depth\n ? {\n tickIsBillboard: true,\n lineIsBillboard: true,\n labelIsBillboard: true,\n titleIsBillboard: true,\n gridIsBillboard: true,\n }\n : {};\n}\nfunction inferAxisLinearOverrideStyle(position, orientation, bbox, coordinate, xScale) {\n const { x, y, width, height } = bbox;\n if (position === 'bottom') {\n return { startPos: [x, y], endPos: [x + width, y] };\n }\n if (position === 'left') {\n return { startPos: [x + width, y + height], endPos: [x + width, y] };\n }\n if (position === 'right') {\n return { startPos: [x, y + height], endPos: [x, y] };\n }\n if (position === 'top') {\n return { startPos: [x, y + height], endPos: [x + width, y + height] };\n }\n // linear axis, maybe in parallel, polar, radial or radar systems.\n if (position === 'center') {\n // axisY\n if (orientation === 'vertical') {\n return {\n startPos: [x, y],\n endPos: [x, y + height],\n };\n }\n // axisX\n else if (orientation === 'horizontal') {\n return {\n startPos: [x, y],\n endPos: [x + width, y],\n };\n }\n // axis with rotate\n else if (typeof orientation === 'number') {\n const [cx, cy] = coordinate.getCenter();\n const [innerRadius, outerRadius] = radiusOf(coordinate);\n const [startAngle, endAngle] = angleOf(coordinate);\n const r = Math.min(width, height) / 2;\n // @ts-ignore\n const { insetLeft, insetTop } = coordinate.getOptions();\n const innerR = innerRadius * r;\n const outerR = outerRadius * r;\n const [actualCx, actualCy] = [cx + x - insetLeft, cy + y - insetTop];\n const [cos, sin] = [Math.cos(orientation), Math.sin(orientation)];\n const startPos = [\n actualCx + outerR * cos,\n actualCy + outerR * sin,\n ];\n const endPos = [\n actualCx + innerR * cos,\n actualCy + innerR * sin,\n ];\n const getAxisXDomainLength = () => {\n const { domain } = xScale.getOptions();\n return domain.length;\n };\n const controllAngleCount = isPolar(coordinate) && xScale ? getAxisXDomainLength() : 3;\n return {\n startPos,\n endPos,\n gridClosed: Math.abs(endAngle - startAngle - 360) < 1e-6,\n gridCenter: [actualCx, actualCy],\n gridControlAngles: new Array(controllAngleCount)\n .fill(0)\n .map((d, i, arr) => ((endAngle - startAngle) / controllAngleCount) * i),\n };\n }\n }\n // position is inner or outer for arc axis won't be here\n return {};\n}\nconst ArcAxisComponent = (options) => {\n const { order, size, position, orientation, labelFormatter, tickFilter, tickCount, tickMethod, important = {}, style = {}, indexBBox, title, grid = false } = options, rest = __rest(options, [\"order\", \"size\", \"position\", \"orientation\", \"labelFormatter\", \"tickFilter\", \"tickCount\", \"tickMethod\", \"important\", \"style\", \"indexBBox\", \"title\", \"grid\"]);\n return ({ scales: [scale], value, coordinate, theme }) => {\n const { bbox } = value;\n const { domain } = scale.getOptions();\n const data = getData(scale, domain, tickCount, labelFormatter, tickFilter, tickMethod, position, coordinate);\n // Bind computed bbox if exists.\n const labels = indexBBox\n ? data.map((d, i) => {\n const bbox = indexBBox.get(i);\n if (!bbox)\n return d;\n // bbox: [label, bbox]\n // Make than indexBBox can match current label.\n if (bbox[0] !== d.label)\n return d;\n return Object.assign(Object.assign({}, d), { bbox: bbox[1] });\n })\n : data;\n const [innerRadius, outerRadius] = radiusOf(coordinate);\n const defaultStyle = inferArcStyle(position, bbox, innerRadius, outerRadius, coordinate);\n const { axis: axisTheme, axisArc = {} } = theme;\n const finalStyle = adaptor(deepMix({}, axisTheme, axisArc, defaultStyle, Object.assign(Object.assign({ type: 'arc', data: labels, titleText: titleContent(title), grid }, rest), important)));\n return new AxisComponent({\n // @fixme transform is not valid for arcAxis.\n // @ts-ignore\n style: omit(finalStyle, ['transform']),\n });\n };\n};\nfunction inferThemeStyle(scale, coordinate, theme, direction, position, orientation) {\n const baseStyle = theme.axis;\n const positionStyle = ['top', 'right', 'bottom', 'left'].includes(position)\n ? theme[`axis${capitalizeFirst(position)}`]\n : theme.axisLinear;\n const channel = scale.getOptions().name;\n const channelStyle = theme[`axis${upperFirst(channel)}`] || {};\n return Object.assign({}, baseStyle, positionStyle, channelStyle);\n}\nfunction inferDefaultStyle(scale, coordinate, theme, direction, position, orientation) {\n const themeStyle = inferThemeStyle(scale, coordinate, theme, direction, position, orientation);\n if (position === 'center') {\n return Object.assign(Object.assign(Object.assign(Object.assign({}, themeStyle), { labelDirection: direction === 'right' ? 'negative' : 'positive' }), (direction === 'center'\n ? { labelTransform: 'translate(50%,0)' }\n : null)), { tickDirection: direction === 'right' ? 'negative' : 'positive', labelSpacing: direction === 'center' ? 0 : 4, titleSpacing: isVertical(orientation) ? 10 : 0, tick: direction === 'center' ? false : undefined });\n }\n return themeStyle;\n}\nconst LinearAxisComponent = (options) => {\n const { direction = 'left', important = {}, labelFormatter, order, orientation, actualPosition, position, size, style = {}, title, tickCount, tickFilter, tickMethod, transform, indexBBox } = options, userDefinitions = __rest(options, [\"direction\", \"important\", \"labelFormatter\", \"order\", \"orientation\", \"actualPosition\", \"position\", \"size\", \"style\", \"title\", \"tickCount\", \"tickFilter\", \"tickMethod\", \"transform\", \"indexBBox\"]);\n return ({ scales, value, coordinate, theme }) => {\n const { bbox } = value;\n const [scale] = scales;\n const { domain, xScale } = scale.getOptions();\n const defaultStyle = inferDefaultStyle(scale, coordinate, theme, direction, position, orientation);\n const internalAxisStyle = Object.assign(Object.assign(Object.assign({}, defaultStyle), style), userDefinitions);\n const gridLength = inferGridLength(actualPosition || position, coordinate, options.plane);\n const overrideStyle = inferAxisLinearOverrideStyle(position, orientation, bbox, coordinate, xScale);\n const threeDOverrideStyle = infer3DAxisLinearOverrideStyle(coordinate);\n const data = getData(scale, domain, tickCount, labelFormatter, tickFilter, tickMethod, position, coordinate);\n // Bind computed bbox if exists.\n const labels = indexBBox\n ? data.map((d, i) => {\n const bbox = indexBBox.get(i);\n if (!bbox)\n return d;\n // bbox: [label, bbox]\n // Make than indexBBox can match current label.\n if (bbox[0] !== d.label)\n return d;\n return Object.assign(Object.assign({}, d), { bbox: bbox[1] });\n })\n : data;\n const finalAxisStyle = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, internalAxisStyle), { type: 'linear', data: labels, crossSize: size, titleText: titleContent(title), labelOverlap: inferLabelOverlap(transform, internalAxisStyle), grid: inferGrid(internalAxisStyle.grid, coordinate, scale), gridLength, \n // Always showLine, make title could align the end of axis.\n line: true, indexBBox }), (!internalAxisStyle.line ? { lineOpacity: 0 } : null)), overrideStyle), threeDOverrideStyle), important);\n // For hide overlap, do not set crossSize.\n const hasHide = finalAxisStyle.labelOverlap.find((d) => d.type === 'hide');\n if (hasHide)\n finalAxisStyle.crossSize = false;\n return new AxisComponent({\n className: 'axis',\n style: adaptor(finalAxisStyle),\n });\n };\n};\nconst axisFactor = (axis) => {\n return (options) => {\n const { labelFormatter: useDefinedLabelFormatter, labelFilter: userDefinedLabelFilter = () => true, } = options;\n return (context) => {\n var _a;\n const { scales: [scale], } = context;\n const ticks = ((_a = scale.getTicks) === null || _a === void 0 ? void 0 : _a.call(scale)) || scale.getOptions().domain;\n const labelFormatter = typeof useDefinedLabelFormatter === 'string'\n ? format(useDefinedLabelFormatter)\n : useDefinedLabelFormatter;\n const labelFilter = (datum, index, array) => userDefinedLabelFilter(ticks[index], index, ticks);\n const normalizedOptions = Object.assign(Object.assign({}, options), { labelFormatter,\n labelFilter,\n scale });\n return axis(normalizedOptions)(context);\n };\n };\n};\nexport const LinearAxis = axisFactor(LinearAxisComponent);\nexport const ArcAxis = axisFactor(ArcAxisComponent);\nLinearAxis.props = {\n defaultPosition: 'center',\n defaultSize: 45,\n defaultOrder: 0,\n defaultCrossPadding: [12, 12],\n defaultPadding: [12, 12],\n};\nArcAxis.props = {\n defaultPosition: 'outer',\n defaultOrientation: 'vertical',\n defaultSize: 45,\n defaultOrder: 0,\n defaultCrossPadding: [12, 12],\n defaultPadding: [12, 12],\n};\n//# sourceMappingURL=axis.js.map","import { LinearAxis, rotateAxis } from './axis';\n/**\n * LinearAxis component bind to x scale.\n */\nexport const AxisX = (options) => {\n return (...args) => {\n // empirical value for crossPadding\n const axisX = LinearAxis(Object.assign({}, { crossPadding: 50 }, options))(...args);\n rotateAxis(axisX, options);\n return axisX;\n };\n};\nAxisX.props = Object.assign(Object.assign({}, LinearAxis.props), { defaultPosition: 'bottom' });\nexport function axisXConfig() { }\n//# sourceMappingURL=axisX.js.map","import { LinearAxis, rotateAxis } from './axis';\n/**\n * LinearAxis component bind to y scale.\n */\nexport const AxisY = (options) => {\n return (...args) => {\n const axisY = LinearAxis(Object.assign({}, { crossPadding: 10 }, options))(...args);\n rotateAxis(axisY, options);\n return axisY;\n };\n};\nAxisY.props = Object.assign(Object.assign({}, LinearAxis.props), { defaultPosition: 'left' });\n//# sourceMappingURL=axisY.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { angleOf } from '../utils/coordinate';\nimport { LinearAxis } from './axis';\nfunction inferTitleTransform(orientation) {\n const internalOrientation = orientation % (Math.PI * 2);\n if (internalOrientation === Math.PI / 2) {\n return { titleTransform: 'translate(0, 50%)' };\n }\n if (internalOrientation > -Math.PI / 2 && internalOrientation < Math.PI / 2) {\n return { titleTransform: 'translate(50%, 0)' };\n }\n if (internalOrientation > Math.PI / 2 &&\n internalOrientation < (Math.PI * 3) / 2) {\n return { titleTransform: 'translate(-50%, 0)' };\n }\n return {};\n}\nfunction inferAxisStyle(options, theme, coordinate, scales) {\n const { radar } = options;\n const [scale] = scales;\n const name = scale.getOptions().name;\n const [startAngle, endAngle] = angleOf(coordinate);\n const { axisRadar: radarTheme = {} } = theme;\n return Object.assign(Object.assign({}, radarTheme), { grid: name === 'position', gridConnect: 'line', gridControlAngles: new Array(radar.count).fill(0).map((_, i) => {\n const angle = (endAngle - startAngle) / radar.count;\n return angle * i;\n }) });\n}\nexport const AxisRadar = (options) => {\n const { important = {} } = options, restOptions = __rest(options, [\"important\"]);\n return (context) => {\n const { theme, coordinate, scales } = context;\n return LinearAxis(Object.assign(Object.assign(Object.assign({}, restOptions), inferTitleTransform(options.orientation)), { important: Object.assign(Object.assign({}, inferAxisStyle(options, theme, coordinate, scales)), important) }))(context);\n };\n};\nAxisRadar.props = Object.assign(Object.assign({}, LinearAxis.props), { defaultPosition: 'center' });\n//# sourceMappingURL=axisRadar.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Category } from '@antv/component';\nimport { last } from '@antv/util';\nimport { format } from 'd3-format';\nimport { Identity } from '@antv/scale';\nimport { useMarker } from '../utils/marker';\nimport { adaptor, domainOf, LegendCategoryLayout, inferComponentLayout, inferComponentShape, scaleOf, titleContent, } from './utils';\nfunction inferShape(scales, markState) {\n const shapeScale = scaleOf(scales, 'shape');\n const colorScale = scaleOf(scales, 'color');\n // NOTE!!!\n // scaleOrdinal.map will mute domain.\n const shapeScale1 = shapeScale ? shapeScale.clone() : null;\n // Infer the main shape if multiple marks are used.\n const shapes = [];\n for (const [mark, state] of markState) {\n const namespace = mark.type;\n const domain = (colorScale === null || colorScale === void 0 ? void 0 : colorScale.getOptions().domain.length) > 0\n ? colorScale === null || colorScale === void 0 ? void 0 : colorScale.getOptions().domain\n : state.data;\n const shape = domain.map((d, i) => {\n var _a;\n if (shapeScale1)\n return shapeScale1.map(d || 'point');\n return ((_a = mark === null || mark === void 0 ? void 0 : mark.style) === null || _a === void 0 ? void 0 : _a.shape) || state.defaultShape || 'point';\n });\n if (typeof namespace === 'string')\n shapes.push([namespace, shape]);\n }\n if (shapes.length === 0)\n return ['point', ['point']];\n if (shapes.length === 1)\n return shapes[0];\n if (!shapeScale)\n return shapes[0];\n // Evaluate the maximum likelihood of shape\n const { range } = shapeScale.getOptions();\n return shapes\n .map(([namespace, shape]) => {\n let sum = 0;\n for (let i = 0; i < shapes.length; i++) {\n const targetShape = range[i % range.length];\n if (shape[i] === targetShape)\n sum++;\n }\n return [sum / shape.length, [namespace, shape]];\n })\n .sort((a, b) => b[0] - a[0])[0][1];\n}\nfunction inferItemMarker(options, context) {\n const { scales, library, markState } = context;\n const [mark, shapes] = inferShape(scales, markState);\n const { itemMarker, itemMarkerSize: size } = options;\n const create = (name, d) => {\n var _a, _b, _c;\n const marker = ((_c = (_b = (_a = library[`mark.${mark}`]) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.shape[name]) === null || _c === void 0 ? void 0 : _c.props.defaultMarker) || last(name.split('.'));\n const radius = typeof size === 'function' ? size(d) : size;\n return () => useMarker(marker, { color: d.color })(0, 0, radius);\n };\n const shapeOf = (i) => `${shapes[i]}`;\n const shapeScale = scaleOf(scales, 'shape');\n if (shapeScale && !itemMarker)\n return (d, i) => create(shapeOf(i), d);\n if (typeof itemMarker === 'function') {\n return (d, i) => {\n // @todo Fix this in GUI.\n // It should pass primitive value rather object.\n const node = itemMarker(d.id, i);\n if (typeof node === 'string')\n return create(node, d);\n return node;\n };\n }\n return (d, i) => create(itemMarker || shapeOf(i), d);\n}\nfunction inferItemMarkerOpacity(scales) {\n const scale = scaleOf(scales, 'opacity');\n if (scale) {\n const { range } = scale.getOptions();\n return (d, i) => range[i];\n }\n return undefined;\n}\nfunction inferItemMarkerSize(scales, defaults) {\n const scale = scaleOf(scales, 'size');\n if (scale instanceof Identity)\n return scale.map(NaN) * 2;\n return defaults;\n}\nfunction inferCategoryStyle(options, context) {\n const { labelFormatter = (d) => `${d}` } = options;\n const { scales, theme } = context;\n const defaultSize = theme.legendCategory.itemMarkerSize;\n const itemMarkerSize = inferItemMarkerSize(scales, defaultSize);\n const baseStyle = {\n itemMarker: inferItemMarker(Object.assign(Object.assign({}, options), { itemMarkerSize }), context),\n itemMarkerSize: itemMarkerSize,\n itemMarkerOpacity: inferItemMarkerOpacity(scales),\n };\n const finalLabelFormatter = typeof labelFormatter === 'string'\n ? format(labelFormatter)\n : labelFormatter;\n const colorScale = scaleOf(scales, 'color');\n const domain = domainOf(scales);\n const colorOf = colorScale\n ? (d) => colorScale.map(d)\n : () => context.theme.color;\n return Object.assign(Object.assign({}, baseStyle), { data: domain.map((d) => ({\n id: d,\n label: finalLabelFormatter(d),\n color: colorOf(d),\n })) });\n}\nfunction inferLegendShape(value, options, component) {\n const { position } = options;\n if (position === 'center') {\n const { bbox } = value;\n // to be confirm: if position is center, we should use the width and height of user definition.\n const { width, height } = bbox;\n return { width, height };\n }\n const { width, height } = inferComponentShape(value, options, component);\n return { width, height };\n}\n/**\n * Guide Component for ordinal color scale.\n */\nexport const LegendCategory = (options) => {\n const { labelFormatter, layout, order, orientation, position, size, title, cols, itemMarker } = options, style = __rest(options, [\"labelFormatter\", \"layout\", \"order\", \"orientation\", \"position\", \"size\", \"title\", \"cols\", \"itemMarker\"]);\n const { gridRow } = style;\n return (context) => {\n const { value, theme } = context;\n const { bbox } = value;\n const { width, height } = inferLegendShape(value, options, LegendCategory);\n const finalLayout = inferComponentLayout(position, layout);\n const legendStyle = Object.assign(Object.assign(Object.assign(Object.assign({ orientation: ['right', 'left', 'center'].includes(position)\n ? 'vertical'\n : 'horizontal', width,\n height, layout: cols !== undefined ? 'grid' : 'flex' }, (cols !== undefined && { gridCol: cols })), (gridRow !== undefined && { gridRow })), { titleText: titleContent(title) }), inferCategoryStyle(options, context));\n const { legendCategory: legendTheme = {} } = theme;\n const categoryStyle = adaptor(Object.assign({}, legendTheme, legendStyle, style));\n const layoutWrapper = new LegendCategoryLayout({\n style: Object.assign(Object.assign({ x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height }, finalLayout), { \n // @ts-ignore\n subOptions: categoryStyle }),\n });\n layoutWrapper.appendChild(new Category({\n className: 'legend-category',\n style: categoryStyle,\n }));\n return layoutWrapper;\n };\n};\nLegendCategory.props = {\n defaultPosition: 'top',\n defaultOrder: 1,\n defaultSize: 40,\n defaultCrossPadding: [12, 12],\n defaultPadding: [12, 12],\n};\n//# sourceMappingURL=legendCategory.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { parseColor } from '@antv/g';\nimport { Continuous } from '@antv/component';\nimport { Constant, Quantile, Quantize, Threshold } from '@antv/scale';\nimport { format } from 'd3-format';\nimport { lastOf } from '../utils/array';\nimport { G2Layout, adaptor, inferComponentLayout, inferComponentShape, isHorizontal, scaleOf, titleContent, } from './utils';\nfunction updateShapeDimensions(shape, finalSize, orientation) {\n shape.size = finalSize;\n if (isHorizontal(orientation)) {\n shape.height = finalSize;\n }\n else {\n shape.width = finalSize;\n }\n return shape;\n}\nfunction inferContinuousShape(value, options, component) {\n const { size } = options;\n const shape = inferComponentShape(value, options, component);\n return updateShapeDimensions(shape, size, shape.orientation);\n}\nfunction getFormatter(max) {\n return (value) => ({\n value: value / max,\n label: String(value),\n });\n}\nfunction getQuantizeOrQuantileConfig(shape, colorScale, min, max, range) {\n const thresholds = colorScale.thresholds;\n const formatter = getFormatter(max);\n return Object.assign(Object.assign({}, shape), { color: range, data: [min, ...thresholds, max].map(formatter) });\n}\nfunction getThresholdConfig(shape, colorScale, range) {\n const thresholds = colorScale.thresholds;\n const data = [-Infinity, ...thresholds, Infinity].map((value, index) => ({\n value: index,\n label: value,\n }));\n return Object.assign(Object.assign({}, shape), { data, color: range, labelFilter: (datum, index) => {\n return index > 0 && index < data.length - 1;\n } });\n}\nfunction rangeOf(scale) {\n const { domain } = scale.getOptions();\n const [min, max] = [domain[0], lastOf(domain)];\n return [min, max];\n}\n/**\n * if color scale is not defined, create a constant color scale based on default color\n * @param scale\n * @param theme\n */\nfunction createColorScale(scale, defaultColor) {\n const options = scale.getOptions();\n const newScale = scale.clone();\n newScale.update(Object.assign(Object.assign({}, options), { range: [parseColor(defaultColor).toString()] }));\n return newScale;\n}\nfunction getLinearConfig(shape, colorScale, sizeScale, opacityScale, scales, theme) {\n const { length } = shape;\n const definedScale = sizeScale || opacityScale;\n // Only use defaultColor when there is no color scale\n // in this view.\n const defaultColor = scales.color\n ? theme.legendContinuous.ribbonFill || 'black'\n : theme.color;\n const scale = colorScale || createColorScale(definedScale, defaultColor);\n const [min, max] = rangeOf(scale);\n const [domainMin, domainMax] = rangeOf([colorScale, sizeScale, opacityScale]\n .filter((d) => d !== undefined)\n .find((d) => !(d instanceof Constant)));\n return Object.assign(Object.assign({}, shape), { domain: [domainMin, domainMax], data: scale.getTicks().map((value) => ({ value })), color: new Array(Math.floor(length)).fill(0).map((d, i) => {\n const value = ((max - min) / (length - 1)) * i + min;\n const color = scale.map(value) || defaultColor;\n const opacity = opacityScale ? opacityScale.map(value) : 1;\n return color.replace(/rgb[a]*\\(([\\d]{1,3}) *, *([\\d]{1,3}) *, *([\\d]{1,3})[\\S\\s]*\\)/, (match, p1, p2, p3) => `rgba(${p1}, ${p2}, ${p3}, ${opacity})`);\n }) });\n}\nfunction inferContinuousConfig(scales, scale, value, options, component, theme) {\n const colorScale = scaleOf(scales, 'color');\n const shape = inferContinuousShape(value, options, component);\n if (colorScale instanceof Threshold) {\n const { range } = colorScale.getOptions();\n const [min, max] = rangeOf(colorScale);\n // for quantize, quantile scale\n if (colorScale instanceof Quantize || colorScale instanceof Quantile) {\n return getQuantizeOrQuantileConfig(shape, colorScale, min, max, range);\n }\n // for threshold\n return getThresholdConfig(shape, colorScale, range);\n }\n // for linear, pow, sqrt, log, time, utc scale\n const sizeScale = scaleOf(scales, 'size');\n const opacityScale = scaleOf(scales, 'opacity');\n return getLinearConfig(shape, colorScale, sizeScale, opacityScale, scale, theme);\n}\n/**\n * Guide Component for continuous color scale.\n * @todo Custom style.\n */\nexport const LegendContinuous = (options) => {\n const { labelFormatter, layout, order, orientation, position, size, title, style, crossPadding, padding } = options, rest = __rest(options, [\"labelFormatter\", \"layout\", \"order\", \"orientation\", \"position\", \"size\", \"title\", \"style\", \"crossPadding\", \"padding\"]);\n return ({ scales, value, theme, scale }) => {\n const { bbox } = value;\n const { x, y, width, height } = bbox;\n const finalLayout = inferComponentLayout(position, layout);\n const { legendContinuous: legendTheme = {} } = theme;\n const finalStyle = adaptor(Object.assign({}, legendTheme, Object.assign(Object.assign({ titleText: titleContent(title), labelAlign: 'value', labelFormatter: typeof labelFormatter === 'string'\n ? (d) => format(labelFormatter)(d.label)\n : labelFormatter }, inferContinuousConfig(scales, scale, value, options, LegendContinuous, theme)), style), rest));\n const layoutWrapper = new G2Layout({\n style: Object.assign(Object.assign({ x,\n y,\n width,\n height }, finalLayout), { \n // @ts-ignore\n subOptions: finalStyle }),\n });\n layoutWrapper.appendChild(new Continuous({\n className: 'legend-continuous',\n style: finalStyle,\n }));\n return layoutWrapper;\n };\n};\nLegendContinuous.props = {\n defaultPosition: 'top',\n defaultOrientation: 'vertical',\n defaultOrder: 1,\n defaultSize: 60,\n defaultLength: 200,\n defaultLegendSize: 60,\n defaultPadding: [20, 10],\n defaultCrossPadding: [12, 12], // [horizontal, vertical]\n};\n//# sourceMappingURL=legendContinuous.js.map","import { LegendContinuous } from './legendContinuous';\nexport const LegendContinuousBlock = (options) => {\n return (...args) => LegendContinuous(Object.assign({}, { block: true }, options))(...args);\n};\nLegendContinuousBlock.props = Object.assign(Object.assign({}, LegendContinuous.props), { defaultPosition: 'top', defaultOrientation: 'horizontal' });\n//# sourceMappingURL=legendContinuousBlock.js.map","import { scaleOf } from './utils';\nimport { LegendContinuous } from './legendContinuous';\nexport const LegendContinuousSize = (options) => {\n return (context) => {\n const { scales } = context;\n const sizeScale = scaleOf(scales, 'size');\n return LegendContinuous(Object.assign({}, {\n type: 'size',\n data: sizeScale.getTicks().map((value, index) => ({\n value,\n label: String(value),\n })),\n }, options))(context);\n };\n};\nLegendContinuousSize.props = Object.assign(Object.assign({}, LegendContinuous.props), { defaultPosition: 'top', defaultOrientation: 'horizontal' });\n//# sourceMappingURL=legendContinuousSize.js.map","import { LegendContinuous } from './legendContinuous';\nimport { LegendContinuousSize } from './legendContinuousSize';\nexport const LegendContinuousBlockSize = (options) => {\n return LegendContinuousSize(Object.assign({}, { block: true }, options));\n};\nLegendContinuousBlockSize.props = Object.assign(Object.assign({}, LegendContinuous.props), { defaultPosition: 'top', defaultOrientation: 'horizontal' });\n//# sourceMappingURL=legendContinuousBlockSize.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { applyStyle } from '../shape/utils';\nimport { subObject } from '../utils/helper';\nimport { createComponent, maybeAppend } from './utils';\nfunction inferStyleByAlign(x, y, width, align) {\n switch (align) {\n case 'center':\n return {\n x: x + width / 2,\n y,\n textAlign: 'middle',\n };\n case 'right':\n return {\n x: x + width,\n y,\n textAlign: 'right',\n };\n default:\n return {\n x,\n y,\n textAlign: 'left',\n };\n }\n}\nconst Title = createComponent({\n render(attributes, container) {\n const { width, title, subtitle, spacing = 2, align = 'left' } = attributes, style = __rest(attributes, [\"width\", \"title\", \"subtitle\", \"spacing\", \"align\"]);\n const titleStyle = subObject(style, 'title');\n const subtitleStyle = subObject(style, 'subtitle');\n const mainTitle = maybeAppend(container, '.title', 'text')\n .attr('className', 'title')\n .call(applyStyle, Object.assign(Object.assign(Object.assign({}, inferStyleByAlign(0, 0, width, align)), { fontSize: 14, textBaseline: 'top', text: title }), titleStyle))\n .node();\n const bounds = mainTitle.getLocalBounds();\n maybeAppend(container, '.sub-title', 'text')\n .attr('className', 'sub-title')\n .call((selection) => {\n if (!subtitle)\n return selection.node().remove();\n selection.node().attr(Object.assign(Object.assign(Object.assign({}, inferStyleByAlign(0, bounds.max[1] + spacing, width, align)), { fontSize: 12, textBaseline: 'top', text: subtitle }), subtitleStyle));\n });\n },\n});\n/**\n * Title Component.\n */\nexport const TitleComponent = (options) => {\n return ({ value, theme }) => {\n const { x, y, width, height } = value.bbox;\n return new Title({\n style: deepMix({}, theme.title, Object.assign({ x,\n y,\n width,\n height }, options)),\n });\n };\n};\nTitleComponent.props = {\n defaultPosition: 'top',\n defaultOrder: 2,\n defaultSize: 36,\n defaultCrossPadding: [20, 20],\n defaultPadding: [12, 12],\n};\n//# sourceMappingURL=title.js.map","import { bisectLeft, sort } from 'd3-array';\nfunction constrain(x, lo, hi) {\n return Math.min(hi, Math.max(lo, x));\n}\nexport function isOrdinalScale(scale) {\n return !!scale.getBandWidth;\n}\nexport function invert(scale, x, start) {\n if (!isOrdinalScale(scale))\n return scale.invert(x);\n const { adjustedRange } = scale;\n const { domain } = scale.getOptions();\n const offset = start ? -1 : 0;\n const step = scale.getStep();\n const range = start ? adjustedRange : adjustedRange.map((d) => d + step);\n // R[i0 - 1] < x <= R[i0]\n const i0 = bisectLeft(range, x);\n const i1 = constrain(i0 + offset, 0, domain.length - 1);\n return domain[i1];\n}\nexport function domainOf(scale, values, ratioX) {\n if (!values)\n return scale.getOptions().domain;\n if (!isOrdinalScale(scale)) {\n const sortedDomain = sort(values);\n if (!ratioX)\n return sortedDomain;\n const [d] = sortedDomain;\n const { range } = scale.getOptions();\n const [r0, r1] = range;\n const v = r0 > r1 ? -1 : 1;\n const d1 = scale.invert(scale.map(d) + v * ratioX);\n return [d, d1];\n }\n const { domain } = scale.getOptions();\n const v1 = values[0];\n const start = domain.indexOf(v1);\n if (ratioX) {\n const end = start + Math.round(domain.length * ratioX);\n return domain.slice(start, end);\n }\n const v2 = values[values.length - 1];\n const end = domain.indexOf(v2);\n return domain.slice(start, end + 1);\n}\nexport function selectionOf(x, y, x1, y1, scale, coordinate) {\n const { x: scaleX, y: scaleY } = scale;\n const abstractDomain = (point, start) => {\n const [x, y] = coordinate.invert(point);\n return [invert(scaleX, x, start), invert(scaleY, y, start)];\n };\n const p0 = abstractDomain([x, y], true);\n const p1 = abstractDomain([x1, y1], false);\n const domainX = domainOf(scaleX, [p0[0], p1[0]]);\n const domainY = domainOf(scaleY, [p0[1], p1[1]]);\n return [domainX, domainY];\n}\nexport function abstractOf(domain, scale) {\n const [d0, d1] = domain;\n const maybeStep = (scale) => (scale.getStep ? scale.getStep() : 0);\n return [scale.map(d0), scale.map(d1) + maybeStep(scale)];\n}\nexport function pixelsOf(selection, scale, coordinate) {\n const { x: scaleX, y: scaleY } = scale;\n const [X, Y] = selection;\n const AX = abstractOf(X, scaleX);\n const AY = abstractOf(Y, scaleY);\n const p0 = [AX[0], AY[0]];\n const p1 = [AX[1], AY[1]];\n const [x, y] = coordinate.map(p0);\n const [x1, y1] = coordinate.map(p1);\n return [x, y, x1, y1];\n}\n//# sourceMappingURL=scale.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Slider as SliderComponent } from '@antv/component';\nimport { format } from 'd3-format';\nimport { isArray } from '@antv/util';\nimport { isTranspose } from '../utils/coordinate';\nimport { invert } from '../utils/scale';\nfunction inferPosition(bbox, position, trackSize) {\n const { x, y, width, height } = bbox;\n if (position === 'left')\n return [x + width - trackSize, y];\n if (position === 'right')\n return [x, y];\n if (position === 'bottom')\n return [x, y];\n if (position === 'top')\n return [x, y + height - trackSize];\n}\n/**\n * Slider component.\n */\nexport const Slider = (options) => {\n // do not pass size.\n const { orientation, labelFormatter, size, style = {}, position } = options, rest = __rest(options, [\"orientation\", \"labelFormatter\", \"size\", \"style\", \"position\"]);\n return (context) => {\n var _a;\n const { scales: [scale], value, theme, coordinate, } = context;\n const { bbox } = value;\n const { width, height } = bbox;\n const { slider: sliderTheme = {} } = theme;\n const defaultFormatter = ((_a = scale.getFormatter) === null || _a === void 0 ? void 0 : _a.call(scale)) || ((v) => v + '');\n const formatter = typeof labelFormatter === 'string'\n ? format(labelFormatter)\n : labelFormatter;\n const isHorizontal = orientation === 'horizontal';\n const reverse = isTranspose(coordinate) && isHorizontal;\n const { trackSize = sliderTheme.trackSize } = style;\n const [x0, y0] = inferPosition(bbox, position, trackSize);\n return new SliderComponent({\n className: 'slider',\n style: Object.assign({}, sliderTheme, Object.assign(Object.assign({ x: x0, y: y0, trackLength: isHorizontal ? width : height, orientation, formatter: (v) => {\n const f = formatter || defaultFormatter;\n const v1 = reverse ? 1 - v : v;\n const tick = invert(scale, v1, true);\n return f(tick);\n }, sparklineData: inferSparklineData(options, context) }, style), rest)),\n });\n };\n};\nfunction markValue(markState, channels) {\n const [value] = Array.from(markState.entries())\n .filter(([mark]) => mark.type === 'line' || mark.type === 'area')\n .map(([mark]) => {\n const { encode, slider } = mark;\n if ((slider === null || slider === void 0 ? void 0 : slider.x) && Object.keys(slider.x).length === 0) {\n const channel = (name) => {\n const channel = encode[name];\n return [name, channel ? channel.value : undefined];\n };\n return Object.fromEntries(channels.map(channel));\n }\n });\n if (!(value === null || value === void 0 ? void 0 : value.series))\n return value === null || value === void 0 ? void 0 : value.y;\n const result = value.series.reduce((acc, curr, index) => {\n acc[curr] = acc[curr] || [];\n acc[curr].push(value.y[index]);\n return acc;\n }, {});\n return Object.values(result);\n}\nfunction inferSparklineData(options, context) {\n const { markState } = context;\n if (isArray(options.sparklineData))\n return options.sparklineData;\n return markValue(markState, ['y', 'series']);\n}\nSlider.props = {\n defaultPosition: 'bottom',\n defaultSize: 24,\n defaultOrder: 1,\n defaultCrossPadding: [12, 12],\n defaultPadding: [12, 12],\n};\n//# sourceMappingURL=slider.js.map","import { Slider } from './slider';\n/**\n * SliderX component.\n */\nexport const SliderX = (options) => {\n return Slider(Object.assign(Object.assign({}, options), { orientation: 'horizontal' }));\n};\nSliderX.props = Object.assign(Object.assign({}, Slider.props), { defaultPosition: 'bottom' });\n//# sourceMappingURL=sliderX.js.map","import { Slider } from './slider';\n/**\n * SliderY component.\n */\nexport const SliderY = (options) => {\n return Slider(Object.assign(Object.assign({}, options), { orientation: 'vertical' }));\n};\nSliderY.props = Object.assign(Object.assign({}, Slider.props), { defaultPosition: 'left' });\n//# sourceMappingURL=sliderY.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Scrollbar as ScrollbarComponent } from '@antv/component';\n/**\n * Scrollbar component.\n */\nexport const Scrollbar = (options) => {\n const { orientation, labelFormatter, style } = options, rest = __rest(options, [\"orientation\", \"labelFormatter\", \"style\"]);\n return ({ scales: [scale], value, theme }) => {\n const { bbox } = value;\n const { x, y, width, height } = bbox;\n const { scrollbar: scrollbarTheme = {} } = theme;\n const { ratio, range } = scale.getOptions();\n const mainSize = orientation === 'horizontal' ? width : height;\n const actualSize = mainSize / ratio;\n const [r0, r1] = range;\n const value1 = r1 > r0 ? 0 : 1;\n return new ScrollbarComponent({\n className: 'g2-scrollbar',\n style: Object.assign({}, scrollbarTheme, Object.assign(Object.assign(Object.assign(Object.assign({}, style), { x,\n y, trackLength: mainSize, value: value1 }), rest), { orientation, contentLength: actualSize, viewportLength: mainSize })),\n });\n };\n};\nScrollbar.props = {\n defaultPosition: 'bottom',\n defaultSize: 24,\n defaultOrder: 1,\n defaultCrossPadding: [12, 12],\n defaultPadding: [12, 12],\n};\n//# sourceMappingURL=scrollbar.js.map","import { Scrollbar } from './scrollbar';\n/**\n * ScrollbarX component.\n */\nexport const ScrollbarX = (options) => {\n return Scrollbar(Object.assign(Object.assign({}, options), { orientation: 'horizontal' }));\n};\nScrollbarX.props = Object.assign(Object.assign({}, Scrollbar.props), { defaultPosition: 'bottom' });\n//# sourceMappingURL=scrollbarX.js.map","import { Scrollbar } from './scrollbar';\n/**\n * ScrollbarY component.\n */\nexport const ScrollbarY = (options) => {\n return Scrollbar(Object.assign(Object.assign({}, options), { orientation: 'vertical' }));\n};\nScrollbarY.props = Object.assign(Object.assign({}, Scrollbar.props), { defaultPosition: 'left' });\n//# sourceMappingURL=scrollbarY.js.map","import { Group } from '@antv/g';\n// A empty component to pass parse view tree stage.\nexport const Legends = (options) => {\n return () => {\n return new Group();\n };\n};\nLegends.props = {};\n//# sourceMappingURL=legends.js.map","import { isTranspose } from '../utils/coordinate';\n/**\n * Scale mark from nothing to desired shape in x direction.\n */\nexport const ScaleInX = (options, context) => {\n // Small enough to hide or show very small part of mark,\n // but bigger enough to not cause bug.\n const ZERO = 0.0001;\n const { coordinate } = context;\n return (from, _, defaults) => {\n const [shape] = from;\n const { transform: prefix = '', fillOpacity = 1, strokeOpacity = 1, opacity = 1, } = shape.style;\n const [transformOrigin, transform] = isTranspose(coordinate)\n ? [`left bottom`, `scale(1, ${ZERO})`] // left-bottom corner\n : [`left top`, `scale(${ZERO}, 1)`]; // left-top corner\n // Using a short fadeIn transition to hide element with scale(0.001)\n // which is still visible.\n const keyframes = [\n {\n transform: `${prefix} ${transform}`.trimStart(),\n transformOrigin,\n fillOpacity: 0,\n strokeOpacity: 0,\n opacity: 0,\n },\n {\n transform: `${prefix} ${transform}`.trimStart(),\n transformOrigin,\n fillOpacity,\n strokeOpacity,\n opacity,\n offset: 0.01,\n },\n {\n transform: `${prefix} scale(1, 1)`.trimStart(),\n transformOrigin,\n fillOpacity,\n strokeOpacity,\n opacity,\n },\n ];\n const animation = shape.animate(keyframes, Object.assign(Object.assign({}, defaults), options));\n return animation;\n };\n};\n//# sourceMappingURL=scaleInX.js.map","import { isTranspose } from '../utils/coordinate';\n/**\n * Scale mark from desired shape to nothing in x direction.\n */\nexport const ScaleOutX = (options, context) => {\n // Small enough to hide or show very small part of mark,\n // but bigger enough to not cause bug.\n const ZERO = 0.0001;\n const { coordinate } = context;\n return (from, _, defaults) => {\n const [shape] = from;\n const { transform: prefix = '', fillOpacity = 1, strokeOpacity = 1, opacity = 1, } = shape.style;\n const [transformOrigin, transform] = isTranspose(coordinate)\n ? [`left bottom`, `scale(1, ${ZERO})`] // left-bottom corner\n : [`left top`, `scale(${ZERO}, 1)`]; // left-top corner\n // Using a short fadeIn transition to hide element with scale(0.001)\n // which is still visible.\n const keyframes = [\n {\n transform: `${prefix} scale(1, 1)`.trimStart(),\n transformOrigin,\n },\n {\n transform: `${prefix} ${transform}`.trimStart(),\n transformOrigin,\n fillOpacity,\n strokeOpacity,\n opacity,\n offset: 0.99,\n },\n {\n transform: `${prefix} ${transform}`.trimStart(),\n transformOrigin,\n fillOpacity: 0,\n strokeOpacity: 0,\n opacity: 0,\n },\n ];\n const animation = shape.animate(keyframes, Object.assign(Object.assign({}, defaults), options));\n return animation;\n };\n};\n//# sourceMappingURL=scaleOutX.js.map","import { arc } from 'd3-shape';\nimport { Path, convertToPath, CSS, PropertySyntax, } from '@antv/g';\nimport { isTranspose, isPolar } from '../utils/coordinate';\nimport { getArcObject } from '../shape/utils';\n/**\n * Scale mark from nothing to desired shape in y direction.\n */\nexport const ScaleInY = (options, context) => {\n // Small enough to hide or show very small part of mark,\n // but bigger enough to not cause bug.\n const ZERO = 0.0001;\n const { coordinate } = context;\n // the polar coordinate need\n CSS.registerProperty({\n name: 'scaleInYRadius',\n inherits: false,\n initialValue: '',\n interpolable: true,\n syntax: PropertySyntax.NUMBER,\n });\n return (from, _, defaults) => {\n const [shape] = from;\n const PolarScaleInY = (shape) => {\n const { __data__, style } = shape;\n const { radius = 0, inset = 0, fillOpacity = 1, strokeOpacity = 1, opacity = 1, } = style;\n const { points, y, y1 } = __data__;\n const arcObject = getArcObject(coordinate, points, [y, y1]);\n const { innerRadius, outerRadius } = arcObject;\n const path = arc()\n .cornerRadius(radius)\n .padAngle((inset * Math.PI) / 180);\n const pathForConversion = new Path({});\n const center = coordinate.getCenter();\n const createArcPath = (arcParams) => {\n pathForConversion.attr({\n d: path(arcParams),\n transform: `translate(${center[0]}, ${center[1]})`,\n });\n const convertedPathDefinition = convertToPath(pathForConversion);\n pathForConversion.style.transform = '';\n return convertedPathDefinition;\n };\n const keyframes = [\n {\n scaleInYRadius: innerRadius + ZERO,\n fillOpacity: 0,\n strokeOpacity: 0,\n opacity: 0,\n },\n {\n scaleInYRadius: innerRadius + ZERO,\n fillOpacity,\n strokeOpacity,\n opacity,\n offset: 0.01,\n },\n {\n scaleInYRadius: outerRadius,\n fillOpacity,\n strokeOpacity,\n opacity,\n },\n ];\n const animation = shape.animate(keyframes, Object.assign(Object.assign({}, defaults), options));\n animation.onframe = function () {\n shape.style.path = createArcPath(Object.assign(Object.assign({}, arcObject), { outerRadius: Number(shape.style.scaleInYRadius) }));\n };\n animation.onfinish = function () {\n shape.style.path = createArcPath(Object.assign(Object.assign({}, arcObject), { outerRadius: outerRadius }));\n };\n return animation;\n };\n const RectangularScaleInY = (shape) => {\n const { style } = shape;\n const { transform: prefix = '', fillOpacity = 1, strokeOpacity = 1, opacity = 1, } = style;\n const [transformOrigin, transform] = isTranspose(coordinate)\n ? [`left top`, `scale(${ZERO}, 1)`] // left-top corner\n : [`left bottom`, `scale(1, ${ZERO})`]; // left-bottom corner\n // Using a short fadeIn transition to hide element with scale(0.001)\n // which is still visible.\n const keyframes = [\n {\n transform: `${prefix} ${transform}`.trimStart(),\n transformOrigin,\n fillOpacity: 0,\n strokeOpacity: 0,\n opacity: 0,\n },\n {\n transform: `${prefix} ${transform}`.trimStart(),\n transformOrigin,\n fillOpacity,\n strokeOpacity,\n opacity,\n offset: 0.01,\n },\n {\n transform: `${prefix} scale(1, 1)`.trimStart(),\n transformOrigin,\n fillOpacity,\n strokeOpacity,\n opacity,\n },\n ];\n const animation = shape.animate(keyframes, Object.assign(Object.assign({}, defaults), options));\n return animation;\n };\n if (isPolar(coordinate)) {\n return PolarScaleInY(shape);\n }\n else {\n return RectangularScaleInY(shape);\n }\n };\n};\n//# sourceMappingURL=scaleInY.js.map","import { isTranspose } from '../utils/coordinate';\n/**\n * Scale mark from desired shape to nothing in y direction.\n */\nexport const ScaleOutY = (options, context) => {\n // Small enough to hide or show very small part of mark,\n // but bigger enough to not cause bug.\n const ZERO = 0.0001;\n const { coordinate } = context;\n return (from, _, defaults) => {\n const [shape] = from;\n const { transform: prefix = '', fillOpacity = 1, strokeOpacity = 1, opacity = 1, } = shape.style;\n const [transformOrigin, transform] = isTranspose(coordinate)\n ? [`left top`, `scale(${ZERO}, 1)`] // left-top corner\n : [`left bottom`, `scale(1, ${ZERO})`]; // left-bottom corner\n // Using a short fadeIn transition to hide element with scale(0.001)\n // which is still visible.\n const keyframes = [\n {\n transform: `${prefix} scale(1, 1)`.trimStart(),\n transformOrigin,\n },\n {\n transform: `${prefix} ${transform}`.trimStart(),\n transformOrigin,\n fillOpacity,\n strokeOpacity,\n opacity,\n offset: 0.99,\n },\n {\n transform: `${prefix} ${transform}`.trimStart(),\n transformOrigin,\n fillOpacity: 0,\n strokeOpacity: 0,\n opacity: 0,\n },\n ];\n const animation = shape.animate(keyframes, Object.assign(Object.assign({}, defaults), options));\n return animation;\n };\n};\n//# sourceMappingURL=scaleOutY.js.map","/**\n * Transform mark from transparent to solid.\n */\nexport const FadeIn = (options) => {\n return (from, _, defaults) => {\n const [shape] = from;\n const { fillOpacity = 1, strokeOpacity = 1, opacity = 1 } = shape.style;\n const keyframes = [\n { fillOpacity: 0, strokeOpacity: 0, opacity: 0 },\n {\n fillOpacity,\n strokeOpacity,\n opacity,\n },\n ];\n return shape.animate(keyframes, Object.assign(Object.assign({}, defaults), options));\n };\n};\nFadeIn.props = {};\n//# sourceMappingURL=fadeIn.js.map","/**\n * Transform mark from solid to transparent.\n */\nexport const FadeOut = (options) => {\n return (from, _, defaults) => {\n const [shape] = from;\n const { fillOpacity = 1, strokeOpacity = 1, opacity = 1 } = shape.style;\n const keyframes = [\n {\n fillOpacity,\n strokeOpacity,\n opacity,\n },\n { fillOpacity: 0, strokeOpacity: 0, opacity: 0 },\n ];\n return shape.animate(keyframes, Object.assign(Object.assign({}, defaults), options));\n };\n};\nFadeOut.props = {};\n//# sourceMappingURL=fadeOut.js.map","// TODO: Add more attributes need to be transform.\n// TODO: Opacity transform unexpectedly.\nexport function attributeOf(shape, keys) {\n const attribute = {};\n for (const key of keys) {\n const value = shape.style[key];\n if (value) {\n attribute[key] = value;\n }\n }\n return attribute;\n}\nexport const attributeKeys = [\n 'fill',\n 'stroke',\n 'fillOpacity',\n 'strokeOpacity',\n 'opacity',\n 'lineWidth',\n];\n//# sourceMappingURL=utils.js.map","import { convertToPath, Path, } from '@antv/g';\nimport { copyAttributes } from '../utils/helper';\nimport { attributeKeys, attributeOf } from './utils';\nfunction localBBoxOf(shape) {\n const { min, max } = shape.getLocalBounds();\n const [x0, y0] = min;\n const [x1, y1] = max;\n const height = y1 - y0;\n const width = x1 - x0;\n return [x0, y0, width, height];\n}\nfunction d(bbox) {\n const [x, y, width, height] = bbox;\n return `\n M ${x} ${y}\n L ${x + width} ${y}\n L ${x + width} ${y + height}\n L ${x} ${y + height}\n Z\n `;\n}\nfunction pack(shape, count) {\n const [x0, y0, width, height] = localBBoxOf(shape);\n const aspect = height / width;\n const col = Math.ceil(Math.sqrt(count / aspect));\n const row = Math.ceil(count / col);\n const B = [];\n const h = height / row;\n let j = 0;\n let n = count;\n while (n > 0) {\n const c = Math.min(n, col);\n const w = width / c;\n for (let i = 0; i < c; i++) {\n const x = x0 + i * w;\n const y = y0 + j * h;\n B.push(d([x, y, w, h]));\n }\n n -= c;\n j += 1;\n }\n return B;\n}\nfunction normalizeSplit(split = 'pack') {\n if (typeof split == 'function')\n return split;\n return pack;\n}\n/**\n * Translate and scale.\n */\nfunction shapeToShape(from, to, timeEffect) {\n const [x0, y0, w0, h0] = localBBoxOf(from);\n const { transform: fromTransform } = from.style;\n const { transform: toTransform } = to.style;\n // Replace first to get right bbox after mounting.\n replaceChild(to, from);\n // Apply translate and scale transform.\n const [x1, y1, w1, h1] = localBBoxOf(to);\n const dx = x0 - x1;\n const dy = y0 - y1;\n const sx = w0 / w1;\n const sy = h0 / h1;\n const keyframes = [\n Object.assign({ transform: `${fromTransform ? fromTransform + ' ' : ''}translate(${dx}, ${dy}) scale(${sx}, ${sy})` }, attributeOf(from, attributeKeys)),\n Object.assign({ transform: `${toTransform ? toTransform + ' ' : ''}translate(0, 0) scale(1, 1)` }, attributeOf(to, attributeKeys)),\n ];\n const animation = to.animate(keyframes, timeEffect);\n return animation;\n}\n/**\n * Replace object and copy className and __data__\n */\nfunction replaceChild(newChild, oldChild) {\n newChild['__data__'] = oldChild['__data__'];\n newChild.className = oldChild.className;\n // @ts-ignore\n newChild.markType = oldChild.markType;\n oldChild.parentNode.replaceChild(newChild, oldChild);\n}\n/**\n * Replace element with a path shape.\n */\nfunction maybePath(node, d) {\n const { nodeName } = node;\n if (nodeName === 'path')\n return node;\n const path = new Path({\n style: Object.assign(Object.assign({}, attributeOf(node, attributeKeys)), { d }),\n });\n replaceChild(path, node);\n return path;\n}\nfunction hasUniqueString(search, pattern) {\n const first = search.indexOf(pattern);\n const last = search.lastIndexOf(pattern);\n return first === last;\n}\n// Path definition with multiple m and M command has sub path.\n// eg. 'M10,10...M20,20', 'm10,10...m20,20'\nfunction hasSubPath(path) {\n return !hasUniqueString(path, 'm') || !hasUniqueString(path, 'M');\n}\nfunction shape2path(shape) {\n const path = convertToPath(shape);\n if (!path)\n return;\n // Path definition with sub path can't do path morphing animation,\n // so skip this kind of path.\n if (hasSubPath(path))\n return;\n return path;\n}\nfunction oneToOne(shape, from, to, timeEffect) {\n // If the nodeTypes of from and to are equal,\n // or non of them can convert to path,\n // the apply shape to shape animation.\n const { nodeName: fromName } = from;\n const { nodeName: toName } = to;\n const fromPath = shape2path(from);\n const toPath = shape2path(to);\n const isSameNodes = fromName === toName && fromName !== 'path';\n const hasNonPathNode = fromPath === undefined || toPath === undefined;\n if (isSameNodes || hasNonPathNode)\n return shapeToShape(from, to, timeEffect);\n const pathShape = maybePath(shape, fromPath);\n // Convert Path will take transform, anchor, etc into account,\n // so there is no need to specify these attributes in keyframes.\n const keyframes = [\n Object.assign({ path: fromPath }, attributeOf(from, attributeKeys)),\n Object.assign({ path: toPath }, attributeOf(to, attributeKeys)),\n ];\n const animation = pathShape.animate(keyframes, timeEffect);\n animation.onfinish = () => {\n pathShape.style.transform = 'none';\n copyAttributes(pathShape, to);\n };\n // Remove transform because it already applied in path\n // converted by convertToPath.\n pathShape.style.transform = 'none';\n return animation;\n}\nfunction oneToMultiple(from, to, timeEffect, split) {\n // Hide the shape to be split before being removing.\n from.style.visibility = 'hidden';\n const D = split(from, to.length);\n return to.map((shape, i) => {\n const path = new Path({\n style: Object.assign({ path: D[i] }, attributeOf(from, attributeKeys)),\n });\n return oneToOne(shape, path, shape, timeEffect);\n });\n}\nfunction multipleToOne(from, to, timeEffect, split) {\n const D = split(to, from.length);\n const { fillOpacity = 1, strokeOpacity = 1, opacity = 1 } = to.style;\n const keyframes = [\n { fillOpacity: 0, strokeOpacity: 0, opacity: 0 },\n { fillOpacity: 0, strokeOpacity: 0, opacity: 0, offset: 0.99 },\n {\n fillOpacity,\n strokeOpacity,\n opacity,\n },\n ];\n const animation = to.animate(keyframes, timeEffect);\n const animations = from.map((shape, i) => {\n const path = new Path({\n style: {\n path: D[i],\n fill: to.style.fill,\n },\n });\n return oneToOne(shape, shape, path, timeEffect);\n });\n return [...animations, animation];\n}\n/**\n * Morphing animations.\n * @todo Support more split function.\n */\nexport const Morphing = (options) => {\n return (from, to, defaults) => {\n const split = normalizeSplit(options.split);\n const timeEffect = Object.assign(Object.assign({}, defaults), options);\n const { length: fl } = from;\n const { length: tl } = to;\n if ((fl === 1 && tl === 1) || (fl > 1 && tl > 1)) {\n const [f] = from;\n const [t] = to;\n return oneToOne(f, f, t, timeEffect);\n }\n if (fl === 1 && tl > 1) {\n const [f] = from;\n return oneToMultiple(f, to, timeEffect, split);\n }\n if (fl > 1 && tl === 1) {\n const [t] = to;\n return multipleToOne(from, t, timeEffect, split);\n }\n return null;\n };\n};\nMorphing.props = {};\n//# sourceMappingURL=morphing.js.map","import { arc } from 'd3-shape';\nimport { Path, CSS, PropertySyntax, convertToPath } from '@antv/g';\nimport { getArcObject } from '../shape/utils';\nimport { isPolar } from '../utils/coordinate';\nimport { ScaleInX } from './scaleInX';\n/**\n * Transform mark from transparent to solid.\n */\nexport const WaveIn = (options, context) => {\n const ZERO = 0.0001;\n // @see https://g-next.antv.vision/zh/docs/api/css/css-properties-values-api#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%B1%9E%E6%80%A7\n CSS.registerProperty({\n name: 'waveInArcAngle',\n inherits: false,\n initialValue: '',\n interpolable: true,\n syntax: PropertySyntax.NUMBER,\n });\n const { coordinate } = context;\n return (from, to, defaults) => {\n const [shape] = from;\n if (!isPolar(coordinate)) {\n return ScaleInX(options, context)(from, to, defaults);\n }\n const center = coordinate.getCenter();\n const { __data__, style } = shape;\n const { radius = 0, inset = 0, fillOpacity = 1, strokeOpacity = 1, opacity = 1, } = style;\n const { points, y, y1 } = __data__;\n const path = arc()\n .cornerRadius(radius)\n .padAngle((inset * Math.PI) / 180);\n const arcObject = getArcObject(coordinate, points, [y, y1]);\n const { startAngle, endAngle } = arcObject;\n const pathForConversion = new Path({});\n const createArcPath = (arcParams) => {\n pathForConversion.attr({\n d: path(arcParams),\n transform: `translate(${center[0]}, ${center[1]})`,\n });\n const convertedPathDefinition = convertToPath(pathForConversion);\n pathForConversion.style.transform = '';\n return convertedPathDefinition;\n };\n const keyframes = [\n // Use custom interpolable CSS property.\n {\n waveInArcAngle: startAngle + ZERO,\n fillOpacity: 0,\n strokeOpacity: 0,\n opacity: 0,\n },\n {\n waveInArcAngle: startAngle + ZERO,\n fillOpacity,\n strokeOpacity,\n opacity,\n offset: 0.01,\n },\n {\n waveInArcAngle: endAngle,\n fillOpacity,\n strokeOpacity,\n opacity,\n },\n ];\n const animation = shape.animate(keyframes, Object.assign(Object.assign({}, defaults), options));\n animation.onframe = function () {\n shape.style.path = createArcPath(Object.assign(Object.assign({}, arcObject), { endAngle: Number(shape.style.waveInArcAngle) }));\n };\n animation.onfinish = function () {\n shape.style.path = createArcPath(Object.assign(Object.assign({}, arcObject), { endAngle: endAngle }));\n };\n return animation;\n };\n};\nWaveIn.props = {};\n//# sourceMappingURL=waveIn.js.map","export const ZoomIn = (options) => {\n // Small enough to hide or show very small part of mark,\n // but bigger enough to not cause bug.\n const ZERO = 0.0001;\n return (from, _, defaults) => {\n const [shape] = from;\n const { transform: prefix = '', fillOpacity = 1, strokeOpacity = 1, opacity = 1, } = shape.style;\n const transformOrigin = 'center center';\n const keyframes = [\n {\n transform: `${prefix} scale(${ZERO})`.trimStart(),\n transformOrigin,\n fillOpacity: 0,\n strokeOpacity: 0,\n opacity: 0,\n },\n {\n transform: `${prefix} scale(${ZERO})`.trimStart(),\n transformOrigin,\n fillOpacity,\n strokeOpacity,\n opacity,\n offset: 0.01,\n },\n {\n transform: `${prefix} scale(1)`.trimStart(),\n transformOrigin,\n fillOpacity,\n strokeOpacity,\n opacity,\n },\n ];\n const animation = shape.animate(keyframes, Object.assign(Object.assign({}, defaults), options));\n return animation;\n };\n};\n//# sourceMappingURL=zoomIn.js.map","export const ZoomOut = (options) => {\n // Small enough to hide or show very small part of mark,\n // but bigger enough to not cause bug.\n const ZERO = 0.0001;\n return (from, _, defaults) => {\n const [shape] = from;\n const { transform: prefix = '', fillOpacity = 1, strokeOpacity = 1, opacity = 1, } = shape.style;\n const transformOrigin = 'center center';\n const keyframes = [\n { transform: `${prefix} scale(1)`.trimStart(), transformOrigin },\n {\n transform: `${prefix} scale(${ZERO})`.trimStart(),\n transformOrigin,\n fillOpacity,\n strokeOpacity,\n opacity,\n offset: 0.99,\n },\n {\n transform: `${prefix} scale(${ZERO})`.trimStart(),\n transformOrigin,\n fillOpacity: 0,\n strokeOpacity: 0,\n opacity: 0,\n },\n ];\n const animation = shape.animate(keyframes, Object.assign(Object.assign({}, defaults), options));\n return animation;\n };\n};\n//# sourceMappingURL=zoomOut.js.map","/**\n * Transform mark from transparent to solid.\n */\nexport const PathIn = (options) => {\n return (from, _, defaults) => {\n var _a, _b;\n const [shape] = from;\n const length = ((_b = (_a = shape).getTotalLength) === null || _b === void 0 ? void 0 : _b.call(_a)) || 0;\n const keyframes = [\n { lineDash: [0, length] },\n { lineDash: [length, 0] },\n ];\n return shape.animate(keyframes, Object.assign(Object.assign({}, defaults), options));\n };\n};\nPathIn.props = {};\n//# sourceMappingURL=pathIn.js.map","import { Path } from '@antv/g';\nimport { ScaleInX } from './scaleInX';\n/**\n * Scale mark from nothing to desired shape in x direction.\n */\nexport const GrowInX = (options, context) => {\n return (from, to, defaults) => {\n const [shape] = from;\n const { height, width } = shape.getBoundingClientRect();\n const clipPath = new Path({\n style: {\n path: `M0,0L${width},0L${width},${height}L0,${height}Z`,\n },\n });\n shape.appendChild(clipPath);\n shape.style.clipPath = clipPath;\n const animation = ScaleInX(options, context)([clipPath], to, defaults);\n return animation;\n };\n};\nGrowInX.props = {};\n//# sourceMappingURL=growInX.js.map","import { Path } from '@antv/g';\nimport { ScaleInY } from './scaleInY';\n/**\n * Scale mark from nothing to desired shape in x direction.\n */\nexport const GrowInY = (options, context) => {\n return (from, to, defaults) => {\n const [shape] = from;\n const { height, width } = shape.getBoundingClientRect();\n const clipPath = new Path({\n style: {\n path: `M0,0L${width},0L${width},${height}L0,${height}Z`,\n },\n });\n shape.appendChild(clipPath);\n shape.style.clipPath = clipPath;\n const animation = ScaleInY(options, context)([clipPath], to, defaults);\n return animation;\n };\n};\nGrowInY.props = {};\n//# sourceMappingURL=growInY.js.map","export const MAIN_LAYER_CLASS_NAME = 'main-layer';\nexport const LABEL_LAYER_CLASS_NAME = 'label-layer';\nexport const ELEMENT_CLASS_NAME = 'element';\nexport const VIEW_CLASS_NAME = 'view';\nexport const PLOT_CLASS_NAME = 'plot';\nexport const COMPONENT_CLASS_NAME = 'component';\nexport const LABEL_CLASS_NAME = 'label';\nexport const AREA_CLASS_NAME = 'area';\nexport const MASK_CLASS_NAME = 'mask';\n//# sourceMappingURL=constant.js.map","import { __read, __extends, __spreadArray } from 'tslib';\nimport { isDisplayObject, Shape, AbstractRendererPlugin } from '@antv/g-lite';\nimport { clamp } from '@antv/util';\n\nfunction generatePath$6(context, parsedStyle) {\n var r = parsedStyle.r;\n context.arc(r, r, r, 0, Math.PI * 2, false);\n}\n\nfunction generatePath$5(context, parsedStyle) {\n var rxInPixels = parsedStyle.rx, ryInPixels = parsedStyle.ry;\n var rx = rxInPixels;\n var ry = ryInPixels;\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/ellipse\n if (context.ellipse) {\n context.ellipse(rx, ry, rx, ry, 0, 0, Math.PI * 2, false);\n }\n else {\n // 如果不支持,则使用圆来绘制,进行变形\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.save();\n context.scale(scaleX, scaleY);\n context.arc(r, r, r, 0, Math.PI * 2);\n }\n}\n\nfunction generatePath$4(context, parsedStyle) {\n var x1 = parsedStyle.x1, y1 = parsedStyle.y1, x2 = parsedStyle.x2, y2 = parsedStyle.y2, _a = parsedStyle.defX, defX = _a === void 0 ? 0 : _a, _b = parsedStyle.defY, defY = _b === void 0 ? 0 : _b, markerStart = parsedStyle.markerStart, markerEnd = parsedStyle.markerEnd, markerStartOffset = parsedStyle.markerStartOffset, markerEndOffset = parsedStyle.markerEndOffset;\n var startOffsetX = 0;\n var startOffsetY = 0;\n var endOffsetX = 0;\n var endOffsetY = 0;\n var rad = 0;\n var x;\n var y;\n if (markerStart && isDisplayObject(markerStart) && markerStartOffset) {\n x = x2 - x1;\n y = y2 - y1;\n rad = Math.atan2(y, x);\n startOffsetX = Math.cos(rad) * (markerStartOffset || 0);\n startOffsetY = Math.sin(rad) * (markerStartOffset || 0);\n }\n if (markerEnd && isDisplayObject(markerEnd) && markerEndOffset) {\n x = x1 - x2;\n y = y1 - y2;\n rad = Math.atan2(y, x);\n endOffsetX = Math.cos(rad) * (markerEndOffset || 0);\n endOffsetY = Math.sin(rad) * (markerEndOffset || 0);\n }\n context.moveTo(x1 - defX + startOffsetX, y1 - defY + startOffsetY);\n context.lineTo(x2 - defX + endOffsetX, y2 - defY + endOffsetY);\n}\n\nfunction generatePath$3(context, parsedStyle) {\n var _a = parsedStyle.defX, defX = _a === void 0 ? 0 : _a, _b = parsedStyle.defY, defY = _b === void 0 ? 0 : _b, markerStart = parsedStyle.markerStart, markerEnd = parsedStyle.markerEnd, markerStartOffset = parsedStyle.markerStartOffset, markerEndOffset = parsedStyle.markerEndOffset;\n var _c = parsedStyle.path, absolutePath = _c.absolutePath, segments = _c.segments;\n var startOffsetX = 0;\n var startOffsetY = 0;\n var endOffsetX = 0;\n var endOffsetY = 0;\n var rad = 0;\n var x;\n var y;\n if (markerStart && isDisplayObject(markerStart) && markerStartOffset) {\n var _d = __read(markerStart.parentNode.getStartTangent(), 2), p1 = _d[0], p2 = _d[1];\n x = p1[0] - p2[0];\n y = p1[1] - p2[1];\n rad = Math.atan2(y, x);\n startOffsetX = Math.cos(rad) * (markerStartOffset || 0);\n startOffsetY = Math.sin(rad) * (markerStartOffset || 0);\n }\n if (markerEnd && isDisplayObject(markerEnd) && markerEndOffset) {\n var _e = __read(markerEnd.parentNode.getEndTangent(), 2), p1 = _e[0], p2 = _e[1];\n x = p1[0] - p2[0];\n y = p1[1] - p2[1];\n rad = Math.atan2(y, x);\n endOffsetX = Math.cos(rad) * (markerEndOffset || 0);\n endOffsetY = Math.sin(rad) * (markerEndOffset || 0);\n }\n for (var i = 0; i < absolutePath.length; i++) {\n var params = absolutePath[i];\n var command = params[0];\n var nextSegment = absolutePath[i + 1];\n var useStartOffset = i === 0 && (startOffsetX !== 0 || startOffsetY !== 0);\n var useEndOffset = (i === absolutePath.length - 1 ||\n (nextSegment && (nextSegment[0] === 'M' || nextSegment[0] === 'Z'))) &&\n endOffsetX !== 0 &&\n endOffsetY !== 0;\n switch (command) {\n case 'M':\n // Use start marker offset\n if (useStartOffset) {\n context.moveTo(params[1] - defX + startOffsetX, params[2] - defY + startOffsetY);\n context.lineTo(params[1] - defX, params[2] - defY);\n }\n else {\n context.moveTo(params[1] - defX, params[2] - defY);\n }\n break;\n case 'L':\n if (useEndOffset) {\n context.lineTo(params[1] - defX + endOffsetX, params[2] - defY + endOffsetY);\n }\n else {\n context.lineTo(params[1] - defX, params[2] - defY);\n }\n break;\n case 'Q':\n context.quadraticCurveTo(params[1] - defX, params[2] - defY, params[3] - defX, params[4] - defY);\n if (useEndOffset) {\n context.lineTo(params[3] - defX + endOffsetX, params[4] - defY + endOffsetY);\n }\n break;\n case 'C':\n context.bezierCurveTo(params[1] - defX, params[2] - defY, params[3] - defX, params[4] - defY, params[5] - defX, params[6] - defY);\n if (useEndOffset) {\n context.lineTo(params[5] - defX + endOffsetX, params[6] - defY + endOffsetY);\n }\n break;\n case 'A': {\n var arcParams = segments[i].arcParams;\n var cx = arcParams.cx, cy = arcParams.cy, rx = arcParams.rx, ry = arcParams.ry, startAngle = arcParams.startAngle, endAngle = arcParams.endAngle, xRotation = arcParams.xRotation, sweepFlag = arcParams.sweepFlag;\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/ellipse\n if (context.ellipse) {\n context.ellipse(cx - defX, cy - defY, rx, ry, xRotation, startAngle, endAngle, !!(1 - sweepFlag));\n }\n else {\n // @see https://stackoverflow.com/a/47494351\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx - defX, cy - defY);\n context.rotate(xRotation);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, startAngle, endAngle, !!(1 - sweepFlag));\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-xRotation);\n context.translate(-(cx - defX), -(cy - defY));\n }\n if (useEndOffset) {\n context.lineTo(params[6] - defX + endOffsetX, params[7] - defY + endOffsetY);\n }\n break;\n }\n case 'Z':\n context.closePath();\n break;\n }\n }\n}\n\nfunction generatePath$2(context, parsedStyle) {\n var _a = parsedStyle.defX, defX = _a === void 0 ? 0 : _a, _b = parsedStyle.defY, defY = _b === void 0 ? 0 : _b, markerStart = parsedStyle.markerStart, markerEnd = parsedStyle.markerEnd, markerStartOffset = parsedStyle.markerStartOffset, markerEndOffset = parsedStyle.markerEndOffset;\n var points = parsedStyle.points.points;\n var length = points.length;\n var x1 = points[0][0] - defX;\n var y1 = points[0][1] - defY;\n var x2 = points[length - 1][0] - defX;\n var y2 = points[length - 1][1] - defY;\n var startOffsetX = 0;\n var startOffsetY = 0;\n var endOffsetX = 0;\n var endOffsetY = 0;\n var rad = 0;\n var x;\n var y;\n if (markerStart && isDisplayObject(markerStart) && markerStartOffset) {\n x = points[1][0] - points[0][0];\n y = points[1][1] - points[0][1];\n rad = Math.atan2(y, x);\n startOffsetX = Math.cos(rad) * (markerStartOffset || 0);\n startOffsetY = Math.sin(rad) * (markerStartOffset || 0);\n }\n if (markerEnd && isDisplayObject(markerEnd) && markerEndOffset) {\n x = points[length - 1][0] - points[0][0];\n y = points[length - 1][1] - points[0][1];\n rad = Math.atan2(y, x);\n endOffsetX = Math.cos(rad) * (markerEndOffset || 0);\n endOffsetY = Math.sin(rad) * (markerEndOffset || 0);\n }\n context.moveTo(x1 + (startOffsetX || endOffsetX), y1 + (startOffsetY || endOffsetY));\n for (var i = 1; i < length - 1; i++) {\n var point = points[i];\n context.lineTo(point[0] - defX, point[1] - defY);\n }\n context.lineTo(x2, y2);\n}\n\nfunction generatePath$1(context, parsedStyle) {\n var _a = parsedStyle.defX, defX = _a === void 0 ? 0 : _a, _b = parsedStyle.defY, defY = _b === void 0 ? 0 : _b, markerStart = parsedStyle.markerStart, markerEnd = parsedStyle.markerEnd, markerStartOffset = parsedStyle.markerStartOffset, markerEndOffset = parsedStyle.markerEndOffset;\n var points = parsedStyle.points.points;\n var length = points.length;\n var x1 = points[0][0] - defX;\n var y1 = points[0][1] - defY;\n var x2 = points[length - 1][0] - defX;\n var y2 = points[length - 1][1] - defY;\n var startOffsetX = 0;\n var startOffsetY = 0;\n var endOffsetX = 0;\n var endOffsetY = 0;\n var rad = 0;\n var x;\n var y;\n if (markerStart && isDisplayObject(markerStart) && markerStartOffset) {\n x = points[1][0] - points[0][0];\n y = points[1][1] - points[0][1];\n rad = Math.atan2(y, x);\n startOffsetX = Math.cos(rad) * (markerStartOffset || 0);\n startOffsetY = Math.sin(rad) * (markerStartOffset || 0);\n }\n if (markerEnd && isDisplayObject(markerEnd) && markerEndOffset) {\n x = points[length - 2][0] - points[length - 1][0];\n y = points[length - 2][1] - points[length - 1][1];\n rad = Math.atan2(y, x);\n endOffsetX = Math.cos(rad) * (markerEndOffset || 0);\n endOffsetY = Math.sin(rad) * (markerEndOffset || 0);\n }\n context.moveTo(x1 + startOffsetX, y1 + startOffsetY);\n for (var i = 1; i < length - 1; i++) {\n var point = points[i];\n context.lineTo(point[0] - defX, point[1] - defY);\n }\n context.lineTo(x2 + endOffsetX, y2 + endOffsetY);\n}\n\nfunction generatePath(context, parsedStyle) {\n var radius = parsedStyle.radius, width = parsedStyle.width, height = parsedStyle.height;\n var w = width;\n var h = height;\n var hasRadius = radius && radius.some(function (r) { return r !== 0; });\n if (!hasRadius) {\n // Canvas support negative width/height of rect\n context.rect(0, 0, w, h);\n }\n else {\n var signX = width > 0 ? 1 : -1;\n var signY = height > 0 ? 1 : -1;\n var sweepFlag = signX + signY === 0;\n var _a = __read(radius.map(function (r) {\n return clamp(r, 0, Math.min(Math.abs(w) / 2, Math.abs(h) / 2));\n }), 4), tlr = _a[0], trr = _a[1], brr = _a[2], blr = _a[3];\n context.moveTo(signX * tlr, 0);\n context.lineTo(w - signX * trr, 0);\n if (trr !== 0) {\n context.arc(w - signX * trr, signY * trr, trr, (-signY * Math.PI) / 2, signX > 0 ? 0 : Math.PI, sweepFlag);\n }\n context.lineTo(w, h - signY * brr);\n if (brr !== 0) {\n context.arc(w - signX * brr, h - signY * brr, brr, signX > 0 ? 0 : Math.PI, signY > 0 ? Math.PI / 2 : 1.5 * Math.PI, sweepFlag);\n }\n context.lineTo(signX * blr, h);\n if (blr !== 0) {\n context.arc(signX * blr, h - signY * blr, blr, signY > 0 ? Math.PI / 2 : -Math.PI / 2, signX > 0 ? Math.PI : 0, sweepFlag);\n }\n context.lineTo(0, signY * tlr);\n if (tlr !== 0) {\n context.arc(signX * tlr, signY * tlr, tlr, signX > 0 ? Math.PI : 0, signY > 0 ? Math.PI * 1.5 : Math.PI / 2, sweepFlag);\n }\n }\n}\n\nvar Plugin = /** @class */ (function (_super) {\n __extends(Plugin, _super);\n function Plugin() {\n var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n _this.name = 'canvas-path-generator';\n return _this;\n }\n Plugin.prototype.init = function () {\n var _a;\n var pathGeneratorFactory = (_a = {},\n _a[Shape.CIRCLE] = generatePath$6,\n _a[Shape.ELLIPSE] = generatePath$5,\n _a[Shape.RECT] = generatePath,\n _a[Shape.LINE] = generatePath$4,\n _a[Shape.POLYLINE] = generatePath$1,\n _a[Shape.POLYGON] = generatePath$2,\n _a[Shape.PATH] = generatePath$3,\n _a[Shape.TEXT] = undefined,\n _a[Shape.GROUP] = undefined,\n _a[Shape.IMAGE] = undefined,\n _a[Shape.HTML] = undefined,\n _a[Shape.MESH] = undefined,\n _a);\n // @ts-ignore\n this.context.pathGeneratorFactory = pathGeneratorFactory;\n };\n Plugin.prototype.destroy = function () {\n // @ts-ignore\n delete this.context.pathGeneratorFactory;\n };\n return Plugin;\n}(AbstractRendererPlugin));\n\nexport { Plugin };\n//# sourceMappingURL=index.esm.js.map\n","import { __awaiter, __generator, __values, __read, __extends, __spreadArray } from 'tslib';\nimport { Point, findClosestClipPathTarget, isFillOrStrokeAffected, getOrCalculatePathTotalLength, Shape, AbstractRendererPlugin } from '@antv/g-lite';\nimport { vec3, mat4 } from 'gl-matrix';\nimport { distance, linePointToLine, cubicPointDistance, quadPointDistance } from '@antv/g-math';\nimport { arcToCubic, clamp } from '@antv/util';\n\nvar tmpVec3a = vec3.create();\nvar tmpVec3b = vec3.create();\nvar tmpVec3c = vec3.create();\nvar tmpMat4 = mat4.create();\n/**\n * pick shape(s) with Mouse/Touch event\n *\n * 1. find AABB with r-tree\n * 2. do math calculation with geometry in an accurate way\n */\nvar CanvasPickerPlugin = /** @class */ (function () {\n function CanvasPickerPlugin() {\n var _this = this;\n this.isHit = function (displayObject, position, worldTransform, isClipPath) {\n // use picker for current shape's type\n var pick = _this.context.pointInPathPickerFactory[displayObject.nodeName];\n if (pick) {\n // invert with world matrix\n var invertWorldMat = mat4.invert(tmpMat4, worldTransform);\n // transform client position to local space, do picking in local space\n var localPosition = vec3.transformMat4(tmpVec3b, vec3.set(tmpVec3c, position[0], position[1], 0), invertWorldMat);\n // account for anchor\n var halfExtents = displayObject.getGeometryBounds().halfExtents;\n var anchor = displayObject.parsedStyle.anchor;\n localPosition[0] += ((anchor && anchor[0]) || 0) * halfExtents[0] * 2;\n localPosition[1] += ((anchor && anchor[1]) || 0) * halfExtents[1] * 2;\n if (pick(displayObject, new Point(localPosition[0], localPosition[1]), isClipPath, _this.isPointInPath, _this.context, _this.runtime)) {\n return true;\n }\n }\n return false;\n };\n /**\n * use native picking method\n * @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/isPointInPath\n */\n this.isPointInPath = function (displayObject, position) {\n var context = _this.runtime.offscreenCanvasCreator.getOrCreateContext(_this.context.config.offscreenCanvas);\n var generatePath = _this.context.pathGeneratorFactory[displayObject.nodeName];\n if (generatePath) {\n context.beginPath();\n generatePath(context, displayObject.parsedStyle);\n context.closePath();\n }\n return context.isPointInPath(position.x, position.y);\n };\n }\n CanvasPickerPlugin.prototype.apply = function (context, runtime) {\n var _this = this;\n var _a;\n var renderingService = context.renderingService, renderingContext = context.renderingContext;\n this.context = context;\n this.runtime = runtime;\n var document = (_a = renderingContext.root) === null || _a === void 0 ? void 0 : _a.ownerDocument;\n renderingService.hooks.pick.tapPromise(CanvasPickerPlugin.tag, function (result) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.pick(document, result)];\n });\n }); });\n renderingService.hooks.pickSync.tap(CanvasPickerPlugin.tag, function (result) {\n return _this.pick(document, result);\n });\n };\n CanvasPickerPlugin.prototype.pick = function (document, result) {\n var e_1, _a;\n var topmost = result.topmost, _b = result.position, x = _b.x, y = _b.y;\n // position in world space\n var position = vec3.set(tmpVec3a, x, y, 0);\n // query by AABB first with spatial index(r-tree)\n var hitTestList = document.elementsFromBBox(position[0], position[1], position[0], position[1]);\n // test with clip path & origin shape\n // @see https://github.com/antvis/g/issues/1064\n var pickedDisplayObjects = [];\n try {\n for (var hitTestList_1 = __values(hitTestList), hitTestList_1_1 = hitTestList_1.next(); !hitTestList_1_1.done; hitTestList_1_1 = hitTestList_1.next()) {\n var displayObject = hitTestList_1_1.value;\n var worldTransform = displayObject.getWorldTransform();\n var isHitOriginShape = this.isHit(displayObject, position, worldTransform, false);\n if (isHitOriginShape) {\n // should look up in the ancestor node\n var clipped = findClosestClipPathTarget(displayObject);\n if (clipped) {\n var clipPath = clipped.parsedStyle.clipPath;\n var isHitClipPath = this.isHit(clipPath, position, clipPath.getWorldTransform(), true);\n if (isHitClipPath) {\n if (topmost) {\n result.picked = [displayObject];\n return result;\n }\n else {\n pickedDisplayObjects.push(displayObject);\n }\n }\n }\n else {\n if (topmost) {\n result.picked = [displayObject];\n return result;\n }\n else {\n pickedDisplayObjects.push(displayObject);\n }\n }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (hitTestList_1_1 && !hitTestList_1_1.done && (_a = hitTestList_1.return)) _a.call(hitTestList_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n result.picked = pickedDisplayObjects;\n return result;\n };\n CanvasPickerPlugin.tag = 'CanvasPicker';\n return CanvasPickerPlugin;\n}());\n\nfunction isPointInPath$7(displayObject, position, isClipPath) {\n var _a = displayObject.parsedStyle, r = _a.r, fill = _a.fill, stroke = _a.stroke, lineWidth = _a.lineWidth, increasedLineWidthForHitTesting = _a.increasedLineWidthForHitTesting, pointerEvents = _a.pointerEvents;\n var halfLineWidth = ((lineWidth || 0) + (increasedLineWidthForHitTesting || 0)) / 2;\n var absDistance = distance(r, r, position.x, position.y);\n var _b = __read(isFillOrStrokeAffected(pointerEvents, fill, stroke), 2), hasFill = _b[0], hasStroke = _b[1];\n if ((hasFill && hasStroke) || isClipPath) {\n return absDistance <= r + halfLineWidth;\n }\n if (hasFill) {\n return absDistance <= r;\n }\n if (hasStroke) {\n return absDistance >= r - halfLineWidth && absDistance <= r + halfLineWidth;\n }\n return false;\n}\n\nfunction ellipseDistance(squareX, squareY, rx, ry) {\n return squareX / (rx * rx) + squareY / (ry * ry);\n}\nfunction isPointInPath$6(displayObject, position, isClipPath) {\n var _a = displayObject.parsedStyle, rx = _a.rx, ry = _a.ry, fill = _a.fill, stroke = _a.stroke, lineWidth = _a.lineWidth, increasedLineWidthForHitTesting = _a.increasedLineWidthForHitTesting, pointerEvents = _a.pointerEvents;\n var x = position.x, y = position.y;\n var _b = __read(isFillOrStrokeAffected(pointerEvents, fill, stroke), 2), hasFill = _b[0], hasStroke = _b[1];\n var halfLineWith = ((lineWidth || 0) + (increasedLineWidthForHitTesting || 0)) / 2;\n var squareX = (x - rx) * (x - rx);\n var squareY = (y - ry) * (y - ry);\n // 使用椭圆的公式: x*x/rx*rx + y*y/ry*ry = 1;\n if ((hasFill && hasStroke) || isClipPath) {\n return (ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <=\n 1);\n }\n if (hasFill) {\n return ellipseDistance(squareX, squareY, rx, ry) <= 1;\n }\n if (hasStroke) {\n return (ellipseDistance(squareX, squareY, rx - halfLineWith, ry - halfLineWith) >=\n 1 &&\n ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <=\n 1);\n }\n return false;\n}\n\nfunction inBox(minX, minY, width, height, x, y) {\n return x >= minX && x <= minX + width && y >= minY && y <= minY + height;\n}\nfunction inRect(minX, minY, width, height, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n // 将四个边看做矩形来检测,比边的检测算法要快\n return (inBox(minX - halfWidth, minY - halfWidth, width, lineWidth, x, y) || // 上边\n inBox(minX + width - halfWidth, minY - halfWidth, lineWidth, height, x, y) || // 右边\n inBox(minX + halfWidth, minY + height - halfWidth, width, lineWidth, x, y) || // 下边\n inBox(minX - halfWidth, minY + halfWidth, lineWidth, height, x, y)); // 左边\n}\nfunction inArc(cx, cy, r, startAngle, endAngle, lineWidth, x, y) {\n var angle = (Math.atan2(y - cy, x - cx) + Math.PI * 2) % (Math.PI * 2); // 转换到 0 - 2 * Math.PI 之间\n // if (angle < startAngle || angle > endAngle) {\n // return false;\n // }\n var point = {\n x: cx + r * Math.cos(angle),\n y: cy + r * Math.sin(angle),\n };\n return distance(point.x, point.y, x, y) <= lineWidth / 2;\n}\nfunction inLine(x1, y1, x2, y2, lineWidth, x, y) {\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var halfWidth = lineWidth / 2;\n // 因为目前的方案是计算点到直线的距离,而有可能会在延长线上,所以要先判断是否在包围盒内\n // 这种方案会在水平或者竖直的情况下载线的延长线上有半 lineWidth 的误差\n if (!(x >= minX - halfWidth &&\n x <= maxX + halfWidth &&\n y >= minY - halfWidth &&\n y <= maxY + halfWidth)) {\n return false;\n }\n // 因为已经计算了包围盒,所以仅需要计算到直线的距离即可,可以显著提升性能\n return linePointToLine(x1, y1, x2, y2, x, y) <= lineWidth / 2;\n}\nfunction inPolyline(points, lineWidth, x, y, isClose) {\n var count = points.length;\n if (count < 2) {\n return false;\n }\n for (var i = 0; i < count - 1; i++) {\n var x1 = points[i][0];\n var y1 = points[i][1];\n var x2 = points[i + 1][0];\n var y2 = points[i + 1][1];\n if (inLine(x1, y1, x2, y2, lineWidth, x, y)) {\n return true;\n }\n }\n // 如果封闭,则计算起始点和结束点的边\n if (isClose) {\n var first = points[0];\n var last = points[count - 1];\n if (inLine(first[0], first[1], last[0], last[1], lineWidth, x, y)) {\n return true;\n }\n }\n return false;\n}\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nvar tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n return x < 0 ? -1 : 1;\n}\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) &&\n Math.min(p1[0], p2[0]) <= q[0] &&\n q[0] <= Math.max(p1[0], p2[0]) &&\n Math.min(p1[1], p2[1]) <= q[1] &&\n q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n// 判断点P在多边形内-射线法\nfunction inPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 &&\n dcmp(x - ((y - p1[1]) * (p1[0] - p2[0])) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n}\nfunction inPolygons(polygons, x, y) {\n var isHit = false;\n for (var i = 0; i < polygons.length; i++) {\n var points = polygons[i];\n isHit = inPolygon(points, x, y);\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\n\nfunction isPointInPath$5(displayObject, position, isClipPath) {\n var _a = displayObject.parsedStyle, x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2, lineWidth = _a.lineWidth, increasedLineWidthForHitTesting = _a.increasedLineWidthForHitTesting, _b = _a.defX, x = _b === void 0 ? 0 : _b, _c = _a.defY, y = _c === void 0 ? 0 : _c, pointerEvents = _a.pointerEvents, fill = _a.fill, stroke = _a.stroke;\n var _d = __read(isFillOrStrokeAffected(pointerEvents, fill, stroke), 2), hasStroke = _d[1];\n if ((!hasStroke && !isClipPath) || !lineWidth) {\n return false;\n }\n return inLine(x1, y1, x2, y2, (lineWidth || 0) + (increasedLineWidthForHitTesting || 0), position.x + x, position.y + y);\n}\n\n// TODO: replace it with method in @antv/util\nfunction isPointInStroke(segments, lineWidth, px, py, length) {\n var isHit = false;\n var halfWidth = lineWidth / 2;\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint, params = segment.params, prePoint = segment.prePoint, box = segment.box;\n // 如果在前面已经生成过包围盒,直接按照包围盒计算\n if (box &&\n !inBox(box.x - halfWidth, box.y - halfWidth, box.width + lineWidth, box.height + lineWidth, px, py)) {\n continue;\n }\n switch (segment.command) {\n // L 和 Z 都是直线, M 不进行拾取\n case 'L':\n case 'Z':\n isHit = inLine(prePoint[0], prePoint[1], currentPoint[0], currentPoint[1], lineWidth, px, py);\n if (isHit) {\n return true;\n }\n break;\n case 'Q':\n var qDistance = quadPointDistance(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], px, py);\n isHit = qDistance <= lineWidth / 2;\n if (isHit) {\n return true;\n }\n break;\n case 'C':\n var cDistance = cubicPointDistance(prePoint[0], // 上一段结束位置, 即 C 的起始点\n prePoint[1], params[1], // 'C' 的参数,1、2 为第一个控制点,3、4 为第二个控制点,5、6 为结束点\n params[2], params[3], params[4], params[5], params[6], px, py, length);\n isHit = cDistance <= lineWidth / 2;\n if (isHit) {\n return true;\n }\n break;\n case 'A':\n // cache conversion result\n if (!segment.cubicParams) {\n segment.cubicParams = arcToCubic(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], params[5], params[6], params[7], undefined);\n }\n var args = segment.cubicParams;\n // fixArc\n var prePointInCubic = prePoint;\n for (var i_1 = 0; i_1 < args.length; i_1 += 6) {\n var cDistance_1 = cubicPointDistance(prePointInCubic[0], // 上一段结束位置, 即 C 的起始点\n prePointInCubic[1], args[i_1], args[i_1 + 1], args[i_1 + 2], args[i_1 + 3], args[i_1 + 4], args[i_1 + 5], px, py, length);\n prePointInCubic = [args[i_1 + 4], args[i_1 + 5]];\n isHit = cDistance_1 <= lineWidth / 2;\n if (isHit) {\n return true;\n }\n }\n break;\n }\n }\n return isHit;\n}\nfunction isPointInPath$4(displayObject, position, isClipPath, isPointInPath, renderingPluginContext, runtime) {\n var _a = displayObject.parsedStyle, lineWidth = _a.lineWidth, increasedLineWidthForHitTesting = _a.increasedLineWidthForHitTesting, stroke = _a.stroke, fill = _a.fill, _b = _a.defX, x = _b === void 0 ? 0 : _b, _c = _a.defY, y = _c === void 0 ? 0 : _c, path = _a.path, pointerEvents = _a.pointerEvents;\n var segments = path.segments, hasArc = path.hasArc, polylines = path.polylines, polygons = path.polygons;\n var _d = __read(isFillOrStrokeAffected(pointerEvents, \n // Only a closed path can be filled.\n (polygons === null || polygons === void 0 ? void 0 : polygons.length) && fill, stroke), 2), hasFill = _d[0], hasStroke = _d[1];\n var totalLength = getOrCalculatePathTotalLength(displayObject);\n var isHit = false;\n if (hasFill || isClipPath) {\n if (hasArc) {\n // 存在曲线时,暂时使用 canvas 的 api 计算,后续可以进行多边形切割\n isHit = isPointInPath(displayObject, position);\n }\n else {\n // 提取出来的多边形包含闭合的和非闭合的,在这里统一按照多边形处理\n isHit =\n inPolygons(polygons, position.x + x, position.y + y) ||\n inPolygons(polylines, position.x + x, position.y + y);\n }\n return isHit;\n }\n else if (hasStroke || isClipPath) {\n isHit = isPointInStroke(segments, (lineWidth || 0) + (increasedLineWidthForHitTesting || 0), position.x + x, position.y + y, totalLength);\n }\n return isHit;\n}\n\nfunction isPointInPath$3(displayObject, position, isClipPath) {\n var _a = displayObject.parsedStyle, stroke = _a.stroke, fill = _a.fill, lineWidth = _a.lineWidth, increasedLineWidthForHitTesting = _a.increasedLineWidthForHitTesting, points = _a.points, _b = _a.defX, x = _b === void 0 ? 0 : _b, _c = _a.defY, y = _c === void 0 ? 0 : _c, pointerEvents = _a.pointerEvents;\n var _d = __read(isFillOrStrokeAffected(pointerEvents, fill, stroke), 2), hasFill = _d[0], hasStroke = _d[1];\n var isHit = false;\n if (hasStroke || isClipPath) {\n isHit = inPolyline(points.points, (lineWidth || 0) + (increasedLineWidthForHitTesting || 0), position.x + x, position.y + y, true);\n }\n if (!isHit && (hasFill || isClipPath)) {\n isHit = inPolygon(points.points, position.x + x, position.y + y);\n }\n return isHit;\n}\n\nfunction isPointInPath$2(displayObject, position, isClipPath) {\n var _a = displayObject.parsedStyle, lineWidth = _a.lineWidth, increasedLineWidthForHitTesting = _a.increasedLineWidthForHitTesting, points = _a.points, _b = _a.defX, x = _b === void 0 ? 0 : _b, _c = _a.defY, y = _c === void 0 ? 0 : _c, pointerEvents = _a.pointerEvents, fill = _a.fill, stroke = _a.stroke;\n var _d = __read(isFillOrStrokeAffected(pointerEvents, fill, stroke), 2), hasStroke = _d[1];\n if ((!hasStroke && !isClipPath) || !lineWidth) {\n return false;\n }\n return inPolyline(points.points, (lineWidth || 0) + (increasedLineWidthForHitTesting || 0), position.x + x, position.y + y, false);\n}\n\nfunction isPointInPath$1(displayObject, position, isClipPath, isPointInPath, runtime) {\n var _a = displayObject.parsedStyle, radius = _a.radius, fill = _a.fill, stroke = _a.stroke, lineWidth = _a.lineWidth, increasedLineWidthForHitTesting = _a.increasedLineWidthForHitTesting, width = _a.width, height = _a.height, pointerEvents = _a.pointerEvents;\n var _b = __read(isFillOrStrokeAffected(pointerEvents, fill, stroke), 2), hasFill = _b[0], hasStroke = _b[1];\n var hasRadius = radius && radius.some(function (r) { return r !== 0; });\n var lineWidthForHitTesting = (lineWidth || 0) + (increasedLineWidthForHitTesting || 0);\n // 无圆角时的策略\n if (!hasRadius) {\n var halfWidth = lineWidthForHitTesting / 2;\n // 同时填充和带有边框\n if ((hasFill && hasStroke) || isClipPath) {\n return inBox(0 - halfWidth, 0 - halfWidth, width + halfWidth, height + halfWidth, position.x, position.y);\n }\n // 仅填充\n if (hasFill) {\n return inBox(0, 0, width, height, position.x, position.y);\n }\n if (hasStroke) {\n return inRect(0, 0, width, height, lineWidthForHitTesting, position.x, position.y);\n }\n }\n else {\n var isHit = false;\n if (hasStroke || isClipPath) {\n isHit = inRectWithRadius(0, 0, width, height, radius.map(function (r) {\n return clamp(r, 0, Math.min(Math.abs(width) / 2, Math.abs(height) / 2));\n }), lineWidthForHitTesting, position.x, position.y);\n }\n // 仅填充时带有圆角的矩形直接通过图形拾取\n // 以后可以改成纯数学的近似拾取,将圆弧切割成多边形\n if (!isHit && (hasFill || isClipPath)) {\n isHit = isPointInPath(displayObject, position);\n }\n return isHit;\n }\n return false;\n}\nfunction inRectWithRadius(minX, minY, width, height, radiusArray, lineWidth, x, y) {\n var _a = __read(radiusArray, 4), tlr = _a[0], trr = _a[1], brr = _a[2], blr = _a[3];\n return (inLine(minX + tlr, minY, minX + width - trr, minY, lineWidth, x, y) ||\n inLine(minX + width, minY + trr, minX + width, minY + height - brr, lineWidth, x, y) ||\n inLine(minX + width - brr, minY + height, minX + blr, minY + height, lineWidth, x, y) ||\n inLine(minX, minY + height - blr, minX, minY + tlr, lineWidth, x, y) ||\n inArc(minX + width - trr, minY + trr, trr, 1.5 * Math.PI, 2 * Math.PI, lineWidth, x, y) ||\n inArc(minX + width - brr, minY + height - brr, brr, 0, 0.5 * Math.PI, lineWidth, x, y) ||\n inArc(minX + blr, minY + height - blr, blr, 0.5 * Math.PI, Math.PI, lineWidth, x, y) ||\n inArc(minX + tlr, minY + tlr, tlr, Math.PI, 1.5 * Math.PI, lineWidth, x, y));\n}\n\nfunction isPointInPath(displayObject, position, isClipPath, isPointInPath, renderingPluginContext, runtime) {\n var _a = displayObject.parsedStyle, pointerEvents = _a.pointerEvents, width = _a.width, height = _a.height;\n if (pointerEvents === 'non-transparent-pixel') {\n var offscreenCanvas = renderingPluginContext.config.offscreenCanvas;\n var canvas = runtime.offscreenCanvasCreator.getOrCreateCanvas(offscreenCanvas);\n var context = runtime.offscreenCanvasCreator.getOrCreateContext(offscreenCanvas, {\n willReadFrequently: true,\n });\n canvas.width = width;\n canvas.height = height;\n renderingPluginContext.defaultStyleRendererFactory[Shape.IMAGE].render(context, displayObject.parsedStyle, displayObject, undefined, undefined, undefined);\n var imagedata = context.getImageData(position.x, position.y, 1, 1).data;\n return imagedata.every(function (component) { return component !== 0; });\n }\n return true;\n}\n\nvar Plugin = /** @class */ (function (_super) {\n __extends(Plugin, _super);\n function Plugin() {\n var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n _this.name = 'canvas-picker';\n return _this;\n }\n Plugin.prototype.init = function () {\n var _a;\n var trueFunc = function () { return true; };\n var pointInPathPickerFactory = (_a = {},\n _a[Shape.CIRCLE] = isPointInPath$7,\n _a[Shape.ELLIPSE] = isPointInPath$6,\n _a[Shape.RECT] = isPointInPath$1,\n _a[Shape.LINE] = isPointInPath$5,\n _a[Shape.POLYLINE] = isPointInPath$2,\n _a[Shape.POLYGON] = isPointInPath$3,\n _a[Shape.PATH] = isPointInPath$4,\n _a[Shape.TEXT] = trueFunc,\n _a[Shape.GROUP] = null,\n _a[Shape.IMAGE] = isPointInPath,\n _a[Shape.HTML] = null,\n _a[Shape.MESH] = null,\n _a);\n // @ts-ignore\n this.context.pointInPathPickerFactory = pointInPathPickerFactory;\n this.addRenderingPlugin(new CanvasPickerPlugin());\n };\n Plugin.prototype.destroy = function () {\n // @ts-ignore\n delete this.context.pointInPathPickerFactory;\n this.removeAllRenderingPlugins();\n };\n return Plugin;\n}(AbstractRendererPlugin));\n\nexport { Plugin };\n//# sourceMappingURL=index.esm.js.map\n","import { __spreadArray, __read, __assign, __extends } from 'tslib';\nimport { ElementEvent, AABB, CustomEvent, CanvasEvent, Node, Shape, isPattern, GradientType, AbstractRendererPlugin } from '@antv/g-lite';\nimport { isNil, isString } from '@antv/util';\nimport { mat4, vec3 } from 'gl-matrix';\n\n/**\n * support 2 modes in rendering:\n * * immediate\n * * delayed: render at the end of frame with dirty-rectangle\n */\nvar CanvasRendererPlugin = /** @class */ (function () {\n function CanvasRendererPlugin(canvasRendererPluginOptions) {\n this.canvasRendererPluginOptions = canvasRendererPluginOptions;\n this.removedRBushNodeAABBs = [];\n this.renderQueue = [];\n /**\n * This stack is only used by clipPath for now.\n */\n this.restoreStack = [];\n this.clearFullScreen = false;\n /**\n * view projection matrix\n */\n this.vpMatrix = mat4.create();\n this.dprMatrix = mat4.create();\n this.tmpMat4 = mat4.create();\n this.vec3a = vec3.create();\n this.vec3b = vec3.create();\n this.vec3c = vec3.create();\n this.vec3d = vec3.create();\n }\n CanvasRendererPlugin.prototype.apply = function (context, runtime) {\n var _this = this;\n this.context = context;\n var config = context.config, camera = context.camera, renderingService = context.renderingService, renderingContext = context.renderingContext, rBushRoot = context.rBushRoot, \n // @ts-ignore\n pathGeneratorFactory = context.pathGeneratorFactory;\n this.rBush = rBushRoot;\n this.pathGeneratorFactory = pathGeneratorFactory;\n var contextService = context.contextService;\n var canvas = renderingContext.root.ownerDocument.defaultView;\n var handleUnmounted = function (e) {\n var object = e.target;\n // remove r-bush node\n // @ts-ignore\n var rBushNode = object.rBushNode;\n if (rBushNode.aabb) {\n // save removed aabbs for dirty-rectangle rendering later\n _this.removedRBushNodeAABBs.push(rBushNode.aabb);\n }\n };\n var handleCulled = function (e) {\n var object = e.target;\n // @ts-ignore\n var rBushNode = object.rBushNode;\n if (rBushNode.aabb) {\n // save removed aabbs for dirty-rectangle rendering later\n _this.removedRBushNodeAABBs.push(rBushNode.aabb);\n }\n };\n renderingService.hooks.init.tap(CanvasRendererPlugin.tag, function () {\n canvas.addEventListener(ElementEvent.UNMOUNTED, handleUnmounted);\n canvas.addEventListener(ElementEvent.CULLED, handleCulled);\n // clear fullscreen\n var dpr = contextService.getDPR();\n var width = config.width, height = config.height;\n var context = contextService.getContext();\n _this.clearRect(context, 0, 0, width * dpr, height * dpr, config.background);\n });\n renderingService.hooks.destroy.tap(CanvasRendererPlugin.tag, function () {\n canvas.removeEventListener(ElementEvent.UNMOUNTED, handleUnmounted);\n canvas.removeEventListener(ElementEvent.CULLED, handleCulled);\n _this.renderQueue = [];\n _this.removedRBushNodeAABBs = [];\n _this.restoreStack = [];\n });\n renderingService.hooks.beginFrame.tap(CanvasRendererPlugin.tag, function () {\n var context = contextService.getContext();\n var dpr = contextService.getDPR();\n var width = config.width, height = config.height;\n var _a = _this.canvasRendererPluginOptions, dirtyObjectNumThreshold = _a.dirtyObjectNumThreshold, dirtyObjectRatioThreshold = _a.dirtyObjectRatioThreshold;\n // some heuristic conditions such as 80% object changed\n var _b = renderingService.getStats(), total = _b.total, rendered = _b.rendered;\n var ratio = rendered / total;\n _this.clearFullScreen =\n renderingService.disableDirtyRectangleRendering() ||\n (rendered > dirtyObjectNumThreshold &&\n ratio > dirtyObjectRatioThreshold);\n if (context) {\n context.resetTransform\n ? context.resetTransform()\n : context.setTransform(1, 0, 0, 1, 0, 0);\n if (_this.clearFullScreen) {\n _this.clearRect(context, 0, 0, width * dpr, height * dpr, config.background);\n }\n }\n });\n var renderByZIndex = function (object, context) {\n if (object.isVisible() && !object.isCulled()) {\n _this.renderDisplayObject(object, context, _this.context, _this.restoreStack, runtime);\n // if (object.renderable.) {\n // if we did a full screen rendering last frame\n _this.saveDirtyAABB(object);\n // }\n }\n var sorted = object.sortable.sorted || object.childNodes;\n // should account for z-index\n sorted.forEach(function (child) {\n renderByZIndex(child, context);\n });\n };\n // render at the end of frame\n renderingService.hooks.endFrame.tap(CanvasRendererPlugin.tag, function () {\n var context = contextService.getContext();\n // clear & clip dirty rectangle\n var dpr = contextService.getDPR();\n mat4.fromScaling(_this.dprMatrix, [dpr, dpr, 1]);\n mat4.multiply(_this.vpMatrix, _this.dprMatrix, camera.getOrthoMatrix());\n // if (this.clearFullScreen) {\n if (_this.clearFullScreen) {\n // console.log('canvas renderer fcp...');\n renderByZIndex(renderingContext.root, context);\n }\n else {\n // console.log('canvas renderer next...');\n // merge removed AABB\n var dirtyRenderBounds = _this.safeMergeAABB.apply(_this, __spreadArray([_this.mergeDirtyAABBs(_this.renderQueue)], __read(_this.removedRBushNodeAABBs.map(function (_a) {\n var minX = _a.minX, minY = _a.minY, maxX = _a.maxX, maxY = _a.maxY;\n var aabb = new AABB();\n aabb.setMinMax(\n // vec3.fromValues(minX, minY, 0),\n // vec3.fromValues(maxX, maxY, 0),\n [minX, minY, 0], [maxX, maxY, 0]);\n return aabb;\n })), false));\n _this.removedRBushNodeAABBs = [];\n if (AABB.isEmpty(dirtyRenderBounds)) {\n _this.renderQueue = [];\n return;\n }\n var dirtyRect = _this.convertAABB2Rect(dirtyRenderBounds);\n var x = dirtyRect.x, y = dirtyRect.y, width = dirtyRect.width, height = dirtyRect.height;\n var tl = vec3.transformMat4(_this.vec3a, [x, y, 0], _this.vpMatrix);\n var tr = vec3.transformMat4(_this.vec3b, [x + width, y, 0], _this.vpMatrix);\n var bl = vec3.transformMat4(_this.vec3c, [x, y + height, 0], _this.vpMatrix);\n var br = vec3.transformMat4(_this.vec3d, [x + width, y + height, 0], _this.vpMatrix);\n var minx = Math.min(tl[0], tr[0], br[0], bl[0]);\n var miny = Math.min(tl[1], tr[1], br[1], bl[1]);\n var maxx = Math.max(tl[0], tr[0], br[0], bl[0]);\n var maxy = Math.max(tl[1], tr[1], br[1], bl[1]);\n var ix = Math.floor(minx);\n var iy = Math.floor(miny);\n var iwidth = Math.ceil(maxx - minx);\n var iheight = Math.ceil(maxy - miny);\n context.save();\n _this.clearRect(context, ix, iy, iwidth, iheight, config.background);\n context.beginPath();\n context.rect(ix, iy, iwidth, iheight);\n context.clip();\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Transformations\n context.setTransform(_this.vpMatrix[0], _this.vpMatrix[1], _this.vpMatrix[4], _this.vpMatrix[5], _this.vpMatrix[12], _this.vpMatrix[13]);\n // draw dirty rectangle\n var enableDirtyRectangleRenderingDebug = config.renderer.getConfig().enableDirtyRectangleRenderingDebug;\n if (enableDirtyRectangleRenderingDebug) {\n canvas.dispatchEvent(new CustomEvent(CanvasEvent.DIRTY_RECTANGLE, {\n dirtyRect: {\n x: ix,\n y: iy,\n width: iwidth,\n height: iheight,\n },\n }));\n }\n // search objects intersect with dirty rectangle\n var dirtyObjects = _this.searchDirtyObjects(dirtyRenderBounds);\n // do rendering\n dirtyObjects\n // sort by z-index\n .sort(function (a, b) { return a.sortable.renderOrder - b.sortable.renderOrder; })\n .forEach(function (object) {\n // culled object should not be rendered\n if (object && object.isVisible() && !object.isCulled()) {\n _this.renderDisplayObject(object, context, _this.context, _this.restoreStack, runtime);\n }\n });\n context.restore();\n // save dirty AABBs in last frame\n _this.renderQueue.forEach(function (object) {\n _this.saveDirtyAABB(object);\n });\n // clear queue\n _this.renderQueue = [];\n }\n // pop restore stack, eg. root -> parent -> child\n _this.restoreStack.forEach(function () {\n context.restore();\n });\n // clear restore stack\n _this.restoreStack = [];\n });\n renderingService.hooks.render.tap(CanvasRendererPlugin.tag, function (object) {\n if (!_this.clearFullScreen) {\n // render at the end of frame\n _this.renderQueue.push(object);\n }\n });\n };\n CanvasRendererPlugin.prototype.clearRect = function (context, x, y, width, height, background) {\n // clearRect is faster than fillRect @see https://stackoverflow.com/a/30830253\n context.clearRect(x, y, width, height);\n if (background) {\n context.fillStyle = background;\n context.fillRect(x, y, width, height);\n }\n };\n CanvasRendererPlugin.prototype.renderDisplayObject = function (object, context, canvasContext, restoreStack, runtime) {\n var nodeName = object.nodeName;\n // console.log('canvas render:', object);\n // restore to its ancestor\n var parent = restoreStack[restoreStack.length - 1];\n if (parent &&\n !(object.compareDocumentPosition(parent) & Node.DOCUMENT_POSITION_CONTAINS)) {\n context.restore();\n restoreStack.pop();\n }\n // @ts-ignore\n var styleRenderer = this.context.styleRendererFactory[nodeName];\n var generatePath = this.pathGeneratorFactory[nodeName];\n // clip path\n var clipPath = object.parsedStyle.clipPath;\n if (clipPath) {\n this.applyWorldTransform(context, clipPath);\n // generate path in local space\n var generatePath_1 = this.pathGeneratorFactory[clipPath.nodeName];\n if (generatePath_1) {\n context.save();\n // save clip\n restoreStack.push(object);\n context.beginPath();\n generatePath_1(context, clipPath.parsedStyle);\n context.closePath();\n context.clip();\n }\n }\n // fill & stroke\n if (styleRenderer) {\n this.applyWorldTransform(context, object);\n context.save();\n // apply attributes to context\n this.applyAttributesToContext(context, object);\n }\n if (generatePath) {\n context.beginPath();\n generatePath(context, object.parsedStyle);\n if (object.nodeName !== Shape.LINE &&\n object.nodeName !== Shape.PATH &&\n object.nodeName !== Shape.POLYLINE) {\n context.closePath();\n }\n }\n // fill & stroke\n if (styleRenderer) {\n styleRenderer.render(context, object.parsedStyle, object, canvasContext, this, runtime);\n // restore applied attributes, eg. shadowBlur shadowColor...\n context.restore();\n }\n // finish rendering, clear dirty flag\n object.renderable.dirty = false;\n };\n CanvasRendererPlugin.prototype.convertAABB2Rect = function (aabb) {\n var min = aabb.getMin();\n var max = aabb.getMax();\n // expand the rectangle a bit to avoid artifacts\n // @see https://www.yuque.com/antv/ou292n/bi8nix#ExvCu\n var minX = Math.floor(min[0]);\n var minY = Math.floor(min[1]);\n var maxX = Math.ceil(max[0]);\n var maxY = Math.ceil(max[1]);\n var width = maxX - minX;\n var height = maxY - minY;\n return { x: minX, y: minY, width: width, height: height };\n };\n /**\n * TODO: merge dirty rectangles with some strategies.\n * For now, we just simply merge all the rectangles into one.\n * @see https://idom.me/articles/841.html\n */\n CanvasRendererPlugin.prototype.mergeDirtyAABBs = function (dirtyObjects) {\n // merge into a big AABB\n // TODO: skip descendant if ancestor is caculated, but compareNodePosition is really slow\n var aabb = new AABB();\n dirtyObjects.forEach(function (object) {\n var renderBounds = object.getRenderBounds();\n aabb.add(renderBounds);\n var dirtyRenderBounds = object.renderable.dirtyRenderBounds;\n if (dirtyRenderBounds) {\n aabb.add(dirtyRenderBounds);\n }\n });\n return aabb;\n };\n CanvasRendererPlugin.prototype.searchDirtyObjects = function (dirtyRectangle) {\n // search in r-tree, get all affected nodes\n var _a = __read(dirtyRectangle.getMin(), 2), minX = _a[0], minY = _a[1];\n var _b = __read(dirtyRectangle.getMax(), 2), maxX = _b[0], maxY = _b[1];\n var rBushNodes = this.rBush.search({\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n });\n return rBushNodes.map(function (_a) {\n var displayObject = _a.displayObject;\n return displayObject;\n });\n };\n CanvasRendererPlugin.prototype.saveDirtyAABB = function (object) {\n var renderable = object.renderable;\n if (!renderable.dirtyRenderBounds) {\n renderable.dirtyRenderBounds = new AABB();\n }\n var renderBounds = object.getRenderBounds();\n if (renderBounds) {\n // save last dirty aabb\n renderable.dirtyRenderBounds.update(renderBounds.center, renderBounds.halfExtents);\n }\n };\n /**\n * TODO: batch the same global attributes\n */\n CanvasRendererPlugin.prototype.applyAttributesToContext = function (context, object) {\n var _a = object.parsedStyle, stroke = _a.stroke, fill = _a.fill, opacity = _a.opacity, lineDash = _a.lineDash, lineDashOffset = _a.lineDashOffset;\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/setLineDash\n if (lineDash) {\n context.setLineDash(lineDash);\n }\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/lineDashOffset\n if (!isNil(lineDashOffset)) {\n context.lineDashOffset = lineDashOffset;\n }\n if (!isNil(opacity)) {\n context.globalAlpha *= opacity;\n }\n if (!isNil(stroke) &&\n !Array.isArray(stroke) &&\n !stroke.isNone) {\n context.strokeStyle = object.attributes.stroke;\n }\n if (!isNil(fill) && !Array.isArray(fill) && !fill.isNone) {\n context.fillStyle = object.attributes.fill;\n }\n };\n CanvasRendererPlugin.prototype.applyWorldTransform = function (context, object, matrix) {\n var tx = 0;\n var ty = 0;\n var anchor = (object.parsedStyle || {}).anchor;\n var anchorX = (anchor && anchor[0]) || 0;\n var anchorY = (anchor && anchor[1]) || 0;\n if (anchorX !== 0 || anchorY !== 0) {\n // const bounds = object.getGeometryBounds();\n var bounds = object.geometry.contentBounds;\n var width = (bounds && bounds.halfExtents[0] * 2) || 0;\n var height = (bounds && bounds.halfExtents[1] * 2) || 0;\n tx = -(anchorX * width);\n ty = -(anchorY * height);\n }\n // apply clip shape's RTS\n if (matrix) {\n mat4.copy(this.tmpMat4, object.getLocalTransform());\n this.vec3a[0] = tx;\n this.vec3a[1] = ty;\n this.vec3a[2] = 0;\n mat4.translate(this.tmpMat4, this.tmpMat4, this.vec3a);\n mat4.multiply(this.tmpMat4, matrix, this.tmpMat4);\n mat4.multiply(this.tmpMat4, this.vpMatrix, this.tmpMat4);\n }\n else {\n // apply RTS transformation in world space\n mat4.copy(this.tmpMat4, object.getWorldTransform());\n this.vec3a[0] = tx;\n this.vec3a[1] = ty;\n this.vec3a[2] = 0;\n mat4.translate(this.tmpMat4, this.tmpMat4, this.vec3a);\n mat4.multiply(this.tmpMat4, this.vpMatrix, this.tmpMat4);\n }\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Transformations\n context.setTransform(this.tmpMat4[0], this.tmpMat4[1], this.tmpMat4[4], this.tmpMat4[5], this.tmpMat4[12], this.tmpMat4[13]);\n };\n CanvasRendererPlugin.prototype.safeMergeAABB = function () {\n var aabbs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n aabbs[_i] = arguments[_i];\n }\n var merged = new AABB();\n aabbs.forEach(function (aabb) {\n merged.add(aabb);\n });\n return merged;\n };\n CanvasRendererPlugin.tag = 'CanvasRenderer';\n return CanvasRendererPlugin;\n}());\n\nvar DefaultRenderer = /** @class */ (function () {\n function DefaultRenderer(imagePool) {\n this.imagePool = imagePool;\n }\n DefaultRenderer.prototype.render = function (context, parsedStyle, object, canvasContext, plugin, runtime) {\n var fill = parsedStyle.fill, fillRule = parsedStyle.fillRule, opacity = parsedStyle.opacity, fillOpacity = parsedStyle.fillOpacity, stroke = parsedStyle.stroke, strokeOpacity = parsedStyle.strokeOpacity, lineWidth = parsedStyle.lineWidth, lineCap = parsedStyle.lineCap, lineJoin = parsedStyle.lineJoin, shadowType = parsedStyle.shadowType, shadowColor = parsedStyle.shadowColor, shadowBlur = parsedStyle.shadowBlur, filter = parsedStyle.filter, miterLimit = parsedStyle.miterLimit;\n var hasFill = !isNil(fill) && !fill.isNone;\n var hasStroke = !isNil(stroke) && !stroke.isNone && lineWidth > 0;\n var isFillTransparent = fill.alpha === 0;\n var hasFilter = !!(filter && filter.length);\n var hasShadow = !isNil(shadowColor) && shadowBlur > 0;\n var nodeName = object.nodeName;\n var isInnerShadow = shadowType === 'inner';\n var shouldDrawShadowWithStroke = hasStroke &&\n hasShadow &&\n (nodeName === Shape.PATH ||\n nodeName === Shape.LINE ||\n nodeName === Shape.POLYLINE ||\n isFillTransparent ||\n isInnerShadow);\n if (hasFill) {\n context.globalAlpha = opacity * fillOpacity;\n if (!shouldDrawShadowWithStroke) {\n setShadowAndFilter(object, context, hasShadow);\n }\n this.fill(context, object, fill, fillRule, canvasContext, plugin, runtime);\n if (!shouldDrawShadowWithStroke) {\n this.clearShadowAndFilter(context, hasFilter, hasShadow);\n }\n }\n if (hasStroke) {\n context.globalAlpha = opacity * strokeOpacity;\n context.lineWidth = lineWidth;\n if (!isNil(miterLimit)) {\n context.miterLimit = miterLimit;\n }\n if (!isNil(lineCap)) {\n context.lineCap = lineCap;\n }\n if (!isNil(lineJoin)) {\n context.lineJoin = lineJoin;\n }\n if (shouldDrawShadowWithStroke) {\n if (isInnerShadow) {\n context.globalCompositeOperation = 'source-atop';\n }\n setShadowAndFilter(object, context, true);\n if (isInnerShadow) {\n this.stroke(context, object, stroke, canvasContext, plugin, runtime);\n context.globalCompositeOperation = 'source-over';\n this.clearShadowAndFilter(context, hasFilter, true);\n }\n }\n this.stroke(context, object, stroke, canvasContext, plugin, runtime);\n }\n };\n DefaultRenderer.prototype.clearShadowAndFilter = function (context, hasFilter, hasShadow) {\n if (hasShadow) {\n context.shadowColor = 'transparent';\n context.shadowBlur = 0;\n }\n if (hasFilter) {\n // save drop-shadow filter\n var oldFilter = context.filter;\n if (!isNil(oldFilter) && oldFilter.indexOf('drop-shadow') > -1) {\n context.filter =\n oldFilter.replace(/drop-shadow\\([^)]*\\)/, '').trim() || 'none';\n }\n }\n };\n DefaultRenderer.prototype.fill = function (context, object, fill, fillRule, canvasContext, plugin, runtime) {\n var _this = this;\n if (Array.isArray(fill)) {\n fill.forEach(function (gradient) {\n context.fillStyle = _this.getColor(gradient, object, context);\n fillRule ? context.fill(fillRule) : context.fill();\n });\n }\n else {\n if (isPattern(fill)) {\n context.fillStyle = this.getPattern(fill, object, context, canvasContext, plugin, runtime);\n }\n fillRule ? context.fill(fillRule) : context.fill();\n }\n };\n DefaultRenderer.prototype.stroke = function (context, object, stroke, canvasContext, plugin, runtime) {\n var _this = this;\n if (Array.isArray(stroke)) {\n stroke.forEach(function (gradient) {\n context.strokeStyle = _this.getColor(gradient, object, context);\n context.stroke();\n });\n }\n else {\n if (isPattern(stroke)) {\n context.strokeStyle = this.getPattern(stroke, object, context, canvasContext, plugin, runtime);\n }\n context.stroke();\n }\n };\n DefaultRenderer.prototype.getPattern = function (pattern, object, context, canvasContext, plugin, runtime) {\n var $offscreenCanvas;\n var dpr;\n if (pattern.image.nodeName === 'rect') {\n var _a = pattern.image.parsedStyle, width = _a.width, height = _a.height;\n dpr = canvasContext.contextService.getDPR();\n var offscreenCanvas = canvasContext.config.offscreenCanvas;\n $offscreenCanvas = runtime.offscreenCanvasCreator.getOrCreateCanvas(offscreenCanvas);\n $offscreenCanvas.width = width * dpr;\n $offscreenCanvas.height = height * dpr;\n var offscreenCanvasContext_1 = runtime.offscreenCanvasCreator.getOrCreateContext(offscreenCanvas);\n var restoreStack_1 = [];\n // offscreenCanvasContext.scale(1 / dpr, 1 / dpr);\n pattern.image.forEach(function (object) {\n plugin.renderDisplayObject(object, offscreenCanvasContext_1, canvasContext, restoreStack_1, runtime);\n });\n restoreStack_1.forEach(function () {\n offscreenCanvasContext_1.restore();\n });\n }\n var canvasPattern = this.imagePool.getOrCreatePatternSync(pattern, context, $offscreenCanvas, dpr, function () {\n // set dirty rectangle flag\n object.renderable.dirty = true;\n canvasContext.renderingService.dirtify();\n });\n return canvasPattern;\n };\n DefaultRenderer.prototype.getColor = function (parsedColor, object, context) {\n var color;\n if (parsedColor.type === GradientType.LinearGradient ||\n parsedColor.type === GradientType.RadialGradient) {\n var bounds = object.getGeometryBounds();\n var width = (bounds && bounds.halfExtents[0] * 2) || 1;\n var height = (bounds && bounds.halfExtents[1] * 2) || 1;\n color = this.imagePool.getOrCreateGradient(__assign(__assign({ type: parsedColor.type }, parsedColor.value), { width: width, height: height }), context);\n }\n return color;\n };\n return DefaultRenderer;\n}());\n/**\n * apply before fill and stroke but only once\n */\nfunction setShadowAndFilter(object, context, hasShadow) {\n var _a = object.parsedStyle, filter = _a.filter, shadowColor = _a.shadowColor, shadowBlur = _a.shadowBlur, shadowOffsetX = _a.shadowOffsetX, shadowOffsetY = _a.shadowOffsetY;\n if (filter && filter.length) {\n // use raw filter string\n context.filter = object.style.filter;\n }\n if (hasShadow) {\n context.shadowColor = shadowColor.toString();\n context.shadowBlur = shadowBlur || 0;\n context.shadowOffsetX = shadowOffsetX || 0;\n context.shadowOffsetY = shadowOffsetY || 0;\n }\n}\n\nvar ImageRenderer = /** @class */ (function () {\n function ImageRenderer(imagePool) {\n this.imagePool = imagePool;\n }\n ImageRenderer.prototype.render = function (context, parsedStyle, object) {\n var width = parsedStyle.width, height = parsedStyle.height, img = parsedStyle.img, shadowColor = parsedStyle.shadowColor, shadowBlur = parsedStyle.shadowBlur;\n var image;\n var iw = width;\n var ih = height;\n if (isString(img)) {\n // image has been loaded in `mounted` hook\n image = this.imagePool.getImageSync(img);\n }\n else {\n iw || (iw = img.width);\n ih || (ih = img.height);\n image = img;\n }\n if (image) {\n var hasShadow = !isNil(shadowColor) && shadowBlur > 0;\n setShadowAndFilter(object, context, hasShadow);\n // node-canvas will throw the following err:\n // Error: Image given has not completed loading\n try {\n context.drawImage(image, 0, 0, iw, ih);\n }\n catch (e) { }\n }\n };\n return ImageRenderer;\n}());\n\nvar TextRenderer = /** @class */ (function () {\n function TextRenderer() {\n }\n TextRenderer.prototype.render = function (context, parsedStyle, object, canvasContext, plugin, runtime) {\n var _a = parsedStyle, lineWidth = _a.lineWidth, textAlign = _a.textAlign, textBaseline = _a.textBaseline, lineJoin = _a.lineJoin, miterLimit = _a.miterLimit, letterSpacing = _a.letterSpacing, stroke = _a.stroke, fill = _a.fill, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, opacity = _a.opacity, metrics = _a.metrics, dx = _a.dx, dy = _a.dy, shadowColor = _a.shadowColor, shadowBlur = _a.shadowBlur;\n var font = metrics.font, lines = metrics.lines, height = metrics.height, lineHeight = metrics.lineHeight, lineMetrics = metrics.lineMetrics;\n context.font = font;\n context.lineWidth = lineWidth;\n context.textAlign = textAlign === 'middle' ? 'center' : textAlign;\n var formattedTextBaseline = textBaseline;\n if (\n // formattedTextBaseline === 'bottom' ||\n !runtime.enableCSSParsing &&\n formattedTextBaseline === 'alphabetic') {\n formattedTextBaseline = 'bottom';\n }\n context.lineJoin = lineJoin;\n if (!isNil(miterLimit)) {\n context.miterLimit = miterLimit;\n }\n var linePositionY = 0;\n // handle vertical text baseline\n if (textBaseline === 'middle') {\n linePositionY = -height / 2 - lineHeight / 2;\n }\n else if (textBaseline === 'bottom' ||\n textBaseline === 'alphabetic' ||\n textBaseline === 'ideographic') {\n linePositionY = -height;\n }\n else if (textBaseline === 'top' || textBaseline === 'hanging') {\n linePositionY = -lineHeight;\n }\n // account for dx & dy\n var offsetX = dx || 0;\n linePositionY += dy || 0;\n if (lines.length === 1) {\n if (formattedTextBaseline === 'bottom') {\n formattedTextBaseline = 'middle';\n linePositionY -= 0.5 * height;\n }\n else if (formattedTextBaseline === 'top') {\n formattedTextBaseline = 'middle';\n linePositionY += 0.5 * height;\n }\n }\n context.textBaseline = formattedTextBaseline;\n var hasShadow = !isNil(shadowColor) && shadowBlur > 0;\n setShadowAndFilter(object, context, hasShadow);\n // draw lines line by line\n for (var i = 0; i < lines.length; i++) {\n var linePositionX = lineWidth / 2 + offsetX;\n linePositionY += lineHeight;\n // no need to re-position X, cause we already set text align\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/textAlign\n if (!isNil(stroke) && !stroke.isNone && lineWidth) {\n this.drawLetterSpacing(context, lines[i], lineMetrics[i], textAlign, linePositionX, linePositionY, letterSpacing, fillOpacity, strokeOpacity, opacity, true);\n }\n if (!isNil(fill)) {\n this.drawLetterSpacing(context, lines[i], lineMetrics[i], textAlign, linePositionX, linePositionY, letterSpacing, fillOpacity, strokeOpacity, opacity);\n }\n }\n };\n TextRenderer.prototype.drawLetterSpacing = function (context, text, lineMetrics, textAlign, x, y, letterSpacing, fillOpacity, strokeOpacity, opacity, isStroke) {\n if (isStroke === void 0) { isStroke = false; }\n // letterSpacing of 0 means normal, render all texts directly\n if (letterSpacing === 0) {\n if (isStroke) {\n this.strokeText(context, text, x, y, strokeOpacity);\n }\n else {\n this.fillText(context, text, x, y, fillOpacity, opacity);\n }\n return;\n }\n // draw text using left align\n var currentTextAlign = context.textAlign;\n context.textAlign = 'left';\n var currentPosition = x;\n if (textAlign === 'center' || textAlign === 'middle') {\n currentPosition = x - lineMetrics.width / 2;\n }\n else if (textAlign === 'right' || textAlign === 'end') {\n currentPosition = x - lineMetrics.width;\n }\n var stringArray = Array.from(text);\n var previousWidth = context.measureText(text).width;\n var currentWidth = 0;\n for (var i = 0; i < stringArray.length; ++i) {\n var currentChar = stringArray[i];\n if (isStroke) {\n this.strokeText(context, currentChar, currentPosition, y, strokeOpacity);\n }\n else {\n this.fillText(context, currentChar, currentPosition, y, fillOpacity, opacity);\n }\n currentWidth = context.measureText(text.substring(i + 1)).width;\n currentPosition += previousWidth - currentWidth + letterSpacing;\n previousWidth = currentWidth;\n }\n context.textAlign = currentTextAlign;\n };\n TextRenderer.prototype.fillText = function (context, text, x, y, fillOpacity, opacity) {\n var currentGlobalAlpha;\n var applyOpacity = !isNil(fillOpacity) && fillOpacity !== 1;\n if (applyOpacity) {\n currentGlobalAlpha = context.globalAlpha;\n context.globalAlpha = fillOpacity * opacity;\n }\n context.fillText(text, x, y);\n if (applyOpacity) {\n context.globalAlpha = currentGlobalAlpha;\n }\n };\n TextRenderer.prototype.strokeText = function (context, text, x, y, strokeOpacity) {\n var currentGlobalAlpha;\n var applyOpacity = !isNil(strokeOpacity) && strokeOpacity !== 1;\n if (applyOpacity) {\n currentGlobalAlpha = context.globalAlpha;\n context.globalAlpha = strokeOpacity;\n }\n context.strokeText(text, x, y);\n if (applyOpacity) {\n context.globalAlpha = currentGlobalAlpha;\n }\n };\n return TextRenderer;\n}());\n\nvar RectRenderer = /** @class */ (function (_super) {\n __extends(RectRenderer, _super);\n function RectRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return RectRenderer;\n}(DefaultRenderer));\n\nvar CircleRenderer = /** @class */ (function (_super) {\n __extends(CircleRenderer, _super);\n function CircleRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return CircleRenderer;\n}(DefaultRenderer));\n\nvar EllipseRenderer = /** @class */ (function (_super) {\n __extends(EllipseRenderer, _super);\n function EllipseRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return EllipseRenderer;\n}(DefaultRenderer));\n\nvar LineRenderer = /** @class */ (function (_super) {\n __extends(LineRenderer, _super);\n function LineRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return LineRenderer;\n}(DefaultRenderer));\n\nvar PolylineRenderer = /** @class */ (function (_super) {\n __extends(PolylineRenderer, _super);\n function PolylineRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return PolylineRenderer;\n}(DefaultRenderer));\n\nvar PolygonRenderer = /** @class */ (function (_super) {\n __extends(PolygonRenderer, _super);\n function PolygonRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return PolygonRenderer;\n}(DefaultRenderer));\n\nvar PathRenderer = /** @class */ (function (_super) {\n __extends(PathRenderer, _super);\n function PathRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return PathRenderer;\n}(DefaultRenderer));\n\nvar Plugin = /** @class */ (function (_super) {\n __extends(Plugin, _super);\n function Plugin(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this) || this;\n _this.options = options;\n _this.name = 'canvas-renderer';\n return _this;\n }\n Plugin.prototype.init = function () {\n var _a;\n var canvasRendererPluginOptions = __assign({ dirtyObjectNumThreshold: 500, dirtyObjectRatioThreshold: 0.8 }, this.options);\n // @ts-ignore\n var imagePool = this.context.imagePool;\n var defaultRenderer = new DefaultRenderer(imagePool);\n var defaultStyleRendererFactory = (_a = {},\n _a[Shape.CIRCLE] = defaultRenderer,\n _a[Shape.ELLIPSE] = defaultRenderer,\n _a[Shape.RECT] = defaultRenderer,\n _a[Shape.IMAGE] = new ImageRenderer(imagePool),\n _a[Shape.TEXT] = new TextRenderer(),\n _a[Shape.LINE] = defaultRenderer,\n _a[Shape.POLYLINE] = defaultRenderer,\n _a[Shape.POLYGON] = defaultRenderer,\n _a[Shape.PATH] = defaultRenderer,\n _a[Shape.GROUP] = undefined,\n _a[Shape.HTML] = undefined,\n _a[Shape.MESH] = undefined,\n _a);\n this.context.defaultStyleRendererFactory = defaultStyleRendererFactory;\n this.context.styleRendererFactory = defaultStyleRendererFactory;\n this.addRenderingPlugin(new CanvasRendererPlugin(canvasRendererPluginOptions));\n };\n Plugin.prototype.destroy = function () {\n this.removeAllRenderingPlugins();\n delete this.context.defaultStyleRendererFactory;\n delete this.context.styleRendererFactory;\n };\n return Plugin;\n}(AbstractRendererPlugin));\n\nexport { CircleRenderer, EllipseRenderer, ImageRenderer, LineRenderer, PathRenderer, Plugin, PolygonRenderer, PolylineRenderer, RectRenderer, TextRenderer };\n//# sourceMappingURL=index.esm.js.map\n","import { __extends, __spreadArray, __read } from 'tslib';\nimport { AbstractRendererPlugin } from '@antv/g-lite';\n\n// const MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n/**\n * listen to mouse/touch/pointer events on DOM wrapper, trigger pointer events\n */\nvar DOMInteractionPlugin = /** @class */ (function () {\n function DOMInteractionPlugin() {\n }\n DOMInteractionPlugin.prototype.apply = function (context, runtime) {\n var _this = this;\n var renderingService = context.renderingService, renderingContext = context.renderingContext, config = context.config;\n this.context = context;\n var canvas = renderingContext.root.ownerDocument.defaultView;\n // const SUPPORT_ONLY_TOUCH = canvas.supportsTouchEvents && MOBILE_REGEX.test(navigator.userAgent);\n var onPointerMove = function (ev) {\n renderingService.hooks.pointerMove.call(ev);\n };\n var onPointerUp = function (ev) {\n renderingService.hooks.pointerUp.call(ev);\n };\n var onPointerDown = function (ev) {\n renderingService.hooks.pointerDown.call(ev);\n };\n var onPointerOver = function (ev) {\n renderingService.hooks.pointerOver.call(ev);\n };\n var onPointerOut = function (ev) {\n renderingService.hooks.pointerOut.call(ev);\n };\n var onPointerCancel = function (ev) {\n renderingService.hooks.pointerCancel.call(ev);\n };\n var onPointerWheel = function (ev) {\n renderingService.hooks.pointerWheel.call(ev);\n };\n var onClick = function (ev) {\n renderingService.hooks.click.call(ev);\n };\n var addPointerEventListener = function ($el) {\n runtime.globalThis.document.addEventListener('pointermove', onPointerMove, true);\n $el.addEventListener('pointerdown', onPointerDown, true);\n $el.addEventListener('pointerleave', onPointerOut, true);\n $el.addEventListener('pointerover', onPointerOver, true);\n runtime.globalThis.addEventListener('pointerup', onPointerUp, true);\n runtime.globalThis.addEventListener('pointercancel', onPointerCancel, true);\n };\n var addTouchEventListener = function ($el) {\n $el.addEventListener('touchstart', onPointerDown, true);\n $el.addEventListener('touchend', onPointerUp, true);\n $el.addEventListener('touchmove', onPointerMove, true);\n $el.addEventListener('touchcancel', onPointerCancel, true);\n };\n var addMouseEventListener = function ($el) {\n runtime.globalThis.document.addEventListener('mousemove', onPointerMove, true);\n $el.addEventListener('mousedown', onPointerDown, true);\n $el.addEventListener('mouseout', onPointerOut, true);\n $el.addEventListener('mouseover', onPointerOver, true);\n runtime.globalThis.addEventListener('mouseup', onPointerUp, true);\n };\n var removePointerEventListener = function ($el) {\n runtime.globalThis.document.removeEventListener('pointermove', onPointerMove, true);\n $el.removeEventListener('pointerdown', onPointerDown, true);\n $el.removeEventListener('pointerleave', onPointerOut, true);\n $el.removeEventListener('pointerover', onPointerOver, true);\n runtime.globalThis.removeEventListener('pointerup', onPointerUp, true);\n };\n var removeTouchEventListener = function ($el) {\n $el.removeEventListener('touchstart', onPointerDown, true);\n $el.removeEventListener('touchend', onPointerUp, true);\n $el.removeEventListener('touchmove', onPointerMove, true);\n $el.removeEventListener('touchcancel', onPointerCancel, true);\n };\n var removeMouseEventListener = function ($el) {\n runtime.globalThis.document.removeEventListener('mousemove', onPointerMove, true);\n $el.removeEventListener('mousedown', onPointerDown, true);\n $el.removeEventListener('mouseout', onPointerOut, true);\n $el.removeEventListener('mouseover', onPointerOver, true);\n runtime.globalThis.removeEventListener('mouseup', onPointerUp, true);\n };\n renderingService.hooks.init.tap(DOMInteractionPlugin.tag, function () {\n var $el = _this.context.contextService.getDomElement();\n // @ts-ignore\n if (runtime.globalThis.navigator.msPointerEnabled) {\n // @ts-ignore\n $el.style.msContentZooming = 'none';\n // @ts-ignore\n $el.style.msTouchAction = 'none';\n }\n else if (canvas.supportsPointerEvents) {\n $el.style.touchAction = 'none';\n }\n if (canvas.supportsPointerEvents) {\n addPointerEventListener($el);\n }\n else {\n addMouseEventListener($el);\n }\n if (canvas.supportsTouchEvents) {\n addTouchEventListener($el);\n }\n if (config.useNativeClickEvent) {\n $el.addEventListener('click', onClick, true);\n }\n // use passive event listeners\n // @see https://zhuanlan.zhihu.com/p/24555031\n $el.addEventListener('wheel', onPointerWheel, {\n passive: true,\n capture: true,\n });\n });\n renderingService.hooks.destroy.tap(DOMInteractionPlugin.tag, function () {\n var $el = _this.context.contextService.getDomElement();\n // @ts-ignore\n if (runtime.globalThis.navigator.msPointerEnabled) {\n // @ts-ignore\n $el.style.msContentZooming = '';\n // @ts-ignore\n $el.style.msTouchAction = '';\n }\n else if (canvas.supportsPointerEvents) {\n $el.style.touchAction = '';\n }\n if (canvas.supportsPointerEvents) {\n removePointerEventListener($el);\n }\n else {\n removeMouseEventListener($el);\n }\n if (canvas.supportsTouchEvents) {\n removeTouchEventListener($el);\n }\n if (config.useNativeClickEvent) {\n $el.removeEventListener('click', onClick, true);\n }\n $el.removeEventListener('wheel', onPointerWheel, true);\n });\n };\n DOMInteractionPlugin.tag = 'DOMInteraction';\n return DOMInteractionPlugin;\n}());\n\nvar Plugin = /** @class */ (function (_super) {\n __extends(Plugin, _super);\n function Plugin() {\n var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n _this.name = 'dom-interaction';\n return _this;\n }\n Plugin.prototype.init = function () {\n this.addRenderingPlugin(new DOMInteractionPlugin());\n };\n Plugin.prototype.destroy = function () {\n this.removeAllRenderingPlugins();\n };\n return Plugin;\n}(AbstractRendererPlugin));\n\nexport { Plugin };\n//# sourceMappingURL=index.esm.js.map\n","import { __extends, __spreadArray, __read } from 'tslib';\nimport { CanvasEvent, ElementEvent, RenderReason, isCSSRGB, isPattern, Shape, AbstractRendererPlugin } from '@antv/g-lite';\nimport { isNil, isNumber, isString } from '@antv/util';\n\nvar CANVAS_CAMERA_ID = 'g-canvas-camera';\nvar HTMLRenderingPlugin = /** @class */ (function () {\n function HTMLRenderingPlugin() {\n this.displayObjectHTMLElementMap = new WeakMap();\n }\n HTMLRenderingPlugin.prototype.joinTransformMatrix = function (matrix) {\n return \"matrix(\".concat([\n matrix[0],\n matrix[1],\n matrix[4],\n matrix[5],\n matrix[12],\n matrix[13],\n ].join(','), \")\");\n };\n HTMLRenderingPlugin.prototype.apply = function (context, runtime) {\n var _this = this;\n var camera = context.camera, renderingContext = context.renderingContext, renderingService = context.renderingService;\n this.context = context;\n var canvas = renderingContext.root.ownerDocument.defaultView;\n var nativeHTMLMap = canvas.context.eventService.nativeHTMLMap;\n var setTransform = function (object, $el) {\n $el.style.transform = _this.joinTransformMatrix(object.getWorldTransform());\n };\n var handleMounted = function (e) {\n var object = e.target;\n if (object.nodeName === Shape.HTML) {\n if (!_this.$camera) {\n _this.$camera = _this.createCamera(camera);\n }\n // create DOM element\n var $el_1 = _this.getOrCreateEl(object);\n _this.$camera.appendChild($el_1);\n // apply documentElement's style\n if (runtime.enableCSSParsing) {\n var attributes_1 = object.ownerDocument.documentElement.attributes;\n Object.keys(attributes_1).forEach(function (name) {\n $el_1.style[name] = attributes_1[name];\n });\n }\n Object.keys(object.attributes).forEach(function (name) {\n _this.updateAttribute(name, object);\n });\n setTransform(object, $el_1);\n nativeHTMLMap.set($el_1, object);\n }\n };\n var handleUnmounted = function (e) {\n var object = e.target;\n if (object.nodeName === Shape.HTML && _this.$camera) {\n var $el = _this.getOrCreateEl(object);\n if ($el) {\n $el.remove();\n nativeHTMLMap.delete($el);\n }\n }\n };\n var handleAttributeChanged = function (e) {\n var object = e.target;\n if (object.nodeName === Shape.HTML) {\n var attrName = e.attrName;\n _this.updateAttribute(attrName, object);\n }\n };\n var handleBoundsChanged = function (e) {\n var object = e.target;\n if (object.nodeName === Shape.HTML) {\n var $el = _this.getOrCreateEl(object);\n setTransform(object, $el);\n }\n };\n var handleCanvasResize = function () {\n if (_this.$camera) {\n var _a = _this.context.config, width = _a.width, height = _a.height;\n _this.$camera.style.width = \"\".concat(width || 0, \"px\");\n _this.$camera.style.height = \"\".concat(height || 0, \"px\");\n }\n };\n renderingService.hooks.init.tap(HTMLRenderingPlugin.tag, function () {\n canvas.addEventListener(CanvasEvent.RESIZE, handleCanvasResize);\n canvas.addEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.addEventListener(ElementEvent.UNMOUNTED, handleUnmounted);\n canvas.addEventListener(ElementEvent.ATTR_MODIFIED, handleAttributeChanged);\n canvas.addEventListener(ElementEvent.BOUNDS_CHANGED, handleBoundsChanged);\n });\n renderingService.hooks.endFrame.tap(HTMLRenderingPlugin.tag, function () {\n if (_this.$camera &&\n renderingContext.renderReasons.has(RenderReason.CAMERA_CHANGED)) {\n _this.$camera.style.transform = _this.joinTransformMatrix(camera.getOrthoMatrix());\n }\n });\n renderingService.hooks.destroy.tap(HTMLRenderingPlugin.tag, function () {\n // remove camera\n if (_this.$camera) {\n _this.$camera.remove();\n }\n canvas.removeEventListener(CanvasEvent.RESIZE, handleCanvasResize);\n canvas.removeEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.removeEventListener(ElementEvent.UNMOUNTED, handleUnmounted);\n canvas.removeEventListener(ElementEvent.ATTR_MODIFIED, handleAttributeChanged);\n canvas.removeEventListener(ElementEvent.BOUNDS_CHANGED, handleBoundsChanged);\n });\n };\n HTMLRenderingPlugin.prototype.createCamera = function (camera) {\n var _a = this.context.config, doc = _a.document, width = _a.width, height = _a.height;\n var $canvas = this.context.contextService.getDomElement();\n var $container = $canvas.parentNode;\n if ($container) {\n var cameraId = CANVAS_CAMERA_ID;\n var $existedCamera = $container.querySelector('#' + cameraId);\n if (!$existedCamera) {\n var $camera = (doc || document).createElement('div');\n $existedCamera = $camera;\n $camera.id = cameraId;\n // use absolute position\n $camera.style.position = 'absolute';\n // account for DOM element's offset @see https://github.com/antvis/G/issues/1150\n $camera.style.left = \"\".concat($canvas.offsetLeft || 0, \"px\");\n $camera.style.top = \"\".concat($canvas.offsetTop || 0, \"px\");\n $camera.style.transformOrigin = 'left top';\n $camera.style.transform = this.joinTransformMatrix(camera.getOrthoMatrix());\n // HTML elements should not overflow with canvas @see https://github.com/antvis/G/issues/1163\n $camera.style.overflow = 'hidden';\n $camera.style.pointerEvents = 'none';\n $camera.style.width = \"\".concat(width || 0, \"px\");\n $camera.style.height = \"\".concat(height || 0, \"px\");\n $container.appendChild($camera);\n }\n return $existedCamera;\n }\n return null;\n };\n HTMLRenderingPlugin.prototype.getOrCreateEl = function (object) {\n var doc = this.context.config.document;\n var $existedElement = this.displayObjectHTMLElementMap.get(object);\n if (!$existedElement) {\n $existedElement = (doc || document).createElement('div');\n object.parsedStyle.$el = $existedElement;\n this.displayObjectHTMLElementMap.set(object, $existedElement);\n if (object.id) {\n $existedElement.id = object.id;\n }\n if (object.name) {\n $existedElement.setAttribute('name', object.name);\n }\n if (object.className) {\n $existedElement.className = object.className;\n }\n // use absolute position\n $existedElement.style.position = 'absolute';\n // @see https://github.com/antvis/G/issues/1150\n $existedElement.style.left = \"0px\";\n $existedElement.style.top = \"0px\";\n $existedElement.style['will-change'] = 'transform';\n $existedElement.style.transform = this.joinTransformMatrix(object.getWorldTransform());\n }\n return $existedElement;\n };\n HTMLRenderingPlugin.prototype.updateAttribute = function (name, object) {\n var $el = this.getOrCreateEl(object);\n switch (name) {\n case 'innerHTML':\n var innerHTML = object.parsedStyle.innerHTML;\n if (isString(innerHTML)) {\n $el.innerHTML = innerHTML;\n }\n else {\n $el.innerHTML = '';\n $el.appendChild(innerHTML);\n }\n break;\n case 'transformOrigin':\n var transformOrigin = object.parsedStyle.transformOrigin;\n $el.style['transform-origin'] = \"\".concat(transformOrigin[0].value, \" \").concat(transformOrigin[1].value);\n break;\n case 'width':\n if (this.context.enableCSSParsing) {\n var width = object.computedStyleMap().get('width');\n $el.style.width = width.toString();\n }\n else {\n var width = object.parsedStyle.width;\n $el.style.width = isNumber(width)\n ? \"\".concat(width, \"px\")\n : width.toString();\n }\n break;\n case 'height':\n if (this.context.enableCSSParsing) {\n var height = object.computedStyleMap().get('height');\n $el.style.height = height.toString();\n }\n else {\n var height = object.parsedStyle.height;\n $el.style.height = isNumber(height)\n ? \"\".concat(height, \"px\")\n : height.toString();\n }\n break;\n case 'zIndex':\n var zIndex = object.parsedStyle.zIndex;\n $el.style['z-index'] = \"\".concat(zIndex);\n break;\n case 'visibility':\n var visibility = object.parsedStyle.visibility;\n $el.style.visibility = visibility;\n break;\n case 'pointerEvents':\n var pointerEvents = object.parsedStyle.pointerEvents;\n $el.style.pointerEvents = pointerEvents;\n break;\n case 'opacity':\n var opacity = object.parsedStyle.opacity;\n $el.style.opacity = \"\".concat(opacity);\n break;\n case 'fill':\n var fill = object.parsedStyle.fill;\n var color = '';\n if (isCSSRGB(fill)) {\n if (fill.isNone) {\n color = 'transparent';\n }\n else {\n color = object.getAttribute('fill');\n }\n }\n else if (Array.isArray(fill)) {\n color = object.getAttribute('fill');\n }\n else if (isPattern(fill)) ;\n $el.style.background = color;\n break;\n case 'stroke':\n var stroke = object.parsedStyle.stroke;\n var borderColor = '';\n if (isCSSRGB(stroke)) {\n if (stroke.isNone) {\n borderColor = 'transparent';\n }\n else {\n borderColor = object.getAttribute('stroke');\n }\n }\n else if (Array.isArray(stroke)) {\n borderColor = object.getAttribute('stroke');\n }\n else if (isPattern(stroke)) ;\n $el.style['border-color'] = borderColor;\n $el.style['border-style'] = 'solid';\n break;\n case 'lineWidth':\n var lineWidth = object.parsedStyle.lineWidth;\n $el.style['border-width'] = \"\".concat(lineWidth || 0, \"px\");\n break;\n case 'lineDash':\n $el.style['border-style'] = 'dashed';\n break;\n case 'filter':\n var filter = object.style.filter;\n $el.style.filter = filter;\n break;\n default:\n if (name !== 'x' && name !== 'y') {\n if (!isNil(object.style[name]) && object.style[name] !== '') {\n $el.style[name] = object.style[name];\n }\n }\n }\n };\n HTMLRenderingPlugin.tag = 'HTMLRendering';\n return HTMLRenderingPlugin;\n}());\n\nvar Plugin = /** @class */ (function (_super) {\n __extends(Plugin, _super);\n function Plugin() {\n var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n _this.name = 'html-renderer';\n return _this;\n }\n Plugin.prototype.init = function () {\n this.addRenderingPlugin(new HTMLRenderingPlugin());\n };\n Plugin.prototype.destroy = function () {\n this.removeAllRenderingPlugins();\n };\n return Plugin;\n}(AbstractRendererPlugin));\n\nexport { Plugin };\n//# sourceMappingURL=index.esm.js.map\n","import { __extends, __spreadArray, __read } from 'tslib';\nimport { isBrowser, parsedTransformToMat4, parseTransform, DisplayObject, GradientType, computeLinearGradient, computeRadialGradient, UnitType, ElementEvent, Shape, AbstractRendererPlugin } from '@antv/g-lite';\nimport { isString } from '@antv/util';\nimport { mat4 } from 'gl-matrix';\n\nvar ImagePool = /** @class */ (function () {\n function ImagePool(canvasConfig) {\n this.canvasConfig = canvasConfig;\n this.imageCache = {};\n this.gradientCache = {};\n this.patternCache = {};\n }\n ImagePool.prototype.getImageSync = function (src, callback) {\n if (!this.imageCache[src]) {\n this.getOrCreateImage(src).then(function (img) {\n if (callback) {\n callback(img);\n }\n });\n }\n else {\n if (callback) {\n callback(this.imageCache[src]);\n }\n }\n return this.imageCache[src];\n };\n ImagePool.prototype.getOrCreateImage = function (src) {\n var _this = this;\n if (this.imageCache[src]) {\n return Promise.resolve(this.imageCache[src]);\n }\n // @see https://github.com/antvis/g/issues/938\n var createImage = this.canvasConfig.createImage;\n return new Promise(function (resolve, reject) {\n var image;\n if (createImage) {\n image = createImage(src);\n }\n else if (isBrowser) {\n image = new window.Image();\n }\n if (image) {\n image.onload = function () {\n _this.imageCache[src] = image;\n resolve(image);\n };\n image.onerror = function (ev) {\n reject(ev);\n };\n image.crossOrigin = 'Anonymous';\n image.src = src;\n }\n });\n };\n ImagePool.prototype.getOrCreatePatternSync = function (pattern, context, $offscreenCanvas, dpr, callback) {\n var patternKey = this.generatePatternKey(pattern);\n if (patternKey && this.patternCache[patternKey]) {\n return this.patternCache[patternKey];\n }\n var image = pattern.image, repetition = pattern.repetition, transform = pattern.transform;\n var src;\n var needScaleWithDPR = false;\n // Image URL\n if (isString(image)) {\n src = this.getImageSync(image, callback);\n }\n else if ($offscreenCanvas) {\n src = $offscreenCanvas;\n needScaleWithDPR = true;\n }\n else {\n src = image;\n }\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createPattern\n var canvasPattern = src && context.createPattern(src, repetition);\n if (canvasPattern) {\n var mat = void 0;\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasPattern/setTransform\n if (transform) {\n mat = parsedTransformToMat4(parseTransform(transform), new DisplayObject({}));\n }\n else {\n mat = mat4.identity(mat4.create());\n }\n if (needScaleWithDPR) {\n mat4.scale(mat, mat, [1 / dpr, 1 / dpr, 1]);\n }\n canvasPattern.setTransform({\n a: mat[0],\n b: mat[1],\n c: mat[4],\n d: mat[5],\n e: mat[12],\n f: mat[13],\n });\n }\n if (patternKey && canvasPattern) {\n this.patternCache[patternKey] = canvasPattern;\n }\n return canvasPattern;\n };\n ImagePool.prototype.getOrCreateGradient = function (params, context) {\n var key = this.generateGradientKey(params);\n var type = params.type, steps = params.steps, width = params.width, height = params.height, angle = params.angle, cx = params.cx, cy = params.cy, size = params.size;\n if (this.gradientCache[key]) {\n return this.gradientCache[key];\n }\n var gradient = null;\n if (type === GradientType.LinearGradient) {\n var _a = computeLinearGradient(width, height, angle), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createLinearGradient\n gradient = context.createLinearGradient(x1, y1, x2, y2);\n }\n else if (type === GradientType.RadialGradient) {\n var _b = computeRadialGradient(width, height, cx, cy, size), x = _b.x, y = _b.y, r = _b.r;\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/createRadialGradient\n gradient = context.createRadialGradient(x, y, 0, x, y, r);\n }\n if (gradient) {\n steps.forEach(function (_a) {\n var offset = _a.offset, color = _a.color;\n if (offset.unit === UnitType.kPercentage) {\n gradient === null || gradient === void 0 ? void 0 : gradient.addColorStop(offset.value / 100, color.toString());\n }\n });\n this.gradientCache[key] = gradient;\n }\n return this.gradientCache[key];\n };\n ImagePool.prototype.generateGradientKey = function (params) {\n var type = params.type, width = params.width, height = params.height, steps = params.steps, angle = params.angle, cx = params.cx, cy = params.cy, size = params.size;\n return \"gradient-\".concat(type, \"-\").concat((angle === null || angle === void 0 ? void 0 : angle.toString()) || 0, \"-\").concat((cx === null || cx === void 0 ? void 0 : cx.toString()) || 0, \"-\").concat((cy === null || cy === void 0 ? void 0 : cy.toString()) || 0, \"-\").concat((size === null || size === void 0 ? void 0 : size.toString()) || 0, \"-\").concat(width, \"-\").concat(height, \"-\").concat(steps\n .map(function (_a) {\n var offset = _a.offset, color = _a.color;\n return \"\".concat(offset).concat(color);\n })\n .join('-'));\n };\n ImagePool.prototype.generatePatternKey = function (pattern) {\n var image = pattern.image, repetition = pattern.repetition;\n // only generate cache for Image\n if (isString(image)) {\n return \"pattern-\".concat(image, \"-\").concat(repetition);\n }\n else if (image.nodeName === 'rect') {\n return \"pattern-\".concat(image.entity, \"-\").concat(repetition);\n }\n };\n return ImagePool;\n}());\n\nvar LoadImagePlugin = /** @class */ (function () {\n function LoadImagePlugin() {\n }\n LoadImagePlugin.prototype.apply = function (context) {\n var renderingService = context.renderingService, renderingContext = context.renderingContext, imagePool = context.imagePool;\n var canvas = renderingContext.root.ownerDocument.defaultView;\n var calculateWithAspectRatio = function (object, imageWidth, imageHeight) {\n var _a = object.parsedStyle, width = _a.width, height = _a.height;\n if (width && !height) {\n object.setAttribute('height', (imageHeight / imageWidth) * width);\n }\n else if (!width && height) {\n object.setAttribute('width', (imageWidth / imageHeight) * height);\n }\n };\n var handleMounted = function (e) {\n var object = e.target;\n var nodeName = object.nodeName, attributes = object.attributes;\n if (nodeName === Shape.IMAGE) {\n var img = attributes.img, keepAspectRatio_1 = attributes.keepAspectRatio;\n if (isString(img)) {\n imagePool.getImageSync(img, function (_a) {\n var width = _a.width, height = _a.height;\n if (keepAspectRatio_1) {\n calculateWithAspectRatio(object, width, height);\n }\n // set dirty rectangle flag\n object.renderable.dirty = true;\n renderingService.dirtify();\n });\n }\n }\n };\n var handleAttributeChanged = function (e) {\n var object = e.target;\n var attrName = e.attrName, newValue = e.newValue;\n if (object.nodeName === Shape.IMAGE) {\n if (attrName === 'img') {\n if (isString(newValue)) {\n imagePool.getOrCreateImage(newValue).then(function (_a) {\n var width = _a.width, height = _a.height;\n if (object.attributes.keepAspectRatio) {\n calculateWithAspectRatio(object, width, height);\n }\n // set dirty rectangle flag\n object.renderable.dirty = true;\n renderingService.dirtify();\n });\n }\n }\n }\n };\n renderingService.hooks.init.tap(LoadImagePlugin.tag, function () {\n canvas.addEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.addEventListener(ElementEvent.ATTR_MODIFIED, handleAttributeChanged);\n });\n renderingService.hooks.destroy.tap(LoadImagePlugin.tag, function () {\n canvas.removeEventListener(ElementEvent.MOUNTED, handleMounted);\n canvas.removeEventListener(ElementEvent.ATTR_MODIFIED, handleAttributeChanged);\n });\n };\n LoadImagePlugin.tag = 'LoadImage';\n return LoadImagePlugin;\n}());\n\nvar Plugin = /** @class */ (function (_super) {\n __extends(Plugin, _super);\n function Plugin() {\n var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n _this.name = 'image-loader';\n return _this;\n }\n Plugin.prototype.init = function () {\n // @ts-ignore\n this.context.imagePool = new ImagePool(this.context.config);\n this.addRenderingPlugin(new LoadImagePlugin());\n };\n Plugin.prototype.destroy = function () {\n this.removeAllRenderingPlugins();\n };\n return Plugin;\n}(AbstractRendererPlugin));\n\nexport { ImagePool, Plugin };\n//# sourceMappingURL=index.esm.js.map\n","import { __awaiter, __generator, __extends, __spreadArray, __read } from 'tslib';\nimport { setDOMSize, RenderReason, isBrowser, AbstractRendererPlugin, AbstractRenderer } from '@antv/g-lite';\nimport * as CanvasPathGenerator from '@antv/g-plugin-canvas-path-generator';\nexport { CanvasPathGenerator };\nimport * as CanvasPicker from '@antv/g-plugin-canvas-picker';\nexport { CanvasPicker };\nimport * as CanvasRenderer from '@antv/g-plugin-canvas-renderer';\nexport { CanvasRenderer };\nimport * as DomInteraction from '@antv/g-plugin-dom-interaction';\nexport { DomInteraction };\nimport * as HTMLRenderer from '@antv/g-plugin-html-renderer';\nexport { HTMLRenderer };\nimport * as ImageLoader from '@antv/g-plugin-image-loader';\nexport { ImageLoader };\nimport { isString } from '@antv/util';\n\nvar Canvas2DContextService = /** @class */ (function () {\n function Canvas2DContextService(context) {\n this.renderingContext = context.renderingContext;\n this.canvasConfig = context.config;\n }\n Canvas2DContextService.prototype.init = function () {\n var _a = this.canvasConfig, container = _a.container, canvas = _a.canvas;\n if (canvas) {\n this.$canvas = canvas;\n if (container &&\n canvas.parentElement !== container) {\n container.appendChild(canvas);\n }\n this.$container = canvas.parentElement;\n this.canvasConfig.container = this.$container;\n }\n else if (container) {\n // create container\n this.$container = isString(container)\n ? document.getElementById(container)\n : container;\n if (this.$container) {\n // create canvas\n var $canvas = document.createElement('canvas');\n this.$container.appendChild($canvas);\n if (!this.$container.style.position) {\n this.$container.style.position = 'relative';\n }\n this.$canvas = $canvas;\n }\n }\n this.context = this.$canvas.getContext('2d');\n this.resize(this.canvasConfig.width, this.canvasConfig.height);\n };\n Canvas2DContextService.prototype.getContext = function () {\n return this.context;\n };\n Canvas2DContextService.prototype.getDomElement = function () {\n return this.$canvas;\n };\n Canvas2DContextService.prototype.getDPR = function () {\n return this.dpr;\n };\n Canvas2DContextService.prototype.getBoundingClientRect = function () {\n if (this.$canvas.getBoundingClientRect) {\n return this.$canvas.getBoundingClientRect();\n }\n };\n Canvas2DContextService.prototype.destroy = function () {\n // @ts-ignore\n if (this.$container && this.$canvas && this.$canvas.parentNode) {\n // destroy context\n // @ts-ignore\n this.$container.removeChild(this.$canvas);\n }\n };\n Canvas2DContextService.prototype.resize = function (width, height) {\n var devicePixelRatio = this.canvasConfig.devicePixelRatio;\n // use user-defined dpr first\n var dpr = devicePixelRatio || (isBrowser && window.devicePixelRatio) || 1;\n dpr = dpr >= 1 ? Math.ceil(dpr) : 1;\n this.dpr = dpr;\n if (this.$canvas) {\n // set canvas width & height\n this.$canvas.width = this.dpr * width;\n this.$canvas.height = this.dpr * height;\n // set CSS style width & height\n setDOMSize(this.$canvas, width, height);\n // const dpr = this.getDPR();\n // scale all drawing operations by the dpr\n // @see https://www.html5rocks.com/en/tutorials/canvas/hidpi/\n // this.context.scale(dpr, dpr);\n }\n this.renderingContext.renderReasons.add(RenderReason.CAMERA_CHANGED);\n };\n Canvas2DContextService.prototype.applyCursorStyle = function (cursor) {\n if (this.$container && this.$container.style) {\n this.$container.style.cursor = cursor;\n }\n };\n Canvas2DContextService.prototype.toDataURL = function (options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var type, encoderOptions;\n return __generator(this, function (_a) {\n type = options.type, encoderOptions = options.encoderOptions;\n return [2 /*return*/, this.context.canvas.toDataURL(type, encoderOptions)];\n });\n });\n };\n return Canvas2DContextService;\n}());\n\nvar ContextRegisterPlugin = /** @class */ (function (_super) {\n __extends(ContextRegisterPlugin, _super);\n function ContextRegisterPlugin() {\n var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n _this.name = 'canvas-context-register';\n return _this;\n }\n ContextRegisterPlugin.prototype.init = function () {\n this.context.ContextService = Canvas2DContextService;\n };\n ContextRegisterPlugin.prototype.destroy = function () {\n delete this.context.ContextService;\n };\n return ContextRegisterPlugin;\n}(AbstractRendererPlugin));\n\nvar Renderer = /** @class */ (function (_super) {\n __extends(Renderer, _super);\n function Renderer(config) {\n var _this = _super.call(this, config) || this;\n // register Canvas2DContext\n _this.registerPlugin(new ContextRegisterPlugin());\n _this.registerPlugin(new ImageLoader.Plugin());\n _this.registerPlugin(new CanvasPathGenerator.Plugin());\n // enable rendering with Canvas2D API\n _this.registerPlugin(new CanvasRenderer.Plugin());\n _this.registerPlugin(new DomInteraction.Plugin());\n // enable picking with Canvas2D API\n _this.registerPlugin(new CanvasPicker.Plugin());\n // render HTML component\n _this.registerPlugin(new HTMLRenderer.Plugin());\n return _this;\n }\n return Renderer;\n}(AbstractRenderer));\n\nexport { Renderer };\n//# sourceMappingURL=index.esm.js.map\n","import { __awaiter, __generator, __extends, __assign } from 'tslib';\nimport { AbstractRendererPlugin } from '@antv/g-lite';\nimport { distanceSquareRoot } from '@antv/util';\n\nvar DragndropPlugin = /** @class */ (function () {\n function DragndropPlugin(dragndropPluginOptions) {\n this.dragndropPluginOptions = dragndropPluginOptions;\n }\n DragndropPlugin.prototype.apply = function (context) {\n var _this = this;\n var renderingService = context.renderingService, renderingContext = context.renderingContext;\n var document = renderingContext.root.ownerDocument;\n // TODO: should we add an option like `draggable` to Canvas\n var canvas = document.defaultView;\n var handlePointerdown = function (event) {\n var target = event.target;\n var isDocument = target === document;\n var draggableEventTarget = isDocument && _this.dragndropPluginOptions.isDocumentDraggable\n ? document\n : target.closest && target.closest('[draggable=true]');\n // `draggable` may be set on ancestor nodes:\n // @see https://github.com/antvis/G/issues/1088\n if (draggableEventTarget) {\n // delay triggering dragstart event\n var dragstartTriggered_1 = false;\n var dragstartTimeStamp_1 = event.timeStamp;\n var dragstartClientCoordinates_1 = [\n event.clientX,\n event.clientY,\n ];\n var currentDroppable_1 = null;\n var lastDragClientCoordinates_1 = [event.clientX, event.clientY];\n // @ts-ignore\n // eslint-disable-next-line no-inner-declarations\n var handlePointermove_1 = function (event) { return __awaiter(_this, void 0, void 0, function () {\n var timeElapsed, distanceMoved, point, elementsBelow, elementBelow, droppableBelow;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!dragstartTriggered_1) {\n timeElapsed = event.timeStamp - dragstartTimeStamp_1;\n distanceMoved = distanceSquareRoot([event.clientX, event.clientY], dragstartClientCoordinates_1);\n // check thresholds\n if (timeElapsed <=\n this.dragndropPluginOptions.dragstartTimeThreshold ||\n distanceMoved <=\n this.dragndropPluginOptions.dragstartDistanceThreshold) {\n return [2 /*return*/];\n }\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/Document/dragstart_event\n event.type = 'dragstart';\n draggableEventTarget.dispatchEvent(event);\n dragstartTriggered_1 = true;\n }\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/Document/drag_event\n event.type = 'drag';\n // @ts-ignore\n event.dx = event.clientX - lastDragClientCoordinates_1[0];\n // @ts-ignore\n event.dy = event.clientY - lastDragClientCoordinates_1[1];\n draggableEventTarget.dispatchEvent(event);\n lastDragClientCoordinates_1 = [event.clientX, event.clientY];\n if (!!isDocument) return [3 /*break*/, 2];\n point = this.dragndropPluginOptions.overlap === 'pointer'\n ? [event.canvasX, event.canvasY]\n : target.getBounds().center;\n return [4 /*yield*/, document.elementsFromPoint(point[0], point[1])];\n case 1:\n elementsBelow = _a.sent();\n elementBelow = elementsBelow[elementsBelow.indexOf(target) + 1];\n droppableBelow = (elementBelow === null || elementBelow === void 0 ? void 0 : elementBelow.closest('[droppable=true]')) ||\n (this.dragndropPluginOptions.isDocumentDroppable\n ? document\n : null);\n if (currentDroppable_1 !== droppableBelow) {\n if (currentDroppable_1) {\n // null when we were not over a droppable before this event\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/Document/dragleave_event\n event.type = 'dragleave';\n event.target = currentDroppable_1;\n currentDroppable_1.dispatchEvent(event);\n }\n if (droppableBelow) {\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/Document/dragleave_event\n event.type = 'dragenter';\n event.target = droppableBelow;\n droppableBelow.dispatchEvent(event);\n }\n currentDroppable_1 = droppableBelow;\n if (currentDroppable_1) {\n // null if we're not coming over a droppable now\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/Document/dragover_event\n event.type = 'dragover';\n event.target = currentDroppable_1;\n currentDroppable_1.dispatchEvent(event);\n }\n }\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n }); };\n canvas.addEventListener('pointermove', handlePointermove_1);\n var stopDragging = function (originalPointerUpEvent) {\n if (dragstartTriggered_1) {\n // prevent click event being triggerd\n // @see https://github.com/antvis/G/issues/1091\n originalPointerUpEvent.detail = {\n preventClick: true,\n };\n // clone event first\n var event_1 = originalPointerUpEvent.clone();\n // drop should fire before dragend\n // @see https://javascript.tutorialink.com/is-there-a-defined-ordering-between-dragend-and-drop-events/\n if (currentDroppable_1) {\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/Document/drop_event\n event_1.type = 'drop';\n event_1.target = currentDroppable_1;\n currentDroppable_1.dispatchEvent(event_1);\n }\n // @see https://developer.mozilla.org/zh-CN/docs/Web/API/Document/dragend_event\n event_1.type = 'dragend';\n draggableEventTarget.dispatchEvent(event_1);\n dragstartTriggered_1 = false;\n }\n canvas.removeEventListener('pointermove', handlePointermove_1);\n };\n target.addEventListener('pointerup', stopDragging, { once: true });\n target.addEventListener('pointerupoutside', stopDragging, {\n once: true,\n });\n }\n };\n renderingService.hooks.init.tap(DragndropPlugin.tag, function () {\n canvas.addEventListener('pointerdown', handlePointerdown);\n });\n renderingService.hooks.destroy.tap(DragndropPlugin.tag, function () {\n canvas.removeEventListener('pointerdown', handlePointerdown);\n });\n };\n DragndropPlugin.tag = 'Dragndrop';\n return DragndropPlugin;\n}());\n\nvar Plugin = /** @class */ (function (_super) {\n __extends(Plugin, _super);\n function Plugin(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this) || this;\n _this.options = options;\n _this.name = 'dragndrop';\n return _this;\n }\n Plugin.prototype.init = function () {\n this.addRenderingPlugin(new DragndropPlugin(__assign({ overlap: 'pointer', isDocumentDraggable: false, isDocumentDroppable: false, dragstartDistanceThreshold: 0, dragstartTimeThreshold: 0 }, this.options)));\n };\n Plugin.prototype.destroy = function () {\n this.removeAllRenderingPlugins();\n };\n Plugin.prototype.setOptions = function (options) {\n Object.assign(this.plugins[0].dragndropPluginOptions, options);\n };\n return Plugin;\n}(AbstractRendererPlugin));\n\nexport { Plugin };\n//# sourceMappingURL=index.esm.js.map\n","var WILDCARD = '*';\n/* event-emitter */\nvar EventEmitter = /** @class */ (function () {\n function EventEmitter() {\n this._events = {};\n }\n /**\n * 监听一个事件\n * @param evt\n * @param callback\n * @param once\n */\n EventEmitter.prototype.on = function (evt, callback, once) {\n if (!this._events[evt]) {\n this._events[evt] = [];\n }\n this._events[evt].push({\n callback: callback,\n once: !!once,\n });\n return this;\n };\n /**\n * 监听一个事件一次\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.once = function (evt, callback) {\n return this.on(evt, callback, true);\n };\n /**\n * 触发一个事件\n * @param evt\n * @param args\n */\n EventEmitter.prototype.emit = function (evt) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var events = this._events[evt] || [];\n var wildcardEvents = this._events[WILDCARD] || [];\n // 实际的处理 emit 方法\n var doEmit = function (es) {\n var length = es.length;\n for (var i = 0; i < length; i++) {\n if (!es[i]) {\n continue;\n }\n var _a = es[i], callback = _a.callback, once = _a.once;\n if (once) {\n es.splice(i, 1);\n if (es.length === 0) {\n delete _this._events[evt];\n }\n length--;\n i--;\n }\n callback.apply(_this, args);\n }\n };\n doEmit(events);\n doEmit(wildcardEvents);\n };\n /**\n * 取消监听一个事件,或者一个channel\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.off = function (evt, callback) {\n if (!evt) {\n // evt 为空全部清除\n this._events = {};\n }\n else {\n if (!callback) {\n // evt 存在,callback 为空,清除事件所有方法\n delete this._events[evt];\n }\n else {\n // evt 存在,callback 存在,清除匹配的\n var events = this._events[evt] || [];\n var length_1 = events.length;\n for (var i = 0; i < length_1; i++) {\n if (events[i].callback === callback) {\n events.splice(i, 1);\n length_1--;\n i--;\n }\n }\n if (events.length === 0) {\n delete this._events[evt];\n }\n }\n }\n return this;\n };\n /* 当前所有的事件 */\n EventEmitter.prototype.getEvents = function () {\n return this._events;\n };\n return EventEmitter;\n}());\nexport default EventEmitter;\n//# sourceMappingURL=index.js.map","// to prevent users from tampering with internal values.\nexport const ChartEvent = {\n BEFORE_RENDER: 'beforerender',\n AFTER_RENDER: 'afterrender',\n BEFORE_PAINT: 'beforepaint',\n AFTER_PAINT: 'afterpaint',\n BEFORE_CHANGE_DATA: 'beforechangedata',\n AFTER_CHANGE_DATA: 'afterchangedata',\n BEFORE_CLEAR: 'beforeclear',\n AFTER_CLEAR: 'afterclear',\n BEFORE_DESTROY: 'beforedestroy',\n AFTER_DESTROY: 'afterdestroy',\n BEFORE_CHANGE_SIZE: 'beforechangesize',\n AFTER_CHANGE_SIZE: 'afterchangesize',\n POINTER_TAP: 'pointertap',\n POINTER_DOWN: 'pointerdown',\n POINTER_UP: 'pointerup',\n POINTER_OVER: 'pointerover',\n POINTER_OUT: 'pointerout',\n POINTER_MOVE: 'pointermove',\n POINTER_ENTER: 'pointerenter',\n POINTER_LEAVE: 'pointerleave',\n POINTER_UPOUTSIDE: 'pointerupoutside',\n DRAG_START: 'dragstart',\n DRAG: 'drag',\n DRAG_END: 'dragend',\n DRAG_ENTER: 'dragenter',\n DRAG_LEAVE: 'dragleave',\n DRAG_OVER: 'dragover',\n DROP: 'DROP',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n};\n//# sourceMappingURL=event.js.map","/**\n * @examples\n * ✅\n * color - `discrete`, shape - `constant`\n * legendCategory.rule[27] is matched\n *\n * ❎\n * shape - `discrete`, size - `constant`\n * There are no rules to match\n *\n */\nexport const LEGEND_INFER_STRATEGIES = [\n [\n 'legendCategory',\n [\n [\n ['color', 'discrete'],\n ['opacity', 'discrete'],\n ['shape', 'discrete'],\n ['size', 'constant'],\n ],\n [\n ['color', 'discrete'],\n ['opacity', 'constant'],\n ['shape', 'discrete'],\n ['size', 'constant'],\n ],\n [\n ['color', 'discrete'],\n ['opacity', 'discrete'],\n ['shape', 'constant'],\n ['size', 'constant'],\n ],\n [\n ['color', 'discrete'],\n ['opacity', 'constant'],\n ['shape', 'constant'],\n ['size', 'constant'],\n ],\n [\n ['color', 'constant'],\n ['opacity', 'discrete'],\n ['shape', 'discrete'],\n ['size', 'constant'],\n ],\n [\n ['color', 'constant'],\n ['opacity', 'constant'],\n ['shape', 'discrete'],\n ['size', 'constant'],\n ],\n [\n ['color', 'constant'],\n ['opacity', 'discrete'],\n ['shape', 'constant'],\n ['size', 'constant'],\n ],\n [\n ['color', 'discrete'],\n ['shape', 'discrete'],\n ['size', 'constant'],\n ],\n [\n ['color', 'discrete'],\n ['opacity', 'discrete'],\n ['shape', 'discrete'],\n ],\n [\n ['color', 'discrete'],\n ['opacity', 'discrete'],\n ['size', 'constant'],\n ],\n [\n ['color', 'discrete'],\n ['opacity', 'constant'],\n ['shape', 'discrete'],\n ],\n [\n ['color', 'discrete'],\n ['opacity', 'constant'],\n ['size', 'constant'],\n ],\n [\n ['color', 'discrete'],\n ['shape', 'constant'],\n ['size', 'constant'],\n ],\n [\n ['color', 'discrete'],\n ['opacity', 'discrete'],\n ['shape', 'constant'],\n ],\n [\n ['color', 'discrete'],\n ['opacity', 'constant'],\n ['shape', 'constant'],\n ],\n [\n ['color', 'constant'],\n ['shape', 'discrete'],\n ['size', 'constant'],\n ],\n [\n ['color', 'constant'],\n ['opacity', 'discrete'],\n ['shape', 'discrete'],\n ],\n [\n ['color', 'constant'],\n ['opacity', 'discrete'],\n ['size', 'constant'],\n ],\n [\n ['color', 'constant'],\n ['opacity', 'constant'],\n ['shape', 'discrete'],\n ],\n // [\n // ['color', 'constant'],\n // ['opacity', 'constant'],\n // ['size', 'constant'],\n // ],\n // [\n // ['color', 'constant'],\n // ['shape', 'constant'],\n // ['size', 'constant'],\n // ],\n [\n ['color', 'constant'],\n ['opacity', 'discrete'],\n ['shape', 'constant'],\n ],\n [\n ['color', 'discrete'],\n ['shape', 'discrete'],\n ],\n [\n ['color', 'discrete'],\n ['size', 'constant'],\n ],\n [\n ['color', 'discrete'],\n ['opacity', 'discrete'],\n ],\n [\n ['color', 'discrete'],\n ['opacity', 'constant'],\n ],\n [\n ['color', 'discrete'],\n ['shape', 'constant'],\n ],\n [\n ['color', 'constant'],\n ['shape', 'discrete'],\n ],\n [\n ['color', 'constant'],\n ['size', 'constant'],\n ],\n [\n ['color', 'constant'],\n ['opacity', 'discrete'],\n ],\n // [\n // ['color', 'constant'],\n // ['opacity', 'constant'],\n // ],\n // [\n // ['color', 'constant'],\n // ['shape', 'constant'],\n // ],\n [['color', 'discrete']],\n // [['color', 'constant']],\n ],\n ],\n [\n 'legendContinuousSize',\n [\n [\n ['color', 'continuous'],\n ['opacity', 'continuous'],\n ['size', 'continuous'],\n ],\n [\n ['color', 'constant'],\n ['opacity', 'continuous'],\n ['size', 'continuous'],\n ],\n [\n ['color', 'continuous'],\n ['size', 'continuous'],\n ],\n [\n ['color', 'constant'],\n ['size', 'continuous'],\n ],\n [\n ['size', 'continuous'],\n ['opacity', 'continuous'],\n ],\n [['size', 'continuous']],\n ],\n ],\n [\n 'legendContinuousBlockSize',\n [\n [\n ['color', 'distribution'],\n ['opacity', 'distribution'],\n ['size', 'distribution'],\n ],\n [\n ['color', 'distribution'],\n ['size', 'distribution'],\n ],\n ],\n ],\n [\n 'legendContinuousBlock',\n [\n [\n ['color', 'distribution'],\n ['opacity', 'continuous'],\n ],\n [['color', 'distribution']],\n ],\n ],\n [\n 'legendContinuous',\n [\n [\n ['color', 'continuous'],\n ['opacity', 'continuous'],\n ],\n [['color', 'continuous']],\n [['opacity', 'continuous']],\n ],\n ],\n];\n//# sourceMappingURL=constant.js.map","import { identity } from '@antv/util';\nexport function compose(fn) {\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n return fn ? rest.reduce(function (total, current) { return function (x) { return current(total(x)); }; }, fn) : identity;\n}\n//# sourceMappingURL=compose.js.map","export function isMatrix(transformer) {\n return transformer instanceof Float32Array || transformer instanceof Array;\n}\n//# sourceMappingURL=isMatrix.js.map","var __read = (this && this.__read) || function (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};\nvar __spreadArray = (this && this.__spreadArray) || function (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// 对普通的变换函数进行扩展\n// 对于长度大于2的向量,两两为一个点的 x 和 y 坐标\n// 依次变换后合成新的向量返回\nexport function extend(transform) {\n return function (vector) {\n var v = [];\n for (var i = 0; i < vector.length - 1; i += 2) {\n var from = [vector[i], vector[i + 1]];\n var to = transform(from);\n v.push.apply(v, __spreadArray([], __read(to), false));\n }\n return v;\n };\n}\nexport function extend3D(transform) {\n return function (vector) {\n var v = [];\n for (var i = 0; i < vector.length - 1; i += 3) {\n var from = [vector[i], vector[i + 1], vector[i + 2]];\n var to = transform(from);\n v.push.apply(v, __spreadArray([], __read(to), false));\n }\n return v;\n };\n}\n//# sourceMappingURL=extend.js.map","export function adjustAngle(theta, min, max) {\n while (theta < min)\n theta += Math.PI * 2;\n while (theta > max)\n theta -= Math.PI * 2;\n return theta;\n}\n//# sourceMappingURL=adjustAngle.js.map","var __read = (this && this.__read) || function (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};\nimport { mat3 } from 'gl-matrix';\n/**\n * Apply translate transformation for current vector.\n * @param params [tx, ty]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var translate = function (params, x, y, width, height) {\n var _a = __read(params, 2), tx = _a[0], ty = _a[1];\n var matrix = mat3.create();\n return mat3.fromTranslation(matrix, [tx, ty]);\n};\n//# sourceMappingURL=translate.js.map","var __read = (this && this.__read) || function (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};\nimport { Linear } from '@antv/scale';\n/**\n * Maps normalized value to the bounding box of coordinate.\n * @param params []\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var cartesian = function (params, x, y, width, height) {\n var sx = new Linear({\n range: [x, x + width],\n });\n var sy = new Linear({\n range: [y, y + height],\n });\n return {\n transform: function (vector) {\n var _a = __read(vector, 2), v1 = _a[0], v2 = _a[1];\n return [sx.map(v1), sy.map(v2)];\n },\n untransform: function (vector) {\n var _a = __read(vector, 2), v1 = _a[0], v2 = _a[1];\n return [sx.invert(v1), sy.invert(v2)];\n },\n };\n};\n//# sourceMappingURL=cartesian.js.map","var __read = (this && this.__read) || function (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 * Add custom functional transformation for current vector.\n * @param params [callback]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var custom = function (params, x, y, width, height) {\n var _a = __read(params, 1), callback = _a[0];\n return callback(x, y, width, height);\n};\n//# sourceMappingURL=custom.js.map","var __read = (this && this.__read) || function (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 * Apply custom matrix for current vector.\n * @param params [Matrix3]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var matrix = function (params, x, y, width, height) {\n var _a = __read(params, 1), matrix = _a[0];\n return matrix;\n};\n//# sourceMappingURL=matrix.js.map","var __read = (this && this.__read) || function (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/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Linear } from '@antv/scale';\nimport { adjustAngle } from '../utils';\n/**\n * Maps normalized value to normalized polar coordinate at the center of the bounding box.\n * It is used for Nightingale Rose Diagram.\n * @param params [x0, x1, y0, y1]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var polar = function (params, x, y, width, height) {\n var _a = __read(params, 4), startAngle = _a[0], endAngle = _a[1], innerRadius = _a[2], outerRadius = _a[3];\n var radius = new Linear({\n range: [innerRadius, outerRadius],\n });\n var angle = new Linear({\n range: [startAngle, endAngle],\n });\n var aspect = height / width;\n var sx = aspect > 1 ? 1 : aspect;\n var sy = aspect > 1 ? 1 / aspect : 1;\n return {\n transform: function (vector) {\n var _a = __read(vector, 2), v1 = _a[0], v2 = _a[1];\n var theta = angle.map(v1);\n var r = radius.map(v2);\n // 根据长宽比调整,使得极坐标系内切外接矩形\n var x = r * Math.cos(theta) * sx;\n var y = r * Math.sin(theta) * sy;\n // 将坐标的原点移动到外接矩形的中心,并且将长度设置为一半\n var dx = x * 0.5 + 0.5;\n var dy = y * 0.5 + 0.5;\n return [dx, dy];\n },\n untransform: function (vector) {\n var _a = __read(vector, 2), dx = _a[0], dy = _a[1];\n var x = ((dx - 0.5) * 2) / sx;\n var y = ((dy - 0.5) * 2) / sy;\n var r = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n var t = Math.atan2(y, x);\n var theta = adjustAngle(t, startAngle, endAngle);\n var v1 = angle.invert(theta);\n var v2 = radius.invert(r);\n return [v1, v2];\n },\n };\n};\n//# sourceMappingURL=polar.js.map","var __read = (this && this.__read) || function (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 * Exchange dimensions of the vector.\n * @param params [tx, ty]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var transpose = function (params, x, y, width, height) {\n return {\n transform: function (_a) {\n var _b = __read(_a, 2), x = _b[0], y = _b[1];\n return [y, x];\n },\n untransform: function (_a) {\n var _b = __read(_a, 2), x = _b[0], y = _b[1];\n return [y, x];\n },\n };\n};\n//# sourceMappingURL=transpose.js.map","var __read = (this && this.__read) || function (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};\nimport { mat3 } from 'gl-matrix';\n/**\n * Apply scale transformation for current vector.\n * @param params [sx, sy]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var scale = function (params, x, y, width, height) {\n var _a = __read(params, 2), sx = _a[0], sy = _a[1];\n var matrix = mat3.create();\n return mat3.fromScaling(matrix, [sx, sy]);\n};\n//# sourceMappingURL=scale.js.map","var __read = (this && this.__read) || function (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};\nvar __spreadArray = (this && this.__spreadArray) || function (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};\nimport { scale } from './scale';\n/**\n * Apply reflect transformation for current vector.\n * @param args same as scale\n * @returns transformer\n */\nexport var reflect = function (params) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return scale.apply(void 0, __spreadArray([[-1, -1]], __read(args), false));\n};\n/**\n * Apply reflect transformation for current vector.\n * @param args same as scale\n * @returns transformer\n */\nexport var reflectX = function (params) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return scale.apply(void 0, __spreadArray([[-1, 1]], __read(args), false));\n};\n/**\n * Apply reflect transformation for current vector.\n * @param args same as scale\n * @returns transformer\n */\nexport var reflectY = function (params) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return scale.apply(void 0, __spreadArray([[1, -1]], __read(args), false));\n};\n//# sourceMappingURL=reflect.js.map","var __read = (this && this.__read) || function (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};\nimport { mat3 } from 'gl-matrix';\n/**\n * Apply translate transformation for current vector.\n * @param params [tx, ty]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var rotate = function (params, x, y, width, height) {\n var _a = __read(params, 1), theta = _a[0];\n var matrix = mat3.create();\n return mat3.fromRotation(matrix, theta);\n};\n//# sourceMappingURL=rotate.js.map","var __read = (this && this.__read) || function (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/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Linear } from '@antv/scale';\nimport { adjustAngle } from '../utils';\n/**\n * Maps normalized value to normalized helix coordinate at the center of the bounding box.\n * @param params [x0, x1, y0, y1]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var helix = function (params, x, y, width, height) {\n var _a = __read(params, 4), startAngle = _a[0], endAngle = _a[1], innerRadius = _a[2], outerRadius = _a[3];\n // 计算螺旋系数:r = a + b * theta\n // d = 2 * PI * b\n // 这里不管 startAngle 从多少开始,都从 0 开始计算\n // 这样才能保证坐标系在 bounding box 里面\n var count = (endAngle - 0) / (2 * Math.PI) + 1;\n var d = (outerRadius - innerRadius) / count;\n var b = d / (Math.PI * 2);\n // 当 theta 为 0 的时候的极径\n var step = new Linear({\n range: [innerRadius, innerRadius + d * 0.99], // 防止和下一个螺线重合\n });\n var angle = new Linear({\n range: [startAngle, endAngle],\n });\n var aspect = height / width;\n var sx = aspect > 1 ? 1 : aspect;\n var sy = aspect > 1 ? 1 / aspect : 1;\n return {\n transform: function (vector) {\n var _a = __read(vector, 2), v1 = _a[0], v2 = _a[1];\n var theta = angle.map(v1);\n var a = step.map(v2);\n // 根据长宽比调整,使得极坐标系内切外接矩形\n var x = Math.cos(theta) * (b * theta + a) * sx;\n var y = Math.sin(theta) * (b * theta + a) * sy;\n // 将坐标的原点移动到外接矩形的中心,并且将长度设置为一半\n var dx = x * 0.5 + 0.5;\n var dy = y * 0.5 + 0.5;\n return [dx, dy];\n },\n untransform: function (vector) {\n var _a = __read(vector, 2), dx = _a[0], dy = _a[1];\n var x = ((dx - 0.5) * 2) / sx;\n var y = ((dy - 0.5) * 2) / sy;\n var r = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n var t = Math.atan2(y, x) + Math.floor(r / d) * Math.PI * 2;\n var theta = adjustAngle(t, startAngle, endAngle);\n var a = r - b * theta;\n var v1 = angle.invert(theta);\n var v2 = step.invert(a);\n return [v1, v2];\n },\n };\n};\n//# sourceMappingURL=helix.js.map","var __read = (this && this.__read) || function (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/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Linear, Point } from '@antv/scale';\n/**\n * Apples parallel coordinate transform.\n * @param params [x0, x1, y0, y1]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var parallel = function (params, x, y, width, height) {\n var _a = __read(params, 4), x0 = _a[0], x1 = _a[1], y0 = _a[2], y1 = _a[3];\n var sy = new Linear({\n range: [y0, y1],\n });\n return {\n transform: function (vector) {\n var v = [];\n var len = vector.length;\n var sx = new Point({\n domain: new Array(len).fill(0).map(function (_, i) { return i; }),\n range: [x0, x1],\n });\n for (var i = 0; i < len; i++) {\n var e = vector[i];\n var x_1 = sx.map(i);\n var y_1 = sy.map(e);\n v.push(x_1, y_1);\n }\n return v;\n },\n untransform: function (vector) {\n var v = [];\n for (var i = 0; i < vector.length; i += 2) {\n var y_2 = vector[i + 1];\n v.push(sy.invert(y_2));\n }\n return v;\n },\n };\n};\n//# sourceMappingURL=parallel.js.map","var __read = (this && this.__read) || function (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};\nfunction cot(theta) {\n return 1 / Math.tan(theta);\n}\n/**\n * Applies shear transformation for the first dimension of vector2.\n * @param params [tx, ty]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var shearX = function (params, x, y, width, height) {\n var _a = __read(params, 1), theta = _a[0];\n var sx = cot(theta);\n return {\n transform: function (vector) {\n var _a = __read(vector, 2), x = _a[0], y = _a[1];\n var xx = x + y * sx;\n return [xx, y];\n },\n untransform: function (vector) {\n var _a = __read(vector, 2), xx = _a[0], y = _a[1];\n var x = xx - y * sx;\n return [x, y];\n },\n };\n};\n/**\n * Applies shear transformation for the second dimension of vector2.\n * @param params [tx, ty]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var shearY = function (params, x, y, width, height) {\n var _a = __read(params, 1), theta = _a[0];\n var sy = cot(theta);\n return {\n transform: function (vector) {\n var _a = __read(vector, 2), x = _a[0], y = _a[1];\n var yy = y + x * sy;\n return [x, yy];\n },\n untransform: function (vector) {\n var _a = __read(vector, 2), x = _a[0], yy = _a[1];\n var y = yy - x * sy;\n return [x, y];\n },\n };\n};\n//# sourceMappingURL=shear.js.map","var __read = (this && this.__read) || function (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/* eslint-disable @typescript-eslint/no-unused-vars */\n// https://github.com/d3/d3-plugins/blob/master/fisheye/fisheye.js\nimport { Linear } from '@antv/scale';\nfunction fisheyeTransform(x, focus, distortion, min, max) {\n var left = x < focus;\n var m = (left ? focus - min : max - focus) || max - min;\n var f = left ? -1 : 1;\n return (f * m * (distortion + 1)) / (distortion + m / ((x - focus) * f)) + focus;\n}\nfunction fisheyeUntransform(tx, focus, distortion, min, max) {\n var left = tx < focus;\n var m = (left ? focus - min : max - focus) || max - min;\n var f = left ? -1 : 1;\n return m / ((m * (distortion + 1)) / (tx - focus) - distortion * f) + focus;\n}\n/**\n * Map actual visual point to abstract focus point(0, 1)\n */\nfunction normalize(focus, length, isVisual) {\n if (!isVisual)\n return focus;\n var s = new Linear({\n range: [0, 1],\n domain: [0, length],\n });\n return s.map(focus);\n}\n/**\n * Applies cartesian fisheye transforms for the first dimension of vector2.\n * @param params [focus, distortion]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var fisheyeX = function (params, x, y, width, height) {\n var _a = __read(params, 3), focus = _a[0], distortion = _a[1], _b = _a[2], isVisual = _b === void 0 ? false : _b;\n var normalizedFocusX = normalize(focus, width, isVisual);\n return {\n transform: function (vector) {\n var _a = __read(vector, 2), vx = _a[0], vy = _a[1];\n var fx = fisheyeTransform(vx, normalizedFocusX, distortion, 0, 1);\n return [fx, vy];\n },\n untransform: function (vector) {\n var _a = __read(vector, 2), fx = _a[0], vy = _a[1];\n var vx = fisheyeUntransform(fx, normalizedFocusX, distortion, 0, 1);\n return [vx, vy];\n },\n };\n};\n/**\n * Applies cartesian fisheye transforms for the second dimension of vector2.\n * @param params [focus, distortion]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var fisheyeY = function (params, x, y, width, height) {\n var _a = __read(params, 3), focus = _a[0], distortion = _a[1], _b = _a[2], isVisual = _b === void 0 ? false : _b;\n var normalizedFocusY = normalize(focus, height, isVisual);\n return {\n transform: function (vector) {\n var _a = __read(vector, 2), vx = _a[0], vy = _a[1];\n var fy = fisheyeTransform(vy, normalizedFocusY, distortion, 0, 1);\n return [vx, fy];\n },\n untransform: function (vector) {\n var _a = __read(vector, 2), vx = _a[0], fy = _a[1];\n var vy = fisheyeUntransform(fy, normalizedFocusY, distortion, 0, 1);\n return [vx, vy];\n },\n };\n};\n/**\n * Applies cartesian fisheye transforms for both dimensions of vector2.\n * @param params [focusX, focusY, distortionX, distortionY]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var fisheye = function (params, x, y, width, height) {\n var _a = __read(params, 5), focusX = _a[0], focusY = _a[1], distortionX = _a[2], distortionY = _a[3], _b = _a[4], isVisual = _b === void 0 ? false : _b;\n var normalizedFocusX = normalize(focusX, width, isVisual);\n var normalizedFocusY = normalize(focusY, height, isVisual);\n return {\n transform: function (vector) {\n var _a = __read(vector, 2), vx = _a[0], vy = _a[1];\n var fx = fisheyeTransform(vx, normalizedFocusX, distortionX, 0, 1);\n var fy = fisheyeTransform(vy, normalizedFocusY, distortionY, 0, 1);\n return [fx, fy];\n },\n untransform: function (vector) {\n var _a = __read(vector, 2), fx = _a[0], fy = _a[1];\n var vx = fisheyeUntransform(fx, normalizedFocusX, distortionX, 0, 1);\n var vy = fisheyeUntransform(fy, normalizedFocusY, distortionY, 0, 1);\n return [vx, vy];\n },\n };\n};\n/**\n * Applies circular fisheye transforms.\n * @param params [focusX, focusY, radius, distortion, isVisual?]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var fisheyeCircular = function (params, x, y, width, height) {\n var _a = __read(params, 5), focusX = _a[0], focusY = _a[1], radius = _a[2], distortion = _a[3], _b = _a[4], isVisual = _b === void 0 ? false : _b;\n var scaleX = new Linear({\n range: [0, width],\n });\n var scaleY = new Linear({\n range: [0, height],\n });\n // focus point => visual point\n var nx = isVisual ? focusX : scaleX.map(focusX);\n var ny = isVisual ? focusY : scaleY.map(focusY);\n return {\n transform: function (vector) {\n var _a = __read(vector, 2), x = _a[0], y = _a[1];\n // focus point => visual point\n var dx = scaleX.map(x) - nx;\n var dy = scaleY.map(y) - ny;\n var dd = Math.sqrt(dx * dx + dy * dy);\n if (dd > radius)\n return [x, y];\n var r = fisheyeTransform(dd, 0, distortion, 0, radius);\n var theta = Math.atan2(dy, dx);\n var fx = nx + r * Math.cos(theta);\n var fy = ny + r * Math.sin(theta);\n // visual point => focus point\n return [scaleX.invert(fx), scaleY.invert(fy)];\n },\n untransform: function (vector) {\n var _a = __read(vector, 2), tx = _a[0], ty = _a[1];\n var dx = scaleX.map(tx) - nx;\n var dy = scaleY.map(ty) - ny;\n var dd = Math.sqrt(dx * dx + dy * dy);\n if (dd > radius)\n return [tx, ty];\n var x = fisheyeUntransform(dd, 0, distortion, 0, radius);\n var theta = Math.atan2(dy, dx);\n var fx = nx + x * Math.cos(theta);\n var fy = ny + x * Math.sin(theta);\n return [scaleX.invert(fx), scaleY.invert(fy)];\n },\n };\n};\n//# sourceMappingURL=fisheye.js.map","var __read = (this && this.__read) || function (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};\nimport { Linear } from '@antv/scale';\nexport var cartesian3D = function (params, x, y, z, width, height, depth) {\n var sx = new Linear({\n range: [x, x + width],\n });\n var sy = new Linear({\n range: [y, y + height],\n });\n var sz = new Linear({\n range: [z, z + depth],\n });\n return {\n transform: function (vector) {\n var _a = __read(vector, 3), v1 = _a[0], v2 = _a[1], v3 = _a[2];\n return [sx.map(v1), sy.map(v2), sz.map(v3)];\n },\n untransform: function (vector) {\n var _a = __read(vector, 3), v1 = _a[0], v2 = _a[1], v3 = _a[2];\n return [sx.invert(v1), sy.invert(v2), sz.invert(v3)];\n },\n };\n};\n//# sourceMappingURL=cartesian3D.js.map","var __read = (this && this.__read) || function (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};\nimport { mat4 } from 'gl-matrix';\n/**\n * Apply translate transformation for current vector.\n * @param params [tx, ty, tz]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param z z of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @param depth depth of the the bounding box of coordinate\n * @returns transformer\n */\nexport var translate3D = function (params, x, y, z, width, height, depth) {\n var _a = __read(params, 3), tx = _a[0], ty = _a[1], tz = _a[2];\n return mat4.fromTranslation(mat4.create(), [tx, ty, tz]);\n};\n//# sourceMappingURL=translate3D.js.map","var __read = (this && this.__read) || function (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 * Exchange dimensions of the vector.\n * @param params [tx, ty]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @returns transformer\n */\nexport var transpose3D = function (params, x, y, z, width, height, depth) {\n return {\n transform: function (_a) {\n var _b = __read(_a, 3), x = _b[0], y = _b[1], z = _b[2];\n return [y, x, z];\n },\n untransform: function (_a) {\n var _b = __read(_a, 3), x = _b[0], y = _b[1], z = _b[2];\n return [y, x, z];\n },\n };\n};\n//# sourceMappingURL=transpose3D.js.map","var __read = (this && this.__read) || function (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};\nimport { mat4 } from 'gl-matrix';\n/**\n * Apply scale transformation for current vector.\n * @param params [sx, sy, sz]\n * @param x x of the the bounding box of coordinate\n * @param y y of the the bounding box of coordinate\n * @param z z of the the bounding box of coordinate\n * @param width width of the the bounding box of coordinate\n * @param height height of the the bounding box of coordinate\n * @param depth depth of the the bounding box of coordinate\n * @returns transformer\n */\nexport var scale3D = function (params, x, y, z, width, height, depth) {\n var _a = __read(params, 3), sx = _a[0], sy = _a[1], sz = _a[2];\n return mat4.fromScaling(mat4.create(), [sx, sy, sz]);\n};\n//# sourceMappingURL=scale3D.js.map","var __read = (this && this.__read) || function (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};\nvar __spreadArray = (this && this.__spreadArray) || function (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};\nvar __values = (this && this.__values) || function(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};\nimport { deepMix, identity } from '@antv/util';\nimport { mat3, vec3 } from 'gl-matrix';\nimport { compose, isMatrix, extend } from './utils';\nimport { cartesian, translate, custom, matrix, polar, transpose, scale, shearX, shearY, reflect, reflectX, reflectY, rotate, helix, parallel, fisheye, fisheyeX, fisheyeY, fisheyeCircular, } from './transforms';\nvar Coordinate = /** @class */ (function () {\n /**\n * Create a new Coordinate Object.\n * @param options Custom options\n */\n function Coordinate(options) {\n // 当前的选项\n this.options = {\n x: 0,\n y: 0,\n width: 300,\n height: 150,\n transformations: [],\n };\n // 当前可以使用的变换\n this.transformers = {\n cartesian: cartesian,\n translate: translate,\n custom: custom,\n matrix: matrix,\n polar: polar,\n transpose: transpose,\n scale: scale,\n 'shear.x': shearX,\n 'shear.y': shearY,\n reflect: reflect,\n 'reflect.x': reflectX,\n 'reflect.y': reflectY,\n rotate: rotate,\n helix: helix,\n parallel: parallel,\n fisheye: fisheye,\n 'fisheye.x': fisheyeX,\n 'fisheye.y': fisheyeY,\n 'fisheye.circular': fisheyeCircular,\n };\n this.update(options);\n }\n /**\n * Update options and inner state.\n * @param options Options to be updated\n */\n Coordinate.prototype.update = function (options) {\n this.options = deepMix({}, this.options, options);\n this.recoordinate();\n };\n /**\n * Returns a new Coordinate with same options.\n * @returns Coordinate\n */\n Coordinate.prototype.clone = function () {\n return new Coordinate(this.options);\n };\n /**\n * Returns current options.\n * @returns options\n */\n Coordinate.prototype.getOptions = function () {\n return this.options;\n };\n /**\n * Clear transformations and update.\n */\n Coordinate.prototype.clear = function () {\n this.update({\n transformations: [],\n });\n };\n /**\n * Returns the size of the bounding box of the coordinate.\n * @returns [width, height]\n */\n Coordinate.prototype.getSize = function () {\n var _a = this.options, width = _a.width, height = _a.height;\n return [width, height];\n };\n /**\n * Returns the center of the bounding box of the coordinate.\n * @returns [centerX, centerY, centerZ]\n */\n Coordinate.prototype.getCenter = function () {\n var _a = this.options, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n return [(x * 2 + width) / 2, (y * 2 + height) / 2];\n };\n /**\n * Add selected transformation.\n * @param args transform type and params\n * @returns Coordinate\n */\n Coordinate.prototype.transform = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var transformations = this.options.transformations;\n this.update({\n transformations: __spreadArray(__spreadArray([], __read(transformations), false), [__spreadArray([], __read(args), false)], false),\n });\n return this;\n };\n /**\n * Apples transformations for the current vector.\n * @param vector original vector2\n * @returns transformed vector2\n */\n Coordinate.prototype.map = function (vector) {\n return this.output(vector);\n };\n /**\n * Apples invert transformations for the current vector.\n * @param vector transformed vector2\n * @param vector original vector2\n */\n Coordinate.prototype.invert = function (vector) {\n return this.input(vector);\n };\n Coordinate.prototype.recoordinate = function () {\n this.output = this.compose();\n this.input = this.compose(true);\n };\n // 将所有的变换合成一个函数\n // 变换有两种类型:矩阵变换和函数变换\n // 处理过程中需要把连续的矩阵变换合成一个变换函数,然后在和其他变换函数合成最终的变换函数\n Coordinate.prototype.compose = function (invert) {\n var e_1, _a;\n if (invert === void 0) { invert = false; }\n var transformations = invert ? __spreadArray([], __read(this.options.transformations), false).reverse() : this.options.transformations;\n var getter = invert ? function (d) { return d.untransform; } : function (d) { return d.transform; };\n var matrixes = [];\n var transforms = [];\n var add = function (transform, extended) {\n if (extended === void 0) { extended = true; }\n return transforms.push(extended ? extend(transform) : transform);\n };\n try {\n for (var transformations_1 = __values(transformations), transformations_1_1 = transformations_1.next(); !transformations_1_1.done; transformations_1_1 = transformations_1.next()) {\n var _b = __read(transformations_1_1.value), name_1 = _b[0], args = _b.slice(1);\n var createTransformer = this.transformers[name_1];\n if (createTransformer) {\n var _c = this.options, x = _c.x, y = _c.y, width = _c.width, height = _c.height;\n var transformer = createTransformer(__spreadArray([], __read(args), false), x, y, width, height);\n if (isMatrix(transformer)) {\n // 如果当前变换是矩阵变换,那么先保存下来\n matrixes.push(transformer);\n }\n else {\n // 如果当前变换是函数变换,并且之前有没有合成的矩阵变换,那么现将之前的矩阵变换合成\n if (matrixes.length) {\n var transform_1 = this.createMatrixTransform(matrixes, invert);\n add(transform_1);\n matrixes.splice(0, matrixes.length);\n }\n var transform = getter(transformer) || identity;\n add(transform, name_1 !== 'parallel'); // 对于非平行坐标系的变换需要扩展\n }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (transformations_1_1 && !transformations_1_1.done && (_a = transformations_1.return)) _a.call(transformations_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n // 合成剩下的矩阵变换\n if (matrixes.length) {\n var transform = this.createMatrixTransform(matrixes, invert);\n add(transform);\n }\n return compose.apply(void 0, __spreadArray([], __read(transforms), false));\n };\n // 将连续的矩阵的运算合成一个变换函数\n Coordinate.prototype.createMatrixTransform = function (matrixes, invert) {\n var matrix = mat3.create();\n if (invert)\n matrixes.reverse();\n matrixes.forEach(function (m) { return mat3.mul(matrix, matrix, m); });\n if (invert) {\n mat3.invert(matrix, mat3.clone(matrix));\n }\n return function (vector) {\n var vector3 = [vector[0], vector[1], 1];\n vec3.transformMat3(vector3, vector3, matrix);\n return [vector3[0], vector3[1]];\n };\n };\n return Coordinate;\n}());\nexport { Coordinate };\n//# sourceMappingURL=coordinate.js.map","var __read = (this && this.__read) || function (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};\nvar __spreadArray = (this && this.__spreadArray) || function (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};\nvar __values = (this && this.__values) || function(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};\nimport { deepMix, identity } from '@antv/util';\nimport { mat4, vec4 } from 'gl-matrix';\nimport { compose, isMatrix, extend3D } from './utils';\nimport { cartesian3D, translate3D, scale3D, transpose3D } from './transforms';\nvar Coordinate3D = /** @class */ (function () {\n /**\n * Create a new Coordinate Object.\n * @param options Custom options\n */\n function Coordinate3D(options) {\n // 当前的选项\n this.options = {\n x: 0,\n y: 0,\n z: 0,\n width: 300,\n height: 150,\n depth: 150,\n transformations: [],\n };\n // 当前可以使用的变换\n this.transformers = {\n cartesian3D: cartesian3D,\n translate3D: translate3D,\n scale3D: scale3D,\n transpose3D: transpose3D,\n };\n this.update(options);\n }\n /**\n * Update options and inner state.\n * @param options Options to be updated\n */\n Coordinate3D.prototype.update = function (options) {\n this.options = deepMix({}, this.options, options);\n this.recoordinate();\n };\n /**\n * Returns a new Coordinate with same options.\n * @returns Coordinate\n */\n Coordinate3D.prototype.clone = function () {\n return new Coordinate3D(this.options);\n };\n /**\n * Returns current options.\n * @returns options\n */\n Coordinate3D.prototype.getOptions = function () {\n return this.options;\n };\n /**\n * Clear transformations and update.\n */\n Coordinate3D.prototype.clear = function () {\n this.update({\n transformations: [],\n });\n };\n /**\n * Returns the size of the bounding box of the coordinate.\n * @returns [width, height, depth]\n */\n Coordinate3D.prototype.getSize = function () {\n var _a = this.options, width = _a.width, height = _a.height, depth = _a.depth;\n return [width, height, depth];\n };\n /**\n * Returns the center of the bounding box of the coordinate.\n * @returns [centerX, centerY, centerZ]\n */\n Coordinate3D.prototype.getCenter = function () {\n var _a = this.options, x = _a.x, y = _a.y, z = _a.z, width = _a.width, height = _a.height, depth = _a.depth;\n return [(x * 2 + width) / 2, (y * 2 + height) / 2, (z * 2 + depth) / 2];\n };\n /**\n * Add selected transformation.\n * @param args transform type and params\n * @returns Coordinate\n */\n Coordinate3D.prototype.transform = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var transformations = this.options.transformations;\n this.update({\n transformations: __spreadArray(__spreadArray([], __read(transformations), false), [__spreadArray([], __read(args), false)], false),\n });\n return this;\n };\n /**\n * Apples transformations for the current vector.\n * @param vector original vector3\n * @returns transformed vector3\n */\n Coordinate3D.prototype.map = function (vector) {\n return this.output(vector);\n };\n /**\n * Apples invert transformations for the current vector.\n * @param vector transformed vector3\n * @param vector original vector3\n */\n Coordinate3D.prototype.invert = function (vector) {\n return this.input(vector);\n };\n Coordinate3D.prototype.recoordinate = function () {\n this.output = this.compose();\n this.input = this.compose(true);\n };\n // 将所有的变换合成一个函数\n // 变换有两种类型:矩阵变换和函数变换\n // 处理过程中需要把连续的矩阵变换合成一个变换函数,然后在和其他变换函数合成最终的变换函数\n Coordinate3D.prototype.compose = function (invert) {\n var e_1, _a;\n if (invert === void 0) { invert = false; }\n var transformations = invert ? __spreadArray([], __read(this.options.transformations), false).reverse() : this.options.transformations;\n var getter = invert ? function (d) { return d.untransform; } : function (d) { return d.transform; };\n var matrixes = [];\n var transforms = [];\n var add = function (transform, extended) {\n if (extended === void 0) { extended = true; }\n return transforms.push(extended ? extend3D(transform) : transform);\n };\n try {\n for (var transformations_1 = __values(transformations), transformations_1_1 = transformations_1.next(); !transformations_1_1.done; transformations_1_1 = transformations_1.next()) {\n var _b = __read(transformations_1_1.value), name_1 = _b[0], args = _b.slice(1);\n var createTransformer = this.transformers[name_1];\n if (createTransformer) {\n var _c = this.options, x = _c.x, y = _c.y, z = _c.z, width = _c.width, height = _c.height, depth = _c.depth;\n var transformer = createTransformer(__spreadArray([], __read(args), false), x, y, z, width, height, depth);\n if (isMatrix(transformer)) {\n // 如果当前变换是矩阵变换,那么先保存下来\n matrixes.push(transformer);\n }\n else {\n // 如果当前变换是函数变换,并且之前有没有合成的矩阵变换,那么现将之前的矩阵变换合成\n if (matrixes.length) {\n var transform_1 = this.createMatrixTransform(matrixes, invert);\n add(transform_1);\n matrixes.splice(0, matrixes.length);\n }\n var transform = getter(transformer) || identity;\n add(transform, true);\n }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (transformations_1_1 && !transformations_1_1.done && (_a = transformations_1.return)) _a.call(transformations_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n // 合成剩下的矩阵变换\n if (matrixes.length) {\n var transform = this.createMatrixTransform(matrixes, invert);\n add(transform);\n }\n return compose.apply(void 0, __spreadArray([], __read(transforms), false));\n };\n // 将连续的矩阵的运算合成一个变换函数\n Coordinate3D.prototype.createMatrixTransform = function (matrixes, invert) {\n var matrix = mat4.create();\n if (invert)\n matrixes.reverse();\n matrixes.forEach(function (m) { return mat4.mul(matrix, matrix, m); });\n if (invert) {\n mat4.invert(matrix, mat4.clone(matrix));\n }\n return function (vector) {\n var vector4 = [vector[0], vector[1], vector[2], 1];\n vec4.transformMat4(vector4, vector4, matrix);\n return [vector4[0], vector4[1], vector4[2]];\n };\n };\n return Coordinate3D;\n}());\nexport { Coordinate3D };\n//# sourceMappingURL=coordinate3D.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\n/**\n * Adaptor return default options for raw options.\n */\nexport function useDefaultAdaptor(adaptor) {\n return (options, ...rest) => deepMix({}, adaptor(options, ...rest), options);\n}\n/**\n * Adaptor return options override raw options.\n */\nexport function useOverrideAdaptor(adaptor) {\n return (options, ...rest) => deepMix({}, options, adaptor(options, ...rest));\n}\nexport function mergeData(dataDescriptor, dataValue) {\n if (!dataDescriptor)\n return dataValue;\n if (Array.isArray(dataDescriptor))\n return dataDescriptor;\n const { value = dataValue } = dataDescriptor, rest = __rest(dataDescriptor, [\"value\"]);\n return Object.assign(Object.assign({}, rest), { value });\n}\n//# sourceMappingURL=utils.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { mergeData } from './utils';\n/**\n * @todo Propagate more options to children.\n */\nexport const SpaceLayer = () => {\n return (options) => {\n const { children } = options;\n if (!Array.isArray(children))\n return [];\n const { x: viewX = 0, y: viewY = 0, width: viewWidth, height: viewHeight, data: layerData, } = options;\n return children.map((_a) => {\n var { data, x, y, width, height } = _a, rest = __rest(_a, [\"data\", \"x\", \"y\", \"width\", \"height\"]);\n return (Object.assign(Object.assign({}, rest), { data: mergeData(data, layerData), x: x !== null && x !== void 0 ? x : viewX, y: y !== null && y !== void 0 ? y : viewY, width: width !== null && width !== void 0 ? width : viewWidth, height: height !== null && height !== void 0 ? height : viewHeight }));\n });\n };\n};\nSpaceLayer.props = {};\n//# sourceMappingURL=spaceLayer.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { mergeData } from './utils';\n/**\n * @todo Propagate more options to children.\n */\nexport const SpaceFlex = () => {\n return (options) => {\n const { children } = options;\n if (!Array.isArray(children))\n return [];\n const { direction = 'row', ratio = children.map(() => 1), padding = 0, data: flexData, } = options;\n const [mainStart, mainSize, crossSize, crossStart] = direction === 'col'\n ? ['y', 'height', 'width', 'x']\n : ['x', 'width', 'height', 'y'];\n const sum = ratio.reduce((total, value) => total + value);\n const totalSize = options[mainSize] - padding * (children.length - 1);\n const sizes = ratio.map((value) => totalSize * (value / sum));\n const newChildren = [];\n let next = options[mainStart] || 0;\n for (let i = 0; i < sizes.length; i += 1) {\n const _a = children[i], { data } = _a, rest = __rest(_a, [\"data\"]);\n const newData = mergeData(data, flexData);\n newChildren.push(Object.assign({ [mainStart]: next, [mainSize]: sizes[i], [crossStart]: options[crossStart] || 0, [crossSize]: options[crossSize], data: newData }, rest));\n next += sizes[i] + padding;\n }\n return newChildren;\n };\n};\nSpaceFlex.props = {};\n//# sourceMappingURL=spaceFlex.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { mergeData } from './utils';\n/**\n * @todo Propagate more options to children.(e.g. filter)\n * @todo Propagate encode options to children. This is useful for Matrix composition.\n * @todo Move this to runtime, do not treat it as a composition to cause confusion.\n */\nexport const View = () => {\n return (options) => {\n const { children } = options, restOptions = __rest(options, [\"children\"]);\n if (!Array.isArray(children))\n return [];\n const { data: viewData, scale: viewScale = {}, axis: viewAxis = {}, legend: viewLegend = {}, encode: viewEncode = {}, transform: viewTransform = [] } = restOptions, rest = __rest(restOptions, [\"data\", \"scale\", \"axis\", \"legend\", \"encode\", \"transform\"]);\n const marks = children.map((_a) => {\n var { data, scale = {}, axis = {}, legend = {}, encode = {}, transform = [] } = _a, rest = __rest(_a, [\"data\", \"scale\", \"axis\", \"legend\", \"encode\", \"transform\"]);\n return (Object.assign({ data: mergeData(data, viewData), scale: deepMix({}, viewScale, scale), encode: deepMix({}, viewEncode, encode), transform: [...viewTransform, ...transform], axis: axis && viewAxis ? deepMix({}, viewAxis, axis) : false, legend: legend && viewLegend ? deepMix({}, viewLegend, legend) : false }, rest));\n });\n return [Object.assign(Object.assign({}, rest), { marks, type: 'standardView' })];\n };\n};\nView.props = {};\n//# sourceMappingURL=view.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n// @todo Move this to runtime.\nexport const Mark = ({ static: isStatic = false, } = {}) => {\n return (options) => {\n const { width, height, depth, paddingLeft, paddingRight, paddingTop, paddingBottom, padding, inset, insetLeft, insetTop, insetRight, insetBottom, margin, marginLeft, marginBottom, marginTop, marginRight, data, coordinate, theme, component, interaction, x, y, z, key, frame, labelTransform, parentKey, clip, viewStyle, title } = options, mark = __rest(options, [\"width\", \"height\", \"depth\", \"paddingLeft\", \"paddingRight\", \"paddingTop\", \"paddingBottom\", \"padding\", \"inset\", \"insetLeft\", \"insetTop\", \"insetRight\", \"insetBottom\", \"margin\", \"marginLeft\", \"marginBottom\", \"marginTop\", \"marginRight\", \"data\", \"coordinate\", \"theme\", \"component\", \"interaction\", \"x\", \"y\", \"z\", \"key\", \"frame\", \"labelTransform\", \"parentKey\", \"clip\", \"viewStyle\", \"title\"]);\n return [\n Object.assign(Object.assign({ type: 'standardView', x,\n y,\n z,\n key,\n width,\n height,\n depth,\n padding,\n paddingLeft,\n paddingRight,\n paddingTop,\n inset,\n insetLeft,\n insetTop,\n insetRight,\n insetBottom,\n paddingBottom,\n theme,\n coordinate,\n component,\n interaction,\n frame,\n labelTransform,\n margin,\n marginLeft,\n marginBottom,\n marginTop,\n marginRight,\n parentKey,\n clip, style: viewStyle }, (!isStatic && { title })), { marks: [Object.assign(Object.assign(Object.assign({}, mark), { key: `${key}-0`, data }), (isStatic && { title }))] }),\n ];\n };\n};\nMark.props = {};\n//# sourceMappingURL=mark.js.map","class Container {\n constructor(x) {\n this.$value = x;\n }\n static of(x) {\n return new Container(x);\n }\n call(f, ...rest) {\n return (this.$value = f(this.$value, ...rest)), this;\n }\n value() {\n return this.$value;\n }\n}\nexport { Container };\n//# sourceMappingURL=container.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { extent, group, max } from 'd3-array';\nimport { calcBBox } from '../utils/vector';\nimport { Container } from '../utils/container';\nimport { indexOf } from '../utils/array';\nimport { useDefaultAdaptor, useOverrideAdaptor } from './utils';\nconst setScale = useDefaultAdaptor((options) => {\n const { encode, data, scale, shareSize = false } = options;\n const { x, y } = encode;\n const flexDomain = (encode, channel) => {\n var _a;\n if (encode === undefined || !shareSize)\n return {};\n const groups = group(data, (d) => d[encode]);\n const domain = ((_a = scale === null || scale === void 0 ? void 0 : scale[channel]) === null || _a === void 0 ? void 0 : _a.domain) || Array.from(groups.keys());\n const flex = domain.map((key) => {\n if (!groups.has(key))\n return 1;\n return groups.get(key).length;\n });\n return { domain, flex };\n };\n return {\n scale: {\n x: Object.assign(Object.assign({ paddingOuter: 0, paddingInner: 0.1, guide: x === undefined ? null : { position: 'top' } }, (x === undefined && { paddingInner: 0 })), flexDomain(x, 'x')),\n y: Object.assign(Object.assign({ range: [0, 1], paddingOuter: 0, paddingInner: 0.1, guide: y === undefined ? null : { position: 'right' } }, (y === undefined && { paddingInner: 0 })), flexDomain(y, 'y')),\n },\n };\n});\n/**\n * BFS view tree and using the last discovered color encode\n * as the top-level encode for this plot. This is useful when\n * color encode and color scale is specified in mark node.\n * It makes sense because the whole facet should shared the same\n * color encoding, but it also can be override with explicity\n * encode and scale specification.\n */\nexport const inferColor = useDefaultAdaptor((options) => {\n const { data, scale } = options;\n const discovered = [options];\n let encodeColor;\n let scaleColor;\n let legendColor;\n while (discovered.length) {\n const node = discovered.shift();\n const { children, encode = {}, scale = {}, legend = {} } = node;\n const { color: c } = encode;\n const { color: cs } = scale;\n const { color: cl } = legend;\n if (c !== undefined)\n encodeColor = c;\n if (cs !== undefined)\n scaleColor = cs;\n if (cl !== undefined)\n legendColor = cl;\n if (Array.isArray(children)) {\n discovered.push(...children);\n }\n }\n const domainColor = () => {\n var _a;\n const domain = (_a = scale === null || scale === void 0 ? void 0 : scale.color) === null || _a === void 0 ? void 0 : _a.domain;\n if (domain !== undefined)\n return [domain];\n if (encodeColor === undefined)\n return [undefined];\n const color = typeof encodeColor === 'function' ? encodeColor : (d) => d[encodeColor];\n const values = data.map(color);\n if (values.some((d) => typeof d === 'number'))\n return [extent(values)];\n return [Array.from(new Set(values)), 'ordinal'];\n };\n const title = typeof encodeColor === 'string' ? encodeColor : '';\n const [domain, type] = domainColor();\n return {\n encode: { color: encodeColor },\n scale: { color: deepMix({}, scaleColor, { domain, type }) },\n legend: { color: deepMix({ title }, legendColor) },\n };\n});\nexport const setAnimation = useDefaultAdaptor(() => ({\n animate: {\n enterType: 'fadeIn',\n },\n}));\nexport const setStyle = useOverrideAdaptor(() => ({\n frame: false,\n encode: {\n shape: 'hollow',\n },\n style: {\n lineWidth: 0,\n },\n}));\nexport const toCell = useOverrideAdaptor(() => ({\n type: 'cell',\n}));\n/**\n * Do not set cell data directly, the children will get wrong do if do\n * so. Use transform to set new data.\n **/\nexport const setData = useOverrideAdaptor((options) => {\n const { data } = options;\n const connector = {\n type: 'custom',\n callback: () => {\n const { data, encode } = options;\n const { x, y } = encode;\n const X = x ? Array.from(new Set(data.map((d) => d[x]))) : [];\n const Y = y ? Array.from(new Set(data.map((d) => d[y]))) : [];\n const cellData = () => {\n if (X.length && Y.length) {\n const cellData = [];\n for (const vx of X) {\n for (const vy of Y) {\n cellData.push({ [x]: vx, [y]: vy });\n }\n }\n return cellData;\n }\n if (X.length)\n return X.map((d) => ({ [x]: d }));\n if (Y.length)\n return Y.map((d) => ({ [y]: d }));\n };\n return cellData();\n },\n };\n return {\n data: { type: 'inline', value: data, transform: [connector] },\n };\n});\n/**\n * @todo Move some options assignment to runtime.\n */\nexport const setChildren = useOverrideAdaptor((options, subLayout = subLayoutRect, createGuideX = createGuideXRect, createGuideY = createGuideYRect, childOptions = {}) => {\n const { data: dataValue, encode, children, scale: facetScale, x: originX = 0, y: originY = 0, shareData = false, key: viewKey, } = options;\n const { value: data } = dataValue;\n // Only support field encode now.\n const { x: encodeX, y: encodeY } = encode;\n const { color: facetScaleColor } = facetScale;\n const { domain: facetDomainColor } = facetScaleColor;\n const createChildren = (visualData, scale, layout) => {\n const { x: scaleX, y: scaleY } = scale;\n const { paddingLeft, paddingTop, marginLeft, marginTop } = layout;\n const { domain: domainX } = scaleX.getOptions();\n const { domain: domainY } = scaleY.getOptions();\n const index = indexOf(visualData);\n const bboxs = visualData.map(subLayout);\n const values = visualData.map(({ x, y }) => [\n scaleX.invert(x),\n scaleY.invert(y),\n ]);\n const filters = values.map(([fx, fy]) => (d) => {\n const { [encodeX]: x, [encodeY]: y } = d;\n const inX = encodeX !== undefined ? x === fx : true;\n const inY = encodeY !== undefined ? y === fy : true;\n return inX && inY;\n });\n const facetData2d = filters.map((f) => data.filter(f));\n const maxDataDomain = shareData\n ? max(facetData2d, (data) => data.length)\n : undefined;\n const facets = values.map(([fx, fy]) => ({\n columnField: encodeX,\n columnIndex: domainX.indexOf(fx),\n columnValue: fx,\n columnValuesLength: domainX.length,\n rowField: encodeY,\n rowIndex: domainY.indexOf(fy),\n rowValue: fy,\n rowValuesLength: domainY.length,\n }));\n const normalizedChildren = facets.map((facet) => {\n if (Array.isArray(children))\n return children;\n return [children(facet)].flat(1);\n });\n return index.flatMap((i) => {\n const [left, top, width, height] = bboxs[i];\n const facet = facets[i];\n const facetData = facetData2d[i];\n const children = normalizedChildren[i];\n return children.map((_a) => {\n var _b, _c;\n var { scale, key, facet: isFacet = true, axis = {}, legend = {} } = _a, rest = __rest(_a, [\"scale\", \"key\", \"facet\", \"axis\", \"legend\"]);\n const guideY = ((_b = scale === null || scale === void 0 ? void 0 : scale.y) === null || _b === void 0 ? void 0 : _b.guide) || axis.y;\n const guideX = ((_c = scale === null || scale === void 0 ? void 0 : scale.x) === null || _c === void 0 ? void 0 : _c.guide) || axis.x;\n const defaultScale = {\n x: { tickCount: encodeX ? 5 : undefined },\n y: { tickCount: encodeY ? 5 : undefined },\n };\n const newData = isFacet\n ? facetData\n : facetData.length === 0\n ? []\n : data;\n const newScale = {\n color: { domain: facetDomainColor },\n };\n const newAxis = {\n x: createGuide(guideX, createGuideX)(facet, newData),\n y: createGuide(guideY, createGuideY)(facet, newData),\n };\n return Object.assign(Object.assign({ key: `${key}-${i}`, data: newData, margin: 0, x: left + paddingLeft + originX + marginLeft, y: top + paddingTop + originY + marginTop, parentKey: viewKey, width,\n height, paddingLeft: 0, paddingRight: 0, paddingTop: 0, paddingBottom: 0, frame: newData.length ? true : false, dataDomain: maxDataDomain, scale: deepMix(defaultScale, scale, newScale), axis: deepMix({}, axis, newAxis), \n // Hide all legends for child mark by default,\n // they are displayed in the top-level.\n legend: false }, rest), childOptions);\n });\n });\n };\n return {\n children: createChildren,\n };\n});\nfunction subLayoutRect(data) {\n const { points } = data;\n return calcBBox(points);\n}\n/**\n * Inner guide not show title, tickLine, label and subTickLine,\n * if data is empty, do not show guide.\n */\nexport function createInnerGuide(guide, data) {\n return data.length\n ? deepMix({\n title: false,\n tick: null,\n label: null,\n }, guide)\n : deepMix({\n title: false,\n tick: null,\n label: null,\n grid: null,\n }, guide);\n}\nfunction createGuideXRect(guide) {\n return (facet, data) => {\n const { rowIndex, rowValuesLength, columnIndex, columnValuesLength } = facet;\n // Only the bottom-most facet show axisX.\n if (rowIndex !== rowValuesLength - 1)\n return createInnerGuide(guide, data);\n // Only the bottom-left facet show title.\n const title = columnIndex !== columnValuesLength - 1 ? false : undefined;\n // If data is empty, do not show cell.\n const grid = data.length ? undefined : null;\n return deepMix({ title, grid }, guide);\n };\n}\nfunction createGuideYRect(guide) {\n return (facet, data) => {\n const { rowIndex, columnIndex } = facet;\n // Only the left-most facet show axisY.\n if (columnIndex !== 0)\n return createInnerGuide(guide, data);\n // Only the left-top facet show title.\n const title = rowIndex !== 0 ? false : undefined;\n // If data is empty, do not show cell.\n const grid = data.length ? undefined : null;\n return deepMix({ title, grid }, guide);\n };\n}\nfunction createGuide(guide, factory) {\n if (typeof guide === 'function')\n return guide;\n if (guide === null || guide === false)\n return () => null;\n return factory(guide);\n}\nexport const FacetRect = () => {\n return (options) => {\n const newOptions = Container.of(options)\n .call(toCell)\n .call(inferColor)\n .call(setAnimation)\n .call(setScale)\n .call(setStyle)\n .call(setData)\n .call(setChildren)\n .value();\n return [newOptions];\n };\n};\nFacetRect.props = {};\n//# sourceMappingURL=facetRect.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { Container } from '../utils/container';\nimport { calcBBox } from '../utils/vector';\nimport { indexOf } from '../utils/array';\nimport { createInnerGuide, inferColor, setAnimation, setStyle, toCell, } from './facetRect';\nimport { useDefaultAdaptor, useOverrideAdaptor } from './utils';\nconst setScale = useDefaultAdaptor((options) => {\n return {\n scale: {\n x: { guide: null, paddingOuter: 0, paddingInner: 0.1 },\n y: { guide: null, range: [0, 1], paddingOuter: 0, paddingInner: 0.1 },\n },\n };\n});\nconst setChildren = useOverrideAdaptor((options) => {\n const { data, children, x: originX = 0, y: originY = 0, key: viewKey, } = options;\n const createChildren = (visualData, scale, layout) => {\n const { x: scaleX, y: scaleY } = scale;\n const { paddingLeft, paddingTop, marginLeft, marginTop } = layout;\n const { domain: domainX } = scaleX.getOptions();\n const { domain: domainY } = scaleY.getOptions();\n const index = indexOf(visualData);\n const bboxs = visualData.map(({ points }) => calcBBox(points));\n const values = visualData.map(({ x, y }) => [\n scaleX.invert(x),\n scaleY.invert(y),\n ]);\n const facets = values.map(([fx, fy]) => ({\n columnField: fx,\n columnIndex: domainX.indexOf(fx),\n columnValue: fx,\n columnValuesLength: domainX.length,\n rowField: fy,\n rowIndex: domainY.indexOf(fy),\n rowValue: fy,\n rowValuesLength: domainY.length,\n }));\n const normalizedChildren = facets.map((facet) => {\n if (Array.isArray(children))\n return children;\n return [children(facet)].flat(1);\n });\n return index.flatMap((i) => {\n const [left, top, width, height] = bboxs[i];\n const [fx, fy] = values[i];\n const facet = facets[i];\n const children = normalizedChildren[i];\n return children.map((d) => {\n var _a, _b;\n const { scale, key, encode, axis, interaction } = d, rest = __rest(d, [\"scale\", \"key\", \"encode\", \"axis\", \"interaction\"]);\n const guideY = (_a = scale === null || scale === void 0 ? void 0 : scale.y) === null || _a === void 0 ? void 0 : _a.guide;\n const guideX = (_b = scale === null || scale === void 0 ? void 0 : scale.x) === null || _b === void 0 ? void 0 : _b.guide;\n const defaultScale = {\n // Do not sync position scales among facets by default.\n x: { facet: false },\n // Do not sync position scales among facets by default.\n y: { facet: false },\n };\n const newAxis = {\n x: createGuideX(guideX)(facet, data),\n y: createGuideY(guideY)(facet, data),\n };\n const defaultAxis = {\n x: { tickCount: 5 },\n y: { tickCount: 5 },\n };\n return Object.assign({ data, parentKey: viewKey, key: `${key}-${i}`, x: left + paddingLeft + originX + marginLeft, y: top + paddingTop + originY + marginTop, width,\n height, margin: 0, paddingLeft: 0, paddingRight: 0, paddingTop: 0, paddingBottom: 0, frame: true, scale: deepMix(defaultScale, scale), axis: deepMix(defaultAxis, axis, newAxis), \n // Hide all legends for child mark by default,\n // they are displayed in the top-level.\n legend: false, encode: deepMix({}, encode, {\n x: fx,\n y: fy,\n }), interaction: deepMix({}, interaction, {\n // Register this interaction in parent node.\n legendFilter: false,\n }) }, rest);\n });\n });\n };\n return {\n children: createChildren,\n };\n});\n/**\n * @todo Use transform instead of override data directly.\n */\nconst setData = useOverrideAdaptor((options) => {\n const { encode } = options, rest = __rest(options, [\"encode\"]);\n const { position: P = [], x: X = P, y: Y = [...P].reverse() } = encode, restEncode = __rest(encode, [\"position\", \"x\", \"y\"]);\n const data = [];\n for (const $x of [X].flat(1)) {\n for (const $y of [Y].flat(1)) {\n data.push({ $x, $y });\n }\n }\n return Object.assign(Object.assign({}, rest), { data, encode: Object.assign(Object.assign({}, restEncode), { x: '$x', y: '$y' }), scale: Object.assign(Object.assign({}, ([X].flat(1).length === 1 && { x: { paddingInner: 0 } })), ([Y].flat(1).length === 1 && { y: { paddingInner: 0 } })) });\n});\nfunction createGuideX(guideX) {\n if (typeof guideX === 'function')\n return guideX;\n if (guideX === null)\n return () => null;\n return (facet, data) => {\n const { rowIndex, rowValuesLength } = facet;\n // Only the bottom-most facet show axisX.\n if (rowIndex !== rowValuesLength - 1)\n return createInnerGuide(guideX, data);\n };\n}\nfunction createGuideY(guideY) {\n if (typeof guideY === 'function')\n return guideY;\n if (guideY === null)\n return () => null;\n return (facet, data) => {\n const { columnIndex } = facet;\n // Only the left-most facet show axisY.\n if (columnIndex !== 0)\n return createInnerGuide(guideY, data);\n };\n}\n/**\n * @todo Layout mode: layer, row, col...\n * @todo Specify show axis or not.\n */\nexport const RepeatMatrix = () => {\n return (options) => {\n const newOptions = Container.of(options)\n .call(toCell)\n .call(inferColor)\n .call(setChildren)\n .call(setData)\n .call(setAnimation)\n .call(setStyle)\n .call(setScale)\n .value();\n return [newOptions];\n };\n};\n//# sourceMappingURL=repeatMatrix.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Container } from '../utils/container';\nimport { angleWithQuadrant, angleBetween, dist, sub } from '../utils/vector';\nimport { inferColor, setAnimation, setStyle, toCell, setChildren, setData, } from './facetRect';\nimport { useDefaultAdaptor } from './utils';\nconst setScale = useDefaultAdaptor((options) => {\n return {\n scale: {\n x: { guide: { type: 'axisArc' }, paddingOuter: 0, paddingInner: 0.1 },\n y: { guide: null, range: [0, 1], paddingOuter: 0, paddingInner: 0.1 },\n },\n };\n});\nconst setCoordinate = useDefaultAdaptor((options) => {\n return {\n coordinate: { type: 'polar' },\n };\n});\nconst setEncode = (options) => {\n const { encode } = options, rest = __rest(options, [\"encode\"]);\n const { position } = encode;\n return Object.assign(Object.assign({}, rest), { encode: { x: position } });\n};\n/**\n * Every facet should do not show both axisX and axisY by default.\n */\nfunction createGuideFacetCircle(guide) {\n return (facet) => null;\n}\n/**\n * Use the inscribed circle of the sector as the\n * circumscribed circle of the new bbox.\n */\nfunction subLayoutFacetCircle(data) {\n const { points } = data;\n const [p0, p1, p2, p3] = points;\n const sr = dist(p0, p3); // radius of sector\n const v0 = sub(p0, p3);\n const v1 = sub(p1, p2);\n const a01 = angleBetween(v0, v1);\n // sr = ir + ir / sin(theta/2)\n const t = 1 / Math.sin(a01 / 2);\n const ir = sr / (1 + t); // radius of inscribed circle\n const s = ir * Math.sqrt(2); // size of the bbox.\n // This assume the innerRadius of polar is 0.\n // @todo Compute the right origin if it's not 0,\n // or maybe pass the coordinates to get the right center.\n const [x0, y0] = p2;\n const a0 = angleWithQuadrant(v0);\n const a3 = a0 + a01 / 2;\n const d = ir * t;\n const cx = x0 + d * Math.sin(a3); // center x of inscribed circle\n const cy = y0 - d * Math.cos(a3); // center y of inscribed circle\n return [cx - s / 2, cy - s / 2, s, s];\n}\n/**\n * @todo Pack.\n */\nexport const FacetCircle = () => {\n return (options) => {\n const newOptions = Container.of(options)\n .call(toCell)\n .call(setEncode)\n .call(inferColor)\n .call(setCoordinate)\n .call(setData)\n .call(setChildren, subLayoutFacetCircle, createGuideFacetCircle, createGuideFacetCircle, { frame: false })\n .call(setAnimation)\n .call(setStyle)\n .call(setScale)\n .value();\n return [newOptions];\n };\n};\n//# sourceMappingURL=facetCircle.js.map","import { deepMix } from '@antv/util';\nfunction range(direction, iterationCount, keyframeCount) {\n const start = 0;\n const end = keyframeCount;\n const normal = [start, end];\n const reverse = [-end + 1, -start + 1];\n if (direction === 'normal')\n return normal;\n if (direction === 'reverse')\n return reverse;\n if (direction === 'alternate') {\n return iterationCount % 2 === 0 ? normal : reverse;\n }\n if (direction === 'reverse-alternate') {\n return iterationCount % 2 === 0 ? reverse : normal;\n }\n}\n/**\n * Set animation options for all descendants.\n */\nfunction setAnimation(node, duration, easing) {\n const discovered = [node];\n while (discovered.length) {\n const n = discovered.pop();\n n.animate = deepMix({\n enter: {\n duration,\n },\n update: {\n duration,\n easing,\n type: 'morphing',\n fill: 'both',\n },\n exit: {\n type: 'fadeOut',\n duration,\n },\n }, n.animate || {});\n const { children } = n;\n if (Array.isArray(children))\n discovered.push(...children);\n }\n return node;\n}\n/**\n * @todo More options, such as fill, totalDuration...\n */\nexport const TimingKeyframe = () => {\n return (options) => {\n const { children = [], duration = 1000, iterationCount = 1, direction = 'normal', easing = 'ease-in-out-sine', } = options;\n const n = children.length;\n if (!Array.isArray(children) || n === 0)\n return [];\n const { key } = children[0];\n const newChildren = children\n .map((d) => (Object.assign(Object.assign({}, d), { key })))\n .map((d) => setAnimation(d, duration, easing));\n return function* () {\n let count = 0;\n let prevIndex;\n while (iterationCount === 'infinite' || count < iterationCount) {\n const [start, end] = range(direction, count, n);\n for (let i = start; i < end; i += 1) {\n // For reverse direction, the range is from negative to negative\n // so the absolute value of i is the real index for newChildren.\n const index = Math.abs(i);\n // This is for preventing alternate or reverse-alternate keyframe\n // to yield two same node one by one when the direction change.\n if (prevIndex !== index)\n yield newChildren[index];\n prevIndex = index;\n }\n count++;\n }\n };\n };\n};\nTimingKeyframe.props = {};\n//# sourceMappingURL=timingKeyframe.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n/**\n * Wrap GeoPath by a GeoView.\n */\nexport const GeoPath = () => {\n return (options) => {\n const { type, data, scale, encode, style, animate, key, state } = options, rest = __rest(options, [\"type\", \"data\", \"scale\", \"encode\", \"style\", \"animate\", \"key\", \"state\"]);\n return [\n Object.assign(Object.assign({ type: 'geoView' }, rest), { children: [\n {\n type: 'geoPath',\n key: `${key}-0`,\n data: {\n value: data,\n },\n scale,\n encode,\n style,\n animate,\n state,\n },\n ] }),\n ];\n };\n};\nGeoPath.props = {};\n//# sourceMappingURL=geoPath.js.map","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n lambda += deltaLambda;\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new Adder();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","export default x => x;\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nexport default class PathString {\n constructor(digits) {\n this._append = digits == null ? append : appendRound(digits);\n this._radius = 4.5;\n this._ = \"\";\n }\n pointRadius(_) {\n this._radius = +_;\n return this;\n }\n polygonStart() {\n this._line = 0;\n }\n polygonEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line === 0) this._ += \"Z\";\n this._point = NaN;\n }\n point(x, y) {\n switch (this._point) {\n case 0: {\n this._append`M${x},${y}`;\n this._point = 1;\n break;\n }\n case 1: {\n this._append`L${x},${y}`;\n break;\n }\n default: {\n this._append`M${x},${y}`;\n if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n const r = this._radius;\n const s = this._;\n this._ = \"\"; // stash the old string so we can cache the circle path fragment\n this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n cacheRadius = r;\n cacheAppend = this._append;\n cacheCircle = this._;\n this._ = s;\n }\n this._ += cacheCircle;\n break;\n }\n }\n }\n result() {\n const result = this._;\n this._ = \"\";\n return result.length ? result : null;\n }\n}\n\nfunction append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n const d = Math.floor(digits);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`);\n if (d > 15) return append;\n if (d !== cacheDigits) {\n const k = 10 ** d;\n cacheDigits = d;\n cacheAppend = function append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n }\n return cacheAppend;\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n let digits = 3,\n pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n return path;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n path.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) digits = null;\n else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n if (context === null) contextStream = new PathString(digits);\n return path;\n };\n\n return path.projection(projection).digits(digits).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0)\n l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0)\n l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Linear } from '@antv/scale';\nimport { upperFirst } from '@antv/util';\nimport { geoPath, geoGraticule10 } from 'd3-geo';\nimport { maybeTooltip } from '../utils/mark';\nimport * as d3Projection from './d3Projection';\n/**\n * Get projection factory from d3-projection.\n */\nfunction normalizeProjection(type) {\n if (typeof type === 'function')\n return type;\n const name = `geo${upperFirst(type)}`;\n const projection = d3Projection[name];\n if (!projection)\n throw new Error(`Unknown coordinate: ${type}`);\n return projection;\n}\n/**\n * @see https://github.com/mapbox/geojson-merge/blob/master/index.js\n */\nfunction mergeGeoJSON(gjs) {\n return {\n type: 'FeatureCollection',\n features: gjs.flatMap((gj) => normalizeGeoJSON(gj).features),\n };\n}\nfunction normalizeGeoJSON(gj) {\n const types = {\n Point: 'geometry',\n MultiPoint: 'geometry',\n LineString: 'geometry',\n MultiLineString: 'geometry',\n Polygon: 'geometry',\n MultiPolygon: 'geometry',\n GeometryCollection: 'geometry',\n Feature: 'feature',\n FeatureCollection: 'featureCollection',\n };\n if (!gj || !gj.type)\n return null;\n const type = types[gj.type];\n if (!type)\n return null;\n if (type === 'geometry') {\n return {\n type: 'FeatureCollection',\n features: [\n {\n type: 'Feature',\n properties: {},\n geometry: gj,\n },\n ],\n };\n }\n else if (type === 'feature') {\n return {\n type: 'FeatureCollection',\n features: [gj],\n };\n }\n else if (type === 'featureCollection') {\n return gj;\n }\n}\n/**\n * Specify the options for d3 projection\n * @see https://github.com/d3/d3-geo#projections\n * @todo Specify key each by each.\n */\nfunction setProjectionOptions(projection, options) {\n var _a;\n for (const [key, value] of Object.entries(options)) {\n (_a = projection[key]) === null || _a === void 0 ? void 0 : _a.call(projection, value);\n }\n}\nfunction setProjectionSize(projection, nodes, layout, options) {\n const defaultOutline = () => {\n const geoNodes = nodes.filter(isGeoPath);\n // For geoPath with sphere mark, use it as outline.\n const sphere = geoNodes.find((d) => d.sphere);\n if (sphere)\n return { type: 'Sphere' };\n // Merge all GeoJSON as the outline.\n return mergeGeoJSON(geoNodes.filter((d) => !d.sphere).flatMap((d) => d.data.value));\n };\n const { outline = defaultOutline() } = options;\n const { size = 'fitExtent' } = options;\n if (size === 'fitExtent') {\n return setFitExtent(projection, outline, layout);\n }\n else if (size === 'fitWidth') {\n return setFitWidth(projection, outline, layout);\n }\n}\nfunction setFitExtent(projection, object, layout) {\n const { x, y, width, height } = layout;\n projection.fitExtent([\n [x, y],\n [width, height],\n ], object);\n}\nfunction setFitWidth(projection, object, layout) {\n const { width, height } = layout;\n const [[x0, y0], [x1, y1]] = geoPath(projection.fitWidth(width, object)).bounds(object);\n const dy = Math.ceil(y1 - y0);\n const l = Math.min(Math.ceil(x1 - x0), dy);\n const s = (projection.scale() * (l - 1)) / l;\n const [tx, ty] = projection.translate();\n const t = ty + (height - dy) / 2;\n projection.scale(s).translate([tx, t]).precision(0.2);\n}\n/**\n * @todo Remove this.\n */\nfunction normalizeDataSource(node) {\n const { data } = node;\n if (Array.isArray(data))\n return Object.assign(Object.assign({}, node), { data: { value: data } });\n const { type } = data;\n if (type === 'graticule10') {\n return Object.assign(Object.assign({}, node), { data: { value: [geoGraticule10()] } });\n }\n else if (type === 'sphere') {\n // Sphere is not a standard type of GeoJSON.\n // Mark this geoPath as sphere geoPath.\n return Object.assign(Object.assign({}, node), { sphere: true, data: { value: [{ type: 'Sphere' }] } });\n }\n return node;\n}\nfunction isGeoPath(d) {\n return d.type === 'geoPath';\n}\n/**\n * A view with geo coordinate.\n */\nexport const GeoView = () => {\n return (options) => {\n const { children, coordinate: projection = {} } = options;\n if (!Array.isArray(children))\n return [];\n // Get projection factory.\n const { type = 'equalEarth' } = projection, projectionOptions = __rest(projection, [\"type\"]);\n const createProjection = normalizeProjection(type);\n const nodes = children.map(normalizeDataSource);\n // Set path generator lazily.\n let path;\n // A custom geo coordinate.\n function Geo() {\n return [\n [\n 'custom',\n (x, y, width, height) => {\n // Create and set projection.\n const visual = createProjection();\n const layout = { x, y, width, height };\n setProjectionSize(visual, nodes, layout, projectionOptions);\n setProjectionOptions(visual, projectionOptions);\n // Create path generator.\n path = geoPath(visual);\n // Normalize projection and projection.invert,\n // which normalize projected points.\n const scaleX = new Linear({\n domain: [x, x + width],\n });\n const scaleY = new Linear({\n domain: [y, y + height],\n });\n const normalize = (point) => {\n const visualPoint = visual(point);\n if (!visualPoint)\n return [null, null];\n const [vx, vy] = visualPoint;\n return [scaleX.map(vx), scaleY.map(vy)];\n };\n const normalizeInvert = (point) => {\n if (!point)\n return null;\n const [px, py] = point;\n const visualPoint = [scaleX.invert(px), scaleY.invert(py)];\n return visual.invert(visualPoint);\n };\n return {\n transform: (point) => normalize(point),\n untransform: (point) => normalizeInvert(point),\n };\n },\n ],\n ];\n }\n function GeoPath(options) {\n const { style, tooltip = {} } = options;\n return Object.assign(Object.assign({}, options), { type: 'path', tooltip: maybeTooltip(tooltip, {\n title: 'id',\n items: [{ channel: 'color' }],\n }), style: Object.assign(Object.assign({}, style), { d: (d) => path(d) || [] }) });\n }\n const t = (d) => (isGeoPath(d) ? GeoPath(d) : d);\n return [\n Object.assign(Object.assign({}, options), { type: 'view', scale: {\n x: { type: 'identity' },\n y: { type: 'identity' },\n }, axis: false, coordinate: { type: Geo }, children: nodes.flatMap(t) }),\n ];\n };\n};\nGeoView.props = {};\n//# sourceMappingURL=geoView.js.map","import { ChartEvent } from '../utils/event';\nexport function dataOf(element, view) {\n const { __data__: datum } = element;\n const { markKey, index, seriesIndex } = datum;\n const { markState } = view;\n const selectedMark = Array.from(markState.keys()).find((mark) => mark.key === markKey);\n if (!selectedMark)\n return;\n if (seriesIndex) {\n return seriesIndex.map((i) => selectedMark.data[i]);\n }\n return selectedMark.data[index];\n}\nfunction maybeRoot(node, rootOf) {\n if (rootOf(node))\n return node;\n let root = node.parent;\n while (root && !rootOf(root))\n root = root.parent;\n return root;\n}\n// For extended component\nfunction maybeComponentRoot(node) {\n return maybeRoot(node, (node) => node.className === 'component');\n}\n// For extended shape.\nfunction maybeElementRoot(node) {\n return maybeRoot(node, (node) => node.className === 'element');\n}\n// For extended label.\nfunction maybeLabelRoot(node) {\n return maybeRoot(node, (node) => node.className === 'label');\n}\nfunction bubblesEvent(eventType, view, emitter, predicate = (event) => true) {\n return (e) => {\n if (!predicate(e))\n return;\n // Emit plot events.\n emitter.emit(`plot:${eventType}`, e);\n const { target } = e;\n // There is no target for pointerupoutside event if out of canvas.\n if (!target)\n return;\n const { className } = target;\n // If target area is plot area, do not emit extra events.\n if (className === 'plot')\n return;\n // If target is element or child of element.\n const elementRoot = maybeElementRoot(target);\n // If target is component or child of component.\n const componentRoot = maybeComponentRoot(target);\n // If target is babel or child of babel.\n const babelRoot = maybeLabelRoot(target);\n const root = elementRoot || componentRoot || babelRoot;\n if (!root)\n return;\n const { className: elementType, markType } = root;\n const e1 = Object.assign(Object.assign({}, e), { nativeEvent: true });\n if (elementType === 'element') {\n e1['data'] = { data: dataOf(root, view) };\n emitter.emit(`element:${eventType}`, e1);\n emitter.emit(`${markType}:${eventType}`, e1);\n }\n else if (elementType === 'label') {\n //label children [Text2, Rect2, Path2],\n e1['data'] = { data: root.attributes.datum };\n emitter.emit(`label:${eventType}`, e1);\n emitter.emit(`${className}:${eventType}`, e1);\n }\n else {\n emitter.emit(`component:${eventType}`, e1);\n emitter.emit(`${className}:${eventType}`, e1);\n }\n };\n}\n// @todo Provide more info for event.dataset.\nexport function Event() {\n return (context, _, emitter) => {\n const { container, view } = context;\n // Click events.\n const click = bubblesEvent(ChartEvent.CLICK, view, emitter, (e) => e.detail === 1);\n const dblclick = bubblesEvent(ChartEvent.DBLCLICK, view, emitter, (e) => e.detail === 2);\n // Pointer events.\n const pointertap = bubblesEvent(ChartEvent.POINTER_TAP, view, emitter);\n const pointerdown = bubblesEvent(ChartEvent.POINTER_DOWN, view, emitter);\n const pointerup = bubblesEvent(ChartEvent.POINTER_UP, view, emitter);\n const pointerover = bubblesEvent(ChartEvent.POINTER_OVER, view, emitter);\n const pointerout = bubblesEvent(ChartEvent.POINTER_OUT, view, emitter);\n const pointermove = bubblesEvent(ChartEvent.POINTER_MOVE, view, emitter);\n const pointerenter = bubblesEvent(ChartEvent.POINTER_ENTER, view, emitter);\n const pointerleave = bubblesEvent(ChartEvent.POINTER_LEAVE, view, emitter);\n const pointerupoutside = bubblesEvent(ChartEvent.POINTER_UPOUTSIDE, view, emitter);\n // Drag and drop events.\n const dragstart = bubblesEvent(ChartEvent.DRAG_START, view, emitter);\n const drag = bubblesEvent(ChartEvent.DRAG, view, emitter);\n const dragend = bubblesEvent(ChartEvent.DRAG_END, view, emitter);\n const dragenter = bubblesEvent(ChartEvent.DRAG_ENTER, view, emitter);\n const dragleave = bubblesEvent(ChartEvent.DRAG_LEAVE, view, emitter);\n const dragover = bubblesEvent(ChartEvent.DRAG_OVER, view, emitter);\n const drop = bubblesEvent(ChartEvent.DROP, view, emitter);\n // For legacy usage.\n container.addEventListener('click', click);\n container.addEventListener('click', dblclick);\n // Recommend events.\n container.addEventListener('pointertap', pointertap);\n container.addEventListener('pointerdown', pointerdown);\n container.addEventListener('pointerup', pointerup);\n container.addEventListener('pointerover', pointerover);\n container.addEventListener('pointerout', pointerout);\n container.addEventListener('pointermove', pointermove);\n container.addEventListener('pointerenter', pointerenter);\n container.addEventListener('pointerleave', pointerleave);\n container.addEventListener('pointerupoutside', pointerupoutside);\n // Plugin events.\n container.addEventListener('dragstart', dragstart);\n container.addEventListener('drag', drag);\n container.addEventListener('dragend', dragend);\n container.addEventListener('dragenter', dragenter);\n container.addEventListener('dragleave', dragleave);\n container.addEventListener('dragover', dragover);\n container.addEventListener('drop', drop);\n return () => {\n container.removeEventListener('click', click);\n container.removeEventListener('click', dblclick);\n container.removeEventListener('pointertap', pointertap);\n container.removeEventListener('pointerdown', pointerdown);\n container.removeEventListener('pointerup', pointerup);\n container.removeEventListener('pointerover', pointerover);\n container.removeEventListener('pointerout', pointerout);\n container.removeEventListener('pointermove', pointermove);\n container.removeEventListener('pointerenter', pointerenter);\n container.removeEventListener('pointerleave', pointerleave);\n container.removeEventListener('pointerupoutside', pointerupoutside);\n container.removeEventListener('dragstart', dragstart);\n container.removeEventListener('drag', drag);\n container.removeEventListener('dragend', dragend);\n container.removeEventListener('dragenter', dragenter);\n container.removeEventListener('dragleave', dragleave);\n container.removeEventListener('dragover', dragover);\n container.removeEventListener('drop', drop);\n };\n };\n}\nEvent.props = {\n reapplyWhenUpdate: true,\n};\n//# sourceMappingURL=event.js.map","import { AxisLinear, AxisArc, AxisRadar, LegendContinuousBlock, LegendContinuousBlockSize, LegendContinuousSize, } from '../component';\nimport { Mark, View } from '../composition';\nimport { LabelShape } from '../shape';\nimport { Event } from '../interaction/event';\n// Some private visual components, they are not public to\n// users, only for runtime.\nexport function builtinlib() {\n return {\n 'component.axisRadar': AxisRadar,\n 'component.axisLinear': AxisLinear,\n 'component.axisArc': AxisArc,\n 'component.legendContinuousBlock': LegendContinuousBlock,\n 'component.legendContinuousBlockSize': LegendContinuousBlockSize,\n 'component.legendContinuousSize': LegendContinuousSize,\n 'interaction.event': Event,\n 'composition.mark': Mark,\n 'composition.view': View,\n 'shape.label.label': LabelShape,\n };\n}\n//# sourceMappingURL=builtinlib.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { error } from '../utils/helper';\nimport { builtinlib } from '../lib/builtinlib';\nexport function useLibrary(namespace, publicLibrary) {\n const library = Object.assign(Object.assign({}, builtinlib()), publicLibrary);\n const create = (type) => {\n if (typeof type !== 'string')\n return type;\n const key = `${namespace}.${type}`;\n return library[key] || error(`Unknown Component: ${key}`);\n };\n const use = (options, context) => {\n const { type } = options, rest = __rest(options, [\"type\"]);\n if (!type)\n error(`Plot type is required!`);\n const currentLibrary = create(type);\n return currentLibrary === null || currentLibrary === void 0 ? void 0 : currentLibrary(rest, context);\n };\n return [use, create];\n}\nexport function documentOf(library) {\n const { canvas, group } = library;\n return ((canvas === null || canvas === void 0 ? void 0 : canvas.document) ||\n (group === null || group === void 0 ? void 0 : group.ownerDocument) ||\n error(`Cannot find library document`));\n}\n//# sourceMappingURL=library.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Coordinate, Coordinate3D } from '@antv/coord';\nimport { useLibrary } from './library';\nexport function createCoordinate(layout, partialOptions, library) {\n const [useCoordinate] = useLibrary('coordinate', library);\n const { innerHeight, innerWidth, insetLeft, insetTop, insetRight, insetBottom, } = layout;\n const { coordinates: partialTransform = [] } = partialOptions;\n const transform = inferCoordinate(partialTransform);\n const isCartesian3D = transform[0].type === 'cartesian3D';\n const options = Object.assign(Object.assign({}, layout), { x: insetLeft, y: insetTop, width: innerWidth - insetLeft - insetRight, height: innerHeight - insetBottom - insetTop, transformations: transform.flatMap(useCoordinate) });\n const coordinate = isCartesian3D\n ? // @ts-ignore\n new Coordinate3D(options)\n : new Coordinate(options);\n return coordinate;\n}\nexport function coordinate2Transform(node, library) {\n // @ts-ignore\n const { coordinate = {} } = node, rest = __rest(node, [\"coordinate\"]);\n const { type, transform = [] } = coordinate, options = __rest(coordinate, [\"type\", \"transform\"]);\n if (!type)\n return Object.assign(Object.assign({}, rest), { coordinates: transform });\n const [, createCoordinate] = useLibrary('coordinate', library);\n const { transform: isTransform = false } = createCoordinate(type).props || {};\n if (isTransform) {\n throw new Error(`Unknown coordinate: ${type}.`);\n }\n return Object.assign(Object.assign({}, rest), { coordinates: [Object.assign({ type }, options), ...transform] });\n}\nexport function coordOf(coordinates, type) {\n return coordinates.filter((d) => d.type === type);\n}\n/**\n * todo Duplication is not considered\n */\nexport function isPolar(coordinates) {\n return coordOf(coordinates, 'polar').length > 0;\n}\nexport function isHelix(coordinates) {\n return coordOf(coordinates, 'helix').length > 0;\n}\n/**\n * todo The number of transposes matters\n */\nexport function isTranspose(coordinates) {\n return coordOf(coordinates, 'transpose').length % 2 === 1;\n}\nexport function isParallel(coordinates) {\n return coordOf(coordinates, 'parallel').length > 0;\n}\nexport function isTheta(coordinates) {\n return coordOf(coordinates, 'theta').length > 0;\n}\nexport function isReflect(coordinates) {\n return coordOf(coordinates, 'reflect').length > 0;\n}\nexport function isRadial(coordinates) {\n return coordOf(coordinates, 'radial').length > 0;\n}\nexport function isRadar(coordinates) {\n return coordOf(coordinates, 'radar').length > 0;\n}\n/**\n * todo The axis corresponding to the Y reversal is not reversed\n */\nexport function isReflectY(coordinates) {\n return coordOf(coordinates, 'reflectY').length > 0;\n}\nfunction inferCoordinate(coordinates) {\n if (coordinates.find((d) => d.type === 'cartesian' || d.type === 'cartesian3D'))\n return coordinates;\n return [...coordinates, { type: 'cartesian' }];\n}\n//# sourceMappingURL=coordinate.js.map","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default scheme => interpolateRgbBasis(scheme[scheme.length - 1]);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import { Linear, createInterpolateValue } from '@antv/scale';\nimport { extent, max } from 'd3-array';\nimport * as d3ScaleChromatic from 'd3-scale-chromatic';\nimport { deepMix, omit, upperFirst } from '@antv/util';\nimport { firstOf, lastOf, unique } from '../utils/array';\nimport { defined, identity, isStrictObject } from '../utils/helper';\nimport { isTheta } from './coordinate';\nimport { useLibrary } from './library';\nexport function inferScale(name, values, options, coordinates, theme, library) {\n const { guide = {} } = options;\n const type = inferScaleType(name, values, options);\n if (typeof type !== 'string')\n return options;\n const expectedDomain = inferScaleDomain(type, name, values, options);\n const actualDomain = maybeRatio(type, expectedDomain, options);\n return Object.assign(Object.assign(Object.assign({}, options), inferScaleOptions(type, name, values, options, coordinates)), { domain: actualDomain, range: inferScaleRange(type, name, values, options, actualDomain, theme, library), expectedDomain,\n guide,\n name,\n type });\n}\nexport function applyScale(channels, scale) {\n const scaledValue = {};\n for (const channel of channels) {\n const { values, name: scaleName } = channel;\n const scaleInstance = scale[scaleName];\n for (const value of values) {\n const { name, value: V } = value;\n scaledValue[name] = V.map((d) => scaleInstance.map(d));\n }\n }\n return scaledValue;\n}\nexport function collectScales(states, options) {\n var _a;\n const { components = [] } = options;\n const NONE_STATIC_KEYS = [\n 'scale',\n 'encode',\n 'axis',\n 'legend',\n 'data',\n 'transform',\n ];\n // From normal marks.\n const scales = Array.from(new Set(states.flatMap((d) => d.channels.map((d) => d.scale))));\n // From static marks.\n const nameScale = new Map(scales.map((scale) => [scale.name, scale]));\n for (const component of components) {\n const channels = inferChannelsForComponent(component);\n for (const channel of channels) {\n const scale = nameScale.get(channel);\n const staticScale = ((_a = component.scale) === null || _a === void 0 ? void 0 : _a[channel]) || {};\n const { independent = false } = staticScale;\n if (scale && !independent) {\n // Merged with exist scales if is not independent.\n const { guide } = scale;\n const guide1 = typeof guide === 'boolean' ? {} : guide;\n scale.guide = deepMix({}, guide1, component);\n Object.assign(scale, staticScale);\n }\n else {\n // Append new scales without exit scales or independent.\n const options1 = Object.assign(Object.assign({}, staticScale), { expectedDomain: staticScale.domain, name: channel, guide: omit(component, NONE_STATIC_KEYS) });\n scales.push(options1);\n }\n }\n }\n return scales;\n}\nexport function useRelation(relations) {\n if (!relations || !Array.isArray(relations))\n return [identity, identity];\n // Store original map and invert.\n let map;\n let invert;\n const conditionalize = (scale) => {\n var _a;\n map = scale.map.bind(scale);\n invert = (_a = scale.invert) === null || _a === void 0 ? void 0 : _a.bind(scale);\n // Distinguish functions[function, output] and value[vale, output] relations.\n const funcRelations = relations.filter(([v]) => typeof v === 'function');\n const valueRelations = relations.filter(([v]) => typeof v !== 'function');\n // Update scale.map\n const valueOutput = new Map(valueRelations);\n scale.map = (x) => {\n for (const [verify, value] of funcRelations) {\n if (verify(x))\n return value;\n }\n if (valueOutput.has(x))\n return valueOutput.get(x);\n return map(x);\n };\n if (!invert)\n return scale;\n // Update scale.invert\n const outputValue = new Map(valueRelations.map(([a, b]) => [b, a]));\n const outputFunc = new Map(funcRelations.map(([a, b]) => [b, a]));\n scale.invert = (x) => {\n if (outputFunc.has(x))\n return x;\n if (outputValue.has(x))\n return outputValue.get(x);\n return invert(x);\n };\n return scale;\n };\n const deconditionalize = (scale) => {\n if (map !== null)\n scale.map = map;\n if (invert !== null)\n scale.invert = invert;\n return scale;\n };\n return [conditionalize, deconditionalize];\n}\nexport function assignScale(target, source) {\n const keys = Object.keys(target);\n for (const scale of Object.values(source)) {\n const { name } = scale.getOptions();\n if (!(name in target))\n target[name] = scale;\n else {\n const I = keys\n .filter((d) => d.startsWith(name))\n // Reg is for extract `1` from `x1`;\n .map((d) => +(d.replace(name, '') || 0));\n const index = max(I) + 1;\n const newKey = `${name}${index}`;\n target[newKey] = scale;\n scale.getOptions().key = newKey;\n }\n }\n return target;\n}\nexport function useRelationScale(options, library) {\n const [useScale] = useLibrary('scale', library);\n const { relations } = options;\n const [conditionalize] = useRelation(relations);\n const scale = useScale(options);\n return conditionalize(scale);\n}\nexport function syncFacetsScales(states) {\n const scales = states\n .flatMap((d) => Array.from(d.values()))\n .flatMap((d) => d.channels.map((d) => d.scale));\n syncFacetsScaleByChannel(scales, 'x');\n syncFacetsScaleByChannel(scales, 'y');\n}\nfunction inferChannelsForComponent(component) {\n const { channels = [], type, scale = {} } = component;\n const L = ['shape', 'color', 'opacity', 'size'];\n if (channels.length !== 0)\n return channels;\n if (type === 'axisX')\n return ['x'];\n if (type === 'axisY')\n return ['y'];\n if (type === 'legends')\n return Object.keys(scale).filter((d) => L.includes(d));\n return [];\n}\nfunction syncFacetsScaleByChannel(scales, channel) {\n const S = scales.filter(({ name, facet = true }) => facet && name === channel);\n const D = S.flatMap((d) => d.domain);\n const syncedD = S.every(isQuantitativeScale)\n ? extent(D)\n : S.every(isDiscreteScale)\n ? Array.from(new Set(D))\n : null;\n if (syncedD === null)\n return;\n for (const scale of S) {\n scale.domain = syncedD;\n }\n}\nfunction maybeRatio(type, domain, options) {\n const { ratio } = options;\n if (ratio === undefined || ratio === null)\n return domain;\n if (isQuantitativeScale({ type })) {\n return clampQuantitativeScale(domain, ratio, type);\n }\n if (isDiscreteScale({ type }))\n return clampDiscreteScale(domain, ratio);\n return domain;\n}\nfunction clampQuantitativeScale(domain, ratio, type) {\n const D = domain.map(Number);\n const scale = new Linear({\n domain: D,\n range: [D[0], D[0] + (D[D.length - 1] - D[0]) * ratio],\n });\n if (type === 'time')\n return domain.map((d) => new Date(scale.map(d)));\n return domain.map((d) => scale.map(d));\n}\nfunction clampDiscreteScale(domain, ratio) {\n const index = Math.round(domain.length * ratio);\n return domain.slice(0, index);\n}\nfunction isQuantitativeScale(scale) {\n const { type } = scale;\n if (typeof type !== 'string')\n return false;\n // Do not take quantize, quantile or threshold scale into account,\n // because they are not for position scales. If they are, there is\n // no need to sync them.\n const names = ['linear', 'log', 'pow', 'time'];\n return names.includes(type);\n}\nfunction isDiscreteScale(scale) {\n const { type } = scale;\n if (typeof type !== 'string')\n return false;\n const names = ['band', 'point', 'ordinal'];\n return names.includes(type);\n}\n// @todo More accurate inference for different cases.\nfunction inferScaleType(name, values, options) {\n const { type, domain, range, quantitative, ordinal } = options;\n if (type !== undefined)\n return type;\n if (isObject(values))\n return 'identity';\n if (typeof range === 'string')\n return 'linear';\n if ((domain || range || []).length > 2)\n return asOrdinalType(name, ordinal);\n if (domain !== undefined) {\n if (isOrdinal([domain]))\n return asOrdinalType(name, ordinal);\n if (isTemporal(values))\n return 'time';\n return asQuantitativeType(name, range, quantitative);\n }\n if (isOrdinal(values))\n return asOrdinalType(name, ordinal);\n if (isTemporal(values))\n return 'time';\n return asQuantitativeType(name, range, quantitative);\n}\nfunction inferScaleDomain(type, name, values, options) {\n const { domain } = options;\n if (domain !== undefined)\n return domain;\n switch (type) {\n case 'linear':\n case 'time':\n case 'log':\n case 'pow':\n case 'sqrt':\n case 'quantize':\n case 'threshold':\n return maybeMinMax(inferDomainQ(values, options), options);\n case 'band':\n case 'ordinal':\n case 'point':\n return inferDomainC(values);\n case 'quantile':\n return inferDomainO(values);\n case 'sequential':\n return maybeMinMax(inferDomainS(values), options);\n default:\n return [];\n }\n}\nfunction inferScaleRange(type, name, values, options, domain, theme, library) {\n const { range } = options;\n if (typeof range === 'string')\n return gradientColors(range);\n if (range !== undefined)\n return range;\n const { rangeMin, rangeMax } = options;\n switch (type) {\n case 'linear':\n case 'time':\n case 'log':\n case 'pow':\n case 'sqrt': {\n const colors = categoricalColors(values, options, domain, theme, library);\n const [r0, r1] = inferRangeQ(name, colors);\n return [rangeMin || r0, rangeMax || r1];\n }\n case 'band':\n case 'point': {\n const min = name === 'size' ? 5 : 0;\n const max = name === 'size' ? 10 : 1;\n return [rangeMin || min, rangeMax || max];\n }\n case 'ordinal': {\n return categoricalColors(values, options, domain, theme, library);\n }\n case 'sequential':\n return undefined;\n case 'constant':\n return [values[0][0]];\n default:\n return [];\n }\n}\nfunction inferScaleOptions(type, name, values, options, coordinates) {\n switch (type) {\n case 'linear':\n case 'time':\n case 'log':\n case 'pow':\n case 'sqrt':\n return inferOptionsQ(coordinates, options);\n case 'band':\n case 'point':\n return inferOptionsC(type, name, coordinates, options);\n case 'sequential':\n return inferOptionsS(options);\n default:\n return options;\n }\n}\nfunction categoricalColors(values, options, domain, theme, library) {\n const [usePalette] = useLibrary('palette', library);\n const { category10: c10, category20: c20 } = theme;\n const defaultPalette = unique(values.flat()).length <= c10.length ? c10 : c20;\n const { palette = defaultPalette, offset } = options;\n if (Array.isArray(palette))\n return palette;\n // Built-in palettes have higher priority.\n try {\n return usePalette({ type: palette });\n }\n catch (e) {\n const colors = interpolatedColors(palette, domain, offset);\n if (colors)\n return colors;\n throw new Error(`Unknown Component: ${palette} `);\n }\n}\nfunction gradientColors(range) {\n return range.split('-');\n}\nfunction interpolatedColors(palette, domain, offset = (d) => d) {\n if (!palette)\n return null;\n const fullName = upperFirst(palette);\n // If scheme have enough colors, then return pre-defined colors.\n const scheme = d3ScaleChromatic[`scheme${fullName}`];\n const interpolator = d3ScaleChromatic[`interpolate${fullName}`];\n if (!scheme && !interpolator)\n return null;\n if (scheme) {\n // If is a one dimension array, return it.\n if (!scheme.some(Array.isArray))\n return scheme;\n const schemeColors = scheme[domain.length];\n if (schemeColors)\n return schemeColors;\n }\n // Otherwise interpolate to get full colors.\n return domain.map((_, i) => interpolator(offset(i / domain.length)));\n}\nfunction inferOptionsS(options) {\n const { palette = 'ylGnBu', offset } = options;\n const name = upperFirst(palette);\n const interpolator = d3ScaleChromatic[`interpolate${name}`];\n if (!interpolator)\n throw new Error(`Unknown palette: ${name}`);\n return {\n interpolator: offset ? (x) => interpolator(offset(x)) : interpolator,\n };\n}\nfunction inferOptionsQ(coordinates, options) {\n const { interpolate = createInterpolateValue, nice = false, tickCount = 5, } = options;\n return Object.assign(Object.assign({}, options), { interpolate, nice, tickCount });\n}\nfunction inferOptionsC(type, name, coordinates, options) {\n if (options.padding !== undefined ||\n options.paddingInner !== undefined ||\n options.paddingOuter !== undefined) {\n return Object.assign(Object.assign({}, options), { unknown: NaN });\n }\n const padding = inferPadding(type, name, coordinates);\n const { paddingInner = padding, paddingOuter = padding } = options;\n return Object.assign(Object.assign({}, options), { paddingInner,\n paddingOuter,\n padding, unknown: NaN });\n}\nfunction inferPadding(type, name, coordinates) {\n // The scale for enterDelay and enterDuration should has zero padding by default.\n // Because there is no need to add extra delay for the start and the end.\n if (name === 'enterDelay' || name === 'enterDuration')\n return 0;\n if (name === 'size')\n return 0;\n if (type === 'band')\n return isTheta(coordinates) ? 0 : 0.1;\n // Point scale need 0.5 padding to make interval between first and last point\n // equal to other intervals in polar coordinate.\n if (type === 'point')\n return 0.5;\n return 0;\n}\nfunction asOrdinalType(name, defaults) {\n if (defaults)\n return defaults;\n return isQuantitative(name) ? 'point' : 'ordinal';\n}\nfunction asQuantitativeType(name, range, defaults) {\n if (defaults)\n return defaults;\n if (name !== 'color')\n return 'linear';\n return range ? 'linear' : 'sequential';\n}\nfunction maybeMinMax(domain, options) {\n if (domain.length === 0)\n return domain;\n const { domainMin, domainMax } = options;\n const [d0, d1] = domain;\n return [domainMin !== null && domainMin !== void 0 ? domainMin : d0, domainMax !== null && domainMax !== void 0 ? domainMax : d1];\n}\nfunction inferDomainQ(values, options) {\n const { zero = false } = options;\n let min = Infinity;\n let max = -Infinity;\n for (const value of values) {\n for (const d of value) {\n if (defined(d)) {\n min = Math.min(min, +d);\n max = Math.max(max, +d);\n }\n }\n }\n if (min === Infinity)\n return [];\n return zero ? [Math.min(0, min), max] : [min, max];\n}\nfunction inferDomainC(values) {\n return Array.from(new Set(values.flat()));\n}\nfunction inferDomainO(values) {\n return inferDomainC(values).sort();\n}\nfunction inferDomainS(values) {\n let min = Infinity;\n let max = -Infinity;\n for (const value of values) {\n for (const d of value) {\n if (defined(d)) {\n min = Math.min(min, +d);\n max = Math.max(max, +d);\n }\n }\n }\n if (min === Infinity)\n return [];\n return [min < 0 ? -max : min, max];\n}\n/**\n * @todo More nice default range for enterDelay and enterDuration.\n * @todo Move these to channel definition.\n */\nfunction inferRangeQ(name, palette) {\n if (name === 'enterDelay')\n return [0, 1000];\n if (name == 'enterDuration')\n return [300, 1000];\n if (name.startsWith('y') || name.startsWith('position'))\n return [1, 0];\n if (name === 'color')\n return [firstOf(palette), lastOf(palette)];\n if (name === 'opacity')\n return [0, 1];\n if (name === 'size')\n return [1, 10];\n return [0, 1];\n}\nfunction isOrdinal(values) {\n return some(values, (d) => {\n const type = typeof d;\n return type === 'string' || type === 'boolean';\n });\n}\nfunction isTemporal(values) {\n return some(values, (d) => d instanceof Date);\n}\nfunction isObject(values) {\n return some(values, isStrictObject);\n}\nfunction some(values, callback) {\n for (const V of values) {\n if (V.some(callback))\n return true;\n }\n return false;\n}\nfunction isQuantitative(name) {\n return (name.startsWith('x') ||\n name.startsWith('y') ||\n name.startsWith('position') ||\n name.startsWith('size'));\n}\n// Spatial and temporal position.\nexport function isPosition(name) {\n return (name.startsWith('x') ||\n name.startsWith('y') ||\n name.startsWith('position') ||\n name === 'enterDelay' ||\n name === 'enterDuration' ||\n name === 'updateDelay' ||\n name === 'updateDuration' ||\n name === 'exitDelay' ||\n name === 'exitDuration');\n}\nexport function isValidScale(scale) {\n if (!scale || !scale.type)\n return false;\n if (typeof scale.type === 'function')\n return true;\n const { type, domain, range, interpolator } = scale;\n const isValidDomain = domain && domain.length > 0;\n const isValidRange = range && range.length > 0;\n if ([\n 'linear',\n 'sqrt',\n 'log',\n 'time',\n 'pow',\n 'threshold',\n 'quantize',\n 'quantile',\n 'ordinal',\n 'band',\n 'point',\n ].includes(type) &&\n isValidDomain &&\n isValidRange) {\n return true;\n }\n if (['sequential'].includes(type) &&\n isValidDomain &&\n (isValidRange || interpolator)) {\n return true;\n }\n if (['constant', 'identity'].includes(type) && isValidRange)\n return true;\n return false;\n}\n//# sourceMappingURL=scale.js.map","export const ContinuousScale = {\n linear: 'linear',\n identity: 'identity',\n log: 'log',\n pow: 'pow',\n sqrt: 'sqrt',\n sequential: 'sequential',\n};\nexport const DistributionScale = {\n threshold: 'threshold',\n quantize: 'quantize',\n quantile: 'quantile',\n};\nexport const DiscreteScale = {\n ordinal: 'ordinal',\n band: 'band',\n point: 'point',\n};\nexport const ConstantScale = {\n constant: 'constant',\n};\n//# sourceMappingURL=scale.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix, isEqual } from '@antv/util';\nimport { groups, max, sum } from 'd3-array';\nimport { format } from 'd3-format';\nimport { DisplayObject, Text } from '@antv/g';\nimport { getPolarOptions, getRadialOptions, } from '../coordinate';\nimport { combine } from '../utils/array';\nimport { prettyNumber } from '../utils/number';\nimport { capitalizeFirst, defined, subObject } from '../utils/helper';\nimport { LEGEND_INFER_STRATEGIES } from '../component/constant';\nimport { coordOf, isHelix, isParallel, isPolar, isRadar, isRadial, isReflect, isReflectY, isTheta, isTranspose, } from './coordinate';\nimport { useLibrary } from './library';\nimport { isValidScale } from './scale';\nimport { ConstantScale, ContinuousScale, DiscreteScale, DistributionScale, } from './types/scale';\nexport function inferComponent(scales, partialOptions, library) {\n const { coordinates = [], title } = partialOptions;\n const [, createGuideComponent] = useLibrary('component', library);\n const displayedScales = scales.filter(({ guide }) => {\n if (guide === null)\n return false;\n return true;\n });\n const components = [];\n // Sliders and scrollbar component.\n const sliders = inferScrollableComponents(partialOptions, scales, library);\n components.push(...sliders);\n // Title components.\n if (title) {\n const { props } = createGuideComponent('title');\n const { defaultPosition, defaultOrientation, defaultOrder, defaultSize, defaultCrossPadding, } = props;\n const titleOptions = typeof title === 'string' ? { title } : title;\n components.push(Object.assign({ type: 'title', position: defaultPosition, orientation: defaultOrientation, order: defaultOrder, crossPadding: defaultCrossPadding[0], defaultSize }, titleOptions));\n }\n // Axis and legends.\n const inferredComponents = inferComponentsType(displayedScales, coordinates);\n inferredComponents.forEach(([type, relativeScales]) => {\n const { props } = createGuideComponent(type);\n const { defaultPosition, defaultPlane = 'xy', defaultOrientation, defaultSize, defaultOrder, defaultLength, defaultPadding: DP = [0, 0], defaultCrossPadding: DCP = [0, 0], } = props;\n // @todo to be confirm if the scale can be merged.\n // const scale: G2ScaleOptions = Object.assign({}, ...relativeScales);\n const scale = deepMix({}, ...relativeScales);\n const { guide: guideOptions, field } = scale;\n // A scale may have multiple guides.\n const guides = Array.isArray(guideOptions) ? guideOptions : [guideOptions];\n for (const partialGuide of guides) {\n const [position, orientation] = inferComponentPositionAndOrientation(type, defaultPosition, defaultOrientation, partialGuide, relativeScales, displayedScales, coordinates);\n // Skip if position and orientation are not specified.\n // @example the last axis of radar chart\n if (!position && !orientation)\n continue;\n const isVertical = position === 'left' || position === 'right';\n const defaultPadding = isVertical ? DP[1] : DP[0];\n const defaultCrossPadding = isVertical ? DCP[1] : DCP[0];\n const { size, order = defaultOrder, length = defaultLength, padding = defaultPadding, crossPadding = defaultCrossPadding, } = partialGuide;\n components.push(Object.assign(Object.assign({ title: field }, partialGuide), { defaultSize,\n length,\n position, plane: defaultPlane, orientation,\n padding,\n order,\n crossPadding,\n size,\n type, scales: relativeScales }));\n }\n });\n return components;\n}\nexport function renderComponent(component, coordinate, theme, library, markState) {\n const [useGuideComponent] = useLibrary('component', library);\n const { scaleInstances: scales, scale, bbox } = component, options = __rest(component, [\"scaleInstances\", \"scale\", \"bbox\"]);\n const value = { bbox, library };\n const render = useGuideComponent(options);\n return render({\n coordinate,\n library,\n markState,\n scales,\n theme,\n value,\n scale,\n });\n}\nexport function normalizeComponents(components) {\n return components.map((d) => {\n const component = deepMix(d, d.style);\n delete component.style;\n return component;\n });\n}\nexport function flatComponents(components) {\n return components.flatMap((d) => (d.type == 'group' ? d.children : d));\n}\n// Wrap legends into a group component.\nexport function groupComponents(components, crossSize) {\n // Group components by key.\n const P = ['left', 'right', 'bottom', 'top'];\n const key = ({ type, position, group }) => {\n if (!P.includes(position))\n return Symbol('independent');\n if (group === undefined) {\n if (type.startsWith('legend'))\n return `legend-${position}`;\n return Symbol('independent');\n }\n if (group === 'independent')\n return Symbol('independent');\n return group;\n };\n const grouped = groups(components, key);\n // Update attributes of group components,\n // and maybe flatten group components without enough room.\n return grouped.flatMap(([, components]) => {\n if (components.length === 1)\n return components[0];\n // If crossSize defined, group components only when has\n // enough room.\n if (crossSize !== undefined) {\n // Compute total length.\n const DL = components\n .filter((d) => d.length !== undefined)\n .map((d) => d.length);\n const totalLength = sum(DL);\n // If there is no enough room for components,\n // do not group.\n if (totalLength > crossSize) {\n components.forEach((d) => (d.group = Symbol('independent')));\n return components;\n }\n // Group legends and update legend length.\n const emptyLength = crossSize - totalLength;\n const emptyCount = components.length - DL.length;\n const length = emptyLength / emptyCount;\n components.forEach((d) => {\n if (d.length !== undefined)\n return;\n d.length = length;\n });\n }\n // Create a group component.\n const size = max(components, (d) => d.size);\n const order = max(components, (d) => d.order);\n const crossPadding = max(components, (d) => d.crossPadding);\n const position = components[0].position;\n return {\n type: 'group',\n size,\n order,\n position,\n children: components,\n crossPadding,\n };\n });\n}\nfunction inferLegendComponentType(scales, coordinates) {\n // Filter accepts scales.\n const channels = ['shape', 'size', 'color', 'opacity'];\n const isConstantSize = (type, name) => type === 'constant' && name === 'size';\n const accepts = scales.filter(({ type, name }) => typeof type === 'string' &&\n channels.includes(name) &&\n !isConstantSize(type, name));\n // Group scales by fields.\n const constants = accepts.filter(({ type }) => type === 'constant');\n const nonConstants = accepts.filter(({ type }) => type !== 'constant');\n const groupKey = (d) => (d.field ? d.field : Symbol('independent'));\n const fieldScales = groups(nonConstants, groupKey)\n .map(([key, scales]) => [key, [...scales, ...constants]])\n .filter(([, scales]) => scales.some((scale) => scale.type !== 'constant'));\n const scalesByField = new Map(fieldScales);\n // Skip empty scales.\n if (scalesByField.size === 0)\n return [];\n // Infer components.\n const sort = (arr) => arr.sort(([a], [b]) => a.localeCompare(b));\n const components = Array.from(scalesByField)\n .map(([, scs]) => {\n const combinations = combine(scs).sort((a, b) => b.length - a.length);\n const options = combinations.map((combination) => ({\n combination,\n option: combination.map((scale) => [scale.name, getScaleType(scale)]),\n }));\n // For category legend.\n for (const { option, combination } of options) {\n // If every scale is constant, do not display legend.\n if (option.every((d) => d[1] === 'constant'))\n continue;\n if (option.every((d) => d[1] === 'discrete' || d[1] === 'constant')) {\n return ['legendCategory', combination];\n }\n }\n // For reset legend.\n // @todo Remove this.\n for (const [componentType, accords] of LEGEND_INFER_STRATEGIES) {\n for (const { option, combination } of options) {\n if (accords.some((accord) => isEqual(sort(accord), sort(option)))) {\n return [componentType, combination];\n }\n }\n }\n return null;\n })\n .filter(defined);\n return components;\n}\nfunction getScaleType(scale) {\n const { type } = scale;\n if (typeof type !== 'string')\n return null;\n if (type in ContinuousScale)\n return 'continuous';\n if (type in DiscreteScale)\n return 'discrete';\n if (type in DistributionScale)\n return 'distribution';\n if (type in ConstantScale)\n return 'constant';\n return null;\n}\nfunction inferAxisComponentType(scales, coordinates) {\n return scales\n .map((scale) => {\n const { name } = scale;\n // todo wait for gui provide helix axis\n if (isHelix(coordinates) || isTheta(coordinates))\n return null;\n if (isTranspose(coordinates) &&\n (isPolar(coordinates) || isRadial(coordinates)))\n return null;\n // infer axis\n if (name.startsWith('x')) {\n if (isPolar(coordinates))\n return ['axisArc', [scale]];\n if (isRadial(coordinates))\n return ['axisLinear', [scale]];\n return [isTranspose(coordinates) ? 'axisY' : 'axisX', [scale]];\n }\n if (name.startsWith('y')) {\n if (isPolar(coordinates))\n return ['axisLinear', [scale]];\n if (isRadial(coordinates))\n return ['axisArc', [scale]];\n return [isTranspose(coordinates) ? 'axisX' : 'axisY', [scale]];\n }\n // Only support linear axis for z.\n if (name.startsWith('z')) {\n return ['axisZ', [scale]];\n }\n if (name.startsWith('position')) {\n if (isRadar(coordinates))\n return ['axisRadar', [scale]];\n if (!isPolar(coordinates))\n return ['axisY', [scale]];\n }\n return null;\n })\n .filter(defined);\n}\nfunction inferComponentsType(scales, coordinates) {\n const availableScales = scales.filter((scale) => isValidScale(scale));\n return [\n ...inferLegendComponentType(availableScales, coordinates),\n ...inferAxisComponentType(availableScales, coordinates),\n ];\n}\nfunction angleOf(coordinates) {\n const polar = coordOf(coordinates, 'polar');\n if (polar.length) {\n const lastPolar = polar[polar.length - 1];\n const { startAngle, endAngle } = getPolarOptions(lastPolar);\n return [startAngle, endAngle];\n }\n const radial = coordOf(coordinates, 'radial');\n if (radial.length) {\n const lastRadial = radial[radial.length - 1];\n const { startAngle, endAngle } = getRadialOptions(lastRadial);\n return [startAngle, endAngle];\n }\n return [-Math.PI / 2, (Math.PI / 2) * 3];\n}\n/**\n * match index of position\n */\nfunction matchPosition(name) {\n const match = /position(\\d*)/g.exec(name);\n if (!match)\n return null;\n return +match[1];\n}\nfunction inferAxisPositionAndOrientation(type, ordinalPosition, relativeScales, scales, coordinates) {\n // a axis only has one scale\n const { name } = relativeScales[0];\n // todo, in current resolution, the radar chart is implement by parallel + polar coordinate.\n // implementation plan to be confirmed.\n // in current implementation, it must to add the first position encode to it's last.\n // so we won't render the last axis repeatably.\n if (type === 'axisRadar') {\n const positions = scales.filter((scale) => scale.name.startsWith('position'));\n const index = matchPosition(name);\n if (name === positions.slice(-1)[0].name || index === null)\n return [null, null];\n // infer radar axis orientation\n const [startAngle, endAngle] = angleOf(coordinates);\n const angle = ((endAngle - startAngle) / (positions.length - 1)) * index + startAngle;\n return ['center', angle];\n }\n if (type === 'axisY' && isParallel(coordinates)) {\n return isTranspose(coordinates)\n ? ['center', 'horizontal']\n : ['center', 'vertical'];\n }\n // in non-cartesian coordinate systems, infer the arc axis angle\n if (type === 'axisLinear') {\n const [startAngle] = angleOf(coordinates);\n return ['center', startAngle];\n }\n if (type === 'axisArc') {\n if (ordinalPosition[0] === 'inner')\n return ['inner', null];\n return ['outer', null];\n }\n if (isPolar(coordinates))\n return ['center', null];\n if (isRadial(coordinates))\n return ['center', null];\n if ((type === 'axisX' && isReflect(coordinates)) ||\n (type === 'axisX' && isReflectY(coordinates))) {\n return ['top', null];\n }\n // if (type === 'axisX') return ['bottom', null];\n return ordinalPosition;\n}\n// @todo Infer position by coordinates.\nfunction inferComponentPositionAndOrientation(type, defaultPosition, defaultOrientation, guide, relativeScales, scales, coordinates) {\n const [startAngle] = angleOf(coordinates);\n const ordinalPositionAndOrientation = [\n guide.position || defaultPosition,\n startAngle !== null && startAngle !== void 0 ? startAngle : defaultOrientation,\n ];\n if (typeof type === 'string' && type.startsWith('axis')) {\n return inferAxisPositionAndOrientation(type, ordinalPositionAndOrientation, relativeScales, scales, coordinates);\n }\n if (typeof type === 'string' &&\n type.startsWith('legend') &&\n isPolar(coordinates)) {\n if (guide.position === 'center')\n return ['center', 'vertical'];\n }\n // for general component, use default position\n return ordinalPositionAndOrientation;\n}\nfunction inferScrollableType(name, type, coordinates = []) {\n if (name === 'x')\n return isTranspose(coordinates) ? `${type}Y` : `${type}X`;\n if (name === 'y')\n return isTranspose(coordinates) ? `${type}X` : `${type}Y`;\n return null;\n}\n/**\n * Infer scrollable components, such as slider and scrollbar.\n */\nfunction inferScrollableComponents(partialOptions, scales, library) {\n const [, createGuideComponent] = useLibrary('component', library);\n const { coordinates } = partialOptions;\n function normalized(type, channelName, scale, options) {\n const componentType = inferScrollableType(channelName, type, coordinates);\n if (!options || !componentType)\n return;\n const { props } = createGuideComponent(componentType);\n const { defaultPosition, defaultSize, defaultOrder, defaultCrossPadding: [crossPadding], } = props;\n return Object.assign(Object.assign({ position: defaultPosition, defaultSize, order: defaultOrder, type: componentType, crossPadding }, options), { scales: [scale] });\n }\n return scales\n .filter((d) => d.slider || d.scrollbar)\n .flatMap((scale) => {\n const { slider, scrollbar, name: channelName } = scale;\n return [\n normalized('slider', channelName, scale, slider),\n normalized('scrollbar', channelName, scale, scrollbar),\n ];\n })\n .filter((d) => !!d);\n}\n// !!! Note Mutate component.size and component.\nexport function computeComponentSize(component, crossSize, crossPadding, position, theme, library) {\n // Only compute and update size of components in padding area.\n const { type } = component;\n const paddingAreas = ['left', 'right', 'bottom', 'top'];\n if (!paddingAreas.includes(position))\n return;\n if (typeof type !== 'string')\n return;\n const t = type;\n const createCompute = () => {\n if (t.startsWith('axis'))\n return computeAxisSize;\n if (t.startsWith('group'))\n return computeGroupSize;\n if (t.startsWith('legendContinuous'))\n return computeContinuousLegendSize;\n if (t === 'legendCategory')\n return computeCategoryLegendSize;\n if (t.startsWith('slider'))\n return computeSliderSize;\n if (t === 'title')\n return computeTitleSize;\n if (t.startsWith('scrollbar'))\n return computeScrollbarSize;\n return () => { };\n };\n return createCompute()(component, crossSize, crossPadding, position, theme, library);\n}\nfunction computeGroupSize(component, crossSize, crossPadding, position, theme, library) {\n const { children } = component;\n const maxCrossPadding = max(children, (d) => d.crossPadding);\n children.forEach((d) => (d.crossPadding = maxCrossPadding));\n children.forEach((child) => computeComponentSize(child, crossSize, crossPadding, position, theme, library));\n const maxSize = max(children, (d) => d.size);\n component.size = maxSize;\n children.forEach((d) => (d.size = maxSize));\n}\nfunction computeScrollbarSize(component, crossSize, crossPadding, position, theme, library) {\n const { trackSize = 6 } = deepMix({}, theme.scrollbar, component);\n component.size = trackSize;\n}\nfunction computeTitleSize(component, crossSize, crossPadding, position, theme, library) {\n const _a = deepMix({}, theme.title, component), { title, subtitle, spacing = 0 } = _a, style = __rest(_a, [\"title\", \"subtitle\", \"spacing\"]);\n if (title) {\n const titleStyle = subObject(style, 'title');\n const titleBBox = computeLabelSize(title, titleStyle);\n component.size = titleBBox.height;\n }\n if (subtitle) {\n const subtitleStyle = subObject(style, 'subtitle');\n const subtitleBBox = computeLabelSize(subtitle, subtitleStyle);\n component.size += spacing + subtitleBBox.height;\n }\n}\nfunction computeSliderSize(component, crossSize, crossPadding, position, theme, library) {\n const styleOf = () => {\n const { slider } = theme;\n return deepMix({}, slider, component);\n };\n const { trackSize, handleIconSize } = styleOf();\n const size = Math.max(trackSize, handleIconSize * 2.4);\n component.size = size;\n}\nfunction computeAxisSize(component, crossSize, crossPadding, position, theme, library) {\n // If padding is auto, use hide as the labelTransform by default\n // to avoid overlap between labels.\n component.transform = component.transform || [{ type: 'hide' }];\n // Vertical or horizontal.\n const isVertical = position === 'left' || position === 'right';\n // Get styles to be applied.\n const style = styleOf(component, position, theme);\n const { tickLength = 0, labelSpacing = 0, titleSpacing = 0, labelAutoRotate } = style, rest = __rest(style, [\"tickLength\", \"labelSpacing\", \"titleSpacing\", \"labelAutoRotate\"]);\n // Compute Labels.\n const scale = createScale(component, library);\n const labelBBoxes = computeLabelsBBox(rest, scale);\n const paddingTick = tickLength + labelSpacing;\n if (labelBBoxes && labelBBoxes.length) {\n const maxLabelWidth = max(labelBBoxes, (d) => d.width);\n const maxLabelHeight = max(labelBBoxes, (d) => d.height);\n if (isVertical) {\n component.size = maxLabelWidth + paddingTick;\n }\n else {\n const { tickFilter, labelTransform } = component;\n // If the labels can't be placed horizontally, and labelTransform is unset,\n // rotate 90 deg to display them.\n if (overflowX(scale, labelBBoxes, crossSize, crossPadding, tickFilter) &&\n !labelTransform &&\n labelAutoRotate !== false &&\n labelAutoRotate !== null) {\n component.labelTransform = 'rotate(90)';\n component.size = maxLabelWidth + paddingTick;\n }\n else {\n component.size = maxLabelHeight + paddingTick;\n }\n }\n }\n else {\n component.size = tickLength;\n }\n // Compute title.\n const titleBBox = computeTitleBBox(rest);\n if (titleBBox) {\n if (isVertical) {\n component.size += titleSpacing + titleBBox.width;\n }\n else {\n component.size += titleSpacing + titleBBox.height;\n }\n }\n}\nfunction computeContinuousLegendSize(component, crossSize, crossPadding, position, theme, library) {\n // Get styles.\n const styleOf = () => {\n const { legendContinuous } = theme;\n return deepMix({}, legendContinuous, component);\n };\n const _a = styleOf(), { labelSpacing = 0, titleSpacing = 0 } = _a, rest = __rest(_a, [\"labelSpacing\", \"titleSpacing\"]);\n // Vertical or horizontal.\n const isVertical = position === 'left' || position === 'right';\n // Ribbon styles.\n const ribbonStyles = subObject(rest, 'ribbon');\n const { size: ribbonSize } = ribbonStyles;\n const handleIconStyles = subObject(rest, 'handleIcon');\n const { size: handleIconSize } = handleIconStyles;\n const mainSize = Math.max(ribbonSize, handleIconSize * 2.4);\n component.size = mainSize;\n // Compute labels.\n const scale = createScale(component, library);\n const labelBBoxes = computeLabelsBBox(rest, scale);\n if (labelBBoxes) {\n const key = isVertical ? 'width' : 'height';\n const size = max(labelBBoxes, (d) => d[key]);\n component.size += size + labelSpacing;\n }\n // Compute title.\n const titleBBox = computeTitleBBox(rest);\n if (titleBBox) {\n if (isVertical) {\n component.size = Math.max(component.size, titleBBox.width);\n }\n else {\n component.size += titleSpacing + titleBBox.height;\n }\n }\n}\nfunction computeCategoryLegendSize(component, crossSize0, crossPadding, position, theme, library) {\n const styleOf = () => {\n const { legendCategory } = theme;\n const { title } = component;\n const [defaultTitle, specifiedTitle] = Array.isArray(title)\n ? [title, undefined]\n : [undefined, title];\n return deepMix({ title: defaultTitle }, legendCategory, Object.assign(Object.assign({}, component), { title: specifiedTitle }));\n };\n const _a = styleOf(), { itemSpacing, itemMarkerSize, titleSpacing, rowPadding, colPadding, maxCols = Infinity, maxRows = Infinity } = _a, rest = __rest(_a, [\"itemSpacing\", \"itemMarkerSize\", \"titleSpacing\", \"rowPadding\", \"colPadding\", \"maxCols\", \"maxRows\"]);\n const { cols, length } = component;\n const getRows = (rows) => Math.min(rows, maxRows);\n const getCols = (cols) => Math.min(cols, maxCols);\n // Vertical or horizontal.\n const isVertical = position === 'left' || position === 'right';\n const crossSize = length === undefined\n ? crossSize0 + (isVertical ? 0 : crossPadding[0] + crossPadding[1])\n : length;\n // Compute title.\n const titleBBox = computeTitleBBox(rest);\n const scale = createScale(component, library);\n const labelBBoxes = computeLabelsBBox(rest, scale, 'itemLabel');\n const height = Math.max(labelBBoxes[0].height, itemMarkerSize) + rowPadding;\n const widthOf = (w, padding = 0) => itemMarkerSize + w + itemSpacing[0] + padding;\n // Only support grid layout for vertical area.\n const computeVerticalSize = () => {\n let maxSize = -Infinity;\n let pos = 0;\n let cols = 1;\n let rows = 0;\n let maxRows = -Infinity;\n let maxPos = -Infinity;\n const titleHeight = titleBBox ? titleBBox.height : 0;\n const maxHeight = crossSize - titleHeight;\n for (const { width } of labelBBoxes) {\n const w = widthOf(width, colPadding);\n maxSize = Math.max(maxSize, w);\n if (pos + height > maxHeight) {\n cols++;\n maxRows = Math.max(maxRows, rows);\n maxPos = Math.max(maxPos, pos);\n rows = 1;\n pos = height;\n }\n else {\n pos += height;\n rows++;\n }\n }\n if (cols <= 1) {\n maxRows = rows;\n maxPos = pos;\n }\n component.size = maxSize * getCols(cols);\n component.length = maxPos + titleHeight;\n deepMix(component, { cols: getCols(cols), gridRow: maxRows });\n };\n // Horizontal grid layout.\n const computeHorizontalGrid = () => {\n const rows = Math.ceil(labelBBoxes.length / cols);\n const maxWidth = max(labelBBoxes, (d) => widthOf(d.width)) * cols;\n component.size = height * getRows(rows) - rowPadding;\n component.length = Math.min(maxWidth, crossSize);\n };\n // Horizontal flex layout.\n const computeHorizontalFlex = () => {\n let rows = 1;\n let pos = 0;\n let maxPos = -Infinity;\n for (const { width } of labelBBoxes) {\n const w = widthOf(width, colPadding);\n if (pos + w > crossSize) {\n maxPos = Math.max(maxPos, pos);\n pos = w;\n rows++;\n }\n else {\n pos += w;\n }\n }\n if (rows === 1)\n maxPos = pos;\n component.size = height * getRows(rows) - rowPadding;\n component.length = maxPos;\n };\n if (isVertical)\n computeVerticalSize();\n else if (typeof cols === 'number')\n computeHorizontalGrid();\n else\n computeHorizontalFlex();\n // Compute titles.\n if (titleBBox) {\n if (isVertical) {\n component.size = Math.max(component.size, titleBBox.width);\n }\n else {\n component.size += titleSpacing + titleBBox.height;\n }\n }\n}\nexport function createScale(component, library) {\n const [useScale] = useLibrary('scale', library);\n // Init scale, the tickCount of axis has higher priority than scale.\n const { scales, tickCount, tickMethod } = component;\n const scaleOptions = scales.find((d) => d.type !== 'constant' && d.type !== 'identity');\n if (tickCount !== undefined)\n scaleOptions.tickCount = tickCount;\n if (tickMethod !== undefined)\n scaleOptions.tickMethod = tickMethod;\n return useScale(scaleOptions);\n}\nexport function computeLabelsBBox(component, scale, key = 'label') {\n const { labelFormatter, tickFilter, label = true } = component, style = __rest(component, [\"labelFormatter\", \"tickFilter\", \"label\"]);\n if (!label)\n return null;\n // Get labels to be rendered.\n const labels = labelsOf(scale, labelFormatter, tickFilter);\n const labelStyle = subObject(style, key);\n const labelStyles = labels.map((d, i) => Object.fromEntries(Object.entries(labelStyle).map(([key, value]) => [\n key,\n typeof value === 'function' ? value(d, i) : value,\n ])));\n const labelBBoxes = labels.map((d, i) => {\n const normalizeStyle = labelStyles[i];\n return computeLabelSize(d, normalizeStyle);\n });\n // Cache boxes to avoid computed twice.\n // @todo GUI use untransformed bbox, so it can't cache if\n // label.style has transform attributes.\n const hasTransform = labelStyles.some((d) => d.transform);\n if (!hasTransform) {\n const I = labels.map((_, i) => i);\n component.indexBBox = new Map(I.map((i) => [i, [labels[i], labelBBoxes[i]]]));\n }\n return labelBBoxes;\n}\nexport function computeTitleBBox(component) {\n const isFalsy = (x) => x === false || x === null;\n const { title } = component, style = __rest(component, [\"title\"]);\n if (isFalsy(title) || title === undefined)\n return null;\n const titleStyle = subObject(style, 'title');\n const { direction, transform } = titleStyle;\n const titleText = Array.isArray(title) ? title.join(',') : title;\n if (typeof titleText !== 'string')\n return null;\n const titleBBox = computeLabelSize(titleText, Object.assign(Object.assign({}, titleStyle), { transform: transform || (direction === 'vertical' ? 'rotate(-90)' : '') }));\n return titleBBox;\n}\nexport function styleOf(axis, position, theme) {\n const { title } = axis;\n const [defaultTitle, specifiedTitle] = Array.isArray(title)\n ? [title, undefined]\n : [undefined, title];\n const { axis: baseStyle, \n // @ts-ignore\n [`axis${capitalizeFirst(position)}`]: positionStyle, } = theme;\n return deepMix({ title: defaultTitle }, baseStyle, positionStyle, Object.assign(Object.assign({}, axis), { title: specifiedTitle }));\n}\nfunction ticksOf(scale, tickFilter) {\n const ticks = scale.getTicks ? scale.getTicks() : scale.getOptions().domain;\n if (!tickFilter)\n return ticks;\n return ticks.filter(tickFilter);\n}\nfunction labelsOf(scale, labelFormatter, tickFilter) {\n const T = ticksOf(scale, tickFilter);\n const ticks = T.map((d) => (typeof d === 'number' ? prettyNumber(d) : d));\n const formatter = labelFormatter\n ? typeof labelFormatter === 'string'\n ? format(labelFormatter)\n : labelFormatter\n : scale.getFormatter\n ? scale.getFormatter()\n : (d) => `${d}`;\n return ticks.map(formatter);\n}\nfunction offsetOf(scale, d) {\n if (!scale.getBandWidth)\n return 0;\n const offset = scale.getBandWidth(d) / 2;\n return offset;\n}\nfunction overflowX(scale, labelBBoxes, crossSize, crossPadding, tickFilter) {\n // If actual size bigger than container size, overflow.\n const totalSize = sum(labelBBoxes, (d) => d.width);\n if (totalSize > crossSize)\n return true;\n // Clone scale to get visual position for labels.\n const scaleX = scale.clone();\n scaleX.update({ range: [0, crossSize] });\n const ticks = ticksOf(scale, tickFilter);\n const X = ticks.map((d) => scaleX.map(d) + offsetOf(scaleX, d));\n const I = ticks.map((_, i) => i);\n const startX = -crossPadding[0];\n const endX = crossSize + crossPadding[1];\n const extent = (x, bbox) => {\n const { width } = bbox;\n return [x - width / 2, x + width / 2];\n };\n // Collision detection.\n for (let i = 0; i < I.length; i++) {\n const x = X[i];\n const [x0, x1] = extent(x, labelBBoxes[i]);\n // If a label is out of plot area, overflow.\n if (x0 < startX || x1 > endX)\n return true;\n const y = X[i + 1];\n if (y) {\n // If two labels intersect, overflow.\n const [y0] = extent(y, labelBBoxes[i + 1]);\n if (x1 > y0)\n return true;\n }\n }\n return false;\n}\nfunction computeLabelSize(d, style) {\n const shape = normalizeLabel(d);\n const { filter } = style, rest = __rest(style, [\"filter\"]);\n shape.attr(Object.assign(Object.assign({}, rest), { visibility: 'none' }));\n const bbox = shape.getBBox();\n return bbox;\n}\nfunction normalizeLabel(d) {\n if (d instanceof DisplayObject)\n return d;\n return new Text({ style: { text: `${d}` } });\n}\n//# sourceMappingURL=component.js.map","import { ascending, group, max, min, sum } from 'd3-array';\nimport { deepMix } from '@antv/util';\nimport { isParallel, isPolar, isRadar, radiusOf } from '../utils/coordinate';\nimport { capitalizeFirst, defined } from '../utils/helper';\nimport { divide } from '../utils/array';\nimport { camelCase } from '../utils/string';\nimport { computeComponentSize, computeLabelsBBox, computeTitleBBox, createScale, groupComponents, styleOf, } from './component';\nimport { isPolar as isPolarOptions, isRadial as isRadarOptions, } from './coordinate';\nexport function processAxisZ(components) {\n const axisZ = components.find(({ type }) => type === 'axisZ');\n if (axisZ) {\n const axisX = components.find(({ type }) => type === 'axisX');\n axisX.plane = 'xy';\n const axisY = components.find(({ type }) => type === 'axisY');\n axisY.plane = 'xy';\n axisZ.plane = 'yz';\n axisZ.origin = [axisX.bbox.x, axisX.bbox.y, 0];\n axisZ.eulerAngles = [0, -90, 0];\n axisZ.bbox.x = axisX.bbox.x;\n axisZ.bbox.y = axisX.bbox.y;\n components.push(Object.assign(Object.assign({}, axisX), { plane: 'xz', showLabel: false, showTitle: false, origin: [axisX.bbox.x, axisX.bbox.y, 0], eulerAngles: [-90, 0, 0] }));\n components.push(Object.assign(Object.assign({}, axisY), { plane: 'yz', showLabel: false, showTitle: false, origin: [axisY.bbox.x + axisY.bbox.width, axisY.bbox.y, 0], eulerAngles: [0, -90, 0] }));\n components.push(Object.assign(Object.assign({}, axisZ), { plane: 'xz', actualPosition: 'left', showLabel: false, showTitle: false, eulerAngles: [90, -90, 0] }));\n }\n}\nexport function computeLayout(components, options, theme, library) {\n var _a, _b;\n const { width, height, depth, x = 0, y = 0, z = 0, inset = (_a = theme.inset) !== null && _a !== void 0 ? _a : 0, insetLeft = inset, insetTop = inset, insetBottom = inset, insetRight = inset, margin = (_b = theme.margin) !== null && _b !== void 0 ? _b : 0, marginLeft = margin, marginBottom = margin, marginTop = margin, marginRight = margin, padding = theme.padding, paddingBottom = padding, paddingLeft = padding, paddingRight = padding, paddingTop = padding, } = computeInset(components, options, theme, library);\n const MIN_CONTENT_RATIO = 1 / 4;\n const maybeClamp = (viewWidth, paddingLeft, paddingRight, pl0, pr0) => {\n // Only clamp when has marks.\n const { marks } = options;\n if (marks.length === 0)\n return [pl0, pr0];\n // If size of content is enough, skip.\n const contentSize = viewWidth - pl0 - pr0;\n const diff = contentSize - viewWidth * MIN_CONTENT_RATIO;\n if (diff > 0)\n return [pl0, pr0];\n // Shrink start and end size equally.\n const shrinkSize = viewWidth * (1 - MIN_CONTENT_RATIO);\n return [\n paddingLeft === 'auto' ? (shrinkSize * pl0) / (pl0 + pr0) : pl0,\n paddingRight === 'auto' ? (shrinkSize * pr0) / (pl0 + pr0) : pr0,\n ];\n };\n const roughPadding = (padding) => (padding === 'auto' ? 20 : padding !== null && padding !== void 0 ? padding : 20);\n const rpt = roughPadding(paddingTop);\n const rpb = roughPadding(paddingBottom);\n // Compute paddingLeft and paddingRight first to get innerWidth.\n const horizontalPadding = computePadding(components, height - rpt - rpb, [rpt + marginTop, rpb + marginBottom], ['left', 'right'], options, theme, library);\n const { paddingLeft: pl0, paddingRight: pr0 } = horizontalPadding;\n const viewWidth = width - marginLeft - marginRight;\n const [pl, pr] = maybeClamp(viewWidth, paddingLeft, paddingRight, pl0, pr0);\n const iw = viewWidth - pl - pr;\n // Compute paddingBottom and paddingTop based on innerWidth.\n const verticalPadding = computePadding(components, iw, [pl + marginLeft, pr + marginRight], ['bottom', 'top'], options, theme, library);\n const { paddingTop: pt0, paddingBottom: pb0 } = verticalPadding;\n const viewHeight = height - marginBottom - marginTop;\n const [pb, pt] = maybeClamp(viewHeight, paddingBottom, paddingTop, pb0, pt0);\n const ih = viewHeight - pb - pt;\n return {\n width,\n height,\n depth,\n insetLeft,\n insetTop,\n insetBottom,\n insetRight,\n innerWidth: iw,\n innerHeight: ih,\n paddingLeft: pl,\n paddingRight: pr,\n paddingTop: pt,\n paddingBottom: pb,\n marginLeft,\n marginBottom,\n marginTop,\n marginRight,\n x,\n y,\n z,\n };\n}\n// For composite mark with a layout algorithm and without axis,\n// such as worldcloud, circlepack.\nexport function computeRoughPlotSize(options) {\n const { height, width, padding = 0, paddingLeft = padding, paddingRight = padding, paddingTop = padding, paddingBottom = padding, margin = 16, marginLeft = margin, marginRight = margin, marginTop = margin, marginBottom = margin, inset = 0, insetLeft = inset, insetRight = inset, insetTop = inset, insetBottom = inset, } = options;\n // @todo Add this padding to theme.\n // 30 is default size for padding, which defined in runtime.\n const maybeAuto = (padding) => (padding === 'auto' ? 20 : padding);\n const finalWidth = width -\n maybeAuto(paddingLeft) -\n maybeAuto(paddingRight) -\n marginLeft -\n marginRight -\n insetLeft -\n insetRight;\n const finalHeight = height -\n maybeAuto(paddingTop) -\n maybeAuto(paddingBottom) -\n marginTop -\n marginBottom -\n insetTop -\n insetBottom;\n return { width: finalWidth, height: finalHeight };\n}\nfunction computeInset(components, options, theme, library) {\n const { coordinates } = options;\n if (!isPolarOptions(coordinates) && !isRadarOptions(coordinates)) {\n return options;\n }\n // Filter axis.\n const axes = components.filter((d) => typeof d.type === 'string' && d.type.startsWith('axis'));\n if (axes.length === 0)\n return options;\n const styles = axes.map((component) => {\n const key = component.type === 'axisArc' ? 'arc' : 'linear';\n return styleOf(component, key, theme);\n });\n // Compute max labelSpacing.\n const maxLabelSpacing = max(styles, (d) => { var _a; return (_a = d.labelSpacing) !== null && _a !== void 0 ? _a : 0; });\n // Compute labelBBoxes.\n const labelBBoxes = axes\n .flatMap((component, i) => {\n const style = styles[i];\n const scale = createScale(component, library);\n const labels = computeLabelsBBox(style, scale);\n return labels;\n })\n .filter(defined);\n const size = max(labelBBoxes, (d) => d.height) + maxLabelSpacing;\n // Compute titles.\n const titleBBoxes = axes\n .flatMap((_, i) => {\n const style = styles[i];\n return computeTitleBBox(style);\n })\n .filter((d) => d !== null);\n const titleSize = titleBBoxes.length === 0 ? 0 : max(titleBBoxes, (d) => d.height);\n // Update inset.\n const { inset = size, insetLeft = inset, insetBottom = inset, insetTop = inset + titleSize, insetRight = inset, } = options;\n return Object.assign(Object.assign({}, options), { insetLeft, insetBottom, insetTop, insetRight });\n}\n/**\n * @todo Support percentage size(e.g. 50%)\n */\nfunction computePadding(components, crossSize, crossPadding, positions, options, theme, library) {\n const positionComponents = group(components, (d) => d.position);\n const { padding = theme.padding, paddingLeft = padding, paddingRight = padding, paddingBottom = padding, paddingTop = padding, } = options;\n const layout = {\n paddingBottom,\n paddingLeft,\n paddingTop,\n paddingRight,\n };\n for (const position of positions) {\n const key = `padding${capitalizeFirst(camelCase(position))}`;\n const components = positionComponents.get(position) || [];\n const value = layout[key];\n const defaultSizeOf = (d) => {\n if (d.size === undefined)\n d.size = d.defaultSize;\n };\n const sizeOf = (d) => {\n if (d.type === 'group') {\n d.children.forEach(defaultSizeOf);\n d.size = max(d.children, (d) => d.size);\n }\n else {\n d.size = d.defaultSize;\n }\n };\n const autoSizeOf = (d) => {\n if (d.size)\n return;\n if (value !== 'auto')\n sizeOf(d);\n else {\n // Compute component size dynamically.\n computeComponentSize(d, crossSize, crossPadding, position, theme, library);\n defaultSizeOf(d);\n }\n };\n const maybeHide = (d) => {\n if (!d.type.startsWith('axis'))\n return;\n if (d.labelAutoHide === undefined)\n d.labelAutoHide = true;\n };\n const isHorizontal = position === 'bottom' || position === 'top';\n // !!!Note\n // Mute axis component padding.\n // The first axis do not has padding.\n const minOrder = min(components, (d) => d.order);\n const axes = components.filter((d) => d.type.startsWith('axis') && d.order == minOrder);\n if (axes.length)\n axes[0].crossPadding = 0;\n // Specified padding.\n if (typeof value === 'number') {\n components.forEach(defaultSizeOf);\n components.forEach(maybeHide);\n }\n else {\n // Compute padding dynamically.\n if (components.length === 0) {\n layout[key] = 0;\n }\n else {\n const size = isHorizontal\n ? crossSize + crossPadding[0] + crossPadding[1]\n : crossSize;\n const grouped = groupComponents(components, size);\n grouped.forEach(autoSizeOf);\n const totalSize = grouped.reduce((sum, { size, crossPadding = 12 }) => sum + size + crossPadding, 0);\n layout[key] = totalSize;\n }\n }\n }\n return layout;\n}\nexport function placeComponents(components, coordinate, layout) {\n // Group components by plane & position.\n const positionComponents = group(components, (d) => `${d.plane || 'xy'}-${d.position}`);\n const { paddingLeft, paddingRight, paddingTop, paddingBottom, marginLeft, marginTop, marginBottom, marginRight, innerHeight, innerWidth, insetBottom, insetLeft, insetRight, insetTop, height, width, depth, } = layout;\n const planes = {\n xy: createSection({\n width,\n height,\n paddingLeft,\n paddingRight,\n paddingTop,\n paddingBottom,\n marginLeft,\n marginTop,\n marginBottom,\n marginRight,\n innerHeight,\n innerWidth,\n insetBottom,\n insetLeft,\n insetRight,\n insetTop,\n }),\n yz: createSection({\n width: depth,\n height: height,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n paddingBottom: 0,\n marginLeft: 0,\n marginTop: 0,\n marginBottom: 0,\n marginRight: 0,\n innerWidth: depth,\n innerHeight: height,\n insetBottom: 0,\n insetLeft: 0,\n insetRight: 0,\n insetTop: 0,\n }),\n xz: createSection({\n width,\n height: depth,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n paddingBottom: 0,\n marginLeft: 0,\n marginTop: 0,\n marginBottom: 0,\n marginRight: 0,\n innerWidth: width,\n innerHeight: depth,\n insetBottom: 0,\n insetLeft: 0,\n insetRight: 0,\n insetTop: 0,\n }),\n };\n for (const [key, components] of positionComponents.entries()) {\n const [plane, position] = key.split('-');\n const area = planes[plane][position];\n /**\n * @description non-entity components: axis in the center, inner, outer, component in the center\n * @description entity components: other components\n * @description no volume components take up no extra space\n */\n const [nonEntityComponents, entityComponents] = divide(components, (component) => {\n if (typeof component.type !== 'string')\n return false;\n if (position === 'center')\n return true;\n if (component.type.startsWith('axis') &&\n ['inner', 'outer'].includes(position)) {\n return true;\n }\n return false;\n });\n if (nonEntityComponents.length) {\n placeNonEntityComponents(nonEntityComponents, coordinate, area, position);\n }\n if (entityComponents.length) {\n placePaddingArea(components, coordinate, area);\n }\n }\n}\nfunction createSection({ width, height, paddingLeft, paddingRight, paddingTop, paddingBottom, marginLeft, marginTop, marginBottom, marginRight, innerHeight, innerWidth, insetBottom, insetLeft, insetRight, insetTop, }) {\n const pl = paddingLeft + marginLeft;\n const pt = paddingTop + marginTop;\n const pr = paddingRight + marginRight;\n const pb = paddingBottom + marginBottom;\n const plotWidth = width - marginLeft - marginRight;\n const centerSection = [\n pl + insetLeft,\n pt + insetTop,\n innerWidth - insetLeft - insetRight,\n innerHeight - insetTop - insetBottom,\n 'center',\n null,\n null,\n ];\n const xySection = {\n top: [\n pl,\n 0,\n innerWidth,\n pt,\n 'vertical',\n true,\n ascending,\n marginLeft,\n plotWidth,\n ],\n right: [width - pr, pt, pr, innerHeight, 'horizontal', false, ascending],\n bottom: [\n pl,\n height - pb,\n innerWidth,\n pb,\n 'vertical',\n false,\n ascending,\n marginLeft,\n plotWidth,\n ],\n left: [0, pt, pl, innerHeight, 'horizontal', true, ascending],\n 'top-left': [pl, 0, innerWidth, pt, 'vertical', true, ascending],\n 'top-right': [pl, 0, innerWidth, pt, 'vertical', true, ascending],\n 'bottom-left': [\n pl,\n height - pb,\n innerWidth,\n pb,\n 'vertical',\n false,\n ascending,\n ],\n 'bottom-right': [\n pl,\n height - pb,\n innerWidth,\n pb,\n 'vertical',\n false,\n ascending,\n ],\n center: centerSection,\n inner: centerSection,\n outer: centerSection,\n };\n return xySection;\n}\nfunction placeNonEntityComponents(components, coordinate, area, position) {\n const [axisComponents, nonAxisComponents] = divide(components, (component) => {\n if (typeof component.type === 'string' &&\n component.type.startsWith('axis')) {\n return true;\n }\n return false;\n });\n placeNonEntityAxis(axisComponents, coordinate, area, position);\n // in current stage, only legend component which located in the center can be placed\n placeCenter(nonAxisComponents, coordinate, area);\n}\nfunction placeNonEntityAxis(components, coordinate, area, position) {\n if (position === 'center') {\n if (isRadar(coordinate)) {\n placeAxisRadar(components, coordinate, area, position);\n }\n else if (isPolar(coordinate)) {\n placeArcLinear(components, coordinate, area);\n }\n else if (isParallel(coordinate)) {\n placeAxisParallel(components, coordinate, area, components[0].orientation);\n }\n }\n else if (position === 'inner') {\n placeAxisArcInner(components, coordinate, area);\n }\n else if (position === 'outer') {\n placeAxisArcOuter(components, coordinate, area);\n }\n}\nfunction placeAxisArcInner(components, coordinate, area) {\n const [x, y, , height] = area;\n const [cx, cy] = coordinate.getCenter();\n const [innerRadius] = radiusOf(coordinate);\n const r = height / 2;\n const size = innerRadius * r;\n const x0 = cx - size;\n const y0 = cy - size;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n component.bbox = {\n x: x + x0,\n y: y + y0,\n width: size * 2,\n height: size * 2,\n };\n }\n}\nfunction placeAxisArcOuter(components, coordinate, area) {\n const [x, y, width, height] = area;\n for (const component of components) {\n component.bbox = { x, y, width, height };\n }\n}\n/**\n * @example arcX, arcY, axisLinear with angle\n */\nfunction placeArcLinear(components, coordinate, area) {\n const [x, y, width, height] = area;\n for (const component of components) {\n component.bbox = { x: x, y, width, height };\n }\n}\nfunction placeAxisParallel(components, coordinate, area, orientation) {\n if (orientation === 'horizontal') {\n placeAxisParallelHorizontal(components, coordinate, area);\n }\n else if (orientation === 'vertical') {\n placeAxisParallelVertical(components, coordinate, area);\n }\n}\nfunction placeAxisParallelVertical(components, coordinate, area) {\n const [x, y, , height] = area;\n // Create a high dimension vector and map to a list of two-dimension points.\n // [0, 0, 0] -> [x0, 0, x1, 0, x2, 0]\n const vector = new Array(components.length).fill(0);\n const points = coordinate.map(vector);\n // Extract x of each points.\n // [x0, 0, x1, 0, x2, 0] -> [x0, x1, x2]\n const X = points.filter((_, i) => i % 2 === 0).map((d) => d + x);\n // Place each axis by coordinate in parallel coordinate.\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n const x = X[i];\n const width = X[i + 1] - x;\n component.bbox = { x, y, width, height };\n }\n}\nfunction placeAxisParallelHorizontal(components, coordinate, area) {\n const [x, y, width] = area;\n // Create a high dimension vector and map to a list of two-dimension points.\n // [0, 0, 0] -> [height, y0, height, y1, height, y2]\n const vector = new Array(components.length).fill(0);\n const points = coordinate.map(vector);\n // Extract y of each points.\n // [x0, 0, x1, 0, x2, 0] -> [x0, x1, x2]\n const Y = points.filter((_, i) => i % 2 === 1).map((d) => d + y);\n // Place each axis by coordinate in parallel coordinate.\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n const y = Y[i];\n const height = Y[i + 1] - y;\n component.bbox = { x, y, width, height };\n }\n}\nfunction placeAxisRadar(components, coordinate, area, position) {\n const [x, y, width, height] = area;\n for (const component of components) {\n component.bbox = { x, y, width, height };\n component.radar = {\n index: components.indexOf(component),\n count: components.length,\n };\n }\n}\nfunction placePaddingArea(components, coordinate, area) {\n const [x, y, width, height, direction, reverse, comparator, minX, totalSize] = area;\n const [mainStartKey, mainStartValue, crossStartKey, crossStartValue, mainSizeKey, mainSizeValue, crossSizeKey, crossSizeValue,] = direction === 'vertical'\n ? ['y', y, 'x', x, 'height', height, 'width', width]\n : ['x', x, 'y', y, 'width', width, 'height', height];\n // Sort components by order.\n // The smaller the order, the closer to center.\n components.sort((a, b) => comparator === null || comparator === void 0 ? void 0 : comparator(a.order, b.order));\n const isLarge = (type) => type === 'title' || type === 'group' || type.startsWith('legend');\n const crossSizeOf = (type, small, bigger) => {\n if (bigger === undefined)\n return small;\n if (isLarge(type))\n return bigger;\n return small;\n };\n const crossStartOf = (type, x, minX) => {\n if (minX === undefined)\n return x;\n if (isLarge(type))\n return minX;\n return x;\n };\n const startValue = reverse ? mainStartValue + mainSizeValue : mainStartValue;\n for (let i = 0, start = startValue; i < components.length; i++) {\n const component = components[i];\n const { crossPadding = 0, type } = component;\n const { size } = component;\n component.bbox = {\n [mainStartKey]: reverse\n ? start - size - crossPadding\n : start + crossPadding,\n [crossStartKey]: crossStartOf(type, crossStartValue, minX),\n [mainSizeKey]: size,\n [crossSizeKey]: crossSizeOf(type, crossSizeValue, totalSize),\n };\n start += (size + crossPadding) * (reverse ? -1 : 1);\n }\n // Place group components.\n const groupComponents = components.filter((d) => d.type === 'group');\n for (const group of groupComponents) {\n const { bbox, children } = group;\n const size = bbox[crossSizeKey];\n const step = size / children.length;\n const justifyContent = children.reduce((j, child) => {\n var _a;\n const j0 = (_a = child.layout) === null || _a === void 0 ? void 0 : _a.justifyContent;\n return j0 ? j0 : j;\n }, 'flex-start');\n const L = children.map((d, i) => {\n const { length = step, padding = 0 } = d;\n return length + (i === children.length - 1 ? 0 : padding);\n });\n const totalLength = sum(L);\n const diff = size - totalLength;\n const offset = justifyContent === 'flex-start'\n ? 0\n : justifyContent === 'center'\n ? diff / 2\n : diff;\n for (let i = 0, start = bbox[crossStartKey] + offset; i < children.length; i++) {\n const component = children[i];\n const { padding = 0 } = component;\n const interval = i === children.length - 1 ? 0 : padding;\n component.bbox = {\n [mainSizeKey]: bbox[mainSizeKey],\n [mainStartKey]: bbox[mainStartKey],\n [crossStartKey]: start,\n [crossSizeKey]: L[i] - interval,\n };\n deepMix(component, { layout: { justifyContent } });\n start += L[i];\n }\n }\n}\n/**\n * @example legend in the center of radial or polar system\n */\nfunction placeCenter(components, coordinate, area) {\n if (components.length === 0)\n return;\n const [x, y, width, height] = area;\n const [innerRadius] = radiusOf(coordinate);\n const r = ((height / 2) * innerRadius) / Math.sqrt(2);\n const cx = x + width / 2;\n const cy = y + height / 2;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n component.bbox = { x: cx - r, y: cy - r, width: r * 2, height: r * 2 };\n }\n}\n//# sourceMappingURL=layout.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix, isNumber } from '@antv/util';\nimport { format } from 'd3-format';\nimport { indexOf, mapObject } from '../utils/array';\nimport { composeAsync, defined, isStrictObject, isUnset, } from '../utils/helper';\nimport { isFullTooltip } from '../utils/mark';\nimport { useLibrary } from './library';\nimport { createColumnOf } from './mark';\nimport { isPosition } from './scale';\n// @todo Add more defaults.\nexport function applyDefaults(I, mark, context) {\n const { encode = {}, scale = {}, transform = [] } = mark, rest = __rest(mark, [\"encode\", \"scale\", \"transform\"]);\n return [I, Object.assign(Object.assign({}, rest), { encode, scale, transform })];\n}\nexport function applyDataTransform(I, mark, context) {\n return __awaiter(this, void 0, void 0, function* () {\n const { library } = context;\n const { data } = mark;\n const [useData] = useLibrary('data', library);\n const descriptor = normalizedDataSource(data);\n const { transform: T = [] } = descriptor, connector = __rest(descriptor, [\"transform\"]);\n const transform = [connector, ...T];\n const transformFunctions = transform.map(useData);\n const transformedData = yield composeAsync(transformFunctions)(data);\n // Maintain the consistency of shape between input and output data.\n // If the shape of raw data is like { value: any }\n // and the returned transformedData is Object,\n // returns the wrapped data: { value: transformedData },\n // otherwise returns the processed tabular data.\n const newData = data && !Array.isArray(data) && !Array.isArray(transformedData)\n ? { value: transformedData }\n : transformedData;\n return [\n Array.isArray(transformedData) ? indexOf(transformedData) : [],\n Object.assign(Object.assign({}, mark), { data: newData }),\n ];\n });\n}\nexport function flatEncode(I, mark, context) {\n const { encode } = mark;\n if (!encode)\n return [I, mark];\n const flattenEncode = {};\n for (const [key, value] of Object.entries(encode)) {\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const name = `${key}${i === 0 ? '' : i}`;\n flattenEncode[name] = value[i];\n }\n }\n else {\n flattenEncode[key] = value;\n }\n }\n return [I, Object.assign(Object.assign({}, mark), { encode: flattenEncode })];\n}\nexport function inferChannelsType(I, mark, context) {\n const { encode, data } = mark;\n if (!encode)\n return [I, mark];\n const typedEncode = mapObject(encode, (channel) => {\n if (isTypedChannel(channel))\n return channel;\n const type = inferChannelType(data, channel);\n return { type, value: channel };\n });\n return [I, Object.assign(Object.assign({}, mark), { encode: typedEncode })];\n}\nexport function maybeVisualChannel(I, mark, context) {\n const { encode } = mark;\n if (!encode)\n return [I, mark];\n const newEncode = mapObject(encode, (channel, name) => {\n const { type } = channel;\n if (type !== 'constant' || isPosition(name))\n return channel;\n return Object.assign(Object.assign({}, channel), { constant: true });\n });\n return [I, Object.assign(Object.assign({}, mark), { encode: newEncode })];\n}\nexport function extractColumns(I, mark, context) {\n const { encode, data } = mark;\n if (!encode)\n return [I, mark];\n const { library } = context;\n const columnOf = createColumnOf(library);\n const valuedEncode = mapObject(encode, (channel) => columnOf(data, channel));\n return [I, Object.assign(Object.assign({}, mark), { encode: valuedEncode })];\n}\n/**\n * Normalize mark.tooltip to {title, items}.\n */\nexport function normalizeTooltip(I, mark, context) {\n const { tooltip = {} } = mark;\n if (isUnset(tooltip))\n return [I, mark];\n if (Array.isArray(tooltip)) {\n return [I, Object.assign(Object.assign({}, mark), { tooltip: { items: tooltip } })];\n }\n if (isStrictObject(tooltip) && isFullTooltip(tooltip)) {\n return [I, Object.assign(Object.assign({}, mark), { tooltip })];\n }\n return [I, Object.assign(Object.assign({}, mark), { tooltip: { items: [tooltip] } })];\n}\nexport function extractTooltip(I, mark, context) {\n const { data, encode, tooltip = {} } = mark;\n if (isUnset(tooltip))\n return [I, mark];\n const valueOf = (item) => {\n if (!item)\n return item;\n if (typeof item === 'string') {\n return I.map((i) => ({ name: item, value: data[i][item] }));\n }\n if (isStrictObject(item)) {\n const { field, channel, color, name = field, valueFormatter = (d) => d, } = item;\n // Support d3-format.\n const normalizedValueFormatter = typeof valueFormatter === 'string'\n ? format(valueFormatter)\n : valueFormatter;\n // Field name.\n const definedChannel = channel && encode[channel];\n const channelField = definedChannel && encode[channel].field;\n const name1 = name || channelField || channel;\n const values = [];\n for (const i of I) {\n const value1 = field\n ? data[i][field]\n : definedChannel\n ? encode[channel].value[i]\n : null;\n values[i] = {\n name: name1,\n color,\n value: normalizedValueFormatter(value1),\n };\n }\n return values;\n }\n if (typeof item === 'function') {\n const values = [];\n for (const i of I) {\n const v = item(data[i], i, data, encode);\n if (isStrictObject(v))\n values[i] = v;\n else\n values[i] = { value: v };\n }\n return values;\n }\n return item;\n };\n const { title, items = [] } = tooltip, rest = __rest(tooltip, [\"title\", \"items\"]);\n const newTooltip = Object.assign({ title: valueOf(title), items: Array.isArray(items) ? items.map(valueOf) : [] }, rest);\n return [I, Object.assign(Object.assign({}, mark), { tooltip: newTooltip })];\n}\nexport function maybeArrayField(I, mark, context) {\n const { encode } = mark, rest = __rest(mark, [\"encode\"]);\n if (!encode)\n return [I, mark];\n const columns = Object.entries(encode);\n const arrayColumns = columns\n .filter(([, channel]) => {\n const { value: V } = channel;\n return Array.isArray(V[0]);\n })\n .flatMap(([key, V]) => {\n const columns = [[key, new Array(I.length).fill(undefined)]];\n const { value: rows } = V, rest = __rest(V, [\"value\"]);\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n if (Array.isArray(row)) {\n for (let j = 0; j < row.length; j++) {\n const column = columns[j] || [\n `${key}${j}`,\n new Array(I).fill(undefined),\n ];\n column[1][i] = row[j];\n columns[j] = column;\n }\n }\n }\n return columns.map(([key, value]) => [\n key,\n Object.assign({ type: 'column', value }, rest),\n ]);\n });\n const newEncode = Object.fromEntries([...columns, ...arrayColumns]);\n return [I, Object.assign(Object.assign({}, rest), { encode: newEncode })];\n}\nexport function addGuideToScale(I, mark, context) {\n const { axis = {}, legend = {}, slider = {}, scrollbar = {} } = mark;\n const normalize = (guide, channel) => {\n if (typeof guide === 'boolean')\n return guide ? {} : null;\n const eachGuide = guide[channel];\n return eachGuide === undefined || eachGuide ? eachGuide : null;\n };\n const axisChannels = typeof axis === 'object'\n ? Array.from(new Set(['x', 'y', ...Object.keys(axis)]))\n : ['x', 'y'];\n deepMix(mark, {\n scale: Object.assign(Object.assign({}, Object.fromEntries(axisChannels.map((channel) => {\n const scrollbarOptions = normalize(scrollbar, channel);\n return [\n channel,\n Object.assign({ guide: normalize(axis, channel), slider: normalize(slider, channel), scrollbar: scrollbarOptions }, (scrollbarOptions && {\n ratio: scrollbarOptions.ratio === undefined\n ? 0.5\n : scrollbarOptions.ratio,\n })),\n ];\n }))), { color: { guide: normalize(legend, 'color') }, size: { guide: normalize(legend, 'size') }, shape: { guide: normalize(legend, 'shape') }, \n // fixme: opacity is conflict with DisplayObject.opacity\n // to be confirm.\n opacity: { guide: normalize(legend, 'opacity') } }),\n });\n return [I, mark];\n}\nexport function maybeNonAnimate(I, mark, context) {\n const { animate } = mark;\n if (animate || animate === undefined)\n return [I, mark];\n deepMix(mark, {\n animate: {\n enter: { type: null },\n exit: { type: null },\n update: { type: null },\n },\n });\n return [I, mark];\n}\nfunction isTypedChannel(channel) {\n if (typeof channel !== 'object' ||\n channel instanceof Date ||\n channel === null) {\n return false;\n }\n const { type } = channel;\n return defined(type);\n}\nfunction inferChannelType(data, channel) {\n if (typeof channel === 'function')\n return 'transform';\n if (typeof channel === 'string' && isField(data, channel))\n return 'field';\n return 'constant';\n}\nfunction isField(data, value) {\n if (!Array.isArray(data))\n return false;\n return data.some((d) => d[value] !== undefined);\n}\nfunction normalizedDataSource(data) {\n // Liquid、Gauge need number data.\n if (isNumber(data))\n return { type: 'inline', value: data };\n // Return null as a placeholder.\n if (!data)\n return { type: 'inline', value: null };\n if (Array.isArray(data))\n return { type: 'inline', value: data };\n const { type = 'inline' } = data, rest = __rest(data, [\"type\"]);\n return Object.assign(Object.assign({}, rest), { type });\n}\n//# sourceMappingURL=transform.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { rollups } from 'd3-array';\nimport { defined } from '../utils/helper';\nimport { useLibrary } from './library';\nimport { applyDefaults, applyDataTransform, extractColumns, flatEncode, inferChannelsType, maybeArrayField, maybeVisualChannel, addGuideToScale, maybeNonAnimate, normalizeTooltip, extractTooltip, } from './transform';\nexport function initializeMark(partialMark, partialProps, library) {\n return __awaiter(this, void 0, void 0, function* () {\n // Apply transform to mark to derive indices, data, encode, etc,.\n const context = { library };\n const [I, transformedMark] = yield applyMarkTransform(partialMark, partialProps, context);\n const { encode, scale, data, tooltip } = transformedMark;\n // Skip mark with non-tabular data. Do not skip empty\n // data, they are useful for facet to display axes.\n if (Array.isArray(data) === false) {\n return null;\n }\n // Group non-independent channels with same prefix, such as x1, x2 => x.\n // For independent channels, dot not group them, such as position1, position2.\n const { channels: channelDescriptors } = partialProps;\n const nameChannels = rollups(Object.entries(encode).filter(([, value]) => defined(value)), (values) => values.map(([key, options]) => (Object.assign({ name: key }, options))), ([key]) => {\n var _a;\n const prefix = (_a = /([^\\d]+)\\d*$/.exec(key)) === null || _a === void 0 ? void 0 : _a[1];\n const descriptor = channelDescriptors.find((d) => d.name === prefix);\n if (descriptor === null || descriptor === void 0 ? void 0 : descriptor.independent)\n return key;\n return prefix;\n });\n // Check required channels and initialize scale options for each channel.\n const channels = channelDescriptors\n .filter((descriptor) => {\n const { name, required } = descriptor;\n if (nameChannels.find(([d]) => d === name))\n return true;\n if (required)\n throw new Error(`Missing encoding for channel: ${name}.`);\n return false;\n })\n .flatMap((descriptor) => {\n const { name, scale: scaleType, scaleKey, range, quantitative, ordinal, } = descriptor;\n const valuesArray = nameChannels.filter(([channel]) => channel.startsWith(name));\n return valuesArray.map(([channel, values], i) => {\n const visual = values.some((d) => d.visual);\n const constant = values.some((d) => d.constant);\n const _a = scale[channel] || {}, { independent = false, \n // Use channel name as default scale key.\n key = scaleKey || channel, \n // Visual channel use identity scale.\n type = constant ? 'constant' : visual ? 'identity' : scaleType } = _a, scaleOptions = __rest(_a, [\"independent\", \"key\", \"type\"]);\n // For constant scale, infer range from data.\n const isConstant = type === 'constant';\n const finalRange = isConstant ? undefined : range;\n return {\n name: channel,\n values,\n // Generate a unique key for independent channel,\n // which will not group with any other channels.\n scaleKey: independent || isConstant ? Symbol('independent') : key,\n scale: Object.assign(Object.assign({ type, range: finalRange }, scaleOptions), { quantitative,\n ordinal }),\n };\n });\n });\n return [transformedMark, Object.assign(Object.assign({}, partialProps), { index: I, channels, tooltip })];\n });\n}\nexport function createColumnOf(library) {\n const [useEncode] = useLibrary('encode', library);\n return (data, encode) => {\n if (encode === undefined)\n return null;\n if (data === undefined)\n return null;\n return Object.assign(Object.assign({}, encode), { type: 'column', value: useEncode(encode)(data), field: fieldOf(encode) });\n };\n}\nfunction applyMarkTransform(mark, props, context) {\n return __awaiter(this, void 0, void 0, function* () {\n const { library } = context;\n const [useTransform] = useLibrary('transform', library);\n const { preInference = [], postInference = [] } = props;\n const { transform = [] } = mark;\n const transforms = [\n applyDefaults,\n applyDataTransform,\n flatEncode,\n inferChannelsType,\n maybeVisualChannel,\n extractColumns,\n maybeArrayField,\n maybeNonAnimate,\n addGuideToScale,\n normalizeTooltip,\n ...preInference.map(useTransform),\n ...transform.map(useTransform),\n ...postInference.map(useTransform),\n extractTooltip,\n ];\n let index = [];\n let transformedMark = mark;\n for (const t of transforms) {\n [index, transformedMark] = yield t(index, transformedMark, context);\n }\n return [index, transformedMark];\n });\n}\nfunction fieldOf(encode) {\n const { type, value } = encode;\n if (type === 'field' && typeof value === 'string')\n return value;\n return null;\n}\n//# sourceMappingURL=mark.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Rect } from '@antv/g';\nimport { deepMix, upperFirst, isArray } from '@antv/util';\nimport { group, groups } from 'd3-array';\nimport { format } from 'd3-format';\nimport { mapObject } from '../utils/array';\nimport { ChartEvent } from '../utils/event';\nimport { appendTransform, compose, copyAttributes, defined, error, maybeSubObject, subObject, useMemo, } from '../utils/helper';\nimport { select, Selection } from '../utils/selection';\nimport { groupComponents, inferComponent, normalizeComponents, renderComponent, } from './component';\nimport { AREA_CLASS_NAME, COMPONENT_CLASS_NAME, ELEMENT_CLASS_NAME, LABEL_CLASS_NAME, LABEL_LAYER_CLASS_NAME, MAIN_LAYER_CLASS_NAME, PLOT_CLASS_NAME, VIEW_CLASS_NAME, } from './constant';\nimport { coordinate2Transform, createCoordinate } from './coordinate';\nimport { computeLayout, computeRoughPlotSize, placeComponents, processAxisZ, } from './layout';\nimport { documentOf, useLibrary } from './library';\nimport { initializeMark } from './mark';\nimport { applyScale, assignScale, collectScales, inferScale, syncFacetsScales, useRelationScale, } from './scale';\nimport { applyDataTransform } from './transform';\nexport function plot(options, selection, library, context) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const [useComposition] = useLibrary('composition', library);\n const [useInteraction] = useLibrary('interaction', library);\n // Some helper functions.\n const marks = new Set(Object.keys(library)\n .map((d) => { var _a; return (_a = /mark\\.(.*)/.exec(d)) === null || _a === void 0 ? void 0 : _a[1]; })\n .filter(defined));\n const staticMarks = new Set(Object.keys(library)\n .map((d) => { var _a; return (_a = /component\\.(.*)/.exec(d)) === null || _a === void 0 ? void 0 : _a[1]; })\n .filter(defined));\n const typeOf = (node) => {\n const { type } = node;\n if (typeof type === 'function') {\n // @ts-ignore\n const { props = {} } = type;\n const { composite = true } = props;\n if (composite)\n return 'mark';\n }\n if (typeof type !== 'string')\n return type;\n if (marks.has(type) || staticMarks.has(type))\n return 'mark';\n return type;\n };\n const isMark = (node) => typeOf(node) === 'mark';\n const isStandardView = (node) => typeOf(node) === 'standardView';\n const isStaticMark = (node) => {\n const { type } = node;\n if (typeof type !== 'string')\n return false;\n if (staticMarks.has(type))\n return true;\n return false;\n };\n const transform = (node) => {\n if (isStandardView(node))\n return [node];\n const type = typeOf(node);\n const composition = useComposition({ type, static: isStaticMark(node) });\n return composition(node);\n };\n // Some temporary variables help parse the view tree.\n const views = [];\n const viewNode = new Map();\n const nodeState = new Map();\n const discovered = [options];\n const nodeGenerators = [];\n while (discovered.length) {\n const node = discovered.shift();\n if (isStandardView(node)) {\n // Initialize view to get data to be visualized. If the marks\n // of the view have already been initialized (facet view),\n // initialize the view based on the initialized mark states,\n // otherwise initialize it from beginning.\n const state = nodeState.get(node);\n const [view, children] = state\n ? initializeState(state, node, library)\n : yield initializeView(node, library);\n viewNode.set(view, node);\n views.push(view);\n // Transform children, they will be transformed into\n // standardView if they are mark or view node.\n const transformedNodes = children\n .flatMap(transform)\n .map((d) => coordinate2Transform(d, library));\n discovered.push(...transformedNodes);\n // Only StandardView can be treated as facet and it\n // should sync position scales among facets normally.\n if (transformedNodes.every(isStandardView)) {\n const states = yield Promise.all(transformedNodes.map((d) => initializeMarks(d, library)));\n // Note!!!\n // This will mutate scales for marks.\n syncFacetsScales(states);\n for (let i = 0; i < transformedNodes.length; i++) {\n const nodeT = transformedNodes[i];\n const state = states[i];\n nodeState.set(nodeT, state);\n }\n }\n }\n else {\n // Apply transform to get data in advance for non-mark composition\n // node, which makes sure that composition node can preprocess the\n // data to produce more nodes based on it.\n const n = isMark(node) ? node : yield applyTransform(node, library);\n const N = transform(n);\n if (Array.isArray(N))\n discovered.push(...N);\n else if (typeof N === 'function')\n nodeGenerators.push(N());\n }\n }\n context.emitter.emit(ChartEvent.BEFORE_PAINT);\n // Plot chart.\n const enterContainer = new Map();\n const updateContainer = new Map();\n const transitions = [];\n selection\n .selectAll(className(VIEW_CLASS_NAME))\n .data(views, (d) => d.key)\n .join((enter) => enter\n .append('g')\n .attr('className', VIEW_CLASS_NAME)\n .attr('id', (view) => view.key)\n .call(applyTranslate)\n .each(function (view, i, element) {\n plotView(view, select(element), transitions, library, context);\n enterContainer.set(view, element);\n }), (update) => update.call(applyTranslate).each(function (view, i, element) {\n plotView(view, select(element), transitions, library, context);\n updateContainer.set(view, element);\n }), (exit) => exit\n .each(function (d, i, element) {\n // Remove existed interactions.\n const interactions = element['nameInteraction'].values();\n for (const interaction of interactions) {\n interaction.destroy();\n }\n })\n .remove());\n // Apply interactions.\n const viewInstanceof = (viewContainer, updateInteractions, oldStore) => {\n return Array.from(viewContainer.entries()).map(([view, container]) => {\n // Index state by component or interaction name,\n // such as legend, scrollbar, brushFilter.\n // Each state transform options to another options.\n const store = oldStore || new Map();\n const setState = (key, reducer = (x) => x) => store.set(key, reducer);\n const options = viewNode.get(view);\n const update = createUpdateView(select(container), options, library, context);\n return {\n view,\n container,\n options,\n setState,\n update: (from, updateTypes) => __awaiter(this, void 0, void 0, function* () {\n // Apply all state functions to get new options.\n const reducer = compose(Array.from(store.values()));\n const newOptions = reducer(options);\n return yield update(newOptions, from, () => {\n if (isArray(updateTypes)) {\n updateInteractions(viewContainer, updateTypes, store);\n }\n });\n }),\n };\n });\n };\n const updateInteractions = (container = updateContainer, updateType, oldStore) => {\n var _a;\n // Interactions for update views.\n const updateViewInstances = viewInstanceof(container, updateInteractions, oldStore);\n for (const target of updateViewInstances) {\n const { options, container } = target;\n const nameInteraction = container['nameInteraction'];\n let typeOptions = inferInteraction(options);\n if (updateType) {\n typeOptions = typeOptions.filter((v) => updateType.includes(v[0]));\n }\n for (const typeOption of typeOptions) {\n const [type, option] = typeOption;\n // Remove interaction for existed views.\n const prevInteraction = nameInteraction.get(type);\n if (prevInteraction)\n (_a = prevInteraction.destroy) === null || _a === void 0 ? void 0 : _a.call(prevInteraction);\n // Apply new interaction.\n if (option) {\n const interaction = useThemeInteraction(target.view, type, option, useInteraction);\n const destroy = interaction(target, updateViewInstances, context.emitter);\n nameInteraction.set(type, { destroy });\n }\n }\n }\n };\n // Interactions for enter views.\n const enterViewInstances = viewInstanceof(enterContainer, updateInteractions);\n for (const target of enterViewInstances) {\n const { options } = target;\n // A Map index interaction by interaction name.\n const nameInteraction = new Map();\n target.container['nameInteraction'] = nameInteraction;\n // Apply interactions.\n for (const typeOption of inferInteraction(options)) {\n const [type, option] = typeOption;\n if (option) {\n const interaction = useThemeInteraction(target.view, type, option, useInteraction);\n const destroy = interaction(target, enterViewInstances, context.emitter);\n nameInteraction.set(type, { destroy });\n }\n }\n }\n updateInteractions();\n // Author animations.\n const { width, height } = options;\n const keyframes = [];\n for (const nodeGenerator of nodeGenerators) {\n // Delay the rendering of animation keyframe. Different animation\n // created by different nodeGenerator will play in the same time.\n // eslint-disable-next-line no-async-promise-executor\n const keyframe = new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n for (const node of nodeGenerator) {\n const sizedNode = Object.assign({ width, height }, node);\n yield plot(sizedNode, selection, library, context);\n }\n resolve();\n }));\n keyframes.push(keyframe);\n }\n context.views = views;\n // Clear and update animation.\n (_a = context.animations) === null || _a === void 0 ? void 0 : _a.forEach((animation) => animation === null || animation === void 0 ? void 0 : animation.cancel());\n context.animations = transitions;\n context.emitter.emit(ChartEvent.AFTER_PAINT);\n // Note!!!\n // The returned promise will never resolved if one of nodeGenerator\n // never stop to yield node, which may created by a keyframe composition\n // with iteration count set to infinite.\n const finished = transitions\n .filter(defined)\n .map(cancel)\n .map((d) => d.finished);\n return Promise.all([...finished, ...keyframes]);\n });\n}\nfunction applyTranslate(selection) {\n selection.style('transform', (d) => `translate(${d.layout.x}, ${d.layout.y})`);\n}\nfunction definedInteraction(library) {\n const [, createInteraction] = useLibrary('interaction', library);\n return (d) => {\n const [name, options] = d;\n try {\n return [name, createInteraction(name)];\n }\n catch (_a) {\n return [name, options.type];\n }\n };\n}\nfunction createUpdateView(selection, options, library, context) {\n const createDefinedInteraction = definedInteraction(library);\n const filter = (d) => d[1] && d[1].props && d[1].props.reapplyWhenUpdate;\n const interactions = inferInteraction(options);\n const updates = interactions\n .map(createDefinedInteraction)\n .filter(filter)\n .map((d) => d[0]);\n return (newOptions, source, callback) => __awaiter(this, void 0, void 0, function* () {\n const transitions = [];\n const [newView, newChildren] = yield initializeView(newOptions, library);\n plotView(newView, selection, transitions, library, context);\n // Update interaction need to reapply when update.\n for (const name of updates.filter((d) => d !== source)) {\n updateInteraction(name, selection, newOptions, newView, library, context);\n }\n for (const child of newChildren) {\n plot(child, selection, library, context);\n }\n callback();\n return { options: newOptions, view: newView };\n });\n}\nfunction updateInteraction(name, selection, options, view, library, context) {\n var _a;\n const [useInteraction] = useLibrary('interaction', library);\n // Instances for interaction.\n const container = selection.node();\n const nameInteraction = container['nameInteraction'];\n const interactionOptions = inferInteraction(options).find(([d]) => d === name);\n // Destroy older interaction.\n const interaction = nameInteraction.get(name);\n if (!interaction)\n return;\n (_a = interaction.destroy) === null || _a === void 0 ? void 0 : _a.call(interaction);\n if (!interactionOptions[1])\n return;\n // Apply new interaction.\n const applyInteraction = useThemeInteraction(view, name, interactionOptions[1], useInteraction);\n const target = {\n options,\n view,\n container: selection.node(),\n update: (options) => Promise.resolve(options),\n };\n const destroy = applyInteraction(target, [], context.emitter);\n nameInteraction.set(name, { destroy });\n}\nfunction initializeView(options, library) {\n return __awaiter(this, void 0, void 0, function* () {\n const flattenOptions = yield transformMarks(options, library);\n const mergedOptions = bubbleOptions(flattenOptions);\n // @todo Remove this.\n // !!! NOTE: Mute original view options.\n // Update interaction and coordinate for this view.\n options.interaction = mergedOptions.interaction;\n options.coordinate = mergedOptions.coordinate;\n // @ts-ignore\n options.marks = [...mergedOptions.marks, ...mergedOptions.components];\n const transformedOptions = coordinate2Transform(mergedOptions, library);\n const state = yield initializeMarks(transformedOptions, library);\n return initializeState(state, transformedOptions, library);\n });\n}\nfunction bubbleOptions(options) {\n const { coordinate: viewCoordinate = {}, interaction: viewInteraction = {}, style: viewStyle = {}, marks } = options, rest = __rest(options, [\"coordinate\", \"interaction\", \"style\", \"marks\"]);\n const markCoordinates = marks.map((d) => d.coordinate || {});\n const markInteractions = marks.map((d) => d.interaction || {});\n const markViewStyles = marks.map((d) => d.viewStyle || {});\n const newCoordinate = [...markCoordinates, viewCoordinate].reduceRight((prev, cur) => deepMix(prev, cur), {});\n const newInteraction = [viewInteraction, ...markInteractions].reduce((prev, cur) => deepMix(prev, cur), {});\n const newStyle = [...markViewStyles, viewStyle].reduce((prev, cur) => deepMix(prev, cur), {});\n return Object.assign(Object.assign({}, rest), { marks, coordinate: newCoordinate, interaction: newInteraction, style: newStyle });\n}\nfunction transformMarks(options, library) {\n return __awaiter(this, void 0, void 0, function* () {\n const [useMark, createMark] = useLibrary('mark', library);\n const staticMarks = new Set(Object.keys(library)\n .map((d) => { var _a; return (_a = /component\\.(.*)/.exec(d)) === null || _a === void 0 ? void 0 : _a[1]; })\n .filter(defined));\n const { marks } = options;\n const flattenMarks = [];\n const components = [];\n const discovered = [...marks];\n const { width, height } = computeRoughPlotSize(options);\n const context = { options, width, height };\n // Pre order traversal.\n while (discovered.length) {\n const [node] = discovered.splice(0, 1);\n // Apply data transform to get data.\n const mark = (yield applyTransform(node, library));\n const { type = error('G2Mark type is required.'), key } = mark;\n // For components.\n if (staticMarks.has(type))\n components.push(mark);\n else {\n const { props = {} } = createMark(type);\n const { composite = true } = props;\n if (!composite)\n flattenMarks.push(mark);\n else {\n // Unwrap data from { value: data } to data,\n // then the composite mark can process the normalized data.\n const { data } = mark;\n const newMark = Object.assign(Object.assign({}, mark), { data: data ? (Array.isArray(data) ? data : data.value) : data });\n // Convert composite mark to marks.\n const marks = yield useMark(newMark, context);\n const M = Array.isArray(marks) ? marks : [marks];\n discovered.unshift(...M.map((d, i) => (Object.assign(Object.assign({}, d), { key: `${key}-${i}` }))));\n }\n }\n }\n return Object.assign(Object.assign({}, options), { marks: flattenMarks, components });\n });\n}\nfunction initializeMarks(options, library) {\n return __awaiter(this, void 0, void 0, function* () {\n const [useTheme] = useLibrary('theme', library);\n const [, createMark] = useLibrary('mark', library);\n const { theme: partialTheme, marks: partialMarks, coordinates = [], } = options;\n const theme = useTheme(inferTheme(partialTheme));\n const markState = new Map();\n // Initialize channels for marks.\n for (const markOptions of partialMarks) {\n const { type } = markOptions;\n const { props = {} } = createMark(type);\n const markAndState = yield initializeMark(markOptions, props, library);\n if (markAndState) {\n const [initializedMark, state] = markAndState;\n markState.set(initializedMark, state);\n }\n }\n // Group channels by scale key, each group has scale.\n const scaleChannels = group(Array.from(markState.values()).flatMap((d) => d.channels), ({ scaleKey }) => scaleKey);\n // Infer scale for each channel groups.\n for (const channels of scaleChannels.values()) {\n // Merge scale options for these channels.\n const scaleOptions = channels.reduce((total, { scale }) => deepMix(total, scale), {});\n const { scaleKey } = channels[0];\n // Use the fields of the first channel as the title.\n const { values: FV } = channels[0];\n const fields = Array.from(new Set(FV.map((d) => d.field).filter(defined)));\n const options = deepMix({\n guide: { title: fields.length === 0 ? undefined : fields },\n field: fields[0],\n }, scaleOptions);\n // Use the name of the first channel as the scale name.\n const { name } = channels[0];\n const values = channels.flatMap(({ values }) => values.map((d) => d.value));\n const scale = Object.assign(Object.assign({}, inferScale(name, values, options, coordinates, theme, library)), { key: scaleKey });\n channels.forEach((channel) => (channel.scale = scale));\n }\n return markState;\n });\n}\nfunction useThemeInteraction(view, type, option, useInteraction) {\n const theme = view.theme;\n const defaults = typeof type === 'string' ? theme[type] || {} : {};\n const interaction = useInteraction(deepMix(defaults, Object.assign({ type }, option)));\n return interaction;\n}\nfunction initializeState(markState, options, library) {\n const [useMark] = useLibrary('mark', library);\n const [useTheme] = useLibrary('theme', library);\n const [useLabelTransform] = useLibrary('labelTransform', library);\n const { key, frame = false, theme: partialTheme, clip, style = {}, labelTransform = [], } = options;\n const theme = useTheme(inferTheme(partialTheme));\n // Infer components and compute layout.\n const states = Array.from(markState.values());\n const scales = collectScales(states, options);\n const components = normalizeComponents(inferComponent(inferComponentScales(Array.from(scales), states, markState), options, library));\n const layout = computeLayout(components, options, theme, library);\n const coordinate = createCoordinate(layout, options, library);\n const framedStyle = frame\n ? deepMix({ mainLineWidth: 1, mainStroke: '#000' }, style)\n : style;\n // Place components and mutate their bbox.\n placeComponents(groupComponents(components), coordinate, layout);\n // AxisZ need a copy of axisX and axisY to show grids in X-Z & Y-Z planes.\n processAxisZ(components);\n // Scale from marks and components.\n const scaleInstance = {};\n // Initialize scale from components.\n for (const component of components) {\n const { scales: scaleDescriptors = [] } = component;\n const scales = [];\n for (const descriptor of scaleDescriptors) {\n const { name } = descriptor;\n const scale = useRelationScale(descriptor, library);\n scales.push(scale);\n // Delivery the scale of axisX to the AxisY,\n // in order to calculate the angle of axisY component when rendering radar chart.\n if (name === 'y') {\n scale.update(Object.assign(Object.assign({}, scale.getOptions()), { xScale: scaleInstance.x }));\n }\n assignScale(scaleInstance, { [name]: scale });\n }\n component.scaleInstances = scales;\n }\n // Calc data to be rendered for each mark.\n // @todo More readable APIs for Container which stays\n // the same style with JS standard and lodash APIs.\n // @todo More proper way to index scale for different marks.\n const children = [];\n for (const [mark, state] of markState.entries()) {\n const { \n // scale,\n // Callback to create children options based on this mark.\n children: createChildren, \n // The total count of data (both show and hide)for this facet.\n // This is for unit visualization to sync data domain.\n dataDomain, modifier, key: markKey, } = mark;\n const { index, channels, tooltip } = state;\n const scale = Object.fromEntries(channels.map(({ name, scale }) => [name, scale]));\n // Transform abstract value to visual value by scales.\n const markScaleInstance = mapObject(scale, (options) => {\n return useRelationScale(options, library);\n });\n assignScale(scaleInstance, markScaleInstance);\n const value = applyScale(channels, markScaleInstance);\n // Calc points and transformation for each data,\n // and then transform visual value to visual data.\n const calcPoints = useMark(mark);\n const [I, P, S] = filterValid(calcPoints(index, markScaleInstance, value, coordinate));\n const count = dataDomain || I.length;\n const T = modifier ? modifier(P, count, layout) : [];\n const titleOf = (i) => { var _a, _b; return (_b = (_a = tooltip.title) === null || _a === void 0 ? void 0 : _a[i]) === null || _b === void 0 ? void 0 : _b.value; };\n const itemsOf = (i) => tooltip.items.map((V) => V[i]);\n const visualData = I.map((d, i) => {\n const datum = Object.assign({ points: P[i], transform: T[i], index: d, markKey, viewKey: key }, (tooltip && {\n title: titleOf(d),\n items: itemsOf(d),\n }));\n for (const [k, V] of Object.entries(value)) {\n datum[k] = V[d];\n if (S)\n datum[`series${upperFirst(k)}`] = S[i].map((i) => V[i]);\n }\n if (S)\n datum['seriesIndex'] = S[i];\n if (S && tooltip) {\n datum['seriesItems'] = S[i].map((si) => itemsOf(si));\n datum['seriesTitle'] = S[i].map((si) => titleOf(si));\n }\n return datum;\n });\n state.data = visualData;\n state.index = I;\n // Create children options by children callback,\n // and then propagate data to each child.\n const markChildren = createChildren === null || createChildren === void 0 ? void 0 : createChildren(visualData, markScaleInstance, layout);\n children.push(...(markChildren || []));\n }\n const view = {\n layout,\n theme,\n coordinate,\n markState,\n key,\n clip,\n scale: scaleInstance,\n style: framedStyle,\n components,\n labelTransform: compose(labelTransform.map(useLabelTransform)),\n };\n return [view, children];\n}\nfunction plotView(view, selection, transitions, library, context) {\n return __awaiter(this, void 0, void 0, function* () {\n const { components, theme, layout, markState, coordinate, key, style, clip, scale, } = view;\n // Render background for the different areas.\n const { x, y, width, height } = layout, rest = __rest(layout, [\"x\", \"y\", \"width\", \"height\"]);\n const areaKeys = ['view', 'plot', 'main', 'content'];\n const I = areaKeys.map((_, i) => i);\n const sizeKeys = ['a', 'margin', 'padding', 'inset'];\n const areaStyles = areaKeys.map((d) => maybeSubObject(Object.assign({}, theme.view, style), d));\n const areaSizes = sizeKeys.map((d) => subObject(rest, d));\n const styleArea = (selection) => selection\n .style('x', (i) => areaLayouts[i].x)\n .style('y', (i) => areaLayouts[i].y)\n .style('width', (i) => areaLayouts[i].width)\n .style('height', (i) => areaLayouts[i].height)\n .each(function (i, d, element) {\n applyStyle(select(element), areaStyles[i]);\n });\n let px = 0;\n let py = 0;\n let pw = width;\n let ph = height;\n const areaLayouts = I.map((i) => {\n const size = areaSizes[i];\n const { left = 0, top = 0, bottom = 0, right = 0 } = size;\n px += left;\n py += top;\n pw -= left + right;\n ph -= top + bottom;\n return {\n x: px,\n y: py,\n width: pw,\n height: ph,\n };\n });\n selection\n .selectAll(className(AREA_CLASS_NAME))\n .data(\n // Only render area with defined style.\n I.filter((i) => defined(areaStyles[i])), (i) => areaKeys[i])\n .join((enter) => enter\n .append('rect')\n .attr('className', AREA_CLASS_NAME)\n .style('zIndex', -2)\n .call(styleArea), (update) => update.call(styleArea), (exit) => exit.remove());\n const animationExtent = computeAnimationExtent(markState);\n const componentAnimateOptions = animationExtent\n ? { duration: animationExtent[1] }\n : false;\n // Render components.\n // @todo renderComponent return ctor and options.\n // Key for each type of component.\n // Index them grouped by position.\n for (const [, C] of groups(components, (d) => `${d.type}-${d.position}`)) {\n C.forEach((d, i) => (d.index = i));\n }\n const componentsTransitions = selection\n .selectAll(className(COMPONENT_CLASS_NAME))\n .data(components, (d) => `${d.type}-${d.position}-${d.index}`)\n .join((enter) => enter\n .append('g')\n .style('zIndex', ({ zIndex }) => zIndex || -1)\n .attr('className', COMPONENT_CLASS_NAME)\n .append((options) => renderComponent(deepMix({ animate: componentAnimateOptions, scale }, options), coordinate, theme, library, markState)), (update) => update.transition(function (options, i, element) {\n const { preserve = false } = options;\n if (preserve)\n return;\n const newComponent = renderComponent(deepMix({ animate: componentAnimateOptions, scale }, options), coordinate, theme, library, markState);\n const { attributes } = newComponent;\n const [node] = element.childNodes;\n return node.update(attributes, false);\n }))\n .transitions();\n transitions.push(...componentsTransitions.flat().filter(defined));\n // Main layer is for showing the main visual representation such as marks. There\n // may be multiple main layers for a view, each main layer correspond to one of marks.\n // @todo Test DOM structure.\n const T = selection\n .selectAll(className(PLOT_CLASS_NAME))\n .data([layout], () => key)\n .join((enter) => enter\n // Make this layer interactive, such as click and mousemove events.\n .append('rect')\n .style('zIndex', 0)\n .style('fill', 'transparent')\n .attr('className', PLOT_CLASS_NAME)\n .call(updateBBox)\n .call(updateLayers, Array.from(markState.keys()))\n .call(applyClip, clip), (update) => update\n .call(updateLayers, Array.from(markState.keys()))\n .call((selection) => {\n return animationExtent\n ? animateBBox(selection, animationExtent)\n : updateBBox(selection);\n })\n .call(applyClip, clip))\n .transitions();\n transitions.push(...T.flat());\n // Render marks with corresponding data.\n for (const [mark, state] of markState.entries()) {\n const { data } = state;\n const { key, class: cls, type } = mark;\n const viewNode = selection.select(`#${key}`);\n const shapeFunction = createMarkShapeFunction(mark, state, view, library, context);\n const enterFunction = createEnterFunction(mark, state, view, library);\n const updateFunction = createUpdateFunction(mark, state, view, library);\n const exitFunction = createExitFunction(mark, state, view, library);\n const facetElements = selectFacetElements(selection, viewNode, cls, 'element');\n const T = viewNode\n .selectAll(className(ELEMENT_CLASS_NAME))\n .selectFacetAll(facetElements)\n .data(data, (d) => d.key, (d) => d.groupKey)\n .join((enter) => enter\n .append(shapeFunction)\n // Note!!! Only one className can be set.\n // Using attribute as alternative for other classNames.\n .attr('className', ELEMENT_CLASS_NAME)\n .attr('markType', type)\n .transition(function (data, i, element) {\n return enterFunction(data, [element]);\n }), (update) => update.call((selection) => {\n const parent = selection.parent();\n const origin = useMemo((node) => {\n const [x, y] = node.getBounds().min;\n return [x, y];\n });\n selection\n .transition(function (data, index, element) {\n maybeFacetElement(element, parent, origin);\n const node = shapeFunction(data, index);\n const animation = updateFunction(data, [element], [node]);\n if (animation !== null)\n return animation;\n if (element.nodeName === node.nodeName &&\n node.nodeName !== 'g') {\n copyAttributes(element, node);\n }\n else {\n element.parentNode.replaceChild(node, element);\n node.className = ELEMENT_CLASS_NAME;\n // @ts-ignore\n node.markType = type;\n // @ts-ignore\n node.__data__ = element.__data__;\n }\n return animation;\n })\n .attr('markType', type)\n .attr('className', ELEMENT_CLASS_NAME);\n }), (exit) => {\n return exit\n .each(function (d, i, element) {\n element.__removed__ = true;\n })\n .transition(function (data, i, element) {\n return exitFunction(data, [element]);\n })\n .remove();\n }, (merge) => merge\n // Append elements to be merged.\n .append(shapeFunction)\n .attr('className', ELEMENT_CLASS_NAME)\n .attr('markType', type)\n .transition(function (data, i, element) {\n // Remove merged elements after animation finishing.\n const { __fromElements__: fromElements } = element;\n const transition = updateFunction(data, fromElements, [element]);\n const exit = new Selection(fromElements, null, element.parentNode);\n exit.transition(transition).remove();\n return transition;\n }), (split) => split\n .transition(function (data, i, element) {\n // Append splitted shapes.\n const enter = new Selection([], element.__toData__, element.parentNode);\n const toElements = enter\n .append(shapeFunction)\n .attr('className', ELEMENT_CLASS_NAME)\n .attr('markType', type)\n .nodes();\n return updateFunction(data, [element], toElements);\n })\n // Remove elements to be splitted after animation finishing.\n .remove())\n .transitions();\n transitions.push(...T.flat());\n }\n // Plot label for this view.\n plotLabel(view, selection, transitions, library, context);\n });\n}\n/**\n * Auto hide labels be specify label layout.\n */\nfunction plotLabel(view, selection, transitions, library, context) {\n const [useLabelTransform] = useLibrary('labelTransform', library);\n const { markState, labelTransform } = view;\n const labelLayer = selection.select(className(LABEL_LAYER_CLASS_NAME)).node();\n // A Map index shapeFunction by label.\n const labelShapeFunction = new Map();\n // A Map index options by label.\n const labelDescriptor = new Map();\n // Get all labels for this view.\n const labels = Array.from(markState.entries()).flatMap(([mark, state]) => {\n const { labels: labelOptions = [], key } = mark;\n const shapeFunction = createLabelShapeFunction(mark, state, view, library, context);\n const elements = selection\n .select(`#${key}`)\n .selectAll(className(ELEMENT_CLASS_NAME))\n .nodes()\n // Only select the valid element.\n .filter((n) => !n.__removed__);\n return labelOptions.flatMap((labelOption, i) => {\n const { transform = [] } = labelOption, options = __rest(labelOption, [\"transform\"]);\n return elements.flatMap((e) => {\n const L = getLabels(options, i, e);\n L.forEach((l) => {\n labelShapeFunction.set(l, shapeFunction);\n labelDescriptor.set(l, labelOption);\n });\n return L;\n });\n });\n });\n // Render all labels.\n const labelShapes = select(labelLayer)\n .selectAll(className(LABEL_CLASS_NAME))\n .data(labels, (d) => d.key)\n .join((enter) => enter\n .append((d) => labelShapeFunction.get(d)(d))\n .attr('className', LABEL_CLASS_NAME), (update) => update.each(function (d, i, element) {\n // @todo Handle Label with different type.\n const shapeFunction = labelShapeFunction.get(d);\n const node = shapeFunction(d);\n copyAttributes(element, node);\n }), (exit) => exit.remove())\n .nodes();\n // Apply group-level transforms.\n const labelGroups = group(labelShapes, (d) => labelDescriptor.get(d.__data__));\n const { coordinate } = view;\n for (const [label, shapes] of labelGroups) {\n const { transform = [] } = label;\n const transformFunction = compose(transform.map(useLabelTransform));\n transformFunction(shapes, coordinate);\n }\n // Apply view-level transform.\n if (labelTransform) {\n labelTransform(labelShapes, coordinate);\n }\n}\nfunction getLabels(label, labelIndex, element) {\n const { seriesIndex: SI, seriesKey, points, key, index } = element.__data__;\n const bounds = getLocalBounds(element);\n if (!SI) {\n return [\n Object.assign(Object.assign({}, label), { key: `${key}-${labelIndex}`, bounds,\n index,\n points, dependentElement: element }),\n ];\n }\n const selector = normalizeLabelSelector(label);\n const F = SI.map((index, i) => (Object.assign(Object.assign({}, label), { key: `${seriesKey[i]}-${labelIndex}`, bounds: [points[i]], index,\n points, dependentElement: element })));\n return selector ? selector(F) : F;\n}\nfunction filterValid([I, P, S]) {\n if (S)\n return [I, P, S];\n const definedIndex = [];\n const definedPoints = [];\n for (let i = 0; i < I.length; i++) {\n const d = I[i];\n const p = P[i];\n if (p.every(([x, y]) => defined(x) && defined(y))) {\n definedIndex.push(d);\n definedPoints.push(p);\n }\n }\n return [definedIndex, definedPoints];\n}\nfunction normalizeLabelSelector(label) {\n const { selector } = label;\n if (!selector)\n return null;\n if (typeof selector === 'function')\n return selector;\n if (selector === 'first')\n return (I) => [I[0]];\n if (selector === 'last')\n return (I) => [I[I.length - 1]];\n throw new Error(`Unknown selector: ${selector}`);\n}\n/**\n * Avoid getting error bounds caused by element animations.\n * @todo Remove this temporary handle method, if runtime supports\n * correct process: drawElement, do label layout and then do\n * transitions together.\n */\nfunction getLocalBounds(element) {\n const cloneElement = element.cloneNode();\n const animations = element.getAnimations();\n cloneElement.style.visibility = 'hidden';\n animations.forEach((animation) => {\n const keyframes = animation.effect.getKeyframes();\n cloneElement.attr(keyframes[keyframes.length - 1]);\n });\n element.parentNode.appendChild(cloneElement);\n const bounds = cloneElement.getLocalBounds();\n cloneElement.destroy();\n const { min, max } = bounds;\n return [min, max];\n}\nfunction createLabelShapeFunction(mark, state, view, library, context) {\n const [useShape] = useLibrary('shape', library);\n const { data: abstractData } = mark;\n const { data: visualData, defaultLabelShape } = state;\n const point2d = visualData.map((d) => d.points);\n // Assemble Context.\n const { theme, coordinate } = view;\n const shapeContext = Object.assign(Object.assign({}, context), { document: documentOf(context), theme,\n coordinate });\n return (options) => {\n // Computed values from data and styles.\n const { index, points } = options;\n const datum = abstractData[index];\n const { formatter = (d) => `${d}`, transform, style: abstractStyle, render } = options, abstractOptions = __rest(options, [\"formatter\", \"transform\", \"style\", \"render\"]);\n const visualOptions = mapObject(Object.assign(Object.assign({}, abstractOptions), abstractStyle), (d) => valueOf(d, datum, index, abstractData));\n const { shape = defaultLabelShape, text } = visualOptions, style = __rest(visualOptions, [\"shape\", \"text\"]);\n const f = typeof formatter === 'string' ? format(formatter) : formatter;\n const value = Object.assign(Object.assign({}, style), { text: f(text, datum, index, abstractData), datum });\n // Params for create shape.\n const shapeOptions = Object.assign({ type: `label.${shape}`, render }, style);\n const shapeFunction = useShape(shapeOptions, shapeContext);\n const defaults = getDefaultsStyle(theme, 'label', shape, 'label');\n return shapeFunction(points, value, defaults, point2d);\n };\n}\nfunction valueOf(value, datum, i, data) {\n if (typeof value === 'function')\n return value(datum, i, data);\n if (typeof value !== 'string')\n return value;\n if (datum[value] !== undefined)\n return datum[value];\n return value;\n}\n/**\n * Compute max duration for this frame.\n */\nfunction computeAnimationExtent(markState) {\n let maxDuration = -Infinity;\n let minDelay = Infinity;\n for (const [mark, state] of markState) {\n const { animate = {} } = mark;\n const { data } = state;\n const { enter = {}, update = {}, exit = {} } = animate;\n const { type: defaultUpdateType, duration: defaultUpdateDuration = 300, delay: defaultUpdateDelay = 0, } = update;\n const { type: defaultEnterType, duration: defaultEnterDuration = 300, delay: defaultEnterDelay = 0, } = enter;\n const { type: defaultExitType, duration: defaultExitDuration = 300, delay: defaultExitDelay = 0, } = exit;\n for (const d of data) {\n const { updateType = defaultUpdateType, updateDuration = defaultUpdateDuration, updateDelay = defaultUpdateDelay, enterType = defaultEnterType, enterDuration = defaultEnterDuration, enterDelay = defaultEnterDelay, exitDuration = defaultExitDuration, exitDelay = defaultExitDelay, exitType = defaultExitType, } = d;\n if (updateType === undefined || updateType) {\n maxDuration = Math.max(maxDuration, updateDuration + updateDelay);\n minDelay = Math.min(minDelay, updateDelay);\n }\n if (exitType === undefined || exitType) {\n maxDuration = Math.max(maxDuration, exitDuration + exitDelay);\n minDelay = Math.min(minDelay, exitDelay);\n }\n if (enterType === undefined || enterType) {\n maxDuration = Math.max(maxDuration, enterDuration + enterDelay);\n minDelay = Math.min(minDelay, enterDelay);\n }\n }\n }\n if (maxDuration === -Infinity)\n return null;\n return [minDelay, maxDuration - minDelay];\n}\nfunction selectFacetElements(selection, current, facetClassName, elementClassName) {\n const group = selection.node().parentElement;\n return group\n .findAll((node) => node.style.facet !== undefined &&\n node.style.facet === facetClassName &&\n node !== current.node())\n .flatMap((node) => node.getElementsByClassName(elementClassName));\n}\n/**\n * Update the parent of element and apply transform to make it\n * stay in original position.\n */\nfunction maybeFacetElement(element, parent, originOf) {\n if (!element.__facet__)\n return;\n // element -> g#main -> rect#plot\n const prePlot = element.parentNode.parentNode;\n // g#main -> rect#plot\n const newPlot = parent.parentNode;\n const [px, py] = originOf(prePlot);\n const [x, y] = originOf(newPlot);\n const translate = `translate(${px - x}, ${py - y})`;\n appendTransform(element, translate);\n parent.append(element);\n}\nfunction createMarkShapeFunction(mark, state, view, library, context) {\n const [useShape] = useLibrary('shape', library);\n const { data: abstractData } = mark;\n const { defaultShape, data, shape: shapeLibrary } = state;\n const point2d = data.map((d) => d.points);\n const { theme, coordinate } = view;\n const { type: markType, style = {} } = mark;\n const shapeContext = Object.assign(Object.assign({}, context), { document: documentOf(context), coordinate,\n theme });\n return (data) => {\n const { shape: styleShape = defaultShape } = style;\n const { shape = styleShape, points, seriesIndex, index: i } = data, v = __rest(data, [\"shape\", \"points\", \"seriesIndex\", \"index\"]);\n const value = Object.assign(Object.assign({}, v), { index: i });\n // Get data-driven style.\n // If it is a series shape, such as area and line,\n // provides the series of abstract data and indices\n // for this shape, otherwise the single datum and\n // index.\n const abstractDatum = seriesIndex\n ? seriesIndex.map((i) => abstractData[i])\n : abstractData[i];\n const I = seriesIndex ? seriesIndex : i;\n const visualStyle = mapObject(style, (d) => valueOf(d, abstractDatum, I, abstractData));\n // Try get shape from mark first, then from library.\n const shapeFunction = shapeLibrary[shape]\n ? shapeLibrary[shape](visualStyle, shapeContext)\n : useShape(Object.assign(Object.assign({}, visualStyle), { type: shapeName(mark, shape) }), shapeContext);\n const defaults = getDefaultsStyle(theme, markType, shape, defaultShape);\n return shapeFunction(points, value, defaults, point2d);\n };\n}\nfunction getDefaultsStyle(theme, mark, shape, defaultShape) {\n if (typeof mark !== 'string')\n return;\n const { color } = theme;\n const markTheme = theme[mark] || {};\n const shapeTheme = markTheme[shape] || markTheme[defaultShape];\n return Object.assign({ color }, shapeTheme);\n}\nfunction createAnimationFunction(type, mark, state, view, library) {\n var _a, _b;\n const [, createShape] = useLibrary('shape', library);\n const [useAnimation] = useLibrary('animation', library);\n const { defaultShape, shape: shapeLibrary } = state;\n const { theme, coordinate } = view;\n const upperType = upperFirst(type);\n const key = `default${upperType}Animation`;\n // Get shape from mark first, then from library.\n const { [key]: defaultAnimation } = ((_a = shapeLibrary[defaultShape]) === null || _a === void 0 ? void 0 : _a.props) ||\n createShape(shapeName(mark, defaultShape)).props;\n const { [type]: defaultEffectTiming = {} } = theme;\n const animate = ((_b = mark.animate) === null || _b === void 0 ? void 0 : _b[type]) || {};\n const context = { coordinate };\n return (data, from, to) => {\n const { [`${type}Type`]: animation, [`${type}Delay`]: delay, [`${type}Duration`]: duration, [`${type}Easing`]: easing, } = data;\n const options = Object.assign({ type: animation || defaultAnimation }, animate);\n if (!options.type)\n return null;\n const animateFunction = useAnimation(options, context);\n const value = { delay, duration, easing };\n const A = animateFunction(from, to, deepMix(defaultEffectTiming, value));\n if (!Array.isArray(A))\n return [A];\n return A;\n };\n}\nfunction createEnterFunction(mark, state, view, library) {\n return createAnimationFunction('enter', mark, state, view, library);\n}\n/**\n * Animation will not cancel automatically, it should be canceled\n * manually. This is very important for performance.\n */\nfunction cancel(animation) {\n animation.finished.then(() => {\n animation.cancel();\n });\n return animation;\n}\nfunction createUpdateFunction(mark, state, view, library) {\n return createAnimationFunction('update', mark, state, view, library);\n}\nfunction createExitFunction(mark, state, view, library) {\n return createAnimationFunction('exit', mark, state, view, library);\n}\nfunction inferTheme(theme = {}) {\n if (typeof theme === 'string')\n return { type: theme };\n const { type = 'light' } = theme, rest = __rest(theme, [\"type\"]);\n return Object.assign(Object.assign({}, rest), { type });\n}\n/**\n * @todo Infer builtin tooltips.\n */\nfunction inferInteraction(view) {\n const defaults = {\n event: true,\n tooltip: true,\n // @todo Inferred by slider self.\n sliderFilter: true,\n legendFilter: true,\n scrollbarFilter: true,\n };\n const { interaction = {} } = view;\n return Object.entries(deepMix(defaults, interaction)).reverse();\n}\nfunction applyTransform(node, library) {\n return __awaiter(this, void 0, void 0, function* () {\n const context = { library };\n const { data } = node, rest = __rest(node, [\"data\"]);\n if (data == undefined)\n return node;\n const [, { data: newData }] = yield applyDataTransform([], { data }, context);\n return Object.assign({ data: newData }, rest);\n });\n}\nfunction updateBBox(selection) {\n selection\n .style('x', (d) => d.paddingLeft + d.marginLeft)\n .style('y', (d) => d.paddingTop + d.marginTop)\n .style('width', (d) => d.innerWidth)\n .style('height', (d) => d.innerHeight);\n}\nfunction animateBBox(selection, extent) {\n const [delay, duration] = extent;\n selection.transition(function (data, i, element) {\n const { x, y, width, height } = element.style;\n const { paddingLeft, paddingTop, innerWidth, innerHeight, marginLeft, marginTop, } = data;\n const keyframes = [\n {\n x,\n y,\n width,\n height,\n },\n {\n x: paddingLeft + marginLeft,\n y: paddingTop + marginTop,\n width: innerWidth,\n height: innerHeight,\n },\n ];\n return element.animate(keyframes, { delay, duration, fill: 'both' });\n });\n}\nfunction shapeName(mark, name) {\n const { type } = mark;\n if (typeof name === 'string')\n return `${type}.${name}`;\n return name;\n}\n/**\n * Create and update layer for each mark.\n * All the layers created here are treated as main layers.\n */\nfunction updateLayers(selection, marks) {\n const facet = (d) => (d.class !== undefined ? `${d.class}` : '');\n // Skip for empty selection, it can't append nodes.\n const nodes = selection.nodes();\n if (nodes.length === 0)\n return;\n selection\n .selectAll(className(MAIN_LAYER_CLASS_NAME))\n .data(marks, (d) => d.key)\n .join((enter) => enter\n .append('g')\n .attr('className', MAIN_LAYER_CLASS_NAME)\n .attr('id', (d) => d.key)\n .style('facet', facet)\n .style('fill', 'transparent')\n .style('zIndex', (d) => { var _a; return (_a = d.zIndex) !== null && _a !== void 0 ? _a : 0; }), (update) => update\n .style('facet', facet)\n .style('fill', 'transparent')\n .style('zIndex', (d) => { var _a; return (_a = d.zIndex) !== null && _a !== void 0 ? _a : 0; }), (exit) => exit.remove());\n const labelLayer = selection.select(className(LABEL_LAYER_CLASS_NAME)).node();\n if (labelLayer)\n return;\n selection\n .append('g')\n .attr('className', LABEL_LAYER_CLASS_NAME)\n .style('zIndex', 0);\n}\nfunction className(...names) {\n return names.map((d) => `.${d}`).join('');\n}\nfunction applyClip(selection, clip) {\n if (!selection.node())\n return;\n selection.style('clipPath', (data) => {\n if (!clip)\n return null;\n const { paddingTop: y, paddingLeft: x, marginLeft: x1, marginTop: y1, innerWidth: width, innerHeight: height, } = data;\n return new Rect({ style: { x: x + x1, y: y + y1, width, height } });\n });\n}\nfunction inferComponentScales(scales, states, markState) {\n // add shape scale to state.\n var _a;\n // for cell, omit shape scale.\n // @todo support shape scale for cell.\n for (const [key] of markState.entries()) {\n if (key.type === 'cell') {\n return scales.filter((scale) => scale.name !== 'shape');\n }\n }\n // can't infer shape scale if there are multiple states.\n if (states.length !== 1 || scales.some((scale) => scale.name === 'shape')) {\n return scales;\n }\n const { defaultShape: shape } = states[0];\n const acceptMarkTypes = ['point', 'line', 'rect', 'hollow'];\n if (!acceptMarkTypes.includes(shape))\n return scales;\n const shapeMap = {\n point: 'point',\n line: 'hyphen',\n rect: 'square',\n hollow: 'hollow',\n };\n // create shape scale\n const field = ((_a = scales.find((scale) => scale.name === 'color')) === null || _a === void 0 ? void 0 : _a.field) || null;\n const shapeScale = {\n field,\n name: 'shape',\n type: 'constant',\n domain: [],\n range: [shapeMap[shape]],\n };\n return [...scales, shapeScale];\n}\nexport function applyStyle(selection, style) {\n for (const [key, value] of Object.entries(style)) {\n selection.style(key, value);\n }\n}\n//# sourceMappingURL=plot.js.map","import { Canvas as GCanvas, Group } from '@antv/g';\nimport { Renderer as CanvasRenderer } from '@antv/g-canvas';\nimport { Plugin as DragAndDropPlugin } from '@antv/g-plugin-dragndrop';\nimport { deepMix } from '@antv/util';\nimport EventEmitter from '@antv/event-emitter';\nimport { select } from '../utils/selection';\nimport { ChartEvent } from '../utils/event';\nimport { error } from '../utils/helper';\nimport { plot } from './plot';\nimport { VIEW_CLASS_NAME } from './constant';\n/**\n * Infer key for each node of view tree.\n * Each key should be unique in the entire view tree.\n * The key is for incremental render when view tree is changed.\n * @todo Fix custom key equals to inferred key.\n */\nfunction inferKeys(options) {\n const root = deepMix({}, options);\n const nodeParent = new Map([[root, null]]);\n const nodeIndex = new Map([[null, -1]]);\n const discovered = [root];\n while (discovered.length) {\n const node = discovered.shift();\n // If key of node is not specified, using parentKey and the index for it\n // in parent.children as its key.\n // e.g. The key of node named 'a' will be 'a', and the key of node named\n // 'b' will be 'parent-1' in the following view tree specification.\n // { key: 'parent', children: [{ name: 'a', key: 'a' }, { name: 'b' }] }\n if (node.key === undefined) {\n const parent = nodeParent.get(node);\n const index = nodeIndex.get(node);\n const key = parent === null ? `${0}` : `${parent.key}-${index}`;\n node.key = key;\n }\n const { children = [] } = node;\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n // Clone node as well.\n const child = deepMix({}, children[i]);\n children[i] = child;\n nodeParent.set(child, node);\n nodeIndex.set(child, i);\n discovered.push(child);\n }\n }\n }\n return root;\n}\nfunction Canvas(width, height) {\n const renderer = new CanvasRenderer();\n // DragAndDropPlugin is for interaction.\n renderer.registerPlugin(new DragAndDropPlugin());\n return new GCanvas({\n width,\n height,\n container: document.createElement('div'),\n renderer: renderer,\n });\n}\nexport function render(options, context = {}, resolve = () => { }, reject = (e) => {\n throw e;\n}) {\n // Initialize the context if it is not provided.\n const { width = 640, height = 480, depth = 0 } = options;\n const keyed = inferKeys(options);\n const { canvas = Canvas(width, height), emitter = new EventEmitter(), library, } = context;\n context.canvas = canvas;\n context.emitter = emitter;\n const { width: prevWidth, height: prevHeight } = canvas.getConfig();\n if (prevWidth !== width || prevHeight !== height) {\n canvas.resize(width, height);\n }\n emitter.emit(ChartEvent.BEFORE_RENDER);\n // Plot the chart and mutate context.\n // Make sure that plot chart after container is ready for every time.\n const selection = select(canvas.document.documentElement);\n canvas.ready\n .then(() => plot(Object.assign(Object.assign({}, keyed), { width, height, depth }), selection, library, context))\n .then(() => {\n // Place the center of whole scene at z axis' origin.\n if (depth) {\n const [x, y] = canvas.document.documentElement.getPosition();\n // Since `render` method can be called for multiple times, use setPosition instead of translate here.\n canvas.document.documentElement.setPosition(x, y, -depth / 2);\n }\n // Wait for the next tick.\n canvas.requestAnimationFrame(() => {\n emitter.emit(ChartEvent.AFTER_RENDER);\n resolve === null || resolve === void 0 ? void 0 : resolve();\n });\n })\n .catch((e) => {\n reject === null || reject === void 0 ? void 0 : reject(e);\n });\n // Return the container HTML element wraps the canvas or svg element.\n return normalizeContainer(canvas.getConfig().container);\n}\nexport function renderToMountedElement(options, context = {}, resolve = () => { }, reject = (e) => {\n throw e;\n}) {\n var _a;\n // Initialize the context if it is not provided.\n const { width = 640, height = 480 } = options;\n const keyed = inferKeys(options);\n const { group = new Group(), emitter = new EventEmitter(), library, } = context;\n if (!(group === null || group === void 0 ? void 0 : group.parentElement)) {\n error(`renderToMountedElement can't render chart to unmounted group.`);\n }\n const selection = select(group);\n context.group = group;\n context.emitter = emitter;\n context.canvas =\n context.canvas || ((_a = group === null || group === void 0 ? void 0 : group.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView);\n emitter.emit(ChartEvent.BEFORE_RENDER);\n // Plot the chart and mutate context.\n // Make sure that plot chart after container is ready for every time.\n plot(Object.assign(Object.assign({}, keyed), { width, height }), selection, library, context)\n .then(() => {\n var _a;\n (_a = context.canvas) === null || _a === void 0 ? void 0 : _a.requestAnimationFrame(() => {\n emitter.emit(ChartEvent.AFTER_RENDER);\n resolve === null || resolve === void 0 ? void 0 : resolve();\n });\n })\n .catch((e) => {\n reject === null || reject === void 0 ? void 0 : reject(e);\n });\n // Return the Group wraps the canvas or svg element.\n return group;\n}\nexport function destroy(options, context = {}, isDestroyCanvas = false) {\n const { canvas, emitter } = context;\n if (canvas) {\n destroyAllInteractions(canvas);\n isDestroyCanvas ? canvas.destroy() : canvas.destroyChildren();\n }\n emitter.off();\n}\n/**\n * Destroy all interactions mounted on the canvas.\n */\nfunction destroyAllInteractions(canvas) {\n const viewGroups = canvas.getRoot().querySelectorAll(`.${VIEW_CLASS_NAME}`);\n viewGroups === null || viewGroups === void 0 ? void 0 : viewGroups.forEach((group) => {\n const { nameInteraction = new Map() } = group;\n if ((nameInteraction === null || nameInteraction === void 0 ? void 0 : nameInteraction.size) > 0) {\n Array.from(nameInteraction === null || nameInteraction === void 0 ? void 0 : nameInteraction.values()).forEach((value) => {\n value === null || value === void 0 ? void 0 : value.destroy();\n });\n }\n });\n}\nfunction normalizeContainer(container) {\n return typeof container === 'string'\n ? document.getElementById(container)\n : container;\n}\n//# sourceMappingURL=render.js.map","const defaultStyle = {\n visibility: 'visible',\n opacity: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n};\nexport function getStyle(element, key) {\n var _a;\n return (_a = element.style[key]) !== null && _a !== void 0 ? _a : defaultStyle[key];\n}\nexport function setStyle(element, key, value, recursive) {\n element.style[key] = value;\n if (recursive) {\n element.children.forEach((child) => setStyle(child, key, value, recursive));\n }\n}\nexport function hide(element) {\n setStyle(element, 'visibility', 'hidden', true);\n}\nexport function show(element) {\n setStyle(element, 'visibility', 'visible', true);\n}\n//# sourceMappingURL=style.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Path } from '@antv/g';\nimport { path as d3Path } from 'd3-path';\nimport { sort } from 'd3-array';\nimport { select } from '../utils/selection';\nimport { mapObject } from '../utils/array';\nimport { ELEMENT_CLASS_NAME, PLOT_CLASS_NAME, } from '../runtime';\nimport { isOrdinalScale } from '../utils/scale';\nimport { rect } from '../shape/interval/color';\nimport { isPolar, isTranspose } from '../utils/coordinate';\nimport { getStyle } from '../utils/style';\nimport { reorder } from '../shape/utils';\nimport { angle, angleBetween, sub } from '../utils/vector';\n/**\n * Given root of chart returns elements to be manipulated\n */\nexport function selectG2Elements(root) {\n return select(root)\n .selectAll(`.${ELEMENT_CLASS_NAME}`)\n .nodes()\n .filter((d) => !d.__removed__);\n}\nexport function selectFacetG2Elements(target, viewInstances) {\n return selectFacetViews(target, viewInstances).flatMap(({ container }) => selectG2Elements(container));\n}\nexport function selectFacetViews(target, viewInstances) {\n return viewInstances.filter((d) => d !== target && d.options.parentKey === target.options.key);\n}\nexport function selectPlotArea(root) {\n return select(root).select(`.${PLOT_CLASS_NAME}`).node();\n}\nexport function bboxOf(node) {\n if (node.nodeName !== 'rect')\n return node.getRenderBounds();\n const { x, y, width, height } = node.style;\n return { min: [x, y], max: [x + width, y + height] };\n}\nexport function mousePosition(target, event) {\n const { offsetX, offsetY } = event;\n const bbox = bboxOf(target);\n const { min: [x, y], max: [x1, y1], } = bbox;\n const isOutX = offsetX < x || offsetX > x1;\n const isOutY = offsetY < y || offsetY > y1;\n if (isOutX || isOutY)\n return null;\n return [offsetX - x, offsetY - y];\n}\n/**\n * @todo Pass bbox rather than calc it here.\n */\nexport function brushMousePosition(target, event) {\n const { offsetX, offsetY } = event;\n const [x, y, x1, y1] = boundsOfBrushArea(target);\n return [\n Math.min(x1, Math.max(x, offsetX)) - x,\n Math.min(y1, Math.max(y, offsetY)) - y,\n ];\n}\nexport function boundsOfBrushArea(target) {\n // Calc bbox after clipping.\n const bbox = target.getRenderBounds();\n const { min: [x0, y0], max: [x1, y1], } = bbox;\n return [x0, y0, x1, y1];\n}\nexport function createColorKey(view) {\n return (element) => element.__data__.color;\n}\nexport function createXKey(view) {\n return (element) => element.__data__.x;\n}\nexport function createDatumof(view) {\n const views = Array.isArray(view) ? view : [view];\n const keyData = new Map(views.flatMap((view) => {\n const marks = Array.from(view.markState.keys());\n return marks.map((mark) => [keyed(view.key, mark.key), mark.data]);\n }));\n return (element) => {\n const { index, markKey, viewKey } = element.__data__;\n const data = keyData.get(keyed(viewKey, markKey));\n return data[index];\n };\n}\n/**\n * A state manager for G2Element.\n * The keys for each state's style start with the state name.\n * { selectedFill, selectedStroke } is for selected state.\n * { unselectedFill, unselectedStroke } is for unselected state.\n */\nexport function useState(style, valueof = (d, element) => d, setAttribute = (element, key, v) => element.setAttribute(key, v)) {\n const STATES = '__states__';\n const ORIGINAL = '__ordinal__';\n // Mix style for each state and apply it to element.\n const updateState = (element) => {\n const { [STATES]: states = [], [ORIGINAL]: original = {} } = element;\n const stateStyle = states.reduce((mixedStyle, state) => (Object.assign(Object.assign({}, mixedStyle), style[state])), original);\n if (Object.keys(stateStyle).length === 0)\n return;\n for (const [key, value] of Object.entries(stateStyle)) {\n const currentValue = getStyle(element, key);\n const v = valueof(value, element);\n setAttribute(element, key, v);\n // Store the attribute if it does not exist in original.\n if (!(key in original))\n original[key] = currentValue;\n }\n element[ORIGINAL] = original;\n };\n const initState = (element) => {\n if (element[STATES])\n return;\n element[STATES] = [];\n return;\n };\n /**\n * Set the states and update element.\n */\n const setState = (element, ...states) => {\n initState(element);\n element[STATES] = [...states];\n updateState(element);\n };\n /**\n * Remove the states and update element.\n */\n const removeState = (element, ...states) => {\n initState(element);\n for (const state of states) {\n const index = element[STATES].indexOf(state);\n if (index !== -1) {\n element[STATES].splice(index, 1);\n }\n }\n updateState(element);\n };\n const hasState = (element, state) => {\n initState(element);\n return element[STATES].indexOf(state) !== -1;\n };\n return {\n setState,\n removeState,\n hasState,\n };\n}\nfunction isEmptyObject(obj) {\n if (obj === undefined)\n return true;\n if (typeof obj !== 'object')\n return false;\n return Object.keys(obj).length === 0;\n}\n// A function to generate key for mark each view.\nfunction keyed(viewKey, markKey) {\n return `${viewKey},${markKey}`;\n}\nexport function mergeState(options, states) {\n // Index state by mark key and view key.\n const views = Array.isArray(options) ? options : [options];\n const markState = views.flatMap((view) => view.marks.map((mark) => [keyed(view.key, mark.key), mark.state]));\n const state = {};\n // Update each specified state.\n for (const descriptor of states) {\n const [key, defaults] = Array.isArray(descriptor)\n ? descriptor\n : [descriptor, {}];\n // Update each specified mark state.\n state[key] = markState.reduce((merged, mark) => {\n // Normalize state.\n const [markKey, markState = {}] = mark;\n const selectedState = isEmptyObject(markState[key])\n ? defaults\n : markState[key];\n // Update each state attribute.\n for (const [attr, value] of Object.entries(selectedState)) {\n const oldValue = merged[attr];\n const newValue = (data, index, array, element) => {\n const k = keyed(element.__data__.viewKey, element.__data__.markKey);\n if (markKey !== k)\n return oldValue === null || oldValue === void 0 ? void 0 : oldValue(data, index, array, element);\n if (typeof value !== 'function')\n return value;\n return value(data, index, array, element);\n };\n merged[attr] = newValue;\n }\n return merged;\n }, {});\n }\n return state;\n}\n// @todo Support elements from different view.\nexport function createValueof(elements, datum) {\n const elementIndex = new Map(elements.map((d, i) => [d, i]));\n const fa = datum ? elements.map(datum) : elements;\n return (d, e) => {\n if (typeof d !== 'function')\n return d;\n const i = elementIndex.get(e);\n const fe = datum ? datum(e) : e;\n return d(fe, i, fa, e);\n };\n}\nexport function renderLink(_a) {\n var { link = false, valueof = (d, element) => d, coordinate } = _a, style = __rest(_a, [\"link\", \"valueof\", \"coordinate\"]);\n const LINK_CLASS_NAME = 'element-link';\n if (!link)\n return [() => { }, () => { }];\n const pointsOf = (element) => element.__data__.points;\n const pathPointsOf = (P0, P1) => {\n const [, p1, p2] = P0;\n const [p0, , , p3] = P1;\n const P = [p1, p0, p3, p2];\n return P;\n };\n const append = (elements) => {\n var _a;\n if (elements.length <= 1)\n return;\n // Sort elements by normalized x to avoid cross.\n const sortedElements = sort(elements, (e0, e1) => {\n const { x: x0 } = e0.__data__;\n const { x: x1 } = e1.__data__;\n const dx = x0 - x1;\n return dx;\n });\n for (let i = 1; i < sortedElements.length; i++) {\n const p = d3Path();\n const e0 = sortedElements[i - 1];\n const e1 = sortedElements[i];\n const [p0, p1, p2, p3] = pathPointsOf(pointsOf(e0), pointsOf(e1));\n p.moveTo(...p0);\n p.lineTo(...p1);\n p.lineTo(...p2);\n p.lineTo(...p3);\n p.closePath();\n const _b = mapObject(style, (d) => valueof(d, e0)), { fill = e0.getAttribute('fill') } = _b, rest = __rest(_b, [\"fill\"]);\n const link = new Path({\n className: LINK_CLASS_NAME,\n style: Object.assign({ d: p.toString(), fill, zIndex: -2 }, rest),\n });\n // @ts-ignore\n (_a = e0.link) === null || _a === void 0 ? void 0 : _a.remove();\n e0.parentNode.appendChild(link);\n // @ts-ignore\n e0.link = link;\n }\n };\n const remove = (element) => {\n var _a;\n (_a = element.link) === null || _a === void 0 ? void 0 : _a.remove();\n element.link = null;\n };\n return [append, remove];\n}\n// Apply translate to mock slice out.\nexport function offsetTransform(element, offset, coordinate) {\n const append = (t) => {\n const { transform } = element.style;\n return transform ? `${transform} ${t}` : t;\n };\n if (isPolar(coordinate)) {\n const { points } = element.__data__;\n const [p0, p1] = isTranspose(coordinate) ? reorder(points) : points;\n const center = coordinate.getCenter();\n const v0 = sub(p0, center);\n const v1 = sub(p1, center);\n const a0 = angle(v0);\n const da = angleBetween(v0, v1);\n const amid = a0 + da / 2;\n const dx = offset * Math.cos(amid);\n const dy = offset * Math.sin(amid);\n return append(`translate(${dx}, ${dy})`);\n }\n if (isTranspose(coordinate))\n return append(`translate(${offset}, 0)`);\n return append(`translate(0, ${-offset})`);\n}\nexport function renderBackground(_a) {\n var { document, background, scale, coordinate, valueof } = _a, rest = __rest(_a, [\"document\", \"background\", \"scale\", \"coordinate\", \"valueof\"]);\n const BACKGROUND_CLASS_NAME = 'element-background';\n // Don't have background.\n if (!background)\n return [() => { }, () => { }];\n const extentOf = (scale, x, padding) => {\n const ax = scale.invert(x);\n const mid = x + scale.getBandWidth(ax) / 2;\n const half = scale.getStep(ax) / 2;\n const offset = half * padding;\n return [mid - half + offset, mid + half - offset];\n };\n const sizeXOf = (element, padding) => {\n const { x: scaleX } = scale;\n if (!isOrdinalScale(scaleX))\n return [0, 1];\n const { __data__: data } = element;\n const { x } = data;\n const [e1, e2] = extentOf(scaleX, x, padding);\n return [e1, e2];\n };\n const sizeYOf = (element, padding) => {\n const { y: scaleY } = scale;\n if (!isOrdinalScale(scaleY))\n return [0, 1];\n const { __data__: data } = element;\n const { y } = data;\n const [e1, e2] = extentOf(scaleY, y, padding);\n return [e1, e2];\n };\n const bandShapeOf = (element, style) => {\n const { padding } = style;\n const [x1, x2] = sizeXOf(element, padding);\n const [y1, y2] = sizeYOf(element, padding);\n const points = [\n [x1, y1],\n [x2, y1],\n [x2, y2],\n [x1, y2],\n ].map((d) => coordinate.map(d));\n const { __data__: data } = element;\n const { y: dy, y1: dy1 } = data;\n return rect(document, points, { y: dy, y1: dy1 }, coordinate, style);\n };\n // Shape without ordinal style.\n // Clone and scale it.\n const cloneShapeOf = (element, style) => {\n const { transform = 'scale(1.2, 1.2)', transformOrigin = 'center center', stroke = '' } = style, rest = __rest(style, [\"transform\", \"transformOrigin\", \"stroke\"]);\n const finalStyle = Object.assign({ transform, transformOrigin, stroke }, rest);\n const shape = element.cloneNode(true);\n for (const [key, value] of Object.entries(finalStyle)) {\n shape.style[key] = value;\n }\n return shape;\n };\n const isOrdinalShape = () => {\n const { x, y } = scale;\n return [x, y].some(isOrdinalScale);\n };\n const append = (element) => {\n if (element.background)\n element.background.remove();\n const _a = mapObject(rest, (d) => valueof(d, element)), { fill = '#CCD6EC', fillOpacity = 0.3, zIndex = -2, padding = 0.001, strokeWidth = 0 } = _a, style = __rest(_a, [\"fill\", \"fillOpacity\", \"zIndex\", \"padding\", \"strokeWidth\"]);\n const finalStyle = Object.assign(Object.assign({}, style), { fill,\n fillOpacity,\n zIndex,\n padding,\n strokeWidth });\n const shapeOf = isOrdinalShape() ? bandShapeOf : cloneShapeOf;\n const shape = shapeOf(element, finalStyle);\n shape.className = BACKGROUND_CLASS_NAME;\n element.parentNode.parentNode.appendChild(shape);\n element.background = shape;\n };\n const remove = (element) => {\n var _a;\n (_a = element.background) === null || _a === void 0 ? void 0 : _a.remove();\n element.background = null;\n };\n const is = (element) => {\n return element.className === BACKGROUND_CLASS_NAME;\n };\n return [append, remove, is];\n}\nexport function setCursor(root, cursor) {\n // @ts-ignore\n const canvas = root.getRootNode().defaultView;\n const dom = canvas.getContextService().getDomElement();\n if (dom === null || dom === void 0 ? void 0 : dom.style) {\n root.cursor = dom.style.cursor;\n dom.style.cursor = cursor;\n }\n}\nexport function restoreCursor(root) {\n setCursor(root, root.cursor);\n}\nexport function selectElementByData(elements, data, datum) {\n return elements.find((d) => Object.entries(data).every(([key, value]) => datum(d)[key] === value));\n}\n//# sourceMappingURL=utils.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { group } from 'd3-array';\nimport { subObject } from '../utils/helper';\nimport { createDatumof, createValueof, mergeState, offsetTransform, renderBackground, renderLink, selectElementByData, selectG2Elements, selectPlotArea, useState, } from './utils';\n/**\n * highlight a group of elements.\n */\nexport function elementHighlight(root, { elements: elementsof, // given the root of chart returns elements to be manipulated\ndatum, // given each element returns the datum of it\ngroupKey = (d) => d, // group elements by specified key\nlink = false, // draw link or not\nbackground = false, // draw background or not\ndelay = 60, // delay to unhighlighted element\nscale, coordinate, emitter, state = {}, }) {\n var _a;\n const elements = elementsof(root);\n const elementSet = new Set(elements);\n const keyGroup = group(elements, groupKey);\n const valueof = createValueof(elements, datum);\n const [appendLink, removeLink] = renderLink(Object.assign({ elements,\n valueof,\n link,\n coordinate }, subObject(state.active, 'link')));\n const [appendBackground, removeBackground, isBackground] = renderBackground(Object.assign({ document: root.ownerDocument, scale,\n coordinate,\n background,\n valueof }, subObject(state.active, 'background')));\n const elementStyle = deepMix(state, {\n active: Object.assign({}, (((_a = state.active) === null || _a === void 0 ? void 0 : _a.offset) && {\n //Apply translate to mock slice out.\n transform: (...params) => {\n const value = state.active.offset(...params);\n const [, i] = params;\n return offsetTransform(elements[i], value, coordinate);\n },\n })),\n });\n const { setState, removeState, hasState } = useState(elementStyle, valueof);\n let out; // Timer for delaying unhighlighted.\n const pointerover = (event) => {\n const { target: element, nativeEvent = true } = event;\n if (!elementSet.has(element))\n return;\n if (out)\n clearTimeout(out);\n const k = groupKey(element);\n const group = keyGroup.get(k);\n const groupSet = new Set(group);\n for (const e of elements) {\n if (groupSet.has(e)) {\n if (!hasState(e, 'active'))\n setState(e, 'active');\n }\n else {\n setState(e, 'inactive');\n removeLink(e);\n }\n if (e !== element)\n removeBackground(e);\n }\n appendBackground(element);\n appendLink(group);\n // Emit events.\n if (!nativeEvent)\n return;\n emitter.emit('element:highlight', {\n nativeEvent,\n data: {\n data: datum(element),\n group: group.map(datum),\n },\n });\n };\n const delayUnhighlighted = () => {\n if (out)\n clearTimeout(out);\n out = setTimeout(() => {\n unhighlighted();\n out = null;\n }, delay);\n };\n const unhighlighted = (nativeEvent = true) => {\n for (const e of elements) {\n removeState(e, 'active', 'inactive');\n removeBackground(e);\n removeLink(e);\n }\n if (nativeEvent) {\n emitter.emit('element:unhighlight', { nativeEvent });\n }\n };\n const pointerout = (event) => {\n const { target: element } = event;\n if (background && !isBackground(element))\n return;\n if (!background && !elementSet.has(element))\n return;\n if (delay > 0)\n delayUnhighlighted();\n else\n unhighlighted();\n };\n const pointerleave = () => {\n unhighlighted();\n };\n root.addEventListener('pointerover', pointerover);\n root.addEventListener('pointerout', pointerout);\n root.addEventListener('pointerleave', pointerleave);\n const onRest = (e) => {\n const { nativeEvent } = e;\n if (nativeEvent)\n return;\n unhighlighted(false);\n };\n const onHighlight = (e) => {\n const { nativeEvent } = e;\n if (nativeEvent)\n return;\n const { data } = e.data;\n const element = selectElementByData(elements, data, datum);\n if (!element)\n return;\n pointerover({ target: element, nativeEvent: false });\n };\n emitter.on('element:highlight', onHighlight);\n emitter.on('element:unhighlight', onRest);\n return () => {\n root.removeEventListener('pointerover', pointerover);\n root.removeEventListener('pointerout', pointerout);\n root.removeEventListener('pointerleave', pointerleave);\n emitter.off('element:highlight', onHighlight);\n emitter.off('element:unhighlight', onRest);\n for (const e of elements) {\n removeBackground(e);\n removeLink(e);\n }\n };\n}\nexport function ElementHighlight(_a) {\n var { delay, createGroup, background = false, link = false } = _a, rest = __rest(_a, [\"delay\", \"createGroup\", \"background\", \"link\"]);\n return (context, _, emitter) => {\n const { container, view, options } = context;\n const { scale, coordinate } = view;\n const plotArea = selectPlotArea(container);\n return elementHighlight(plotArea, Object.assign({ elements: selectG2Elements, datum: createDatumof(view), groupKey: createGroup ? createGroup(view) : undefined, coordinate,\n scale, state: mergeState(options, [\n ['active', background ? {} : { lineWidth: '1', stroke: '#000' }],\n 'inactive',\n ]), background,\n link,\n delay,\n emitter }, rest));\n };\n}\nElementHighlight.props = {\n reapplyWhenUpdate: true,\n};\n//# sourceMappingURL=elementHighlight.js.map","import { createXKey } from './utils';\nimport { ElementHighlight } from './elementHighlight';\nexport function ElementHighlightByX(options) {\n return ElementHighlight(Object.assign(Object.assign({}, options), { createGroup: createXKey }));\n}\nElementHighlightByX.props = {\n reapplyWhenUpdate: true,\n};\n//# sourceMappingURL=elementHighlightByX.js.map","import { createColorKey } from './utils';\nimport { ElementHighlight } from './elementHighlight';\nexport function ElementHighlightByColor(options) {\n return ElementHighlight(Object.assign(Object.assign({}, options), { createGroup: createColorKey }));\n}\nElementHighlightByColor.props = {\n reapplyWhenUpdate: true,\n};\n//# sourceMappingURL=elementHighlightByColor.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { group } from 'd3-array';\nimport { deepMix } from '@antv/util';\nimport { subObject } from '../utils/helper';\nimport { createValueof, createDatumof, selectG2Elements, useState, renderLink, renderBackground, selectPlotArea, offsetTransform, mergeState, selectElementByData, } from './utils';\n/**\n * Active a group of elements.\n */\nexport function elementSelect(root, { elements: elementsof, // given the root of chart returns elements to be manipulated\ndatum, // given each element returns the datum of it\ngroupKey = (d) => d, // group elements by specified key\nlink = false, // draw link or not\nsingle = false, // single select or not\ncoordinate, background = false, scale, emitter, state = {}, }) {\n var _a;\n const elements = elementsof(root);\n const elementSet = new Set(elements);\n const keyGroup = group(elements, groupKey);\n const valueof = createValueof(elements, datum);\n const [appendLink, removeLink] = renderLink(Object.assign({ link,\n elements,\n valueof,\n coordinate }, subObject(state.selected, 'link')));\n const [appendBackground, removeBackground] = renderBackground(Object.assign({ document: root.ownerDocument, background,\n coordinate,\n scale,\n valueof }, subObject(state.selected, 'background')));\n const elementStyle = deepMix(state, {\n selected: Object.assign({}, (((_a = state.selected) === null || _a === void 0 ? void 0 : _a.offset) && {\n //Apply translate to mock slice out.\n transform: (...params) => {\n const value = state.selected.offset(...params);\n const [, i] = params;\n return offsetTransform(elements[i], value, coordinate);\n },\n })),\n });\n const { setState, removeState, hasState } = useState(elementStyle, valueof);\n const clear = (nativeEvent = true) => {\n for (const e of elements) {\n removeState(e, 'selected', 'unselected');\n removeLink(e);\n removeBackground(e);\n }\n if (nativeEvent)\n emitter.emit('element:unselect', { nativeEvent: true });\n return;\n };\n const singleSelect = (event, element, nativeEvent = true) => {\n // Clear states if clicked selected element.\n if (hasState(element, 'selected'))\n clear();\n else {\n const k = groupKey(element);\n const group = keyGroup.get(k);\n const groupSet = new Set(group);\n for (const e of elements) {\n if (groupSet.has(e))\n setState(e, 'selected');\n else {\n setState(e, 'unselected');\n removeLink(e);\n }\n if (e !== element)\n removeBackground(e);\n }\n appendLink(group);\n appendBackground(element);\n if (!nativeEvent)\n return;\n emitter.emit('element:select', Object.assign(Object.assign({}, event), { nativeEvent, data: {\n data: [datum(element), ...group.map(datum)],\n } }));\n }\n };\n const multipleSelect = (event, element, nativeEvent = true) => {\n const k = groupKey(element);\n const group = keyGroup.get(k);\n const groupSet = new Set(group);\n if (!hasState(element, 'selected')) {\n const hasSelectedGroup = group.some((e) => hasState(e, 'selected'));\n for (const e of elements) {\n if (groupSet.has(e))\n setState(e, 'selected');\n else if (!hasState(e, 'selected'))\n setState(e, 'unselected');\n }\n // Append link for each group only once.\n if (!hasSelectedGroup && link)\n appendLink(group);\n appendBackground(element);\n }\n else {\n // If there is no selected elements after resetting this group,\n // clear the states.\n const hasSelected = elements.some((e) => !groupSet.has(e) && hasState(e, 'selected'));\n if (!hasSelected)\n return clear();\n // If there are still some selected elements after resetting this group,\n // only remove the link.\n for (const e of group) {\n setState(e, 'unselected');\n removeLink(e);\n removeBackground(e);\n }\n }\n if (!nativeEvent)\n return;\n emitter.emit('element:select', Object.assign(Object.assign({}, event), { nativeEvent, data: {\n data: elements.filter((e) => hasState(e, 'selected')).map(datum),\n } }));\n };\n const click = (event) => {\n const { target: element, nativeEvent = true } = event;\n // Click non-element shape, reset.\n // Such as the rest of content area(background).\n if (!elementSet.has(element))\n return clear();\n if (single)\n return singleSelect(event, element, nativeEvent);\n return multipleSelect(event, element, nativeEvent);\n };\n root.addEventListener('click', click);\n const onSelect = (e) => {\n const { nativeEvent, data } = e;\n if (nativeEvent)\n return;\n const selectedData = single ? data.data.slice(0, 1) : data.data;\n for (const d of selectedData) {\n const element = selectElementByData(elements, d, datum);\n click({ target: element, nativeEvent: false });\n }\n };\n const onUnSelect = () => {\n clear(false);\n };\n emitter.on('element:select', onSelect);\n emitter.on('element:unselect', onUnSelect);\n return () => {\n for (const e of elements)\n removeLink(e);\n root.removeEventListener('click', click);\n emitter.off('element:select', onSelect);\n emitter.off('element:unselect', onUnSelect);\n };\n}\nexport function ElementSelect(_a) {\n var { createGroup, background = false, link = false } = _a, rest = __rest(_a, [\"createGroup\", \"background\", \"link\"]);\n return (context, _, emitter) => {\n const { container, view, options } = context;\n const { coordinate, scale } = view;\n const plotArea = selectPlotArea(container);\n return elementSelect(plotArea, Object.assign({ elements: selectG2Elements, datum: createDatumof(view), groupKey: createGroup ? createGroup(view) : undefined, coordinate,\n scale, state: mergeState(options, [\n ['selected', background ? {} : { lineWidth: '1', stroke: '#000' }],\n 'unselected',\n ]), background,\n link,\n emitter }, rest));\n };\n}\nElementSelect.props = {\n reapplyWhenUpdate: true,\n};\n//# sourceMappingURL=elementSelect.js.map","import { createXKey } from './utils';\nimport { ElementSelect } from './elementSelect';\nexport function ElementSelectByX(options) {\n return ElementSelect(Object.assign(Object.assign({}, options), { createGroup: createXKey }));\n}\nElementSelectByX.props = {\n reapplyWhenUpdate: true,\n};\n//# sourceMappingURL=elementSelectByX.js.map","import { createColorKey } from './utils';\nimport { ElementSelect } from './elementSelect';\nexport function ElementSelectByColor(options) {\n return ElementSelect(Object.assign(Object.assign({}, options), { createGroup: createColorKey }));\n}\nElementSelectByColor.props = {\n reapplyWhenUpdate: true,\n};\n//# sourceMappingURL=elementSelectByColor.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Line, Text } from '@antv/g';\nimport { deepMix, throttle } from '@antv/util';\nimport { max, min, rollup, sort, bisectCenter, bisector, group, } from 'd3-array';\nimport { subObject } from '../utils/helper';\nimport { ELEMENT_CLASS_NAME, LABEL_CLASS_NAME, } from '../runtime';\nimport { selectPlotArea, mousePosition } from './utils';\nfunction maybeTransform(options) {\n const { transform = [] } = options;\n const normalizeY = transform.find((d) => d.type === 'normalizeY');\n if (normalizeY)\n return normalizeY;\n const newNormalizeY = { type: 'normalizeY' };\n transform.push(newNormalizeY);\n options.transform = transform;\n return newNormalizeY;\n}\nfunction markValue(markState, markName, channels) {\n const [value] = Array.from(markState.entries())\n .filter(([mark]) => mark.type === markName)\n .map(([mark]) => {\n const { encode } = mark;\n const channel = (name) => {\n const channel = encode[name];\n return [name, channel ? channel.value : undefined];\n };\n return Object.fromEntries(channels.map(channel));\n });\n return value;\n}\n/**\n * @todo Perf\n */\nexport function ChartIndex(_a) {\n var { wait = 20, leading, trailing = false, labelFormatter = (date) => `${date}` } = _a, style = __rest(_a, [\"wait\", \"leading\", \"trailing\", \"labelFormatter\"]);\n return (context) => {\n const { view, container, update, setState } = context;\n const { markState, scale, coordinate } = view;\n // Get line mark value, exit if it is not existed.\n const value = markValue(markState, 'line', ['x', 'y', 'series']);\n if (!value)\n return;\n // Prepare channel value.\n const { y: Y, x: X, series: S = [] } = value;\n const I = Y.map((_, i) => i);\n const sortedX = sort(I.map((i) => X[i]));\n // Prepare shapes.\n const plotArea = selectPlotArea(container);\n const lines = container.getElementsByClassName(ELEMENT_CLASS_NAME);\n const labels = container.getElementsByClassName(LABEL_CLASS_NAME);\n // The format of label key: `${elementKey}-index`,\n // group labels by elementKey.\n const keyofLabel = (d) => d.__data__.key.split('-')[0];\n const keyLabels = group(labels, keyofLabel);\n const rule = new Line({\n style: Object.assign({ x1: 0, y1: 0, x2: 0, y2: plotArea.getAttribute('height'), stroke: 'black', lineWidth: 1 }, subObject(style, 'rule')),\n });\n const text = new Text({\n style: Object.assign({ x: 0, y: plotArea.getAttribute('height'), text: '', fontSize: 10 }, subObject(style, 'label')),\n });\n rule.append(text);\n plotArea.appendChild(rule);\n // Get the closet date to the rule.\n const dateByFocus = (coordinate, scaleX, focus) => {\n const [normalizedX] = coordinate.invert(focus);\n const date = scaleX.invert(normalizedX);\n return sortedX[bisectCenter(sortedX, date)];\n };\n // Update rule and label content.\n const updateRule = (focus, date) => {\n rule.setAttribute('x1', focus[0]);\n rule.setAttribute('x2', focus[0]);\n text.setAttribute('text', labelFormatter(date));\n };\n // Store the new inner state alter rerender the view.\n let newView;\n // Rerender the view to update basis for each line.\n const updateBasisByRerender = (focus) => __awaiter(this, void 0, void 0, function* () {\n // Find the closetDate to the rule.\n const { x: scaleX } = scale;\n const date = dateByFocus(coordinate, scaleX, focus);\n updateRule(focus, date);\n setState('chartIndex', (options) => {\n // Clone options and get line mark.\n const clonedOptions = deepMix({}, options);\n const lineMark = clonedOptions.marks.find((d) => d.type === 'line');\n // Update domain of y scale for the line mark.\n const r = (I) => max(I, (i) => +Y[i]) / min(I, (i) => +Y[i]);\n const k = max(rollup(I, r, (i) => S[i]).values());\n const domainY = [1 / k, k];\n deepMix(lineMark, {\n scale: { y: { domain: domainY } },\n });\n // Update normalize options.\n const normalizeY = maybeTransform(lineMark);\n normalizeY.groupBy = 'color';\n normalizeY.basis = (I, Y) => {\n const i = I[bisector((i) => X[+i]).center(I, date)];\n return Y[i];\n };\n // Disable animation.\n for (const mark of clonedOptions.marks)\n mark.animate = false;\n return clonedOptions;\n });\n const newState = yield update('chartIndex');\n newView = newState.view;\n });\n // Only apply translate to update basis for each line.\n // If performance is ok, there is no need to use this\n // strategy to update basis.\n const updateBasisByTranslate = (focus) => {\n // Find the closetDate to the rule.\n const { scale, coordinate } = newView;\n const { x: scaleX, y: scaleY } = scale;\n const date = dateByFocus(coordinate, scaleX, focus);\n updateRule(focus, date);\n // Translate mark and label for better performance.\n for (const line of lines) {\n // Compute transform in y direction.\n const { seriesIndex: SI, key } = line.__data__;\n const i = SI[bisector((i) => X[+i]).center(SI, date)];\n const p0 = [0, scaleY.map(1)]; // basis point\n const p1 = [0, scaleY.map(Y[i] / Y[SI[0]])];\n const [, y0] = coordinate.map(p0);\n const [, y1] = coordinate.map(p1);\n const dy = y0 - y1;\n line.setAttribute('transform', `translate(0, ${dy})`);\n // Update line and related label.\n const labels = keyLabels.get(key) || [];\n for (const label of labels) {\n // @todo Replace with style.transform.\n // It now has unexpected behavior.\n label.setAttribute('dy', dy);\n }\n }\n };\n const updateBasis = throttle((event) => {\n const focus = mousePosition(plotArea, event);\n if (!focus)\n return;\n updateBasisByTranslate(focus);\n }, wait, { leading, trailing });\n updateBasisByRerender([0, 0]);\n plotArea.addEventListener('pointerenter', updateBasis);\n plotArea.addEventListener('pointermove', updateBasis);\n plotArea.addEventListener('pointerleave', updateBasis);\n return () => {\n rule.remove();\n plotArea.removeEventListener('pointerenter', updateBasis);\n plotArea.removeEventListener('pointermove', updateBasis);\n plotArea.removeEventListener('pointerleave', updateBasis);\n };\n };\n}\nChartIndex.props = {\n reapplyWhenUpdate: true,\n};\n//# sourceMappingURL=chartIndex.js.map","import { throttle, deepMix } from '@antv/util';\nimport { selectPlotArea, mousePosition } from './utils';\nfunction maybeCoordinate(options) {\n const { coordinate = {} } = options;\n const { transform = [] } = coordinate;\n const fisheye = transform.find((d) => d.type === 'fisheye');\n if (fisheye)\n return fisheye;\n const newFisheye = { type: 'fisheye' };\n transform.push(newFisheye);\n coordinate.transform = transform;\n options.coordinate = coordinate;\n return newFisheye;\n}\n/**\n * @todo Bind abstract data or data index.\n */\nexport function Fisheye({ wait = 30, leading, trailing = false, }) {\n return (context) => {\n const { options, update, setState, container } = context;\n const plotArea = selectPlotArea(container);\n const updateFocus = throttle((event) => {\n const focus = mousePosition(plotArea, event);\n if (!focus) {\n setState('fisheye');\n update();\n return;\n }\n setState('fisheye', (options) => {\n // Clone options and mutate it.\n // Disable animation.\n const clonedOptions = deepMix({}, options, {\n interaction: { tooltip: { preserve: true } },\n });\n for (const mark of clonedOptions.marks)\n mark.animate = false;\n const [x, y] = focus;\n const fisheye = maybeCoordinate(clonedOptions);\n fisheye.focusX = x;\n fisheye.focusY = y;\n fisheye.visual = true;\n return clonedOptions;\n });\n update();\n }, wait, { leading, trailing });\n // Bind events.\n plotArea.addEventListener('pointerenter', updateFocus);\n plotArea.addEventListener('pointermove', updateFocus);\n plotArea.addEventListener('pointerleave', updateFocus);\n return () => {\n plotArea.removeEventListener('pointerenter', updateFocus);\n plotArea.removeEventListener('pointermove', updateFocus);\n plotArea.removeEventListener('pointerleave', updateFocus);\n };\n };\n}\n//# sourceMappingURL=fisheye.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Circle, Line } from '@antv/g';\nimport { sort, group, mean, bisector, minIndex } from 'd3-array';\nimport { deepMix, lowerFirst, throttle } from '@antv/util';\nimport { Tooltip as TooltipComponent } from '@antv/component';\nimport { Constant, Band } from '@antv/scale';\nimport { defined, subObject } from '../utils/helper';\nimport { isTranspose, isPolar } from '../utils/coordinate';\nimport { angle, sub } from '../utils/vector';\nimport { invert } from '../utils/scale';\nimport { selectG2Elements, createXKey, selectPlotArea, mousePosition, selectFacetG2Elements, createDatumof, selectElementByData, bboxOf, } from './utils';\nimport { dataOf } from './event';\nfunction getContainer(group, mount) {\n if (mount) {\n return typeof mount === 'string' ? document.querySelector(mount) : mount;\n }\n const canvas = group.ownerDocument.defaultView\n .getContextService()\n .getDomElement();\n return canvas.parentElement;\n}\nfunction getBounding(root) {\n const bbox = root.getRenderBounds();\n const { min: [x1, y1], max: [x2, y2], } = bbox;\n return {\n x: x1,\n y: y1,\n width: x2 - x1,\n height: y2 - y1,\n };\n}\nfunction getContainerOffset(container1, container2) {\n const r1 = container1.getBoundingClientRect();\n const r2 = container2.getBoundingClientRect();\n return {\n x: r1.x - r2.x,\n y: r1.y - r2.y,\n };\n}\nfunction createTooltip(container, x0, y0, position, enterable, bounding, containerOffset, css = {}) {\n const defaults = {\n '.g2-tooltip': {},\n '.g2-tooltip-title': {\n overflow: 'hidden',\n 'white-space': 'nowrap',\n 'text-overflow': 'ellipsis',\n },\n };\n const tooltipElement = new TooltipComponent({\n className: 'tooltip',\n style: {\n x: x0,\n y: y0,\n container: containerOffset,\n data: [],\n bounding,\n position,\n enterable,\n title: '',\n offset: [10, 10],\n template: {\n prefixCls: 'g2-',\n },\n style: deepMix(defaults, css),\n },\n });\n container.appendChild(tooltipElement.HTMLTooltipElement);\n return tooltipElement;\n}\nfunction showTooltip({ root, data, x, y, render, event, single, position = 'right-bottom', enterable = false, css, mount, bounding, }) {\n const container = getContainer(root, mount);\n const canvasContainer = getContainer(root);\n // All the views share the same tooltip.\n const parent = single ? canvasContainer : root;\n const b = bounding || getBounding(root);\n const containerOffset = getContainerOffset(canvasContainer, container);\n const { tooltipElement = createTooltip(container, x, y, position, enterable, b, containerOffset, css), } = parent;\n const { items, title = '' } = data;\n tooltipElement.update(Object.assign({ x,\n y, data: items, title,\n position,\n enterable }, (render !== undefined && {\n content: render(event, { items, title }),\n })));\n parent.tooltipElement = tooltipElement;\n}\nfunction hideTooltip({ root, single, emitter, nativeEvent = true, event = null, }) {\n if (nativeEvent) {\n emitter.emit('tooltip:hide', { nativeEvent });\n }\n const container = getContainer(root);\n const parent = single ? container : root;\n const { tooltipElement } = parent;\n if (tooltipElement) {\n // Must be clientX, clientY.\n tooltipElement.hide(event === null || event === void 0 ? void 0 : event.clientX, event === null || event === void 0 ? void 0 : event.clientY);\n }\n}\nfunction destroyTooltip({ root, single }) {\n const container = getContainer(root);\n const parent = single ? container : root;\n if (!parent)\n return;\n const { tooltipElement } = parent;\n if (tooltipElement) {\n tooltipElement.destroy();\n parent.tooltipElement = undefined;\n }\n}\nfunction showUndefined(item) {\n const { value } = item;\n return Object.assign(Object.assign({}, item), { value: value === undefined ? 'undefined' : value });\n}\nfunction singleItem(element) {\n const { __data__: datum } = element;\n const { title, items = [] } = datum;\n const newItems = items\n .filter(defined)\n .map((_a) => {\n var { color = itemColorOf(element) } = _a, item = __rest(_a, [\"color\"]);\n return (Object.assign(Object.assign({}, item), { color }));\n })\n .map(showUndefined);\n return Object.assign(Object.assign({}, (title && { title })), { items: newItems });\n}\nfunction groupNameOf(scale, datum) {\n const { color: scaleColor, series: scaleSeries, facet = false } = scale;\n const { color, series } = datum;\n const invertAble = (scale) => {\n return (scale &&\n scale.invert &&\n !(scale instanceof Band) &&\n !(scale instanceof Constant));\n };\n // For non constant color channel.\n if (invertAble(scaleSeries)) {\n const cloned = scaleSeries.clone();\n return cloned.invert(series);\n }\n if (series &&\n scaleSeries instanceof Band &&\n scaleSeries.invert(series) !== color &&\n !facet) {\n return scaleSeries.invert(series);\n }\n if (invertAble(scaleColor)) {\n const name = scaleColor.invert(color);\n // For threshold scale.\n if (Array.isArray(name))\n return null;\n return name;\n }\n return null;\n}\nfunction itemColorOf(element) {\n const fill = element.getAttribute('fill');\n const stroke = element.getAttribute('stroke');\n const { __data__: datum } = element;\n const { color = fill && fill !== 'transparent' ? fill : stroke } = datum;\n return color;\n}\nfunction unique(items, key = (d) => d) {\n const valueName = new Map(items.map((d) => [key(d), d]));\n return Array.from(valueName.values());\n}\nfunction groupItems(elements, scale, groupName, data = elements.map((d) => d['__data__']), theme = {}) {\n const key = (d) => (d instanceof Date ? +d : d);\n const T = unique(data.map((d) => d.title), key).filter(defined);\n const newItems = data\n .flatMap((datum, i) => {\n const element = elements[i];\n const { items = [], title } = datum;\n const definedItems = items.filter(defined);\n // If there is only one item, use groupName as title by default.\n const useGroupName = groupName !== undefined ? groupName : items.length <= 1 ? true : false;\n return definedItems.map((_a) => {\n var { color = itemColorOf(element) || theme.color, name } = _a, item = __rest(_a, [\"color\", \"name\"]);\n const groupName = groupNameOf(scale, datum);\n const name1 = useGroupName ? groupName || name : name || groupName;\n return Object.assign(Object.assign({}, item), { color, name: name1 || title });\n });\n })\n .map(showUndefined);\n return Object.assign(Object.assign({}, (T.length > 0 && { title: T.join(',') })), { items: unique(newItems, (d) => `(${key(d.name)}, ${key(d.value)}, ${key(d.color)})`) });\n}\nfunction updateRuleY(root, points, _a) {\n var { plotWidth, plotHeight, mainWidth, mainHeight, startX, startY, transposed, polar, insetLeft, insetTop } = _a, rest = __rest(_a, [\"plotWidth\", \"plotHeight\", \"mainWidth\", \"mainHeight\", \"startX\", \"startY\", \"transposed\", \"polar\", \"insetLeft\", \"insetTop\"]);\n const defaults = Object.assign({ lineWidth: 1, stroke: '#1b1e23', strokeOpacity: 0.5 }, rest);\n const Y = points.map((p) => p[1]);\n const X = points.map((p) => p[0]);\n const y = mean(Y);\n const x = mean(X);\n const pointsOf = () => {\n if (polar) {\n const r = Math.min(mainWidth, mainHeight) / 2;\n const cx = startX + insetLeft + mainWidth / 2;\n const cy = startY + insetTop + mainHeight / 2;\n const a = angle(sub([x, y], [cx, cy]));\n const x0 = cx + r * Math.cos(a);\n const y0 = cy + r * Math.sin(a);\n return [cx, x0, cy, y0];\n }\n if (transposed)\n return [startX, startX + plotWidth, y + startY, y + startY];\n return [x + startX, x + startX, startY, startY + plotHeight];\n };\n const [x1, x2, y1, y2] = pointsOf();\n const createLine = () => {\n const line = new Line({\n style: Object.assign({ x1,\n x2,\n y1,\n y2 }, defaults),\n });\n root.appendChild(line);\n return line;\n };\n // Only update rule with defined series elements.\n if (X.length > 0) {\n const ruleY = root.ruleY || createLine();\n ruleY.style.x1 = x1;\n ruleY.style.x2 = x2;\n ruleY.style.y1 = y1;\n ruleY.style.y2 = y2;\n root.ruleY = ruleY;\n }\n}\nfunction hideRuleY(root) {\n if (root.ruleY) {\n root.ruleY.remove();\n root.ruleY = undefined;\n }\n}\nfunction updateMarker(root, { data, style, theme }) {\n if (root.markers)\n root.markers.forEach((d) => d.remove());\n const markers = data\n .filter((d) => {\n const [{ x, y }] = d;\n return defined(x) && defined(y);\n })\n .map((d) => {\n const [{ color, element }, point] = d;\n const fill = color || // encode value\n element.style.fill ||\n element.style.stroke ||\n theme.color;\n const shape = new Circle({\n style: Object.assign({ cx: point[0], cy: point[1], fill, r: 4, stroke: '#fff', strokeWidth: 2 }, style),\n });\n return shape;\n });\n for (const marker of markers)\n root.appendChild(marker);\n root.markers = markers;\n}\nfunction hideMarker(root) {\n if (root.markers) {\n root.markers.forEach((d) => d.remove());\n root.markers = [];\n }\n}\nfunction interactionKeyof(markState, key) {\n return Array.from(markState.values()).some(\n // @ts-ignore\n (d) => { var _a; return (_a = d.interaction) === null || _a === void 0 ? void 0 : _a[key]; });\n}\nfunction maybeValue(specified, defaults) {\n return specified === undefined ? defaults : specified;\n}\nfunction isEmptyTooltipData(data) {\n const { title, items } = data;\n if (items.length === 0 && title === undefined)\n return true;\n return false;\n}\nfunction hasSeries(markState) {\n return Array.from(markState.values()).some(\n // @ts-ignore\n (d) => { var _a; return ((_a = d.interaction) === null || _a === void 0 ? void 0 : _a.seriesTooltip) && d.tooltip; });\n}\n/**\n * Show tooltip for series item.\n */\nexport function seriesTooltip(root, _a) {\n var { elements: elementsof, sort: sortFunction, filter: filterFunction, scale, coordinate, crosshairs, render, groupName, emitter, wait = 50, leading = true, trailing = false, startX = 0, startY = 0, body = true, single = true, position, enterable, mount, bounding, theme, disableNative = false, marker = true, preserve = false, style: _style = {}, css = {} } = _a, rest = __rest(_a, [\"elements\", \"sort\", \"filter\", \"scale\", \"coordinate\", \"crosshairs\", \"render\", \"groupName\", \"emitter\", \"wait\", \"leading\", \"trailing\", \"startX\", \"startY\", \"body\", \"single\", \"position\", \"enterable\", \"mount\", \"bounding\", \"theme\", \"disableNative\", \"marker\", \"preserve\", \"style\", \"css\"]);\n const elements = elementsof(root);\n const transposed = isTranspose(coordinate);\n const polar = isPolar(coordinate);\n const style = deepMix(_style, rest);\n const { innerWidth: plotWidth, innerHeight: plotHeight, width: mainWidth, height: mainHeight, insetLeft, insetTop, } = coordinate.getOptions();\n // Split elements into series elements and item elements.\n const seriesElements = [];\n const itemElements = [];\n for (const element of elements) {\n const { __data__: data } = element;\n const { seriesX, title, items } = data;\n if (seriesX)\n seriesElements.push(element);\n else if (title || items)\n itemElements.push(element);\n }\n const isBandScale = !!(transposed ? scale.y : scale.x).getBandWidth;\n const closest = isBandScale && itemElements.length > 0;\n // Sorted elements from top to bottom visually,\n // or from right to left in transpose coordinate.\n seriesElements.sort((a, b) => {\n const index = transposed ? 0 : 1;\n const minY = (d) => d.getBounds().min[index];\n return transposed ? minY(b) - minY(a) : minY(a) - minY(b);\n });\n const extent = (d) => {\n const index = transposed ? 1 : 0;\n const { min, max } = d.getLocalBounds();\n return sort([min[index], max[index]]);\n };\n // Sort itemElements by x or y.\n itemElements.sort((a, b) => {\n const [minA, maxA] = extent(a);\n const [minB, maxB] = extent(b);\n const midA = (minA + maxA) / 2;\n const midB = (minB + maxB) / 2;\n return transposed ? midB - midA : midA - midB;\n });\n // Get sortedIndex and X for each series elements\n const elementSortedX = new Map(seriesElements.map((element) => {\n const { __data__: data } = element;\n const { seriesX } = data;\n const seriesIndex = seriesX.map((_, i) => i);\n const sortedIndex = sort(seriesIndex, (i) => seriesX[+i]);\n return [element, [sortedIndex, seriesX]];\n }));\n const { x: scaleX } = scale;\n // Apply offset for band scale x.\n const offsetX = (scaleX === null || scaleX === void 0 ? void 0 : scaleX.getBandWidth) ? scaleX.getBandWidth() / 2 : 0;\n const abstractX = (focus) => {\n const [normalizedX] = coordinate.invert(focus);\n return normalizedX - offsetX;\n };\n const indexByFocus = (focus, I, X) => {\n const finalX = abstractX(focus);\n const DX = X.filter(defined);\n const [minX, maxX] = sort([DX[0], DX[DX.length - 1]]);\n // If only has one element(minX == maxX), show tooltip when hover whole chart\n const isOnlyOneElement = minX === maxX;\n // If closest is true, always find at least one element.\n // Otherwise, skip element out of plot area.\n if (!closest && (finalX < minX || finalX > maxX) && !isOnlyOneElement)\n return null;\n const search = bisector((i) => X[+i]).center;\n const i = search(I, finalX);\n return I[i];\n };\n const elementsByFocus = (focus, elements) => {\n const index = transposed ? 1 : 0;\n const x = focus[index];\n const filtered = elements.filter((element) => {\n const [min, max] = extent(element);\n return x >= min && x <= max;\n });\n // If closet is true, always find at least one element.\n if (!closest || filtered.length > 0)\n return filtered;\n // Search the closet element to the focus.\n const search = bisector((element) => {\n const [min, max] = extent(element);\n return (min + max) / 2;\n }).center;\n const i = search(elements, x);\n return [elements[i]].filter(defined);\n };\n const seriesData = (element, index) => {\n const { __data__: data } = element;\n return Object.fromEntries(Object.entries(data)\n .filter(([key]) => key.startsWith('series') && key !== 'series')\n .map(([key, V]) => {\n const d = V[index];\n return [lowerFirst(key.replace('series', '')), d];\n }));\n };\n const update = throttle((event) => {\n const mouse = mousePosition(root, event);\n if (!mouse)\n return;\n const bbox = bboxOf(root);\n const x = bbox.min[0];\n const y = bbox.min[1];\n const focus = [mouse[0] - startX, mouse[1] - startY];\n if (!focus)\n return;\n // Get selected item element.\n const selectedItems = elementsByFocus(focus, itemElements);\n // Get selected data item from both series element and item element.\n const selectedSeriesElements = [];\n const selectedSeriesData = [];\n for (const element of seriesElements) {\n const [sortedIndex, X] = elementSortedX.get(element);\n const index = indexByFocus(focus, sortedIndex, X);\n if (index !== null) {\n selectedSeriesElements.push(element);\n const d = seriesData(element, index);\n const { x, y } = d;\n const p = coordinate.map([(x || 0) + offsetX, y || 0]);\n selectedSeriesData.push([Object.assign(Object.assign({}, d), { element }), p]);\n }\n }\n // Filter selectedSeriesData with different x,\n // make sure there is only one x closest to focusX.\n const SX = Array.from(new Set(selectedSeriesData.map((d) => d[0].x)));\n const closestX = SX[minIndex(SX, (x) => Math.abs(x - abstractX(focus)))];\n const filteredSeriesData = selectedSeriesData.filter((d) => d[0].x === closestX);\n const selectedData = [\n ...filteredSeriesData.map((d) => d[0]),\n ...selectedItems.map((d) => d.__data__),\n ];\n // Get the displayed tooltip data.\n const selectedElements = [...selectedSeriesElements, ...selectedItems];\n const tooltipData = groupItems(selectedElements, scale, groupName, selectedData, theme);\n // Sort items and filter items.\n if (sortFunction) {\n tooltipData.items.sort((a, b) => sortFunction(a) - sortFunction(b));\n }\n if (filterFunction) {\n tooltipData.items = tooltipData.items.filter(filterFunction);\n }\n // Hide tooltip with no selected tooltip.\n if (selectedElements.length === 0 || isEmptyTooltipData(tooltipData)) {\n hide(event);\n return;\n }\n if (body) {\n showTooltip({\n root,\n data: tooltipData,\n x: mouse[0] + x,\n y: mouse[1] + y,\n render,\n event,\n single,\n position,\n enterable,\n mount,\n bounding,\n css,\n });\n }\n if (crosshairs) {\n const points = filteredSeriesData.map((d) => d[1]);\n const ruleStyle = subObject(style, 'crosshairs');\n updateRuleY(root, points, Object.assign(Object.assign({}, ruleStyle), { plotWidth,\n plotHeight,\n mainWidth,\n mainHeight,\n insetLeft,\n insetTop,\n startX,\n startY,\n transposed,\n polar }));\n }\n if (marker) {\n const markerStyles = subObject(style, 'marker');\n updateMarker(root, {\n data: filteredSeriesData,\n style: markerStyles,\n theme,\n });\n }\n emitter.emit('tooltip:show', Object.assign(Object.assign({}, event), { nativeEvent: true, data: { data: { x: invert(scale.x, abstractX(focus), true) } } }));\n }, wait, { leading, trailing });\n const hide = (event) => {\n hideTooltip({ root, single, emitter, event });\n if (crosshairs)\n hideRuleY(root);\n if (marker)\n hideMarker(root);\n };\n const destroy = () => {\n destroyTooltip({ root, single });\n if (crosshairs)\n hideRuleY(root);\n if (marker)\n hideMarker(root);\n };\n const onTooltipShow = ({ nativeEvent, data }) => {\n if (nativeEvent)\n return;\n const { x } = data.data;\n const { x: scaleX } = scale;\n const x1 = scaleX.map(x);\n const [x2, y2] = coordinate.map([x1, 0.5]);\n const { min: [minX, minY], } = root.getRenderBounds();\n update({ offsetX: x2 + minX, offsetY: y2 + minY });\n };\n const onTooltipHide = () => {\n hideTooltip({ root, single, emitter, nativeEvent: false });\n };\n const onTooltipDisable = () => {\n removeEventListeners();\n destroy();\n };\n const onTooltipEnable = () => {\n addEventListeners();\n };\n const addEventListeners = () => {\n if (!disableNative) {\n root.addEventListener('pointerenter', update);\n root.addEventListener('pointermove', update);\n root.addEventListener('pointerleave', hide);\n }\n };\n const removeEventListeners = () => {\n if (!disableNative) {\n root.removeEventListener('pointerenter', update);\n root.removeEventListener('pointermove', update);\n root.removeEventListener('pointerleave', hide);\n }\n };\n addEventListeners();\n emitter.on('tooltip:show', onTooltipShow);\n emitter.on('tooltip:hide', onTooltipHide);\n emitter.on('tooltip:disable', onTooltipDisable);\n emitter.on('tooltip:enable', onTooltipEnable);\n return () => {\n removeEventListeners();\n emitter.off('tooltip:show', onTooltipShow);\n emitter.off('tooltip:hide', onTooltipHide);\n emitter.off('tooltip:disable', onTooltipDisable);\n emitter.off('tooltip:enable', onTooltipEnable);\n if (preserve) {\n hideTooltip({ root, single, emitter, nativeEvent: false });\n }\n else {\n destroy();\n }\n };\n}\n/**\n * Show tooltip for non-series item.\n */\nexport function tooltip(root, { elements: elementsof, scale, render, groupName, sort: sortFunction, filter: filterFunction, emitter, wait = 50, leading = true, trailing = false, groupKey = (d) => d, // group elements by specified key\nsingle = true, position, enterable, datum, view, mount, bounding, theme, shared = false, body = true, disableNative = false, preserve = false, css = {}, }) {\n const elements = elementsof(root);\n const elementSet = new Set(elements);\n const keyGroup = group(elements, groupKey);\n const pointermove = throttle((event) => {\n const { target: element } = event;\n if (!elementSet.has(element)) {\n hideTooltip({ root, single, emitter, event });\n return;\n }\n const k = groupKey(element);\n const group = keyGroup.get(k);\n const data = group.length === 1 && !shared\n ? singleItem(group[0])\n : groupItems(group, scale, groupName, undefined, theme);\n // Sort items and sort.\n if (sortFunction) {\n data.items.sort((a, b) => sortFunction(a) - sortFunction(b));\n }\n if (filterFunction) {\n data.items = data.items.filter(filterFunction);\n }\n if (isEmptyTooltipData(data)) {\n hideTooltip({ root, single, emitter, event });\n return;\n }\n const { offsetX, offsetY } = event;\n if (body) {\n showTooltip({\n root,\n data,\n x: offsetX,\n y: offsetY,\n render,\n event,\n single,\n position,\n enterable,\n mount,\n bounding,\n css,\n });\n }\n emitter.emit('tooltip:show', Object.assign(Object.assign({}, event), { nativeEvent: true, data: {\n data: dataOf(element, view),\n } }));\n }, wait, { leading, trailing });\n const pointerleave = (event) => {\n hideTooltip({ root, single, emitter, event });\n };\n const addEventListeners = () => {\n if (!disableNative) {\n root.addEventListener('pointermove', pointermove);\n // Only emit pointerleave event when the pointer is not in the root area.\n // !!!DO NOT USE pointerout event, it will emit when the pointer is in the child area.\n root.addEventListener('pointerleave', pointerleave);\n }\n };\n const removeEventListeners = () => {\n if (!disableNative) {\n root.removeEventListener('pointermove', pointermove);\n root.removeEventListener('pointerleave', pointerleave);\n }\n };\n const onTooltipShow = ({ nativeEvent, data }) => {\n if (nativeEvent)\n return;\n const element = selectElementByData(elements, data.data, datum);\n if (!element)\n return;\n const bbox = element.getBBox();\n const { x, y, width, height } = bbox;\n pointermove({\n target: element,\n offsetX: x + width / 2,\n offsetY: y + height / 2,\n });\n };\n const onTooltipHide = ({ nativeEvent } = {}) => {\n if (nativeEvent)\n return;\n hideTooltip({ root, single, emitter, nativeEvent: false });\n };\n const onTooltipDisable = () => {\n removeEventListeners();\n destroyTooltip({ root, single });\n };\n const onTooltipEnable = () => {\n addEventListeners();\n };\n emitter.on('tooltip:show', onTooltipShow);\n emitter.on('tooltip:hide', onTooltipHide);\n emitter.on('tooltip:enable', onTooltipEnable);\n emitter.on('tooltip:disable', onTooltipDisable);\n addEventListeners();\n return () => {\n removeEventListeners();\n emitter.off('tooltip:show', onTooltipShow);\n emitter.off('tooltip:hide', onTooltipHide);\n if (preserve) {\n hideTooltip({ root, single, emitter, nativeEvent: false });\n }\n else {\n destroyTooltip({ root, single });\n }\n };\n}\nexport function Tooltip(options) {\n const { shared, crosshairs, series, name, item = () => ({}), facet = false } = options, rest = __rest(options, [\"shared\", \"crosshairs\", \"series\", \"name\", \"item\", \"facet\"]);\n return (target, viewInstances, emitter) => {\n const { container, view } = target;\n const { scale, markState, coordinate, theme } = view;\n // Get default value from mark states.\n const defaultSeries = interactionKeyof(markState, 'seriesTooltip');\n const defaultShowCrosshairs = interactionKeyof(markState, 'crosshairs');\n const plotArea = selectPlotArea(container);\n const isSeries = maybeValue(series, defaultSeries);\n // For non-facet and series tooltip.\n if (isSeries && hasSeries(markState) && !facet) {\n return seriesTooltip(plotArea, Object.assign(Object.assign({}, rest), { theme, elements: selectG2Elements, scale,\n coordinate, crosshairs: maybeValue(crosshairs, defaultShowCrosshairs), item,\n emitter }));\n }\n // For facet and series tooltip.\n if (isSeries && facet) {\n // Get sub view instances for this view.\n const facetInstances = viewInstances.filter((d) => d !== target && d.options.parentKey === target.options.key);\n const elements = selectFacetG2Elements(target, viewInstances);\n // Use the scale of the first view.\n const scale = facetInstances[0].view.scale;\n const bbox = plotArea.getBounds();\n const startX = bbox.min[0];\n const startY = bbox.min[1];\n Object.assign(scale, { facet: true });\n // @todo Nested structure rather than flat structure for facet?\n // Add listener to the root area.\n // @ts-ignore\n return seriesTooltip(plotArea.parentNode.parentNode, Object.assign(Object.assign({}, rest), { theme, elements: () => elements, scale,\n coordinate, crosshairs: maybeValue(crosshairs, defaultShowCrosshairs), item,\n startX,\n startY,\n emitter }));\n }\n return tooltip(plotArea, Object.assign(Object.assign({}, rest), { datum: createDatumof(view), elements: selectG2Elements, scale,\n coordinate, groupKey: shared ? createXKey(view) : undefined, item,\n emitter,\n view,\n theme,\n shared }));\n };\n}\nTooltip.props = {\n reapplyWhenUpdate: true,\n};\n//# sourceMappingURL=tooltip.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { deepMix, throttle } from '@antv/util';\nimport { subObject } from '../utils/helper';\nimport { useState, setCursor, restoreCursor } from './utils';\nexport const CATEGORY_LEGEND_CLASS_NAME = 'legend-category';\nexport const CONTINUOUS_LEGEND_CLASS_NAME = 'legend-continuous';\nexport const LEGEND_ITEMS_CLASS_NAME = 'items-item';\nexport const LEGEND_MAKER_CLASS_NAME = 'legend-category-item-marker';\nexport const LEGEND_LABEL_CLASS_NAME = 'legend-category-item-label';\nexport function markerOf(item) {\n return item.getElementsByClassName(LEGEND_MAKER_CLASS_NAME)[0];\n}\nexport function labelOf(item) {\n return item.getElementsByClassName(LEGEND_LABEL_CLASS_NAME)[0];\n}\nexport function itemsOf(root) {\n return root.getElementsByClassName(LEGEND_ITEMS_CLASS_NAME);\n}\nexport function legendsOf(root) {\n return root.getElementsByClassName(CATEGORY_LEGEND_CLASS_NAME);\n}\nexport function legendsContinuousOf(root) {\n return root.getElementsByClassName(CONTINUOUS_LEGEND_CLASS_NAME);\n}\nexport function legendClearSetState(root, setState) {\n const legends = [...legendsOf(root), ...legendsContinuousOf(root)];\n legends.forEach((legend) => {\n setState(legend, (v) => v);\n });\n}\nexport function dataOf(root) {\n // legend -> layout -> container\n let parent = root.parentNode;\n while (parent && !parent.__data__) {\n parent = parent.parentNode;\n }\n return parent.__data__;\n}\nexport function attributesOf(root) {\n let child = root;\n while (child && !child.attr('class').startsWith('legend')) {\n child = child.children[0];\n }\n return child.attributes;\n}\nfunction legendFilterOrdinal(root, { legends, // given the root of chart returns legends to be manipulated\nmarker: markerOf, // given the legend returns the marker\nlabel: labelOf, // given the legend returns the label\ndatum, // given the legend returns the value\nfilter, // invoke when dispatch filter event,\nemitter, channel, state = {}, // state options\n }) {\n // Index handler by item.\n const itemClick = new Map();\n const itemPointerenter = new Map();\n const itemPointerout = new Map();\n const { unselected = {\n markerStroke: '#aaa',\n markerFill: '#aaa',\n labelFill: '#aaa',\n }, } = state;\n const markerStyle = { unselected: subObject(unselected, 'marker') };\n const labelStyle = { unselected: subObject(unselected, 'label') };\n const { setState: setM, removeState: removeM } = useState(markerStyle, undefined);\n const { setState: setL, removeState: removeL } = useState(labelStyle, undefined);\n const items = Array.from(legends(root));\n let selectedValues = items.map(datum);\n const updateLegendState = () => {\n for (const item of items) {\n const value = datum(item);\n const marker = markerOf(item);\n const label = labelOf(item);\n if (!selectedValues.includes(value)) {\n setM(marker, 'unselected');\n setL(label, 'unselected');\n }\n else {\n removeM(marker, 'unselected');\n removeL(label, 'unselected');\n }\n }\n };\n for (const item of items) {\n // Defined handlers.\n const pointerenter = () => {\n setCursor(root, 'pointer');\n };\n const pointerout = () => {\n restoreCursor(root);\n };\n const click = (event) => __awaiter(this, void 0, void 0, function* () {\n const value = datum(item);\n const index = selectedValues.indexOf(value);\n if (index === -1)\n selectedValues.push(value);\n else\n selectedValues.splice(index, 1);\n if (selectedValues.length === 0)\n selectedValues.push(...items.map(datum));\n yield filter(selectedValues);\n updateLegendState();\n const { nativeEvent = true } = event;\n if (!nativeEvent)\n return;\n if (selectedValues.length === items.length) {\n emitter.emit('legend:reset', { nativeEvent });\n }\n else {\n // Emit events.\n emitter.emit('legend:filter', Object.assign(Object.assign({}, event), { nativeEvent, data: {\n channel,\n values: selectedValues,\n } }));\n }\n });\n // Bind and store handlers.\n item.addEventListener('click', click);\n item.addEventListener('pointerenter', pointerenter);\n item.addEventListener('pointerout', pointerout);\n itemClick.set(item, click);\n itemPointerenter.set(item, pointerenter);\n itemPointerout.set(item, pointerout);\n }\n const onFilter = (event) => __awaiter(this, void 0, void 0, function* () {\n const { nativeEvent } = event;\n if (nativeEvent)\n return;\n const { data } = event;\n const { channel: specifiedChannel, values } = data;\n if (specifiedChannel !== channel)\n return;\n selectedValues = values;\n yield filter(selectedValues);\n updateLegendState();\n });\n const onEnd = (event) => __awaiter(this, void 0, void 0, function* () {\n const { nativeEvent } = event;\n if (nativeEvent)\n return;\n selectedValues = items.map(datum);\n yield filter(selectedValues);\n updateLegendState();\n });\n emitter.on('legend:filter', onFilter);\n emitter.on('legend:reset', onEnd);\n return () => {\n for (const item of items) {\n item.removeEventListener('click', itemClick.get(item));\n item.removeEventListener('pointerenter', itemPointerenter.get(item));\n item.removeEventListener('pointerout', itemPointerout.get(item));\n emitter.off('legend:filter', onFilter);\n emitter.off('legend:reset', onEnd);\n }\n };\n}\nfunction legendFilterContinuous(_, { legend, filter, emitter, channel }) {\n const onValueChange = ({ detail: { value } }) => {\n filter(value);\n emitter.emit({\n nativeEvent: true,\n data: {\n channel,\n values: value,\n },\n });\n };\n legend.addEventListener('valuechange', onValueChange);\n return () => {\n legend.removeEventListener('valuechange', onValueChange);\n };\n}\nfunction filterView(context, // View instance,\n{ legend, // Legend instance.\nchannel, // Filter Channel.\nvalue, // Filtered Values.\nordinal, // Data type of the legend.\nchannels, // Channels for this legend.\nallChannels, // Channels for all legends.\nfacet = false, // For facet.\n }) {\n return __awaiter(this, void 0, void 0, function* () {\n const { view, update, setState } = context;\n setState(legend, (viewOptions) => {\n const { marks } = viewOptions;\n // Add filter transform for every marks,\n // which will skip for mark without color channel.\n const newMarks = marks.map((mark) => {\n if (mark.type === 'legends')\n return mark;\n // Inset after aggregate transform, such as group, and bin.\n const { transform = [] } = mark;\n const index = transform.findIndex(({ type }) => type.startsWith('group') || type.startsWith('bin'));\n const newTransform = [...transform];\n newTransform.splice(index + 1, 0, {\n type: 'filter',\n [channel]: { value, ordinal },\n });\n // Set domain of scale to preserve encoding.\n const newScale = Object.fromEntries(channels.map((channel) => [\n channel,\n { domain: view.scale[channel].getOptions().domain },\n ]));\n return deepMix({}, mark, Object.assign(Object.assign({ transform: newTransform, scale: newScale }, (!ordinal && { animate: false })), { legend: facet\n ? false\n : Object.fromEntries(allChannels.map((d) => [d, { preserve: true }])) }));\n });\n return Object.assign(Object.assign({}, viewOptions), { marks: newMarks });\n });\n yield update();\n });\n}\nfunction filterFacets(facets, options) {\n for (const facet of facets) {\n filterView(facet, Object.assign(Object.assign({}, options), { facet: true }));\n }\n}\nexport function LegendFilter() {\n return (context, contexts, emitter) => {\n const { container } = context;\n const facets = contexts.filter((d) => d !== context);\n const isFacet = facets.length > 0;\n const channelsOf = (legend) => {\n return dataOf(legend).scales.map((d) => d.name);\n };\n const legends = [\n ...legendsOf(container),\n ...legendsContinuousOf(container),\n ];\n const allChannels = legends.flatMap(channelsOf);\n const filter = isFacet\n ? throttle(filterFacets, 50, { trailing: true })\n : throttle(filterView, 50, { trailing: true });\n const removes = legends.map((legend) => {\n const { name: channel, domain } = dataOf(legend).scales[0];\n const channels = channelsOf(legend);\n const common = {\n legend,\n channel,\n channels,\n allChannels,\n };\n if (legend.className === CATEGORY_LEGEND_CLASS_NAME) {\n return legendFilterOrdinal(container, {\n legends: itemsOf,\n marker: markerOf,\n label: labelOf,\n datum: (d) => {\n const { __data__: datum } = d;\n const { index } = datum;\n return domain[index];\n },\n filter: (value) => {\n const options = Object.assign(Object.assign({}, common), { value, ordinal: true });\n if (isFacet)\n filter(facets, options);\n else\n filter(context, options);\n },\n state: legend.attributes.state,\n channel,\n emitter,\n });\n }\n else {\n return legendFilterContinuous(container, {\n legend,\n filter: (value) => {\n const options = Object.assign(Object.assign({}, common), { value, ordinal: false });\n if (isFacet)\n filter(facets, options);\n else\n filter(context, options);\n },\n emitter,\n channel,\n });\n }\n });\n return () => {\n removes.forEach((remove) => remove());\n };\n };\n}\n//# sourceMappingURL=legendFilter.js.map","import { group } from 'd3-array';\nimport { subObject } from '../utils/helper';\nimport { mergeState, selectG2Elements, useState, createValueof, createDatumof, } from './utils';\nimport { markerOf, labelOf, itemsOf, legendsOf, dataOf } from './legendFilter';\nexport function LegendHighlight() {\n return (context, _, emitter) => {\n const { container, view, options } = context;\n const legends = legendsOf(container);\n const elements = selectG2Elements(container);\n const channelOf = (legend) => {\n return dataOf(legend).scales[0].name;\n };\n const scaleOf = (channel) => {\n const { scale: { [channel]: scale }, } = view;\n return scale;\n };\n const markState = mergeState(options, ['active', 'inactive']);\n const valueof = createValueof(elements, createDatumof(view));\n const destroys = [];\n // Bind events for each legend.\n for (const legend of legends) {\n const datumOf = (item) => {\n const { data } = legend.attributes;\n const { __data__: datum } = item;\n const { index } = datum;\n return data[index].label;\n };\n const channel = channelOf(legend);\n const items = itemsOf(legend);\n const scale = scaleOf(channel);\n const elementGroup = group(elements, (d) => scale.invert(d.__data__[channel]));\n const { state: legendState = {} } = legend.attributes;\n const { inactive = {} } = legendState;\n const { setState, removeState } = useState(markState, valueof);\n // Handle styles of inner item.\n const markerStyle = { inactive: subObject(inactive, 'marker') };\n const labelStyle = { inactive: subObject(inactive, 'label') };\n const { setState: setM, removeState: removeM } = useState(markerStyle);\n const { setState: setL, removeState: removeL } = useState(labelStyle);\n const updateLegendState = (highlight) => {\n for (const item of items) {\n const marker = markerOf(item);\n const label = labelOf(item);\n if (item === highlight || highlight === null) {\n removeM(marker, 'inactive');\n removeL(label, 'inactive');\n }\n else {\n setM(marker, 'inactive');\n setL(label, 'inactive');\n }\n }\n };\n const highlightItem = (event, item) => {\n // Update UI.\n const value = datumOf(item);\n const elementSet = new Set(elementGroup.get(value));\n for (const e of elements) {\n if (elementSet.has(e))\n setState(e, 'active');\n else\n setState(e, 'inactive');\n }\n updateLegendState(item);\n // Emit events.\n const { nativeEvent = true } = event;\n if (!nativeEvent)\n return;\n emitter.emit('legend:highlight', Object.assign(Object.assign({}, event), { nativeEvent, data: { channel, value } }));\n };\n const itemPointerover = new Map();\n // Add listener for the legend items.\n for (const item of items) {\n const pointerover = (event) => {\n highlightItem(event, item);\n };\n item.addEventListener('pointerover', pointerover);\n itemPointerover.set(item, pointerover);\n }\n // Add listener for the legend group.\n const pointerleave = (event) => {\n for (const e of elements)\n removeState(e, 'inactive', 'active');\n updateLegendState(null);\n // Emit events.\n const { nativeEvent = true } = event;\n if (!nativeEvent)\n return;\n emitter.emit('legend:unhighlight', { nativeEvent });\n };\n const onHighlight = (event) => {\n const { nativeEvent, data } = event;\n if (nativeEvent)\n return;\n const { channel: specifiedChannel, value } = data;\n if (specifiedChannel !== channel)\n return;\n const item = items.find((d) => datumOf(d) === value);\n if (!item)\n return;\n highlightItem({ nativeEvent: false }, item);\n };\n const onUnHighlight = (event) => {\n const { nativeEvent } = event;\n if (nativeEvent)\n return;\n pointerleave({ nativeEvent: false });\n };\n legend.addEventListener('pointerleave', pointerleave);\n emitter.on('legend:highlight', onHighlight);\n emitter.on('legend:unhighlight', onUnHighlight);\n const destroy = () => {\n legend.removeEventListener(pointerleave);\n emitter.off('legend:highlight', onHighlight);\n emitter.off('legend:unhighlight', onUnHighlight);\n for (const [item, pointerover] of itemPointerover) {\n item.removeEventListener(pointerover);\n }\n };\n destroys.push(destroy);\n }\n return () => destroys.forEach((d) => d());\n };\n}\n//# sourceMappingURL=legendHighlight.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Rect, Path } from '@antv/g';\nimport { subObject, omitPrefixObject } from '../utils/helper';\nimport { selectionOf, pixelsOf } from '../utils/scale';\nimport { createElement } from '../utils/createElement';\nimport { select } from '../utils/selection';\nimport { selectG2Elements, selectPlotArea, createDatumof, useState, createValueof, setCursor, brushMousePosition, selectFacetG2Elements, mergeState, selectFacetViews, } from './utils';\nfunction intersect(bbox1, bbox2) {\n const [minX1, minY1, maxX1, maxY1] = bbox1;\n const [minX2, minY2, maxX2, maxY2] = bbox2;\n return !(minX2 > maxX1 || maxX2 < minX1 || minY2 > maxY1 || maxY2 < minY1);\n}\nfunction normalizeBounds(x, y, x1, y1, extent) {\n const [minX, minY, maxX, maxY] = extent;\n return [\n Math.max(minX, Math.min(x, x1)),\n Math.max(minY, Math.min(y, y1)),\n Math.min(maxX, Math.max(x, x1)),\n Math.min(maxY, Math.max(y, y1)),\n ];\n}\nfunction bboxOf(root) {\n const { width, height } = root.getBBox();\n return [0, 0, width, height];\n}\nfunction applyStyle(selection, style) {\n for (const [key, value] of Object.entries(style)) {\n selection.style(key, value);\n }\n}\nconst ResizableMask = createElement((g) => {\n const _a = g.attributes, { x, y, width, height, class: className, renders = {}, handleSize: size = 10, document } = _a, style = __rest(_a, [\"x\", \"y\", \"width\", \"height\", \"class\", \"renders\", \"handleSize\", \"document\"]);\n if (!document ||\n width === undefined ||\n height === undefined ||\n x === undefined ||\n y === undefined)\n return;\n const half = size / 2;\n const renderRect = (g, options, document) => {\n if (!g.handle) {\n g.handle = document.createElement('rect');\n g.append(g.handle);\n }\n const { handle } = g;\n handle.attr(options);\n return handle;\n };\n const _b = subObject(omitPrefixObject(style, 'handleNW', 'handleNE'), 'handleN'), { render: handleNRender = renderRect } = _b, handleNStyle = __rest(_b, [\"render\"]);\n const _c = subObject(style, 'handleE'), { render: handleERender = renderRect } = _c, handleEStyle = __rest(_c, [\"render\"]);\n const _d = subObject(omitPrefixObject(style, 'handleSE', 'handleSW'), 'handleS'), { render: handleSRender = renderRect } = _d, handleSStyle = __rest(_d, [\"render\"]);\n const _e = subObject(style, 'handleW'), { render: handleWRender = renderRect } = _e, handleWStyle = __rest(_e, [\"render\"]);\n const _f = subObject(style, 'handleNW'), { render: handleNWRender = renderRect } = _f, handleNWStyle = __rest(_f, [\"render\"]);\n const _g = subObject(style, 'handleNE'), { render: handleNERender = renderRect } = _g, handleNEStyle = __rest(_g, [\"render\"]);\n const _h = subObject(style, 'handleSE'), { render: handleSERender = renderRect } = _h, handleSEStyle = __rest(_h, [\"render\"]);\n const _j = subObject(style, 'handleSW'), { render: handleSWRender = renderRect } = _j, handleSWStyle = __rest(_j, [\"render\"]);\n const renderHandle = (g, renderNode) => {\n const { id } = g;\n const _a = g.attributes, { x, y } = _a, style = __rest(_a, [\"x\", \"y\"]);\n const handle = renderNode(g, Object.assign({ x: 0, y: 0 }, style), document);\n handle.id = id;\n handle.style.draggable = true;\n };\n const appendHandle = (handleRender) => {\n return () => {\n const Node = createElement((g) => renderHandle(g, handleRender));\n return new Node({});\n };\n };\n const container = select(g)\n .attr('className', className)\n .style('x', x)\n .style('y', y)\n .style('draggable', true);\n container\n .maybeAppend('selection', 'rect')\n .style('draggable', true)\n .style('fill', 'transparent')\n .call(applyStyle, Object.assign({ width, height }, omitPrefixObject(style, 'handle')));\n container\n .maybeAppend('handle-n', appendHandle(handleNRender))\n .style('x', half)\n .style('y', -half)\n .style('width', width - size)\n .style('height', size)\n .style('fill', 'transparent')\n .call(applyStyle, handleNStyle);\n container\n .maybeAppend('handle-e', appendHandle(handleERender))\n .style('x', width - half)\n .style('y', half)\n .style('width', size)\n .style('height', height - size)\n .style('fill', 'transparent')\n .call(applyStyle, handleEStyle);\n container\n .maybeAppend('handle-s', appendHandle(handleSRender))\n .style('x', half)\n .style('y', height - half)\n .style('width', width - size)\n .style('height', size)\n .style('fill', 'transparent')\n .call(applyStyle, handleSStyle);\n container\n .maybeAppend('handle-w', appendHandle(handleWRender))\n .style('x', -half)\n .style('y', half)\n .style('width', size)\n .style('height', height - size)\n .style('fill', 'transparent')\n .call(applyStyle, handleWStyle);\n container\n .maybeAppend('handle-nw', appendHandle(handleNWRender))\n .style('x', -half)\n .style('y', -half)\n .style('width', size)\n .style('height', size)\n .style('fill', 'transparent')\n .call(applyStyle, handleNWStyle);\n container\n .maybeAppend('handle-ne', appendHandle(handleNERender))\n .style('x', width - half)\n .style('y', -half)\n .style('width', size)\n .style('height', size)\n .style('fill', 'transparent')\n .call(applyStyle, handleNEStyle);\n container\n .maybeAppend('handle-se', appendHandle(handleSERender))\n .style('x', width - half)\n .style('y', height - half)\n .style('width', size)\n .style('height', size)\n .style('fill', 'transparent')\n .call(applyStyle, handleSEStyle);\n container\n .maybeAppend('handle-sw', appendHandle(handleSWRender))\n .style('x', -half)\n .style('y', height - half)\n .style('width', size)\n .style('height', size)\n .style('fill', 'transparent')\n .call(applyStyle, handleSWStyle);\n});\nexport function brush(root, _a) {\n var { brushed = () => { }, brushended = () => { }, brushcreated = () => { }, brushstarted = () => { }, brushupdated = () => { }, extent = bboxOf(root), brushRegion = (x, y, x1, y1, extent) => [x, y, x1, y1], reverse = false, fill = '#777', fillOpacity = '0.3', stroke = '#fff', selectedHandles = [\n 'handle-n',\n 'handle-e',\n 'handle-s',\n 'handle-w',\n 'handle-nw',\n 'handle-ne',\n 'handle-se',\n 'handle-sw',\n ] } = _a, style = __rest(_a, [\"brushed\", \"brushended\", \"brushcreated\", \"brushstarted\", \"brushupdated\", \"extent\", \"brushRegion\", \"reverse\", \"fill\", \"fillOpacity\", \"stroke\", \"selectedHandles\"]);\n let start = null; // Start point of mask.\n let end = null; // End point of mask.\n let moveStart = null; // Start point of moving mask.\n let mask = null; // Mask instance.\n let background = null;\n let creating = false;\n const [originX, originY, width, height] = extent;\n setCursor(root, 'crosshair');\n root.style.draggable = true; // Make it response to drag event.\n // Remove old mask and init new mask.\n const initMask = (x, y, event) => {\n brushstarted(event);\n if (mask)\n mask.remove();\n if (background)\n background.remove();\n start = [x, y];\n if (reverse)\n return initReverseMask();\n initNormalMask();\n };\n const initReverseMask = () => {\n background = new Path({\n style: Object.assign(Object.assign({}, style), { fill,\n fillOpacity,\n stroke, pointerEvents: 'none' }),\n });\n mask = new ResizableMask({\n // @ts-ignore\n style: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n draggable: true,\n document: root.ownerDocument,\n },\n className: 'mask',\n });\n root.appendChild(background);\n root.appendChild(mask);\n };\n const initNormalMask = () => {\n mask = new ResizableMask({\n // @ts-ignore\n style: Object.assign(Object.assign({ document: root.ownerDocument, x: 0, y: 0 }, style), { fill,\n fillOpacity,\n stroke, draggable: true }),\n className: 'mask',\n });\n root.appendChild(mask);\n };\n // Remove mask and reset states.\n const removeMask = (emit = true) => {\n if (mask)\n mask.remove();\n if (background)\n background.remove();\n start = null;\n end = null;\n moveStart = null;\n creating = false;\n mask = null;\n background = null;\n brushended(emit);\n };\n // Update mask and invoke brushended callback.\n const updateMask = (start, end, emit = true) => {\n const [x, y, x1, y1] = normalizeBounds(start[0], start[1], end[0], end[1], extent);\n const [fx, fy, fx1, fy1] = brushRegion(x, y, x1, y1, extent);\n if (reverse)\n updateReverseMask(fx, fy, fx1, fy1);\n else\n updateNormalMask(fx, fy, fx1, fy1);\n brushed(fx, fy, fx1, fy1, emit);\n return [fx, fy, fx1, fy1];\n };\n const updateNormalMask = (x, y, x1, y1) => {\n mask.style.x = x;\n mask.style.y = y;\n mask.style.width = x1 - x;\n mask.style.height = y1 - y;\n };\n const updateReverseMask = (x, y, x1, y1) => {\n background.style.d = `\n M${originX},${originY}L${width},${originY}L${width},${height}L${originX},${height}Z\n M${x},${y}L${x},${y1}L${x1},${y1}L${x1},${y}Z\n `;\n mask.style.x = x;\n mask.style.y = y;\n mask.style.width = x1 - x;\n mask.style.height = y1 - y;\n };\n // Move and update mask.\n const moveMask = (current) => {\n const clip = (dt, start, end, min, max) => {\n if (dt + start < min)\n return min - start;\n if (dt + end > max)\n return max - end;\n return dt;\n };\n const dx = current[0] - moveStart[0];\n const dy = current[1] - moveStart[1];\n const dx1 = clip(dx, start[0], end[0], originX, width);\n const dy1 = clip(dy, start[1], end[1], originY, height);\n const currentStart = [start[0] + dx1, start[1] + dy1];\n const currentEnd = [end[0] + dx1, end[1] + dy1];\n updateMask(currentStart, currentEnd);\n };\n const handles = {\n 'handle-n': { vector: [0, 1, 0, 0], cursor: 'ns-resize' },\n 'handle-e': { vector: [0, 0, 1, 0], cursor: 'ew-resize' },\n 'handle-s': { vector: [0, 0, 0, 1], cursor: 'ns-resize' },\n 'handle-w': { vector: [1, 0, 0, 0], cursor: 'ew-resize' },\n 'handle-nw': { vector: [1, 1, 0, 0], cursor: 'nwse-resize' },\n 'handle-ne': { vector: [0, 1, 1, 0], cursor: 'nesw-resize' },\n 'handle-se': { vector: [0, 0, 1, 1], cursor: 'nwse-resize' },\n 'handle-sw': { vector: [1, 0, 0, 1], cursor: 'nesw-resize' },\n };\n const isMask = (target) => {\n return isSelection(target) || isHandle(target);\n };\n const isHandle = (target) => {\n const { id } = target;\n if (selectedHandles.indexOf(id) === -1)\n return false;\n return new Set(Object.keys(handles)).has(id);\n };\n const isSelection = (target) => {\n return target === mask.getElementById('selection');\n };\n // If target is plot area, create mask.\n // If target is mask, about to update position.\n const dragstart = (event) => {\n const { target } = event;\n const [offsetX, offsetY] = brushMousePosition(root, event);\n if (!mask || !isMask(target)) {\n initMask(offsetX, offsetY, event);\n creating = true;\n return;\n }\n if (isMask(target)) {\n moveStart = [offsetX, offsetY];\n }\n };\n const drag = (event) => {\n const { target } = event;\n const mouse = brushMousePosition(root, event);\n if (!start)\n return;\n // If target is plot area, resize mask.\n if (!moveStart)\n return updateMask(start, mouse);\n // If target is selection area, move mask.\n if (isSelection(target))\n return moveMask(mouse);\n // If target is handle area, resize mask.\n const [dx, dy] = [mouse[0] - moveStart[0], mouse[1] - moveStart[1]];\n const { id } = target;\n if (handles[id]) {\n const [sx, sy, ex, ey] = handles[id].vector;\n return updateMask([start[0] + dx * sx, start[1] + dy * sy], [end[0] + dx * ex, end[1] + dy * ey]);\n }\n };\n // If target is plot area, finish creating.\n // If target is mask, finish moving mask.\n const dragend = (event) => {\n if (moveStart) {\n moveStart = null;\n // Update start and end;\n const { x, y, width, height } = mask.style;\n start = [x, y];\n end = [x + width, y + height];\n brushupdated(x, y, x + width, y + height, event);\n return;\n }\n end = brushMousePosition(root, event);\n const [fx, fy, fx1, fy1] = updateMask(start, end);\n creating = false;\n brushcreated(fx, fy, fx1, fy1, event);\n };\n // Hide mask.\n const click = (event) => {\n const { target } = event;\n if (mask && !isMask(target))\n removeMask();\n };\n // Update cursor depends on hovered element.\n const pointermove = (event) => {\n const { target } = event;\n if (!mask || !isMask(target) || creating)\n setCursor(root, 'crosshair');\n else if (isSelection(target))\n setCursor(root, 'move');\n else if (isHandle(target))\n setCursor(root, handles[target.id].cursor);\n };\n const pointerleave = () => {\n setCursor(root, 'default');\n };\n root.addEventListener('dragstart', dragstart);\n root.addEventListener('drag', drag);\n root.addEventListener('dragend', dragend);\n root.addEventListener('click', click);\n root.addEventListener('pointermove', pointermove);\n root.addEventListener('pointerleave', pointerleave);\n return {\n mask,\n move(x, y, x1, y1, emit = true) {\n if (!mask)\n initMask(x, y, {});\n start = [x, y];\n end = [x1, y1];\n updateMask([x, y], [x1, y1], emit);\n },\n remove(emit = true) {\n if (mask)\n removeMask(emit);\n },\n destroy() {\n // Do not emit brush:end event.\n if (mask)\n removeMask(false);\n setCursor(root, 'default');\n root.removeEventListener('dragstart', dragstart);\n root.removeEventListener('drag', drag);\n root.removeEventListener('dragend', dragend);\n root.removeEventListener('click', click);\n root.removeEventListener('pointermove', pointermove);\n root.removeEventListener('pointerleave', pointerleave);\n },\n };\n}\nfunction selectSiblingViews(target, viewInstances, brushKey) {\n return viewInstances.filter((d) => {\n if (d === target)\n return false;\n const { interaction = {} } = d.options;\n return Object.values(interaction).find((d) => d.brushKey === brushKey);\n });\n}\nfunction selectSiblingContainers(target, viewInstances, brushKey) {\n return selectSiblingViews(target, viewInstances, brushKey).map((d) => selectPlotArea(d.container));\n}\nfunction selectSiblingOptions(target, viewInstances, brushKey) {\n return selectSiblingViews(target, viewInstances, brushKey).map((d) => d.options);\n}\n/**\n * @todo Brush over view for series view.\n * @todo Test perf.\n */\nexport function brushHighlight(root, _a) {\n var { elements: elementof, selectedHandles, siblings: siblingsof = (root) => [], datum, brushRegion, extent: optionalExtent, reverse, scale, coordinate, series = false, key = (d) => d, bboxOf = (root) => {\n const { x, y, width, height } = root.style;\n return { x, y, width, height };\n }, state = {}, emitter } = _a, rest = __rest(_a, [\"elements\", \"selectedHandles\", \"siblings\", \"datum\", \"brushRegion\", \"extent\", \"reverse\", \"scale\", \"coordinate\", \"series\", \"key\", \"bboxOf\", \"state\", \"emitter\"]);\n const elements = elementof(root);\n const siblings = siblingsof(root);\n const siblingElements = siblings.flatMap(elementof);\n const valueof = createValueof(elements, datum);\n const brushStyle = subObject(rest, 'mask');\n const { setState, removeState } = useState(state, valueof);\n const clonedElement = new Map();\n const { width: rootWidth, height: rootHeight, x: ordinalX = 0, y: ordinalY = 0, } = bboxOf(root);\n const extent = optionalExtent\n ? optionalExtent\n : [0, 0, rootWidth, rootHeight];\n const brushended = () => {\n for (const element of [...elements, ...siblingElements]) {\n removeState(element, 'active', 'inactive');\n }\n };\n const brushed = (x, y, x1, y1) => {\n var _a;\n // Hide brush for the sibling view.\n for (const sibling of siblings)\n (_a = sibling.brush) === null || _a === void 0 ? void 0 : _a.remove();\n // Store the key of the active element.\n const keys = new Set();\n // Highlight and store selected elements.\n for (const element of elements) {\n const { min, max } = element.getLocalBounds();\n const [ex, ey] = min;\n const [ex1, ey1] = max;\n if (!intersect([ex, ey, ex1, ey1], [x, y, x1, y1])) {\n setState(element, 'inactive');\n }\n else {\n setState(element, 'active');\n keys.add(key(element));\n }\n }\n // Highlight elements with same key in sibling view.\n for (const element of siblingElements) {\n if (keys.has(key(element)))\n setState(element, 'active');\n else\n setState(element, 'inactive');\n }\n };\n const seriesBrushend = () => {\n for (const element of elements)\n removeState(element, 'inactive');\n for (const cloned of clonedElement.values())\n cloned.remove();\n clonedElement.clear();\n };\n const seriesBrushed = (x, y, x1, y1) => {\n const clone = (element) => {\n const cloned = element.cloneNode();\n cloned.__data__ = element.__data__;\n element.parentNode.appendChild(cloned);\n clonedElement.set(element, cloned);\n return cloned;\n };\n for (const element of elements) {\n const cloned = clonedElement.get(element) || clone(element);\n cloned.style.clipPath = new Rect({\n style: {\n x: x + ordinalX,\n y: y + ordinalY,\n width: x1 - x,\n height: y1 - y,\n },\n });\n setState(element, 'inactive');\n setState(cloned, 'active');\n }\n };\n const brushHandler = brush(root, Object.assign(Object.assign({}, brushStyle), { extent,\n brushRegion,\n reverse,\n selectedHandles, brushended: (emit) => {\n const handler = series ? seriesBrushend : brushended;\n if (emit) {\n emitter.emit('brush:remove', { nativeEvent: true });\n }\n handler();\n }, brushed: (x, y, x1, y1, emit) => {\n const selection = selectionOf(x, y, x1, y1, scale, coordinate);\n if (emit) {\n emitter.emit('brush:highlight', {\n nativeEvent: true,\n data: { selection },\n });\n }\n const handler = series ? seriesBrushed : brushed;\n handler(x, y, x1, y1);\n }, brushcreated: (x, y, x1, y1, event) => {\n const selection = selectionOf(x, y, x1, y1, scale, coordinate);\n emitter.emit('brush:end', Object.assign(Object.assign({}, event), { nativeEvent: true, data: { selection } }));\n }, brushupdated: (x, y, x1, y1, event) => {\n const selection = selectionOf(x, y, x1, y1, scale, coordinate);\n emitter.emit('brush:end', Object.assign(Object.assign({}, event), { nativeEvent: true, data: { selection } }));\n }, brushstarted: (e) => {\n emitter.emit('brush:start', e);\n } }));\n // Move brush and highlight data.\n const onHighlight = ({ nativeEvent, data }) => {\n if (nativeEvent)\n return;\n const { selection } = data;\n const [x, y, x1, y1] = pixelsOf(selection, scale, coordinate);\n brushHandler.move(x, y, x1, y1, false);\n };\n emitter.on('brush:highlight', onHighlight);\n // Remove brush and reset data.\n const onRemove = ({ nativeEvent } = {}) => {\n if (nativeEvent)\n return;\n brushHandler.remove(false);\n };\n emitter.on('brush:remove', onRemove);\n // Remove event handlers.\n const preBrushDestroy = brushHandler.destroy.bind(brushHandler);\n brushHandler.destroy = () => {\n emitter.off('brush:highlight', onHighlight);\n emitter.off('brush:remove', onRemove);\n preBrushDestroy();\n };\n return brushHandler;\n}\nexport function BrushHighlight(_a) {\n var { facet, brushKey } = _a, rest = __rest(_a, [\"facet\", \"brushKey\"]);\n return (target, viewInstances, emitter) => {\n const { container, view, options } = target;\n const plotArea = selectPlotArea(container);\n const defaultOptions = {\n maskFill: '#777',\n maskFillOpacity: '0.3',\n maskStroke: '#fff',\n reverse: false,\n };\n const defaultStates = ['active', ['inactive', { opacity: 0.5 }]];\n const { scale, coordinate } = view;\n if (facet) {\n const bbox = plotArea.getBounds();\n const x = bbox.min[0];\n const y = bbox.min[1];\n const x1 = bbox.max[0];\n const y1 = bbox.max[1];\n return brushHighlight(plotArea.parentNode.parentNode, Object.assign(Object.assign({ elements: () => selectFacetG2Elements(target, viewInstances), datum: createDatumof(selectFacetViews(target, viewInstances).map((d) => d.view)), brushRegion: (x, y, x1, y1) => [x, y, x1, y1], extent: [x, y, x1, y1], state: mergeState(selectFacetViews(target, viewInstances).map((d) => d.options), defaultStates), emitter,\n scale,\n coordinate, selectedHandles: undefined }, defaultOptions), rest));\n }\n const brush = brushHighlight(plotArea, Object.assign(Object.assign({ elements: selectG2Elements, key: (element) => element.__data__.key, siblings: () => selectSiblingContainers(target, viewInstances, brushKey), datum: createDatumof([\n view,\n ...selectSiblingViews(target, viewInstances, brushKey).map((d) => d.view),\n ]), brushRegion: (x, y, x1, y1) => [x, y, x1, y1], extent: undefined, state: mergeState([options, ...selectSiblingOptions(target, viewInstances, brushKey)], defaultStates), emitter,\n scale,\n coordinate, selectedHandles: undefined }, defaultOptions), rest));\n // Bind brush to the view it belongs to.\n //@ts-ignore\n plotArea.brush = brush;\n return () => brush.destroy();\n };\n}\n//# sourceMappingURL=brushHighlight.js.map","import { BrushHighlight } from './brushHighlight';\nexport function brushXRegion(x, y, x1, y1, extent) {\n const [, minY, , maxY] = extent;\n return [x, minY, x1, maxY];\n}\nexport function BrushXHighlight(options) {\n return BrushHighlight(Object.assign(Object.assign({}, options), { brushRegion: brushXRegion, selectedHandles: ['handle-e', 'handle-w'] }));\n}\n//# sourceMappingURL=brushXHighlight.js.map","import { BrushHighlight } from './brushHighlight';\nexport function brushYRegion(x, y, x1, y1, extent) {\n const [minX, , maxX] = extent;\n return [minX, y, maxX, y1];\n}\nexport function BrushYHighlight(options) {\n return BrushHighlight(Object.assign(Object.assign({}, options), { brushRegion: brushYRegion, selectedHandles: ['handle-n', 'handle-s'] }));\n}\n//# sourceMappingURL=brushYHighlight.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Rect } from '@antv/g';\nimport { subObject } from '../utils/helper';\nimport { domainOf } from '../utils/scale';\nimport { brush } from './brushHighlight';\nimport { brushXRegion } from './brushXHighlight';\nimport { brushYRegion } from './brushYHighlight';\nimport { selectG2Elements, createDatumof, createValueof, useState, selectPlotArea, mergeState, } from './utils';\nexport const AXIS_CLASS_NAME = 'axis';\nexport const AXIS_LINE_CLASS_NAME = 'axis-line';\nexport const AXIS_MAIN_CLASS_NAME = 'axis-main-group';\nexport const AXIS_HOT_AREA_CLASS_NAME = 'axis-hot-area';\nfunction axesOf(container) {\n return container.getElementsByClassName(AXIS_CLASS_NAME);\n}\nfunction lineOf(axis) {\n return axis.getElementsByClassName(AXIS_LINE_CLASS_NAME)[0];\n}\nfunction mainGroupOf(axis) {\n return axis.getElementsByClassName(AXIS_MAIN_CLASS_NAME)[0];\n}\n// Use the bounds of main group of axis as the bounds of axis,\n// get rid of grid and title.\nfunction boundsOfAxis(axis) {\n return mainGroupOf(axis).getLocalBounds();\n}\n// Brush for vertical axis.\nfunction verticalBrush(axis, _a) {\n var { cross, offsetX, offsetY } = _a, style = __rest(_a, [\"cross\", \"offsetX\", \"offsetY\"]);\n const bounds = boundsOfAxis(axis);\n const axisLine = lineOf(axis);\n const [lineX] = axisLine.getLocalBounds().min;\n const [minX, minY] = bounds.min;\n const [maxX, maxY] = bounds.max;\n const size = (maxX - minX) * 2;\n return {\n brushRegion: brushYRegion,\n hotZone: new Rect({\n className: AXIS_HOT_AREA_CLASS_NAME,\n style: Object.assign({ \n // If it is not cross, draw brush in both side of axisLine,\n // otherwise the draw brush within bounds area.\n x: cross ? minX : lineX - size / 2, width: cross ? size / 2 : size, y: minY, height: maxY - minY }, style),\n }),\n extent: cross\n ? // If it is cross, the x range is ignored.\n (x, y, x1, y1) => [-Infinity, y, Infinity, y1]\n : (x, y, x1, y1) => [\n Math.floor(minX - offsetX),\n y,\n Math.ceil(maxX - offsetX),\n y1,\n ],\n };\n}\n// Brush for horizontal axis.\nfunction horizontalBrush(axis, _a) {\n var { offsetY, offsetX, cross = false } = _a, style = __rest(_a, [\"offsetY\", \"offsetX\", \"cross\"]);\n const bounds = boundsOfAxis(axis);\n const axisLine = lineOf(axis);\n const [, lineY] = axisLine.getLocalBounds().min;\n const [minX, minY] = bounds.min;\n const [maxX, maxY] = bounds.max;\n const size = maxY - minY;\n return {\n brushRegion: brushXRegion,\n hotZone: new Rect({\n className: AXIS_HOT_AREA_CLASS_NAME,\n style: Object.assign({ x: minX, width: maxX - minX, \n // If it is not cross, draw brush in both side of axisLine,\n // otherwise the draw brush within bounds area.\n y: cross ? minY : lineY - size, height: cross ? size : size * 2 }, style),\n }),\n extent: cross\n ? // If it is cross, the y range is ignored.\n (x, y, x1, y1) => [x, -Infinity, x1, Infinity]\n : (x, y, x1, y1) => [\n x,\n Math.floor(minY - offsetY),\n x1,\n Math.ceil(maxY - offsetY),\n ],\n };\n}\nexport function brushAxisHighlight(root, _a) {\n var { axes: axesOf, // given root, return axes\n elements: elementsOf, // given root, return elements\n points: pointsOf, // given shape, return control points\n horizontal: isHorizontal, // given axis, return direction\n datum, // given shape, return datum\n offsetY, // offsetY for shape area\n offsetX, // offsetX for shape area\n reverse = false, state = {}, emitter, coordinate } = _a, rest = __rest(_a, [\"axes\", \"elements\", \"points\", \"horizontal\", \"datum\", \"offsetY\", \"offsetX\", \"reverse\", \"state\", \"emitter\", \"coordinate\"]) // style\n ;\n const elements = elementsOf(root);\n const axes = axesOf(root);\n const valueof = createValueof(elements, datum);\n const { setState, removeState } = useState(state, valueof);\n const axisExtent = new Map();\n const brushStyle = subObject(rest, 'mask');\n // Only some of shape's points in all mask, it is selected.\n const brushed = (points) => Array.from(axisExtent.values()).every(([x, y, x1, y1]) => points.some(([x0, y0]) => {\n return x0 >= x && x0 <= x1 && y0 >= y && y0 <= y1;\n }));\n const scales = axes.map((d) => d.attributes.scale);\n const extentOf = (D) => (D.length > 2 ? [D[0], D[D.length - 1]] : D);\n const indexDomain = new Map();\n const initIndexDomain = () => {\n indexDomain.clear();\n for (let i = 0; i < axes.length; i++) {\n const scale = scales[i];\n const { domain } = scale.getOptions();\n indexDomain.set(i, extentOf(domain));\n }\n };\n initIndexDomain();\n // Update element when brush changed.\n const updateElement = (i, emit) => {\n const selectedElements = [];\n for (const element of elements) {\n const points = pointsOf(element);\n if (brushed(points)) {\n setState(element, 'active');\n selectedElements.push(element);\n }\n else\n setState(element, 'inactive');\n }\n indexDomain.set(i, selectionOf(selectedElements, i));\n if (!emit)\n return;\n // Emit events.\n const selection = () => {\n if (!cross)\n return Array.from(indexDomain.values());\n const S = [];\n for (const [index, domain] of indexDomain) {\n const scale = scales[index];\n const { name } = scale.getOptions();\n if (name === 'x')\n S[0] = domain;\n else\n S[1] = domain;\n }\n return S;\n };\n emitter.emit('brushAxis:highlight', {\n nativeEvent: true,\n data: {\n selection: selection(),\n },\n });\n };\n const clearElement = (emit) => {\n for (const element of elements)\n removeState(element, 'active', 'inactive');\n initIndexDomain();\n if (!emit)\n return;\n emitter.emit('brushAxis:remove', { nativeEvent: true });\n };\n const selectionOf = (selected, i) => {\n const scale = scales[i];\n const { name } = scale.getOptions();\n const domain = selected.map((d) => {\n const data = d.__data__;\n return scale.invert(data[name]);\n });\n return extentOf(domainOf(scale, domain));\n };\n // Distinguish between parallel coordinates and normal charts.\n const cross = axes.some(isHorizontal) && axes.some((d) => !isHorizontal(d));\n const handlers = [];\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const createBrush = isHorizontal(axis) ? horizontalBrush : verticalBrush;\n const { hotZone, brushRegion, extent } = createBrush(axis, {\n offsetY,\n offsetX,\n cross,\n zIndex: 999,\n fill: 'transparent', // Make it interactive.\n });\n axis.parentNode.appendChild(hotZone);\n const brushHandler = brush(hotZone, Object.assign(Object.assign({}, brushStyle), { reverse,\n brushRegion,\n brushended(emit) {\n axisExtent.delete(axis);\n if (Array.from(axisExtent.entries()).length === 0)\n clearElement(emit);\n else\n updateElement(i, emit);\n },\n brushed(x, y, x1, y1, emit) {\n axisExtent.set(axis, extent(x, y, x1, y1));\n updateElement(i, emit);\n } }));\n handlers.push(brushHandler);\n }\n const onRemove = (event = {}) => {\n const { nativeEvent } = event;\n if (nativeEvent)\n return;\n handlers.forEach((d) => d.remove(false));\n };\n const rangeOf = (domain, scale, axis) => {\n const [d0, d1] = domain;\n const maybeStep = (scale) => (scale.getStep ? scale.getStep() : 0);\n const x = abstractOf(d0, scale, axis);\n const x1 = abstractOf(d1, scale, axis) + maybeStep(scale);\n if (isHorizontal(axis))\n return [x, -Infinity, x1, Infinity];\n return [-Infinity, x, Infinity, x1];\n };\n const abstractOf = (x, scale, axis) => {\n const { height, width } = coordinate.getOptions();\n const scale1 = scale.clone();\n if (isHorizontal(axis))\n scale1.update({ range: [0, width] });\n else\n scale1.update({ range: [height, 0] });\n return scale1.map(x);\n };\n const onHighlight = (event) => {\n const { nativeEvent } = event;\n if (nativeEvent)\n return;\n const { selection } = event.data;\n for (let i = 0; i < handlers.length; i++) {\n const domain = selection[i];\n const handler = handlers[i];\n const axis = axes[i];\n if (domain) {\n const scale = scales[i];\n handler.move(...rangeOf(domain, scale, axis), false);\n }\n else {\n handler.remove(false);\n }\n }\n };\n emitter.on('brushAxis:remove', onRemove);\n emitter.on('brushAxis:highlight', onHighlight);\n return () => {\n handlers.forEach((d) => d.destroy());\n emitter.off('brushAxis:remove', onRemove);\n emitter.off('brushAxis:highlight', onHighlight);\n };\n}\n/**\n * @todo Support mask size.\n */\nexport function BrushAxisHighlight(options) {\n return (target, _, emitter) => {\n const { container, view, options: viewOptions } = target;\n const plotArea = selectPlotArea(container);\n const { x: x0, y: y0 } = plotArea.getBBox();\n const { coordinate } = view;\n return brushAxisHighlight(container, Object.assign({ elements: selectG2Elements, axes: axesOf, offsetY: y0, offsetX: x0, points: (element) => element.__data__.points, horizontal: (axis) => {\n const { startPos: [sx, sy], endPos: [ex, ey], } = axis.attributes;\n // attention, non-horizontal does not mean vertical\n // it may has a specific degree angle\n return sx !== ex && sy === ey;\n }, datum: createDatumof(view), state: mergeState(viewOptions, [\n 'active',\n ['inactive', { opacity: 0.5 }],\n ]), coordinate,\n emitter }, options));\n };\n}\n//# sourceMappingURL=brushAxisHighlight.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix } from '@antv/util';\nimport { subObject } from '../utils/helper';\nimport { selectionOf } from '../utils/scale';\nimport { brush as createBrush } from './brushHighlight';\nimport { selectPlotArea } from './utils';\n// Mock dblclick events.\nfunction dblclick(interval = 300) {\n let preTimeStamp = null;\n return (e) => {\n const { timeStamp } = e;\n if (preTimeStamp !== null && timeStamp - preTimeStamp < interval) {\n preTimeStamp = timeStamp;\n return true;\n }\n preTimeStamp = timeStamp;\n return false;\n };\n}\nexport function brushFilter(root, _a) {\n var { filter, reset, brushRegion, extent: optionalExtent, reverse, emitter, scale, coordinate, selection, series = false } = _a, rest = __rest(_a, [\"filter\", \"reset\", \"brushRegion\", \"extent\", \"reverse\", \"emitter\", \"scale\", \"coordinate\", \"selection\", \"series\"]);\n const brushStyle = subObject(rest, 'mask');\n const { width: rootWidth, height: rootHeight } = root.getBBox();\n const extent = optionalExtent\n ? optionalExtent\n : [0, 0, rootWidth, rootHeight];\n const isDblclick = dblclick();\n const brush = createBrush(root, Object.assign(Object.assign({}, brushStyle), { extent,\n brushRegion,\n reverse,\n brushcreated }));\n root.addEventListener('click', click);\n // Filter when brush created.\n function brushcreated(x, y, x1, y1, event) {\n event.nativeEvent = true;\n filter(selection(x, y, x1, y1), event);\n brush.remove();\n }\n // Reset when dblclick.\n function click(e) {\n if (isDblclick(e)) {\n e.nativeEvent = true;\n reset(e);\n }\n }\n const onFilter = ({ nativeEvent, data }) => {\n if (nativeEvent)\n return;\n const { selection } = data;\n filter(selection, { nativeEvent: false });\n };\n emitter.on('brush:filter', onFilter);\n return () => {\n brush.destroy();\n emitter.off('brush:filter', onFilter);\n root.removeEventListener('click', click);\n };\n}\nexport function BrushFilter(_a) {\n var { hideX = true, hideY = true } = _a, rest = __rest(_a, [\"hideX\", \"hideY\"]);\n return (target, viewInstances, emitter) => {\n const { container, view, options: viewOptions, update, setState } = target;\n const plotArea = selectPlotArea(container);\n const defaultOptions = {\n maskFill: '#777',\n maskFillOpacity: '0.3',\n maskStroke: '#fff',\n unhighlightedOpacity: 0.5,\n reverse: false,\n };\n let filtered = false;\n let filtering = false;\n let newView = view;\n const { scale, coordinate } = view;\n return brushFilter(plotArea, Object.assign(Object.assign({ brushRegion: (x, y, x1, y1) => [x, y, x1, y1], selection: (x, y, x1, y1) => {\n const { scale, coordinate } = newView;\n return selectionOf(x, y, x1, y1, scale, coordinate);\n }, filter: (selection, event) => __awaiter(this, void 0, void 0, function* () {\n // Avoid redundant filter.\n if (filtering)\n return;\n filtering = true;\n // Update the domain of x and y scale to filter data.\n const [domainX, domainY] = selection;\n setState('brushFilter', (options) => {\n const { marks } = options;\n const newMarks = marks.map((mark) => deepMix({\n // Hide label to keep smooth transition.\n axis: Object.assign(Object.assign({}, (hideX && { x: { transform: [{ type: 'hide' }] } })), (hideY && { y: { transform: [{ type: 'hide' }] } })),\n }, mark, {\n // Set nice to false to avoid modify domain.\n scale: {\n x: { domain: domainX, nice: false },\n y: { domain: domainY, nice: false },\n },\n }));\n return Object.assign(Object.assign({}, viewOptions), { marks: newMarks, clip: true });\n });\n // Emit event.\n emitter.emit('brush:filter', Object.assign(Object.assign({}, event), { data: { selection: [domainX, domainY] } }));\n const newState = yield update();\n newView = newState.view;\n filtering = false;\n filtered = true;\n }), reset: (event) => {\n if (filtering || !filtered)\n return;\n // Emit event.\n const { scale } = view;\n const { x: scaleX, y: scaleY } = scale;\n const domainX = scaleX.getOptions().domain;\n const domainY = scaleY.getOptions().domain;\n emitter.emit('brush:filter', Object.assign(Object.assign({}, event), { data: { selection: [domainX, domainY] } }));\n filtered = false;\n newView = view;\n setState('brushFilter');\n update();\n }, extent: undefined, emitter,\n scale,\n coordinate }, defaultOptions), rest));\n };\n}\n//# sourceMappingURL=brushFilter.js.map","import { BrushFilter } from './brushFilter';\nimport { brushXRegion } from './brushXHighlight';\nexport function BrushXFilter(options) {\n return BrushFilter(Object.assign(Object.assign({ hideX: true }, options), { brushRegion: brushXRegion }));\n}\n//# sourceMappingURL=brushXFilter.js.map","import { BrushFilter } from './brushFilter';\nimport { brushYRegion } from './brushYHighlight';\nexport function BrushYFilter(options) {\n return BrushFilter(Object.assign(Object.assign({ hideY: true }, options), { brushRegion: brushYRegion }));\n}\n//# sourceMappingURL=brushYFilter.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { deepMix, throttle, upperFirst } from '@antv/util';\nimport { CustomEvent } from '@antv/g';\nimport { isTranspose } from '../utils/coordinate';\nimport { invert, domainOf, abstractOf } from '../utils/scale';\nexport const SLIDER_CLASS_NAME = 'slider';\nfunction filterDataByDomain(options, scaleOptions, prefix, hasState = false, channel0 = 'x', channel1 = 'y') {\n const { marks } = options;\n const newMarks = marks.map((mark) => {\n var _a, _b;\n return deepMix({\n // Hide label to keep smooth transition.\n axis: {\n x: { transform: [{ type: 'hide' }] },\n y: { transform: [{ type: 'hide' }] },\n },\n }, mark, {\n scale: scaleOptions,\n // Don't rerender sliders.\n [prefix]: Object.assign(Object.assign({}, (((_a = mark[prefix]) === null || _a === void 0 ? void 0 : _a[channel0]) && {\n [channel0]: Object.assign({ preserve: true }, (hasState && { ratio: null })),\n })), (((_b = mark[prefix]) === null || _b === void 0 ? void 0 : _b[channel1]) && {\n [channel1]: { preserve: true },\n })),\n animate: false,\n });\n });\n // Rerender and update view.\n return Object.assign(Object.assign({}, options), { marks: newMarks, clip: true, animate: false });\n}\nfunction abstractValue(values, scale, reverse) {\n const [x, x1] = values;\n const v = reverse ? (d) => 1 - d : (d) => d;\n const d0 = invert(scale, v(x), true);\n const d1 = invert(scale, v(x1), false);\n return domainOf(scale, [d0, d1]);\n}\nfunction extentOf(domain) {\n return [domain[0], domain[domain.length - 1]];\n}\n/**\n * @todo Support click to reset after fix click and dragend conflict.\n */\nexport function SliderFilter({ initDomain = {}, className = SLIDER_CLASS_NAME, prefix = 'slider', setValue = (component, values) => component.setValues(values), hasState = false, wait = 50, leading = true, trailing = false, getInitValues = (slider) => {\n var _a;\n const values = (_a = slider === null || slider === void 0 ? void 0 : slider.attributes) === null || _a === void 0 ? void 0 : _a.values;\n if (values[0] !== 0 || values[1] !== 1)\n return values;\n}, }) {\n return (context, _, emitter) => {\n const { container, view, update, setState } = context;\n const sliders = container.getElementsByClassName(className);\n if (!sliders.length)\n return () => { };\n let filtering = false;\n const { scale, coordinate, layout } = view;\n const { paddingLeft, paddingTop, paddingBottom, paddingRight } = layout;\n const { x: scaleX, y: scaleY } = scale;\n const transposed = isTranspose(coordinate);\n const channelOf = (orientation) => {\n const channel0 = orientation === 'vertical' ? 'y' : 'x';\n const channel1 = orientation === 'vertical' ? 'x' : 'y';\n if (transposed)\n return [channel1, channel0];\n return [channel0, channel1];\n };\n const sliderHandler = new Map();\n const emitHandlers = new Set();\n // Store current domain of x and y scale.\n const channelDomain = {\n x: initDomain.x || scaleX.getOptions().domain,\n y: initDomain.y || scaleY.getOptions().domain,\n };\n for (const slider of sliders) {\n const { orientation } = slider.attributes;\n const [channel0, channel1] = channelOf(orientation);\n const eventName = `${prefix}${upperFirst(channel0)}:filter`;\n const isX = channel0 === 'x';\n const { ratio: ratioX } = scaleX.getOptions();\n const { ratio: ratioY } = scaleY.getOptions();\n const domainsOf = (event) => {\n // From abstract values.\n if (event.data) {\n const { selection } = event.data;\n const [X = extentOf(channelDomain.x), Y = extentOf(channelDomain.y)] = selection;\n return isX\n ? [domainOf(scaleX, X, ratioX), domainOf(scaleY, Y, ratioY)]\n : [domainOf(scaleY, Y, ratioY), domainOf(scaleX, X, ratioX)];\n }\n // From visual values.\n const { value: values } = event.detail;\n const scale0 = scale[channel0];\n const domain0 = abstractValue(values, scale0, transposed && orientation === 'horizontal');\n const domain1 = channelDomain[channel1];\n return [domain0, domain1];\n };\n const onValueChange = throttle((event) => __awaiter(this, void 0, void 0, function* () {\n const { initValue = false } = event;\n if (filtering && !initValue)\n return;\n filtering = true;\n const { nativeEvent = true } = event;\n // Get and update domain.\n const [domain0, domain1] = domainsOf(event);\n channelDomain[channel0] = domain0;\n channelDomain[channel1] = domain1;\n if (nativeEvent) {\n // Emit events.\n const X = isX ? domain0 : domain1;\n const Y = isX ? domain1 : domain0;\n emitter.emit(eventName, Object.assign(Object.assign({}, event), { nativeEvent, data: { selection: [extentOf(X), extentOf(Y)] } }));\n }\n setState(slider, (options) => (Object.assign(Object.assign({}, filterDataByDomain(options, \n // Set nice to false to avoid modify domain.\n // Only update domain of current slider / scrollbar.\n { [channel0]: { domain: domain0, nice: false } }, prefix, hasState, channel0, channel1)), { paddingLeft,\n paddingTop,\n paddingBottom,\n paddingRight })));\n yield update();\n filtering = false;\n }), wait, { leading, trailing });\n const emitHandler = (event) => {\n const { nativeEvent } = event;\n if (nativeEvent)\n return;\n const { data } = event;\n const { selection } = data;\n const [X, Y] = selection;\n // Update data.\n slider.dispatchEvent(new CustomEvent('valuechange', {\n data,\n nativeEvent: false,\n }));\n // Update slider.\n const V = isX ? abstractOf(X, scaleX) : abstractOf(Y, scaleY);\n setValue(slider, V);\n };\n emitter.on(eventName, emitHandler);\n slider.addEventListener('valuechange', onValueChange);\n sliderHandler.set(slider, onValueChange);\n emitHandlers.add([eventName, emitHandler]);\n const values = getInitValues(slider);\n if (values) {\n // Init values.\n slider.dispatchEvent(new CustomEvent('valuechange', {\n detail: {\n value: values,\n },\n nativeEvent: false,\n initValue: true,\n }));\n }\n }\n // Update to async state such as scale.\n update();\n return () => {\n for (const [slider, handler] of sliderHandler) {\n slider.removeEventListener('valuechange', handler);\n }\n for (const [name, handler] of emitHandlers) {\n emitter.off(name, handler);\n }\n };\n };\n}\n//# sourceMappingURL=sliderFilter.js.map","import { SliderFilter } from './sliderFilter';\nexport const SCROLLBAR_CLASS_NAME = 'g2-scrollbar';\nexport function ScrollbarFilter(options = {}) {\n return (context, _, emitter) => {\n const { view, container } = context;\n const scrollbars = container.getElementsByClassName(SCROLLBAR_CLASS_NAME);\n if (!scrollbars.length)\n return () => { };\n const { scale } = view;\n const { x: scaleX, y: scaleY } = scale;\n // The filtered domain, computed by the ratio attribute.\n const initDomain = {\n x: [...scaleX.getOptions().domain],\n y: [...scaleY.getOptions().domain],\n };\n // The ordinal domain for each channel.\n scaleX.update({ domain: scaleX.getOptions().expectedDomain });\n scaleY.update({ domain: scaleY.getOptions().expectedDomain });\n const interaction = SliderFilter(Object.assign(Object.assign({}, options), { initDomain, className: SCROLLBAR_CLASS_NAME, prefix: 'scrollbar', hasState: true, setValue: (component, values) => component.setValue(values[0]), getInitValues: (scrollbar) => {\n const values = scrollbar.slider.attributes.values;\n if (values[0] !== 0)\n return values;\n } }));\n return interaction(context, _, emitter);\n };\n}\n//# sourceMappingURL=scrollbarFilter.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { HTML } from '@antv/g';\nimport { kebabCase } from '../utils/string';\nimport { subObject } from '../utils/helper';\nfunction dom(tag, children, style) {\n return `<${tag} style=\"${Object.entries(style)\n .map(([key, value]) => `${kebabCase(key)}:${value}`)\n .join(';')}\">${children}`;\n}\nconst defaultTipStyle = {\n backgroundColor: 'rgba(0,0,0,0.75)',\n color: '#fff',\n width: 'max-content',\n padding: '1px 4px',\n fontSize: '12px',\n borderRadius: '2.5px',\n boxShadow: '0 3px 6px -4px rgba(0,0,0,0.12), 0 6px 16px 0 rgba(0,0,0,0.08), 0 9px 28px 8px rgba(0,0,0,0.05)',\n};\nfunction isTipText(element) {\n if (element.nodeName !== 'text')\n return false;\n if (element.isOverflowing())\n return true;\n return false;\n}\nexport function Poptip(_a) {\n var { offsetX = 8, offsetY = 8 } = _a, style = __rest(_a, [\"offsetX\", \"offsetY\"]);\n return (context) => {\n const { container } = context;\n const [x0, y0] = container.getBounds().min;\n const tipStyle = subObject(style, 'tip');\n const tips = new Set();\n const pointerover = (e) => {\n const { target } = e;\n if (!isTipText(target)) {\n e.stopPropagation();\n return;\n }\n const { offsetX: mouseX, offsetY: mouseY } = e;\n const x = mouseX + offsetX - x0;\n const y = mouseY + offsetY - y0;\n if (target.tip) {\n target.tip.style.x = x;\n target.tip.style.y = y;\n return;\n }\n const { text } = target.style;\n const tipELement = new HTML({\n className: 'poptip',\n style: {\n innerHTML: dom('div', text, Object.assign(Object.assign({}, defaultTipStyle), tipStyle)),\n x,\n y,\n },\n });\n container.appendChild(tipELement);\n target.tip = tipELement;\n tips.add(tipELement);\n };\n const pointerout = (e) => {\n const { target } = e;\n if (!isTipText(target)) {\n e.stopPropagation();\n return;\n }\n if (!target.tip)\n return;\n target.tip.remove();\n target.tip = null;\n tips.delete(target.tip);\n };\n container.addEventListener('pointerover', pointerover);\n container.addEventListener('pointerout', pointerout);\n return () => {\n container.removeEventListener('pointerover', pointerover);\n container.removeEventListener('pointerout', pointerout);\n tips.forEach((tip) => tip.remove());\n };\n };\n}\nPoptip.props = {\n reapplyWhenUpdate: true,\n};\n//# sourceMappingURL=poptip.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Text, Group } from '@antv/g';\nimport { get, deepMix, pick, keys, find, size, last } from '@antv/util';\nimport { subObject } from '../utils/helper';\nimport { PLOT_CLASS_NAME } from '../runtime';\nimport { select } from '../utils/selection';\nimport { treeDataTransform } from '../utils/treeDataTransform';\nimport { legendClearSetState } from './legendFilter';\n// Get element.\nconst getElements = (plot) => {\n return plot.querySelectorAll('.element');\n};\nfunction selectPlotArea(root) {\n return select(root).select(`.${PLOT_CLASS_NAME}`).node();\n}\n// Default breadCrumb config.\nconst DEFAULT_BREADCRUMB_STYLE = {\n breadCrumbFill: 'rgba(0, 0, 0, 0.85)',\n breadCrumbFontSize: 12,\n breadCrumbY: 12,\n activeFill: 'rgba(0, 0, 0, 0.5)',\n};\n/**\n * TreemapDrillDown interaction.\n */\nexport function TreemapDrillDown(drillDownOptions = {}) {\n const { originData = [], layout } = drillDownOptions, style = __rest(drillDownOptions, [\"originData\", \"layout\"]);\n const breadCrumb = deepMix({}, DEFAULT_BREADCRUMB_STYLE, style);\n const breadCrumbStyle = subObject(breadCrumb, 'breadCrumb');\n const breadCrumbActiveStyle = subObject(breadCrumb, 'active');\n return (context) => {\n const { update, setState, container, options } = context;\n const plotArea = selectPlotArea(container);\n const mark = options.marks[0];\n const { state } = mark;\n // Create breadCrumbTextsGroup,save textSeparator、drillTexts.\n const textGroup = new Group();\n plotArea.appendChild(textGroup);\n // Modify the data and scale according to the path and the level of the current click, so as to achieve the effect of drilling down and drilling up and initialization.\n const drillDownClick = (path, depth) => __awaiter(this, void 0, void 0, function* () {\n // Clear text.\n textGroup.removeChildren();\n // More path creation text.\n if (depth) {\n let name = '';\n let y = breadCrumbStyle.y;\n let x = 0;\n const textPath = [];\n const maxWidth = plotArea.getBBox().width;\n // Create path: 'type1 / type2 / type3' -> '/ type1 / type2 / type3'.\n const drillTexts = path.map((text, index) => {\n name = `${name}${text}/`;\n textPath.push(text);\n const drillText = new Text({\n name: name.replace(/\\/$/, ''),\n style: Object.assign(Object.assign({ text,\n x, \n // @ts-ignore\n path: [...textPath], depth: index }, breadCrumbStyle), { y }),\n });\n textGroup.appendChild(drillText);\n x += drillText.getBBox().width;\n const textSeparator = new Text({\n style: Object.assign(Object.assign({ x, text: ' / ' }, breadCrumbStyle), { y }),\n });\n textGroup.appendChild(textSeparator);\n x += textSeparator.getBBox().width;\n /**\n * Page width exceeds maximum, line feed.\n * | ----maxWidth---- |\n * | / tyep1 / tyep2 / type3 |\n * ->\n * | ----maxWidth---- |\n * | / tyep1 / tyep2 |\n * | / type3 |\n */\n if (x > maxWidth) {\n y = textGroup.getBBox().height + breadCrumbStyle.y;\n x = 0;\n drillText.attr({\n x,\n y,\n });\n x += drillText.getBBox().width;\n textSeparator.attr({\n x,\n y,\n });\n x += textSeparator.getBBox().width;\n }\n if (index === size(path) - 1) {\n textSeparator.remove();\n }\n return drillText;\n });\n // Add Active, Add TreemapDrillDown\n drillTexts.forEach((item, index) => {\n // Last drillText\n if (index === size(drillTexts) - 1)\n return;\n const originalAttrs = Object.assign({}, item.attributes);\n item.attr('cursor', 'pointer');\n item.addEventListener('mouseenter', () => {\n item.attr(breadCrumbActiveStyle);\n });\n item.addEventListener('mouseleave', () => {\n item.attr(originalAttrs);\n });\n item.addEventListener('click', () => {\n drillDownClick(get(item, ['style', 'path']), get(item, ['style', 'depth']));\n });\n });\n }\n // LegendFilter interaction and treemapDrillDown clash.\n legendClearSetState(container, setState);\n // Update marks.\n setState('treemapDrillDown', (viewOptions) => {\n const { marks } = viewOptions;\n // Add filter transform for every marks,\n // which will skip for mark without color channel.\n const strPath = path.join('/');\n const newMarks = marks.map((mark) => {\n if (mark.type !== 'rect')\n return mark;\n let newData = originData;\n if (depth) {\n const filterData = originData\n .filter((item) => {\n const id = get(item, ['id']);\n return id && (id.match(`${strPath}/`) || strPath.match(id));\n })\n .map((item) => ({\n value: item.height === 0 ? get(item, ['value']) : undefined,\n name: get(item, ['id']),\n }));\n const { paddingLeft, paddingBottom, paddingRight } = layout;\n // New drill layout for calculation x y and filtration data.\n const newLayout = Object.assign(Object.assign({}, layout), { paddingTop: (layout.paddingTop || textGroup.getBBox().height + 10) /\n (depth + 1), paddingLeft: paddingLeft / (depth + 1), paddingBottom: paddingBottom / (depth + 1), paddingRight: paddingRight / (depth + 1), path: (d) => d.name, layer: (d) => d.depth === depth + 1 });\n // Transform the new matrix tree data.\n newData = treeDataTransform(filterData, newLayout, {\n value: 'value',\n })[0];\n }\n else {\n newData = originData.filter((item) => {\n return item.depth === 1;\n });\n }\n const colorDomain = [];\n newData.forEach(({ path }) => {\n colorDomain.push(last(path));\n });\n // TreemapDrillDown by filtering the data and scale.\n return deepMix({}, mark, {\n data: newData,\n scale: {\n color: { domain: colorDomain },\n },\n });\n });\n return Object.assign(Object.assign({}, viewOptions), { marks: newMarks });\n });\n // The second argument is to allow the legendFilter event to be re-added; the update method itself causes legend to lose the interaction event.\n yield update(undefined, ['legendFilter']);\n });\n // Elements and BreadCrumb click.\n const createDrillClick = (e) => {\n const item = e.target;\n if (get(item, ['markType']) !== 'rect')\n return;\n const key = get(item, ['__data__', 'key']);\n const node = find(originData, (d) => d.id === key);\n // Node height = 0 no children\n if (get(node, 'height')) {\n drillDownClick(get(node, 'path'), get(node, 'depth'));\n }\n };\n // Add click drill interaction.\n plotArea.addEventListener('click', createDrillClick);\n // Change attributes keys.\n const changeStyleKey = keys(Object.assign(Object.assign({}, state.active), state.inactive));\n const createActive = () => {\n const elements = getElements(plotArea);\n elements.forEach((element) => {\n const cursor = get(element, ['style', 'cursor']);\n const node = find(originData, (d) => d.id === get(element, ['__data__', 'key']));\n if (cursor !== 'pointer' && (node === null || node === void 0 ? void 0 : node.height)) {\n element.style.cursor = 'pointer';\n const originalAttrs = pick(element.attributes, changeStyleKey);\n element.addEventListener('mouseenter', () => {\n element.attr(state.active);\n });\n element.addEventListener('mouseleave', () => {\n element.attr(deepMix(originalAttrs, state.inactive));\n });\n }\n });\n };\n createActive();\n // Animate elements update, Add active.\n plotArea.addEventListener('mousemove', createActive);\n return () => {\n textGroup.remove();\n plotArea.removeEventListener('click', createDrillClick);\n plotArea.removeEventListener('mousemove', createActive);\n };\n };\n}\n//# sourceMappingURL=treemapDrillDown.js.map","export function parseAABB(min2) {\n const { min, max } = min2;\n return [\n [min[0], min[1]],\n [max[0], max[1]],\n ];\n}\n/**\n * Whether the `point` in `bounds`.\n * @param point\n * @param bounds\n */\nexport function isInBounds(point, bounds) {\n const [x, y] = point;\n const [min, max] = bounds;\n return x >= min[0] && x <= max[0] && y >= min[1] && y <= max[1];\n}\n/**\n * Whether `b1` is overflow from `b2`.\n * @param b1\n * @param b2\n */\nexport function isOverflow(b1, b2) {\n const [min, max] = b1;\n return !(isInBounds(min, b2) && isInBounds(max, b2));\n}\n/**\n * Whether `b1` is overlap with `b2`.\n * @param b1\n * @param b2\n * @returns\n */\nexport function isOverlap(b1, b2) {\n const [min1, max1] = b1;\n const [min2, max2] = b2;\n return (min1[0] < max2[0] &&\n max1[0] > min2[0] &&\n min1[1] < max2[1] &&\n max1[1] > min2[1]);\n}\n//# sourceMappingURL=bounds.js.map","import { isOverlap, parseAABB } from '../utils/bounds';\nimport { hide, show } from '../utils/style';\n/**\n * Hide the label when overlap.\n */\nexport const OverlapHide = (options) => {\n const { priority } = options;\n return (labels) => {\n const displayLabels = [];\n // When overlap, will hide the next label.\n if (priority)\n labels.sort(priority);\n labels.forEach((l) => {\n show(l);\n const b1 = l.getLocalBounds();\n const overlaping = displayLabels.some((dl) => isOverlap(parseAABB(b1), parseAABB(dl.getLocalBounds())));\n if (overlaping)\n hide(l);\n else\n displayLabels.push(l);\n });\n return labels;\n };\n};\n//# sourceMappingURL=overlapHide.js.map","import { ascending } from 'd3-array';\nfunction isSegmentIntersect([a, b], [c, d]) {\n return d > a && b > c;\n}\nfunction useMap() {\n const map = new Map();\n const get = (key) => map.get(key);\n const set = (key, value) => map.set(key, value);\n return [get, set];\n}\nfunction getBoundsWithoutConnector(shape) {\n const node = shape.cloneNode(true);\n const connectorShape = node.getElementById('connector');\n connectorShape && node.removeChild(connectorShape);\n const { min, max } = node.getRenderBounds();\n node.destroy();\n return { min, max };\n}\n/**\n * An iterative dodge method avoids label overlap. (n * log(n))\n */\nexport const OverlapDodgeY = (options) => {\n const { maxIterations = 10, maxError = 0.1, padding = 1 } = options;\n return (labels) => {\n const n = labels.length;\n if (n <= 1)\n return labels;\n // Index y, x0, x, height, by label.\n const [y0, setY0] = useMap();\n const [y, setY] = useMap();\n const [h, setH] = useMap();\n const [xx, setXX] = useMap();\n for (const label of labels) {\n const { min, max } = getBoundsWithoutConnector(label);\n const [x0, y0] = min;\n const [x1, y1] = max;\n setY0(label, y0);\n setY(label, y0);\n setH(label, y1 - y0);\n setXX(label, [x0, x1]);\n }\n // Offsets position Y.\n for (let iter = 0; iter < maxIterations; iter++) {\n labels.sort((a, b) => ascending(y(a), y(b)));\n let error = 0;\n for (let i = 0; i < n - 1; i++) {\n const l0 = labels[i];\n let j = i + 1;\n let l1;\n // Find the next label overlapping with the current label in x direction.\n while ((l1 = labels[j]) && !isSegmentIntersect(xx(l0), xx(l1)))\n j += 1;\n if (l1) {\n const y0 = y(l0);\n const h0 = h(l0);\n const y1 = y(l1);\n const delta = y1 - (y0 + h0);\n if (delta < padding) {\n const newDelta = (padding - delta) / 2;\n error = Math.max(error, newDelta);\n setY(l0, y0 - newDelta);\n setY(l1, y1 + newDelta);\n }\n }\n }\n if (error < maxError)\n break;\n }\n for (const label of labels) {\n label.style.y += y(label) - y0(label);\n }\n return labels;\n };\n};\n//# sourceMappingURL=overlapDodgeY.js.map","import { parseColor } from '@antv/g';\nexport function parseToRGB(c) {\n if (typeof c === 'object')\n return c;\n return parseColor(c);\n}\n//# sourceMappingURL=color.js.map","import { maxIndex } from 'd3-array';\nimport { parseToRGB } from '../utils/color';\nfunction getsRGB(s) {\n let c = s / 255;\n c = c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n return c;\n}\nfunction getL(r, g, b) {\n return 0.2126 * getsRGB(r) + 0.7152 * getsRGB(g) + 0.0722 * getsRGB(b);\n}\n/**\n * Calculate the contrast. see https://webaim.org/resources/contrastchecker/\n * @param foreground\n * @param background\n */\nfunction contrast(foreground, background) {\n const { r, g, b } = foreground;\n const { r: rb, g: gb, b: bb } = background;\n const L1 = getL(r, g, b);\n const L2 = getL(rb, gb, bb);\n return (Math.max(L1, L2) + 0.05) / (Math.min(L1, L2) + 0.05);\n}\n/**\n * Reverse color for max contrast.\n */\nfunction mostContrast(color, palette) {\n const i = maxIndex(palette, (c) => contrast(color, parseToRGB(c)));\n return palette[i];\n}\n/**\n * Reverse the label color when the contrast is lower then `threshold`.\n * The default value of `threshold` is 4.5.\n * More about contract, see https://webaim.org/resources/contrastchecker/\n */\nexport const ContrastReverse = (options) => {\n const { threshold = 4.5, palette = ['#000', '#fff'] } = options;\n return (labels) => {\n labels.forEach((l) => {\n const background = l.attr('dependentElement').parsedStyle.fill;\n const foreground = l.parsedStyle.fill;\n const c = contrast(foreground, background);\n if (c < threshold)\n l.attr('fill', mostContrast(background, palette));\n });\n return labels;\n };\n};\n//# sourceMappingURL=contrastReverse.js.map","import { isOverflow, parseAABB } from '../utils/bounds';\nimport { hide, show } from '../utils/style';\n/**\n * Hide the label when the label is overflowed from the element.\n */\nexport const OverflowHide = () => {\n return (labels) => {\n labels.forEach((l) => {\n show(l);\n const bounds = l.attr('bounds');\n const b = l.getLocalBounds();\n const overflow = isOverflow(parseAABB(b), bounds);\n if (overflow)\n hide(l);\n });\n return labels;\n };\n};\n//# sourceMappingURL=overflowHide.js.map","import { Cartesian, Polar, Transpose, Theta, Parallel, Fisheye, Radial, Radar, } from '../coordinate';\nimport { Constant, Field, Transform, Column } from '../encode';\nimport { Cell, Interval, Rect, Line, Point, Text, Area, Image, Polygon, Box, Vector, Link, LineX, LineY, Connector, Range, RangeX, RangeY, Path, Shape, Density, Heatmap, } from '../mark';\nimport { Category10, Category20 } from '../palette';\nimport { Linear as ScaleLinear, Ordinal as ScaleOrdinal, Band as ScaleBand, Identity as ScaleIdentity, Point as ScalePoint, Time as ScaleTime, Log as ScaleLog, Pow as ScalePow, Threshold as ScaleThreshold, Quantile as ScaleQuantile, Quantize as ScaleQuantize, Sqrt as ScaleSqrt, Sequential as ScaleSequential, Constant as ScaleConstant, } from '../scale';\nimport { Classic, ClassicDark, Academy, Light, Dark } from '../theme';\nimport { AxisX, AxisY, LegendCategory, LegendContinuous, TitleComponent, SliderX, SliderY, ScrollbarX, ScrollbarY, Legends, } from '../component';\nimport { ScaleInX, ScaleOutX, ScaleInY, ScaleOutY, WaveIn, FadeIn, FadeOut, Morphing, ZoomIn, ZoomOut, PathIn, GrowInX, GrowInY, } from '../animation';\nimport { ElementHighlight, ElementHighlightByX, ElementHighlightByColor, ElementSelect, ElementSelectByX, ElementSelectByColor, ChartIndex, Fisheye as ChartFisheye, Tooltip, LegendFilter, LegendHighlight, BrushHighlight, BrushXHighlight, BrushYHighlight, BrushAxisHighlight, BrushFilter, BrushXFilter, BrushYFilter, SliderFilter, Poptip, ScrollbarFilter, TreemapDrillDown, } from '../interaction';\nimport { SpaceLayer, SpaceFlex, FacetRect, FacetCircle, RepeatMatrix, TimingKeyframe, } from '../composition';\nimport { StackY, DodgeX, StackEnter, NormalizeY, Jitter, JitterX, JitterY, SymmetryY, DiffY, Select, SelectX, SelectY, GroupX, Group, SortX, FlexX, SortY, GroupY, GroupColor, SortColor, Pack, BinX, Bin, Sample, Filter, } from '../transform';\nimport { Fetch as DataFetch, SortBy as DataSortBy, Filter as DataFilter, Map as DataMap, Pick as DataPick, Rename as DataRename, Fold as DataFold, Slice as DataSlice, Inline as DataInline, Custom as DataCustom, Join as DataJoin, Sort as DataSort, KDE as DataKDE, Log as DataLog, } from '../data';\nimport { OverlapDodgeY, OverflowHide, ContrastReverse, OverlapHide, } from '../label-transform';\nexport function corelib() {\n return {\n 'data.fetch': DataFetch,\n 'data.inline': DataInline,\n 'data.sortBy': DataSortBy,\n 'data.sort': DataSort,\n 'data.filter': DataFilter,\n 'data.pick': DataPick,\n 'data.rename': DataRename,\n 'data.fold': DataFold,\n 'data.slice': DataSlice,\n 'data.custom': DataCustom,\n 'data.map': DataMap,\n 'data.join': DataJoin,\n 'data.kde': DataKDE,\n 'data.log': DataLog,\n 'transform.stackY': StackY,\n 'transform.binX': BinX,\n 'transform.bin': Bin,\n 'transform.dodgeX': DodgeX,\n 'transform.jitter': Jitter,\n 'transform.jitterX': JitterX,\n 'transform.jitterY': JitterY,\n 'transform.symmetryY': SymmetryY,\n 'transform.diffY': DiffY,\n 'transform.stackEnter': StackEnter,\n 'transform.normalizeY': NormalizeY,\n 'transform.select': Select,\n 'transform.selectX': SelectX,\n 'transform.selectY': SelectY,\n 'transform.groupX': GroupX,\n 'transform.groupY': GroupY,\n 'transform.groupColor': GroupColor,\n 'transform.group': Group,\n 'transform.sortX': SortX,\n 'transform.sortY': SortY,\n 'transform.sortColor': SortColor,\n 'transform.flexX': FlexX,\n 'transform.pack': Pack,\n 'transform.sample': Sample,\n 'transform.filter': Filter,\n 'coordinate.cartesian': Cartesian,\n 'coordinate.polar': Polar,\n 'coordinate.transpose': Transpose,\n 'coordinate.theta': Theta,\n 'coordinate.parallel': Parallel,\n 'coordinate.fisheye': Fisheye,\n 'coordinate.radial': Radial,\n 'coordinate.radar': Radar,\n 'encode.constant': Constant,\n 'encode.field': Field,\n 'encode.transform': Transform,\n 'encode.column': Column,\n 'mark.interval': Interval,\n 'mark.rect': Rect,\n 'mark.line': Line,\n 'mark.point': Point,\n 'mark.text': Text,\n 'mark.cell': Cell,\n 'mark.area': Area,\n 'mark.link': Link,\n 'mark.image': Image,\n 'mark.polygon': Polygon,\n 'mark.box': Box,\n 'mark.vector': Vector,\n 'mark.lineX': LineX,\n 'mark.lineY': LineY,\n 'mark.connector': Connector,\n 'mark.range': Range,\n 'mark.rangeX': RangeX,\n 'mark.rangeY': RangeY,\n 'mark.path': Path,\n 'mark.shape': Shape,\n 'mark.density': Density,\n 'mark.heatmap': Heatmap,\n 'palette.category10': Category10,\n 'palette.category20': Category20,\n 'scale.linear': ScaleLinear,\n 'scale.ordinal': ScaleOrdinal,\n 'scale.band': ScaleBand,\n 'scale.identity': ScaleIdentity,\n 'scale.point': ScalePoint,\n 'scale.time': ScaleTime,\n 'scale.log': ScaleLog,\n 'scale.pow': ScalePow,\n 'scale.sqrt': ScaleSqrt,\n 'scale.threshold': ScaleThreshold,\n 'scale.quantile': ScaleQuantile,\n 'scale.quantize': ScaleQuantize,\n 'scale.sequential': ScaleSequential,\n 'scale.constant': ScaleConstant,\n 'theme.classic': Classic,\n 'theme.classicDark': ClassicDark,\n 'theme.academy': Academy,\n 'theme.light': Light,\n 'theme.dark': Dark,\n 'component.axisX': AxisX,\n 'component.axisY': AxisY,\n 'component.legendCategory': LegendCategory,\n 'component.legendContinuous': LegendContinuous,\n 'component.legends': Legends,\n 'component.title': TitleComponent,\n 'component.sliderX': SliderX,\n 'component.sliderY': SliderY,\n 'component.scrollbarX': ScrollbarX,\n 'component.scrollbarY': ScrollbarY,\n 'animation.scaleInX': ScaleInX,\n 'animation.scaleOutX': ScaleOutX,\n 'animation.scaleInY': ScaleInY,\n 'animation.scaleOutY': ScaleOutY,\n 'animation.waveIn': WaveIn,\n 'animation.fadeIn': FadeIn,\n 'animation.fadeOut': FadeOut,\n 'animation.zoomIn': ZoomIn,\n 'animation.zoomOut': ZoomOut,\n 'animation.pathIn': PathIn,\n 'animation.morphing': Morphing,\n 'animation.growInX': GrowInX,\n 'animation.growInY': GrowInY,\n 'interaction.elementHighlight': ElementHighlight,\n 'interaction.elementHighlightByX': ElementHighlightByX,\n 'interaction.elementHighlightByColor': ElementHighlightByColor,\n 'interaction.elementSelect': ElementSelect,\n 'interaction.elementSelectByX': ElementSelectByX,\n 'interaction.elementSelectByColor': ElementSelectByColor,\n 'interaction.fisheye': ChartFisheye,\n 'interaction.chartIndex': ChartIndex,\n 'interaction.tooltip': Tooltip,\n 'interaction.legendFilter': LegendFilter,\n 'interaction.legendHighlight': LegendHighlight,\n 'interaction.brushHighlight': BrushHighlight,\n 'interaction.brushXHighlight': BrushXHighlight,\n 'interaction.brushYHighlight': BrushYHighlight,\n 'interaction.brushAxisHighlight': BrushAxisHighlight,\n 'interaction.brushFilter': BrushFilter,\n 'interaction.brushXFilter': BrushXFilter,\n 'interaction.brushYFilter': BrushYFilter,\n 'interaction.sliderFilter': SliderFilter,\n 'interaction.scrollbarFilter': ScrollbarFilter,\n 'interaction.poptip': Poptip,\n 'interaction.treemapDrillDown': TreemapDrillDown,\n 'composition.spaceLayer': SpaceLayer,\n 'composition.spaceFlex': SpaceFlex,\n 'composition.facetRect': FacetRect,\n 'composition.repeatMatrix': RepeatMatrix,\n 'composition.facetCircle': FacetCircle,\n 'composition.timingKeyframe': TimingKeyframe,\n 'labelTransform.overlapHide': OverlapHide,\n 'labelTransform.overlapDodgeY': OverlapDodgeY,\n 'labelTransform.overflowHide': OverflowHide,\n 'labelTransform.contrastReverse': ContrastReverse,\n };\n}\n//# sourceMappingURL=core.js.map","import { GeoView } from '../composition/geoView';\nimport { GeoPath } from '../composition/geoPath';\nexport function geolib() {\n return {\n 'composition.geoView': GeoView,\n 'composition.geoPath': GeoPath,\n };\n}\n//# sourceMappingURL=geo.js.map","import { Sankey, Treemap, Pack, ForceGraph, Tree, Chord } from '../mark';\nimport { Arc, Cluster } from '../data';\nexport function graphlib() {\n return {\n 'data.arc': Arc,\n 'data.cluster': Cluster,\n 'mark.forceGraph': ForceGraph,\n 'mark.tree': Tree,\n 'mark.pack': Pack,\n 'mark.sankey': Sankey,\n 'mark.chord': Chord,\n 'mark.treemap': Treemap,\n };\n}\n//# sourceMappingURL=graph.js.map","import { Boxplot, WordCloud, Gauge, Liquid } from '../mark';\nimport { Venn } from '../data';\nexport function plotlib() {\n return {\n 'data.venn': Venn,\n 'mark.boxplot': Boxplot,\n 'mark.gauge': Gauge,\n 'mark.wordCloud': WordCloud,\n 'mark.liquid': Liquid,\n };\n}\n//# sourceMappingURL=plot.js.map","import { corelib } from './core';\nimport { geolib } from './geo';\nimport { graphlib } from './graph';\nimport { plotlib } from './plot';\nexport function stdlib() {\n return Object.assign(Object.assign(Object.assign(Object.assign({}, geolib()), graphlib()), plotlib()), corelib());\n}\n//# sourceMappingURL=std.js.map","export function extend(Runtime, library) {\n class Chart extends Runtime {\n constructor(options) {\n super(Object.assign(Object.assign({}, options), { lib: library }));\n }\n }\n return Chart;\n}\n//# sourceMappingURL=extend.js.map","export const library = {};\n// @todo Warn if override existing key.\nexport function register(key, component) {\n Object.assign(library, { [key]: component });\n}\n//# sourceMappingURL=library.js.map","const parseInt10 = (d) => (d ? parseInt(d) : 0);\n/**\n * @description Get the element's bounding size.\n * @param container dom element.\n * @returns the element width and height\n */\nexport function getContainerSize(container) {\n // size = width/height - padding.\n const style = getComputedStyle(container);\n const wrapperWidth = container.clientWidth || parseInt10(style.width);\n const wrapperHeight = container.clientHeight || parseInt10(style.height);\n const widthPadding = parseInt10(style.paddingLeft) + parseInt10(style.paddingRight);\n const heightPadding = parseInt10(style.paddingTop) + parseInt10(style.paddingBottom);\n return {\n width: wrapperWidth - widthPadding,\n height: wrapperHeight - heightPadding,\n };\n}\n/**\n * @description Calculate the real canvas size by view options.\n */\nexport function getBBoxSize(options) {\n const { height, width, padding = 0, paddingLeft = padding, paddingRight = padding, paddingTop = padding, paddingBottom = padding, margin = 0, marginLeft = margin, marginRight = margin, marginTop = margin, marginBottom = margin, inset = 0, insetLeft = inset, insetRight = inset, insetTop = inset, insetBottom = inset, } = options;\n // @todo Add this padding to theme.\n // 30 is default size for padding, which defined in runtime.\n const maybeAuto = (padding) => (padding === 'auto' ? 20 : padding);\n const finalWidth = width -\n maybeAuto(paddingLeft) -\n maybeAuto(paddingRight) -\n marginLeft -\n marginRight -\n insetLeft -\n insetRight;\n const finalHeight = height -\n maybeAuto(paddingTop) -\n maybeAuto(paddingBottom) -\n marginTop -\n marginBottom -\n insetTop -\n insetBottom;\n return { width: finalWidth, height: finalHeight };\n}\n//# sourceMappingURL=size.js.map","/**\n * BFS nodes and execute callback.\n */\nfunction bfs(node, callback) {\n const discovered = [node];\n while (discovered.length) {\n const currentNode = discovered.shift();\n callback && callback(currentNode);\n const children = currentNode.children || [];\n for (const child of children) {\n discovered.push(child);\n }\n }\n}\n/**\n * Hierarchy container.\n */\nexport class Node {\n constructor(value = {}, type) {\n // The parent node.\n this.parentNode = null;\n // The children nodes.\n this.children = [];\n // The index of parent children.\n this.index = 0;\n this.type = type;\n this.value = value;\n }\n /**\n * Apply specified transform to current value. Mount the node\n * to replace the original one in the tree and then return it.\n */\n map(transform = (x) => x) {\n const newValue = transform(this.value);\n this.value = newValue;\n return this;\n }\n /**\n * Set or get the specified attribute. It the value is specified, update\n * the attribute of current value and return the node. Otherwise\n * return the the attribute of current value.\n */\n attr(key, value) {\n if (arguments.length === 1)\n return this.value[key];\n return this.map((v) => ((v[key] = value), v));\n }\n /**\n * Create a new node and append to children nodes.\n */\n append(Ctor) {\n const node = new Ctor({});\n node.children = [];\n this.push(node);\n return node;\n }\n push(node) {\n node.parentNode = this;\n node.index = this.children.length;\n this.children.push(node);\n return this;\n }\n /**\n * Remove current node from parentNode.\n */\n remove() {\n const parent = this.parentNode;\n if (parent) {\n const { children } = parent;\n const index = children.findIndex((item) => item === this);\n children.splice(index, 1);\n }\n return this;\n }\n getNodeByKey(key) {\n let targetNode = null;\n const callback = (node) => {\n if (key === node.attr('key')) {\n targetNode = node;\n }\n };\n bfs(this, callback);\n return targetNode;\n }\n getNodesByType(type) {\n const nodes = [];\n const callback = (node) => {\n if (type === node.type) {\n nodes.push(node);\n }\n };\n bfs(this, callback);\n return nodes;\n }\n getNodeByType(type) {\n let node = null;\n bfs(this, (current) => {\n if (node)\n return;\n if (type === current.type)\n node = current;\n });\n return node;\n }\n /**\n * Apply specified callback to the node value.\n */\n call(callback, ...params) {\n callback(this.map(), ...params);\n return this;\n }\n getRoot() {\n // Find the root chart and render.\n let root = this;\n while (root && root.parentNode) {\n root = root.parentNode;\n }\n return root;\n }\n}\n//# sourceMappingURL=node.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { isNumber } from '@antv/util';\nimport { getContainerSize } from '../utils/size';\nimport { deepAssign } from '../utils/helper';\nimport { Node } from './node';\n// Keys can specified by new Chart({...}).\n// Keys can bubble form mark-level options to view-level options.\nexport const VIEW_KEYS = [\n 'width',\n 'height',\n 'depth',\n 'padding',\n 'paddingLeft',\n 'paddingRight',\n 'paddingBottom',\n 'paddingTop',\n 'inset',\n 'insetLeft',\n 'insetRight',\n 'insetTop',\n 'insetBottom',\n 'margin',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'autoFit',\n 'theme',\n 'title',\n];\nexport const REMOVE_FLAG = '__remove__';\nexport const CALLBACK_NODE = '__callback__';\n/** Minimum chart width */\nexport const MIN_CHART_WIDTH = 1;\n/** Minimum chart height */\nexport const MIN_CHART_HEIGHT = 1;\nexport function normalizeContainer(container) {\n if (container === undefined) {\n const container = document.createElement('div');\n container[REMOVE_FLAG] = true;\n return container;\n }\n if (typeof container === 'string') {\n const node = document.getElementById(container);\n return node;\n }\n return container;\n}\nexport function removeContainer(container) {\n const parent = container.parentNode;\n if (parent) {\n parent.removeChild(container);\n }\n}\nexport function normalizeRoot(node) {\n if (node.type !== null)\n return node;\n const root = node.children[node.children.length - 1];\n for (const key of VIEW_KEYS)\n root.attr(key, node.attr(key));\n return root;\n}\nexport function valueOf(node) {\n return Object.assign(Object.assign({}, node.value), { type: node.type });\n}\nexport function sizeOf(options, container) {\n const { width, height, autoFit, depth = 0 } = options;\n let effectiveWidth = 640;\n let effectiveHeight = 480;\n if (autoFit) {\n const { width: containerWidth, height: containerHeight } = getContainerSize(container);\n effectiveWidth = containerWidth || effectiveWidth;\n effectiveHeight = containerHeight || effectiveHeight;\n }\n effectiveWidth = width || effectiveWidth;\n effectiveHeight = height || effectiveHeight;\n return {\n width: Math.max(isNumber(effectiveWidth) ? effectiveWidth : MIN_CHART_WIDTH, MIN_CHART_WIDTH),\n height: Math.max(isNumber(effectiveHeight) ? effectiveHeight : MIN_CHART_HEIGHT, MIN_CHART_HEIGHT),\n depth,\n };\n}\nexport function optionsOf(node) {\n const root = normalizeRoot(node);\n const discovered = [root];\n const nodeValue = new Map();\n nodeValue.set(root, valueOf(root));\n while (discovered.length) {\n const node = discovered.pop();\n const value = nodeValue.get(node);\n const { children = [] } = node;\n for (const child of children) {\n if (child.type === CALLBACK_NODE) {\n value.children = child.value;\n }\n else {\n const childValue = valueOf(child);\n const { children = [] } = value;\n children.push(childValue);\n discovered.push(child);\n nodeValue.set(child, childValue);\n value.children = children;\n }\n }\n }\n return nodeValue.get(root);\n}\nfunction isMark(type, mark) {\n if (typeof type === 'function')\n return true;\n return new Set(Object.keys(mark)).has(type);\n}\nfunction isComposition(type, composition) {\n return (typeof type !== 'function' && new Set(Object.keys(composition)).has(type));\n}\nfunction normalizeRootOptions(node, options, previousType, marks, composition) {\n const { type: oldType } = node;\n const { type = previousType || oldType } = options;\n if (isComposition(type, composition)) {\n for (const key of VIEW_KEYS) {\n if (node.attr(key) !== undefined && options[key] === undefined) {\n options[key] = node.attr(key);\n }\n }\n return options;\n }\n if (isMark(type, marks)) {\n const view = { type: 'view' };\n const mark = Object.assign({}, options);\n for (const key of VIEW_KEYS) {\n if (mark[key] !== undefined) {\n view[key] = mark[key];\n delete mark[key];\n }\n }\n return Object.assign(Object.assign({}, view), { children: [mark] });\n }\n return options;\n}\nfunction typeCtor(type, mark, composition) {\n if (typeof type === 'function')\n return mark.mark;\n const node = Object.assign(Object.assign({}, mark), composition);\n const ctor = node[type];\n if (!ctor)\n throw new Error(`Unknown mark: ${type}.`);\n return ctor;\n}\n// Create node from options.\nfunction createNode(options, mark, composition) {\n if (typeof options === 'function') {\n const node = new Node();\n node.value = options;\n node.type = CALLBACK_NODE;\n return node;\n }\n const { type, children } = options, value = __rest(options, [\"type\", \"children\"]);\n const Ctor = typeCtor(type, mark, composition);\n const node = new Ctor();\n node.value = value;\n // @ts-ignore\n node.type = type;\n return node;\n}\n// Update node by options.\nfunction updateNode(node, newOptions) {\n const { type, children } = newOptions, value = __rest(newOptions, [\"type\", \"children\"]);\n if (node.type === type || type === undefined) {\n // Update node.\n deepAssign(node.value, value);\n }\n else if (typeof type === 'string') {\n // Transform node.\n node.type = type;\n node.value = value;\n }\n}\n// Create a nested node tree from newOptions, and append it to the parent.\nfunction appendNode(parent, newOptions, mark, composition) {\n if (!parent)\n return;\n const discovered = [[parent, newOptions]];\n while (discovered.length) {\n const [parent, nodeOptions] = discovered.shift();\n const node = createNode(nodeOptions, mark, composition);\n if (Array.isArray(parent.children))\n parent.push(node);\n const { children } = nodeOptions;\n if (Array.isArray(children)) {\n for (const child of children) {\n discovered.push([node, child]);\n }\n }\n else if (typeof children === 'function') {\n discovered.push([node, children]);\n }\n }\n}\n// Update node tree from options.\nexport function updateRoot(node, options, definedType, mark, composition) {\n const rootOptions = normalizeRootOptions(node, options, definedType, mark, composition);\n const discovered = [[null, node, rootOptions]];\n while (discovered.length) {\n const [parent, oldNode, newNode] = discovered.shift();\n // If there is no oldNode, create a node tree directly.\n if (!oldNode) {\n appendNode(parent, newNode, mark, composition);\n }\n else if (!newNode) {\n oldNode.remove();\n }\n else {\n updateNode(oldNode, newNode);\n const { children: newChildren } = newNode;\n const { children: oldChildren } = oldNode;\n if (Array.isArray(newChildren) && Array.isArray(oldChildren)) {\n // Only update node specified in newChildren,\n // the extra oldChildren will remain still.\n const n = Math.max(newChildren.length, oldChildren.length);\n for (let i = 0; i < n; i++) {\n const newChild = newChildren[i];\n const oldChild = oldChildren[i];\n discovered.push([oldNode, oldChild, newChild]);\n }\n }\n else if (typeof newChildren === 'function') {\n discovered.push([oldNode, null, newChildren]);\n }\n }\n }\n}\nexport function createEmptyPromise() {\n let reject;\n let resolve;\n const cloned = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return [cloned, resolve, reject];\n}\n//# sourceMappingURL=utils.js.map","import { isStrictObject } from '../utils/helper';\nfunction defineValueProp(Node, name, { key = name }) {\n Node.prototype[name] = function (value) {\n if (arguments.length === 0)\n return this.attr(key);\n return this.attr(key, value);\n };\n}\nfunction defineArrayProp(Node, name, { key = name }) {\n Node.prototype[name] = function (value) {\n if (arguments.length === 0)\n return this.attr(key);\n if (Array.isArray(value))\n return this.attr(key, value);\n const array = [...(this.attr(key) || []), value];\n return this.attr(key, array);\n };\n}\nfunction defineObjectProp(Node, name, { key: k = name }) {\n Node.prototype[name] = function (key, value) {\n if (arguments.length === 0)\n return this.attr(k);\n if (arguments.length === 1 && typeof key !== 'string') {\n return this.attr(k, key);\n }\n const obj = this.attr(k) || {};\n obj[key] = arguments.length === 1 ? true : value;\n return this.attr(k, obj);\n };\n}\nfunction defineMixProp(Node, name, descriptor) {\n Node.prototype[name] = function (key) {\n if (arguments.length === 0)\n return this.attr(name);\n if (Array.isArray(key))\n return this.attr(name, { items: key });\n if (isStrictObject(key) &&\n (key.title !== undefined || key.items !== undefined)) {\n return this.attr(name, key);\n }\n if (key === null || key === false)\n return this.attr(name, key);\n const obj = this.attr(name) || {};\n const { items = [] } = obj;\n items.push(key);\n obj.items = items;\n return this.attr(name, obj);\n };\n}\nfunction defineNodeProp(Node, name, { ctor }) {\n Node.prototype[name] = function (hocMark) {\n const node = this.append(ctor);\n if (name === 'mark') {\n node.type = hocMark;\n }\n return node;\n };\n}\nfunction defineContainerProp(Node, name, { ctor }) {\n Node.prototype[name] = function () {\n this.type = null;\n return this.append(ctor);\n };\n}\n/**\n * A decorator to define different type of attribute setter or\n * getter for current node.\n */\nexport function defineProps(descriptors) {\n return (Node) => {\n for (const [name, descriptor] of Object.entries(descriptors)) {\n const { type } = descriptor;\n if (type === 'value')\n defineValueProp(Node, name, descriptor);\n else if (type === 'array')\n defineArrayProp(Node, name, descriptor);\n else if (type === 'object')\n defineObjectProp(Node, name, descriptor);\n else if (type === 'node')\n defineNodeProp(Node, name, descriptor);\n else if (type === 'container')\n defineContainerProp(Node, name, descriptor);\n else if (type === 'mix')\n defineMixProp(Node, name, descriptor);\n }\n return Node;\n };\n}\nexport function nodeProps(node) {\n return Object.fromEntries(Object.entries(node).map(([name, ctor]) => [name, { type: 'node', ctor }]));\n}\n//# sourceMappingURL=define.js.map","export const commonProps = {\n encode: { type: 'object' },\n scale: { type: 'object' },\n data: { type: 'value' },\n transform: { type: 'array' },\n style: { type: 'object' },\n animate: { type: 'object' },\n coordinate: { type: 'object' },\n interaction: { type: 'object' },\n label: { type: 'array', key: 'labels' },\n axis: { type: 'object' },\n legend: { type: 'object' },\n slider: { type: 'object' },\n scrollbar: { type: 'object' },\n state: { type: 'object' },\n layout: { type: 'object' },\n theme: { type: 'object' },\n title: { type: 'value' },\n};\nexport const markProps = Object.assign(Object.assign({}, commonProps), { tooltip: { type: 'mix' }, viewStyle: { type: 'object' } });\nexport const compositionProps = Object.assign(Object.assign({}, commonProps), { labelTransform: { type: 'array' } });\n//# sourceMappingURL=props.js.map","var __decorate = (this && this.__decorate) || function (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};\nimport { hide, show } from '../utils/style';\nimport { Node } from './node';\nimport { defineProps } from './define';\nimport { compositionProps } from './props';\nlet CompositionNode = class CompositionNode extends Node {\n /**\n * Change current node data and its children data.\n */\n changeData(data) {\n var _a;\n const chart = this.getRoot();\n if (!chart)\n return;\n this.attr('data', data);\n if ((_a = this.children) === null || _a === void 0 ? void 0 : _a.length) {\n this.children.forEach((child) => {\n child.attr('data', data);\n });\n }\n return chart === null || chart === void 0 ? void 0 : chart.render();\n }\n /**\n * Get view instance by key.\n */\n getView() {\n const chart = this.getRoot();\n const { views } = chart.getContext();\n if (!(views === null || views === void 0 ? void 0 : views.length))\n return undefined;\n return views.find((view) => view.key === this._key);\n }\n getScale() {\n var _a;\n return (_a = this.getView()) === null || _a === void 0 ? void 0 : _a.scale;\n }\n getScaleByChannel(channel) {\n const scale = this.getScale();\n if (scale)\n return scale[channel];\n return;\n }\n getCoordinate() {\n var _a;\n return (_a = this.getView()) === null || _a === void 0 ? void 0 : _a.coordinate;\n }\n getTheme() {\n var _a;\n return (_a = this.getView()) === null || _a === void 0 ? void 0 : _a.theme;\n }\n getGroup() {\n const key = this._key;\n if (!key)\n return undefined;\n const chart = this.getRoot();\n const chartGroup = chart.getContext().canvas.getRoot();\n return chartGroup.getElementById(key);\n }\n /**\n * Show the view.\n */\n show() {\n const group = this.getGroup();\n if (!group)\n return;\n !group.isVisible() && show(group);\n }\n /**\n * Hide the view.\n */\n hide() {\n const group = this.getGroup();\n if (!group)\n return;\n group.isVisible() && hide(group);\n }\n};\nCompositionNode = __decorate([\n defineProps(compositionProps)\n], CompositionNode);\nexport { CompositionNode };\n//# sourceMappingURL=composition.js.map","var __decorate = (this && this.__decorate) || function (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};\nimport { Node } from './node';\nimport { defineProps } from './define';\nimport { markProps } from './props';\nlet MarkNode = class MarkNode extends Node {\n changeData(data) {\n const chart = this.getRoot();\n if (!chart)\n return;\n this.attr('data', data);\n return chart === null || chart === void 0 ? void 0 : chart.render();\n }\n /**\n * Get mark from chart views.\n */\n getMark() {\n var _a;\n const chartView = (_a = this.getRoot()) === null || _a === void 0 ? void 0 : _a.getView();\n if (!chartView)\n return undefined;\n const { markState } = chartView;\n const markKey = Array.from(markState.keys()).find((item) => item.key === this.attr('key'));\n return markState.get(markKey);\n }\n /**\n * Get all scales instance.\n */\n getScale() {\n var _a;\n const chartView = (_a = this.getRoot()) === null || _a === void 0 ? void 0 : _a.getView();\n if (!chartView)\n return undefined;\n return chartView === null || chartView === void 0 ? void 0 : chartView.scale;\n }\n /**\n * Get the scale instance by channel.\n */\n getScaleByChannel(channel) {\n var _a, _b;\n const chartView = (_a = this.getRoot()) === null || _a === void 0 ? void 0 : _a.getView();\n if (!chartView)\n return undefined;\n return (_b = chartView === null || chartView === void 0 ? void 0 : chartView.scale) === null || _b === void 0 ? void 0 : _b[channel];\n }\n /**\n * Get canvas group.\n */\n getGroup() {\n const key = this.attr('key');\n if (!key)\n return undefined;\n const chart = this.getRoot();\n const chartGroup = chart.getContext().canvas.getRoot();\n return chartGroup.getElementById(key);\n }\n};\nMarkNode = __decorate([\n defineProps(markProps)\n], MarkNode);\nexport { MarkNode };\n//# sourceMappingURL=mark.js.map","var __decorate = (this && this.__decorate) || function (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};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Canvas as GCanvas } from '@antv/g';\nimport { Renderer as CanvasRenderer } from '@antv/g-canvas';\nimport { Plugin as DragAndDropPlugin } from '@antv/g-plugin-dragndrop';\nimport { debounce } from '@antv/util';\nimport EventEmitter from '@antv/event-emitter';\nimport { render, destroy } from '../runtime';\nimport { ChartEvent } from '../utils/event';\nimport { normalizeContainer, removeContainer, sizeOf, optionsOf, updateRoot, createEmptyPromise, REMOVE_FLAG, } from './utils';\nimport { CompositionNode } from './composition';\nimport { defineProps, nodeProps } from './define';\nimport { MarkNode } from './mark';\nimport { library } from './library';\nexport const G2_CHART_KEY = 'G2_CHART_KEY';\nexport class Runtime extends CompositionNode {\n constructor(options) {\n const { container, canvas, renderer, plugins, lib } = options, rest = __rest(options, [\"container\", \"canvas\", \"renderer\", \"plugins\", \"lib\"]);\n super(rest, 'view');\n // Identifies whether bindAutoFit.\n this._hasBindAutoFit = false;\n this._rendering = false;\n this._trailing = false;\n this._trailingResolve = null;\n this._trailingReject = null;\n this._previousDefinedType = null;\n this._onResize = debounce(() => {\n this.forceFit();\n }, 300);\n this._renderer = renderer || new CanvasRenderer();\n this._plugins = plugins || [];\n this._container = normalizeContainer(container);\n this._emitter = new EventEmitter();\n this._context = {\n library: Object.assign(Object.assign({}, lib), library),\n emitter: this._emitter,\n canvas,\n };\n this._create();\n }\n render() {\n if (this._rendering)\n return this._addToTrailing();\n if (!this._context.canvas)\n this._createCanvas();\n this._context.canvas.getConfig().supportsCSSTransform = true;\n this._bindAutoFit();\n this._rendering = true;\n const finished = new Promise((resolve, reject) => render(this._computedOptions(), this._context, this._createResolve(resolve), this._createReject(reject)));\n const [finished1, resolve, reject] = createEmptyPromise();\n finished\n .then(resolve)\n .catch(reject)\n .then(() => this._renderTrailing());\n return finished1;\n }\n /**\n * @overload\n * @param {G2ViewTree} [options]\n * @returns {Runtime|Spec}\n */\n options(options) {\n if (arguments.length === 0)\n return optionsOf(this);\n const { type } = options;\n if (type)\n this._previousDefinedType = type;\n updateRoot(this, options, this._previousDefinedType, this._marks, this._compositions);\n return this;\n }\n getContainer() {\n return this._container;\n }\n getContext() {\n return this._context;\n }\n on(event, callback, once) {\n this._emitter.on(event, callback, once);\n return this;\n }\n once(event, callback) {\n this._emitter.once(event, callback);\n return this;\n }\n emit(event, ...args) {\n this._emitter.emit(event, ...args);\n return this;\n }\n off(event, callback) {\n this._emitter.off(event, callback);\n return this;\n }\n clear() {\n const options = this.options();\n this.emit(ChartEvent.BEFORE_CLEAR);\n this._reset();\n destroy(options, this._context, false);\n this.emit(ChartEvent.AFTER_CLEAR);\n }\n destroy() {\n const options = this.options();\n this.emit(ChartEvent.BEFORE_DESTROY);\n this._unbindAutoFit();\n this._reset();\n destroy(options, this._context, true);\n if (this._container[REMOVE_FLAG])\n removeContainer(this._container);\n this.emit(ChartEvent.AFTER_DESTROY);\n }\n forceFit() {\n // Don't fit if size do not change.\n this.options['autoFit'] = true;\n const { width, height } = sizeOf(this.options(), this._container);\n if (width === this._width && height === this._height) {\n return Promise.resolve(this);\n }\n // Don't call changeSize to prevent update width and height of options.\n this.emit(ChartEvent.BEFORE_CHANGE_SIZE);\n const finished = this.render();\n finished.then(() => {\n this.emit(ChartEvent.AFTER_CHANGE_SIZE);\n });\n return finished;\n }\n changeSize(width, height) {\n if (width === this._width && height === this._height) {\n return Promise.resolve(this);\n }\n this.emit(ChartEvent.BEFORE_CHANGE_SIZE);\n this.attr('width', width);\n this.attr('height', height);\n const finished = this.render();\n finished.then(() => {\n this.emit(ChartEvent.AFTER_CHANGE_SIZE);\n });\n return finished;\n }\n _create() {\n const { library } = this._context;\n // @todo After refactor component as mark, remove this.\n const isMark = (key) => key.startsWith('mark.') ||\n key === 'component.axisX' ||\n key === 'component.axisY' ||\n key === 'component.legends';\n const marks = [\n 'mark.mark',\n ...Object.keys(library).filter(isMark),\n ];\n // Create mark generators.\n this._marks = {};\n for (const key of marks) {\n const name = key.split('.').pop();\n class Mark extends MarkNode {\n constructor() {\n super({}, name);\n }\n }\n this._marks[name] = Mark;\n this[name] = function (composite) {\n const node = this.append(Mark);\n if (name === 'mark')\n node.type = composite;\n return node;\n };\n }\n // Create composition generators.\n const compositions = [\n 'composition.view',\n ...Object.keys(library).filter((key) => key.startsWith('composition.') && key !== 'composition.mark'),\n ];\n this._compositions = Object.fromEntries(compositions.map((key) => {\n const name = key.split('.').pop();\n let Composition = class Composition extends CompositionNode {\n constructor() {\n super({}, name);\n }\n };\n Composition = __decorate([\n defineProps(nodeProps(this._marks))\n ], Composition);\n return [name, Composition];\n }));\n for (const Ctor of Object.values(this._compositions)) {\n defineProps(nodeProps(this._compositions))(Ctor);\n }\n for (const key of compositions) {\n const name = key.split('.').pop();\n this[name] = function () {\n const Composition = this._compositions[name];\n this.type = null;\n return this.append(Composition);\n };\n }\n }\n _reset() {\n const KEYS = ['theme', 'type', 'width', 'height', 'autoFit'];\n this.type = 'view';\n this.value = Object.fromEntries(Object.entries(this.value).filter(([key]) => key.startsWith('margin') ||\n key.startsWith('padding') ||\n key.startsWith('inset') ||\n KEYS.includes(key)));\n this.children = [];\n }\n _renderTrailing() {\n if (!this._trailing)\n return;\n this._trailing = false;\n this.render()\n .then(() => {\n const trailingResolve = this._trailingResolve.bind(this);\n this._trailingResolve = null;\n trailingResolve(this);\n })\n .catch((error) => {\n const trailingReject = this._trailingReject.bind(this);\n this._trailingReject = null;\n trailingReject(error);\n });\n }\n _createResolve(resolve) {\n return () => {\n this._rendering = false;\n resolve(this);\n };\n }\n _createReject(reject) {\n return (error) => {\n this._rendering = false;\n reject(error);\n };\n }\n // Update actual size and key.\n _computedOptions() {\n const options = this.options();\n const { key = G2_CHART_KEY } = options;\n const { width, height, depth } = sizeOf(options, this._container);\n this._width = width;\n this._height = height;\n this._key = key;\n return Object.assign(Object.assign({ key: this._key }, options), { width, height, depth });\n }\n // Create canvas if it does not exist.\n // DragAndDropPlugin is for interaction.\n // It is OK to register more than one time, G will handle this.\n _createCanvas() {\n const { width, height } = sizeOf(this.options(), this._container);\n this._plugins.push(new DragAndDropPlugin());\n this._plugins.forEach((d) => this._renderer.registerPlugin(d));\n this._context.canvas = new GCanvas({\n container: this._container,\n width,\n height,\n renderer: this._renderer,\n });\n }\n _addToTrailing() {\n var _a;\n // Resolve previous promise, and give up this task.\n (_a = this._trailingResolve) === null || _a === void 0 ? void 0 : _a.call(this, this);\n // Create new task.\n this._trailing = true;\n const promise = new Promise((resolve, reject) => {\n this._trailingResolve = resolve;\n this._trailingReject = reject;\n });\n return promise;\n }\n _bindAutoFit() {\n const options = this.options();\n const { autoFit } = options;\n if (this._hasBindAutoFit) {\n // If it was bind before, unbind it now.\n if (!autoFit)\n this._unbindAutoFit();\n return;\n }\n if (autoFit) {\n this._hasBindAutoFit = true;\n window.addEventListener('resize', this._onResize);\n }\n }\n _unbindAutoFit() {\n if (this._hasBindAutoFit) {\n this._hasBindAutoFit = false;\n window.removeEventListener('resize', this._onResize);\n }\n }\n}\n//# sourceMappingURL=runtime.js.map","import { runtime } from '@antv/g';\nruntime.enableCSSParsing = false;\nexport { render, renderToMountedElement, MAIN_LAYER_CLASS_NAME, LABEL_LAYER_CLASS_NAME, ELEMENT_CLASS_NAME, VIEW_CLASS_NAME, PLOT_CLASS_NAME, COMPONENT_CLASS_NAME, LABEL_CLASS_NAME, AREA_CLASS_NAME, MASK_CLASS_NAME, } from './runtime';\nexport { register, Runtime, extend, } from './api';\nexport { ChartEvent } from './utils/event';\nexport * from './spec';\nexport { select, Selection } from './utils/selection';\nexport * from './transform';\nexport { LinearAxis } from './component/axis';\nexport { Light, Dark, Academy, Classic, ClassicDark } from './theme';\n//# sourceMappingURL=exports.js.map","import { corelib, plotlib, graphlib, geolib, stdlib } from './lib';\nimport { extend, Runtime } from './api';\nexport { corelib, plotlib, graphlib, geolib, stdlib };\nexport * from './exports';\n/**\n * G2 standard library initial all the libs except 3D and auto.\n */\nconst library = Object.assign({}, stdlib());\nexport const Chart = extend(Runtime, library);\n//# sourceMappingURL=index.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (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};\nimport * as ReactDOM from 'react-dom';\n// Let compiler not to search module usage\nvar fullClone = __assign({}, ReactDOM);\nvar version = fullClone.version, reactRender = fullClone.render, unmountComponentAtNode = fullClone.unmountComponentAtNode;\nvar createRoot;\ntry {\n var mainVersion = Number((version || '').split('.')[0]);\n if (mainVersion >= 18) {\n (createRoot = fullClone.createRoot);\n }\n}\ncatch (e) {\n // Do nothing;\n}\nfunction toggleWarning(skip) {\n var __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = fullClone.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n if (__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED &&\n typeof __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED === 'object') {\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = skip;\n }\n}\nvar MARK = '__rc_react_root__';\nfunction modernRender(node, container) {\n toggleWarning(true);\n var root = container[MARK] || createRoot(container);\n toggleWarning(false);\n root.render(node);\n container[MARK] = root;\n}\nfunction legacyRender(node, container) {\n reactRender(node, container);\n}\n/** @private Test usage. Not work in prod */\nexport function _r(node, container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyRender(node, container);\n }\n}\nexport function render(node, container) {\n if (createRoot) {\n modernRender(node, container);\n return;\n }\n legacyRender(node, container);\n}\n// ========================= Unmount ==========================\nfunction modernUnmount(container) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // Delay to unmount to avoid React 18 sync warning\n return [2 /*return*/, Promise.resolve().then(function () {\n var _a;\n (_a = container[MARK]) === null || _a === void 0 ? void 0 : _a.unmount();\n delete container[MARK];\n })];\n });\n });\n}\nfunction legacyUnmount(container) {\n unmountComponentAtNode(container);\n}\n/** @private Test usage. Not work in prod */\nexport function _u(container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyUnmount(container);\n }\n}\nexport function unmount(container) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (createRoot !== undefined) {\n // Delay to unmount to avoid React 18 sync warning\n return [2 /*return*/, modernUnmount(container)];\n }\n legacyUnmount(container);\n return [2 /*return*/];\n });\n });\n}\n","import { render } from '../react/render';\nvar mountMapping = new Map();\nmountMapping.set('tooltip', document.createElement('div'));\nexport var createNode = function (children, isTooltip) {\n if (isTooltip === void 0) { isTooltip = false; }\n var mount = null;\n /**\n * @description tooltip 为了防止抖动,只需一个root即可\n */\n if (isTooltip) {\n mount = mountMapping.get('tooltip');\n }\n else {\n mount = document.createElement('div');\n if (children === null || children === void 0 ? void 0 : children.key) {\n var exist = mountMapping.get(children.key);\n if (exist) {\n mount = exist;\n }\n else {\n mountMapping.set(children.key, mount);\n }\n }\n }\n render(children, mount);\n return mount;\n};\n","import React from 'react';\nvar shadowLoading = function (ele) {\n var shadowRoot = ele.attachShadow({ mode: 'open' });\n var shadowDiv = document.createElement('div');\n var shadowStyle = document.createElement('style');\n shadowStyle.innerHTML = \".loading {\\n display: inline-block;\\n position: relative;\\n width: 80px;\\n height: 80px;\\n }\\n .loading div {\\n position: absolute;\\n top: 33px;\\n width: 13px;\\n height: 13px;\\n border-radius: 50%;\\n background: #ccc;\\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\\n }\\n .loading div:nth-child(1) {\\n left: 8px;\\n animation: loading1 0.6s infinite;\\n }\\n .loading div:nth-child(2) {\\n left: 8px;\\n animation: loading2 0.6s infinite;\\n }\\n .loading div:nth-child(3) {\\n left: 32px;\\n animation: loading2 0.6s infinite;\\n }\\n .loading div:nth-child(4) {\\n left: 56px;\\n animation: loading3 0.6s infinite;\\n }\\n @keyframes loading1 {\\n 0% {\\n transform: scale(0);\\n }\\n 100% {\\n transform: scale(1);\\n }\\n }\\n @keyframes loading3 {\\n 0% {\\n transform: scale(1);\\n }\\n 100% {\\n transform: scale(0);\\n }\\n }\\n @keyframes loading2 {\\n 0% {\\n transform: translate(0, 0);\\n }\\n 100% {\\n transform: translate(24px, 0);\\n }\\n }\\n \";\n shadowDiv.classList.add('loading');\n shadowDiv.innerHTML = '
    ';\n shadowRoot.appendChild(shadowStyle);\n shadowRoot.appendChild(shadowDiv);\n};\nexport var ChartLoading = function (_a) {\n var loadingTemplate = _a.loadingTemplate, _b = _a.theme, theme = _b === void 0 ? 'light' : _b;\n var shadow = React.useRef(null);\n React.useEffect(function () {\n if (!loadingTemplate && shadow.current) {\n shadowLoading(shadow.current);\n }\n }, []);\n var renderLoading = function () {\n if (loadingTemplate)\n return loadingTemplate;\n return React.createElement(\"div\", { ref: shadow });\n };\n return (React.createElement(\"div\", { className: \"charts-loading-container\", style: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n left: 0,\n top: 0,\n zIndex: 99,\n backgroundColor: theme === 'dark' ? 'rgb(20, 20, 20)' : 'rgb(255, 255, 255)',\n } }, renderLoading()));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport React, { Fragment } from 'react';\nvar ErrorBoundary = /** @class */ (function (_super) {\n __extends(ErrorBoundary, _super);\n function ErrorBoundary() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n hasError: false,\n };\n _this.renderError = function (e) {\n var errorTemplate = _this.props.errorTemplate;\n switch (e) {\n default:\n if (typeof errorTemplate === 'function')\n return errorTemplate(e);\n return errorTemplate ? errorTemplate : React.createElement(\"h5\", null,\n \"\\u7EC4\\u4EF6\\u51FA\\u9519\\u4E86\\uFF0C\\u8BF7\\u6838\\u67E5\\u540E\\u91CD\\u8BD5\\uFF1A \",\n e.message);\n }\n };\n return _this;\n }\n ErrorBoundary.getDerivedStateFromError = function (error) {\n return { hasError: true, error: error };\n };\n ErrorBoundary.getDerivedStateFromProps = function (nextProps, state) {\n if (state.children !== nextProps.children) {\n return {\n children: nextProps.children,\n hasError: false,\n error: undefined,\n };\n }\n return null;\n };\n ErrorBoundary.prototype.render = function () {\n if (this.state.hasError) {\n return this.renderError(this.state.error);\n }\n return React.createElement(Fragment, null, this.props.children);\n };\n return ErrorBoundary;\n}(React.Component));\nexport { ErrorBoundary };\n","export var isValidElement = function (jsxCode) {\n var jsxRegex = /react|\\.jsx|children:\\[\\(|return\\s+\\S+.createElement\\([^\\)]*,/i;\n return jsxRegex.test(jsxCode);\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { useRef, useEffect } from 'react';\nimport { isFunction, isEqual, get, createNode, cloneDeep, isArray, isObject, isValidElement } from '../util';\nexport default function useChart(ChartClass, config) {\n var chart = useRef();\n var chartOptions = useRef();\n var container = useRef(null);\n var onReady = config.onReady, onEvent = config.onEvent;\n /**\n * Get data base64\n * @param {string} type A DOMString indicating the image format. The default format type is image/png.\n * @param {number} encoderOptions A Number between 0 and 1 indicating the image quality\n */\n var toDataURL = function (type, encoderOptions) {\n var _a;\n if (type === void 0) { type = 'image/png'; }\n var canvas = (_a = container.current) === null || _a === void 0 ? void 0 : _a.getElementsByTagName('canvas')[0];\n return canvas === null || canvas === void 0 ? void 0 : canvas.toDataURL(type, encoderOptions);\n };\n /**\n * Download Image\n * @param {string} name A name of image\n * @param {string} type A DOMString indicating the image format. The default format type is image/png.\n * @param {number} encoderOptions A Number between 0 and 1 indicating the image quality\n */\n var downloadImage = function (name, type, encoderOptions) {\n if (name === void 0) { name = 'download'; }\n if (type === void 0) { type = 'image/png'; }\n var imageName = name;\n if (name.indexOf('.') === -1) {\n imageName = \"\".concat(name, \".\").concat(type.split('/')[1]);\n }\n var base64 = toDataURL(type, encoderOptions);\n var a = document.createElement('a');\n a.href = base64;\n a.download = imageName;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n a = null;\n return imageName;\n };\n /**\n * JSX TO HTMLElement\n * @param {object} cfg\n * @param {boolean} flag isTooltip\n */\n var processConfig = function (cfg, flag) {\n if (flag === void 0) { flag = false; }\n var keys = Object.keys(cfg);\n var isTooltip = flag;\n keys.forEach(function (key) {\n var current = cfg[key];\n if (key === 'tooltip') {\n isTooltip = true;\n }\n if (isFunction(current) && isValidElement(\"\".concat(current))) {\n cfg[key] = function () {\n var arg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n arg[_i] = arguments[_i];\n }\n return createNode(current.apply(void 0, arg), isTooltip);\n };\n }\n else {\n if (isArray(current)) {\n current.forEach(function (item) {\n processConfig(item, isTooltip);\n });\n }\n else if (isObject(current)) {\n processConfig(current, isTooltip);\n }\n else {\n isTooltip = flag;\n }\n }\n });\n };\n useEffect(function () {\n if (chart.current && !isEqual(chartOptions.current, config)) {\n var changeData = false;\n if (chartOptions.current) {\n // 从 options 里面取出 data 、value 、 percent 进行比对,判断是否仅数值发生改变\n var _a = chartOptions.current, currentData = _a.data, currentConfig = __rest(_a, [\"data\"]);\n var inputData = config.data, inputConfig = __rest(config, [\"data\"]);\n changeData = isEqual(currentConfig, inputConfig);\n }\n chartOptions.current = cloneDeep(config);\n if (changeData) {\n chart.current.changeData(get(config, 'data'));\n }\n else {\n processConfig(config);\n chart.current.update(config);\n chart.current.render();\n }\n }\n }, [config]);\n useEffect(function () {\n if (!container.current) {\n return function () { return null; };\n }\n if (!chartOptions.current) {\n chartOptions.current = cloneDeep(config);\n }\n processConfig(config);\n var chartInstance = new ChartClass(container.current, __assign({}, config));\n chartInstance.toDataURL = toDataURL;\n chartInstance.downloadImage = downloadImage;\n chartInstance.render();\n chart.current = chartInstance;\n if (onReady) {\n onReady(chartInstance);\n }\n var handler = function (event) {\n if (onEvent) {\n onEvent(chartInstance, event);\n }\n };\n chartInstance.on('*', handler);\n // 组件销毁时销毁图表\n return function () {\n if (chart.current) {\n chart.current.destroy();\n chart.current.off('*', handler);\n chart.current = undefined;\n }\n };\n }, []);\n return {\n chart: chart,\n container: container,\n };\n}\n","import * as d3Hierarchy from 'd3-hierarchy';\nimport { assign, isArray, reduce, size, filter, isString } from '@antv/util';\nconst DEFAULT_OPTIONS = {\n field: 'value',\n size: [1, 1], // width, height\n round: false,\n padding: 0,\n // Default desc.\n sort: (a, b) => b.value - a.value,\n as: ['x', 'y'],\n // Whether to ignore parentValue. When set to true, the weight of the parent node is determined by the child element.\n ignoreParentValue: true,\n};\n// In the same level, the nodes under the same parent node index order.\nexport const NODE_INDEX_FIELD = 'nodeIndex';\n// Number of child nodes\nexport const CHILD_NODE_COUNT = 'childNodeCount';\n// Ancestor of the node\nexport const NODE_ANCESTORS_FIELD = 'nodeAncestor';\nconst INVALID_FIELD_ERR_MSG = 'Invalid field: it must be a string!';\nexport function getField(options, defaultField) {\n const { field, fields } = options;\n if (isString(field)) {\n return field;\n }\n if (isArray(field)) {\n console.warn(INVALID_FIELD_ERR_MSG);\n return field[0];\n }\n console.warn(`${INVALID_FIELD_ERR_MSG} will try to get fields instead.`);\n if (isString(fields)) {\n return fields;\n }\n if (isArray(fields) && fields.length) {\n return fields[0];\n }\n if (defaultField) {\n return defaultField;\n }\n throw new TypeError(INVALID_FIELD_ERR_MSG);\n}\nexport function getAllNodes(root) {\n const nodes = [];\n if (root && root.each) {\n let parent;\n let index;\n // d3-hierarchy: Invokes the specified function for node and each descendant in **breadth-first order**\n root.each((node) => {\n var _a, _b;\n if (node.parent !== parent) {\n parent = node.parent;\n index = 0;\n }\n else {\n index += 1;\n }\n const ancestors = filter((((_a = node.ancestors) === null || _a === void 0 ? void 0 : _a.call(node)) || []).map((d) => nodes.find((n) => n.name === d.name) || d), ({ depth }) => depth > 0 && depth < node.depth);\n node[NODE_ANCESTORS_FIELD] = ancestors;\n node[CHILD_NODE_COUNT] = ((_b = node.children) === null || _b === void 0 ? void 0 : _b.length) || 0;\n node[NODE_INDEX_FIELD] = index;\n nodes.push(node);\n });\n }\n else if (root && root.eachNode) {\n // @antv/hierarchy\n root.eachNode((node) => {\n nodes.push(node);\n });\n }\n return nodes;\n}\nexport function partition(data, options) {\n options = assign({}, DEFAULT_OPTIONS, options);\n const as = options.as;\n if (!isArray(as) || as.length !== 2) {\n throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ \"x\", \"y\" ])!');\n }\n let field;\n try {\n field = getField(options);\n }\n catch (e) {\n console.warn(e);\n }\n const partition = (data) => d3Hierarchy\n .partition()\n .size(options.size)\n .round(options.round)\n .padding(options.padding)(\n /**\n * The sum function must be specified in the d3Hierarchy layout to compute node values by calling the specified value function\n * from the current node in post-order traversal order for the current node and for each descendant node and returning the current node.\n * for example:\n * { node: 'parent', value: 10, children: [{node: 'child1', value: 5}, {node: 'child2', value: 5}, ]}.\n * The computed value obtained by the parent is sum(node(parent)) + sum(node(child1)) + sum(node(child2)).\n * In the sum function, d is the data passed in by the user and children is the reserved field.\n */\n d3Hierarchy\n .hierarchy(data)\n .sum((d) => size(d.children)\n ? options.ignoreParentValue\n ? 0\n : d[field] - reduce(d.children, (a, b) => a + b[field], 0)\n : d[field])\n .sort(options.sort));\n const root = partition(data);\n /*\n * points:\n * 3 2\n * 0 1\n */\n const x = as[0];\n const y = as[1];\n root.each((node) => {\n var _a, _b;\n node[x] = [node.x0, node.x1, node.x1, node.x0];\n node[y] = [node.y1, node.y1, node.y0, node.y0];\n node.name = node.name || ((_a = node.data) === null || _a === void 0 ? void 0 : _a.name) || ((_b = node.data) === null || _b === void 0 ? void 0 : _b.label);\n node.data.name = node.name;\n ['x0', 'x1', 'y0', 'y1'].forEach((prop) => {\n if (as.indexOf(prop) === -1) {\n delete node[prop];\n }\n });\n });\n return getAllNodes(root);\n}\n//# sourceMappingURL=partition.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { deepMix, pick, get } from '@antv/util';\nimport { partition, CHILD_NODE_COUNT } from '../utils/hierarchy/partition';\nexport const SUNBURST_TYPE = 'sunburst';\nexport const SUNBURST_TYPE_FIELD = 'markType';\nexport const SUNBURST_Y_FIELD = 'value';\nexport const SUNBURST_PATH_FIELD = 'path';\nexport const SUNBURST_ANCESTOR_FIELD = 'ancestor-node';\n/**\n * Sunburst TransformData\n * @param options\n */\nexport function transformData(options) {\n const { data, encode } = options;\n const { color, value } = encode;\n const type = 'partition';\n const nodes = partition(data, {\n field: value,\n // @ts-ignore\n type: `hierarchy.${type}`,\n as: ['x', 'y'],\n });\n const result = [];\n nodes.forEach((node) => {\n var _a, _b, _c, _d;\n if (node.depth === 0) {\n return null;\n }\n let path = node.data.name;\n const pathList = [path];\n let ancestorNode = Object.assign({}, node);\n while (ancestorNode.depth > 1) {\n path = `${(_a = ancestorNode.parent.data) === null || _a === void 0 ? void 0 : _a.name} / ${path}`;\n pathList.unshift((_b = ancestorNode.parent.data) === null || _b === void 0 ? void 0 : _b.name);\n ancestorNode = ancestorNode.parent;\n }\n const nodeInfo = Object.assign(Object.assign(Object.assign({}, pick(node.data, [value])), { [SUNBURST_PATH_FIELD]: path, [SUNBURST_ANCESTOR_FIELD]: ancestorNode.data.name }), node);\n if (color && color !== SUNBURST_ANCESTOR_FIELD) {\n nodeInfo[color] = node.data[color] || ((_d = (_c = node.parent) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d[color]);\n }\n result.push(nodeInfo);\n });\n return result.map((d) => (Object.assign(Object.assign({}, d), { x: d.x.slice(0, 2), y: [d.y[2], d.y[0]], fillOpacity: Math.pow(0.85, d.depth) })));\n}\nconst DEFAULT_OPTIONS = {\n id: SUNBURST_TYPE,\n encode: {\n x: 'x',\n y: 'y',\n key: SUNBURST_PATH_FIELD,\n color: SUNBURST_ANCESTOR_FIELD,\n value: 'value',\n },\n axis: { x: false, y: false },\n style: {\n [SUNBURST_TYPE_FIELD]: SUNBURST_TYPE,\n stroke: '#fff',\n lineWidth: 0.5,\n fillOpacity: 'fillOpacity',\n [CHILD_NODE_COUNT]: CHILD_NODE_COUNT,\n depth: 'depth',\n },\n state: {\n active: { zIndex: 2, stroke: '#000' },\n inactive: { zIndex: 1, stroke: '#fff' },\n },\n legend: false,\n interaction: { drillDown: true },\n coordinate: {\n type: 'polar',\n innerRadius: 0.2,\n },\n};\nexport const Sunburst = (options) => {\n const { encode: encodeOption, data = [], legend } = options, resOptions = __rest(options, [\"encode\", \"data\", \"legend\"]);\n const coordinate = Object.assign(Object.assign({}, resOptions.coordinate), { \n // Reac Bug InnerRadius = 0.\n innerRadius: Math.max(get(resOptions, ['coordinate', 'innerRadius'], 0.2), 0.00001) });\n const encode = Object.assign(Object.assign({}, DEFAULT_OPTIONS.encode), encodeOption);\n const { value } = encode;\n const rectData = transformData({ encode, data });\n return [\n deepMix({}, DEFAULT_OPTIONS, Object.assign(Object.assign({ type: 'rect', data: rectData, encode, tooltip: {\n title: 'path',\n items: [\n (d) => {\n return {\n name: value,\n value: d[value],\n };\n },\n ],\n } }, resOptions), { coordinate })),\n ];\n};\nSunburst.props = {};\n//# sourceMappingURL=sunburst.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Text, Group } from '@antv/g';\nimport { get, deepMix, pick, keys } from '@antv/util';\nimport { select, PLOT_CLASS_NAME } from '@antv/g2';\nimport { CHILD_NODE_COUNT } from '../utils/hierarchy/partition';\nimport { SUNBURST_TYPE, SUNBURST_TYPE_FIELD, SUNBURST_ANCESTOR_FIELD, } from '../mark/sunburst';\n// Get sunburst element.\nconst getElementsSunburst = (plot) => {\n return plot\n .querySelectorAll('.element')\n .filter((item) => get(item, ['style', SUNBURST_TYPE_FIELD]) === SUNBURST_TYPE);\n};\nfunction selectPlotArea(root) {\n return select(root).select(`.${PLOT_CLASS_NAME}`).node();\n}\n// Default breadCrumb config.\nconst DEFAULT_BREADCRUMB = {\n rootText: 'root',\n style: {\n fill: 'rgba(0, 0, 0, 0.85)',\n fontSize: 12,\n y: 1,\n },\n active: {\n fill: 'rgba(0, 0, 0, 0.5)',\n },\n};\n/**\n * @todo DrillDown interaction\n */\nexport function DrillDown(drillDownOptions = {}) {\n const { breadCrumb: textConfig = {}, fixedColor = true } = drillDownOptions;\n const breadCrumb = deepMix({}, DEFAULT_BREADCRUMB, textConfig);\n return (context) => {\n const { update, setState, container, view, options } = context;\n const plotArea = selectPlotArea(container);\n const sunburstMark = options.marks.find(({ id }) => id === SUNBURST_TYPE);\n const { state } = sunburstMark;\n // Create breadCrumbTextsGroup,save textSeparator、drillTexts.\n const textGroup = new Group();\n plotArea.appendChild(textGroup);\n // Modify the data and scale according to the path and the level of the current click, so as to achieve the effect of drilling down and drilling up and initialization.\n const drillDownClick = (path, depth) => __awaiter(this, void 0, void 0, function* () {\n // Clear text.\n textGroup.removeChildren();\n // More path creation text.\n if (path) {\n // Create root text.\n const rootText = new Text({\n style: Object.assign({ x: 0, text: breadCrumb.rootText, \n // @ts-ignore\n depth: 0 }, breadCrumb.style),\n });\n textGroup.appendChild(rootText);\n let name = '';\n const pathArray = path === null || path === void 0 ? void 0 : path.split(' / ');\n let y = breadCrumb.style.y;\n let x = textGroup.getBBox().width;\n const maxWidth = plotArea.getBBox().width;\n // Create path: 'type1 / type2 / type3' -> '/ type1 / type2 / type3'.\n const drillTexts = pathArray.map((text, index) => {\n const textSeparator = new Text({\n style: Object.assign(Object.assign({ x, text: ' / ' }, breadCrumb.style), { y }),\n });\n textGroup.appendChild(textSeparator);\n x += textSeparator.getBBox().width;\n name = `${name}${text} / `;\n const drillText = new Text({\n name: name.replace(/\\s\\/\\s$/, ''),\n style: Object.assign(Object.assign({ text,\n x, \n // @ts-ignore\n depth: index + 1 }, breadCrumb.style), { y }),\n });\n textGroup.appendChild(drillText);\n x += drillText.getBBox().width;\n /**\n * Page width exceeds maximum, line feed.\n * | ----maxWidth---- |\n * | / tyep1 / tyep2 / type3 |\n * ->\n * | ----maxWidth---- |\n * | / tyep1 / tyep2 |\n * | / type3 |\n */\n if (x > maxWidth) {\n y = textGroup.getBBox().height;\n x = 0;\n textSeparator.attr({\n x,\n y,\n });\n x += textSeparator.getBBox().width;\n drillText.attr({\n x,\n y,\n });\n x += drillText.getBBox().width;\n }\n return drillText;\n });\n // Add Active, Add DrillDown\n [rootText, ...drillTexts].forEach((item, index) => {\n // Last drillText \n if (index === drillTexts.length)\n return;\n const originalAttrs = Object.assign({}, item.attributes);\n item.attr('cursor', 'pointer');\n item.addEventListener('mouseenter', () => {\n item.attr(breadCrumb.active);\n });\n item.addEventListener('mouseleave', () => {\n item.attr(originalAttrs);\n });\n item.addEventListener('click', () => {\n drillDownClick(item.name, get(item, ['style', 'depth']));\n });\n });\n }\n // Update marks.\n setState('drillDown', (viewOptions) => {\n const { marks } = viewOptions;\n // Add filter transform for every marks,\n // which will skip for mark without color channel.\n const newMarks = marks.map((mark) => {\n if (mark.id !== SUNBURST_TYPE && mark.type !== 'rect')\n return mark;\n // Inset after aggregate transform, such as group, and bin.\n const { data } = mark;\n const newScale = Object.fromEntries(['color'].map((channel) => [\n channel,\n { domain: view.scale[channel].getOptions().domain },\n ]));\n const newData = data.filter((item) => {\n const key = item.path;\n // FixedColor true change drillDown color.\n if (fixedColor) {\n item[SUNBURST_ANCESTOR_FIELD] = key.split(' / ')[depth];\n }\n if (!path)\n return true;\n const reg = new RegExp(`^${path}.+`);\n return reg.test(key);\n });\n // DrillDown by filtering the data and scale.\n return deepMix({}, mark, fixedColor\n ? {\n data: newData,\n }\n : {\n data: newData,\n scale: newScale,\n });\n });\n return Object.assign(Object.assign({}, viewOptions), { marks: newMarks });\n });\n yield update();\n });\n const createDrillClick = (e) => {\n const item = e.target;\n // Element need style.markType === 'sunburst', markType === 'rect', have children.\n if (get(item, ['style', SUNBURST_TYPE_FIELD]) !== SUNBURST_TYPE ||\n get(item, ['markType']) !== 'rect' ||\n !get(item, ['style', CHILD_NODE_COUNT]))\n return;\n const path = get(item, ['__data__', 'key']);\n const depth = get(item, ['style', 'depth']);\n item.style.cursor = 'pointer';\n drillDownClick(path, depth);\n };\n // Add click drill interaction.\n plotArea.addEventListener('click', createDrillClick);\n // Change attributes keys.\n const changeStyleKey = keys(Object.assign(Object.assign({}, state.active), state.inactive));\n const createActive = () => {\n const elements = getElementsSunburst(plotArea);\n elements.forEach((element) => {\n const childNodeCount = get(element, ['style', CHILD_NODE_COUNT]);\n const cursor = get(element, ['style', 'cursor']);\n if (cursor !== 'pointer' && childNodeCount) {\n element.style.cursor = 'pointer';\n const originalAttrs = pick(element.attributes, changeStyleKey);\n element.addEventListener('mouseenter', () => {\n element.attr(state.active);\n });\n element.addEventListener('mouseleave', () => {\n element.attr(deepMix(originalAttrs, state.inactive));\n });\n }\n });\n };\n // Animate elements update, Add active.\n plotArea.addEventListener('mousemove', createActive);\n return () => {\n textGroup.remove();\n plotArea.removeEventListener('click', createDrillClick);\n plotArea.removeEventListener('mousemove', createActive);\n };\n };\n}\n//# sourceMappingURL=drillDown.js.map","import { runtime } from '@antv/g';\nimport { Sunburst } from \"./mark/sunburst\";\nimport { DrillDown } from \"./interaction/drillDown\";\nruntime.enableCSSParsing = false;\nexport function plotlib() {\n return {\n \"interaction.drillDown\": DrillDown,\n \"mark.sunburst\": Sunburst,\n };\n}\n//# sourceMappingURL=lib.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { plotlib } from '@antv/g2-extension-plot';\nimport { Runtime, extend, stdlib } from '@antv/g2';\nexport var Chart = extend(Runtime, __assign(__assign({}, stdlib()), plotlib()));\n","import { SPECIAL_OPTIONS, TRANSFORM_OPTION_KEY, CONFIG_SHAPE, VIEW_OPTIONS } from '../constants';\nimport { omit, pick, isArray, deleteExcessKeys, filterTransformed, mergeWithArrayCoverage, set, isObject, isUndefined, } from './index';\n/**\n * @title 将自定义配置转换为 G2 接受的格式\n */\nexport var transformOptions = function (params) {\n var options = filterTransformed(params);\n var _a = options.children, children = _a === void 0 ? [] : _a;\n var rest = omit(options, [].concat(VIEW_OPTIONS, CONFIG_SHAPE.map(function (item) { return item.key; })));\n var getCustomTransform = function (key) {\n var _a;\n return (_a = SPECIAL_OPTIONS.find(function (option) { return option.key === key; })) === null || _a === void 0 ? void 0 : _a.callback;\n };\n /**\n * @description 更新图表配置\n */\n var updateOptions = function (origin, key, value) {\n var callback = getCustomTransform(key);\n if (callback) {\n callback(origin, key, value);\n }\n else {\n origin[key] = mergeWithArrayCoverage({}, origin[key], value);\n }\n };\n /**\n * @description\n * 1. 将 CONFIG_SHAPE 中的配置项, 转换为 children\n * @example 详见 src/core/constants/index.ts\n */\n var transformShape = function (config) {\n Object.keys(config).forEach(function (key) {\n var exist = CONFIG_SHAPE.find(function (item) { return item.key === key; });\n if (exist) {\n var type = exist.type, extend_keys = exist.extend_keys;\n if (type) {\n children.push(transformConfig(mergeWithArrayCoverage({}, pick(config, extend_keys), { type: type }, config[key])));\n }\n else {\n // annotations\n if (isArray(config[key])) {\n config[key].forEach(function (annotation) {\n children.push(transformConfig(annotation));\n });\n }\n }\n }\n });\n };\n /**\n * @title 通用转换逻辑\n * @description 直接修改原对象\n */\n var transformConfig = function (config) {\n transformShape(config);\n /**\n * @description 遍历配置项,如果存在对应的映射规则,则进行转换\n * @example 详见 src/core/constants/index.ts\n */\n Object.keys(TRANSFORM_OPTION_KEY).forEach(function (key) {\n var transformTarget = TRANSFORM_OPTION_KEY[key];\n if (!isUndefined(config[key])) {\n if (isObject(transformTarget)) {\n var value = transformTarget.value, target = transformTarget.target;\n var transformValue = value(config[key]);\n updateOptions(config, target, transformValue);\n }\n else {\n set(config, transformTarget, config[key]);\n }\n }\n });\n return config;\n };\n children.forEach(function (child) {\n /**\n * 提前先 child 创造一个 config 防止 rest 被污染 和 child 数据缺失\n * @description 外层配置应用到所有 children\n */\n var config = mergeWithArrayCoverage({}, rest, child);\n transformConfig(mergeWithArrayCoverage(child, config));\n });\n transformShape(options);\n deleteExcessKeys(options);\n return params;\n};\n","var __spreadArray = (this && this.__spreadArray) || function (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};\nimport { TRANSFORM_OPTION_KEY, VIEW_OPTIONS, CONFIG_SHAPE, ANNOTATION_LIST } from '../constants';\n/**\n * 统一删除已转换的配置项\n */\nexport var deleteExcessKeys = function (options) {\n var _a = options.children, children = _a === void 0 ? [] : _a;\n var deleteKeys = Object.keys(TRANSFORM_OPTION_KEY).concat(CONFIG_SHAPE.map(function (item) { return item.key; }));\n deleteKeys.forEach(function (key) {\n delete options[key];\n });\n /** 针对双轴图、Mix 等复合图表 */\n children.forEach(function (child) {\n Object.keys(child).forEach(function (key) {\n if (deleteKeys.includes(key)) {\n delete child[key];\n }\n });\n });\n /** 删除不在 View 和自定义 Annotations 里面配置,避免多次 Transform & Scale 等 */\n Object.keys(options).forEach(function (key) {\n if (!__spreadArray(__spreadArray([], VIEW_OPTIONS, true), ANNOTATION_LIST.map(function (item) { return item.key; }), true).includes(key)) {\n delete options[key];\n }\n });\n return options;\n};\n","import { TRANSFORM_SIGN } from '../constants';\nimport { isArray } from './index';\nexport var filterTransformed = function (params) {\n var options = params.options;\n var _a = options.children, children = _a === void 0 ? [] : _a;\n children.forEach(function (child) {\n Object.keys(child).forEach(function (key) {\n if (isArray(child[key]) && key !== 'data') {\n child[key] = child[key].filter(function (item) { return !item[TRANSFORM_SIGN]; });\n }\n });\n });\n return options;\n};\n","var __spreadArray = (this && this.__spreadArray) || function (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};\nimport { isArray, mergeWith } from './index';\nvar arrayCoverage = function (objValue, srcValue) {\n if (isArray(srcValue)) {\n return srcValue;\n }\n};\nexport var mergeWithArrayCoverage = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return mergeWith.apply(void 0, __spreadArray(__spreadArray([], args, false), [arrayCoverage], false));\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { isArray, isBoolean } from '../utils';\n/** new Chart options */\nexport var CHART_OPTIONS = ['renderer'];\n/** There is only the view layer, no need to pass it down to children */\nexport var VIEW_OPTIONS = [\n 'width',\n 'height',\n 'autoFit',\n 'theme',\n 'inset',\n 'insetLeft',\n 'insetRight',\n 'insetTop',\n 'insetBottom',\n 'padding',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n 'margin',\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'depth',\n 'title',\n 'clip',\n 'children',\n 'type',\n 'data',\n 'direction',\n];\n/** 特殊标识,用于标识改配置来自于转换逻辑,而非用户配置 */\nexport var TRANSFORM_SIGN = '__transform__';\n/** 特殊标识,用于跳过 删除已转换的配置项 */\nexport var SKIP_DEL_CUSTOM_SIGN = '__skipDelCustomKeys__';\n/**\n * @title 字段转换逻辑\n * @example\n * 1. xField: 'year' -> encode: {x: 'year'}\n * 2. yField: 'scales' -> encode: {y: 'scales'}\n * 3. shape: 'smooth' -> style: {shape: 'smooth'} shapeField: 'shape' -> encode: { shape: 'shape' }\n * 4. connectNulls: {connect: true} -> style: {connect: true}\n * 5. keyField: 'key' -> encode: { key: 'key' }\n */\nvar commonCallback = function (type, value) {\n if (isBoolean(value)) {\n return {\n type: type,\n available: value,\n };\n }\n return __assign({ type: type }, value);\n};\nexport var TRANSFORM_OPTION_KEY = {\n /** encode */\n xField: 'encode.x',\n yField: 'encode.y',\n colorField: 'encode.color',\n angleField: 'encode.y',\n keyField: 'encode.key',\n sizeField: 'encode.size',\n shapeField: 'encode.shape',\n seriesField: 'encode.series',\n positionField: 'encode.position',\n textField: 'encode.text',\n valueField: 'encode.value',\n binField: 'encode.x',\n srcField: 'encode.src',\n linkColorField: 'encode.linkColor',\n radius: 'coordinate.outerRadius',\n innerRadius: 'coordinate.innerRadius',\n startAngle: 'coordinate.startAngle',\n endAngle: 'coordinate.endAngle',\n focusX: 'coordinate.focusX',\n focusY: 'coordinate.focusY',\n distortionX: 'coordinate.distortionX',\n distortionY: 'coordinate.distortionY',\n visual: 'coordinate.visual',\n /**\n * @title 堆叠\n * @example\n * 1. stack: true -> transform: [{type: 'stackY'}]\n */\n stack: {\n target: 'transform',\n value: function (value) {\n return commonCallback('stackY', value);\n },\n },\n /**\n * @title 归一化\n * @example\n * 1. normalize: true -> transform: [{type: 'normalizeY'}]\n */\n normalize: {\n target: 'transform',\n value: function (value) {\n return commonCallback('normalizeY', value);\n },\n },\n /**\n * @title 百分比\n * @description 同 normalize\n * @example\n * 1. percent: true -> transform: [{type: 'normalizeY'}]\n */\n percent: {\n target: 'transform',\n value: function (value) {\n return commonCallback('normalizeY', value);\n },\n },\n /**\n * @title 分组\n * @example\n * 1. group: true -> transform: [{type: 'dodgeX'}]\n */\n group: {\n target: 'transform',\n value: function (value) {\n return commonCallback('dodgeX', value);\n },\n },\n /**\n * @title 排序\n * @example\n * 1. sort: true -> transform: [{type: 'sortX'}]\n */\n sort: {\n target: 'transform',\n value: function (value) {\n return commonCallback('sortX', value);\n },\n },\n /**\n * @title 对称\n * @example\n * 1. symmetry: true -> transform: [{type: 'symmetryY'}]\n */\n symmetry: {\n target: 'transform',\n value: function (value) {\n return commonCallback('symmetryY', value);\n },\n },\n /**\n * @title 对 y 和 y1 通道求差集\n * @example\n * 1. diff: true -> transform: [{type: 'diffY'}]\n */\n diff: {\n target: 'transform',\n value: function (value) {\n return commonCallback('diffY', value);\n },\n },\n meta: {\n target: 'scale',\n value: function (value) {\n return value;\n },\n },\n label: {\n target: 'labels',\n value: function (value) {\n return value;\n },\n },\n /**\n * @title 折线的形状\n * @example\n * 1. shape: 'smooth' -> style: {shape: 'smooth'}\n */\n shape: 'style.shape',\n /**\n * @title 是否链接空值\n * @description 支持 boolean 和 对象类型\n */\n connectNulls: {\n target: 'style',\n value: function (value) {\n if (isBoolean(value)) {\n return {\n connect: value,\n };\n }\n return value;\n },\n },\n};\n/**\n * @title 将 CONFIG_SHAPE 中的配置项, 转换为 children\n * @example\n * 1. annotations: [{type: 'text'}] -> children: [{type: 'text'}]\n * 2. line: {shape: 'hvh'}-> children: [{type: 'line', style: { shape: 'hvh'}}]\n */\nvar EXTEND_KEYS = [\n 'xField',\n 'yField',\n 'seriesField',\n 'colorField',\n 'keyField',\n 'positionField',\n 'meta',\n 'tooltip',\n 'animate',\n 'stack',\n 'normalize',\n 'percent',\n 'group',\n 'sort',\n 'symmetry',\n 'diff',\n];\nexport var CONFIG_SHAPE = [\n {\n key: 'annotations',\n extend_keys: [],\n },\n {\n key: 'line',\n type: 'line',\n extend_keys: EXTEND_KEYS,\n },\n {\n key: 'point',\n type: 'point',\n extend_keys: EXTEND_KEYS,\n },\n {\n key: 'area',\n type: 'area',\n extend_keys: EXTEND_KEYS,\n },\n];\n/**\n * @description 一些特殊的配置项,需要自定义转换逻辑\n */\nexport var SPECIAL_OPTIONS = [\n {\n key: 'transform',\n callback: function (origin, key, value) {\n var _a;\n origin[key] = origin[key] || [];\n var _b = value.available, available = _b === void 0 ? true : _b, rest = __rest(value, [\"available\"]);\n if (available) {\n origin[key].push(__assign((_a = {}, _a[TRANSFORM_SIGN] = true, _a), rest));\n }\n else {\n origin[key].splice(origin[key].indexOf(function (item) { return item.type === value.type; }), 1);\n }\n },\n },\n {\n key: 'labels',\n callback: function (origin, key, value) {\n var _a;\n /**\n * @description 特殊情况处理\n * 1. 如果 labels 为 false,表示关闭标签\n * 2. 如果 labels 为数组,用于多 label 的场景\n * @example\n * 1. label: false -> labels: []\n * 2. label: [{x}, {xx}] -> labels: [{x}, {xx}]\n */\n if (!value || isArray(value)) {\n origin[key] = value ? value : [];\n return;\n }\n /**\n * @description 填充默认 text 逻辑\n */\n if (!value.text) {\n value['text'] = origin['yField'];\n }\n origin[key] = origin[key] || [];\n origin[key].push(__assign((_a = {}, _a[TRANSFORM_SIGN] = true, _a), value));\n },\n },\n];\nexport var ANNOTATION_LIST = [\n {\n key: 'conversionTag',\n shape: 'ConversionTag',\n },\n {\n key: 'axisText',\n shape: 'BidirectionalBarAxisText',\n },\n];\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Text as GText } from '@antv/g';\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text(_a) {\n if (_a === void 0) { _a = {}; }\n var style = _a.style, restOptions = __rest(_a, [\"style\"]);\n return _super.call(this, __assign({ style: __assign({ text: '', fontSize: 12, textBaseline: 'middle', textAlign: 'center', fill: '#000', fontStyle: 'normal', fontVariant: 'normal', fontWeight: 'normal', lineWidth: 1 }, style) }, restOptions)) || this;\n }\n return Text;\n}(GText));\nexport { Text };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Polygon as GPolygon } from '@antv/g';\nvar Polygon = /** @class */ (function (_super) {\n __extends(Polygon, _super);\n function Polygon(_a) {\n if (_a === void 0) { _a = {}; }\n var style = _a.style, restOptions = __rest(_a, [\"style\"]);\n return _super.call(this, __assign({ style: __assign({ fill: '#eee' }, style) }, restOptions)) || this;\n }\n return Polygon;\n}(GPolygon));\nexport { Polygon };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CustomElement } from '@antv/g';\nimport { mergeWithArrayCoverage } from '../utils';\nvar Annotaion = /** @class */ (function (_super) {\n __extends(Annotaion, _super);\n function Annotaion(chart, config, defaultOptions) {\n var _this = _super.call(this, { style: mergeWithArrayCoverage(defaultOptions, config) }) || this;\n _this.chart = chart;\n return _this;\n }\n Annotaion.prototype.connectedCallback = function () {\n this.render(this.attributes, this);\n this.bindEvents(this.attributes, this);\n };\n Annotaion.prototype.disconnectedCallback = function () { };\n Annotaion.prototype.attributeChangedCallback = function (name) { };\n Annotaion.prototype.update = function (attr, animate) {\n var _a;\n this.attr(mergeWithArrayCoverage({}, this.attributes, attr || {}));\n return (_a = this.render) === null || _a === void 0 ? void 0 : _a.call(this, this.attributes, this, animate);\n };\n Annotaion.prototype.clear = function () {\n this.removeChildren();\n };\n Annotaion.prototype.getElementsLayout = function () {\n var canvas = this.chart.getContext().canvas;\n var elements = canvas.document.getElementsByClassName('element');\n var elementsLayout = [];\n elements.forEach(function (element) {\n //@ts-expect-error\n var bbox = element.getBBox();\n var x = bbox.x, y = bbox.y, width = bbox.width, height = bbox.height;\n var data = element['__data__'];\n elementsLayout.push({\n bbox: bbox,\n x: x,\n y: y,\n width: width,\n height: height,\n key: data.key,\n data: data,\n });\n });\n return elementsLayout;\n };\n Annotaion.prototype.bindEvents = function (attributes, container) { };\n return Annotaion;\n}(CustomElement));\nexport { Annotaion };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { get, isFunction } from '../utils';\nimport { Text, Polygon } from './shapes';\nimport { Annotaion } from './core';\nvar ConversionTag = /** @class */ (function (_super) {\n __extends(ConversionTag, _super);\n function ConversionTag(chart, options) {\n return _super.call(this, chart, options, { type: ConversionTag.tag }) || this;\n }\n ConversionTag.prototype.getConversionTagLayout = function () {\n var isVertical = this.direction === 'vertical';\n var elementsLayout = this.getElementsLayout();\n var _a = elementsLayout[0], firstX = _a.x, firstY = _a.y, firstHeigt = _a.height, firstWidth = _a.width, firstData = _a.data;\n var valuePath = ['items', 0, 'value'];\n var preValue = get(firstData, valuePath);\n var elementDistance = isVertical\n ? elementsLayout[1].y - firstY - firstHeigt\n : elementsLayout[1].x - firstX - firstWidth;\n var tagLayout = [];\n var _b = this.attributes, _c = _b.size, size = _c === void 0 ? 40 : _c, _d = _b.arrowSize, arrowSize = _d === void 0 ? 20 : _d, _e = _b.spacing, spacing = _e === void 0 ? 4 : _e;\n elementsLayout.forEach(function (element, index) {\n if (index > 0) {\n var x = element.x, y = element.y, height = element.height, width = element.width, data = element.data, key = element.key;\n var currentValue = get(data, valuePath);\n var halfSize = size / 2;\n if (isVertical) {\n var arrowVertexX = x + width / 2;\n var arrowVertexY = y;\n tagLayout.push({\n points: [\n [arrowVertexX + halfSize, arrowVertexY - elementDistance + spacing],\n [arrowVertexX + halfSize, arrowVertexY - arrowSize - spacing],\n [arrowVertexX, arrowVertexY - spacing],\n [arrowVertexX - halfSize, arrowVertexY - arrowSize - spacing],\n [arrowVertexX - halfSize, arrowVertexY - elementDistance + spacing],\n ],\n center: [arrowVertexX, arrowVertexY - elementDistance / 2 - spacing],\n width: elementDistance,\n value: [preValue, currentValue],\n key: key,\n });\n }\n else {\n var arrowVertexX = x;\n var arrowVertexY = y + height / 2;\n tagLayout.push({\n points: [\n [x - elementDistance + spacing, arrowVertexY - halfSize],\n [x - arrowSize - spacing, arrowVertexY - halfSize],\n [arrowVertexX - spacing, arrowVertexY],\n [x - arrowSize - spacing, arrowVertexY + halfSize],\n [x - elementDistance + spacing, arrowVertexY + halfSize],\n ],\n center: [arrowVertexX - elementDistance / 2 - spacing, arrowVertexY],\n width: elementDistance,\n value: [preValue, currentValue],\n key: key,\n });\n }\n preValue = currentValue;\n }\n });\n return tagLayout;\n };\n ConversionTag.prototype.render = function () {\n this.setDirection();\n this.drawConversionTag();\n };\n /** 根据 coordinate 确定方向 */\n ConversionTag.prototype.setDirection = function () {\n var coordinate = this.chart.getCoordinate();\n var transformations = get(coordinate, 'options.transformations');\n var direction = 'horizontal';\n transformations.forEach(function (transformation) {\n if (transformation.includes('transpose')) {\n direction = 'vertical';\n }\n });\n this.direction = direction;\n };\n ConversionTag.prototype.drawConversionTag = function () {\n var _this = this;\n var conversionLayout = this.getConversionTagLayout();\n var _a = this.attributes, style = _a.style, _b = _a.text, textStyle = _b.style, formatter = _b.formatter;\n conversionLayout.forEach(function (layout) {\n var points = layout.points, center = layout.center, value = layout.value, key = layout.key;\n var prev = value[0], next = value[1];\n var x = center[0], y = center[1];\n var polygon = new Polygon({\n style: __assign({ points: points, fill: '#eee' }, style),\n id: \"polygon-\".concat(key),\n });\n var text = new Text({\n style: __assign({ x: x, y: y, text: isFunction(formatter) ? formatter(prev, next) : ((next / prev) * 100).toFixed(2) + '%' }, textStyle),\n id: \"text-\".concat(key),\n });\n _this.appendChild(polygon);\n _this.appendChild(text);\n });\n };\n /** 仅仅更新位置即可 */\n ConversionTag.prototype.update = function () {\n var _this = this;\n var conversionLayout = this.getConversionTagLayout();\n conversionLayout.forEach(function (layout) {\n var points = layout.points, center = layout.center, key = layout.key;\n var x = center[0], y = center[1];\n var polygon = _this.getElementById(\"polygon-\".concat(key));\n var text = _this.getElementById(\"text-\".concat(key));\n polygon.setAttribute('points', points);\n text.setAttribute('x', x);\n text.setAttribute('y', y);\n });\n };\n ConversionTag.tag = 'ConversionTag';\n return ConversionTag;\n}(Annotaion));\nexport { ConversionTag };\n","export var VERTICAL_MARGIN = 32;\nexport var HORIZONTAL_MARGIN = 16;\nexport var AXIS_LABEL_PADDING = 48;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { get, isFunction, uniqBy, groupBy } from '../utils';\nimport { Annotaion } from './core';\nimport { Text } from './shapes';\nimport { VERTICAL_MARGIN } from '../plots/bidirectional-bar/constants';\nvar BidirectionalBarAxisText = /** @class */ (function (_super) {\n __extends(BidirectionalBarAxisText, _super);\n function BidirectionalBarAxisText(chart, options) {\n return _super.call(this, chart, options, { type: BidirectionalBarAxisText.tag }) || this;\n }\n BidirectionalBarAxisText.prototype.render = function () {\n this.drawText();\n };\n BidirectionalBarAxisText.prototype.getBidirectionalBarAxisTextLayout = function () {\n var layout = this.attributes.layout;\n var isVertical = layout === 'vertical';\n var allElementsLayout = this.getElementsLayout();\n var elementsLayout = isVertical ? uniqBy(allElementsLayout, 'x') : uniqBy(allElementsLayout, 'y');\n var textPath = ['title'];\n var textLayout = [];\n var views = this.chart.getContext().views;\n var _a = get(views, [0, 'layout']), viewWidth = _a.width, viewHeight = _a.height;\n elementsLayout.forEach(function (element) {\n var x = element.x, y = element.y, height = element.height, width = element.width, data = element.data, key = element.key;\n var text = get(data, textPath);\n if (isVertical) {\n textLayout.push({\n x: x + width / 2,\n y: viewHeight,\n text: text,\n key: key,\n });\n }\n else {\n textLayout.push({\n x: viewWidth,\n y: y + height / 2,\n text: text,\n key: key,\n });\n }\n });\n /** 分组情况需要特殊处理 */\n if (uniqBy(textLayout, 'text').length !== textLayout.length) {\n textLayout = Object.values(groupBy(textLayout, 'text')).map(function (items) {\n var _a;\n var sum = items.reduce(function (pre, cur) {\n return pre + (isVertical ? cur.x : cur.y);\n }, 0);\n return __assign(__assign({}, items[0]), (_a = {}, _a[isVertical ? 'x' : 'y'] = sum / items.length, _a));\n });\n }\n return textLayout;\n };\n BidirectionalBarAxisText.prototype.transformLabelStyle = function (style) {\n var removeLabel = {};\n var reg = /^label[A-Z]/;\n Object.keys(style).forEach(function (key) {\n if (reg.test(key)) {\n removeLabel[key.replace('label', '').replace(/^[A-Z]/, function (match) { return match.toLowerCase(); })] = style[key];\n }\n });\n return removeLabel;\n };\n BidirectionalBarAxisText.prototype.drawText = function () {\n var _this = this;\n var axisLayout = this.getBidirectionalBarAxisTextLayout();\n var _a = this.attributes, viewLayout = _a.layout, labelFormatter = _a.labelFormatter, textStyle = __rest(_a, [\"layout\", \"labelFormatter\"]);\n axisLayout.forEach(function (layout) {\n var x = layout.x, y = layout.y, text = layout.text, key = layout.key;\n var textNode = new Text({\n style: __assign({ x: x, y: y, text: isFunction(labelFormatter) ? labelFormatter(text) : text, wordWrap: true, wordWrapWidth: viewLayout === 'horizontal' ? VERTICAL_MARGIN * 2 : 120, maxLines: 2, textOverflow: 'ellipsis' }, _this.transformLabelStyle(textStyle)),\n id: \"text-\".concat(key),\n });\n _this.appendChild(textNode);\n });\n };\n /** 仅仅更新位置即可 */\n BidirectionalBarAxisText.prototype.update = function () {\n var _this = this;\n var axisLayout = this.getBidirectionalBarAxisTextLayout();\n axisLayout.forEach(function (layout) {\n var x = layout.x, y = layout.y, key = layout.key;\n var text = _this.getElementById(\"text-\".concat(key));\n text.setAttribute('x', x);\n text.setAttribute('y', y);\n });\n };\n BidirectionalBarAxisText.tag = 'BidirectionalBarAxisText';\n return BidirectionalBarAxisText;\n}(Annotaion));\nexport { BidirectionalBarAxisText };\n","import { ANNOTATION_LIST } from '../constants';\nimport { ConversionTag } from './conversion-tag';\nimport { BidirectionalBarAxisText } from './bidirectional-bar-axis-text';\nvar Annotaion = { ConversionTag: ConversionTag, BidirectionalBarAxisText: BidirectionalBarAxisText };\nvar Controller = /** @class */ (function () {\n function Controller(chart, config) {\n this.container = new Map();\n this.chart = chart;\n this.config = config;\n this.init();\n }\n Controller.prototype.init = function () {\n var _this = this;\n ANNOTATION_LIST.forEach(function (annotation) {\n var _a;\n var key = annotation.key, shape = annotation.shape;\n var annotationOptions = _this.config[key];\n if (annotationOptions) {\n var annotationInstance = new Annotaion[shape](_this.chart, annotationOptions);\n var canvas = _this.chart.getContext().canvas;\n canvas.appendChild(annotationInstance);\n _this.container.set(key, annotationInstance);\n }\n else {\n (_a = _this.container.get(key)) === null || _a === void 0 ? void 0 : _a.clear();\n }\n });\n };\n /**\n * Update annotaions\n */\n Controller.prototype.update = function () {\n var _this = this;\n if (!this.container.size)\n return;\n ANNOTATION_LIST.forEach(function (annotation) {\n var key = annotation.key;\n var annotationInstance = _this.container.get(key);\n annotationInstance === null || annotationInstance === void 0 ? void 0 : annotationInstance.update();\n });\n };\n return Controller;\n}());\nexport { Controller };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport EE from '@antv/event-emitter';\nimport { ChartEvent } from '@antv/g2';\nimport { Chart } from './chart';\nimport { Controller as Annotaion } from '../annotation';\nimport { CHART_OPTIONS, SKIP_DEL_CUSTOM_SIGN } from '../constants';\nimport { mergeWithArrayCoverage, pick } from '../utils';\nvar SOURCE_ATTRIBUTE_NAME = 'data-chart-source-type';\nvar Plot = /** @class */ (function (_super) {\n __extends(Plot, _super);\n function Plot(container, options) {\n var _this = _super.call(this) || this;\n _this.container = typeof container === 'string' ? document.getElementById(container) : container;\n _this.options = _this.mergeOption(options);\n _this.createG2();\n _this.bindEvents();\n return _this;\n }\n /**\n * new Chart 所需配置\n */\n Plot.prototype.getChartOptions = function () {\n return __assign(__assign({}, pick(this.options, CHART_OPTIONS)), { container: this.container });\n };\n /**\n * G2 options(Spec) 配置\n */\n Plot.prototype.getSpecOptions = function () {\n if (this.type === 'base' || this[SKIP_DEL_CUSTOM_SIGN]) {\n return __assign(__assign({}, this.options), this.getChartOptions());\n }\n return this.options;\n };\n /**\n * 创建 G2 实例\n */\n Plot.prototype.createG2 = function () {\n if (!this.container) {\n throw Error('The container is not initialized!');\n }\n this.chart = new Chart(this.getChartOptions());\n // 给容器增加标识,知道图表的来源区别于 G2\n this.container.setAttribute(SOURCE_ATTRIBUTE_NAME, 'Ant Design Charts');\n };\n /**\n * 绑定代理所有 G2 的事件\n */\n Plot.prototype.bindEvents = function () {\n var _this = this;\n if (this.chart) {\n this.chart.on('*', function (e) {\n if (e === null || e === void 0 ? void 0 : e.type) {\n _this.emit(e.type, e);\n }\n });\n }\n };\n Plot.prototype.getBaseOptions = function () {\n return { type: 'view', autoFit: true };\n };\n /**\n * 获取默认的 options 配置项,每个组件都可以复写\n */\n Plot.prototype.getDefaultOptions = function () { };\n /**\n * 绘制\n */\n Plot.prototype.render = function () {\n var _this = this;\n // 执行 adaptor , base 穿透类型不必 adaptor.\n if (this.type !== 'base') {\n this.execAdaptor();\n }\n // options 转换\n this.chart.options(this.getSpecOptions());\n // 渲染\n this.chart.render().then(function () {\n _this.annotation = new Annotaion(_this.chart, _this.options);\n });\n // 绑定\n this.bindSizeSensor();\n };\n /**\n * 更新\n * @param options\n */\n Plot.prototype.update = function (options) {\n this.options = this.mergeOption(options);\n };\n Plot.prototype.mergeOption = function (options) {\n return mergeWithArrayCoverage({}, this.getBaseOptions(), this.getDefaultOptions(), options);\n };\n /**\n * 更新数据\n * @override\n * @param options\n */\n Plot.prototype.changeData = function (data) {\n this.chart.changeData(data);\n };\n /**\n * 修改画布大小\n * @param width\n * @param height\n */\n Plot.prototype.changeSize = function (width, height) {\n this.chart.changeSize(width, height);\n };\n /**\n * 销毁\n */\n Plot.prototype.destroy = function () {\n // G2 的销毁\n this.chart.destroy();\n // 清空已经绑定的事件\n this.off();\n this.container.removeAttribute(SOURCE_ATTRIBUTE_NAME);\n };\n /**\n * 执行 adaptor 操作\n */\n Plot.prototype.execAdaptor = function () {\n var adaptor = this.getSchemaAdaptor();\n // 转化成 G2 Spec\n adaptor({\n chart: this.chart,\n options: this.options,\n });\n };\n /**\n * 当图表容器大小变化的时候,执行的函数\n */\n Plot.prototype.triggerResize = function () {\n this.chart.forceFit();\n };\n /**\n * 绑定 dom 容器大小变化的事件\n */\n Plot.prototype.bindSizeSensor = function () {\n var _this = this;\n var _a = this.options.autoFit, autoFit = _a === void 0 ? true : _a;\n if (autoFit) {\n this.chart.on(ChartEvent.AFTER_CHANGE_SIZE, function () {\n _this.annotation.update();\n });\n }\n };\n return Plot;\n}(EE));\nexport { Plot };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nvar Base = /** @class */ (function (_super) {\n __extends(Base, _super);\n function Base() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'base';\n return _this;\n }\n /**\n * 获取 万能图 默认配置项\n * 供外部使用\n */\n Base.getDefaultOptions = function () {\n return {\n type: 'view',\n children: [{ type: 'line' }],\n };\n };\n /**\n * 获取 万能图 默认配置\n */\n Base.prototype.getDefaultOptions = function () {\n return Base.getDefaultOptions();\n };\n /**\n * 万能图适配器\n */\n Base.prototype.getSchemaAdaptor = function () {\n return function (params) { return params; };\n };\n return Base;\n}(Plot));\nexport { Base };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { set, isBoolean } from '../utils';\nimport { CONFIG_SHAPE } from '../constants';\n/**\n * @description 处理堆叠图配置line|point|area时的transform问题\n */\nexport function shapeStack(params) {\n var options = params.options;\n var stack = options.stack, tooltip = options.tooltip, xField = options.xField;\n if (!stack)\n return params;\n var shapes = CONFIG_SHAPE.map(function (item) { return item.type; }).filter(function (item) { return !!item; });\n var hasStack = false;\n shapes.forEach(function (shape) {\n if (options[shape]) {\n hasStack = true;\n /** 堆叠特殊处理,详见https://github.com/antvis/G2/issues/4515 */\n set(options, [shape, 'stack'], __assign({ y1: 'y' }, (typeof stack === 'object' ? stack : {})));\n }\n });\n /** 调整通道,避免多份tooltip */\n if (hasStack && !isBoolean(tooltip) && !tooltip) {\n set(options, 'tooltip', {\n title: xField,\n items: [\n {\n channel: 'y',\n },\n ],\n });\n }\n return params;\n}\n","import { flow } from '../utils';\nimport { shapeStack } from './shape-stack';\n/**\n * 根据图表类型新增一些高阶 Mark\n */\nexport function mark(params) {\n return flow(shapeStack)(params);\n}\n","/**\n * layout = 'horizontal' | 'vertical'\n * @param params\n * @returns\n */\nexport function coordinateLayout(params) {\n var _a = params.options.layout, layout = _a === void 0 ? 'horizontal' : _a;\n params.options.coordinate.transform = layout !== 'horizontal' ? undefined : [{ type: 'transpose' }];\n return params;\n}\n/**\n * layout = 'horizontal' | 'vertical'\n * all children change\n * @param params\n * @returns\n */\nexport function allCoordinateLayout(params) {\n coordinateLayout(params);\n var _a = params.options.layout, layout = _a === void 0 ? 'horizontal' : _a;\n params.options.children.forEach(function (item) {\n var _a;\n if ((_a = item === null || item === void 0 ? void 0 : item.coordinate) === null || _a === void 0 ? void 0 : _a.transform) {\n item.coordinate.transform = layout !== 'horizontal' ? undefined : [{ type: 'transpose' }];\n }\n });\n return params;\n}\n","import { flow, transformOptions } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Area = /** @class */ (function (_super) {\n __extends(Area, _super);\n function Area() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'area';\n return _this;\n }\n /**\n * 获取 面积图 默认配置项\n * 供外部使用\n */\n Area.getDefaultOptions = function () {\n return {\n type: 'view',\n children: [{ type: 'area' }],\n scale: {\n y: { nice: true },\n },\n axis: {\n y: { title: false },\n x: { title: false },\n },\n interaction: {\n tooltip: {\n shared: true,\n },\n },\n };\n };\n /**\n * 获取 面积图 默认配置\n */\n Area.prototype.getDefaultOptions = function () {\n return Area.getDefaultOptions();\n };\n /**\n * 面积图适配器\n */\n Area.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Area;\n}(Plot));\nexport { Area };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { mark } from '../../adaptor';\nimport { flow, transformOptions, get, isArray, set, omit } from '../../utils';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * @title 背景图\n * @description 通过新增 interval 实现\n */\n var background = function (params) {\n var options = params.options;\n /**\n * @description 解决更新问题\n */\n if (get(options, 'children.length') > 1) {\n set(options, 'children', [{ type: 'interval' }]);\n }\n var scale = options.scale, markBackground = options.markBackground, data = options.data, children = options.children, yField = options.yField;\n var domain = get(scale, 'y.domain', []);\n if (markBackground && domain.length && isArray(data)) {\n var domainMax_1 = 'domainMax';\n var backgroundData = data.map(function (item) {\n var _a;\n return __assign(__assign({ originData: __assign({}, item) }, omit(item, yField)), (_a = {}, _a[domainMax_1] = domain[domain.length - 1], _a));\n });\n children.unshift(__assign({ type: 'interval', data: backgroundData, yField: domainMax_1, tooltip: false, style: {\n fill: '#eee',\n }, label: false }, markBackground));\n }\n return params;\n };\n return flow(background, mark, transformOptions)(params);\n}\n","import { register } from '@antv/g2';\nexport var reisterShape = function () {\n /**\n * Draw 2.5d bar shape.\n */\n var draw25DBar = function (style, context) {\n return function (points) {\n var _a = style.fill, fill = _a === void 0 ? '#2888FF' : _a, stroke = style.stroke, _b = style.fillOpacity, fillOpacity = _b === void 0 ? 1 : _b, _c = style.strokeOpacity, strokeOpacity = _c === void 0 ? 0.2 : _c, _d = style.pitch, pitch = _d === void 0 ? 8 : _d;\n var p1 = points[0], p2 = points[1], p3 = points[2], p4 = points[3];\n var height = (p2[1] - p1[1]) / 2;\n var document = context.document;\n var g = document.createElement('g', {});\n var top = document.createElement('polygon', {\n style: {\n points: [p1, [p1[0] - pitch, p1[1] + height], [p3[0] - pitch, p1[1] + height], p4],\n fill: fill,\n fillOpacity: fillOpacity,\n stroke: stroke,\n strokeOpacity: strokeOpacity,\n inset: 30,\n },\n });\n var bottom = document.createElement('polygon', {\n style: {\n points: [[p1[0] - pitch, p1[1] + height], p2, p3, [p3[0] - pitch, p1[1] + height]],\n fill: fill,\n fillOpacity: fillOpacity,\n stroke: stroke,\n strokeOpacity: strokeOpacity,\n },\n });\n var right = document.createElement('polygon', {\n style: {\n points: [p1, [p1[0] - pitch, p1[1] + height], p2, [p1[0] + pitch, p1[1] + height]],\n fill: fill,\n fillOpacity: fillOpacity - 0.2,\n },\n });\n g.appendChild(top);\n g.appendChild(bottom);\n g.appendChild(right);\n return g;\n };\n };\n // @ts-ignore\n register('shape.interval.bar25D', draw25DBar);\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nimport { reisterShape } from './shape';\nreisterShape();\nvar Bar = /** @class */ (function (_super) {\n __extends(Bar, _super);\n function Bar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'Bar';\n return _this;\n }\n /**\n * 获取 条形图 默认配置项\n * 供外部使用\n */\n Bar.getDefaultOptions = function () {\n return {\n type: 'view',\n coordinate: { transform: [{ type: 'transpose' }] },\n children: [{ type: 'interval' }],\n scale: {\n y: { nice: true },\n },\n axis: {\n y: { title: false },\n x: { title: false },\n },\n interaction: {\n tooltip: {\n shared: true,\n },\n elementHighlightByColor: {\n background: true,\n },\n },\n };\n };\n /**\n * 获取 条形图 默认配置\n */\n Bar.prototype.getDefaultOptions = function () {\n return Bar.getDefaultOptions();\n };\n /**\n * 条形图适配器\n */\n Bar.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Bar;\n}(Plot));\nexport { Bar };\n","import { register } from '@antv/g2';\nexport var reisterShape = function () {\n /**\n * Draw 2.5d column shape.\n */\n var draw25DColumn = function (style, context) {\n return function (points) {\n var _a = style.fill, fill = _a === void 0 ? '#2888FF' : _a, stroke = style.stroke, _b = style.fillOpacity, fillOpacity = _b === void 0 ? 1 : _b, _c = style.strokeOpacity, strokeOpacity = _c === void 0 ? 0.2 : _c, _d = style.pitch, pitch = _d === void 0 ? 8 : _d;\n var x3 = points[1][0] - points[0][0];\n var x4 = x3 / 2 + points[0][0];\n var document = context.document;\n var g = document.createElement('g', {});\n var left = document.createElement('polygon', {\n style: {\n points: [\n [points[0][0], points[0][1]],\n [x4, points[1][1] + pitch],\n [x4, points[3][1] + pitch],\n [points[3][0], points[3][1]],\n ],\n fill: fill,\n fillOpacity: fillOpacity,\n stroke: stroke,\n strokeOpacity: strokeOpacity,\n inset: 30,\n },\n });\n var right = document.createElement('polygon', {\n style: {\n points: [\n [x4, points[1][1] + pitch],\n [points[1][0], points[1][1]],\n [points[2][0], points[2][1]],\n [x4, points[2][1] + pitch],\n ],\n fill: fill,\n fillOpacity: fillOpacity,\n stroke: stroke,\n strokeOpacity: strokeOpacity,\n },\n });\n var top = document.createElement('polygon', {\n style: {\n points: [\n [points[0][0], points[0][1]],\n [x4, points[1][1] - pitch],\n [points[1][0], points[1][1]],\n [x4, points[1][1] + pitch],\n ],\n fill: fill,\n fillOpacity: fillOpacity - 0.2,\n },\n });\n g.appendChild(right);\n g.appendChild(left);\n g.appendChild(top);\n return g;\n };\n };\n // @ts-ignore\n register('shape.interval.column25D', draw25DColumn);\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from '../bar/adaptor';\nimport { reisterShape } from './shape';\nreisterShape();\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'column';\n return _this;\n }\n Column.getDefaultOptions = function () {\n return {\n type: 'view',\n scale: {\n y: { nice: true },\n },\n interaction: {\n tooltip: {\n shared: true,\n },\n elementHighlightByColor: {\n background: true,\n },\n },\n axis: {\n y: { title: false },\n x: { title: false },\n },\n children: [\n {\n type: 'interval',\n },\n ],\n };\n };\n Column.prototype.getDefaultOptions = function () {\n return Column.getDefaultOptions();\n };\n Column.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Column;\n}(Plot));\nexport { Column };\n","import { mark } from '../../adaptor';\nimport { flow, transformOptions, get, set } from '../../utils';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n var colorField = function (params) {\n var options = params.options;\n var _a = options.children, children = _a === void 0 ? [] : _a, legend = options.legend;\n if (!legend)\n return params;\n children.forEach(function (option) {\n if (!get(option, 'colorField')) {\n var yField_1 = get(option, 'yField');\n set(option, 'colorField', function () { return yField_1; });\n }\n });\n return params;\n };\n /**\n * @description Top level annotations needs to share scale, when top level annotations is not empty, scale needs to be dynamically set.\n */\n var annotations = function (params) {\n var options = params.options;\n var _a = options.annotations, annotations = _a === void 0 ? [] : _a, _b = options.children, children = _b === void 0 ? [] : _b, scale = options.scale;\n var sharedScale = false;\n if (get(scale, 'y.key')) {\n return params;\n }\n children.forEach(function (child, index) {\n if (!get(child, 'scale.y.key')) {\n var scaleKey_1 = \"child\".concat(index, \"Scale\");\n set(child, 'scale.y.key', scaleKey_1);\n var _a = child.annotations, childAnnotations = _a === void 0 ? [] : _a;\n /**\n * @description If the child has annotations, the scale of the child needs to be assigned scaleKey to connect the annotation.\n */\n if (childAnnotations.length > 0) {\n set(child, 'scale.y.independent', false);\n childAnnotations.forEach(function (annotation) {\n set(annotation, 'scale.y.key', scaleKey_1);\n });\n }\n if (!sharedScale && annotations.length > 0 && get(child, 'scale.y.independent') === undefined) {\n sharedScale = true;\n set(child, 'scale.y.independent', false);\n annotations.forEach(function (annotation) {\n set(annotation, 'scale.y.key', scaleKey_1);\n });\n }\n }\n });\n return params;\n };\n return flow(colorField, annotations, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar DualAxes = /** @class */ (function (_super) {\n __extends(DualAxes, _super);\n function DualAxes() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'DualAxes';\n return _this;\n }\n /**\n * 获取 双轴图 默认配置项\n * 供外部使用\n */\n DualAxes.getDefaultOptions = function () {\n return {\n type: 'view',\n axis: {\n y: { title: false, tick: false },\n x: { title: false },\n },\n scale: {\n y: {\n independent: true,\n nice: true,\n },\n },\n };\n };\n /**\n * 获取 条形图 默认配置\n */\n DualAxes.prototype.getDefaultOptions = function () {\n return DualAxes.getDefaultOptions();\n };\n /**\n * 条形图适配器\n */\n DualAxes.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return DualAxes;\n}(Plot));\nexport { DualAxes };\n","import { flow, transformOptions, set, groupBy } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * 图表差异化处理\n */\n var init = function (params) {\n var options = params.options;\n var xField = options.xField, colorField = options.colorField;\n if (!colorField) {\n set(options, 'colorField', xField);\n }\n return params;\n };\n var transform = function (params) {\n var options = params.options;\n var compareField = options.compareField, transform = options.transform, _a = options.isTransposed, isTransposed = _a === void 0 ? true : _a, coordinate = options.coordinate;\n if (!transform) {\n if (compareField) {\n set(options, 'transform', []);\n }\n else {\n set(options, 'transform', [{ type: 'symmetryY' }]);\n }\n }\n if (!coordinate && isTransposed) {\n set(options, 'coordinate', { transform: [{ type: 'transpose' }] });\n }\n return params;\n };\n var compare = function (params) {\n var options = params.options;\n var compareField = options.compareField, seriesField = options.seriesField, data = options.data, children = options.children, yField = options.yField, _a = options.isTransposed, isTransposed = _a === void 0 ? true : _a;\n if (compareField || seriesField) {\n var groupedData = Object.values(groupBy(data, function (item) { return item[compareField || seriesField]; }));\n children[0].data = groupedData[0];\n children.push({\n type: 'interval',\n data: groupedData[1],\n // @ts-ignore\n yField: function (item) { return -item[yField]; },\n });\n delete options['compareField'];\n delete options.data;\n }\n if (seriesField) {\n set(options, 'type', 'spaceFlex');\n set(options, 'ratio', [1, 1]);\n set(options, 'direction', isTransposed ? 'row' : 'col');\n // @ts-expect-error\n delete options['seriesField'];\n }\n return params;\n };\n var tooltip = function (params) {\n var options = params.options;\n var tooltip = options.tooltip, xField = options.xField, yField = options.yField;\n if (!tooltip) {\n set(options, 'tooltip', {\n title: false,\n items: [\n function (d) {\n return { name: d[xField], value: d[yField] };\n },\n ],\n });\n }\n return params;\n };\n return flow(init, transform, compare, tooltip, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Funnel = /** @class */ (function (_super) {\n __extends(Funnel, _super);\n function Funnel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'column';\n return _this;\n }\n /**\n * 获取 漏斗图 默认配置项\n * 供外部使用\n */\n Funnel.getDefaultOptions = function () {\n return {\n type: 'view',\n scale: { x: { padding: 0 } },\n animate: { enter: { type: 'fadeIn' } },\n axis: false,\n shapeField: 'funnel',\n label: {\n position: 'inside',\n transform: [{ type: 'contrastReverse' }],\n },\n children: [\n {\n type: 'interval',\n },\n ],\n };\n };\n /**\n * 获取 漏斗图 默认配置\n */\n Funnel.prototype.getDefaultOptions = function () {\n return Funnel.getDefaultOptions();\n };\n /**\n * 漏斗图适配器\n */\n Funnel.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Funnel;\n}(Plot));\nexport { Funnel };\n","import { flow, transformOptions } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Line = /** @class */ (function (_super) {\n __extends(Line, _super);\n function Line() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'line';\n return _this;\n }\n /**\n * 获取 折线图 默认配置项\n * 供外部使用\n */\n Line.getDefaultOptions = function () {\n return {\n type: 'view',\n scale: {\n y: { nice: true },\n },\n interaction: {\n tooltip: {\n shared: true,\n },\n },\n axis: {\n y: { title: false },\n x: { title: false },\n },\n // 使用该动画,会导致线形图-连接空值 一进入页面渲染不出来,必须要更改窗口尺寸触发重新渲染。建议动画暂时使用默认\n // animate: {\n // enter: { type: 'growInX' },\n // },\n children: [{ type: 'line' }],\n };\n };\n /**\n * 获取 折线图 默认配置\n */\n Line.prototype.getDefaultOptions = function () {\n return Line.getDefaultOptions();\n };\n /**\n * 折线图适配器\n */\n Line.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Line;\n}(Plot));\nexport { Line };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { flow, transformOptions, isArray, set } from '../../utils';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * @description 当 angleField 总算为 0 时,设置默认样式\n * @link https://github.com/ant-design/ant-design-charts/issues/2324\n */\n var emptyData = function (params) {\n var options = params.options;\n var angleField = options.angleField, data = options.data, label = options.label, tooltip = options.tooltip, colorField = options.colorField;\n if (isArray(data)) {\n var sum = data.reduce(function (a, b) { return a + b[angleField]; }, 0);\n if (sum === 0) {\n var normalization = data.map(function (item) {\n var _a;\n return (__assign(__assign({}, item), (_a = {}, _a[angleField] = 1, _a)));\n });\n set(options, 'data', normalization);\n if (label) {\n set(options, 'label', __assign(__assign({}, label), { formatter: function () { return 0; } }));\n }\n if (tooltip !== false) {\n set(options, 'tooltip', __assign(__assign({}, tooltip), { items: [\n function (arg) {\n return {\n name: arg[colorField],\n value: 0,\n };\n },\n ] }));\n }\n }\n }\n return params;\n };\n return flow(emptyData, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Pie = /** @class */ (function (_super) {\n __extends(Pie, _super);\n function Pie() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'pie';\n return _this;\n }\n /**\n * 获取 饼图 默认配置项\n * 供外部使用\n */\n Pie.getDefaultOptions = function () {\n return {\n type: 'view',\n children: [{ type: 'interval' }],\n coordinate: { type: 'theta' },\n transform: [{ type: 'stackY', reverse: true }],\n animate: { enter: { type: 'waveIn' } },\n };\n };\n /**\n * 获取 折线图 默认配置\n */\n Pie.prototype.getDefaultOptions = function () {\n return Pie.getDefaultOptions();\n };\n /**\n * 折线图适配器\n */\n Pie.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Pie;\n}(Plot));\nexport { Pie };\n","import { flow, transformOptions } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Scatter = /** @class */ (function (_super) {\n __extends(Scatter, _super);\n function Scatter() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'scatter';\n return _this;\n }\n /**\n * 获取 散点图 默认配置项\n * 供外部使用\n */\n Scatter.getDefaultOptions = function () {\n return {\n axis: {\n y: { title: false },\n x: { title: false },\n },\n legend: {\n size: false,\n },\n children: [{ type: 'point' }],\n };\n };\n /**\n * 获取 散点图 默认配置\n */\n Scatter.prototype.getDefaultOptions = function () {\n return Scatter.getDefaultOptions();\n };\n /**\n * 散点图适配器\n */\n Scatter.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Scatter;\n}(Plot));\nexport { Scatter };\n","import { flow, transformOptions, get, set } from '../../utils';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * 图表差异化处理\n */\n var init = function (params) {\n set(params, 'options.coordinate', { type: get(params, 'options.coordinateType', 'polar') });\n return params;\n };\n return flow(init, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { adaptor } from './adaptor';\nimport { Plot } from '../../base';\nvar Radar = /** @class */ (function (_super) {\n __extends(Radar, _super);\n function Radar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'radar';\n return _this;\n }\n /**\n * 获取 雷达图 默认配置项\n * 供外部使用\n */\n Radar.getDefaultOptions = function () {\n return {\n axis: {\n x: { grid: true, line: true },\n y: { zIndex: 1, title: false, line: true, nice: true },\n },\n meta: { x: { padding: 0.5, align: 0 } },\n interaction: { tooltip: { style: { crosshairsLineDash: [4, 4] } } },\n children: [{ type: 'line' }],\n // 有 polar 和 radar 两种极坐标形式\n coordinateType: 'polar',\n };\n };\n /**\n * 获取 雷达图 默认配置\n */\n Radar.prototype.getDefaultOptions = function () {\n return Radar.getDefaultOptions();\n };\n /**\n * 雷达图适配器\n */\n Radar.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Radar;\n}(Plot));\nexport { Radar };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { set, flow, map, transformOptions } from '../../utils';\nexport var Y_FIELD_KEY = '__stock-range__';\nexport var TREND_FIELD = 'trend';\nexport var TREND_UP = 'up';\nexport var TREND_DOWN = 'down';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n var transformData = function (params) {\n var _a = params.options, data = _a.data, yField = _a.yField;\n params.options.data = map(data, function (item) {\n var obj = item && __assign({}, item);\n if (Array.isArray(yField) && obj) {\n var open_1 = yField[0], close_1 = yField[1], high = yField[2], low = yField[3];\n obj[TREND_FIELD] = obj[open_1] <= obj[close_1] ? TREND_UP : TREND_DOWN;\n obj[Y_FIELD_KEY] = [obj[open_1], obj[close_1], obj[high], obj[low]];\n }\n return obj;\n });\n return params;\n };\n /**\n * 图表差异化处理\n */\n var init = function (params) {\n var options = params.options;\n var xField = options.xField, yField = options.yField, fallingFill = options.fallingFill, risingFill = options.risingFill;\n var open = yField[0], close = yField[1], high = yField[2], low = yField[3];\n params.options.children = map(params.options.children, function (child, index) {\n var isShadow = index === 0;\n return __assign(__assign({}, child), { tooltip: {\n title: function (d) { return (d[xField] instanceof Date ? d[xField].toLocaleString() : d[xField]); },\n items: [{ field: high }, { field: low }, { field: open }, { field: close }],\n }, encode: __assign(__assign({}, (child.encode || {})), { y: isShadow ? [high, low] : [open, close], color: function (d) { return Math.sign(d[close] - d[open]); } }), style: __assign(__assign({}, (child.style || {})), { lineWidth: isShadow ? 1 : 10 }) });\n });\n delete options['yField'];\n params.options.legend = {\n color: false,\n };\n if (fallingFill) {\n set(params, 'options.scale.color.range[0]', fallingFill);\n }\n if (risingFill) {\n set(params, 'options.scale.color.range[2]', risingFill);\n }\n return params;\n };\n return flow(transformData, init, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nexport var DEFAULT_COLORS = ['#26a69a', '#999999', '#ef5350'];\nvar Stock = /** @class */ (function (_super) {\n __extends(Stock, _super);\n function Stock() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'stock';\n return _this;\n }\n /**\n * 获取 股票图 默认配置项\n * 供外部使用\n */\n Stock.getDefaultOptions = function () {\n return {\n type: 'view',\n scale: {\n color: {\n domain: [-1, 0, 1],\n range: DEFAULT_COLORS,\n },\n y: { nice: true },\n },\n children: [\n // shadow\n {\n type: 'link',\n },\n // real body\n {\n type: 'link',\n },\n ],\n axis: {\n x: { title: false, grid: false },\n y: { title: false, grid: true, gridLineDash: null },\n },\n animate: { enter: { type: 'scaleInY' } },\n interaction: {\n tooltip: {\n shared: true,\n marker: false,\n groupName: false,\n crosshairs: true,\n },\n },\n };\n };\n /**\n * 获取 股票图 默认配置\n */\n Stock.prototype.getDefaultOptions = function () {\n return Stock.getDefaultOptions();\n };\n /**\n * 股票图适配器\n */\n Stock.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Stock;\n}(Plot));\nexport { Stock };\n","import { flow, transformOptions } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar TinyLine = /** @class */ (function (_super) {\n __extends(TinyLine, _super);\n function TinyLine() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'TinyLine';\n return _this;\n }\n /**\n * 获取 迷你折线图 默认配置项\n * 供外部使用\n */\n TinyLine.getDefaultOptions = function () {\n return {\n type: 'view',\n children: [{ type: 'line', axis: false }],\n autoFit: false,\n animate: {\n enter: { type: 'growInX', duration: 500 },\n },\n padding: 0,\n margin: 0,\n tooltip: false,\n };\n };\n /**\n * 获取 迷你折线图 默认配置\n */\n TinyLine.prototype.getDefaultOptions = function () {\n return TinyLine.getDefaultOptions();\n };\n /**\n * 迷你折线图适配器\n */\n TinyLine.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return TinyLine;\n}(Plot));\nexport { TinyLine };\n","import { flow, transformOptions } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar TinyArea = /** @class */ (function (_super) {\n __extends(TinyArea, _super);\n function TinyArea() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'TinyArea';\n return _this;\n }\n /**\n * 获取 面积图 默认配置项\n * 供外部使用\n */\n TinyArea.getDefaultOptions = function () {\n return {\n type: 'view',\n animate: {\n enter: { type: 'growInX', duration: 500 },\n },\n children: [{ type: 'area', axis: false }],\n autoFit: false,\n padding: 0,\n margin: 0,\n tooltip: false,\n };\n };\n /**\n * 获取 面积图 默认配置\n */\n TinyArea.prototype.getDefaultOptions = function () {\n return TinyArea.getDefaultOptions();\n };\n /**\n * 面积图适配器\n */\n TinyArea.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return TinyArea;\n}(Plot));\nexport { TinyArea };\n","import { flow, transformOptions } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar TinyColumn = /** @class */ (function (_super) {\n __extends(TinyColumn, _super);\n function TinyColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'TinyColumn';\n return _this;\n }\n /**\n * 获取 迷你柱形图 默认配置项\n * 供外部使用\n */\n TinyColumn.getDefaultOptions = function () {\n return {\n type: 'view',\n children: [{ type: 'interval', axis: false }],\n autoFit: false,\n padding: 0,\n margin: 0,\n tooltip: false,\n };\n };\n /**\n * 获取 迷你柱形图 默认配置\n */\n TinyColumn.prototype.getDefaultOptions = function () {\n return TinyColumn.getDefaultOptions();\n };\n /**\n * 迷你柱形图适配器\n */\n TinyColumn.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return TinyColumn;\n}(Plot));\nexport { TinyColumn };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { flow, transformOptions } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * @description 数据转换\n */\n var transformData = function (params) {\n var options = params.options;\n var percent = options.percent, _a = options.color, color = _a === void 0 ? [] : _a;\n if (!percent)\n return params;\n var transformOption = {\n scale: {\n color: { range: color.length ? color : [] },\n },\n data: [1, percent],\n };\n Object.assign(options, __assign({}, transformOption));\n return params;\n };\n return flow(transformData, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar TinyProgress = /** @class */ (function (_super) {\n __extends(TinyProgress, _super);\n function TinyProgress() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'TinyProgress';\n return _this;\n }\n /**\n * 获取 进度图 默认配置项\n * 供外部使用\n */\n TinyProgress.getDefaultOptions = function () {\n return {\n type: 'view',\n data: [],\n autoFit: false,\n margin: 0,\n padding: 0,\n tooltip: false,\n children: [\n {\n interaction: { tooltip: false },\n coordinate: { transform: [{ type: 'transpose' }] },\n type: 'interval',\n axis: false,\n legend: false,\n encode: { y: function (d) { return d; }, color: function (d, idx) { return idx; } },\n },\n ],\n };\n };\n /**\n * 获取 进度图 默认配置\n */\n TinyProgress.prototype.getDefaultOptions = function () {\n return TinyProgress.getDefaultOptions();\n };\n /**\n * 迷你折线图适配器\n */\n TinyProgress.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return TinyProgress;\n}(Plot));\nexport { TinyProgress };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { flow, transformOptions, set } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * @description radius\n */\n var radius = function (params) {\n var options = params.options;\n var _a = options.radius, radius = _a === void 0 ? 0.8 : _a;\n set(params, 'options.coordinate.innerRadius', radius);\n return params;\n };\n /**\n * @description 数据转换\n */\n var transformData = function (params) {\n var options = params.options;\n var percent = options.percent, _a = options.color, color = _a === void 0 ? [] : _a;\n if (!percent)\n return params;\n var transformOption = {\n scale: {\n color: { range: color.length ? color : [] },\n },\n data: [1, percent],\n };\n Object.assign(options, __assign({}, transformOption));\n return params;\n };\n return flow(radius, transformData, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar TinyRing = /** @class */ (function (_super) {\n __extends(TinyRing, _super);\n function TinyRing() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'TinyRing';\n return _this;\n }\n /**\n * 获取进度图默认配置项\n * 供外部使用\n */\n TinyRing.getDefaultOptions = function () {\n return {\n type: 'view',\n data: [],\n autoFit: false,\n margin: 0,\n padding: 0,\n coordinate: { type: 'theta' },\n animate: { enter: { type: 'waveIn' } },\n interaction: { tooltip: false },\n tooltip: false,\n children: [\n {\n type: 'interval',\n axis: false,\n legend: false,\n encode: { y: function (d) { return d; }, color: function (d, idx) { return idx; } },\n },\n ],\n };\n };\n /**\n * 获取 进度图 默认配置\n */\n TinyRing.prototype.getDefaultOptions = function () {\n return TinyRing.getDefaultOptions();\n };\n /**\n * 迷你折线图适配器\n */\n TinyRing.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return TinyRing;\n}(Plot));\nexport { TinyRing };\n","import { flow, transformOptions } from '../../utils';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Rose = /** @class */ (function (_super) {\n __extends(Rose, _super);\n function Rose() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'rose';\n return _this;\n }\n /**\n * 获取 散点图 默认配置项\n * 供外部使用\n */\n Rose.getDefaultOptions = function () {\n return {\n type: 'view',\n children: [{ type: 'interval' }],\n coordinate: { type: 'polar' },\n animate: { enter: { type: 'waveIn' } },\n };\n };\n /**\n * 获取 散点图 默认配置\n */\n Rose.prototype.getDefaultOptions = function () {\n return Rose.getDefaultOptions();\n };\n /**\n * 散点图适配器\n */\n Rose.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Rose;\n}(Plot));\nexport { Rose };\n","export var START_KEY = '__start__';\nexport var END_KEY = '__end__';\nexport var WATERFALL_VALUE = '__waterfall_value__';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (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};\nimport { flow, transformOptions } from '../../utils';\nimport { mark } from '../../adaptor';\nimport { START_KEY, END_KEY, WATERFALL_VALUE } from './constants';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * @description 数据转换\n */\n var transformData = function (params) {\n var options = params.options;\n var _a = options.data, data = _a === void 0 ? [] : _a, yField = options.yField;\n if (!data.length)\n return params;\n data.reduce(function (prev, cur, index) {\n var _a;\n if (index === 0 || cur.isTotal) {\n cur[START_KEY] = 0;\n cur[END_KEY] = cur[yField];\n cur[WATERFALL_VALUE] = cur[yField];\n }\n else {\n var start = (_a = prev[END_KEY]) !== null && _a !== void 0 ? _a : prev[yField];\n cur[START_KEY] = start;\n cur[END_KEY] = start + cur[yField];\n cur[WATERFALL_VALUE] = prev[END_KEY];\n }\n return cur;\n }, []);\n Object.assign(options, { yField: [START_KEY, END_KEY] });\n return params;\n };\n /**\n * @description 添加连线信息\n */\n var link = function (params) {\n var options = params.options;\n var _a = options.data, data = _a === void 0 ? [] : _a, xField = options.xField, children = options.children, linkStyle = options.linkStyle;\n var linkData = __spreadArray([], data, true);\n linkData.reduce(function (prev, cur, index) {\n if (index > 0) {\n cur.x1 = prev[xField];\n cur.x2 = cur[xField];\n cur.y1 = prev[END_KEY];\n }\n return cur;\n }, []);\n linkData.shift();\n children.push({\n type: 'link',\n xField: ['x1', 'x2'],\n yField: 'y1',\n // 防止动画或 scrollbar 重绘时 link 层级高于 interval\n zIndex: -1,\n data: linkData,\n style: __assign({ stroke: '#697474' }, linkStyle),\n label: false,\n tooltip: false,\n });\n return params;\n };\n return flow(transformData, link, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nimport { WATERFALL_VALUE } from './constants';\nvar Waterfall = /** @class */ (function (_super) {\n __extends(Waterfall, _super);\n function Waterfall() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'waterfall';\n return _this;\n }\n Waterfall.getDefaultOptions = function () {\n return {\n type: 'view',\n legend: null,\n tooltip: {\n field: WATERFALL_VALUE,\n valueFormatter: '~s',\n name: 'value',\n },\n axis: {\n y: {\n title: null,\n labelFormatter: '~s',\n },\n x: {\n title: null,\n },\n },\n children: [\n {\n type: 'interval',\n interaction: {\n elementHighlightByColor: {\n background: true,\n },\n },\n },\n ],\n };\n };\n Waterfall.prototype.getDefaultOptions = function () {\n return Waterfall.getDefaultOptions();\n };\n Waterfall.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Waterfall;\n}(Plot));\nexport { Waterfall };\n","import { flow, transformOptions, assign, isNumber, divide, ceil, get } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n var transformHistogramConfig = function (params) {\n var options = params.options;\n var data = options.data, binNumber = options.binNumber, binWidth = options.binWidth, children = options.children, _a = options.channel, channel = _a === void 0 ? 'count' : _a;\n var targetTransform = get(children, '[0].transform[0]', {});\n if (isNumber(binWidth)) {\n assign(targetTransform, { thresholds: ceil(divide(data.length, binWidth)), y: channel });\n return params;\n }\n if (isNumber(binNumber)) {\n assign(targetTransform, { thresholds: binNumber, y: channel });\n return params;\n }\n return params;\n };\n return flow(transformHistogramConfig, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Histogram = /** @class */ (function (_super) {\n __extends(Histogram, _super);\n function Histogram() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'Histogram';\n return _this;\n }\n /**\n * 获取 直方图 默认配置项\n * 供外部使用\n */\n Histogram.getDefaultOptions = function () {\n return {\n type: 'view',\n autoFit: true,\n axis: {\n y: { title: false },\n x: { title: false },\n },\n children: [\n {\n type: 'rect',\n transform: [{ type: 'binX', y: 'count' }],\n interaction: {\n elementHighlightByColor: {\n background: true,\n },\n },\n },\n ],\n };\n };\n /**\n * 获取 直方图 默认配置\n */\n Histogram.prototype.getDefaultOptions = function () {\n return Histogram.getDefaultOptions();\n };\n /**\n * 直方图适配器\n */\n Histogram.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Histogram;\n}(Plot));\nexport { Histogram };\n","import { flow, transformOptions } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * @description 添加 tooltip 默认值\n */\n var tooltip = function (params) {\n var options = params.options;\n var tooltip = options.tooltip, colorField = options.colorField, sizeField = options.sizeField;\n if (tooltip && !tooltip.field) {\n tooltip['field'] = colorField || sizeField;\n }\n return params;\n };\n /**\n * @description 根据 mark 修改图表类型\n */\n var transformMark = function (params) {\n var options = params.options;\n var mark = options.mark, children = options.children;\n if (mark) {\n children[0].type = mark;\n }\n return params;\n };\n return flow(tooltip, transformMark, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Heatmap = /** @class */ (function (_super) {\n __extends(Heatmap, _super);\n function Heatmap() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'heatmap';\n return _this;\n }\n Heatmap.getDefaultOptions = function () {\n return {\n type: 'view',\n legend: null,\n tooltip: {\n valueFormatter: '~s',\n },\n axis: {\n y: {\n title: null,\n grid: true,\n },\n x: {\n title: null,\n grid: true,\n },\n },\n children: [\n {\n type: 'point',\n interaction: {\n elementHighlightByColor: {\n background: true,\n },\n },\n },\n ],\n };\n };\n Heatmap.prototype.getDefaultOptions = function () {\n return Heatmap.getDefaultOptions();\n };\n Heatmap.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Heatmap;\n}(Plot));\nexport { Heatmap };\n","import { flow, transformOptions } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * 图表差异化处理\n */\n var init = function (params) {\n var _a = params.options.boxType, boxType = _a === void 0 ? 'box' : _a;\n params.options.children[0].type = boxType;\n return params;\n };\n return flow(init, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Box = /** @class */ (function (_super) {\n __extends(Box, _super);\n function Box() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'box';\n return _this;\n }\n /**\n * 获取箱线图默认配置项\n * 供外部使用\n */\n Box.getDefaultOptions = function () {\n return {\n type: 'view',\n children: [{ type: 'box' }],\n axis: {\n y: { title: false },\n x: { title: false },\n },\n // 默认 tooltip\n tooltip: {\n items: [\n { name: 'min', channel: 'y' },\n { name: 'q1', channel: 'y1' },\n { name: 'q2', channel: 'y2' },\n { name: 'q3', channel: 'y3' },\n { name: 'max', channel: 'y4' },\n ],\n },\n };\n };\n /**\n * 获取 折线图 默认配置\n */\n Box.prototype.getDefaultOptions = function () {\n return Box.getDefaultOptions();\n };\n /**\n * 折线图适配器\n */\n Box.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Box;\n}(Plot));\nexport { Box };\n","import { mark } from '../../adaptor';\nimport { flow, get, isArray, set, transformOptions } from '../../utils';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n var dataTransform = function (params) {\n var options = params.options;\n var data = options.data;\n var defaultTransform = [\n {\n type: 'custom',\n callback: function (datum) { return ({ links: datum }); },\n },\n ];\n if (isArray(data)) {\n if (data.length > 0) {\n set(options, 'data', {\n value: data,\n transform: defaultTransform,\n });\n }\n else {\n delete options.children;\n }\n }\n else if (get(data, 'type') === 'fetch' && get(data, 'value')) {\n var transform = get(data, 'transform');\n if (isArray(transform)) {\n set(data, 'transform', transform.concat(defaultTransform));\n }\n else {\n set(data, 'transform', defaultTransform);\n }\n }\n return params;\n };\n return flow(dataTransform, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Sankey = /** @class */ (function (_super) {\n __extends(Sankey, _super);\n function Sankey() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'sankey';\n return _this;\n }\n /**\n * 获取 桑基图 默认配置项\n * 供外部使用\n */\n Sankey.getDefaultOptions = function () {\n return { type: 'view', children: [{ type: 'sankey' }] };\n };\n /**\n * 获取 桑基图 默认配置\n */\n Sankey.prototype.getDefaultOptions = function () {\n return Sankey.getDefaultOptions();\n };\n /**\n * 桑基图适配器\n */\n Sankey.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Sankey;\n}(Plot));\nexport { Sankey };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { allCoordinateLayout } from '../../adaptor';\nimport { flow, transformOptions, map, set, get, isArray, includes, isNumber, mergeWithArrayCoverage, isNil, isString, } from '../../utils';\n// 默认颜色\nexport var DEFAULT_COLORS = ['#f0efff', '#5B8FF9', '#3D76DD'];\n/**\n * 转化为扁平化数据\n * 1、[{ measures: [1,2], title: 'x' }, ...] -> [{ measures: 1, title: 'x', index: 0 }, { measures: 2, title: 'x', index: 1 },...]\n * 2、[{ measures: 1, title: 'x' }, { measures: [2,3], title: 'x' }] ->\n * [{ measures: 1, title: 'x', index: 0 }, { measures: 2, title: 'x', index: 0 }, { measures: 3, title: 'x', index: 1 },...]\n * @param data 数据\n * @param field 通道\n * @param xField x 分类通道\n * @param isSort 是否排序(降序)\n * @returns [扁平化的数据, 最大数据量]\n */\nfunction getTransformData(data, field, xField, isSort) {\n if (isSort === void 0) { isSort = true; }\n var maxSize = 0;\n var isArrayData = false;\n var transformData = map(data, function (d) {\n var _a, _b;\n var fieldData = get(d, [field]);\n // null undefined 以及 Number(string) 为 NaN 的 都去除数据\n if (isNil(fieldData))\n return [];\n if (isString(fieldData)) {\n var numberData = Number(fieldData);\n if (isNaN(numberData))\n return [];\n return _a = {}, _a[xField] = d[xField], _a[field] = numberData, _a;\n }\n // 主要组成为数组的形式\n if (isArray(fieldData)) {\n isArrayData = true;\n maxSize = Math.max(maxSize, fieldData.length);\n return map(isSort ? fieldData.sort(function (a, b) { return b - a; }) : fieldData, function (value, index) {\n var _a;\n return (_a = {},\n _a[xField] = d[xField],\n _a[field] = value,\n _a.index = index,\n _a);\n });\n }\n // 存在则 min 值为 1\n maxSize = Math.max(1, maxSize);\n return _b = {}, _b[xField] = d[xField], _b[field] = fieldData, _b;\n }).flat();\n // 当存在更多分类时,单一的 measures 从 'measures' 的分类,变更为 'measures_0' 的分类\n if (isArrayData) {\n return [\n transformData.map(function (item) { return (__assign({ index: 0 }, item)); }),\n maxSize,\n ];\n }\n return [transformData, maxSize];\n}\n/**\n * 按照最大数据量转化为颜色数组\n * @param maxSize 最大数据量\n * @param color 颜色\n * @returns string[]\n */\nfunction getFieldColor(maxSize, color) {\n return new Array(maxSize).fill('').map(function (d, i) { return (isArray(color) ? color[i % color.length] : color); });\n}\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * 图表差异化处理\n */\n var init = function (params) {\n var _a = params.options, color = _a.color, _b = _a.rangeField, rangeField = _b === void 0 ? 'ranges' : _b, _c = _a.measureField, measureField = _c === void 0 ? 'measures' : _c, _d = _a.targetField, targetField = _d === void 0 ? 'targets' : _d, _e = _a.xField, xField = _e === void 0 ? 'title' : _e, mapField = _a.mapField, data = _a.data;\n // 数据进行拍平\n var _f = getTransformData(data, rangeField, xField), rangesData = _f[0], rangesMaxSize = _f[1];\n var _g = getTransformData(data, measureField, xField, false), measuresData = _g[0], measuresMaxSize = _g[1];\n var _h = getTransformData(data, targetField, xField, false), targetsData = _h[0], targetsMaxSize = _h[1];\n // 获取颜色\n var rangesColor = get(color, [rangeField], DEFAULT_COLORS[0]);\n var measuresColor = get(color, [measureField], DEFAULT_COLORS[1]);\n var targetsColor = get(color, [targetField], DEFAULT_COLORS[2]);\n // 获取 scale.color 颜色分类\n var colors = [\n getFieldColor(rangesMaxSize, rangesColor),\n getFieldColor(measuresMaxSize, measuresColor),\n getFieldColor(targetsMaxSize, targetsColor),\n ].flat();\n params.options.children = map(params.options.children, function (c, i) {\n var datas = [rangesData, measuresData, targetsData][i];\n var yField = [rangeField, measureField, targetField][i];\n return __assign(__assign({}, c), { data: datas, encode: __assign(__assign({}, (c.encode || {})), { x: xField, y: yField, color: function (d) {\n var index = d.index;\n var mapString = isNumber(index) ? \"\".concat(yField, \"_\").concat(index) : yField;\n return mapField ? get(mapField, [yField, index], mapString) : mapString;\n } }), style: __assign(__assign({}, (c.style || {})), { \n // 层级\n zIndex: function (d) { return -d[yField]; } }), \n // labels 对应的 yField\n labels: i !== 0 ? map(c.labels, function (l) { return (__assign(__assign({}, l), { text: yField })); }) : undefined });\n });\n params.options.scale.color.range = colors;\n // legend itemMarker 的形状\n params.options.legend.color.itemMarker = function (d) {\n if (mapField && includes(mapField === null || mapField === void 0 ? void 0 : mapField[targetField], d)) {\n return 'line';\n }\n return (d === null || d === void 0 ? void 0 : d.replace(/\\_\\d$/, '')) === targetField ? 'line' : 'square';\n };\n return params;\n };\n /**\n * 水平|竖直 方向target配置适配\n * @param params Params\n * @returns params Params\n */\n var layoutAdaptor = function (params) {\n var _a = params.options.layout, layout = _a === void 0 ? 'horizontal' : _a;\n if (layout !== 'horizontal') {\n set(params, 'options.children[2].shapeField', 'hyphen');\n }\n return params;\n };\n /**\n * range、measure、target 配置适配\n * @param params Params\n * @returns params Params\n */\n var cfgAdaptor = function (params) {\n var _a = params.options, _b = _a.range, range = _b === void 0 ? {} : _b, _c = _a.measure, measure = _c === void 0 ? {} : _c, _d = _a.target, target = _d === void 0 ? {} : _d, children = _a.children;\n params.options.children = [range, measure, target].map(function (c, i) { return mergeWithArrayCoverage(children[i], c); });\n return params;\n };\n return flow(init, layoutAdaptor, cfgAdaptor, allCoordinateLayout, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor, DEFAULT_COLORS } from './adaptor';\nvar Bullet = /** @class */ (function (_super) {\n __extends(Bullet, _super);\n function Bullet() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'bullet';\n return _this;\n }\n /**\n * 获取 子弹图 默认配置项\n * 供外部使用\n */\n Bullet.getDefaultOptions = function () {\n return {\n type: 'view',\n scale: {\n color: {\n range: DEFAULT_COLORS,\n },\n },\n legend: {\n color: {\n itemMarker: function (d) {\n return d === 'target' ? 'line' : 'square';\n },\n },\n },\n axis: {\n y: { title: false },\n x: { title: false },\n },\n children: [\n {\n type: 'interval',\n style: { maxWidth: 30 },\n axis: { y: { grid: true, gridLineWidth: 2 } },\n },\n {\n type: 'interval',\n style: { maxWidth: 20 },\n transform: [{ type: 'stackY' }],\n },\n {\n type: 'point',\n encode: { size: 8, shape: 'line' },\n },\n ],\n interaction: { tooltip: { shared: true } },\n coordinate: { transform: [{ type: 'transpose' }] },\n };\n };\n /**\n * 获取 子弹图 默认配置\n */\n Bullet.prototype.getDefaultOptions = function () {\n return Bullet.getDefaultOptions();\n };\n /**\n * 子弹图适配器\n */\n Bullet.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Bullet;\n}(Plot));\nexport { Bullet };\n","import { flow, transformOptions } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * 图表差异化处理\n */\n var init = function (params) {\n var data = params.options.data;\n params.options.data = {\n value: data,\n };\n return params;\n };\n return flow(init, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Gauge = /** @class */ (function (_super) {\n __extends(Gauge, _super);\n function Gauge() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'Gauge';\n return _this;\n }\n /**\n * 获取 仪表盘 默认配置项\n * 供外部使用\n */\n Gauge.getDefaultOptions = function () {\n return {\n type: 'view',\n legend: false,\n children: [{ type: 'gauge' }],\n };\n };\n /**\n * 获取 仪表盘 默认配置\n */\n Gauge.prototype.getDefaultOptions = function () {\n return Gauge.getDefaultOptions();\n };\n /**\n * 仪表盘适配器\n */\n Gauge.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Gauge;\n}(Plot));\nexport { Gauge };\n","import { flow, transformOptions, isNumber, set } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * 图表差异化处理\n */\n var init = function (params) {\n var percent = params.options.percent;\n if (isNumber(percent)) {\n set(params, 'options.data', percent);\n }\n return params;\n };\n return flow(init, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Liquid = /** @class */ (function (_super) {\n __extends(Liquid, _super);\n function Liquid() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'Liquid';\n return _this;\n }\n /**\n * 获取 水波图 默认配置项\n * 供外部使用\n */\n Liquid.getDefaultOptions = function () {\n return { type: 'view', children: [{ type: 'liquid' }] };\n };\n /**\n * 获取 水波图 默认配置\n */\n Liquid.prototype.getDefaultOptions = function () {\n return Liquid.getDefaultOptions();\n };\n /**\n * 水波图适配器\n */\n Liquid.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Liquid;\n}(Plot));\nexport { Liquid };\n","import { flow, transformOptions } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar WordCloud = /** @class */ (function (_super) {\n __extends(WordCloud, _super);\n function WordCloud() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'WordCloud';\n return _this;\n }\n /**\n * 获取 词云图 默认配置项\n * 供外部使用\n */\n WordCloud.getDefaultOptions = function () {\n return { type: 'view', legend: false, children: [{ type: 'wordCloud' }] };\n };\n /**\n * 获取 词云图 默认配置\n */\n WordCloud.prototype.getDefaultOptions = function () {\n return WordCloud.getDefaultOptions();\n };\n /**\n * 词云图适配器\n */\n WordCloud.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return WordCloud;\n}(Plot));\nexport { WordCloud };\n","import { flow, transformOptions, set } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * 图表差异化处理\n */\n var init = function (params) {\n var options = params.options;\n var data = options.data;\n if (data) {\n set(options, 'data', {\n value: data,\n });\n }\n return params;\n };\n return flow(init, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Treemap = /** @class */ (function (_super) {\n __extends(Treemap, _super);\n function Treemap() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'treemap';\n return _this;\n }\n Treemap.getDefaultOptions = function () {\n return {\n type: 'view',\n children: [\n {\n type: 'treemap',\n },\n ],\n };\n };\n Treemap.prototype.getDefaultOptions = function () {\n return Treemap.getDefaultOptions();\n };\n Treemap.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Treemap;\n}(Plot));\nexport { Treemap };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { flow, set, transformOptions, isNumber, get } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * coordinate 配置\n * @param params\n */\n var coordinate = function (params) {\n var options = params.options;\n var startAngle = options.startAngle, maxAngle = options.maxAngle, coordinate = options.coordinate;\n // 默认开始角度是-90度\n var start = isNumber(startAngle) ? (startAngle / (2 * Math.PI)) * 360 : -90;\n // 结束角度通过maxAngle来计算\n var end = isNumber(maxAngle) ? ((Number(maxAngle) + start) / 180) * Math.PI : Math.PI;\n set(params, ['options', 'coordinate'], __assign(__assign({}, coordinate), { endAngle: end, startAngle: startAngle !== null && startAngle !== void 0 ? startAngle : -Math.PI / 2 }));\n return params;\n };\n /**\n * tooltip 配置\n * @param params\n */\n var tooltip = function (params) {\n var options = params.options;\n var tooltip = options.tooltip, xField = options.xField, yField = options.yField;\n if (!tooltip) {\n set(options, 'tooltip', {\n title: false,\n items: [\n function (d) {\n return { name: d[xField], value: d[yField] };\n },\n ],\n });\n }\n return params;\n };\n /**\n * background 配置\n * @param params\n */\n var background = function (params) {\n var options = params.options;\n var markBackground = options.markBackground, children = options.children, scale = options.scale, coordinate = options.coordinate, xField = options.xField;\n var domain = get(scale, 'y.domain', []);\n if (markBackground) {\n children.unshift(__assign({ type: 'interval', xField: xField, yField: domain[domain.length - 1], colorField: markBackground.color, scale: { color: { type: 'identity' } }, style: {\n fillOpacity: markBackground.opacity,\n fill: markBackground.color ? undefined : '#e0e4ee', // 默认用fill填满灰色背景\n }, \n // 背景图需要填满整个圆\n coordinate: __assign(__assign({}, coordinate), { startAngle: -Math.PI / 2, endAngle: (3 / 2) * Math.PI }), animate: false }, markBackground));\n }\n return params;\n };\n return flow(coordinate, tooltip, background, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar RadialBar = /** @class */ (function (_super) {\n __extends(RadialBar, _super);\n function RadialBar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'radial';\n return _this;\n }\n /**\n * 获取 玉珏图 默认配置项\n * 供外部使用\n */\n RadialBar.getDefaultOptions = function () {\n return {\n type: 'view',\n children: [{ type: 'interval' }],\n coordinate: { type: 'radial', innerRadius: 0.1, outerRadius: 1, endAngle: Math.PI },\n animate: { enter: { type: 'waveIn', duration: 800 } },\n axis: {\n y: {\n nice: true,\n labelAutoHide: true,\n labelAutoRotate: false,\n },\n x: {\n title: false,\n nice: true,\n labelAutoRotate: false,\n labelAutoHide: { type: 'equidistance', cfg: { minGap: 6 } },\n },\n },\n };\n };\n /**\n * 获取 玉珏图 默认配置\n */\n RadialBar.prototype.getDefaultOptions = function () {\n return RadialBar.getDefaultOptions();\n };\n /**\n * 玉珏图适配器\n */\n RadialBar.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return RadialBar;\n}(Plot));\nexport { RadialBar };\n","import { flow, transformOptions } from '../../utils';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n return flow(transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar CirclePacking = /** @class */ (function (_super) {\n __extends(CirclePacking, _super);\n function CirclePacking() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'CirclePacking';\n return _this;\n }\n /**\n * 获取 circle packing 默认配置项\n * 供外部使用\n */\n CirclePacking.getDefaultOptions = function () {\n return {\n legend: false,\n type: 'view',\n children: [\n {\n type: 'pack',\n },\n ],\n };\n };\n /**\n * 获取 打包图 默认配置\n */\n CirclePacking.prototype.getDefaultOptions = function () {\n return CirclePacking.getDefaultOptions();\n };\n /**\n * 打包图适配器\n */\n CirclePacking.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return CirclePacking;\n}(Plot));\nexport { CirclePacking };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { flow, transformOptions, set } from '../../utils';\nimport { mark } from '../../adaptor';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * 图表差异化处理\n */\n var customTransform = function (params) {\n var options = params.options;\n var xField = options.xField, yField = options.yField, seriesField = options.seriesField, children = options.children;\n var newChildren = children === null || children === void 0 ? void 0 : children.map(function (item) {\n return __assign(__assign({}, item), { xField: xField, yField: yField, seriesField: seriesField, colorField: seriesField, data: item.type === 'density'\n ? {\n transform: [\n {\n type: 'kde',\n field: yField,\n groupBy: [xField, seriesField],\n },\n ],\n }\n : item.data });\n }).filter(function (item) { return options.violinType !== 'density' || item.type === 'density'; });\n set(options, 'children', newChildren);\n // 默认‘normal’类型数据格式\n if (options.violinType === 'polar') {\n set(options, 'coordinate', { type: 'polar' });\n }\n // 底层不消费violinType字段。\n set(options, 'violinType', undefined);\n return params;\n };\n return flow(customTransform, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar Violin = /** @class */ (function (_super) {\n __extends(Violin, _super);\n function Violin() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'violin';\n return _this;\n }\n /**\n * 获取 折线图 默认配置项\n * 供外部使用\n */\n Violin.getDefaultOptions = function () {\n return {\n type: 'view',\n children: [\n {\n type: 'density',\n sizeField: 'size',\n tooltip: false,\n },\n {\n type: 'boxplot',\n shapeField: 'violin',\n style: {\n opacity: 0.5,\n point: false,\n },\n },\n ],\n animate: { enter: { type: 'fadeIn' } },\n };\n };\n /**\n * 获取 折线图 默认配置\n */\n Violin.prototype.getDefaultOptions = function () {\n return Violin.getDefaultOptions();\n };\n /**\n * 折线图适配器\n */\n Violin.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Violin;\n}(Plot));\nexport { Violin };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (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};\nimport { mark } from '../../adaptor';\nimport { flow, transformOptions, set, isArray, get, isPlainObject } from '../../utils';\nimport { HORIZONTAL_MARGIN, AXIS_LABEL_PADDING, VERTICAL_MARGIN } from './constants';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /** 除了 yFiled Array 的情况 */\n var field = function (params) {\n var options = params.options;\n var yField = options.yField, children = options.children;\n children.forEach(function (child, index) {\n set(child, 'yField', yField[index]);\n });\n return params;\n };\n /** data 拆分 */\n var data = function (params) {\n var options = params.options;\n var yField = options.yField, children = options.children, data = options.data;\n if (isPlainObject(data))\n return params;\n var transformData = isArray(get(data, [0])) ? data : [data, data];\n children.forEach(function (child, index) {\n set(child, 'data', __spreadArray([], transformData[index].map(function (item) { return (__assign({ groupKey: yField[index] }, item)); }), true));\n });\n return params;\n };\n /** 内置 Tooltip 逻辑 */\n var tooltip = function (params) {\n var options = params.options;\n var _a = options.yField, y1 = _a[0], y2 = _a[1], tooltip = options.tooltip;\n if (!tooltip) {\n set(options, 'tooltip', {\n items: [\n {\n field: y1,\n value: y1,\n },\n {\n field: y2,\n value: y2,\n },\n ],\n });\n }\n return params;\n };\n /** 根据 layout 调整配置 */\n var layout = function (params) {\n var options = params.options;\n var children = options.children, layout = options.layout, transform = options.coordinate.transform, _a = options.paddingBottom, paddingBottom = _a === void 0 ? AXIS_LABEL_PADDING : _a, _b = options.paddingLeft, paddingLeft = _b === void 0 ? AXIS_LABEL_PADDING : _b, axis = options.axis;\n set(options, 'axisText', __assign(__assign({}, ((axis === null || axis === void 0 ? void 0 : axis.x) || {})), { layout: layout }));\n var child1 = children[0], child2 = children[1];\n if (layout === 'vertical') {\n set(options, 'direction', 'col');\n set(options, 'paddingLeft', paddingLeft);\n set(options, 'coordinate.transform', transform.filter(function (item) { return item.type !== 'transpose'; }));\n set(child1, 'paddingBottom', HORIZONTAL_MARGIN);\n set(child2, 'paddingTop', HORIZONTAL_MARGIN);\n set(child2, 'axis', {\n x: {\n position: 'top',\n },\n });\n set(child2, 'scale', {\n y: {\n range: [0, 1],\n },\n });\n }\n else {\n set(options, 'paddingBottom', paddingBottom);\n set(child1, 'scale', {\n y: {\n range: [0, 1],\n },\n });\n var _c = child1.paddingRight, paddingRight = _c === void 0 ? VERTICAL_MARGIN : _c;\n var _d = child2.paddingLeft, paddingLeft_1 = _d === void 0 ? VERTICAL_MARGIN : _d;\n set(child1, 'paddingRight', paddingRight);\n set(child1, 'axis', {\n x: {\n position: 'right',\n },\n });\n set(child2, 'paddingLeft', paddingLeft_1);\n }\n return params;\n };\n return flow(field, data, tooltip, layout, mark, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nvar BidirectionalBar = /** @class */ (function (_super) {\n __extends(BidirectionalBar, _super);\n function BidirectionalBar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'BidirectionalBar';\n return _this;\n }\n BidirectionalBar.getDefaultOptions = function () {\n return {\n type: 'spaceFlex',\n coordinate: { transform: [{ type: 'transpose' }] },\n scale: {\n y: { nice: true },\n },\n direction: 'row',\n layout: 'horizontal',\n legend: false,\n axis: {\n y: {\n title: false,\n },\n x: { title: false, label: false },\n },\n children: [{ type: 'interval' }, { type: 'interval' }],\n };\n };\n BidirectionalBar.prototype.getDefaultOptions = function () {\n return BidirectionalBar.getDefaultOptions();\n };\n BidirectionalBar.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return BidirectionalBar;\n}(Plot));\nexport { BidirectionalBar };\n","export var DefaultTransformKey;\n(function (DefaultTransformKey) {\n DefaultTransformKey[\"color\"] = \"key\";\n DefaultTransformKey[\"d\"] = \"path\";\n})(DefaultTransformKey || (DefaultTransformKey = {}));\n","import { flow, isArray, omit, set, transformOptions } from '../../utils';\nimport { DefaultTransformKey } from './type';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * 图表差异化处理\n */\n var init = function (params) {\n var options = params.options;\n var data = options.data, setsField = options.setsField, sizeField = options.sizeField;\n if (isArray(data)) {\n set(options, 'data', {\n type: 'inline',\n value: data,\n transform: [\n {\n type: 'venn',\n sets: setsField,\n size: sizeField,\n as: [DefaultTransformKey.color, DefaultTransformKey.d],\n },\n ],\n });\n set(options, 'colorField', setsField);\n set(options, ['children', '0', 'encode', 'd'], DefaultTransformKey.d);\n }\n set(params, 'options', omit(options, ['sizeField', 'setsField']));\n return params;\n };\n return flow(init, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Plot } from '../../base';\nimport { adaptor } from './adaptor';\nimport { DefaultTransformKey } from './type';\nvar Venn = /** @class */ (function (_super) {\n __extends(Venn, _super);\n function Venn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'venn';\n return _this;\n }\n /**\n * 获取 韦恩图 默认配置项\n * 供外部使用\n */\n Venn.getDefaultOptions = function () {\n return {\n type: 'view',\n children: [{ type: 'path' }],\n legend: {\n color: { itemMarker: 'circle' },\n },\n encode: { color: DefaultTransformKey.color, d: DefaultTransformKey.d },\n };\n };\n /**\n * 获取 韦恩图 默认配置\n */\n Venn.prototype.getDefaultOptions = function () {\n return Venn.getDefaultOptions();\n };\n /**\n * 韦恩图适配器\n */\n Venn.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Venn;\n}(Plot));\nexport { Venn };\n","import { flow, transformOptions } from '../../utils';\n/**\n * @param chart\n * @param options\n */\nexport function adaptor(params) {\n /**\n * 图表差异化处理\n */\n var init = function (params) {\n return params;\n };\n return flow(init, transformOptions)(params);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { adaptor } from './adaptor';\nimport { Plot } from '../../base';\nvar Sunburst = /** @class */ (function (_super) {\n __extends(Sunburst, _super);\n function Sunburst() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** 图表类型 */\n _this.type = 'Sunburst';\n return _this;\n }\n /**\n * 获取 旭日图 默认配置项\n * 供外部使用\n */\n Sunburst.getDefaultOptions = function () {\n return { type: 'view', children: [{ type: 'sunburst' }] };\n };\n /**\n * 获取 旭日图 默认配置\n */\n Sunburst.prototype.getDefaultOptions = function () {\n return Sunburst.getDefaultOptions();\n };\n /**\n * 旭日图适配器\n */\n Sunburst.prototype.getSchemaAdaptor = function () {\n return adaptor;\n };\n return Sunburst;\n}(Plot));\nexport { Sunburst };\n","export * as G2 from '@antv/g2';\nexport * from './types';\nimport { Base } from './plots/base';\nimport { Area } from './plots/area';\nimport { Bar } from './plots/bar';\nimport { Column } from './plots/column';\nimport { DualAxes } from './plots/dual-axes';\nimport { Funnel } from './plots/funnel';\nimport { Line } from './plots/line';\nimport { Pie } from './plots/pie';\nimport { Scatter } from './plots/scatter';\nimport { Radar } from './plots/radar';\nimport { Stock } from './plots/stock';\nimport { TinyLine } from './plots/tiny-line';\nimport { TinyArea } from './plots/tiny-area';\nimport { TinyColumn } from './plots/tiny-column';\nimport { TinyProgress } from './plots/tiny-progress';\nimport { TinyRing } from './plots/tiny-ring';\nimport { Rose } from './plots/rose';\nimport { Waterfall } from './plots/waterfall';\nimport { Histogram } from './plots/histogram';\nimport { Heatmap } from './plots/heatmap';\nimport { Box } from './plots/box';\nimport { Sankey } from './plots/sankey';\nimport { Bullet } from './plots/bullet';\nimport { Gauge } from './plots/gauge';\nimport { Liquid } from './plots/liquid';\nimport { WordCloud } from './plots/wordCloud';\nimport { Treemap } from './plots/treemap';\nimport { RadialBar } from './plots/radial-bar';\nimport { CirclePacking } from './plots/circlePacking';\nimport { Violin } from './plots/violin';\nimport { BidirectionalBar } from './plots/bidirectional-bar';\nimport { Venn } from './plots/venn';\nimport { Mix } from './plots/mix';\nimport { Sunburst } from './plots/sunburst';\nexport var Plots = {\n Base: Base,\n Line: Line,\n Column: Column,\n Pie: Pie,\n Area: Area,\n Bar: Bar,\n DualAxes: DualAxes,\n Funnel: Funnel,\n Scatter: Scatter,\n Radar: Radar,\n Rose: Rose,\n Stock: Stock,\n TinyLine: TinyLine,\n TinyArea: TinyArea,\n TinyColumn: TinyColumn,\n TinyProgress: TinyProgress,\n TinyRing: TinyRing,\n Waterfall: Waterfall,\n Histogram: Histogram,\n Heatmap: Heatmap,\n Box: Box,\n Sankey: Sankey,\n Bullet: Bullet,\n Gauge: Gauge,\n Liquid: Liquid,\n WordCloud: WordCloud,\n Treemap: Treemap,\n RadialBar: RadialBar,\n CirclePacking: CirclePacking,\n Violin: Violin,\n BidirectionalBar: BidirectionalBar,\n Venn: Venn,\n Mix: Mix,\n Sunburst: Sunburst,\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { useImperativeHandle, forwardRef } from 'react';\nimport { ErrorBoundary, ChartLoading } from '@ant-design/charts-util';\nimport useChart from '../../hooks/useChart';\nimport { Plots } from '../../core';\nexport var BaseChart = forwardRef(function (_a, ref) {\n var _b = _a.chartType, chartType = _b === void 0 ? 'Base' : _b, config = __rest(_a, [\"chartType\"]);\n var _c = config.containerStyle, containerStyle = _c === void 0 ? {\n height: 'inherit',\n } : _c, _d = config.containerAttributes, containerAttributes = _d === void 0 ? {} : _d, className = config.className, loading = config.loading, loadingTemplate = config.loadingTemplate, errorTemplate = config.errorTemplate, rest = __rest(config, [\"containerStyle\", \"containerAttributes\", \"className\", \"loading\", \"loadingTemplate\", \"errorTemplate\"]);\n var _e = useChart(Plots[chartType], rest), chart = _e.chart, container = _e.container;\n useImperativeHandle(ref, function () { return chart.current; });\n return (React.createElement(ErrorBoundary, { errorTemplate: errorTemplate },\n loading && React.createElement(ChartLoading, { loadingTemplate: loadingTemplate }),\n React.createElement(\"div\", __assign({ className: className, style: containerStyle, ref: container }, containerAttributes))));\n});\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport React from 'react';\nimport { BaseChart } from '../base';\nvar AreaChart = function (props) { return React.createElement(BaseChart, __assign({}, props, { chartType: \"Area\" })); };\nexport default AreaChart;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport React from 'react';\nimport { BaseChart } from '../base';\nvar BarChart = function (props) { return React.createElement(BaseChart, __assign({}, props, { chartType: \"Bar\" })); };\nexport default BarChart;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport React from 'react';\nimport { BaseChart } from '../base';\nvar ColumnChart = function (props) { return React.createElement(BaseChart, __assign({}, props, { chartType: \"Column\" })); };\nexport default ColumnChart;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport React from 'react';\nimport { BaseChart } from '../base';\nvar LineChart = function (props) { return React.createElement(BaseChart, __assign({}, props, { chartType: \"Line\" })); };\nexport default LineChart;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport React from 'react';\nimport { BaseChart } from '../base';\nvar PieChart = function (props) { return React.createElement(BaseChart, __assign({}, props, { chartType: \"Pie\" })); };\nexport default PieChart;\n"],"names":["Cartesian","convertAngles","startAngle","endAngle","getPolarOptions","options","defaultOptions","polarOption","Polar","innerRadius","outerRadius","Transpose","getThetaOptions","Theta","getRadialOptions","Radial","Parallel","Fisheye","focusX","focusY","distortionX","distortionY","visual","Radar","Constant","value","data","Transform","Field","d","Column","isArrayLike","filter","arr","func","result","index","filter$1","isFunction$2","isNil","toString","isType","type","isArray$1","isObject$3","each","elements","rst","isArray","i","len","isObject","k","keys","obj","key","isFunction","keys$1","isMatch","attrs","_keys","length","isObjectLike","isPlainObject","proto","find","predicate","_predicate","a","max$6","prev","curr","min$6","reduce","fn","init","isString$1","str","last","o","clamp","min","max","isNumber","PRECISION","isNumberEqual","b","precision","maxBy","maxItem","item","v","minBy","minItem","mod","n","m","toString$1","lowerFirst","substitute","match","name","upperFirst","isBoolean","isUndefined","_mix","dist","mix","src1","src2","src3","clone","l","debounce","wait","immediate","timeout","context","args","later","callNow","flru","num","limit","keep","reset","isPartial","val","memoize$2","f","resolver","maxSize","memoized","_i","cache","MAX_MIX_LEVEL","hasOwn","object","property","_deepMix","src","level","maxLevel","deepMix","isEqual","other","isString","valueKeys","otherKeys","get$1","defaultValue","p","keyArr","set$3","path","idx","hasOwnProperty","pick$1","omit$1","r","throttle","previous","throttled","now","remaining","noop$3","size","isArraylike","EPSILON","ARRAY_TYPE","y","create","out","glMatrix.ARRAY_TYPE","fromMat4","fromValues","m00","m01","m02","m10","m11","m12","m20","m21","m22","invert","a00","a01","a02","a10","a11","a12","a20","a21","a22","b01","b11","b21","det","multiply","b00","b02","b10","b12","b20","b22","fromTranslation","fromRotation","rad","s","c","fromScaling","mul","copy","m03","m13","m23","m30","m31","m32","m33","set","identity","transpose","a03","a13","a23","a30","a31","a32","a33","b03","b04","b05","b06","b07","b08","b09","adjoint","determinant","b0","b1","b2","b3","translate","x","z","scale","rotate","axis","t","glMatrix.EPSILON","rotateX","rotateY","rotateZ","fromXRotation","fromYRotation","fromZRotation","fromRotationTranslation","q","w","x2","y2","z2","xx","xy","xz","yy","yz","zz","wx","wy","wz","fromQuat2","translation","bx","by","bz","bw","ax","ay","az","aw","magnitude","getTranslation","mat","getScaling","getRotation","scaling","is1","is2","is3","sm11","sm12","sm13","sm21","sm22","sm23","sm31","sm32","sm33","trace","S","fromRotationTranslationScale","sx","sy","sz","fromRotationTranslationScaleOrigin","ox","oy","oz","out0","out1","out2","out4","out5","out6","out8","out9","out10","fromQuat","yx","zx","zy","frustum","left","right","bottom","top","near","far","rl","tb","nf","perspectiveNO","fovy","aspect","perspective","perspectiveZO","perspectiveFromFieldOfView","fov","upTan","downTan","leftTan","rightTan","xScale","yScale","orthoNO","lr","bt","ortho","orthoZO","lookAt","eye","center","up","x0","x1","y0","y1","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","targetTo","target","frob","add","subtract","multiplyScalar","multiplyScalarAndAdd","exactEquals","equals","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a14","a15","b4","b5","b6","b7","b8","b9","b13","b14","b15","sub","distance","normalize","dot","cross","lerp","transformMat4","transformMat3","transformQuat","qx","qy","qz","qw","uvx","uvy","uvz","uuvx","uuvy","uuvz","w2","vec","stride","offset","count","arg","setAxisAngle","slerp","omega","cosom","sinom","scale0","scale1","invDot","fromMat3","fTrace","fRoot","j","fromEuler","halfToRad","cx","cy","cz","vec4.fromValues","vec4.copy","vec4.normalize","tmpvec3","vec3.create","xUnitVec3","vec3.fromValues","yUnitVec3","vec3.dot","vec3.cross","vec3.len","vec3.normalize","temp1","temp2","matr","mat3.create","view","extendStatics","__extends","__","__assign","__rest","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","e","rejected","__generator","body","_","g","verb","op","__values","__read","ar","error","__spreadArrays","il","jl","__spreadArray","to","from","pack","__classPrivateFieldGet","receiver","state","kind","paramsParser","fixArc","pathArray","allPathCommands","pi","ni","paramsCount","isPathArray","seg","lk","isAbsoluteArray","_a","isNormalizedArray","pc","finalizeSegment","pathCommand","LK","scanFlag","pathValue","code","isDigitStart","isDigit","scanParam","start","zeroFirst","hasCeiling","hasDecimal","hasDot","ch","isSpace","specialSpaces","skipSpaces","isPathCommand","isArcCommand","scanSegment","cmdCode","reqParams","PathParser","pathString","parsePathString","pathInput","path2Absolute","mx","my","segment","values","absCommand","absoluteSegment","absValues","segLength","normalizeSegment","params","px1","py1","px2","py2","nqx","nqy","normalizePath","seglen","isCurveArray","rotateVector","X","Y","arcToCubic","X1","Y1","RX","RY","angle","LAF","SF","X2","Y2","recursive","rx","ry","d120","res","f1","f2","h","rx2","ry2","df","f2old","x2old","y2old","c1","s1","c2","s2","hx","hy","m1","m2","m3","m4","newres","ii","quadToCubic","r13","r23","midPoint","lineToCubic","mid","segmentToCubic","px","py","path2Curve","needZCommandIndexes","cloned","zCommandIndexes","curveSegment","clonePath","reverseCurve","rotatedCurve","curveOnly","distanceSquareRoot","segmentLineFactory","point","angleBetween","v0","v1","v0x","v0y","v1x","v1y","sign","getPointAtArcSegmentLength","abs","sin","cos","sqrt","PI","xRot","xRotRad","dx","dy","transformedPoint","radiiCheck","cSquareNumerator","cSquareRootDenom","cRadicand","cCoef","transformedCenter","startVector","endVector","sweepAngle","alpha","ellipseComponentX","ellipseComponentY","segmentArcFactory","_b","bbox","_c","_d","sampleSize","distanceIsNumber","LENGTH","cur","POINT","POINTS","dv","getPointAtCubicSegmentLength","c1x","c1y","c2x","c2y","t1","segmentCubicFactory","getPointAtQuadSegmentLength","segmentQuadFactory","pathLengthFactory","_e","_f","isM","MIN","MAX","ll","getTotalLength","getRotations","segCount","pointCount","oldSegIdx","getRotatedCurve","lineLengths","computedIndex","sumLensSqrd","rotations","getCubicSegArea","getPathArea","getDrawDirection","getPointAtLength","splitCubic","pts","p0","p1","p2","p3","p4","p5","p6","p7","p8","p9","getCurveArray","segments","segmentData","curveLength","subsegs","equalizeSegments","path1","path2","TL","L1","L2","l1","l2","tl","mm","dif","canSplit","createDOM","container","dom","column","field","inferredColumn","visualColumn","nonConstantColumn","constant","I","array","columnOf","encode","channel","maybeColumnOf","K","KV","fv","MaybeZeroY1","mark","ascending","descending","bisector","compare1","compare2","delta","zero","lo","hi","number","numbers","valueof","ascendingBisect","bisectRight","bisectLeft","bisectCenter","variance","mean","sum","deviation","extent","Adder","entries","keyof","intern_get","intern_set","intern_delete","_intern","_key","group","nest","groups","rollup","rollups","map","regroup","InternMap","permute","source","sort","F","ascendingDefined","compareDefined","compare","groupSort","ak","av","bk","bv","slice","e10","e5","e2","tickSpec","stop","power","factor","i1","i2","inc","ticks","reverse","tickIncrement","nice","prestep","thresholdSturges","bin","domain","threshold","sturges","histogram","tz","tn","bins","bisect","maxIndex","minIndex","quickselect","sd","newLeft","newRight","swap","greatest","defined","maxValue","element","quantile","i0","value0","value1","quantileIndex","thresholdScott","median","medianIndex","flatten","arrays","merge","range","compose","fns","composed","composeAsync","capitalizeFirst","L","message","copyAttributes","attributes","exclude","useMemo","compute","appendTransform","node","transform","preTransform","prefix","subObject","maybeSubObject","filterPrefixObject","omitPrefixObject","prefixes","maybePercentage","isStrictObject","isUnset","deepAssign","mapObject","callbackfn","indexOf","firstOf","lastOf","unique","divide","comb","rest","combine","createGroups","groupBy","G","normalizeGroupBy","V","normalizeComparator","order","createFieldsOrder","createFunctionOrder","createSeriesOrder","createValueOrder","createSumOrder","createMaxIndexOrder","applyOrder","comparator","domainOf","ascendingComparator","eq","seriesSum","GI","seriesMaxIndex","StackY","orderBy","fromY","fromY1","series","style","fy","fy1","newY","newY1","TY","PG","NG","FG","LG","ny","FS","LS","V1","fillZero","digit","dynamicFormatDateTime","date","year","month","day","yyyyMMDD","hour","minutes","seconds","MaybeTitle","tooltip","title","titles","T","MaybeZeroX","MaybeZeroY","MaybeSize","MaybeKey","MaybeSeries","color","C","fc","MaybeTupleY","MaybeTupleX","MaybeIdentityY","MaybeIdentityX","MaybeDefaultX","extractX","MaybeDefaultY","extractY","MaybeTooltip","items","newItems","inferred","aggregate","MaybeZeroPadding","MaybeVisualPosition","restMark","MaybeFunctionAttribute","MaybeTuple","position","MaybeGradient","gradient","DodgeX","padding","scaleSeries","domainSeries","newS","StackEnter","reducer","duration","groupEntries","newGroups","J","ED","EDL","newEnterDelay","pd","maxDuration","normalizeBasis","basis","NormalizeY","Yn","newYn","basisFunction","basisValue","newV","specifiedTooltip","pre","createNormalize","createClamp","getter","get","tickStep","step0","step1","d3LinearNice","DURATION_SECOND","DURATION_MINUTE","DURATION_HOUR","DURATION_DAY","DURATION_WEEK","DURATION_MONTH","DURATION_YEAR","createInterval","floorish","offseti","adjust","test","floori","floor","ceil","shouldAdjust","roundStep","millisecond","second","minute","week","end","localIntervalMap","utcMillisecond","utcSecond","utcMinute","utcHour","utcDay","utcMonth","utcWeek","utcYear","utcIntervalMap","chooseTickIntervals","utc","intervalMap","findTickInterval","interval","tickIntervals","targetCount","targetInterval","matchInterval","closeToLow","timeInterval","targetStep","d3TimeNice","tickInterval","isFunction$1","isObject$1","isNull","memoize$1","identity$3","ctx","memoize","text","font","fontSize","fontFamily","fontWeight","fontStyle","fontVariant","isValid","reflect","logs","base","shouldReflect","baseCache","log","pows","pow","d3LogNice","niceDomain","createInterpolatorRound","interpolator","interpolatize","rangeOf","normalizeDomain","Scale","round","interpolate","colorName","isArrayish","require$$0","concat","swizzle","simpleSwizzleModule","results","colorNames","require$$1","reverseNames","cs","colorStringModule","string","model","abbr","hex","rgba","per","keyword","rgb","hexAlpha","hsl","hwb","hexDouble","hsla","hwba","hue2rgb","hsl2rbg","string2rbg","colorString","createInterpolateNumber","createInterpolateColor","createInterpolateValue","createInterpolateRound","interpolateNumber","chooseNiceTimeMask","internGet","initKey","internSet","internDelete","Base$1","updateOptions","defaultUnknown","updateIndexMap","mapBetweenArrByMapIndex","mapper","notFoundReturn","mappedIndex","createKey","Ordinal","Base","splice","sn","diff","pretty","computeFlexBandState","paddingOuter","paddingInner","align","flex","width","ratio","stepSum","bandWidthSum","normalizedFlex","flexSum","minBandWidth","valueBandWidth","bandWidth","valueStep","finalStepSum","bandStart","adjustedRange","computeBandState","rangeStart","deltaRange","outerTotal","innerTotal","Band","d3Ticks","begin","tickMethod","tickCount","prettyNumber","DEFAULT_Q","eps","simplicity","Q","lmin","lmax","lstep","simplicityMax","density","dMin","dMax","lMin","lMax","rt","densityMax","coverage","coverageMax","span","legibility","wilkinsonExtended","onlyLoose","best","sm","dm","cm","minStart","maxStart","lStep","score","Identity","createBiMap","createInterpolate","d0","d1","r0","r1","createPolyMap","normalizeList","interpolateList","ascendingDomain","ascendingRange","choosePiecewise","shouldRound","untransform","shouldClamp","piecewise","Linear","Continuous","Point","transformPow","exponent","transformPowInvert","transformSqrt","Pow","Sqrt","Threshold","d3Log","Log","Quantize","quantileSorted","percentage","createQuartile","isSorted","numberArr","tmp","Quantile","lastIndex","token","literal","shorten","sLen","newArr","assign","origObj","args_1","dayNames","monthNames","monthNamesShort","dayNamesShort","defaultI18n","dayOfMonth","globalI18n","pad","formatFlags","dateObj","i18n","globalMasks","format","mask","literals","$0","$1","combinedI18nSettings","d3Time","minuteOffset","Time","maskMap","time","__decorate","decorators","desc","Sequential_1","Sequential","scaleOptions","Jitter","paddingX","paddingY","random","scaleX","scaleY","rangeX","rangeY","DY","DX","JitterX","JitterY","SymmetryY","MY","minY","maxY","maxMiddleY","DiffY","YG","first","normalizeSelector","selector","Select","selectFunction","SelectX","SelectY","builtinFormatter","summary","normalizeReducer","reducerFunction","d3Mean","formatter","d3Median","d3Max","d3Min","d3Sum","GroupN","maybeFrom","field1","outputs","RV","reducedColumns","GV","GD","Group","channels","GroupX","GroupY","GroupColor","createReducer","sortQuantitative","sortedI","filterIndex","specifiedDomain","sortOrdinal","SI","sortedDomain","slicedDomain","Sort","ordinal","SortX","SortColor","SortY","valueOf","FlexX","angleWithQuadrant","calcBBox","points","minX","maxX","height","direction","layout","pcount","innerWidth","innerHeight","col","row","h0","space","intervalY","offsetX","offsetY","newX","tx","ty","Pack","THRESHOLD","thresholdAuto","Bin","groupChannels","binChannels","channelIndexKey","binValues","thresholds","DI","groupKeys","d3Bin","indexKey","BinX","lttb","sampled","every","maxArea","area","nextA","avgX","avgY","frameStart","frameEnd","pointA","normalizeSample","strategy","strategies","sampleFunction","frameSize","getFrames","frame","frames","Sample","normalizeValue","Filter","filters","expectedValues","totalFilter","FI","newIndex","newEncodes","constant$4","atan2","epsilon","halfPi","tau","acos","asin","tauEpsilon","append","strings","appendRound","digits","Path$3","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","ccw","cw","da","Path","withPath","shape","arcInnerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","intersect","x3","y3","x10","y10","x32","y32","cornerTangents","rc","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","arc","cornerRadius","padRadius","padAngle","buffer","da0","da1","ap","rp","rc0","rc1","t0","oc","kc","lc","array$1","curveLinear","d3line","curve","output","line","pointX","pointY","defined0","area$1","x0z","y0z","arealine","curveRadialLinear","curveRadial","radial","lineRadial","lineRadial$1","areaRadial","noop$2","that","Cardinal","tension","custom","cardinal","CardinalClosed","noop","CatmullRom","x23","y23","catmullRom","CatmullRomClosed","curveCatmullRomClosed","LinearClosed","curveLinearClosed","slope3","h1","s0","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Step","curveStep","stepBefore","stepAfter","isTranspose","coordinate","transformations","isPolar","isRadial","isHelix","isParallel","isFisheye","isRadar","isCircular","isTheta","getRadius","polar","radiusOf","angleOf","isRadius","getTransformOptions","has","Events","EE","once","addListener","emitter","event","listener","evt","clearEvent","EventEmitter","names","events","handlers","ee","listeners","module","define$1","constructor","factory","prototype","extend","parent","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","define","color_formatHex","color_formatHsl","color_formatRgb","hslConvert","rgbn","Rgb","rgbConvert","opacity","rgb_formatHex","rgb_formatRgb","Hsl","hsl2rgb","getBBoxByArray","xArr","yArr","xExtrema","xRotation","yExtrema","xAt","yAt","box$5","xDim","xs","xAngle","yDim","ys","yAngle","nearestPoint$2","tCallback","segNum","increaseRate","_t","next","v2","length$4","pointAt$3","pointToLine","vec2.exactEquals","u","vec2.normalize","vec2.dot","cubicAt","onet","extrema$1","extremas","t2","discSqrt","disc","box$3","x4","y4","nearestPoint$1","pointDistance$3","lengthOfSegment","totalLength","length$2","quadraticAt","extrema","box","nearestPoint","pointDistance","commonjsGlobal","rbush","exports","global","quickselectStep","defaultCompare","RBush","maxEntries","intersects","toBBox","nodesToSearch","child","childBBox","contains","tmpNode","createNode","equalsFn","indexes","goingUp","findItem","N","M","N2","N1","multiSelect","right2","right3","minArea","minEnlargement","targetNode","bboxArea","enlargement","enlargedArea","isNode","insertPath","splitIndex","newNode","minOverlap","bbox1","distBBox","bbox2","overlap","intersectionArea","compareMinX","compareNodeMinX","compareMinY","compareNodeMinY","xMargin","yMargin","leftBBox","rightBBox","margin","bboxMargin","i$1","child$1","siblings","destNode","children","stack","Shape","ClipSpaceNearZ","AbstractRendererPlugin","plugin","_this","AbstractRenderer","config","copyVec3","subVec3","addVec3","scaleVec3","maxVec3","minVec3","getAngle","createVec3","vec3.clone","deg2rad","deg","rad2deg","turn2deg","turn","getEulerFromQuat","quat","unit","getEulerFromMat4","mat4.getScaling","getEuler","rotation","mat3.fromValues","makePerspective","decompose","row0x","row0y","row1x","row1y","scalingX","scalingY","mat4.create","perspectiveMatrix","tmpVec4","vec4.create","pdum3","decomposeMat4","matrix","skew","quaternion","mat4.copy","mat4.determinant","ret","mat4.invert","mat4.transpose","vec4.transformMat4","mat3from4","vec3.length","m44","mat4x4","scale2","AABB","aabb","halfExtents","tc","tcx","tcy","tcz","th","thx","thy","thz","tminx","tmaxx","tminy","tmaxy","tminz","tmaxz","ocx","ocy","ocz","oh","ohx","ohy","ohz","ominx","omaxx","ominy","omaxy","ominz","omaxz","bc","br","ac","mx0","mx1","mx2","my0","my1","my2","mz0","mz1","mz2","mx0a","mx1a","mx2a","my0a","my1a","my2a","mz0a","mz1a","mz2a","aMax","aMin","bMax","bMin","intersection","plane","Plane","normal","invLen","vec3.scale","vec3.lerp","Mask","Frustum","planes","projectionMatrix","m0","m5","m6","m7","m8","m9","m14","m15","vec3.set","Rectangle","ERROR_MSG_METHOD_NOT_IMPLEMENTED","ERROR_MSG_USE_DOCUMENT_ELEMENT","ERROR_MSG_APPEND_DESTROYED_ELEMENT","CameraType","CameraTrackingMode","CameraProjectionMode","CameraEvent","MIN_DISTANCE","Camera","enabled","trackingMode","projectionMode","flag","mat4.fromTranslation","mat4.multiply","fullWidth","fullHeight","zoom","viewportPoint","roll","dvec","mat4.scale","scaleW","scaleH","mat4.ortho","mat4.orthoZO","vec3.subtract","el","mat4.rotateY","mat4.rotateX","vec3.transformMat4","mat4.lookAt","pos","rotZ","quat$1.setAxisAngle","quat$1.create","mat4.identity","rotX","rotY","rotQ","quat$1.multiply","rotMatrix","mat4.fromQuat","mat4.translate","vec3.copy","vec3.transformMat3","mat3.fromMat4","vec3.add","mat4.fromRotationTranslationScaleOrigin","viewMatrix","vpMatrix","azimuth","elevation","UnitType","UnitCategory","ValueRange","Nested","ParenLess","CSSStyleValueType","stringToUnitType","unitFromName","unitTypeToUnitCategory","canonicalUnitTypeForCategory","category","conversionToCanonicalUnitsScaleFactor","unit_type","unitTypeToString","CSSStyleValue","CSSColorValue","_super","colorSpace","GradientType","CSSGradientValue","CSSKeywordValue","camelCase","kebabize","letter","DCHECK","bool","isSymbol","FORMAT_ATTR_MAP","formatAttributeName","attributeName","formatInfinityOrNaN","suffix","toCanonicalUnit","CSSUnitValue","unitOrName","other_unit_value","target_unit","canonical_unit","scale_factor","kMinInteger","kMaxInteger","unit_1","Opx","Odeg","CSSRGB","isNone","unsetKeywordValue","initialKeywordValue","inheritKeywordValue","keywordCache","getOrCreateKeyword","noneColor","transparentColor","getOrCreateRGBA","getOrCreateUnitValue","PECENTAGE_50","Strategy","SortReason","EMPTY_PARSED_PATH","PropertySyntax","colorStopToString","colorStop","parseGradient$1","tokens","input","msg","getAST","ast","matchListDefinitions","matchListing","matchDefinition","matchGradient","matchLinearOrientation","matchListRadialOrientations","gradientType","pattern","orientationMatcher","matchCall","captures","orientation","scan","matchColorStop","callback","matchSideOrCorner","matchAngle","radialOrientations","radialOrientation","matchRadialOrientation","lookaheadCache","radialType","matchCircle","matchEllipse","matchAtPosition","matchExtentKeyword","positionAt","defaultPosition","matchPositioning","circle","matchLength","ellipse","matchDistance","positioning","location","matchCoordinates","matcher","matchColor","matchHexColor","matchRGBAColor","matchRGBColor","matchLiteralColor","matchNumber","matchPositionKeyword","captureIndex","regexp","blankCaptures","consume","computeLinearGradient","rcx","rcy","computeRadialGradient","regexLG","regexRG","regexPR","regexColorStop","spaceColorStops","colorStops","previousIndex","previousOffset","SideOrCornerToDegMap","angleToDeg","positonToCSSUnitValue","unitX","unitY","parseGradient","colorStr","steps","type_1","parsedRadialGradient","parseRadialGradient","parsePattern","gradientStr","patternStr","repetition","isPattern","isCSSRGB","parseColor","d3.color","mergeColors","parseDimension","unitRegExp","matchedUnits","taggedUnitRegExp","parseLengthUnmemoize","css","parseLength","parserPercentageUnmemoize","parseLengthOrPercentageUnmemoize","parseLengthOrPercentage","parseAngleUnmemoize","parseAngle","mergeDimensions","nonNegative","leftValue","rightValue","canonicalUnit","leftCanonicalUnitValue","rightCanonicalUnitValue","convertPercentUnit","convertAngleUnit","parseDimensionArrayFormat","parsed","parseDimensionArray","valueWithUnit","vec3Index","bounds","parseParam","supportedFilters","parseFilter","filterStr","filterRegExp","prevLastIndex","numberToString","parseNumberUnmemoize","parseNumber","mergeNumbers","clampedMergeNumbers","mergeNumberLists","numberList","getOrCalculatePathTotalLength","removeRedundantMCommand","prevSegment","cmd","prevCmd","srcPoint","destPoint","isSamePoint","hasArcOrBezier","hasArc","extractPolygons","polygons","polylines","point1","point2","getPathBBox","lineWidth","segmentsWithAngle","currentPoint","prePoint","quadBox","cubicBox","arcParams","arcBox","extra","getExtraFromSegmentWithAngle","nextPoint","currentAndPre","currentAndNext","preAndNext","currentAngle","toSymmetry","pointOnEllipticalArc","xAxisRotation","largeArcFlag","sweepFlag","xAxisRotationRadians","path2Segments","nextParams","startMovePoint","lastStartMovePointIndex","command","getArcParams","cp","preSegment","cp1","cp2","getTangentAtRatio","dx2","dy2","arcFlag","xDist","yDist","vMag","vRatio","vAngle","startPoint","xp","yp","lambda","cxp","cyp","theta","dTheta","commandsToPathString","commands","defX","defY","lineToCommands","ellipseToCommands","polygonToCommands","closed","rectToCommands","radius","tlr","trr","brr","blr","signX","signY","convertToPath","_g","_h","_j","_k","_l","_m","_o","_p","_q","_r","width_1","_s","height_1","_u","hasRadius","absolutePath","internalParsePath","memoizedParsePath","parsePath","mergePaths","curve1","curve2","curves","curve0","parsePoints","pointsOrStr","pointStr","tempLength","segmentT","segmentL","polylineLength","lineLength","mergePoints","cast","contents","id","transformFunctions","parseTransform","transformRegExp","functionName","functionData","argTypes","parsedArgs","parsedArg","parseTransformUnmemoize","convertItemToMatrix","sqrLength","length_1","sc","sq","multiplyMatrices","convertToMatrix","transformList","makeMatrixDecomposition","composeMatrix","is2D","temp","numberToLongString","mergeMatrices","leftArgs","rightArgs","list","stringifiedArgs","fromQ","toQ","product","typeTo2D","typeTo3D","isMatrixOrPerspective","lt","mergeTransforms","flipResults","_loop_1","leftResult","rightResult","types","merged","leftType","rightType","leftFunctionData","rightFunctionData","leftArgsCopy","rightArgsCopy","stringConversions","parseTransformOrigin","convertKeyword2Percent","parseTransformOriginUnmemoize","BUILT_IN_PROPERTIES","nodeName","GEOMETRY_ATTRIBUTE_NAMES","propertyMetadataCache","unresolvedProperties","isPropertyResolved","properties","DefaultStyleValueRegistry","runtime","metadata","syntax","attributeNames_1","oldClipPath","oldOffsetPath","needUpdateGeometry_1","skipUpdateAttribute","skipParse","forceUpdateGeometry","usedAttributes","needUpdateGeometry","attributeNames","computed","keywords","handler","isDocumentElement","used","inherited","resolved","oldParsedValue","propertyHandler","usedValue","attributes_1","geometryUpdater","geometry_1","parsedStyle","depth","offsetZ","stroke","increasedLineWidthForHitTesting","shadowType","shadowColor","transformOrigin","anchor","expansion","hasStroke","halfLineWidth","shadowBlur","shadowOffsetX","shadowOffsetY","shadowBlurInPixels","shadowOffsetXInPixels","shadowOffsetYInPixels","shadowLeft","shadowRight","shadowTop","shadowBottom","blurRadius","flipY","flipX","usedOriginXValue","usedOriginYValue","CSSPropertyAngle","oldParsed","CSSPropertyClipPath","oldPath","newPath","leaf","CSSPropertyColor","CSSPropertyFilter","getFontSize","CSSPropertyLengthOrPercentage","registry","CSSPropertyLengthOrPercentage12","formatted","CSSPropertyLengthOrPercentage14","tmpMat4","parsedTransformToMat4","newScale","newTranslation","newAngles","newSkew","dd","mat4.set","mat4","CSSPropertyLocalPosition","needResetLocalPosition","CSSPropertyMarker","oldMarker","newMarker","CSSPropertyNumber","CSSPropertyOffsetDistance","offsetPath","offsetDistance","CSSPropertyOpacity","CSSPropertyPath","CSSPropertyPoints","CSSPropertyShadowBlur","CSSPropertyText","CSSPropertyTextTransform","rawText","transformedText","canvasMap","defaultCanvasIdCounter","cleanExistedCanvas","canvas","isBrowser","isElement","sortedIndex","low","high","sortByZIndex","o1","o2","zIndex1","zIndex2","parent_1","findClosestClipPathTarget","clipPath","PX_SUFFIX","setDOMSize","$el","getStyle","getWidth","getHeight","MOUSE_POINTER_ID","TOUCH_TO_POINTER","clock","isFillOrStrokeAffected","pointerEvents","fill","hasFill","isFillOtherThanNone","isStrokeOtherThanNone","uId","uniqueId","root","nowOffset","pnow","reservedCBs","lastTime","polyfillRaf","currentTime","gap","delay","copied","polyfillCaf","vendorPrefixes","getRequestAnimationFrame","vp","getCancelAnimationFrame","raf","caf","AsyncParallelHook","AsyncSeriesWaterfallHook","SyncHook","argsArr","SyncWaterfallHook","genericFontFamilies","stringRegExp","toFontString","fontSizeString","fontFamilies","fontFamily_1","CSSPropertyTransform","CSSPropertyTransformOrigin","CSSPropertyZIndex","parentEntity","parentRenderable","parentSortable","CircleUpdater","EllipseUpdater","LineUpdater","PathUpdater","PolylineUpdater","RectUpdater","img","contentWidth","contentHeight","TextUpdater","globalRuntime","textAlign","textBaseline","offscreenCanvas","metrics","lineHeight","fontProperties","lineXOffset","lineYOffset","isFederatedEvent","FederatedEvent","manager","FederatedMouseEvent","FederatedPointerEvent","FederatedWheelEvent","CustomEvent","eventName","DELEGATION_SPLITTER","EventTarget","capture","useDelegatedName","delegatedName","name_1","eventType","originListener_1","skipPropagate","Node","e_1","e_1_1","content","opts","namespace","otherNode","node1Root","node2Root","node1Hierarchy","node2Hierarchy","longerHierarchy","shorterHierarchy","longerStart","shorterHierarchyNode","longerHierarchyNode","assigned","PROPAGATION_LIMIT","EventService","isRightButton","trackingData","pressTarget","clickTarget","currentTarget","clickEvent","clickHistory","isMouse","outTarget","outType","outEvent","leaveEvent","overType","overEvent","overTargetAncestor","didPointerEnter","enterEvent","wheelEvent","client","camera","projectionMatrixInverse","worldMatrix","viewport","canvasP","clip","pickHandler","mappers","composedPath","propagationPath","viewportX","viewportY","disableHitTesting","eventTarget","existed","fallbackTarget","existedHTML","cursor","OffscreenCanvasCreator","contextAttributes","RenderReason","RenderingService","renderer","enableDirtyRectangleRendering","canvasConfig","rerenderCallback","renderingContext","onlyCameraChanged","shouldTriggerRenderHooks","displayObject","enableDirtyCheck","enableCulling","renderable","objectChanged","objectToRender","sortable","index_1","index_2","ATTRIBUTE_REGEXP","DefaultSceneGraphSelector","query","value_1","name_2","value_2","name_3","matches","MutationEvent","typeArg","relatedNode","prevValue","newValue","attrName","attrChange","prevParsedValue","newParsedValue","ElementEvent","markRenderableDirty","reparentEvent","DefaultSceneGraphService","parentInvertRotation","degrees","quat$1.fromEuler","rot","parentRot","quat$1.copy","quat$1.invert","quat$1.normalize","quat$1.mul","invParentRot","parentRotation","vec3.equals","vec3.transformQuat","parentInvertMatrix","tmpPosition","parentTransform","zeroVec3","tmpVec3","tr","quat$1.fromValues","tmpMat","tmpQuat","hasSkew","detached","origin","originVec","vec3.multiply","updatedScaling","vec2.fromValues","vec2.copy","trigger","detail","affectChildren","oldDependencyMap","newDependencyMap","dependencyMap","mat4.getTranslation","mat4.getRotation","render","existedAABB","geometry","childBounds","clipped","clipPathBounds","parentInvert","localBounds","top_1","childTransform","TEXT_METRICS","LATIN_REGEX","regexCannotStartZhCn","regexCannotEndZhCn","regexCannotStartZhTw","regexCannotEndZhTw","regexCannotStartJaJp","regexCannotEndJaJp","regexCannotStartKoKr","regexCannotEndKoKr","regexCannotStart","regexCannotEnd","TextService","char","nextChar","prevLine","lastChar","metricsString","baseline","imagedata","pixels","wordWrap","strokeHeight","letterSpacing","textPath","leading","outputText","lines","lineWidths","maxLineWidth","lineWidth_1","lineHeight_1","offsetY_1","wordWrapWidth","maxLines","textOverflow","maxWidth","ellipsis","currentIndex","currentWidth","calcWidth","ellipsisWidth","chars","prevChar","charWidth","currentLineLength","lastLineWidth","lastLineIndex","i_1","trimmedChar","isTrimmedWithSpace","trimFrom","trimTo","spacing","geometryUpdaterFactory","rectUpdater","polylineUpdater","CSSPropertySyntaxFactory","getGlobalThis","entityCounter","insertedEvent","removedEvent","destroyEvent","Element","className","deep","newChild","refChild","oldChild","tagName","selectors","objects","nodes","qualifiedName","force","localName","attr","isDisplayObject","mutationEvent","DEFAULT_STYLE_PROPS","DEFAULT_PARSED_STYLE_PROPS","DEFAULT_PARSED_STYLE_PROPS_CSS_DISABLED","INHERITABLE_BASE_STYLE_PROPS","INHERITABLE_STYLE_PROPS","DATASET_PREFIX","DisplayObject","Proxy","formattedName","prop","propertyName","animation","customCloneFunc","clonedStyle","attribute","clonedChild","formattedAttributes","parseOptions","oldValue","ez","keyframes","timeline","eux","euz","zIndex","CSS","inherits","interpolable","initialValue","clazz","Circle","CustomElement","Ellipse","HTML","clientRect","canvasRect","Image","Line","markerStart","markerEnd","isStart","markerStartOffset","markerEndOffset","marker","originalAngle","inWorldSpace","linePointAt","transformed","markerMid","endPoint","tangent","Polygon","Polyline","subt","Rect","Text","CustomElementRegistry","Document","initialStyle","inh","namespaceURI","rBush","rBushNodes","hitTestList","isVisibilityAffected","clientX","clientY","picked","destroy","CullingPlugin","renderingService","cullable","EventPlugin","nativeEvent","normalizedEvents","normalizedEvents_1","normalizedEvents_1_1","normalizedEvent","event_1","e_2","normalizedEvents_2","normalizedEvents_2_1","event_2","e_2_1","e_3","cancelable","events_1","events_1_1","event_3","federatedEvent","e_3_1","e_4","$element","outside","normalizedEvents_3","normalizedEvents_3_1","event_4","e_4_1","e_5","normalizedEvents_4","normalizedEvents_4_1","event_5","e_5_1","canvasX","canvasY","touch","tempEvent","shape2D","FrustumCullingStrategy","renderBounds","parentVisibilityPlaneMask","parentPlaneMask","isShape2D","PrepareRendererPlugin","rBushRoot","handleAttributeChanged","handleBoundsChanged","handleMounted","handleUnmounted","rBushNode","bulk","CanvasEvent","DEFAULT_CAMERA_Z","DEFAULT_CAMERA_NEAR","DEFAULT_CAMERA_FAR","mountedEvent","unmountedEvent","beforeRenderEvent","rerenderEvent","afterRenderEvent","Canvas","devicePixelRatio","background","document","requestAnimationFrame","cancelAnimationFrame","createImage","supportsPointerEvents","supportsTouchEvents","supportsCSSTransform","supportsMutipleCanvasesInOneContainer","useNativeClickEvent","alwaysTriggerPointerEventOnCanvas","isTouchEvent","isMouseEvent","canvasWidth","canvasHeight","dpr","mergedConfig","clipSpaceNearZ","cleanUp","skipTriggerEvent","cancelRAF","tick","firstContentfullPaint","async","plugins","oldRenderer","AdvancedCamera","quat.setAxisAngle","quat.create","quat.multiply","coords","updatedDistance","focalPoint","landmark","mat4.clone","easing","duration_1","easingFunction","onfinish_1","onframe_1","epsilon_1","destPosition_1","destFocalPoint_1","destZoom_1","destRoll_1","easingFunc_1","timeStart_1","endAnimation_1","animate_1","timestamp","elapsed","interFocalPoint","interPosition","interZoom","interRoll","vec3.dist","AnimationEvent","timelineTime","sequenceNumber","Animation","effect","newTime","oldCurrentTime","oldPlayState","newPlayState","playbackRate","animations","isAnimationFrame","ignoreLimit","baseTime","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","bezier","mY1","mY2","sampleValues","getTForX","intervalStart","currentSample","lastSample","guessForT","initialSlope","convertToDash","Quad","Cubic","Quart","Quint","Expo","Sine","Circ","Back","Bounce","pow2","Elastic","amplitude","period","Spring","mass","stiffness","damping","velocity","w0","zeta","wd","progress","Steps","trunc","Bezier","easein","EaseOut","ease","EaseInOut","EaseOutIn","EasingFunctions","complexEasingSyntax","getEasingFunction","linear","Start","Middle","End","stepSize","numberString","cubicBezierRe","step1Re","step2Re","parseEasingFunction","normalizedEasing","cubicData","step1Data","step2Data","calculateActiveDuration","timing","repeatedDuration","PhaseNone","PhaseBefore","PhaseAfter","PhaseActive","calculatePhase","activeDuration","localTime","endTime","calculateActiveTime","fillMode","phase","calculateOverallProgress","iterationDuration","iterations","activeTime","iterationStart","overallProgress","calculateSimpleIterationProgress","simpleIterationProgress","calculateCurrentIteration","calculateDirectedProgress","playbackDirection","currentIteration","currentDirection","calculateIterationProgress","directedProgress","convertEffectInput","propertySpecificKeyframeGroups","makePropertySpecificKeyframeGroups","interpolations","makeInterpolations","fraction","interpolation","offsetFraction","localDuration","scaledLocalTime","isNotReservedWord","member","propertySpecificKeyframe","groupName","startIndex","endIndex","startOffset","endOffset","applyFrom","applyTo","propertyInterpolation","leftInterpolation","rightInterpolation","InterpolationFactory","convertToString","interpolated","usedLeft","usedRight","computedLeft","computedRight","parser","interpolationArgs","interp_1","fromLength","toLength","AnimationEffectTiming","convertToArrayForm","effectInput","normalizedEffectInput","numKeyframes","keyframe","normalizeKeyframes","originalKeyframe","memberValue","everyFrameHasOffset","spaceKeyframes","fills","directions","makeTiming","timingInput","forGroup","normalizeTimingInput","numericTimingToObject","KeyframeEffect","compareAnimations","leftAnimation","rightAnimation","AnimationTimeline","processing","entry","inactiveAnimations","updatingAnimations","newPendingClears","newPendingEffects","activeAnimations","alive","select","Selection","Selection$1","selections","transitions","updateElements","datum","newElement","groupId","enter","update","exit","split","keyElement","keyUpdateElement","groupKeyElements","groupKey","Ctor","newEnter","newUpdate","newExit","newMerge","newSplit","transition","lower","upper","applyStyle","selection","appendPolygon","arrowPoints","arrowSize","arrowAngle","arrowAngle1","arrow1","arrowAngle2","arrow2","appendArc","computeGradient","mode","tpShape","getTheta","gradientMode","reorder","getArcObject","toOpacityKey","colorAttribute","opacityAttribute","getTransform","getOrigin","rect","inset","insetLeft","insetTop","insetRight","insetBottom","radiusBottomLeft","radiusBottomRight","radiusTopLeft","radiusTopRight","minWidth","minHeight","absX","absY","absWidth","absHeight","finalX","finalY","finalWidth","finalHeight","clampWidth","clampHeight","clampX","clampY","arcObject","defaults","defaultColor","defaultRadius","restDefaults","defaultLineWidth","innerRadiusTopLeft","innerRadiusTopRight","innerRadiusBottomRight","innerRadiusBottomLeft","standardDirRadius","standardDir","extendedStyle","Hollow","getFunnelPoints","nextPoints","newP1","newP2","Funnel","adjustPoints","point2d","funnelPoints","getPyramidPoints","Pyramid","createElement","descriptor","DoublePath","style1","style2","segmentation","definedPoints","dp","Curve","gradientColor","connectNulls","defaultSize","finalStyle","linePath","DP","MS","connectStyle","missing","connectPath","Smooth","curveMonotoneY","curveMonotoneX","HV","curveStepAfter","VH","curveStepBefore","HVH","r2","r3","r4","x5","x6","x7","x8","x9","Trail","seriesSize","d3path","hollowPoint","square","hollowSquare","diamond","hr","hollowDiamond","triangle","diffY","hollowTriangle","triangleDown","hollowTriangleDown","hexagon","diffX","hollowHexagon","bowtie","hollowBowtie","plus","hyphen","dash","smooth","hv","vh","hvh","vhv","Symbols","useMarker","strokeWidth","symbol","finalLineWidth","finalRadius","HollowBowtie","HollowDiamond","HollowHexagon","HollowPoint","HollowSquare","HollowTriangle","HollowTriangleDown","Bowtie","Cross","Diamond","Hexagon","Hyphen","Plus","Square","Tick","Triangle","TriangleDown","Vector","arrow","traverse","show","visibility","hide","visible","OffscreenGroup","createOffscreenGroup","isInOffscreenGroup","ancestor","restOptions","GText","degToRad","radToDeg","BBox","getCallbackValue","classNames","cls","PREFIX","measureTextWidth","getFont","textShape","textOf","applyToText","ellipsisIt","wrapIt","getEventPos","touches","renderExtDo","acc","ifShow","creator","removeChildren","removeHandler","inRange","includeLeft","includeRight","numberInterpolate","arrayInterpolate","nb","na","objectInterpolate","keyframeInterpolate","int","getItemsBBox","flexDirection","justifyContent","alignItems","isHorizontalFlow","isLeftToRightFlow","itemsFromDirection","itemsForJustifyContentBBox","justifyContentOffset","itemsFromJustifyContent","itemBox","calcAlignItemsOffset","itemsFromAlignItems","finalItems","grid","calcLayout","callers","caller","vec1","vec2","vertical","toPrecision","omit","innerKeys","smoothBezier","isLoop","constraint","cps","hasConstraint","prevPoint","nextCp0","cp0","_min","_max","prevIdx","catmullRom2Bezier","crp","pointList","controlPointList","PRIMILTIVE_ATTRIBUTES","isPrimitiveAttribute","getPrimitiveAttributes","sampling","scaleToPixel","applyScale","keyFunc","grouped","_Selection_instances","_Selection_maybeAppend","group_2","group_1","group_1_1","this_1","callable","option","maybeAppend","parseSeriesAttr","getLocalBBox","isHorizontal","toUppercaseFirstLetter","toLowercaseFirstLetter","addPrefix","removePrefix","lowercaseFirstLetter","inferPrefix","withoutPrefix","applyStyleSheet","styleString","total","currVal","startsWith","nextChart","subStyleProps","superStyleProps","splitStyle","ignoreStyleDict","groupStyleDict","groupStyle","getTranslate","percentTransform","reg","computedVal","applyVisibility","Component","defaultStyleProps","animate","button","parseMarker","icon","dataURLsPattern","getType","markerType","Marker","symbolFn","Columns","columns","Lines","areas","dataToLines","scales","lineToLinePath","lineToCurvePath","closePathByBaseLine","closedPath","linesToAreaPaths","linesToStackAreaPaths","paths","currLine","currCurvePath","belowLine","belowCurvePath","linesToStackCurveAreaPaths","getRange","getStackedData","datumLen","positivePrev","negativePrev","Sparkline","rawData","isStack","areaStyle","lineStyle","columnStyle","minVal","maxVal","heightScale","barWidth","getShape","getStackShape","isStandardAnimationOption","parseAnimationOption","baseOption","onAnimateFinished","onAnimatesFinished","identicalTextNode","transitionShape","after","afterTransition","middle","getPosition","ex","ey","so","sourceAnimation","targetAnimation","tarStyle","currStyle","fadeOut","HANDLE_ICON_DEFAULT_CFG","HANDLE_LABEL_DEFAULT_CFG","HANDLE_DEFAULT_CFG","CLASS_NAMES","HandleIcon","iconStyle","Handle","showLabel","labelStyle","labelGroup","iconShape","iconGroup","Slider","slidable","brushable","currPos","diffPos","deltaVal","onChange","internalOldValue","trackLength","trackSize","newSelectionArea","oldValues","newValues","sparklineGroup","showHandle","availableHandle","selectionType","selectionStyle","prevStart","prevEnd","internalValues","startVal","endVal","handleType","handleIconOffset","stVal","autoFitLabel","handleStyle","textWidth","textHeight","finaleWidth","iW","iH","fX","fY","fW","fH","totalSpacing","positiveSize","negativeSize","showLabelOnInteraction","handlePosition","textStyle","internalShowLabel","stOffset","oldStartVal","oldEndVal","internalStartOffset","brushArea","scrollable","deltaX","deltaY","Scrollbar","evtVal","basePos","clickPos","viewportLength","isRound","thumbRadius","contentLength","trackStyle","AXIS_BASE_DEFAULT_ATTR","getStraightPath","getSurroundPath","reversed","connect","getLinePath","cfg","connectPaths","closeFlag","startOfFrom","endOfTo","createPath","insertA","insertB","raduis1","radius2","renderGridLine","isBillboard","renderAlternateRegion","areaFill","colors","getColor","regions","regionStyle","getData","Grid","lineGroup","regionGroup","lineTransitions","reigionTransitions","getCallbackStyle","filterExec","getLineAngle","getLineTangentVector","startX","startY","endX","endY","getDirectionVector","tangentVector","getLabelVector","getLinearValuePos","getArcValuePos","getValuePos","isAxisHorizontal","isAxisVertical","isCircle","getArcPath","diffAngle","startAngleRadians","endAngleRadians","getPosByAngle","middleAngleRadians","xm","ym","large","sweep","getArcAttr","renderArc","renderTruncation","extendLine","startPos","endPos","renderLinear","showTrunc","truncRange","lineExtension","ox1","oy1","ox2","oy2","renderLine","renderAxisArrow","showArrow","lineArrow","lineArrowOffset","lineArrowSize","shapeToAddArrow","renderAxisLine","getGridVector","getGridCenter","gridCenter","renderStraight","gridLength","renderSurround","controlAngles","angleInRad","cosa","sina","renderGrid","gridAttr","finalData","gridItems","Bounds","radian","getBounds","getBBox","anchorX","anchorY","b_1","onLine","isIntersect","line1","line2","dir1","dir2","dir3","dir4","isPointInsideRectangle","polygon","lineToInfinity","side","isRectangleBInsideA","rectA","rectB","contain","lineToLine","s10x","s10y","s32x","s32y","denom","denomPositive","s02x","s02y","sNum","tNum","intersectBoxLine","boxLine","linesP","linesP_1","linesP_1_1","createCrossBBox","labelDirection","crossSize","right_1","bottom_1","left_1","labelVector","boundTest","crossPadding","resultSet","crossBBox","testContain","testIntersect","prevItem","currItem","items_1","items_1_1","parseLengthString","ellipseLabels","labels","overlapCfg","utils","minLength","maxLength","ellipsisStep","allowedLength","label","state_1","methods","seq","filterDefined","hideLabels","keepHeader","keepTail","parityHide","els","minLabelWidth","rotateLabels","optionalAngles","recoverWhenFailed","defaultAngles","runAndPassed","setLabelsRotate","optionalAngles_1","optionalAngles_1_1","inferTextBaseline","wrapLabels","defaultLines","minLines","setLabelsWrap","OverlapUtils","wrap","canProcessOverlap","processOverlap","labelOverlap","util","getFactor","angleNormalizer","normalizedAngle","correctLabelRotation","_rotate","getLabelRotation","labelAlign","customRotate","getLabelStyle","labelAngle","tickAngle","setRotateAndAdjustLabelAlign","applyTextStyle","getLabelPos","showTick","tickLength","tickDirection","labelSpacing","finalLabelSpacing","unionFactor","extraLength","labelFormatter","overlapHandler","renderLabel","renderLabels","prevLabel","shapeAnimation","getTickVector","getTickPoints","unitVector","getTickLineLayout","tickVector","createTickEl","applyTickStyle","tickStyle","createTick","tickAttr","renderTicks","axisData","parsePosition","titleBBox","contentBBox","spacingTop","spacingRight","spacingBottom","spacingLeft","spacingWidth","spacingHeight","insetWidth","insetHeight","mayApplyStyle","currAttr","getTitleLayout","hW","hH","Title","containerWidth","containerHeight","titleWidth","titleHeight","restStyle","titleStyle","getTitlePosition","mainGroup","titleGroup","mainX","mainY","mainHalfWidth","mainHalfHeight","titleHalfWidth","titleHalfHeight","inferTransform","applyTitleStyle","specified","renderTitle","titleText","renderAxisMain","showLine","tickGroup","tickTransitions","labelTransitions","Axis","specificAnimation","showTitle","showGrid","dataThreshold","sampledData","finalAnimation","gridGroup","gridTransitions","mainTransitions","titleTransitions","Navigator","defaultPage","pageViews","pageView","maxHeight","pageWidth","pageHeight","controllerShape","pageNum","animateOptions","currPage","playState","playWindow","loop","pages","page","following","prevBtn","nextBtn","pW","bpW","bpH","bnW","bnH","o1x","o1y","o2x","o2y","o3x","o3y","pageNumText","pathStyle","whetherToAddEventListener","prevBtnGroup","nextBtnGroup","btn","pageInfoGroup","containerSelection","getStepValueByValue","hiddenHandle","HANDLE_HEIGHT_RATIO","HANDLE_TRIANGLE_RATIO","verticalHandle","halfWidth","oneSixthWidth","triangleX","horizontalHandle","triangleY","getSafetySelections","newSelection","oldSelection","ifHorizontal","styleOfMarker","CategoryItem","valueText","markerSize","labelWidth","labelHeight","valueWidth","valueHeight","span1","innerSpan","span2","actualSpace","markerWidth","spacing1","spacing2","markerShapeStyle","markerStrokeWidth","markerLineWidth","markerStroke","markerX","labelX","valueX","halfHeight","ctn","ifSatisfied","rule","CategoryItems","gridRow","gridCol","labelText","rowPadding","colPadding","navWidth","pageSize","prevOffset","pageIndex","dir","colWidth","rowHeight","cP","limitWidth","limitHeight","prevWidth","prevHeight","nextWidth","nextHeight","cb","removedPage","click","mouseenter","mouseleave","dispatchCustomEvent","navHeight","itemsLayouts","layouts","categoryItems","navStyle","navigator","payload","DEFAULT_HANDLE_CFG","markerGroup","markerSymbol","markerStyle","LEGEND_BASE_DEFAULT_OPTIONS","CATEGORY_DEFAULT_OPTIONS","CONTINUOUS_DEFAULT_OPTIONS","STEP_RATIO","Category","finalTitleStyle","partialItemStyle","itemStyle","DEFAULT_INDICATOR_STYLE_PROPS","Indicator","revertPositionMap","edge","cornerScale","isH","hL","cL","hCL","cS","search","st","getBlockColor","partition","getNextTickValue","getTrackPath","getSelectionPath","block","genericColor","getClipPath","et","renderTrack","renderSelection","ribbon","Ribbon","trackGroup","ribbonGroup","getMinMax","safetyValue","currValue","diffValue","contentGroup","positions","AXIS_CLASS_NAMES","userDefinedRibbonSize","availableWidth","availableHeight","labelSize","labelLength","availableSize","availableLength","handleSize","handleLength","handleRatio","ribbonSize","labelPosition","edgeLength","ribbonLength","finalLabelOccupy","ribbonStyle","HandleCtor","SliderHandle","titlePosition","handle","handleX","titleX","startHandleWidth","startHandleHeight","endHandleWidth","endHandleHeight","handleFormatter","ribbonX","ribbonY","cr","nx","midVal","labelTextAlign","labelTextBaseline","labelFilter","functionStyle","finalLabelStyle","definedTickLength","labelFixedSpacing","internalVal","axisOffset","axisSpacing","axisTickLength","showIndicator","safeValue","isOffset","currSt","currEnd","ribbonLen","getClassNames","prefixCls","TEXT_OVERFLOW_STYLE","getDefaultTooltipStyle","CLASS_NAME","Tooltip","template","isToggle","setPosition","enterable","itemsElements","ul","assignPosition","finalPosition","positionScore","absolutelyOffset","abs1","abs2","pos1","pos2","showDelay","currentTimestamp","cursorX","cursorY","bounding","offsetWidth","offsetHeight","expectLeft","expectTop","inversion","boundingX","boundingY","boundingWidth","boundingHeight","edgeCompare","correctivePosition","correctedPositionString","Layout","marginTop","marginRight","marginBottom","marginLeft","paddingTop","paddingRight","paddingBottom","paddingLeft","bboxes_1","getConnectorPoint","inferBackgroundBounds","hw","hh","inferConnectorPath","controlPoints","coordCenter","vx","Advance","labelTransform","labelTransformOrigin","connector","startMarker","endMarker","innerHTML","backgroundStyle","connectorStyle","endPoints","connectorPath","getPath","p0x","p0y","p1x","p1y","p2x","p2y","inferTextPosition","BadgeShape","bgShape","Badge","definedPointsY1","definedPointsY0","dpy1","dpy0","DoubleArea","areaPath","getPathNode","areaRadialPath","Y0","Area","Link","getVHVPath","VHV","cornerRatio","Arc","raduis","baseChannels","shapes","baseGeometryChannels","tooltip2d","tooltip1d","tooltipXd","baseAnnotationChannels","basePreInference","basePostInference","createBandOffset","bandOffset","bandOffsetX","bandOffsetY","isBandX","isBandY","isSeries","widthX","widthY","visualMark","initializeData","links","LT","LV","getPolygonPath","closedPoints","dists","currDist","prevDist","getRibbonPath","radiusHigh","radiusQ3","radiusMedian","radiusQ1","radiusLow","Box","middleAngle","rectAngle","Violin","getArrowMarker","arrowStyle","shapeTheme","arrowMarker","inferSymbol","getPoints","offset1","offset2","length1","X0","Connector","connectLength1","makerStyle","kebabCase","inferNonCircularStyle","inferRadialStyle","autoRotate","rotateToAlignArc","inferRotation","pointOfArc","inferInnerCircularStyle","radiusRatio","maybeUndefined","inferIdentityStyle","getDefaultStyle","linePoints","radius1","inferOutsideCircularStyle","connectorLength","connectorLength2","connectorDistance","spider","originX","surround","inferPosition","theme","processor","PositionProcessor","Label","specifiedTS","overrideStyle","defaultStyle","Density","lru","keyFn","newCanvas","createCanvas","getPointTemplate","blurFactor","tplCanvas","tplCtx","getColorPalette","gradientConfig","paletteCtx","drawAlpha","shadowCtx","blur","rectX","rectY","tpl","templateAlpha","colorize","palette","minOpacity","maxOpacity","useGradientOpacity","imgData","finalAlpha","HeatmapRenderer","deleteKey","Heatmap","d3min","d3max","DURATION","getWaterWavePositions","stage","waveLength","getWaterWavePath","waterLevel","_phase","waveRight","addWave","waveCount","waveAttrs","fillOpacity","wave","pin","cpX","cpY","LiquidShapesPath","getLiquidShape","Liquid","liquidOptions","styleOptions","liquidShape","percent","outline","border","outlineStyle","defaultAttr","centerX","centerY","shapePath","backgroundShape","clipShape","distanceShape","borderShape","IntervalShape","IntervalHollow","IntervalFunnel","IntervalPyramid","Interval","SZ","NSZ","x1x2","groupWidth","RectShape","RectHollow","LineShape","LineSmooth","LineHV","LineVH","LineHVH","LineTrail","xoffset","yoffset","parallel","PV","vector","pv","vectors","PointHollow","PointHollowDiamond","PointHollowHexagon","PointHollowSquare","PointHollowTriangleDown","PointHollowTriangle","PointHollowBowtie","PointShape","PointPlus","PointDiamond","PointSquare","PointTriangle","PointHexagon","PointCross","PointBowtie","PointHyphen","PointLine","PointTick","PointTriangleDown","TextShape","TextBadge","cartesian","CellShape","CellHollow","Cell","AreaShape","AreaSmooth","AreaHVH","AreaVH","AreaHV","LinkShape","LinkArc","LinkSmooth","LinkVHV","ImageShape","PolygonShape","PolygonRibbon","Xn","Pn","BoxShape","BoxViolin","Y3","Y4","q1","q3","VectorShape","R","vy","LineXY","LineY","LineX","ConnectorShape","extended","C1","AbstractRange","extendX","extendY","RangeShape","Range","RangeX","RangeY","targetDepth","justify","ascendingSourceBreadth","ascendingBreadth","ascendingTargetBreadth","defaultId","defaultNodes","graph","defaultLinks","nodeById","computeLinkBreadths","link","Sankey","linkSort","sankey","computeNodeLinks","computeNodeValues","computeNodeDepths","computeNodeHeights","computeNodeBreadths","sourceLinks","targetLinks","current","maxDepth","computeNodeLayers","kx","initializeNodeBreadths","ky","reorderLinks","beta","relaxRightToLeft","relaxLeftToRight","targetTop","reorderNodeLinks","resolveCollisions","sourceTop","subject","resolveCollisionsBottomToTop","resolveCollisionsTopToBottom","DEFAULT_OPTIONS","ALIGN_METHOD","getNodeAlignFunction","nodeAlign","nodeId","nodeSort","nodeWidth","nodePadding","nodeDepth","nodeNodes","nodeLinks","sankeyProcessor","layoutData","subTooltip","main","maybeTooltip","isFullTooltip","maybeAnimation","DEFAULT_LAYOUT_OPTIONS","DEFAULT_NODE_OPTIONS","DEFAULT_LINK_OPTIONS","DEFAULT_LABEL_OPTIONS","nodeLabels","linkLabels","nodeEncode","linkEncode","nodeKey","linkData","nodeData","SankeyTransform","key1","nodeTooltip","linkTooltip","weight","frequency","thickness","marginRatio","sourceWeight","targetWeight","sortBy","edges","preprocess","sortNodes","layoutNodes","layoutEdges","edgesBySource","edgesByTarget","sources","targets","method","SortMethods","nodesMap","sourceId","targetId","sourceNode","sourceEdges","targetEdges","ArcLayout","Chord","linkEncodeColor","nodeWidthRatio","nodePaddingRatio","restLayout","minimumLen","PathShape","PathHollow","defaultSeparation","meanX","meanXReduce","maxYReduce","leafLeft","leafRight","cluster","separation","nodeSize","previousNode","node_count","node_each","node_eachBefore","node_eachAfter","node_find","node_sum","node_sort","node_path","leastCommonAncestor","aNodes","bNodes","node_ancestors","node_descendants","node_leaves","leaves","node_links","node_iterator","hierarchy","mapChildren","objectChildren","childs","computeHeight","node_copy","copyData","optional","required","constantZero","constant$2","lcg$1","shuffle","packEncloseRandom","circles","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r21","c3","d3","ab","xa","xb","ya","yb","place","packSiblingsRandom","aa","ca","sj","sk","packLayout","lcg","radiusLeaf","packChildrenRandom","translateChild","roundNode","treemapDice","partition$1","positionNode","preroot","ambiguous","imputed","defaultParentId","stratify","parentId","currentId","currentParentId","nodeByKey","parentof","slash","nextLeft","nextRight","moveSubtree","wm","wp","shift","change","executeShifts","nextAncestor","vim","TreeNode","treeRoot","tree","firstWalk","secondWalk","sizeNode","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","treemapSlice","phi","squarifyRatio","rows","nodeValue","sumValue","minValue","newRatio","minRatio","treemapSquarify","squarify","treemapLayout","tile","paddingStack","treemap","treemapBinary","sums","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","treemapSliceDice","dice","treemapResquarify","resquarify","generateHierarchyRoot","addObjectDataPath","addArrayDataPath","getTileMethod","tiles","tileMethod","treeDataTransform","GET_DEFAULT_LAYOUT_OPTIONS","GET_DEFAULT_OPTIONS","DEFAULT_TOOLTIP_OPTIONS","DEFAULT_TOOLTIP_OPTIONS_DRILL","Treemap","markOptions","resOptions","treemapDrillDown","layoutOptions","transformedData","transformedDataAll","dataTransform","q2","OutlierY","Boxplot","encodeY","boxTooltip","pointTooltip","boxStyle","pointStyle","ShapeShape","forceCenter","strength","tree_add","addAll","tree_cover","tree_data","tree_extent","tree_find","quads","tree_remove","retainer","removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","defaultX","tree_x","defaultY","tree_y","quadtree","Quadtree","leaf_copy","treeProto","tree_addAll","tree_removeAll","constant$1","jiggle","forceLink","defaultStrength","strengths","distances","bias","initialize","initializeStrength","initializeDistance","_nodes","_random","dispatch","Dispatch","parseTypenames","typenames","typename","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","setFrame","clearNow","Timer","timer","sleep","timerFlush","wake","nap","poke","initialRadius","initialAngle","forceSimulation","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","initializeNodes","initializeForce","closest","forceManyBody","distanceMin2","distanceMax2","theta2","accumulate","apply","quad","forceX","forceY","joint","nodeStrength","linkStrength","linkKey","nodeForce","linkForce","ForceGraph","restEncode","nodesData","linksData","hierarchyFunction","layoutFunction","as","Cluster","Tree","valueEncode","TreeTransform","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","customConverter","inferColumns","columnSet","formatYear","formatDate","hours","milliseconds","dsvFormat","delimiter","reFormat","DELIMITER","parse","convert","parseRows","eof","eol","preformatBody","formatValue","formatBody","formatRows","formatRow","autoType","fixtz","Fetch","response","d3AutoType","isEmpty","Fold","fields","pick","Pick","Rename","rename","normalizeFields","SortBy","normalizedF","Inline","Custom","Map","cloudRadians","cloudText","cloudFont","cloudFontNormal","cloudFontSize","cloudRotate","cloudPadding","cloudDispatch","cloudSprite","contextAndRatio","di","maxh","sr","wcr","wsr","hcr","hsr","sprite","w32","seen","seenRow","cloudCollide","tag","board","sw","lx","msx","cloudBounds","collideRects","archimedeanSpiral","rectangularSpiral","zeroArray","cloudCanvas","functor","spirals","tagCloud","spiral","words","cloud","getContext","tags","maxDelta","dt","dxdy","can","cxt","imageData","flow","processImageMask","rej","image","normalizeFontSize","fMin","fMax","WordCloud","cloudOptions","defaultBounds","_tags","hasImage","tlx","tly","brx","bry","invisibleText","Join","join","on","unknown","fromKey","fk","keyData","Slice","self","DEFAULT_SIZE","DEFAULT_WIDTH","LN_2","helper","kernel","arrMulti","relaxMin","relaxMax","normalizedMinMax","buckets","xToBucket","partialArea","generatePartialAreas","fullArea","initalValue","bucket","leftBlockCount","rightBlockCount","spilledAreaLeft","spilledAreaRight","startGradPos","accumulator","gradAccumulator","partialAreas","pdf","expected","entropy","ln","KDE","yField","sizeField","gb","pdfResult","_y","_size","parameters","maxIterations","tolerance","fA","fB","fMid","zeros","zerosM","norm2","weightedSum","w1","nelderMead","nonZeroDelta","zeroDelta","minErrorDelta","minTolerance","rho","chi","psi","sigma","maxDiff","simplex","updateSimplex","sortOrder","centroid","reflected","contracted","expanded","iteration","sortedSimplex","worst","shouldReduce","wolfeLineSearch","pk","phi0","phiPrime0","phi_old","phiPrime","a_lo","a_high","phi_lo","conjugateGradient","initial","delta_k","beta_k","SMALL","stats","intersectionPoints","getIntersectionPoints","innerPoints","containedInCircles","arcArea","polygonArea","arcs","getCenter","angleDiff","circleArea","smallest","disjoint","circleCircleIntersection","circleOverlap","venn","initialLayout","bestInitialLayout","loss","lossFunction","addMissingAreas","setids","setid","distanceFromIntersectArea","ids","pairs","getDistanceMatrices","sets","constraints","constrainedMDSGradient","fxprime","xi","yi","xj","yj","dij","squaredDistance","greedyLayout","constrained","constrainedMDSLayout","constrainedLoss","greedyLoss","restarts","matrices","norm","setOverlaps","mostOverlapped","positioned","isPositioned","positionSet","setIndex","extraPoints","bestLoss","bestPoint","localLoss","overlaps","getCircles","indices","getBoundingBox","minMax","scaleSolution","solution","xRange","yRange","xScaling","yScaling","xOffset","yOffset","scaled","circlePath","intersectionAreaPath","wide","Venn","vennData","setsValue","pathFunc","setCircles","initializedData","transformData","WordCloudTransform","indicatorShape","pointerStyle","pinStyle","pointerShape","resPointerStyle","pinShape","resPinStyle","invertedPoints","newCoordinate","newTransformations","newPoints","pointerAttrs","pinAttrs","indicatorGroup","DEFAULT_INDICATOR_OPTIONS","DEFAULT_TEXT_OPTIONS","getGaugeData","_target","_total","getTextContent","Gauge","targetData","totalData","indicatorStyle","DensityShape","SZn","HeatmapShape","LiquidShape","newData","contentStyle","Category10","Category20","BandScale","LinearScale","OrdinalScale","IdentityScale","PointScale","TimeScale","LogScale","PowScale","ThresholdScale","QuantileScale","QuantizeScale","SqrtScale","SequentialScale","ConstantScale","colorDefault","colorBlack","colorWhite","colorStroke","colorBackground","padding1","padding2","padding3","alpha90","alpha65","alpha45","alpha25","alpha10","category10","category20","sizeDefault","Light","Classic","Dark","ClassicDark","Academy","formatDecimal","formatDecimalParts","coefficient","formatGroup","grouping","thousands","formatNumerals","numerals","re","formatSpecifier","specifier","FormatSpecifier","formatTrim","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","identity$2","formatLocale","locale","currencyPrefix","currencySuffix","decimal","minus","nan","newFormat","comma","trim","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatPrefix","defaultLocale","createComponent","titleContent","inferComponentLayout","userDefinitions","preset","G2Layout","subOptions","LegendCategoryLayout","scaleOf","isVertical","inferComponentShape","component","userDefinedSize","userDefinedLength","bboxSize","bboxLength","defaultLength","adaptor","reservedKeys","styles","rotateAxis","eulerAngles","sizeOf","createFisheye","tickPoint","ticksOf","createInset","defaultTickFormatter","tickFilter","filteredTicks","applyInset","applyFisheye","inferGridLength","inferLabelOverlap","labelAutoRotate","labelAutoHide","labelAutoEllipsis","labelAutoWrap","finalTransforms","addToTransforms","inferArcStyle","common","inferGrid","infer3DAxisLinearOverrideStyle","inferAxisLinearOverrideStyle","innerR","outerR","actualCx","actualCy","getAxisXDomainLength","controllAngleCount","ArcAxisComponent","important","indexBBox","axisTheme","axisArc","AxisComponent","inferThemeStyle","baseStyle","positionStyle","channelStyle","inferDefaultStyle","themeStyle","LinearAxisComponent","actualPosition","internalAxisStyle","threeDOverrideStyle","finalAxisStyle","axisFactor","useDefinedLabelFormatter","userDefinedLabelFilter","normalizedOptions","LinearAxis","ArcAxis","AxisX","axisX","AxisY","axisY","inferTitleTransform","internalOrientation","inferAxisStyle","radar","radarTheme","AxisRadar","inferShape","markState","shapeScale","colorScale","shapeScale1","targetShape","inferItemMarker","library","itemMarker","shapeOf","inferItemMarkerOpacity","inferItemMarkerSize","inferCategoryStyle","itemMarkerSize","finalLabelFormatter","colorOf","inferLegendShape","LegendCategory","cols","finalLayout","legendStyle","legendTheme","categoryStyle","layoutWrapper","updateShapeDimensions","finalSize","inferContinuousShape","getFormatter","getQuantizeOrQuantileConfig","getThresholdConfig","createColorScale","getLinearConfig","sizeScale","opacityScale","definedScale","domainMin","domainMax","inferContinuousConfig","LegendContinuous","LegendContinuousBlock","LegendContinuousSize","LegendContinuousBlockSize","inferStyleByAlign","subtitle","subtitleStyle","TitleComponent","constrain","isOrdinalScale","ratioX","selectionOf","abstractDomain","domainX","domainY","abstractOf","maybeStep","pixelsOf","AX","AY","sliderTheme","defaultFormatter","SliderComponent","inferSparklineData","markValue","slider","SliderX","SliderY","scrollbarTheme","mainSize","actualSize","ScrollbarComponent","ScrollbarX","ScrollbarY","Legends","ScaleInX","strokeOpacity","ScaleOutX","ScaleInY","PolarScaleInY","__data__","pathForConversion","createArcPath","convertedPathDefinition","RectangularScaleInY","ScaleOutY","FadeIn","FadeOut","attributeOf","attributeKeys","localBBoxOf","normalizeSplit","shapeToShape","timeEffect","fromTransform","toTransform","replaceChild","maybePath","hasUniqueString","hasSubPath","shape2path","oneToOne","fromName","toName","fromPath","toPath","pathShape","oneToMultiple","multipleToOne","Morphing","fl","WaveIn","ZoomIn","ZoomOut","PathIn","GrowInX","GrowInY","MAIN_LAYER_CLASS_NAME","LABEL_LAYER_CLASS_NAME","ELEMENT_CLASS_NAME","VIEW_CLASS_NAME","PLOT_CLASS_NAME","COMPONENT_CLASS_NAME","LABEL_CLASS_NAME","AREA_CLASS_NAME","generatePath$6","generatePath$5","rxInPixels","ryInPixels","generatePath$4","startOffsetX","startOffsetY","endOffsetX","endOffsetY","generatePath$3","nextSegment","useStartOffset","useEndOffset","generatePath$2","generatePath$1","generatePath","Plugin","pathGeneratorFactory","tmpVec3a","tmpVec3b","tmpVec3c","CanvasPickerPlugin","worldTransform","isClipPath","invertWorldMat","localPosition","topmost","pickedDisplayObjects","hitTestList_1","hitTestList_1_1","isHitOriginShape","isHitClipPath","isPointInPath$7","absDistance","ellipseDistance","squareX","squareY","isPointInPath$6","halfLineWith","inBox","inRect","inArc","inLine","linePointToLine","inPolyline","isClose","dcmp","onSegment","inPolygon","isHit","inPolygons","isPointInPath$5","isPointInStroke","qDistance","quadPointDistance","cDistance","cubicPointDistance","prePointInCubic","cDistance_1","isPointInPath$4","isPointInPath","renderingPluginContext","isPointInPath$3","isPointInPath$2","isPointInPath$1","lineWidthForHitTesting","inRectWithRadius","radiusArray","trueFunc","pointInPathPickerFactory","CanvasRendererPlugin","canvasRendererPluginOptions","contextService","handleCulled","dirtyObjectNumThreshold","dirtyObjectRatioThreshold","rendered","renderByZIndex","sorted","mat4.fromScaling","dirtyRenderBounds","dirtyRect","bl","minx","miny","maxx","maxy","ix","iy","iwidth","iheight","enableDirtyRectangleRenderingDebug","dirtyObjects","canvasContext","restoreStack","styleRenderer","generatePath_1","dirtyRectangle","lineDash","lineDashOffset","aabbs","DefaultRenderer","imagePool","fillRule","lineCap","lineJoin","miterLimit","isFillTransparent","hasFilter","hasShadow","isInnerShadow","shouldDrawShadowWithStroke","setShadowAndFilter","oldFilter","$offscreenCanvas","offscreenCanvasContext_1","restoreStack_1","canvasPattern","parsedColor","ImageRenderer","iw","ih","TextRenderer","lineMetrics","formattedTextBaseline","linePositionY","linePositionX","isStroke","currentTextAlign","currentPosition","stringArray","previousWidth","currentChar","currentGlobalAlpha","applyOpacity","RectRenderer","CircleRenderer","EllipseRenderer","LineRenderer","PolylineRenderer","PolygonRenderer","PathRenderer","defaultRenderer","defaultStyleRendererFactory","DOMInteractionPlugin","onPointerMove","ev","onPointerUp","onPointerDown","onPointerOver","onPointerOut","onPointerCancel","onPointerWheel","onClick","addPointerEventListener","addTouchEventListener","addMouseEventListener","removePointerEventListener","removeTouchEventListener","removeMouseEventListener","CANVAS_CAMERA_ID","HTMLRenderingPlugin","nativeHTMLMap","setTransform","$el_1","handleCanvasResize","doc","$canvas","$container","cameraId","$existedCamera","$camera","$existedElement","borderColor","ImagePool","patternKey","needScaleWithDPR","LoadImagePlugin","calculateWithAspectRatio","imageWidth","imageHeight","keepAspectRatio_1","Canvas2DContextService","encoderOptions","ContextRegisterPlugin","Renderer","ImageLoader.Plugin","CanvasPathGenerator.Plugin","CanvasRenderer.Plugin","DomInteraction.Plugin","CanvasPicker.Plugin","HTMLRenderer.Plugin","DragndropPlugin","dragndropPluginOptions","handlePointerdown","isDocument","draggableEventTarget","dragstartTriggered_1","dragstartTimeStamp_1","dragstartClientCoordinates_1","currentDroppable_1","lastDragClientCoordinates_1","handlePointermove_1","timeElapsed","distanceMoved","elementsBelow","elementBelow","droppableBelow","stopDragging","originalPointerUpEvent","WILDCARD","wildcardEvents","doEmit","es","ChartEvent","LEGEND_INFER_STRATEGIES","isMatrix","transformer","extend3D","adjustAngle","mat3.fromTranslation","mat3.fromScaling","reflectX","reflectY","mat3.fromRotation","helix","x_1","y_1","y_2","cot","shearX","shearY","fisheyeTransform","focus","distortion","fisheyeUntransform","isVisual","fisheyeX","normalizedFocusX","fx","fisheyeY","normalizedFocusY","fisheye","fisheyeCircular","cartesian3D","v3","translate3D","transpose3D","scale3D","Coordinate","matrixes","transforms","transformations_1","transformations_1_1","createTransformer","transform_1","mat3.mul","mat3.invert","mat3.clone","vector3","Coordinate3D","mat4.mul","vector4","useDefaultAdaptor","useOverrideAdaptor","mergeData","dataDescriptor","dataValue","SpaceLayer","viewX","viewY","viewWidth","viewHeight","layerData","SpaceFlex","flexData","mainStart","crossStart","totalSize","sizes","newChildren","View","viewData","viewScale","viewAxis","viewLegend","viewEncode","viewTransform","marks","legend","Mark","isStatic","interaction","parentKey","viewStyle","Container","setScale","shareSize","flexDomain","inferColor","discovered","encodeColor","scaleColor","legendColor","cl","domainColor","setAnimation","setStyle","toCell","setData","cellData","setChildren","subLayout","subLayoutRect","createGuideX","createGuideXRect","createGuideY","createGuideYRect","childOptions","facetScale","originY","shareData","viewKey","encodeX","facetScaleColor","facetDomainColor","visualData","bboxs","facetData2d","maxDataDomain","facets","normalizedChildren","facet","facetData","isFacet","guideY","guideX","defaultScale","newAxis","createGuide","createInnerGuide","guide","rowIndex","rowValuesLength","columnIndex","columnValuesLength","FacetRect","defaultAxis","$x","$y","RepeatMatrix","setCoordinate","setEncode","createGuideFacetCircle","subLayoutFacetCircle","ir","FacetCircle","iterationCount","keyframeCount","TimingKeyframe","prevIndex","GeoPath","epsilon2","quarterPi","radians","atan","exp","tan","streamGeometry","stream","streamGeometryType","streamObjectType","features","coordinates","streamLine","streamPolygon","geometries","geoStream","spherical","cosPhi","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","cartesianNormalizeInPlace","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","cosRadius","sinRadius","circleRadius","clipBuffer","pointEqual","Intersection","clipRejoin","compareIntersection","startInside","isSubject","longitude","polygonContains","sinPhi","winding","ring","point0","lambda0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","phi1","absDelta","antimeridian","phiArc","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","lineStart","lineEnd","pointRing","ringStart","ringEnd","pointLine","clean","ringSegments","validSegment","clipAntimeridian","clipAntimeridianLine","clipAntimeridianInterpolate","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","clipCircle","smallRadius","notHemisphere","c0","v00","two","pa","pb","n1","n2","n2n2","n1n2","n1xn2","uu","meridian","clipMax","clipMin","clipRectangle","corner","comparePoint","activeStream","bufferStream","x__","y__","v__","x_","y_","v_","clipStream","polygonStart","polygonEnd","polygonInside","cleanInside","linePoint","graticuleX","graticuleY","graticule","graticule10","identity$1","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","areaPointFirst","areaPoint","boundsStream","boundsPoint","Z0","Z1","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","lengthSum","lengthRing","lengthStream","lengthPointFirst","lengthPoint","cacheDigits","cacheAppend","cacheRadius","cacheCircle","PathString","geoPath","projection","pointRadius","projectionStream","contextStream","pathArea","pathMeasure","pathBounds","pathCentroid","TransformStream","fit","fitBounds","fitExtent","fitSize","fitWidth","fitHeight","cosMinDistance","resample","project","delta2","resampleNone","resampleLineTo","phi2","lambda2","dz","lambda00","c00","resampleStream","ringPoint","transformRadians","transformRotate","scaleTranslate","scaleTranslateRotate","cosAlpha","sinAlpha","ai","bi","ci","fi","projectionMutator","projectAt","preclip","postclip","projectResample","projectTransform","projectRotateTransform","cacheStream","recenter","conicProjection","cylindricalEqualAreaRaw","conicEqualAreaRaw","sy0","r0y","conicEqualArea","albers","multiplex","streams","albersUsa","lower48","lower48Point","alaska","alaskaPoint","hawaii","hawaiiPoint","pointStream","azimuthalRaw","azimuthalInvert","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEqualArea","azimuthalEquidistantRaw","azimuthalEquidistant","mercatorRaw","mercator","mercatorProjection","clipExtent","reclip","tany","conicConformalRaw","conicConformal","equirectangularRaw","equirectangular","conicEquidistantRaw","gy","conicEquidistant","A1","A2","A3","A4","equalEarthRaw","l6","fpy","equalEarth","gnomonicRaw","gnomonic","sa","naturalEarth1Raw","phi4","naturalEarth1","orthographicRaw","orthographic","stereographicRaw","stereographic","transverseMercatorRaw","transverseMercator","normalizeProjection","d3Projection","mergeGeoJSON","gjs","gj","normalizeGeoJSON","setProjectionOptions","setProjectionSize","defaultOutline","geoNodes","isGeoPath","setFitExtent","setFitWidth","normalizeDataSource","geoGraticule10","GeoView","projectionOptions","createProjection","Geo","visualPoint","normalizeInvert","dataOf","markKey","seriesIndex","selectedMark","maybeRoot","rootOf","maybeComponentRoot","maybeElementRoot","maybeLabelRoot","bubblesEvent","elementRoot","componentRoot","babelRoot","elementType","markType","e1","Event","dblclick","pointertap","pointerdown","pointerup","pointerover","pointerout","pointermove","pointerenter","pointerleave","pointerupoutside","dragstart","drag","dragend","dragenter","dragleave","dragover","drop","builtinlib","AxisLinear","AxisArc","LabelShape","useLibrary","publicLibrary","currentLibrary","documentOf","createCoordinate","partialOptions","useCoordinate","partialTransform","inferCoordinate","isCartesian3D","coordinate2Transform","isTransform","coordOf","isReflect","isReflectY","Accent","Dark2","Paired","Pastel1","Pastel2","Set1","Set2","Set3","Tableau10","color_formatHex8","clampi","clampa","rgb_formatHex8","clamph","clampt","E","EB","BC_DA","cubehelixConvert","Cubehelix","cubehelix","cosh","sinh","t3","basis$1","exponential","hue","gamma","nogamma","rgbGamma","colorRgb","rgbSpline","spline","rgbBasis","cubehelixGamma","colorCubehelix","cubehelixLong","ramp$1","scheme","interpolateRgbBasis","ramp","cividis","interpolateCubehelixLong","warm","cool","rainbow","ts","pi_1_3","pi_2_3","sinebow","turbo","viridis","magma","inferno","plasma","inferScale","inferScaleType","expectedDomain","inferScaleDomain","actualDomain","maybeRatio","inferScaleOptions","inferScaleRange","scaledValue","scaleName","scaleInstance","collectScales","states","components","NONE_STATIC_KEYS","nameScale","inferChannelsForComponent","staticScale","independent","guide1","options1","useRelation","relations","funcRelations","valueRelations","valueOutput","verify","outputValue","outputFunc","assignScale","newKey","useRelationScale","useScale","conditionalize","syncFacetsScales","syncFacetsScaleByChannel","syncedD","isQuantitativeScale","isDiscreteScale","clampQuantitativeScale","clampDiscreteScale","quantitative","asOrdinalType","isOrdinal","isTemporal","asQuantitativeType","maybeMinMax","inferDomainQ","inferDomainC","inferDomainO","inferDomainS","gradientColors","rangeMin","rangeMax","categoricalColors","inferRangeQ","inferOptionsQ","inferOptionsC","inferOptionsS","usePalette","c10","c20","defaultPalette","interpolatedColors","fullName","d3ScaleChromatic","schemeColors","inferPadding","isQuantitative","some","isPosition","isValidScale","isValidDomain","isValidRange","ContinuousScale","DistributionScale","DiscreteScale","inferComponent","createGuideComponent","displayedScales","sliders","inferScrollableComponents","props","defaultOrientation","defaultOrder","defaultCrossPadding","titleOptions","inferComponentsType","relativeScales","defaultPlane","DCP","guideOptions","guides","partialGuide","inferComponentPositionAndOrientation","defaultPadding","renderComponent","useGuideComponent","normalizeComponents","groupComponents","DL","emptyLength","emptyCount","inferLegendComponentType","isConstantSize","accepts","constants","nonConstants","fieldScales","scalesByField","scs","combination","getScaleType","componentType","accords","accord","inferAxisComponentType","availableScales","lastPolar","lastRadial","matchPosition","inferAxisPositionAndOrientation","ordinalPosition","ordinalPositionAndOrientation","inferScrollableType","normalized","channelName","scrollbar","computeComponentSize","computeAxisSize","computeGroupSize","computeContinuousLegendSize","computeCategoryLegendSize","computeSliderSize","computeTitleSize","computeScrollbarSize","maxCrossPadding","computeLabelSize","subtitleBBox","styleOf","handleIconSize","titleSpacing","createScale","labelBBoxes","computeLabelsBBox","paddingTick","maxLabelWidth","maxLabelHeight","overflowX","computeTitleBBox","legendContinuous","ribbonStyles","handleIconStyles","crossSize0","legendCategory","defaultTitle","specifiedTitle","itemSpacing","maxCols","maxRows","getRows","getCols","widthOf","maxPos","labelsOf","labelStyles","normalizeStyle","isFalsy","offsetOf","normalizeLabel","processAxisZ","axisZ","computeLayout","computeInset","MIN_CONTENT_RATIO","maybeClamp","pl0","pr0","shrinkSize","roughPadding","rpt","rpb","horizontalPadding","computePadding","pl","pr","verticalPadding","pt0","pb0","pt","computeRoughPlotSize","maybeAuto","isPolarOptions","isRadarOptions","axes","maxLabelSpacing","titleBBoxes","titleSize","positionComponents","defaultSizeOf","autoSizeOf","maybeHide","minOrder","placeComponents","createSection","nonEntityComponents","entityComponents","placeNonEntityComponents","placePaddingArea","plotWidth","centerSection","axisComponents","nonAxisComponents","placeNonEntityAxis","placeCenter","placeAxisRadar","placeArcLinear","placeAxisParallel","placeAxisArcInner","placeAxisArcOuter","placeAxisParallelHorizontal","placeAxisParallelVertical","mainStartKey","mainStartValue","crossStartKey","crossStartValue","mainSizeKey","mainSizeValue","crossSizeKey","crossSizeValue","isLarge","crossSizeOf","small","bigger","crossStartOf","startValue","j0","applyDefaults","applyDataTransform","useData","normalizedDataSource","flatEncode","flattenEncode","inferChannelsType","typedEncode","isTypedChannel","inferChannelType","maybeVisualChannel","newEncode","extractColumns","createColumnOf","valuedEncode","normalizeTooltip","extractTooltip","valueFormatter","normalizedValueFormatter","definedChannel","channelField","name1","newTooltip","maybeArrayField","arrayColumns","addGuideToScale","eachGuide","axisChannels","scrollbarOptions","maybeNonAnimate","isField","initializeMark","partialMark","partialProps","transformedMark","applyMarkTransform","channelDescriptors","nameChannels","scaleType","scaleKey","isConstant","finalRange","useEncode","fieldOf","useTransform","preInference","postInference","plot","useComposition","useInteraction","staticMarks","typeOf","composite","isMark","isStandardView","isStaticMark","views","viewNode","nodeState","nodeGenerators","initializeState","initializeView","transformedNodes","initializeMarks","nodeT","applyTransform","enterContainer","updateContainer","applyTranslate","plotView","interactions","viewInstanceof","viewContainer","updateInteractions","oldStore","store","setState","createUpdateView","updateTypes","newOptions","updateType","updateViewInstances","nameInteraction","typeOptions","inferInteraction","typeOption","prevInteraction","useThemeInteraction","enterViewInstances","nodeGenerator","sizedNode","finished","cancel","definedInteraction","createInteraction","createDefinedInteraction","updates","newView","updateInteraction","interactionOptions","applyInteraction","flattenOptions","transformMarks","mergedOptions","bubbleOptions","transformedOptions","viewCoordinate","viewInteraction","markCoordinates","markInteractions","markViewStyles","newInteraction","newStyle","useMark","createMark","flattenMarks","newMark","useTheme","partialTheme","partialMarks","inferTheme","markAndState","initializedMark","scaleChannels","FV","useLabelTransform","inferComponentScales","framedStyle","scaleDescriptors","createChildren","dataDomain","modifier","markScaleInstance","calcPoints","filterValid","titleOf","itemsOf","si","markChildren","areaKeys","sizeKeys","areaStyles","areaSizes","styleArea","areaLayouts","pw","ph","animationExtent","computeAnimationExtent","componentAnimateOptions","componentsTransitions","preserve","newComponent","updateBBox","updateLayers","applyClip","animateBBox","shapeFunction","createMarkShapeFunction","enterFunction","createEnterFunction","updateFunction","createUpdateFunction","exitFunction","createExitFunction","facetElements","selectFacetElements","maybeFacetElement","fromElements","toElements","plotLabel","labelLayer","labelShapeFunction","labelDescriptor","labelOptions","createLabelShapeFunction","labelOption","getLabels","labelShapes","labelGroups","labelIndex","seriesKey","getLocalBounds","normalizeLabelSelector","definedIndex","cloneElement","useShape","abstractData","defaultLabelShape","shapeContext","abstractStyle","abstractOptions","visualOptions","shapeOptions","getDefaultsStyle","minDelay","defaultUpdateType","defaultUpdateDuration","defaultUpdateDelay","defaultEnterType","defaultEnterDuration","defaultEnterDelay","defaultExitType","defaultExitDuration","defaultExitDelay","updateDuration","updateDelay","enterType","enterDuration","enterDelay","exitDuration","exitDelay","exitType","facetClassName","elementClassName","originOf","prePlot","newPlot","defaultShape","shapeLibrary","styleShape","abstractDatum","visualStyle","shapeName","markTheme","createAnimationFunction","createShape","useAnimation","defaultAnimation","defaultEffectTiming","shapeMap","inferKeys","nodeParent","nodeIndex","CanvasRenderer","DragAndDropPlugin","GCanvas","keyed","normalizeContainer","isDestroyCanvas","destroyAllInteractions","viewGroups","selectG2Elements","selectFacetG2Elements","viewInstances","selectFacetViews","selectPlotArea","bboxOf","mousePosition","isOutX","isOutY","brushMousePosition","boundsOfBrushArea","createColorKey","createXKey","createDatumof","useState","setAttribute","STATES","ORIGINAL","updateState","original","stateStyle","mixedStyle","currentValue","initState","isEmptyObject","mergeState","selectedState","createValueof","elementIndex","fa","fe","renderLink","LINK_CLASS_NAME","pointsOf","pathPointsOf","P0","P1","sortedElements","e0","d3Path","offsetTransform","amid","renderBackground","BACKGROUND_CLASS_NAME","extentOf","half","sizeXOf","sizeYOf","bandShapeOf","cloneShapeOf","isOrdinalShape","setCursor","restoreCursor","selectElementByData","elementHighlight","elementsof","elementSet","keyGroup","appendLink","removeLink","appendBackground","removeBackground","isBackground","elementStyle","removeState","hasState","groupSet","delayUnhighlighted","unhighlighted","onRest","onHighlight","ElementHighlight","createGroup","plotArea","ElementHighlightByX","ElementHighlightByColor","elementSelect","single","clear","singleSelect","multipleSelect","hasSelectedGroup","onSelect","selectedData","onUnSelect","ElementSelect","ElementSelectByX","ElementSelectByColor","maybeTransform","normalizeY","newNormalizeY","markName","ChartIndex","trailing","sortedX","keyLabels","dateByFocus","normalizedX","updateRule","updateBasisByRerender","clonedOptions","lineMark","updateBasisByTranslate","updateBasis","maybeCoordinate","newFisheye","updateFocus","getContainer","mount","getBounding","getContainerOffset","container1","container2","createTooltip","containerOffset","tooltipElement","TooltipComponent","showTooltip","canvasContainer","hideTooltip","destroyTooltip","showUndefined","singleItem","itemColorOf","groupNameOf","invertAble","valueName","groupItems","definedItems","useGroupName","updateRuleY","plotHeight","mainWidth","mainHeight","transposed","createLine","ruleY","hideRuleY","updateMarker","markers","hideMarker","interactionKeyof","maybeValue","isEmptyTooltipData","hasSeries","seriesTooltip","sortFunction","filterFunction","crosshairs","disableNative","_style","seriesElements","itemElements","seriesX","minA","maxA","minB","maxB","midA","midB","elementSortedX","abstractX","indexByFocus","isOnlyOneElement","elementsByFocus","filtered","seriesData","mouse","selectedItems","selectedSeriesElements","selectedSeriesData","SX","closestX","filteredSeriesData","selectedElements","tooltipData","ruleStyle","markerStyles","onTooltipShow","onTooltipHide","onTooltipDisable","removeEventListeners","onTooltipEnable","addEventListeners","shared","defaultSeries","defaultShowCrosshairs","facetInstances","CATEGORY_LEGEND_CLASS_NAME","CONTINUOUS_LEGEND_CLASS_NAME","LEGEND_ITEMS_CLASS_NAME","LEGEND_MAKER_CLASS_NAME","LEGEND_LABEL_CLASS_NAME","markerOf","labelOf","legendsOf","legendsContinuousOf","legendClearSetState","legendFilterOrdinal","legends","itemClick","itemPointerenter","itemPointerout","unselected","setM","removeM","setL","removeL","selectedValues","updateLegendState","onFilter","specifiedChannel","onEnd","legendFilterContinuous","onValueChange","filterView","allChannels","viewOptions","newMarks","newTransform","filterFacets","LegendFilter","contexts","channelsOf","removes","remove","LegendHighlight","channelOf","destroys","datumOf","elementGroup","legendState","inactive","highlight","highlightItem","itemPointerover","onUnHighlight","minX1","minY1","maxX1","maxY1","minX2","minY2","maxX2","maxY2","normalizeBounds","ResizableMask","renders","renderRect","handleNRender","handleNStyle","handleERender","handleEStyle","handleSRender","handleSStyle","handleWRender","handleWStyle","handleNWRender","handleNWStyle","handleNERender","handleNEStyle","handleSERender","handleSEStyle","handleSWRender","handleSWStyle","renderHandle","renderNode","appendHandle","handleRender","brush","brushed","brushended","brushcreated","brushstarted","brushupdated","brushRegion","selectedHandles","moveStart","creating","initMask","initReverseMask","initNormalMask","removeMask","emit","updateMask","fx1","updateReverseMask","updateNormalMask","moveMask","currentStart","currentEnd","handles","isMask","isSelection","isHandle","selectSiblingViews","brushKey","selectSiblingContainers","selectSiblingOptions","brushHighlight","elementof","siblingsof","optionalExtent","siblingElements","brushStyle","clonedElement","rootWidth","rootHeight","ordinalX","ordinalY","sibling","ex1","ey1","seriesBrushend","seriesBrushed","brushHandler","onRemove","preBrushDestroy","BrushHighlight","defaultStates","brushXRegion","BrushXHighlight","brushYRegion","BrushYHighlight","AXIS_CLASS_NAME","AXIS_LINE_CLASS_NAME","AXIS_MAIN_CLASS_NAME","AXIS_HOT_AREA_CLASS_NAME","axesOf","lineOf","mainGroupOf","boundsOfAxis","verticalBrush","axisLine","lineX","horizontalBrush","lineY","brushAxisHighlight","elementsOf","axisExtent","indexDomain","initIndexDomain","updateElement","clearElement","selected","createBrush","hotZone","BrushAxisHighlight","preTimeStamp","timeStamp","brushFilter","isDblclick","BrushFilter","hideX","hideY","filtering","BrushXFilter","BrushYFilter","SLIDER_CLASS_NAME","filterDataByDomain","channel0","channel1","abstractValue","SliderFilter","initDomain","setValue","getInitValues","sliderHandler","emitHandlers","channelDomain","isX","ratioY","domainsOf","domain0","domain1","initValue","emitHandler","SCROLLBAR_CLASS_NAME","ScrollbarFilter","defaultTipStyle","isTipText","Poptip","tipStyle","tips","mouseX","mouseY","tipELement","tip","getElements","DEFAULT_BREADCRUMB_STYLE","TreemapDrillDown","drillDownOptions","originData","breadCrumb","breadCrumbStyle","breadCrumbActiveStyle","textGroup","drillDownClick","drillTexts","drillText","textSeparator","originalAttrs","strPath","filterData","newLayout","colorDomain","createDrillClick","changeStyleKey","createActive","parseAABB","min2","isInBounds","isOverflow","isOverlap","min1","max1","max2","OverlapHide","priority","displayLabels","dl","isSegmentIntersect","useMap","getBoundsWithoutConnector","connectorShape","OverlapDodgeY","maxError","setY0","setY","setH","setXX","iter","l0","newDelta","parseToRGB","getsRGB","getL","contrast","foreground","rb","bb","mostContrast","ContrastReverse","OverflowHide","corelib","DataFetch","DataInline","DataSortBy","DataSort","DataFilter","DataPick","DataRename","DataFold","DataSlice","DataCustom","DataMap","DataJoin","DataKDE","DataLog","ScaleLinear","ScaleOrdinal","ScaleBand","ScaleIdentity","ScalePoint","ScaleTime","ScaleLog","ScalePow","ScaleSqrt","ScaleThreshold","ScaleQuantile","ScaleQuantize","ScaleSequential","ScaleConstant","ChartFisheye","geolib","graphlib","plotlib","stdlib","Runtime","Chart","register","parseInt10","getContainerSize","wrapperWidth","wrapperHeight","widthPadding","heightPadding","bfs","currentNode","VIEW_KEYS","REMOVE_FLAG","CALLBACK_NODE","MIN_CHART_WIDTH","MIN_CHART_HEIGHT","removeContainer","normalizeRoot","autoFit","effectiveWidth","effectiveHeight","optionsOf","childValue","isComposition","composition","normalizeRootOptions","previousType","oldType","typeCtor","ctor","updateNode","appendNode","nodeOptions","updateRoot","definedType","rootOptions","oldNode","oldChildren","createEmptyPromise","defineValueProp","defineArrayProp","defineObjectProp","defineMixProp","defineNodeProp","hocMark","defineContainerProp","defineProps","descriptors","nodeProps","commonProps","markProps","compositionProps","CompositionNode","chart","MarkNode","chartView","G2_CHART_KEY","lib","finished1","compositions","Composition","KEYS","trailingResolve","trailingReject","fullClone","ReactDOM","version","reactRender","createRoot","mainVersion","toggleWarning","skip","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","MARK","modernRender","legacyRender","mountMapping","isTooltip","exist","shadowLoading","ele","shadowRoot","shadowDiv","shadowStyle","ChartLoading","loadingTemplate","shadow","React","renderLoading","ErrorBoundary","errorTemplate","nextProps","Fragment","isValidElement","jsxCode","jsxRegex","useChart","ChartClass","useRef","chartOptions","onReady","onEvent","toDataURL","downloadImage","imageName","base64","processConfig","useEffect","changeData","currentConfig","inputConfig","cloneDeep","chartInstance","NODE_INDEX_FIELD","CHILD_NODE_COUNT","NODE_ANCESTORS_FIELD","INVALID_FIELD_ERR_MSG","getField","defaultField","getAllNodes","ancestors","d3Hierarchy\n .partition","d3Hierarchy\n .hierarchy","SUNBURST_TYPE","SUNBURST_TYPE_FIELD","SUNBURST_PATH_FIELD","SUNBURST_ANCESTOR_FIELD","pathList","ancestorNode","nodeInfo","Sunburst","encodeOption","rectData","getElementsSunburst","DEFAULT_BREADCRUMB","DrillDown","textConfig","fixedColor","sunburstMark","rootText","childNodeCount","transformOptions","filterTransformed","VIEW_OPTIONS","CONFIG_SHAPE","getCustomTransform","SPECIAL_OPTIONS","mergeWithArrayCoverage","transformShape","extend_keys","transformConfig","annotation","TRANSFORM_OPTION_KEY","transformTarget","transformValue","deleteExcessKeys","deleteKeys","ANNOTATION_LIST","TRANSFORM_SIGN","arrayCoverage","objValue","srcValue","mergeWith","CHART_OPTIONS","SKIP_DEL_CUSTOM_SIGN","commonCallback","EXTEND_KEYS","available","GPolygon","Annotaion","elementsLayout","ConversionTag","firstX","firstY","firstHeigt","firstWidth","firstData","valuePath","preValue","elementDistance","tagLayout","halfSize","arrowVertexX","arrowVertexY","transformation","conversionLayout","VERTICAL_MARGIN","HORIZONTAL_MARGIN","AXIS_LABEL_PADDING","BidirectionalBarAxisText","allElementsLayout","uniqBy","textLayout","removeLabel","axisLayout","viewLayout","textNode","Controller","annotationOptions","annotationInstance","SOURCE_ATTRIBUTE_NAME","Plot","shapeStack","xField","hasStack","coordinateLayout","allCoordinateLayout","markBackground","domainMax_1","backgroundData","reisterShape","draw25DBar","pitch","Bar","draw25DColumn","colorField","yField_1","annotations","sharedScale","scaleKey_1","childAnnotations","DualAxes","compareField","isTransposed","seriesField","groupedData","emptyData","angleField","normalization","Pie","Scatter","Y_FIELD_KEY","TREND_FIELD","TREND_UP","TREND_DOWN","open_1","close_1","fallingFill","risingFill","open","close","isShadow","DEFAULT_COLORS","Stock","TinyLine","TinyArea","TinyColumn","transformOption","TinyProgress","TinyRing","Rose","START_KEY","END_KEY","WATERFALL_VALUE","linkStyle","Waterfall","transformHistogramConfig","binNumber","binWidth","targetTransform","Histogram","transformMark","boxType","defaultTransform","getTransformData","isSort","isArrayData","fieldData","numberData","getFieldColor","rangeField","measureField","targetField","mapField","rangesData","rangesMaxSize","measuresData","measuresMaxSize","targetsData","targetsMaxSize","rangesColor","measuresColor","targetsColor","datas","mapString","includes","layoutAdaptor","cfgAdaptor","measure","Bullet","maxAngle","RadialBar","CirclePacking","customTransform","child1","child2","paddingLeft_1","BidirectionalBar","DefaultTransformKey","setsField","Plots","Mix","BaseChart","forwardRef","ref","chartType","containerStyle","containerAttributes","loading","useImperativeHandle","AreaChart","BarChart","ColumnChart","LineChart","PieChart"],"mappings":"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EAAIkB,EAAE,CAAC,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,CAAC,EACtDlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,CAAC,EACtDlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,CAAC,EACrDlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,CAAC,EACrDlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,CAAC,EACtDlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,CAAC,EACtDlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,CAAC,EAAIkB,EAAE,EAAE,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,EAAE,EACvDlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,CAAC,EAAIkB,EAAE,EAAE,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,EAAE,EACvDlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,CAAC,EAAIkB,EAAE,CAAC,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,EAAE,EAAIlB,EAAE,EAAE,EAAIkB,EAAE,EAAE,EACxDlB,EAAE,CAAC,E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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,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,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965]}