@visactor/vgrammar-core 0.10.2 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/cjs/component/axis.js +1 -1
  2. package/cjs/component/axis.js.map +1 -1
  3. package/cjs/component/datazoom.js +23 -30
  4. package/cjs/component/datazoom.js.map +1 -1
  5. package/cjs/component/label.js +11 -11
  6. package/cjs/component/label.js.map +1 -1
  7. package/cjs/component/legend.js +4 -6
  8. package/cjs/component/legend.js.map +1 -1
  9. package/cjs/component/player.js +4 -12
  10. package/cjs/component/player.js.map +1 -1
  11. package/cjs/component/scrollbar.js +12 -24
  12. package/cjs/component/scrollbar.js.map +1 -1
  13. package/cjs/component/slider.js +1 -3
  14. package/cjs/component/slider.js.map +1 -1
  15. package/cjs/glyph/boxplot.js +34 -20
  16. package/cjs/glyph/boxplot.js.map +1 -1
  17. package/cjs/glyph/violin.js +18 -11
  18. package/cjs/glyph/violin.js.map +1 -1
  19. package/cjs/graph/animation/animation/clip.js +2 -2
  20. package/cjs/graph/animation/animation/clip.js.map +1 -1
  21. package/cjs/graph/animation/animation/grow-cartesian.js +11 -11
  22. package/cjs/graph/animation/animation/grow-cartesian.js.map +1 -1
  23. package/cjs/graph/animation/animation/grow-interval.js +18 -18
  24. package/cjs/graph/animation/animation/grow-interval.js.map +1 -1
  25. package/cjs/graph/animation/animation/grow-points.js +3 -3
  26. package/cjs/graph/animation/animation/grow-points.js.map +1 -1
  27. package/cjs/graph/animation/animation/grow-polar.js +8 -8
  28. package/cjs/graph/animation/animation/grow-polar.js.map +1 -1
  29. package/cjs/graph/animation/animation/move.js +12 -14
  30. package/cjs/graph/animation/animation/move.js.map +1 -1
  31. package/cjs/graph/animation/animation/update.js +1 -1
  32. package/cjs/graph/animation/animation/update.js.map +1 -1
  33. package/cjs/graph/animation/attribute.js +2 -2
  34. package/cjs/graph/animation/attribute.js.map +1 -1
  35. package/cjs/graph/attributes/helpers.js +9 -11
  36. package/cjs/graph/attributes/helpers.js.map +1 -1
  37. package/cjs/graph/attributes/transform.js +1 -1
  38. package/cjs/graph/attributes/transform.js.map +1 -1
  39. package/cjs/graph/element.js +1 -1
  40. package/cjs/graph/element.js.map +1 -1
  41. package/cjs/graph/layout/grid.js +1 -1
  42. package/cjs/graph/layout/grid.js.map +1 -1
  43. package/cjs/graph/mark/graphic.js +2 -2
  44. package/cjs/graph/mark/graphic.js.map +1 -1
  45. package/cjs/index.d.ts +1 -1
  46. package/cjs/index.js +1 -1
  47. package/cjs/index.js.map +1 -1
  48. package/cjs/interactions/brush-base.js +3 -5
  49. package/cjs/interactions/brush-base.js.map +1 -1
  50. package/cjs/interactions/view-navigation-base.js +3 -3
  51. package/cjs/interactions/view-navigation-base.js.map +1 -1
  52. package/cjs/interactions/view-roam.js +10 -10
  53. package/cjs/interactions/view-roam.js.map +1 -1
  54. package/cjs/interactions/view-scroll-mixin.js +1 -1
  55. package/cjs/interactions/view-scroll-mixin.js.map +1 -1
  56. package/cjs/interactions/view-zoom-mixin.js +2 -2
  57. package/cjs/interactions/view-zoom-mixin.js.map +1 -1
  58. package/cjs/parse/event.js +1 -2
  59. package/cjs/parse/event.js.map +1 -1
  60. package/cjs/parse/scale.js +5 -4
  61. package/cjs/parse/scale.js.map +1 -1
  62. package/cjs/parse/view.js +11 -10
  63. package/cjs/parse/view.js.map +1 -1
  64. package/cjs/view/View.js +12 -13
  65. package/cjs/view/View.js.map +1 -1
  66. package/cjs/view/animate.js +11 -11
  67. package/cjs/view/animate.js.map +1 -1
  68. package/cjs/view/mark.js +6 -10
  69. package/cjs/view/mark.js.map +1 -1
  70. package/es/component/axis.js +1 -1
  71. package/es/component/axis.js.map +1 -1
  72. package/es/component/datazoom.js +23 -26
  73. package/es/component/datazoom.js.map +1 -1
  74. package/es/component/label.js +11 -11
  75. package/es/component/label.js.map +1 -1
  76. package/es/component/legend.js +4 -6
  77. package/es/component/legend.js.map +1 -1
  78. package/es/component/player.js +4 -12
  79. package/es/component/player.js.map +1 -1
  80. package/es/component/scrollbar.js +7 -18
  81. package/es/component/scrollbar.js.map +1 -1
  82. package/es/component/slider.js +1 -3
  83. package/es/component/slider.js.map +1 -1
  84. package/es/glyph/boxplot.js +22 -19
  85. package/es/glyph/boxplot.js.map +1 -1
  86. package/es/glyph/violin.js +12 -10
  87. package/es/glyph/violin.js.map +1 -1
  88. package/es/graph/animation/animation/clip.js +2 -2
  89. package/es/graph/animation/animation/clip.js.map +1 -1
  90. package/es/graph/animation/animation/grow-cartesian.js +11 -11
  91. package/es/graph/animation/animation/grow-cartesian.js.map +1 -1
  92. package/es/graph/animation/animation/grow-interval.js +18 -18
  93. package/es/graph/animation/animation/grow-interval.js.map +1 -1
  94. package/es/graph/animation/animation/grow-points.js +3 -3
  95. package/es/graph/animation/animation/grow-points.js.map +1 -1
  96. package/es/graph/animation/animation/grow-polar.js +8 -8
  97. package/es/graph/animation/animation/grow-polar.js.map +1 -1
  98. package/es/graph/animation/animation/move.js +9 -9
  99. package/es/graph/animation/animation/move.js.map +1 -1
  100. package/es/graph/animation/animation/update.js +1 -1
  101. package/es/graph/animation/animation/update.js.map +1 -1
  102. package/es/graph/animation/attribute.js +2 -2
  103. package/es/graph/animation/attribute.js.map +1 -1
  104. package/es/graph/attributes/helpers.js +8 -11
  105. package/es/graph/attributes/helpers.js.map +1 -1
  106. package/es/graph/attributes/transform.js +1 -1
  107. package/es/graph/attributes/transform.js.map +1 -1
  108. package/es/graph/element.js +1 -1
  109. package/es/graph/element.js.map +1 -1
  110. package/es/graph/layout/grid.js +1 -1
  111. package/es/graph/layout/grid.js.map +1 -1
  112. package/es/graph/mark/graphic.js +2 -2
  113. package/es/graph/mark/graphic.js.map +1 -1
  114. package/es/index.d.ts +1 -1
  115. package/es/index.js +1 -1
  116. package/es/index.js.map +1 -1
  117. package/es/interactions/brush-base.js +3 -5
  118. package/es/interactions/brush-base.js.map +1 -1
  119. package/es/interactions/view-navigation-base.js +3 -3
  120. package/es/interactions/view-navigation-base.js.map +1 -1
  121. package/es/interactions/view-roam.js +10 -10
  122. package/es/interactions/view-roam.js.map +1 -1
  123. package/es/interactions/view-scroll-mixin.js +1 -1
  124. package/es/interactions/view-scroll-mixin.js.map +1 -1
  125. package/es/interactions/view-zoom-mixin.js +2 -2
  126. package/es/interactions/view-zoom-mixin.js.map +1 -1
  127. package/es/parse/event.js +1 -1
  128. package/es/parse/event.js.map +1 -1
  129. package/es/parse/scale.js +4 -4
  130. package/es/parse/scale.js.map +1 -1
  131. package/es/parse/view.js +11 -10
  132. package/es/parse/view.js.map +1 -1
  133. package/es/view/View.js +12 -13
  134. package/es/view/View.js.map +1 -1
  135. package/es/view/animate.js +11 -11
  136. package/es/view/animate.js.map +1 -1
  137. package/es/view/mark.js +6 -10
  138. package/es/view/mark.js.map +1 -1
  139. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/layout/grid.ts"],"names":[],"mappings":"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","file":"grid.js","sourcesContent":["import type { IBounds } from '@visactor/vutils';\nimport { Bounds, isValidNumber } from '@visactor/vutils';\nimport type { IGroupMark, ILayoutOptions, IMark, MarkGridItemSpec, MarkGridContainerSpec } from '../../types';\n\ninterface IGrid {\n rows: number[];\n columns: number[];\n rowGap: number;\n columnGap: number;\n}\n\nfunction parseTemplate(template: number | string | 'auto', total: number) {\n if (isValidNumber(template)) {\n return template;\n }\n const trimmedTemplate = template.trim();\n if (trimmedTemplate === 'auto') {\n // handle auto later\n return 0;\n } else if (trimmedTemplate.endsWith('%')) {\n const percent = parseFloat(trimmedTemplate.substring(0, trimmedTemplate.length - 1));\n if (isValidNumber(percent)) {\n return percent * total;\n }\n return 0;\n }\n return 0;\n}\n\nfunction computeGrid(layout: MarkGridContainerSpec, width: number, height: number): IGrid {\n const templateRows = layout.gridTemplateRows ?? [height];\n const templateColumns = layout.gridTemplateColumns ?? [width];\n const rowGap = layout.gridRowGap ?? 0;\n const columnGap = layout.gridColumnGap ?? 0;\n\n // compute simple cell size\n const rows = templateRows.map(row => parseTemplate(row, height));\n const columns = templateColumns.map(column => parseTemplate(column, width));\n\n // compute auto grid\n const rowLeftSize = Math.max(0, rows.reduce((left, row) => left - row, height) - rows.length * rowGap);\n const rowAuto = rowLeftSize / templateRows.filter(row => row === 'auto').length;\n const columnLeftSize = Math.max(\n 0,\n columns.reduce((left, column) => left - column, width) - columns.length * columnGap\n );\n const columnAuto = columnLeftSize / templateColumns.filter(column => column === 'auto').length;\n // accumulate grid size\n let lastRow = 0;\n const accumulateRows = rows.map((row, index) => {\n const finalRow = templateRows[index] === 'auto' ? rowAuto : row;\n const last = lastRow;\n lastRow += finalRow + rowGap;\n return last;\n });\n accumulateRows.push(lastRow);\n let lastColumn = 0;\n const accumulateColumns = columns.map((column, index) => {\n const finalColumn = templateColumns[index] === 'auto' ? columnAuto : column;\n const last = lastColumn;\n lastColumn += finalColumn + columnGap;\n return last;\n });\n accumulateColumns.push(lastColumn);\n\n return {\n rows: accumulateRows,\n columns: accumulateColumns,\n rowGap,\n columnGap\n };\n}\n\nfunction normalizeIndex(index: number, count: number) {\n return Math.min(index < 0 ? index + count : index - 1, count);\n}\n\nfunction normalizeStartEndIndex(start: number, end: number, count: number) {\n let finalStart = normalizeIndex(start, count);\n let finalEnd = normalizeIndex(end, count);\n if (!isValidNumber(start) && !isValidNumber(end)) {\n finalStart = 1;\n finalEnd = 2;\n } else if (!isValidNumber(start)) {\n finalEnd = normalizeIndex(finalStart + 1, count);\n } else if (!isValidNumber(end)) {\n finalStart = normalizeIndex(Math.max(0, finalEnd - 1), count);\n }\n if (finalStart > finalEnd) {\n const temp = finalEnd;\n finalEnd = finalStart;\n finalStart = temp;\n }\n return { start: finalStart, end: finalEnd };\n}\n\nfunction getCellBounds(grid: IGrid, rowStart: number, rowEnd: number, columnStart: number, columnEnd: number): Bounds {\n const rowCount = grid.rows.length;\n const columnCount = grid.columns.length;\n const { start: finalRowStart, end: finalRowEnd } = normalizeStartEndIndex(rowStart, rowEnd, rowCount);\n const { start: finalColumnStart, end: finalColumnEnd } = normalizeStartEndIndex(columnStart, columnEnd, columnCount);\n\n const x1 = grid.columns[finalRowStart];\n const x2 = grid.columns[finalRowEnd] - (finalColumnEnd === columnCount ? 0 : grid.columnGap);\n const y1 = grid.rows[finalColumnStart];\n const y2 = grid.rows[finalColumnEnd] - (finalRowEnd === rowCount ? 0 : grid.rowGap);\n return new Bounds().set(x1, y1, x2, y2);\n}\n\nexport const doGridLayout = (\n group: IGroupMark,\n children: IMark[],\n parentLayoutBounds: IBounds,\n options?: ILayoutOptions\n) => {\n const layout = group.getSpec().layout as MarkGridContainerSpec;\n const grid = computeGrid(layout, parentLayoutBounds.width(), parentLayoutBounds.height());\n children?.forEach(mark => {\n const markLayout = mark.getSpec().layout as MarkGridItemSpec;\n mark.layoutBounds = getCellBounds(\n grid,\n markLayout.gridRowStart,\n markLayout.gridRowEnd,\n markLayout.gridColumnStart,\n markLayout.gridColumnEnd\n );\n mark.commit();\n });\n};\n"]}
1
+ {"version":3,"sources":["../src/graph/layout/grid.ts"],"names":[],"mappings":"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","file":"grid.js","sourcesContent":["import type { IBounds } from '@visactor/vutils';\nimport { Bounds, isValidNumber } from '@visactor/vutils';\nimport type { IGroupMark, ILayoutOptions, IMark, MarkGridItemSpec, MarkGridContainerSpec } from '../../types';\n\ninterface IGrid {\n rows: number[];\n columns: number[];\n rowGap: number;\n columnGap: number;\n}\n\nfunction parseTemplate(template: number | string | 'auto', total: number) {\n if (isValidNumber(template)) {\n return template;\n }\n const trimmedTemplate = template.trim();\n if (trimmedTemplate === 'auto') {\n // handle auto later\n return 0;\n } else if (trimmedTemplate.endsWith('%')) {\n const percent = parseFloat(trimmedTemplate.substring(0, trimmedTemplate.length - 1));\n if (isValidNumber(percent)) {\n return percent * total;\n }\n return 0;\n }\n return 0;\n}\n\nfunction computeGrid(layout: MarkGridContainerSpec, width: number, height: number): IGrid {\n const templateRows = layout.gridTemplateRows ?? [height];\n const templateColumns = layout.gridTemplateColumns ?? [width];\n const rowGap = layout.gridRowGap ?? 0;\n const columnGap = layout.gridColumnGap ?? 0;\n\n // compute simple cell size\n const rows = templateRows.map(row => parseTemplate(row, height));\n const columns = templateColumns.map(column => parseTemplate(column, width));\n\n // compute auto grid\n const rowLeftSize = Math.max(0, rows.reduce((left, row) => left - row, height) - rows.length * rowGap);\n const rowAuto = rowLeftSize / templateRows.filter(row => row === 'auto').length;\n const columnLeftSize = Math.max(\n 0,\n columns.reduce((left, column) => left - column, width) - columns.length * columnGap\n );\n const columnAuto = columnLeftSize / templateColumns.filter(column => column === 'auto').length;\n // accumulate grid size\n let lastRow = 0;\n const accumulateRows = rows.map((row, index) => {\n const finalRow = templateRows[index] === 'auto' ? rowAuto : row;\n const last = lastRow;\n lastRow += finalRow + rowGap;\n return last;\n });\n accumulateRows.push(lastRow);\n let lastColumn = 0;\n const accumulateColumns = columns.map((column, index) => {\n const finalColumn = templateColumns[index] === 'auto' ? columnAuto : column;\n const last = lastColumn;\n lastColumn += finalColumn + columnGap;\n return last;\n });\n accumulateColumns.push(lastColumn);\n\n return {\n rows: accumulateRows,\n columns: accumulateColumns,\n rowGap,\n columnGap\n };\n}\n\nfunction normalizeIndex(index: number, count: number) {\n return Math.min(index < 0 ? index + count : index - 1, count);\n}\n\nfunction normalizeStartEndIndex(start: number, end: number, count: number) {\n let finalStart = normalizeIndex(start, count);\n let finalEnd = normalizeIndex(end, count);\n if (!isValidNumber(start) && !isValidNumber(end)) {\n finalStart = 1;\n finalEnd = 2;\n } else if (!isValidNumber(start)) {\n finalEnd = normalizeIndex(finalStart + 1, count);\n } else if (!isValidNumber(end)) {\n finalStart = normalizeIndex(Math.max(0, finalEnd - 1), count);\n }\n if (finalStart > finalEnd) {\n const temp = finalEnd;\n finalEnd = finalStart;\n finalStart = temp;\n }\n return { start: finalStart, end: finalEnd };\n}\n\nfunction getCellBounds(grid: IGrid, rowStart: number, rowEnd: number, columnStart: number, columnEnd: number): Bounds {\n const rowCount = grid.rows.length;\n const columnCount = grid.columns.length;\n const { start: finalRowStart, end: finalRowEnd } = normalizeStartEndIndex(rowStart, rowEnd, rowCount);\n const { start: finalColumnStart, end: finalColumnEnd } = normalizeStartEndIndex(columnStart, columnEnd, columnCount);\n\n const x1 = grid.columns[finalRowStart];\n const x2 = grid.columns[finalRowEnd] - (finalColumnEnd === columnCount ? 0 : grid.columnGap);\n const y1 = grid.rows[finalColumnStart];\n const y2 = grid.rows[finalColumnEnd] - (finalRowEnd === rowCount ? 0 : grid.rowGap);\n return new Bounds().set(x1, y1, x2, y2);\n}\n\nexport const doGridLayout = (\n group: IGroupMark,\n children: IMark[],\n parentLayoutBounds: IBounds,\n options?: ILayoutOptions\n) => {\n const layout = group.getSpec().layout as MarkGridContainerSpec;\n const grid = computeGrid(layout, parentLayoutBounds.width(), parentLayoutBounds.height());\n if (children) {\n children.forEach(mark => {\n const markLayout = mark.getSpec().layout as MarkGridItemSpec;\n mark.layoutBounds = getCellBounds(\n grid,\n markLayout.gridRowStart,\n markLayout.gridRowEnd,\n markLayout.gridColumnStart,\n markLayout.gridColumnEnd\n );\n mark.commit();\n });\n }\n};\n"]}
@@ -89,7 +89,7 @@ const registerSymbolGraphic = () => {
89
89
  exports.registerSymbolGraphic = registerSymbolGraphic;
90
90
 
91
91
  const registerTextGraphic = () => {
92
- (0, vrender_kits_1.registerText)(), factory_1.Factory.registerGraphic(enums_1.GrammarMarkType.text, vrender_core_1.createText);
92
+ (0, vrender_kits_1.registerText)(), (0, vrender_kits_1.registerRichtext)(), factory_1.Factory.registerGraphic(enums_1.GrammarMarkType.text, vrender_core_1.createText);
93
93
  };
94
94
 
95
95
  exports.registerTextGraphic = registerTextGraphic;
@@ -113,7 +113,7 @@ const registerCellGraphic = () => {
113
113
  exports.registerCellGraphic = registerCellGraphic;
114
114
 
115
115
  const registerIntervalGraphic = () => {
116
- (0, vrender_kits_1.registerRect)(), factory_1.Factory.registerGraphic(enums_1.GrammarMarkType.interval, vrender_core_1.createRect);
116
+ (0, vrender_kits_1.registerRect)(), (0, vrender_kits_1.registerArc)(), factory_1.Factory.registerGraphic(enums_1.GrammarMarkType.interval, vrender_core_1.createRect);
117
117
  };
118
118
 
119
119
  exports.registerIntervalGraphic = registerIntervalGraphic;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/mark/graphic.ts"],"names":[],"mappings":"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","file":"graphic.js","sourcesContent":["import { Factory } from '../../core/factory';\nimport { GrammarMarkType } from '../enums';\nimport { LargeRects } from './large-rects';\nimport { LargeSymbols } from './large-symbols';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport {\n registerCircle,\n registerArc,\n registerArc3d,\n registerPyramid3d,\n registerArea,\n registerGroup,\n registerImage,\n registerRect3d,\n registerLine,\n registerPath,\n registerRect,\n registerSymbol,\n registerText,\n registerPolygon,\n registerRichtext,\n registerGlyph\n} from '@visactor/vrender-kits';\nimport {\n createArc,\n createCircle,\n createArc3d,\n createPyramid3d,\n createArea,\n createGroup,\n createImage,\n createRect3d,\n createLine,\n createPath,\n createRect,\n createSymbol,\n createText,\n createPolygon,\n createRichText,\n createGlyph\n} from '@visactor/vrender-core';\n\nexport const registerCircleGraphic = () => {\n registerCircle();\n Factory.registerGraphic(GrammarMarkType.circle, createCircle);\n};\n\nexport const registerArcGraphic = () => {\n registerArc();\n Factory.registerGraphic(GrammarMarkType.arc, createArc);\n};\n\nexport const registerArc3dGraphic = () => {\n registerArc3d();\n Factory.registerGraphic(GrammarMarkType.arc3d, createArc3d);\n};\n\nexport const registerPyramid3dGraphic = () => {\n registerPyramid3d();\n Factory.registerGraphic(GrammarMarkType.pyramid3d, createPyramid3d);\n};\n\nexport const registerAreaGraphic = () => {\n registerArea();\n Factory.registerGraphic(GrammarMarkType.area, createArea);\n};\n\nexport const registerGroupGraphic = () => {\n registerGroup();\n Factory.registerGraphic(GrammarMarkType.group, createGroup);\n};\n\nexport const registerImageGraphic = () => {\n registerImage();\n Factory.registerGraphic(GrammarMarkType.image, createImage);\n};\n\nexport const registerLineGraphic = () => {\n registerLine();\n Factory.registerGraphic(GrammarMarkType.line, createLine);\n};\n\nexport const registerPathGraphic = () => {\n registerPath();\n Factory.registerGraphic(GrammarMarkType.path, createPath);\n};\n\nexport const registerRectGraphic = () => {\n registerRect();\n Factory.registerGraphic(GrammarMarkType.rect, createRect);\n};\n\nexport const registerRect3dGraphic = () => {\n registerRect3d();\n Factory.registerGraphic(GrammarMarkType.rect3d, createRect3d);\n};\n\nexport const registerRuleGraphic = () => {\n registerLine();\n Factory.registerGraphic(GrammarMarkType.rule, createLine);\n};\n\nexport const registerShapeGraphic = () => {\n registerPath();\n Factory.registerGraphic(GrammarMarkType.shape, createPath);\n};\n\nexport const registerSymbolGraphic = () => {\n registerSymbol();\n Factory.registerGraphic(GrammarMarkType.symbol, createSymbol);\n};\n\nexport const registerTextGraphic = () => {\n registerText();\n Factory.registerGraphic(GrammarMarkType.text, createText);\n};\n\nexport const registerPolygonGraphic = () => {\n registerPolygon();\n Factory.registerGraphic(GrammarMarkType.polygon, createPolygon);\n};\n\nexport const registerRichTextGraphic = () => {\n registerRichtext();\n Factory.registerGraphic(GrammarMarkType.richtext, createRichText);\n};\n\nexport const registerCellGraphic = () => {\n registerSymbol();\n Factory.registerGraphic(GrammarMarkType.cell, createSymbol);\n};\n\nexport const registerIntervalGraphic = () => {\n registerRect();\n Factory.registerGraphic(GrammarMarkType.interval, createRect);\n};\n\nexport const registerGlyphGraphic = () => {\n registerGlyph();\n Factory.registerGraphic(GrammarMarkType.glyph, createGlyph);\n};\n\nexport const registerLargeRectsGraphic = () => {\n registerPath();\n Factory.registerGraphic(GrammarMarkType.largeRects, (attrs: any) => {\n return new LargeRects(attrs) as unknown as IGraphic;\n });\n};\n\nexport const registerLargeSymbolsGraphic = () => {\n registerPath();\n Factory.registerGraphic(GrammarMarkType.largeSymbols, (attrs: any) => {\n return new LargeSymbols(attrs) as unknown as IGraphic;\n });\n};\n"]}
1
+ {"version":3,"sources":["../src/graph/mark/graphic.ts"],"names":[],"mappings":"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","file":"graphic.js","sourcesContent":["import { Factory } from '../../core/factory';\nimport { GrammarMarkType } from '../enums';\nimport { LargeRects } from './large-rects';\nimport { LargeSymbols } from './large-symbols';\nimport type { IGraphic } from '@visactor/vrender-core';\nimport {\n registerCircle,\n registerArc,\n registerArc3d,\n registerPyramid3d,\n registerArea,\n registerGroup,\n registerImage,\n registerRect3d,\n registerLine,\n registerPath,\n registerRect,\n registerSymbol,\n registerText,\n registerPolygon,\n registerRichtext,\n registerGlyph\n} from '@visactor/vrender-kits';\nimport {\n createArc,\n createCircle,\n createArc3d,\n createPyramid3d,\n createArea,\n createGroup,\n createImage,\n createRect3d,\n createLine,\n createPath,\n createRect,\n createSymbol,\n createText,\n createPolygon,\n createRichText,\n createGlyph\n} from '@visactor/vrender-core';\n\nexport const registerCircleGraphic = () => {\n registerCircle();\n Factory.registerGraphic(GrammarMarkType.circle, createCircle);\n};\n\nexport const registerArcGraphic = () => {\n registerArc();\n Factory.registerGraphic(GrammarMarkType.arc, createArc);\n};\n\nexport const registerArc3dGraphic = () => {\n registerArc3d();\n Factory.registerGraphic(GrammarMarkType.arc3d, createArc3d);\n};\n\nexport const registerPyramid3dGraphic = () => {\n registerPyramid3d();\n Factory.registerGraphic(GrammarMarkType.pyramid3d, createPyramid3d);\n};\n\nexport const registerAreaGraphic = () => {\n registerArea();\n Factory.registerGraphic(GrammarMarkType.area, createArea);\n};\n\nexport const registerGroupGraphic = () => {\n registerGroup();\n Factory.registerGraphic(GrammarMarkType.group, createGroup);\n};\n\nexport const registerImageGraphic = () => {\n registerImage();\n Factory.registerGraphic(GrammarMarkType.image, createImage);\n};\n\nexport const registerLineGraphic = () => {\n registerLine();\n Factory.registerGraphic(GrammarMarkType.line, createLine);\n};\n\nexport const registerPathGraphic = () => {\n registerPath();\n Factory.registerGraphic(GrammarMarkType.path, createPath);\n};\n\nexport const registerRectGraphic = () => {\n registerRect();\n Factory.registerGraphic(GrammarMarkType.rect, createRect);\n};\n\nexport const registerRect3dGraphic = () => {\n registerRect3d();\n Factory.registerGraphic(GrammarMarkType.rect3d, createRect3d);\n};\n\nexport const registerRuleGraphic = () => {\n registerLine();\n Factory.registerGraphic(GrammarMarkType.rule, createLine);\n};\n\nexport const registerShapeGraphic = () => {\n registerPath();\n Factory.registerGraphic(GrammarMarkType.shape, createPath);\n};\n\nexport const registerSymbolGraphic = () => {\n registerSymbol();\n Factory.registerGraphic(GrammarMarkType.symbol, createSymbol);\n};\n\nexport const registerTextGraphic = () => {\n registerText();\n registerRichtext();\n Factory.registerGraphic(GrammarMarkType.text, createText);\n};\n\nexport const registerPolygonGraphic = () => {\n registerPolygon();\n Factory.registerGraphic(GrammarMarkType.polygon, createPolygon);\n};\n\nexport const registerRichTextGraphic = () => {\n registerRichtext();\n Factory.registerGraphic(GrammarMarkType.richtext, createRichText);\n};\n\nexport const registerCellGraphic = () => {\n registerSymbol();\n Factory.registerGraphic(GrammarMarkType.cell, createSymbol);\n};\n\nexport const registerIntervalGraphic = () => {\n registerRect();\n registerArc();\n Factory.registerGraphic(GrammarMarkType.interval, createRect);\n};\n\nexport const registerGlyphGraphic = () => {\n registerGlyph();\n Factory.registerGraphic(GrammarMarkType.glyph, createGlyph);\n};\n\nexport const registerLargeRectsGraphic = () => {\n registerPath();\n Factory.registerGraphic(GrammarMarkType.largeRects, (attrs: any) => {\n return new LargeRects(attrs) as unknown as IGraphic;\n });\n};\n\nexport const registerLargeSymbolsGraphic = () => {\n registerPath();\n Factory.registerGraphic(GrammarMarkType.largeSymbols, (attrs: any) => {\n return new LargeSymbols(attrs) as unknown as IGraphic;\n });\n};\n"]}
package/cjs/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const version = "0.10.2";
1
+ export declare const version = "0.10.3";
2
2
  export * from './graph';
3
3
  export * from './interactions';
4
4
  export { View } from './view';
package/cjs/index.js CHANGED
@@ -18,7 +18,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
20
  }), exports.vglobal = exports.ThemeManager = exports.SIGNAL_VIEW_BOX = exports.SIGNAL_WIDTH = exports.SIGNAL_VIEW_WIDTH = exports.SIGNAL_VIEW_HEIGHT = exports.SIGNAL_PADDING = exports.SIGNAL_HEIGHT = exports.SIGNAL_AUTOFIT = exports.Factory = exports.GrammarBase = exports.invokeFunctionType = exports.parseFunctionType = exports.registerCoordinate = exports.Coordinate = exports.registerScale = exports.Scale = exports.View = exports.version = void 0,
21
- exports.version = "0.10.2", __exportStar(require("./graph"), exports), __exportStar(require("./interactions"), exports);
21
+ exports.version = "0.10.3", __exportStar(require("./graph"), exports), __exportStar(require("./interactions"), exports);
22
22
 
23
23
  var view_1 = require("./view");
24
24
 
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,0CAAwB;AAExB,iDAA+B;AAE/B,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,sCAAoD;AAA3C,8FAAA,KAAK,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC7B,gDAAmE;AAA1D,wGAAA,UAAU,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvC,qCAAqE;AAA5D,yGAAA,iBAAiB,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAC9C,oDAAkD;AAAzC,2GAAA,WAAW,OAAA;AACpB,8CAA4B;AAC5B,0CAAwB;AACxB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,8CAQ0B;AAPxB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AAGjB,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AAErB,0CAAwB;AACxB,8CAA4B;AAC5B,+CAA6B;AAC7B,8DAA4C;AAE5C,uDAAiD;AAAxC,uGAAA,OAAO,OAAA;AAChB,wCAAsB;AACtB,iDAA+B;AAC/B,wDAAsC;AACtC,4DAA0C;AAC1C,uDAAqC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.10.2\";\n\nexport * from './graph';\n\nexport * from './interactions';\n\nexport { View } from './view';\nexport { Scale, registerScale } from './view/scale';\nexport { Coordinate, registerCoordinate } from './view/coordinate';\nexport { parseFunctionType, invokeFunctionType } from './parse/util';\nexport { GrammarBase } from './view/grammar-base';\nexport * from './util/text';\nexport * from './types';\nexport { Factory } from './core/factory';\nexport {\n SIGNAL_AUTOFIT,\n SIGNAL_HEIGHT,\n SIGNAL_PADDING,\n SIGNAL_VIEW_HEIGHT,\n SIGNAL_VIEW_WIDTH,\n SIGNAL_WIDTH,\n SIGNAL_VIEW_BOX\n} from './view/constants';\n\nexport { ThemeManager } from './theme/theme-manager';\n\nexport * from './glyph';\nexport * from './component';\nexport * from './transforms';\nexport * from './graph/animation/animation';\n\nexport { vglobal } from '@visactor/vrender-core';\nexport * from './env';\nexport * from './interactions';\nexport * from './semantic-marks/cell';\nexport * from './semantic-marks/interval';\nexport * from './graph/mark/graphic';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,0CAAwB;AAExB,iDAA+B;AAE/B,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,sCAAoD;AAA3C,8FAAA,KAAK,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC7B,gDAAmE;AAA1D,wGAAA,UAAU,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvC,qCAAqE;AAA5D,yGAAA,iBAAiB,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAC9C,oDAAkD;AAAzC,2GAAA,WAAW,OAAA;AACpB,8CAA4B;AAC5B,0CAAwB;AACxB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,8CAQ0B;AAPxB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AAGjB,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AAErB,0CAAwB;AACxB,8CAA4B;AAC5B,+CAA6B;AAC7B,8DAA4C;AAE5C,uDAAiD;AAAxC,uGAAA,OAAO,OAAA;AAChB,wCAAsB;AACtB,iDAA+B;AAC/B,wDAAsC;AACtC,4DAA0C;AAC1C,uDAAqC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.10.3\";\n\nexport * from './graph';\n\nexport * from './interactions';\n\nexport { View } from './view';\nexport { Scale, registerScale } from './view/scale';\nexport { Coordinate, registerCoordinate } from './view/coordinate';\nexport { parseFunctionType, invokeFunctionType } from './parse/util';\nexport { GrammarBase } from './view/grammar-base';\nexport * from './util/text';\nexport * from './types';\nexport { Factory } from './core/factory';\nexport {\n SIGNAL_AUTOFIT,\n SIGNAL_HEIGHT,\n SIGNAL_PADDING,\n SIGNAL_VIEW_HEIGHT,\n SIGNAL_VIEW_WIDTH,\n SIGNAL_WIDTH,\n SIGNAL_VIEW_BOX\n} from './view/constants';\n\nexport { ThemeManager } from './theme/theme-manager';\n\nexport * from './glyph';\nexport * from './component';\nexport * from './transforms';\nexport * from './graph/animation/animation';\n\nexport { vglobal } from '@visactor/vrender-core';\nexport * from './env';\nexport * from './interactions';\nexport * from './semantic-marks/cell';\nexport * from './semantic-marks/interval';\nexport * from './graph/mark/graphic';\n"]}
@@ -47,8 +47,7 @@ class BrushBase extends base_1.BaseInteraction {
47
47
  } ];
48
48
  }
49
49
  isPolygonBrushContainGraphicItem(brushMask, graphicItem, offset) {
50
- var _a, _b;
51
- const points = brushMask.attribute.points, {a: a, b: b, c: c, d: d, e: e, f: f} = brushMask.globalTransMatrix, dx = null !== (_a = null == offset ? void 0 : offset.x) && void 0 !== _a ? _a : 0, dy = null !== (_b = null == offset ? void 0 : offset.y) && void 0 !== _b ? _b : 0, pointsCoord = points.map((p => ({
50
+ const points = brushMask.attribute.points, {a: a, b: b, c: c, d: d, e: e, f: f} = brushMask.globalTransMatrix, {x: dx = 0, y: dy = 0} = null != offset ? offset : {}, pointsCoord = points.map((p => ({
52
51
  x: a * p.x + c * p.y + e + dx,
53
52
  y: b * p.x + d * p.y + f + dy
54
53
  }))), globalAABBBoundsOffset = brushMask.globalAABBBounds.clone().set(brushMask.globalAABBBounds.x1 + dx, brushMask.globalAABBBounds.y1 + dy, brushMask.globalAABBBounds.x2 + dx, brushMask.globalAABBBounds.y2 + dy), x = graphicItem.globalTransMatrix.e, y = graphicItem.globalTransMatrix.f;
@@ -73,11 +72,10 @@ class BrushBase extends base_1.BaseInteraction {
73
72
  return brushMask.globalAABBBounds.intersects(graphicItem.globalAABBBounds);
74
73
  }
75
74
  isRectBrushContainGraphicItem(brushMask, graphicItem, offset) {
76
- var _a, _b;
77
- const dx = null !== (_a = null == offset ? void 0 : offset.x) && void 0 !== _a ? _a : 0, dy = null !== (_b = null == offset ? void 0 : offset.y) && void 0 !== _b ? _b : 0, globalAABBBoundsOffset = brushMask.globalAABBBounds.clone().set(brushMask.globalAABBBounds.x1 + dx, brushMask.globalAABBBounds.y1 + dy, brushMask.globalAABBBounds.x2 + dx, brushMask.globalAABBBounds.y2 + dy), x = graphicItem.globalTransMatrix.e, y = graphicItem.globalTransMatrix.f;
75
+ const {x: dx = 0, y: dy = 0} = null != offset ? offset : {}, globalAABBBoundsOffset = brushMask.globalAABBBounds.clone().set(brushMask.globalAABBBounds.x1 + dx, brushMask.globalAABBBounds.y1 + dy, brushMask.globalAABBBounds.x2 + dx, brushMask.globalAABBBounds.y2 + dy), x = graphicItem.globalTransMatrix.e, y = graphicItem.globalTransMatrix.f;
78
76
  if ("symbol" === graphicItem.type || "circle" === graphicItem.type) return globalAABBBoundsOffset.contains(x, y);
79
77
  if ("rect" === graphicItem.type) {
80
- const {width: width = 0, height: height = 0} = null == graphicItem ? void 0 : graphicItem.attribute;
78
+ const {width: width = 0, height: height = 0} = graphicItem.attribute;
81
79
  return (0, vutils_1.isRectIntersect)(globalAABBBoundsOffset, {
82
80
  x1: x,
83
81
  y1: y,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/brush-base.ts"],"names":[],"mappings":"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","file":"brush-base.js","sourcesContent":["import { Brush, IOperateType } from '@visactor/vrender-components';\nimport type { BrushOptions, IElement, IGlyphElement, IMark, IView, InteractionEventHandler } from '../types';\nimport { BaseInteraction } from './base';\nimport type { IGraphic, IPolygon, IRectGraphicAttribute } from '@visactor/vrender-core';\nimport {\n polygonContainPoint,\n type IBounds,\n type IPointLike,\n polygonIntersectPolygon,\n isRectIntersect\n} from '@visactor/vutils';\nimport { HOOK_EVENT } from '../graph/enums';\n\nexport abstract class BrushBase<T extends BrushOptions> extends BaseInteraction<T> {\n options: T;\n protected _brushComp?: Brush;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: T) {\n super(view, options);\n this.options = options;\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents(): Array<{ type: string; handler: InteractionEventHandler }> {\n return [\n {\n type: HOOK_EVENT.BEFORE_DO_RENDER,\n handler: this.handleAfterDraw\n }\n ];\n }\n\n protected isPolygonBrushContainGraphicItem(\n brushMask: IPolygon,\n graphicItem: IGraphic,\n offset?: { x: number; y: number }\n ) {\n // 根据变换矩阵得到brushMask的实际坐标\n const points = brushMask.attribute.points;\n const { a, b, c, d, e, f } = brushMask.globalTransMatrix;\n\n const dx = offset?.x ?? 0;\n const dy = offset?.y ?? 0;\n\n const pointsCoord = points.map((p: IPointLike) => {\n return {\n x: a * p.x + c * p.y + e + dx,\n y: b * p.x + d * p.y + f + dy\n };\n });\n\n const globalAABBBoundsOffset = brushMask.globalAABBBounds\n .clone()\n .set(\n brushMask.globalAABBBounds.x1 + dx,\n brushMask.globalAABBBounds.y1 + dy,\n brushMask.globalAABBBounds.x2 + dx,\n brushMask.globalAABBBounds.y2 + dy\n );\n\n // 根据变换矩阵得到item的实际坐标\n const x = graphicItem.globalTransMatrix.e;\n const y = graphicItem.globalTransMatrix.f;\n\n // brush与图表图元进行相交 或 包含判断\n if (graphicItem.type === 'symbol' || graphicItem.type === 'circle') {\n return globalAABBBoundsOffset.contains(x, y) && polygonContainPoint(pointsCoord, x, y);\n } else if (graphicItem.type === 'rect') {\n const { width = 0, height = 0 } = graphicItem?.attribute as IRectGraphicAttribute;\n const pointsRect = [\n {\n x: x,\n y: y\n },\n {\n x: x + width,\n y: y\n },\n {\n x: x + width,\n y: y + height\n },\n {\n x: x,\n y: y + height\n }\n ];\n return polygonIntersectPolygon(pointsCoord, pointsRect);\n }\n return brushMask.globalAABBBounds.intersects(graphicItem.globalAABBBounds);\n }\n\n protected isRectBrushContainGraphicItem(\n brushMask: IPolygon,\n graphicItem: IGraphic,\n offset?: { x: number; y: number }\n ) {\n const dx = offset?.x ?? 0;\n const dy = offset?.y ?? 0;\n\n const globalAABBBoundsOffset = brushMask.globalAABBBounds\n .clone()\n .set(\n brushMask.globalAABBBounds.x1 + dx,\n brushMask.globalAABBBounds.y1 + dy,\n brushMask.globalAABBBounds.x2 + dx,\n brushMask.globalAABBBounds.y2 + dy\n );\n\n // 根据变换矩阵得到item的实际坐标\n const x = graphicItem.globalTransMatrix.e;\n const y = graphicItem.globalTransMatrix.f;\n\n // brush与图表图元进行相交 或 包含判断\n if (graphicItem.type === 'symbol' || graphicItem.type === 'circle') {\n return globalAABBBoundsOffset.contains(x, y);\n } else if (graphicItem.type === 'rect') {\n const { width = 0, height = 0 } = graphicItem?.attribute as IRectGraphicAttribute;\n return isRectIntersect(globalAABBBoundsOffset, { x1: x, y1: y, x2: x + width, y2: y + height }, false);\n }\n return brushMask.globalAABBBounds.intersects(graphicItem.globalAABBBounds);\n }\n\n protected isBrushContainGraphicItem(brushMask: IPolygon, graphicItem: IGraphic, offset?: { x: number; y: number }) {\n if (\n !brushMask?.globalTransMatrix ||\n !brushMask.globalAABBBounds ||\n brushMask.globalAABBBounds.empty() ||\n !graphicItem ||\n !brushMask?.attribute?.points ||\n brushMask.attribute.points.length <= 1\n ) {\n return false;\n }\n\n return this.options.brushType === 'polygon'\n ? this.isPolygonBrushContainGraphicItem(brushMask, graphicItem, offset)\n : this.isRectBrushContainGraphicItem(brushMask, graphicItem, offset);\n }\n\n handleAfterDraw = () => {\n const stage = this.view.renderer.stage();\n if (this._brushComp || !stage) {\n return;\n }\n\n const viewBox = this.view.getViewBox();\n\n this._brushComp = new Brush({\n interactiveRange: this.options.interactiveRange ?? {\n minX: viewBox.x1,\n maxX: viewBox.x2,\n minY: viewBox.y1,\n maxY: viewBox.y2\n },\n xRange: this.options.xRange ?? [viewBox.x1, viewBox.x2],\n yRange: this.options.yRange ?? [viewBox.y1, viewBox.y2],\n brushMode: this.options.brushMode ?? 'single',\n brushType: this.options.brushType,\n brushStyle: this.options.brushStyle,\n brushMoved: this.options.brushMoved,\n removeOnClick: this.options.removeOnClick,\n sizeThreshold: this.options.sizeThreshold,\n delayType: this.options.delayType,\n delayTime: this.options.delayTime\n });\n\n this._brushComp.addEventListener(IOperateType.brushClear, this.handleBrushUpdate);\n this._brushComp.addEventListener(IOperateType.moveEnd, this.handleBrushUpdate);\n this._brushComp.addEventListener(IOperateType.drawEnd, this.handleBrushUpdate);\n this._brushComp.addEventListener(IOperateType.drawStart, this.handleBrushUpdate);\n this._brushComp.addEventListener(IOperateType.moveStart, this.handleBrushUpdate);\n this._brushComp.addEventListener(IOperateType.drawing, this.handleBrushUpdate);\n this._brushComp.addEventListener(IOperateType.moving, this.handleBrushUpdate);\n (stage.defaultLayer as any).appendChild(this._brushComp);\n };\n\n abstract handleBrushUpdate: (event: {\n type: string;\n detail: {\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n };\n }) => void;\n\n unbind(): void {\n super.unbind();\n\n if (this._brushComp) {\n this._brushComp.releaseBrushEvents();\n this._brushComp.release();\n this._brushComp = null;\n }\n }\n\n protected _dispatchEvent(\n event: {\n type: string;\n detail: {\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n };\n },\n activeElements: (IElement | IGlyphElement)[]\n ) {\n const params = { operateType: event.type, operateMask: event.detail.operateMask, activeElements };\n if (event.type === IOperateType.drawStart || event.type === IOperateType.moveStart) {\n this.dispatchEvent('start', params);\n } else if (event.type === IOperateType.drawing || event.type === IOperateType.moving) {\n this.dispatchEvent('update', params);\n } else if (event.type === IOperateType.drawEnd || event.type === IOperateType.moveEnd) {\n this.dispatchEvent('end', params);\n } else {\n this.dispatchEvent('reset', params);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/brush-base.ts"],"names":[],"mappings":"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","file":"brush-base.js","sourcesContent":["import { Brush, IOperateType } from '@visactor/vrender-components';\nimport type { BrushOptions, IElement, IGlyphElement, IMark, IView, InteractionEventHandler } from '../types';\nimport { BaseInteraction } from './base';\nimport type { IGraphic, IPolygon, IRectGraphicAttribute } from '@visactor/vrender-core';\nimport {\n polygonContainPoint,\n type IBounds,\n type IPointLike,\n polygonIntersectPolygon,\n isRectIntersect\n} from '@visactor/vutils';\nimport { HOOK_EVENT } from '../graph/enums';\n\nexport abstract class BrushBase<T extends BrushOptions> extends BaseInteraction<T> {\n options: T;\n protected _brushComp?: Brush;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: T) {\n super(view, options);\n this.options = options;\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents(): Array<{ type: string; handler: InteractionEventHandler }> {\n return [\n {\n type: HOOK_EVENT.BEFORE_DO_RENDER,\n handler: this.handleAfterDraw\n }\n ];\n }\n\n protected isPolygonBrushContainGraphicItem(\n brushMask: IPolygon,\n graphicItem: IGraphic,\n offset?: { x: number; y: number }\n ) {\n // 根据变换矩阵得到brushMask的实际坐标\n const points = brushMask.attribute.points;\n const { a, b, c, d, e, f } = brushMask.globalTransMatrix;\n const { x: dx = 0, y: dy = 0 } = offset ?? {};\n\n const pointsCoord = points.map((p: IPointLike) => {\n return {\n x: a * p.x + c * p.y + e + dx,\n y: b * p.x + d * p.y + f + dy\n };\n });\n\n const globalAABBBoundsOffset = brushMask.globalAABBBounds\n .clone()\n .set(\n brushMask.globalAABBBounds.x1 + dx,\n brushMask.globalAABBBounds.y1 + dy,\n brushMask.globalAABBBounds.x2 + dx,\n brushMask.globalAABBBounds.y2 + dy\n );\n\n // 根据变换矩阵得到item的实际坐标\n const x = graphicItem.globalTransMatrix.e;\n const y = graphicItem.globalTransMatrix.f;\n\n // brush与图表图元进行相交 或 包含判断\n if (graphicItem.type === 'symbol' || graphicItem.type === 'circle') {\n return globalAABBBoundsOffset.contains(x, y) && polygonContainPoint(pointsCoord, x, y);\n } else if (graphicItem.type === 'rect') {\n const { width = 0, height = 0 } = graphicItem?.attribute as IRectGraphicAttribute;\n const pointsRect = [\n {\n x: x,\n y: y\n },\n {\n x: x + width,\n y: y\n },\n {\n x: x + width,\n y: y + height\n },\n {\n x: x,\n y: y + height\n }\n ];\n return polygonIntersectPolygon(pointsCoord, pointsRect);\n }\n return brushMask.globalAABBBounds.intersects(graphicItem.globalAABBBounds);\n }\n\n protected isRectBrushContainGraphicItem(\n brushMask: IPolygon,\n graphicItem: IGraphic,\n offset?: { x: number; y: number }\n ) {\n const { x: dx = 0, y: dy = 0 } = offset ?? {};\n\n const globalAABBBoundsOffset = brushMask.globalAABBBounds\n .clone()\n .set(\n brushMask.globalAABBBounds.x1 + dx,\n brushMask.globalAABBBounds.y1 + dy,\n brushMask.globalAABBBounds.x2 + dx,\n brushMask.globalAABBBounds.y2 + dy\n );\n\n // 根据变换矩阵得到item的实际坐标\n const x = graphicItem.globalTransMatrix.e;\n const y = graphicItem.globalTransMatrix.f;\n\n // brush与图表图元进行相交 或 包含判断\n if (graphicItem.type === 'symbol' || graphicItem.type === 'circle') {\n return globalAABBBoundsOffset.contains(x, y);\n } else if (graphicItem.type === 'rect') {\n const { width = 0, height = 0 } = graphicItem.attribute as IRectGraphicAttribute;\n return isRectIntersect(globalAABBBoundsOffset, { x1: x, y1: y, x2: x + width, y2: y + height }, false);\n }\n return brushMask.globalAABBBounds.intersects(graphicItem.globalAABBBounds);\n }\n\n protected isBrushContainGraphicItem(brushMask: IPolygon, graphicItem: IGraphic, offset?: { x: number; y: number }) {\n if (\n !brushMask?.globalTransMatrix ||\n !brushMask.globalAABBBounds ||\n brushMask.globalAABBBounds.empty() ||\n !graphicItem ||\n !brushMask?.attribute?.points ||\n brushMask.attribute.points.length <= 1\n ) {\n return false;\n }\n\n return this.options.brushType === 'polygon'\n ? this.isPolygonBrushContainGraphicItem(brushMask, graphicItem, offset)\n : this.isRectBrushContainGraphicItem(brushMask, graphicItem, offset);\n }\n\n handleAfterDraw = () => {\n const stage = this.view.renderer.stage();\n if (this._brushComp || !stage) {\n return;\n }\n\n const viewBox = this.view.getViewBox();\n\n this._brushComp = new Brush({\n interactiveRange: this.options.interactiveRange ?? {\n minX: viewBox.x1,\n maxX: viewBox.x2,\n minY: viewBox.y1,\n maxY: viewBox.y2\n },\n xRange: this.options.xRange ?? [viewBox.x1, viewBox.x2],\n yRange: this.options.yRange ?? [viewBox.y1, viewBox.y2],\n brushMode: this.options.brushMode ?? 'single',\n brushType: this.options.brushType,\n brushStyle: this.options.brushStyle,\n brushMoved: this.options.brushMoved,\n removeOnClick: this.options.removeOnClick,\n sizeThreshold: this.options.sizeThreshold,\n delayType: this.options.delayType,\n delayTime: this.options.delayTime\n });\n\n this._brushComp.addEventListener(IOperateType.brushClear, this.handleBrushUpdate);\n this._brushComp.addEventListener(IOperateType.moveEnd, this.handleBrushUpdate);\n this._brushComp.addEventListener(IOperateType.drawEnd, this.handleBrushUpdate);\n this._brushComp.addEventListener(IOperateType.drawStart, this.handleBrushUpdate);\n this._brushComp.addEventListener(IOperateType.moveStart, this.handleBrushUpdate);\n this._brushComp.addEventListener(IOperateType.drawing, this.handleBrushUpdate);\n this._brushComp.addEventListener(IOperateType.moving, this.handleBrushUpdate);\n (stage.defaultLayer as any).appendChild(this._brushComp);\n };\n\n abstract handleBrushUpdate: (event: {\n type: string;\n detail: {\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n };\n }) => void;\n\n unbind(): void {\n super.unbind();\n\n if (this._brushComp) {\n this._brushComp.releaseBrushEvents();\n this._brushComp.release();\n this._brushComp = null;\n }\n }\n\n protected _dispatchEvent(\n event: {\n type: string;\n detail: {\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n };\n },\n activeElements: (IElement | IGlyphElement)[]\n ) {\n const params = { operateType: event.type, operateMask: event.detail.operateMask, activeElements };\n if (event.type === IOperateType.drawStart || event.type === IOperateType.moveStart) {\n this.dispatchEvent('start', params);\n } else if (event.type === IOperateType.drawing || event.type === IOperateType.moving) {\n this.dispatchEvent('update', params);\n } else if (event.type === IOperateType.drawEnd || event.type === IOperateType.moveEnd) {\n this.dispatchEvent('end', params);\n } else {\n this.dispatchEvent('reset', params);\n }\n }\n}\n"]}
@@ -58,9 +58,9 @@ class ViewNavigationBase extends base_1.BaseInteraction {
58
58
  }
59
59
  updateView(type, newRange, e) {
60
60
  var _a, _b, _c, _d;
61
- (null == newRange ? void 0 : newRange.x) && (null === (_b = null === (_a = this._state) || void 0 === _a ? void 0 : _a.x) || void 0 === _b ? void 0 : _b.linkedComponent) && this._updateLinkedComponent(this._state.x.linkedComponent, newRange.x),
62
- (null == newRange ? void 0 : newRange.y) && (null === (_d = null === (_c = this._state) || void 0 === _c ? void 0 : _c.y) || void 0 === _d ? void 0 : _d.linkedComponent) && this._updateLinkedComponent(this._state.y.linkedComponent, newRange.y),
63
- (null == newRange ? void 0 : newRange.needUpdate) && this.view.runAsync(), this.dispatchEvent(type, {
61
+ newRange && newRange.x && (null === (_b = null === (_a = this._state) || void 0 === _a ? void 0 : _a.x) || void 0 === _b ? void 0 : _b.linkedComponent) && this._updateLinkedComponent(this._state.x.linkedComponent, newRange.x),
62
+ newRange && newRange.y && (null === (_d = null === (_c = this._state) || void 0 === _c ? void 0 : _c.y) || void 0 === _d ? void 0 : _d.linkedComponent) && this._updateLinkedComponent(this._state.y.linkedComponent, newRange.y),
63
+ newRange && newRange.needUpdate && this.view.runAsync(), this.dispatchEvent(type, {
64
64
  viewRange: newRange,
65
65
  event: e
66
66
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/view-navigation-base.ts"],"names":[],"mappings":"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","file":"view-navigation-base.js","sourcesContent":["import { isNil, isString } from '@visactor/vutils';\nimport type {\n FilterDataTarget,\n IBaseInteractionOptions,\n IComponent,\n IDataFilter,\n IDatazoom,\n IMark,\n IScale,\n IScrollbar,\n IView,\n InteractionEvent,\n ViewNavigationBaseOptions,\n ViewNavigationRange,\n ViewStateByDim\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { ComponentEnum, DataFilterRank, GrammarMarkType } from '../graph/enums';\nimport { getScaleRangeRatio } from '../util/scale';\n\nexport abstract class ViewNavigationBase<\n T extends ViewNavigationBaseOptions & IBaseInteractionOptions\n> extends BaseInteraction<T> {\n options: T;\n\n protected _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n protected _inited?: boolean;\n protected _dataFilterX: IDataFilter;\n protected _dataFilterY: IDataFilter;\n\n constructor(view: IView, options?: T) {\n super(view, options);\n this.options = options;\n }\n\n protected _parseLinkedComponent(option: string | IDatazoom | IScrollbar): IDatazoom | IScrollbar {\n if (!option) {\n return null;\n }\n const comp: IMark = isString(option) ? this.view.getMarkById(option) : option;\n\n if (\n comp &&\n comp.markType === GrammarMarkType.component &&\n ((comp as IComponent).componentType === ComponentEnum.datazoom ||\n (comp as IComponent).componentType === ComponentEnum.scrollbar)\n ) {\n return comp as IDatazoom | IScrollbar;\n }\n\n return null;\n }\n\n protected _initStateByDim(\n dim: 'x' | 'y',\n linkedComponent?: string | IDatazoom | IScrollbar,\n scale?: string | IScale,\n dataTarget?: FilterDataTarget\n ) {\n const comp = this._parseLinkedComponent(linkedComponent);\n\n if (comp) {\n this._state[dim] = { linkedComponent: comp };\n return;\n }\n\n const scaleGrammar = !isNil(scale) ? (isString(scale) ? this.view.getScaleById(scale) : scale) : null;\n const dataGrammar = !isNil(dataTarget?.data)\n ? isString(dataTarget.data)\n ? this.view.getDataById(dataTarget.data)\n : dataTarget.data\n : null;\n\n if (!scaleGrammar || !dataGrammar) {\n this._state[dim] = { data: dataGrammar, scale: scaleGrammar };\n return;\n }\n\n dataGrammar.attach(scaleGrammar);\n\n const filterByScale = isString(dataTarget.filter)\n ? (datum: any, filterValue: number[]) => {\n const scale = scaleGrammar.getScale();\n const ratio = getScaleRangeRatio(scale, datum[dataTarget.filter as string]);\n\n return ratio >= filterValue[0] && ratio <= filterValue[1];\n }\n : dataTarget.filter;\n const dataFilter = {\n source: `${scaleGrammar.uid}`,\n rank: DataFilterRank.normal,\n filter: (data: any[]) => {\n const filterValue = dim === 'x' ? this._state?.x?.filterValue : this._state?.y?.filterValue;\n if (!filterValue) {\n return data;\n }\n const filteredData = data.filter(datum => filterByScale(datum, filterValue));\n return dataTarget.transform ? dataTarget.transform(filteredData, filterValue) : filteredData;\n }\n };\n\n if (dim === 'x') {\n this._dataFilterX = dataFilter;\n } else {\n this._dataFilterY = dataFilter;\n }\n\n dataGrammar.addDataFilter(dataFilter);\n\n this._state[dim] = { data: dataGrammar, scale: scaleGrammar };\n }\n\n protected _initGrammars() {\n const { enableX, enableY, scaleX, scaleY, dataTargetX, dataTargetY, linkedComponentX, linkedComponentY } =\n this.options;\n\n this._state = {};\n\n if (enableX !== false) {\n this._initStateByDim('x', linkedComponentX, scaleX, dataTargetX);\n }\n\n if (enableY !== false) {\n this._initStateByDim('y', linkedComponentY, scaleY, dataTargetY);\n }\n\n this._inited = true;\n }\n\n protected _updateLinkedComponent(comp: IDatazoom | IScrollbar, newRange: [number, number]) {\n if (comp.componentType === ComponentEnum.datazoom) {\n (comp as IDatazoom).setStartEndValue(newRange[0], newRange[1]);\n } else {\n // fix: need to update range scrollbar\n (comp as IScrollbar).setScrollStart(newRange[0]);\n }\n }\n\n updateView(type: 'start' | 'reset' | 'update' | 'end', newRange: ViewNavigationRange, e?: InteractionEvent) {\n if (newRange?.x && this._state?.x?.linkedComponent) {\n this._updateLinkedComponent(this._state.x.linkedComponent, newRange.x);\n }\n\n if (newRange?.y && this._state?.y?.linkedComponent) {\n this._updateLinkedComponent(this._state.y.linkedComponent, newRange.y);\n }\n\n if (newRange?.needUpdate) {\n this.view.runAsync();\n }\n\n this.dispatchEvent(type, { viewRange: newRange, event: e });\n }\n\n unbind() {\n super.unbind();\n\n if (this._state) {\n Object.keys(this._state).forEach(dim => {\n const { data, scale } = this._state[dim as 'x' | 'y'];\n\n if (data && scale) {\n data.detach(scale);\n data.removeDataFilter(dim === 'x' ? this._dataFilterX : this._dataFilterY);\n } else if (scale) {\n scale.setRangeFactor(null);\n scale.commit();\n }\n });\n }\n\n this._state = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/view-navigation-base.ts"],"names":[],"mappings":"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","file":"view-navigation-base.js","sourcesContent":["import { isNil, isString } from '@visactor/vutils';\nimport type {\n FilterDataTarget,\n IBaseInteractionOptions,\n IComponent,\n IDataFilter,\n IDatazoom,\n IMark,\n IScale,\n IScrollbar,\n IView,\n InteractionEvent,\n ViewNavigationBaseOptions,\n ViewNavigationRange,\n ViewStateByDim\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { ComponentEnum, DataFilterRank, GrammarMarkType } from '../graph/enums';\nimport { getScaleRangeRatio } from '../util/scale';\n\nexport abstract class ViewNavigationBase<\n T extends ViewNavigationBaseOptions & IBaseInteractionOptions\n> extends BaseInteraction<T> {\n options: T;\n\n protected _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n protected _inited?: boolean;\n protected _dataFilterX: IDataFilter;\n protected _dataFilterY: IDataFilter;\n\n constructor(view: IView, options?: T) {\n super(view, options);\n this.options = options;\n }\n\n protected _parseLinkedComponent(option: string | IDatazoom | IScrollbar): IDatazoom | IScrollbar {\n if (!option) {\n return null;\n }\n const comp: IMark = isString(option) ? this.view.getMarkById(option) : option;\n\n if (\n comp &&\n comp.markType === GrammarMarkType.component &&\n ((comp as IComponent).componentType === ComponentEnum.datazoom ||\n (comp as IComponent).componentType === ComponentEnum.scrollbar)\n ) {\n return comp as IDatazoom | IScrollbar;\n }\n\n return null;\n }\n\n protected _initStateByDim(\n dim: 'x' | 'y',\n linkedComponent?: string | IDatazoom | IScrollbar,\n scale?: string | IScale,\n dataTarget?: FilterDataTarget\n ) {\n const comp = this._parseLinkedComponent(linkedComponent);\n\n if (comp) {\n this._state[dim] = { linkedComponent: comp };\n return;\n }\n\n const scaleGrammar = !isNil(scale) ? (isString(scale) ? this.view.getScaleById(scale) : scale) : null;\n const dataGrammar = !isNil(dataTarget?.data)\n ? isString(dataTarget.data)\n ? this.view.getDataById(dataTarget.data)\n : dataTarget.data\n : null;\n\n if (!scaleGrammar || !dataGrammar) {\n this._state[dim] = { data: dataGrammar, scale: scaleGrammar };\n return;\n }\n\n dataGrammar.attach(scaleGrammar);\n\n const filterByScale = isString(dataTarget.filter)\n ? (datum: any, filterValue: number[]) => {\n const scale = scaleGrammar.getScale();\n const ratio = getScaleRangeRatio(scale, datum[dataTarget.filter as string]);\n\n return ratio >= filterValue[0] && ratio <= filterValue[1];\n }\n : dataTarget.filter;\n const dataFilter = {\n source: `${scaleGrammar.uid}`,\n rank: DataFilterRank.normal,\n filter: (data: any[]) => {\n const filterValue = dim === 'x' ? this._state?.x?.filterValue : this._state?.y?.filterValue;\n if (!filterValue) {\n return data;\n }\n const filteredData = data.filter(datum => filterByScale(datum, filterValue));\n return dataTarget.transform ? dataTarget.transform(filteredData, filterValue) : filteredData;\n }\n };\n\n if (dim === 'x') {\n this._dataFilterX = dataFilter;\n } else {\n this._dataFilterY = dataFilter;\n }\n\n dataGrammar.addDataFilter(dataFilter);\n\n this._state[dim] = { data: dataGrammar, scale: scaleGrammar };\n }\n\n protected _initGrammars() {\n const { enableX, enableY, scaleX, scaleY, dataTargetX, dataTargetY, linkedComponentX, linkedComponentY } =\n this.options;\n\n this._state = {};\n\n if (enableX !== false) {\n this._initStateByDim('x', linkedComponentX, scaleX, dataTargetX);\n }\n\n if (enableY !== false) {\n this._initStateByDim('y', linkedComponentY, scaleY, dataTargetY);\n }\n\n this._inited = true;\n }\n\n protected _updateLinkedComponent(comp: IDatazoom | IScrollbar, newRange: [number, number]) {\n if (comp.componentType === ComponentEnum.datazoom) {\n (comp as IDatazoom).setStartEndValue(newRange[0], newRange[1]);\n } else {\n // fix: need to update range scrollbar\n (comp as IScrollbar).setScrollStart(newRange[0]);\n }\n }\n\n updateView(type: 'start' | 'reset' | 'update' | 'end', newRange: ViewNavigationRange, e?: InteractionEvent) {\n if (newRange && newRange.x && this._state?.x?.linkedComponent) {\n this._updateLinkedComponent(this._state.x.linkedComponent, newRange.x);\n }\n\n if (newRange && newRange.y && this._state?.y?.linkedComponent) {\n this._updateLinkedComponent(this._state.y.linkedComponent, newRange.y);\n }\n\n if (newRange && newRange.needUpdate) {\n this.view.runAsync();\n }\n\n this.dispatchEvent(type, { viewRange: newRange, event: e });\n }\n\n unbind() {\n super.unbind();\n\n if (this._state) {\n Object.keys(this._state).forEach(dim => {\n const { data, scale } = this._state[dim as 'x' | 'y'];\n\n if (data && scale) {\n data.detach(scale);\n data.removeDataFilter(dim === 'x' ? this._dataFilterX : this._dataFilterY);\n } else if (scale) {\n scale.setRangeFactor(null);\n scale.commit();\n }\n });\n }\n\n this._state = null;\n }\n}\n"]}
@@ -33,30 +33,30 @@ class ViewRoam extends view_navigation_base_1.ViewNavigationBase {
33
33
  this.handleRoamScrollStart = (0, vutils_1.throttle)(this.handleRoamScrollStartInner, this.options.throttle);
34
34
  }
35
35
  getEvents() {
36
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
36
+ var _a, _b, _c;
37
37
  const events = [];
38
- return (null === (_a = this.options.zoom) || void 0 === _a ? void 0 : _a.enable) && ((null === (_b = this.options.zoom) || void 0 === _b ? void 0 : _b.trigger) && events.push({
38
+ return (null === (_a = this.options.zoom) || void 0 === _a ? void 0 : _a.enable) && (this.options.zoom.trigger && events.push({
39
39
  type: this.options.zoom.trigger,
40
40
  handler: this.handleRoamZoomStart
41
- }), (null === (_c = this.options.zoom) || void 0 === _c ? void 0 : _c.endTrigger) && events.push({
41
+ }), this.options.zoom.endTrigger && events.push({
42
42
  type: this.options.zoom.endTrigger,
43
43
  handler: this.handleRoamZoomEnd
44
- }), (null === (_d = this.options.zoom) || void 0 === _d ? void 0 : _d.resetTrigger) && events.push({
45
- type: null === (_e = this.options.zoom) || void 0 === _e ? void 0 : _e.resetTrigger,
44
+ }), this.options.zoom.resetTrigger && events.push({
45
+ type: this.options.zoom.resetTrigger,
46
46
  handler: this.handleRoamZoomReset
47
- })), (null === (_f = this.options.scroll) || void 0 === _f ? void 0 : _f.enable) && ((null === (_g = this.options.scroll) || void 0 === _g ? void 0 : _g.trigger) && events.push({
47
+ })), (null === (_b = this.options.scroll) || void 0 === _b ? void 0 : _b.enable) && (this.options.scroll.trigger && events.push({
48
48
  type: this.options.scroll.trigger,
49
49
  handler: this.handleRoamScrollStart
50
- }), (null === (_h = this.options.scroll) || void 0 === _h ? void 0 : _h.trigger) && events.push({
50
+ }), this.options.scroll.trigger && events.push({
51
51
  type: this.options.scroll.endTrigger,
52
52
  handler: this.handleRoamScrollEnd
53
- })), (null === (_j = this.options.drag) || void 0 === _j ? void 0 : _j.enable) && ((null === (_k = this.options.drag) || void 0 === _k ? void 0 : _k.trigger) && events.push({
53
+ })), (null === (_c = this.options.drag) || void 0 === _c ? void 0 : _c.enable) && (this.options.drag.trigger && events.push({
54
54
  type: this.options.drag.trigger,
55
55
  handler: this.handleRoamDragStart
56
- }), (null === (_l = this.options.drag) || void 0 === _l ? void 0 : _l.updateTrigger) && events.push({
56
+ }), this.options.drag.updateTrigger && events.push({
57
57
  type: this.options.drag.updateTrigger,
58
58
  handler: this.handleRoamDragUpdate
59
- }), (null === (_m = this.options.drag) || void 0 === _m ? void 0 : _m.endTrigger) && events.push({
59
+ }), this.options.drag.endTrigger && events.push({
60
60
  type: this.options.drag.endTrigger,
61
61
  handler: this.handleRoamDragEnd
62
62
  })), events;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/view-roam.ts"],"names":[],"mappings":"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","file":"view-roam.js","sourcesContent":["import { merge, throttle } from '@visactor/vutils';\nimport type {\n ViewRoamOptions,\n IView,\n InteractionEvent,\n IScale,\n IData,\n IViewZoomMixin,\n IViewScrollMixin,\n IViewDragMixin,\n InteractionEventHandler\n} from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewRoam\n extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>,\n Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>,\n Pick<\n IViewZoomMixin,\n 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'\n >,\n ViewNavigationBase<ViewRoamOptions> {}\n\nexport class ViewRoam extends ViewNavigationBase<ViewRoamOptions> {\n static type: string = 'view-roam';\n type: string = ViewRoam.type;\n\n static defaultOptions: ViewRoamOptions = {\n zoom: {\n realtime: true,\n enable: true,\n focus: true,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n resetTrigger: 'dblclick',\n rate: 1\n },\n scroll: {\n realtime: true,\n enable: false,\n reversed: false,\n trigger: 'wheel',\n endTrigger: 'pointerup'\n },\n drag: {\n realtime: true,\n enable: true,\n reversed: false,\n trigger: 'pointerdown',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerup'\n },\n throttle: 100\n };\n\n protected _inited?: boolean;\n protected _lastScale: number;\n protected _scaleX: IScale;\n protected _scaleY: IScale;\n protected _data: IData;\n protected handleRoamZoomStart: (e: InteractionEvent) => void;\n protected handleRoamDragUpdate: (e: InteractionEvent) => void;\n protected handleRoamScrollStart: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewRoamOptions) {\n super(view, merge({}, ViewRoam.defaultOptions, option));\n this.handleRoamZoomStart = throttle(this.handleRoamZoomStartInner, this.options.throttle);\n this.handleRoamDragUpdate = throttle(this.handleRoamDragUpdateInner, this.options.throttle);\n this.handleRoamScrollStart = throttle(this.handleRoamScrollStartInner, this.options.throttle);\n }\n\n protected getEvents() {\n const events: Array<{ type: string; handler: InteractionEventHandler }> = [];\n\n if (this.options.zoom?.enable) {\n this.options.zoom?.trigger && events.push({ type: this.options.zoom.trigger, handler: this.handleRoamZoomStart });\n this.options.zoom?.endTrigger &&\n events.push({ type: this.options.zoom.endTrigger, handler: this.handleRoamZoomEnd });\n this.options.zoom?.resetTrigger &&\n events.push({ type: this.options.zoom?.resetTrigger, handler: this.handleRoamZoomReset });\n }\n\n if (this.options.scroll?.enable) {\n this.options.scroll?.trigger &&\n events.push({ type: this.options.scroll.trigger, handler: this.handleRoamScrollStart });\n this.options.scroll?.trigger &&\n events.push({ type: this.options.scroll.endTrigger, handler: this.handleRoamScrollEnd });\n }\n\n if (this.options.drag?.enable) {\n this.options.drag?.trigger && events.push({ type: this.options.drag.trigger, handler: this.handleRoamDragStart });\n this.options.drag?.updateTrigger &&\n events.push({ type: this.options.drag.updateTrigger, handler: this.handleRoamDragUpdate });\n this.options.drag?.endTrigger &&\n events.push({ type: this.options.drag.endTrigger, handler: this.handleRoamDragEnd });\n }\n\n return events;\n }\n\n handleRoamZoomStartInner = (e: InteractionEvent) => {\n this.formatZoomEvent(e);\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView('start', this.handleZoomStart(e, this._state, this.options.zoom), e);\n };\n\n handleRoamZoomEnd = (e: InteractionEvent) => {\n this.formatZoomEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleZoomEnd(e, this._state, this.options.zoom), e);\n };\n\n handleRoamZoomReset = (e: InteractionEvent) => {\n if (!e || (this.options.shouldReset && !this.options.shouldReset(e))) {\n return;\n }\n this.updateView('reset', this.handleZoomReset(e, this._state, this.options.zoom), e);\n };\n\n handleRoamDragStart = (e: InteractionEvent) => {\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView('start', this.handleDragStart(e, this._state, this.options.drag), e);\n };\n\n handleRoamDragUpdateInner = (e: InteractionEvent) => {\n if (!e || (this.options.shouldUpdate && !this.options.shouldUpdate(e))) {\n return;\n }\n this.updateView('update', this.handleDragUpdate(e, this._state, this.options.drag), e);\n };\n\n handleRoamDragEnd = (e: InteractionEvent) => {\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleDragEnd(e, this._state, this.options.drag), e);\n };\n\n handleRoamScrollStartInner = (e: InteractionEvent) => {\n this.formatScrollEvent(e);\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView('start', this.handleScrollStart(e, this._state, this.options.scroll), e);\n };\n\n handleRoamScrollEnd = (e: InteractionEvent) => {\n this.formatScrollEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleScrollEnd(e, this._state, this.options.scroll), e);\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/view-roam.ts"],"names":[],"mappings":"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","file":"view-roam.js","sourcesContent":["import { merge, throttle } from '@visactor/vutils';\nimport type {\n ViewRoamOptions,\n IView,\n InteractionEvent,\n IScale,\n IData,\n IViewZoomMixin,\n IViewScrollMixin,\n IViewDragMixin,\n InteractionEventHandler\n} from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewRoam\n extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>,\n Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>,\n Pick<\n IViewZoomMixin,\n 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'\n >,\n ViewNavigationBase<ViewRoamOptions> {}\n\nexport class ViewRoam extends ViewNavigationBase<ViewRoamOptions> {\n static type: string = 'view-roam';\n type: string = ViewRoam.type;\n\n static defaultOptions: ViewRoamOptions = {\n zoom: {\n realtime: true,\n enable: true,\n focus: true,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n resetTrigger: 'dblclick',\n rate: 1\n },\n scroll: {\n realtime: true,\n enable: false,\n reversed: false,\n trigger: 'wheel',\n endTrigger: 'pointerup'\n },\n drag: {\n realtime: true,\n enable: true,\n reversed: false,\n trigger: 'pointerdown',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerup'\n },\n throttle: 100\n };\n\n protected _inited?: boolean;\n protected _lastScale: number;\n protected _scaleX: IScale;\n protected _scaleY: IScale;\n protected _data: IData;\n protected handleRoamZoomStart: (e: InteractionEvent) => void;\n protected handleRoamDragUpdate: (e: InteractionEvent) => void;\n protected handleRoamScrollStart: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewRoamOptions) {\n super(view, merge({}, ViewRoam.defaultOptions, option));\n this.handleRoamZoomStart = throttle(this.handleRoamZoomStartInner, this.options.throttle);\n this.handleRoamDragUpdate = throttle(this.handleRoamDragUpdateInner, this.options.throttle);\n this.handleRoamScrollStart = throttle(this.handleRoamScrollStartInner, this.options.throttle);\n }\n\n protected getEvents() {\n const events: Array<{ type: string; handler: InteractionEventHandler }> = [];\n\n if (this.options.zoom?.enable) {\n this.options.zoom.trigger && events.push({ type: this.options.zoom.trigger, handler: this.handleRoamZoomStart });\n this.options.zoom.endTrigger &&\n events.push({ type: this.options.zoom.endTrigger, handler: this.handleRoamZoomEnd });\n this.options.zoom.resetTrigger &&\n events.push({ type: this.options.zoom.resetTrigger, handler: this.handleRoamZoomReset });\n }\n\n if (this.options.scroll?.enable) {\n this.options.scroll.trigger &&\n events.push({ type: this.options.scroll.trigger, handler: this.handleRoamScrollStart });\n this.options.scroll.trigger &&\n events.push({ type: this.options.scroll.endTrigger, handler: this.handleRoamScrollEnd });\n }\n\n if (this.options.drag?.enable) {\n this.options.drag.trigger && events.push({ type: this.options.drag.trigger, handler: this.handleRoamDragStart });\n this.options.drag.updateTrigger &&\n events.push({ type: this.options.drag.updateTrigger, handler: this.handleRoamDragUpdate });\n this.options.drag.endTrigger &&\n events.push({ type: this.options.drag.endTrigger, handler: this.handleRoamDragEnd });\n }\n\n return events;\n }\n\n handleRoamZoomStartInner = (e: InteractionEvent) => {\n this.formatZoomEvent(e);\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView('start', this.handleZoomStart(e, this._state, this.options.zoom), e);\n };\n\n handleRoamZoomEnd = (e: InteractionEvent) => {\n this.formatZoomEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleZoomEnd(e, this._state, this.options.zoom), e);\n };\n\n handleRoamZoomReset = (e: InteractionEvent) => {\n if (!e || (this.options.shouldReset && !this.options.shouldReset(e))) {\n return;\n }\n this.updateView('reset', this.handleZoomReset(e, this._state, this.options.zoom), e);\n };\n\n handleRoamDragStart = (e: InteractionEvent) => {\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView('start', this.handleDragStart(e, this._state, this.options.drag), e);\n };\n\n handleRoamDragUpdateInner = (e: InteractionEvent) => {\n if (!e || (this.options.shouldUpdate && !this.options.shouldUpdate(e))) {\n return;\n }\n this.updateView('update', this.handleDragUpdate(e, this._state, this.options.drag), e);\n };\n\n handleRoamDragEnd = (e: InteractionEvent) => {\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleDragEnd(e, this._state, this.options.drag), e);\n };\n\n handleRoamScrollStartInner = (e: InteractionEvent) => {\n this.formatScrollEvent(e);\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView('start', this.handleScrollStart(e, this._state, this.options.scroll), e);\n };\n\n handleRoamScrollEnd = (e: InteractionEvent) => {\n this.formatScrollEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleScrollEnd(e, this._state, this.options.scroll), e);\n };\n}\n"]}
@@ -20,7 +20,7 @@ class ViewScrollMixin {
20
20
  handleScrollStart(e, navState, scrollOptions) {
21
21
  if (e.stopPropagation(), e.preventDefault(), !(0, vutils_1.isNil)(e.scrollX) || !(0,
22
22
  vutils_1.isNil)(e.scrollY)) {
23
- if (null == scrollOptions ? void 0 : scrollOptions.realtime) return (0, view_utils_1.handleScrolling)({
23
+ if (scrollOptions && scrollOptions.realtime) return (0, view_utils_1.handleScrolling)({
24
24
  x: e.scrollX,
25
25
  y: e.scrollY
26
26
  }, navState, scrollOptions);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/view-scroll-mixin.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAQzC,6CAA+C;AAE/C,MAAa,eAAe;IAIhB,eAAe,CAAC,CAAmB;QAC3C,OAAO,CAAC,CAAC;IACX,CAAC;IAES,iBAAiB,CAAC,CAAmB;QAM7C,IAAI,CAAE,CAAS,CAAC,OAAO,IAAI,CAAE,CAAS,CAAC,MAAM,KAAK,CAAC,IAAK,CAAS,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YAC9E,CAAS,CAAC,OAAO,GAAI,CAAS,CAAC,MAAM,CAAC;YACtC,CAAS,CAAC,OAAO,GAAI,CAAS,CAAC,MAAM,CAAC;YACvC,OAAO,CAAC,CAAC;SACV;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iBAAiB,CAAC,CAAmB;QACnC,IAAI,CAAC,CAAC,EAAE;YACN,OAAO,CAAC,CAAC;SACV;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE;YACpB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SAChC;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;YACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;SAClC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iBAAiB,CACf,CAAmB,EACnB,QAAoD,EACpD,aAAuC;QAEvC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC,cAAc,EAAE,CAAC;QAEnB,IAAI,IAAA,cAAK,EAAE,CAAS,CAAC,OAAO,CAAC,IAAI,IAAA,cAAK,EAAE,CAAS,CAAC,OAAO,CAAC,EAAE;YAC1D,OAAO;SACR;QAED,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE;YAC3B,OAAO,IAAA,4BAAe,EAAC,EAAE,CAAC,EAAG,CAAS,CAAC,OAAO,EAAE,CAAC,EAAG,CAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;SACnG;QAED,IAAI,CAAC,IAAA,cAAK,EAAE,CAAS,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAI,CAAS,CAAC,OAAO,CAAC;SAChG;QAED,IAAI,CAAC,IAAA,cAAK,EAAE,CAAS,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAI,CAAS,CAAC,OAAO,CAAC;SAChG;IACH,CAAC;IAED,eAAe,CACb,CAAmB,EACnB,QAAoD,EACpD,aAAuC;QAIvC,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,MAAK,KAAK,IAAI,CAAC,IAAA,cAAK,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;YACvF,MAAM,GAAG,GAAG,IAAA,4BAAe,EAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC7F,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,OAAO,GAAG,CAAC;SACZ;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAjFD,0CAiFC","file":"view-scroll-mixin.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type {\n InteractionEvent,\n IViewScrollMixin,\n ViewNavigationRange,\n ViewScrollSimpleOptions,\n ViewStateByDim\n} from '../types';\nimport { handleScrolling } from './view-utils';\n\nexport class ViewScrollMixin implements IViewScrollMixin {\n protected _scrollX: number;\n protected _scrollY: number;\n\n protected formatPanScroll(e: InteractionEvent) {\n return e;\n }\n\n protected formatWheelScroll(e: InteractionEvent) {\n /**\n * @see https://vega.github.io/vega/examples/zoomable-world-map/\n * After testing, the ctrlKey field will only be true when the directions of the two fingers are inconsistent.\n * Based on this, determine whether to trigger the scroll event.\n */\n if (!(e as any).ctrlKey && ((e as any).deltaY !== 0 || (e as any).deltaX !== 0)) {\n (e as any).scrollX = (e as any).deltaX;\n (e as any).scrollY = (e as any).deltaY;\n return e;\n }\n\n return e;\n }\n\n formatScrollEvent(e: InteractionEvent) {\n if (!e) {\n return e;\n }\n\n if (e.type === 'pan') {\n return this.formatPanScroll(e);\n }\n\n if (e.type === 'wheel') {\n return this.formatWheelScroll(e);\n }\n\n return e;\n }\n\n handleScrollStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: ViewScrollSimpleOptions\n ): ViewNavigationRange {\n e.stopPropagation();\n e.preventDefault();\n\n if (isNil((e as any).scrollX) && isNil((e as any).scrollY)) {\n return;\n }\n\n if (scrollOptions?.realtime) {\n return handleScrolling({ x: (e as any).scrollX, y: (e as any).scrollY }, navState, scrollOptions);\n }\n\n if (!isNil((e as any).scrollX)) {\n this._scrollX = isNil(this._scrollX) ? (e as any).scrollX : this._scrollX + (e as any).scrollX;\n }\n\n if (!isNil((e as any).scrollY)) {\n this._scrollY = isNil(this._scrollY) ? (e as any).scrollY : this._scrollY + (e as any).scrollY;\n }\n }\n\n handleScrollEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: ViewScrollSimpleOptions\n ): ViewNavigationRange {\n // do nothing now\n\n if (scrollOptions?.realtime === false && (isNil(this._scrollX) || isNil(this._scrollY))) {\n const res = handleScrolling({ x: this._scrollX, y: this._scrollY }, navState, scrollOptions);\n this._scrollX = null;\n this._scrollY = null;\n\n return res;\n }\n\n return null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/view-scroll-mixin.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAQzC,6CAA+C;AAE/C,MAAa,eAAe;IAIhB,eAAe,CAAC,CAAmB;QAC3C,OAAO,CAAC,CAAC;IACX,CAAC;IAES,iBAAiB,CAAC,CAAmB;QAM7C,IAAI,CAAE,CAAS,CAAC,OAAO,IAAI,CAAE,CAAS,CAAC,MAAM,KAAK,CAAC,IAAK,CAAS,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YAC9E,CAAS,CAAC,OAAO,GAAI,CAAS,CAAC,MAAM,CAAC;YACtC,CAAS,CAAC,OAAO,GAAI,CAAS,CAAC,MAAM,CAAC;YACvC,OAAO,CAAC,CAAC;SACV;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iBAAiB,CAAC,CAAmB;QACnC,IAAI,CAAC,CAAC,EAAE;YACN,OAAO,CAAC,CAAC;SACV;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE;YACpB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SAChC;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;YACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;SAClC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iBAAiB,CACf,CAAmB,EACnB,QAAoD,EACpD,aAAuC;QAEvC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC,cAAc,EAAE,CAAC;QAEnB,IAAI,IAAA,cAAK,EAAE,CAAS,CAAC,OAAO,CAAC,IAAI,IAAA,cAAK,EAAE,CAAS,CAAC,OAAO,CAAC,EAAE;YAC1D,OAAO;SACR;QAED,IAAI,aAAa,IAAI,aAAa,CAAC,QAAQ,EAAE;YAC3C,OAAO,IAAA,4BAAe,EAAC,EAAE,CAAC,EAAG,CAAS,CAAC,OAAO,EAAE,CAAC,EAAG,CAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;SACnG;QAED,IAAI,CAAC,IAAA,cAAK,EAAE,CAAS,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAI,CAAS,CAAC,OAAO,CAAC;SAChG;QAED,IAAI,CAAC,IAAA,cAAK,EAAE,CAAS,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAI,CAAS,CAAC,OAAO,CAAC;SAChG;IACH,CAAC;IAED,eAAe,CACb,CAAmB,EACnB,QAAoD,EACpD,aAAuC;QAIvC,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,MAAK,KAAK,IAAI,CAAC,IAAA,cAAK,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;YACvF,MAAM,GAAG,GAAG,IAAA,4BAAe,EAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC7F,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,OAAO,GAAG,CAAC;SACZ;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAjFD,0CAiFC","file":"view-scroll-mixin.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type {\n InteractionEvent,\n IViewScrollMixin,\n ViewNavigationRange,\n ViewScrollSimpleOptions,\n ViewStateByDim\n} from '../types';\nimport { handleScrolling } from './view-utils';\n\nexport class ViewScrollMixin implements IViewScrollMixin {\n protected _scrollX: number;\n protected _scrollY: number;\n\n protected formatPanScroll(e: InteractionEvent) {\n return e;\n }\n\n protected formatWheelScroll(e: InteractionEvent) {\n /**\n * @see https://vega.github.io/vega/examples/zoomable-world-map/\n * After testing, the ctrlKey field will only be true when the directions of the two fingers are inconsistent.\n * Based on this, determine whether to trigger the scroll event.\n */\n if (!(e as any).ctrlKey && ((e as any).deltaY !== 0 || (e as any).deltaX !== 0)) {\n (e as any).scrollX = (e as any).deltaX;\n (e as any).scrollY = (e as any).deltaY;\n return e;\n }\n\n return e;\n }\n\n formatScrollEvent(e: InteractionEvent) {\n if (!e) {\n return e;\n }\n\n if (e.type === 'pan') {\n return this.formatPanScroll(e);\n }\n\n if (e.type === 'wheel') {\n return this.formatWheelScroll(e);\n }\n\n return e;\n }\n\n handleScrollStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: ViewScrollSimpleOptions\n ): ViewNavigationRange {\n e.stopPropagation();\n e.preventDefault();\n\n if (isNil((e as any).scrollX) && isNil((e as any).scrollY)) {\n return;\n }\n\n if (scrollOptions && scrollOptions.realtime) {\n return handleScrolling({ x: (e as any).scrollX, y: (e as any).scrollY }, navState, scrollOptions);\n }\n\n if (!isNil((e as any).scrollX)) {\n this._scrollX = isNil(this._scrollX) ? (e as any).scrollX : this._scrollX + (e as any).scrollX;\n }\n\n if (!isNil((e as any).scrollY)) {\n this._scrollY = isNil(this._scrollY) ? (e as any).scrollY : this._scrollY + (e as any).scrollY;\n }\n }\n\n handleScrollEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: ViewScrollSimpleOptions\n ): ViewNavigationRange {\n // do nothing now\n\n if (scrollOptions?.realtime === false && (isNil(this._scrollX) || isNil(this._scrollY))) {\n const res = handleScrolling({ x: this._scrollX, y: this._scrollY }, navState, scrollOptions);\n this._scrollX = null;\n this._scrollY = null;\n\n return res;\n }\n\n return null;\n }\n}\n"]}
@@ -48,7 +48,7 @@ class ViewZoomMixin {
48
48
  }
49
49
  handleZoomStart(e, navState, zoomOptions) {
50
50
  if (!(0, vutils_1.isNil)(e.zoomDelta)) return e.stopPropagation(), e.preventDefault(),
51
- (null == zoomOptions ? void 0 : zoomOptions.realtime) ? this._handleZooming(e, navState, zoomOptions) : ((0,
51
+ zoomOptions && zoomOptions.realtime ? this._handleZooming(e, navState, zoomOptions) : ((0,
52
52
  vutils_1.isNil)(this._zoomPos) ? this._zoomPos = {
53
53
  zoomDelta: e.zoomDelta,
54
54
  zoomX: e.zoomX,
@@ -57,7 +57,7 @@ class ViewZoomMixin {
57
57
  }
58
58
  handleZoomEnd(e, navState, zoomOptions) {
59
59
  this._lastScale = null;
60
- const res = !1 === (null == zoomOptions ? void 0 : zoomOptions.realtime) && this._zoomPos ? this._handleZooming(this._zoomPos, navState, zoomOptions) : null;
60
+ const res = zoomOptions && !1 === zoomOptions.realtime && this._zoomPos ? this._handleZooming(this._zoomPos, navState, zoomOptions) : null;
61
61
  return this._zoomPos = null, res;
62
62
  }
63
63
  handleZoomReset(e, navState, zoomOptions) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/view-zoom-mixin.ts"],"names":[],"mappings":"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","file":"view-zoom-mixin.js","sourcesContent":["import { clamp, isNil } from '@visactor/vutils';\nimport type {\n IViewZoomMixin,\n InteractionEvent,\n ViewNavigationRange,\n ViewStateByDim,\n ViewZoomSimpleOptions\n} from '../types';\nimport { getFilteredValuesFromScale, getRangeOfLinkedComponent } from './view-utils';\n\nexport class ViewZoomMixin implements IViewZoomMixin {\n protected declare _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n\n protected _lastScale: number;\n protected _zoomPos: {\n zoomDelta: number;\n zoomX: number;\n zoomY: number;\n };\n\n protected _formatPinchZoom(e: InteractionEvent) {\n const scale = (e as any).scale;\n if (isNil(this._lastScale)) {\n this._lastScale = scale;\n return e;\n }\n const zoomDelta = scale / this._lastScale;\n\n this._lastScale = scale;\n const center = (e as any).center;\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = center.x;\n (e as any).zoomY = center.y;\n\n return e;\n }\n\n protected _formatWheelZoom(e: InteractionEvent) {\n /**\n * @see https://vega.github.io/vega/examples/zoomable-world-map/\n * After testing, the ctrlKey field will only be true when the directions of the two fingers are inconsistent.\n * Based on this, determine whether to trigger the scroll event.\n */\n if (!(e as any).ctrlKey) {\n (e as any).zoomDelta = null;\n (e as any).zoomX = null;\n (e as any).zoomY = null;\n return e;\n }\n\n // @see https://vega.github.io/vega/examples/zoomable-world-map/\n const zoomDelta = Math.pow(1.0005, -(e as any).deltaY * Math.pow(16, (e as any).deltaMode));\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = e.canvasX;\n (e as any).zoomY = e.canvasY;\n return e;\n }\n\n formatZoomEvent(e: InteractionEvent) {\n if (!e) {\n return e;\n }\n\n if (e.type === 'pinch') {\n return this._formatPinchZoom(e);\n }\n\n return this._formatWheelZoom(e);\n }\n\n updateZoomRange(\n rangeFactor: [number, number] = [0, 1],\n range: [number, number],\n zoomEvent: { zoomDelta: number; zoomX: number; zoomY: number },\n zoomOptions?: { rate?: number; focus?: boolean }\n ) {\n const { zoomDelta } = zoomEvent;\n\n const rangeDelta = Math.abs(rangeFactor[1] - rangeFactor[0]);\n\n if (rangeDelta >= 1 && zoomDelta >= 1) {\n return;\n }\n if (rangeDelta <= 1e-3 && zoomDelta <= 1) {\n return;\n }\n const value = (rangeDelta * (zoomDelta - 1) * (zoomOptions.rate ?? 1)) / 2;\n\n const start = clamp(rangeFactor[0] - value, 0, 1);\n const end = clamp(rangeFactor[1] + value, 0, 1);\n\n return [Math.min(start, end), Math.max(start, end)] as [number, number];\n }\n\n protected _handleZooming(\n zoomPos: { zoomDelta: number; zoomX: number; zoomY: number },\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent, rangeFactor } = navState[dim];\n\n if (linkedComponent) {\n res[dim] = this.updateZoomRange(getRangeOfLinkedComponent(linkedComponent), null, zoomPos, zoomOptions);\n } else if (scale) {\n const innerScale = scale.getScale();\n const newRange = this.updateZoomRange(rangeFactor, innerScale, zoomPos, zoomOptions);\n\n if (newRange) {\n navState[dim].rangeFactor = newRange;\n\n if (data) {\n navState[dim].filterValue = newRange;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n }\n });\n return res;\n }\n\n handleZoomStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n if (isNil((e as any).zoomDelta)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n\n if (zoomOptions?.realtime) {\n return this._handleZooming(\n e as unknown as { zoomDelta: number; zoomX: number; zoomY: number },\n navState,\n zoomOptions\n );\n }\n\n if (isNil(this._zoomPos)) {\n this._zoomPos = {\n zoomDelta: (e as any).zoomDelta,\n zoomX: (e as any).zoomX,\n zoomY: (e as any).zoomY\n };\n } else {\n this._zoomPos.zoomDelta *= (e as any).zoomDelta;\n }\n\n return null;\n }\n\n handleZoomEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n this._lastScale = null;\n const res =\n zoomOptions?.realtime === false && this._zoomPos\n ? this._handleZooming(this._zoomPos, navState, zoomOptions)\n : null;\n\n this._zoomPos = null;\n\n return res;\n }\n\n handleZoomReset(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent } = navState[dim];\n const newRange = [0, 1];\n\n if (linkedComponent) {\n res[dim] = newRange;\n } else if (scale) {\n navState[dim].rangeFactor = null;\n\n if (data) {\n navState[dim].filterValue = null;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n });\n return res;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/view-zoom-mixin.ts"],"names":[],"mappings":"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","file":"view-zoom-mixin.js","sourcesContent":["import { clamp, isNil } from '@visactor/vutils';\nimport type {\n IViewZoomMixin,\n InteractionEvent,\n ViewNavigationRange,\n ViewStateByDim,\n ViewZoomSimpleOptions\n} from '../types';\nimport { getFilteredValuesFromScale, getRangeOfLinkedComponent } from './view-utils';\n\nexport class ViewZoomMixin implements IViewZoomMixin {\n protected declare _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n\n protected _lastScale: number;\n protected _zoomPos: {\n zoomDelta: number;\n zoomX: number;\n zoomY: number;\n };\n\n protected _formatPinchZoom(e: InteractionEvent) {\n const scale = (e as any).scale;\n if (isNil(this._lastScale)) {\n this._lastScale = scale;\n return e;\n }\n const zoomDelta = scale / this._lastScale;\n\n this._lastScale = scale;\n const center = (e as any).center;\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = center.x;\n (e as any).zoomY = center.y;\n\n return e;\n }\n\n protected _formatWheelZoom(e: InteractionEvent) {\n /**\n * @see https://vega.github.io/vega/examples/zoomable-world-map/\n * After testing, the ctrlKey field will only be true when the directions of the two fingers are inconsistent.\n * Based on this, determine whether to trigger the scroll event.\n */\n if (!(e as any).ctrlKey) {\n (e as any).zoomDelta = null;\n (e as any).zoomX = null;\n (e as any).zoomY = null;\n return e;\n }\n\n // @see https://vega.github.io/vega/examples/zoomable-world-map/\n const zoomDelta = Math.pow(1.0005, -(e as any).deltaY * Math.pow(16, (e as any).deltaMode));\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = e.canvasX;\n (e as any).zoomY = e.canvasY;\n return e;\n }\n\n formatZoomEvent(e: InteractionEvent) {\n if (!e) {\n return e;\n }\n\n if (e.type === 'pinch') {\n return this._formatPinchZoom(e);\n }\n\n return this._formatWheelZoom(e);\n }\n\n updateZoomRange(\n rangeFactor: [number, number] = [0, 1],\n range: [number, number],\n zoomEvent: { zoomDelta: number; zoomX: number; zoomY: number },\n zoomOptions?: { rate?: number; focus?: boolean }\n ) {\n const { zoomDelta } = zoomEvent;\n\n const rangeDelta = Math.abs(rangeFactor[1] - rangeFactor[0]);\n\n if (rangeDelta >= 1 && zoomDelta >= 1) {\n return;\n }\n if (rangeDelta <= 1e-3 && zoomDelta <= 1) {\n return;\n }\n const value = (rangeDelta * (zoomDelta - 1) * (zoomOptions.rate ?? 1)) / 2;\n\n const start = clamp(rangeFactor[0] - value, 0, 1);\n const end = clamp(rangeFactor[1] + value, 0, 1);\n\n return [Math.min(start, end), Math.max(start, end)] as [number, number];\n }\n\n protected _handleZooming(\n zoomPos: { zoomDelta: number; zoomX: number; zoomY: number },\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent, rangeFactor } = navState[dim];\n\n if (linkedComponent) {\n res[dim] = this.updateZoomRange(getRangeOfLinkedComponent(linkedComponent), null, zoomPos, zoomOptions);\n } else if (scale) {\n const innerScale = scale.getScale();\n const newRange = this.updateZoomRange(rangeFactor, innerScale, zoomPos, zoomOptions);\n\n if (newRange) {\n navState[dim].rangeFactor = newRange;\n\n if (data) {\n navState[dim].filterValue = newRange;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n }\n });\n return res;\n }\n\n handleZoomStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n if (isNil((e as any).zoomDelta)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n\n if (zoomOptions && zoomOptions.realtime) {\n return this._handleZooming(\n e as unknown as { zoomDelta: number; zoomX: number; zoomY: number },\n navState,\n zoomOptions\n );\n }\n\n if (isNil(this._zoomPos)) {\n this._zoomPos = {\n zoomDelta: (e as any).zoomDelta,\n zoomX: (e as any).zoomX,\n zoomY: (e as any).zoomY\n };\n } else {\n this._zoomPos.zoomDelta *= (e as any).zoomDelta;\n }\n\n return null;\n }\n\n handleZoomEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n this._lastScale = null;\n const res =\n zoomOptions && zoomOptions.realtime === false && this._zoomPos\n ? this._handleZooming(this._zoomPos, navState, zoomOptions)\n : null;\n\n this._zoomPos = null;\n\n return res;\n }\n\n handleZoomReset(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent } = navState[dim];\n const newRange = [0, 1];\n\n if (linkedComponent) {\n res[dim] = newRange;\n } else if (scale) {\n navState[dim].rangeFactor = null;\n\n if (data) {\n navState[dim].filterValue = null;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n });\n return res;\n }\n}\n"]}
@@ -11,8 +11,7 @@ vutils_1.isNil)(evtSpec.type) ? el => el && el.mark.markType === evtSpec.type :
11
11
 
12
12
  exports.generateFilterByMark = generateFilterByMark;
13
13
 
14
- const parseHandler = (callback, config) => (null == config ? void 0 : config.debounce) ? (0,
15
- vutils_1.debounce)(callback, config.debounce) : (null == config ? void 0 : config.throttle) ? (0,
14
+ const parseHandler = (callback, config) => config && config.debounce ? (0, vutils_1.debounce)(callback, config.debounce) : config && config.throttle ? (0,
16
15
  vutils_1.throttle)(callback, config.throttle) : callback;
17
16
 
18
17
  exports.parseHandler = parseHandler;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/parse/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["import { debounce, isNil, throttle } from '@visactor/vutils';\nimport type {\n EventSourceType,\n ParsedViewEventSpec,\n ParsedWindowEventSpec,\n EventCallback,\n MarkType,\n IElement\n} from '../types';\nimport { isMarkType } from '../graph/util/graphic';\nimport { EVENT_SOURCE_VIEW, EVENT_SOURCE_WINDOW } from '../view/constants';\n\nexport const generateFilterByMark = (evtSpec: Partial<ParsedViewEventSpec | ParsedWindowEventSpec>) => {\n if (isNil(evtSpec.markId)) {\n return (el: IElement) => {\n return el && el.mark.id() === evtSpec.markId;\n };\n }\n\n if (isNil(evtSpec.markName)) {\n return (el: IElement) => {\n return el && el.mark.name() === evtSpec.markName;\n };\n }\n\n if (isNil(evtSpec.type)) {\n return (el: IElement) => {\n return el && el.mark.markType === evtSpec.type;\n };\n }\n\n return () => true;\n};\n\nexport const parseHandler = (callback: EventCallback, config: { debounce?: number; throttle?: number }) => {\n if (config?.debounce) {\n return debounce(callback, config.debounce);\n }\n\n if (config?.throttle) {\n return throttle(callback, config.throttle);\n }\n\n return callback;\n};\n\nconst JOIN_SYMBOL = ':';\nexport const NAME_PREFIX = '@';\nexport const ID_PREFIX = '#';\n\n/**\n * Parse an event selector string.\n * Supported rules:\n * 1. mousedown\n * 2. rect:mousedown\n * 3. window:mousemove\n * 4. @foo:mousedown\n * Returns an event stream definitions.\n */\nexport const parseEventSelector = (\n selector: string,\n source: EventSourceType = EVENT_SOURCE_VIEW\n): Partial<ParsedViewEventSpec | ParsedWindowEventSpec> => {\n const spec: Partial<ParsedViewEventSpec | ParsedWindowEventSpec> = {};\n\n const splitArr = selector.split(JOIN_SYMBOL);\n\n if (splitArr.length === 2) {\n const [space, eventType] = splitArr;\n\n if (space[0] === ID_PREFIX) {\n // events on marks id\n spec.markId = space.slice(1);\n spec.source = source;\n } else if (space[0] === NAME_PREFIX) {\n // events on marks name\n spec.markName = space.slice(1);\n spec.source = source;\n } else if (isMarkType(space)) {\n spec.markType = space as MarkType;\n spec.source = source;\n } else if (space === EVENT_SOURCE_WINDOW) {\n spec.source = EVENT_SOURCE_WINDOW;\n } else {\n spec.source = source;\n }\n\n spec.type = eventType;\n } else if (splitArr.length === 1) {\n spec.type = selector;\n spec.source = source;\n }\n\n return spec;\n};\n"]}
1
+ {"version":3,"sources":["../src/parse/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["import { debounce, isNil, throttle } from '@visactor/vutils';\nimport type {\n EventSourceType,\n ParsedViewEventSpec,\n ParsedWindowEventSpec,\n EventCallback,\n MarkType,\n IElement\n} from '../types';\nimport { isMarkType } from '../graph/util/graphic';\nimport { EVENT_SOURCE_VIEW, EVENT_SOURCE_WINDOW } from '../view/constants';\n\nexport const generateFilterByMark = (evtSpec: Partial<ParsedViewEventSpec | ParsedWindowEventSpec>) => {\n if (isNil(evtSpec.markId)) {\n return (el: IElement) => {\n return el && el.mark.id() === evtSpec.markId;\n };\n }\n\n if (isNil(evtSpec.markName)) {\n return (el: IElement) => {\n return el && el.mark.name() === evtSpec.markName;\n };\n }\n\n if (isNil(evtSpec.type)) {\n return (el: IElement) => {\n return el && el.mark.markType === evtSpec.type;\n };\n }\n\n return () => true;\n};\n\nexport const parseHandler = (callback: EventCallback, config: { debounce?: number; throttle?: number }) => {\n if (config && config.debounce) {\n return debounce(callback, config.debounce);\n }\n\n if (config && config.throttle) {\n return throttle(callback, config.throttle);\n }\n\n return callback;\n};\n\nconst JOIN_SYMBOL = ':';\nexport const NAME_PREFIX = '@';\nexport const ID_PREFIX = '#';\n\n/**\n * Parse an event selector string.\n * Supported rules:\n * 1. mousedown\n * 2. rect:mousedown\n * 3. window:mousemove\n * 4. @foo:mousedown\n * Returns an event stream definitions.\n */\nexport const parseEventSelector = (\n selector: string,\n source: EventSourceType = EVENT_SOURCE_VIEW\n): Partial<ParsedViewEventSpec | ParsedWindowEventSpec> => {\n const spec: Partial<ParsedViewEventSpec | ParsedWindowEventSpec> = {};\n\n const splitArr = selector.split(JOIN_SYMBOL);\n\n if (splitArr.length === 2) {\n const [space, eventType] = splitArr;\n\n if (space[0] === ID_PREFIX) {\n // events on marks id\n spec.markId = space.slice(1);\n spec.source = source;\n } else if (space[0] === NAME_PREFIX) {\n // events on marks name\n spec.markName = space.slice(1);\n spec.source = source;\n } else if (isMarkType(space)) {\n spec.markType = space as MarkType;\n spec.source = source;\n } else if (space === EVENT_SOURCE_WINDOW) {\n spec.source = EVENT_SOURCE_WINDOW;\n } else {\n spec.source = source;\n }\n\n spec.type = eventType;\n } else if (splitArr.length === 1) {\n spec.type = selector;\n spec.source = source;\n }\n\n return spec;\n};\n"]}
@@ -71,7 +71,7 @@ function isMultiScaleDataType(spec) {
71
71
  }
72
72
 
73
73
  function parseMultiScaleDataType(spec, view) {
74
- if ((null == spec ? void 0 : spec.datas) && spec.datas.length) {
74
+ if (spec && spec.datas && spec.datas.length) {
75
75
  const res = [];
76
76
  return spec.datas.forEach((data => {
77
77
  const gramarBase = parseScaleDataType(data, view);
@@ -221,10 +221,11 @@ function configureScaleDomain(spec, scale, parameters) {
221
221
  }
222
222
 
223
223
  function configureContinuousScale(spec, scale, parameters) {
224
+ var _a;
224
225
  (0, util_1.invokeFunctionType)(spec.roundRange, parameters, scale) && scale.rangeRound(scale.range(), !0);
225
- const config = (0, util_1.invokeFunctionType)(spec.config, parameters, scale);
226
- (null == config ? void 0 : config.interpolate) && scale.interpolate(config.interpolate, !0),
227
- (0, vutils_1.isNil)(null == config ? void 0 : config.clamp) || ((0, vutils_1.isFunction)(config.clamp) ? scale.clamp(!0, config.clamp, !0) : scale.clamp(config.clamp, void 0, !0));
226
+ const {interpolate: interpolate, clamp: clamp} = null !== (_a = (0, util_1.invokeFunctionType)(spec.config, parameters, scale)) && void 0 !== _a ? _a : {};
227
+ interpolate && scale.interpolate(interpolate, !0), (0, vutils_1.isNil)(clamp) || ((0,
228
+ vutils_1.isFunction)(clamp) ? scale.clamp(!0, clamp, !0) : scale.clamp(clamp, void 0, !0));
228
229
  const tickCount = (0, util_1.invokeFunctionType)(spec.tickCount, parameters, scale);
229
230
  tickCount && scale.tickData(tickCount);
230
231
  }