@visactor/vrender-components 0.21.0-vstory.2 → 0.21.0-vstory.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.
- package/cjs/axis/type.d.ts +2 -2
- package/cjs/axis/type.js.map +1 -1
- package/cjs/brush/brush.js +1 -2
- package/cjs/brush/type.js +2 -1
- package/cjs/data-zoom/type.d.ts +1 -1
- package/cjs/data-zoom/type.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interface.js.map +1 -1
- package/cjs/label/arc.js +1 -1
- package/cjs/label/arc.js.map +1 -1
- package/cjs/label/base.js +20 -10
- package/cjs/label/base.js.map +1 -1
- package/cjs/label/overlap/place.d.ts +6 -1
- package/cjs/label/overlap/place.js +4 -4
- package/cjs/label/overlap/place.js.map +1 -1
- package/cjs/label/overlap/shiftY.d.ts +10 -4
- package/cjs/label/overlap/shiftY.js +103 -27
- package/cjs/label/overlap/shiftY.js.map +1 -1
- package/cjs/legend/color/type.d.ts +2 -2
- package/cjs/legend/color/type.js.map +1 -1
- package/cjs/legend/discrete/discrete.d.ts +7 -0
- package/cjs/legend/discrete/discrete.js +106 -23
- package/cjs/legend/discrete/discrete.js.map +1 -1
- package/cjs/legend/discrete/type.d.ts +16 -4
- package/cjs/legend/discrete/type.js.map +1 -1
- package/cjs/marker/type.d.ts +2 -2
- package/cjs/marker/type.js.map +1 -1
- package/cjs/player/type/discrete-player.d.ts +3 -3
- package/cjs/player/type/discrete-player.js.map +1 -1
- package/cjs/player/type/index.d.ts +2 -2
- package/cjs/player/type/index.js.map +1 -1
- package/cjs/radio/radio.d.ts +2 -2
- package/cjs/radio/radio.js +1 -1
- package/cjs/radio/radio.js.map +1 -1
- package/cjs/scrollbar/index.d.ts +1 -0
- package/cjs/scrollbar/index.js +2 -1
- package/cjs/scrollbar/index.js.map +1 -1
- package/cjs/scrollbar/scrollbar-plugin.d.ts +18 -15
- package/cjs/scrollbar/scrollbar-plugin.js +109 -97
- package/cjs/scrollbar/scrollbar-plugin.js.map +1 -1
- package/cjs/timeline/type.js.map +1 -1
- package/dist/index.es.js +2323 -1749
- package/es/axis/type.d.ts +2 -2
- package/es/axis/type.js.map +1 -1
- package/es/brush/brush.js +1 -2
- package/es/brush/type.js +2 -1
- package/es/data-zoom/type.d.ts +1 -1
- package/es/data-zoom/type.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/interface.js.map +1 -1
- package/es/label/arc.js +1 -1
- package/es/label/arc.js.map +1 -1
- package/es/label/base.js +20 -9
- package/es/label/base.js.map +1 -1
- package/es/label/overlap/place.d.ts +6 -1
- package/es/label/overlap/place.js +4 -4
- package/es/label/overlap/place.js.map +1 -1
- package/es/label/overlap/shiftY.d.ts +10 -4
- package/es/label/overlap/shiftY.js +99 -24
- package/es/label/overlap/shiftY.js.map +1 -1
- package/es/legend/color/type.d.ts +2 -2
- package/es/legend/color/type.js.map +1 -1
- package/es/legend/discrete/discrete.d.ts +7 -0
- package/es/legend/discrete/discrete.js +106 -24
- package/es/legend/discrete/discrete.js.map +1 -1
- package/es/legend/discrete/type.d.ts +16 -4
- package/es/legend/discrete/type.js.map +1 -1
- package/es/marker/type.d.ts +2 -2
- package/es/marker/type.js.map +1 -1
- package/es/player/type/discrete-player.d.ts +3 -3
- package/es/player/type/discrete-player.js.map +1 -1
- package/es/player/type/index.d.ts +2 -2
- package/es/player/type/index.js.map +1 -1
- package/es/radio/radio.d.ts +2 -2
- package/es/radio/radio.js +2 -2
- package/es/radio/radio.js.map +1 -1
- package/es/scrollbar/index.d.ts +1 -0
- package/es/scrollbar/index.js +2 -0
- package/es/scrollbar/index.js.map +1 -1
- package/es/scrollbar/scrollbar-plugin.d.ts +18 -15
- package/es/scrollbar/scrollbar-plugin.js +111 -94
- package/es/scrollbar/scrollbar-plugin.js.map +1 -1
- package/es/timeline/type.js.map +1 -1
- package/package.json +10 -9
package/cjs/marker/type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/marker/type.ts"],"names":[],"mappings":";;;AAmBA,IAAY,sBAkBX;AAlBD,WAAY,sBAAsB;IAChC,yCAAe,CAAA;IACf,+CAAqB,CAAA;IACrB,qDAA2B,CAAA;IAC3B,qDAA2B,CAAA;IAC3B,2DAAiC,CAAA;IACjC,iEAAuC,CAAA;IAEvC,2CAAiB,CAAA;IACjB,6DAAmC,CAAA;IACnC,mEAAyC,CAAA;IAEzC,qCAAW,CAAA;IACX,2CAAiB,CAAA;IACjB,iDAAuB,CAAA;IACvB,iDAAuB,CAAA;IACvB,uDAA6B,CAAA;IAC7B,6DAAmC,CAAA;AACrC,CAAC,EAlBW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAkBjC;AAED,IAAY,sBAUX;AAVD,WAAY,sBAAsB;IAChC,uCAAa,CAAA;IACb,yCAAe,CAAA;IACf,qCAAW,CAAA;IACX,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,mDAAyB,CAAA;IACzB,qDAA2B,CAAA;IAC3B,iDAAuB,CAAA;IACvB,uDAA6B,CAAA;AAC/B,CAAC,EAVW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAUjC;AAED,IAAY,2BAQX;AARD,WAAY,2BAA2B;IACrC,8DAA+B,CAAA;IAC/B,0DAA2B,CAAA;IAC3B,gEAAiC,CAAA;IACjC,8DAA+B,CAAA;IAC/B,0DAA2B,CAAA;IAC3B,gEAAiC,CAAA;IACjC,gDAAiB,CAAA;AACnB,CAAC,EARW,2BAA2B,GAA3B,mCAA2B,KAA3B,mCAA2B,QAQtC;AAED,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,qCAAW,CAAA;IACX,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,iDAAuB,CAAA;IACvB,uDAA6B,CAAA;IAC7B,uDAA6B,CAAA;AAC/B,CAAC,EAPW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAOjC","file":"type.js","sourcesContent":["import type {\n EasingType,\n IArcGraphicAttribute,\n IGroup,\n IGroupGraphicAttribute,\n IImageGraphicAttribute,\n ILineGraphicAttribute,\n IPolygonAttribute,\n IPolygonGraphicAttribute,\n IRectGraphicAttribute,\n IRichTextGraphicAttribute,\n ISymbol,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type { CommonSegmentAttributes, ILineGraphicWithCornerRadius, SegmentAttributes } from '../segment';\nimport type { TagAttributes } from '../tag';\nimport type { Point, State } from '../core/type';\n\nexport enum IMarkLineLabelPosition {\n start = 'start',\n startTop = 'startTop',\n startBottom = 'startBottom',\n insideStart = 'insideStart',\n insideStartTop = 'insideStartTop',\n insideStartBottom = 'insideStartBottom',\n\n middle = 'middle',\n insideMiddleTop = 'insideMiddleTop',\n insideMiddleBottom = 'insideMiddleBottom',\n\n end = 'end',\n endTop = 'endTop',\n endBottom = 'endBottom',\n insideEnd = 'insideEnd',\n insideEndTop = 'insideEndTop',\n insideEndBottom = 'insideEndBottom'\n}\n\nexport enum IMarkAreaLabelPosition {\n left = 'left',\n right = 'right',\n top = 'top',\n bottom = 'bottom',\n middle = 'middle',\n insideLeft = 'insideLeft',\n insideRight = 'insideRight',\n insideTop = 'insideTop',\n insideBottom = 'insideBottom'\n}\n\nexport enum IMarkCommonArcLabelPosition {\n arcInnerStart = 'arcInnerStart',\n arcInnerEnd = 'arcInnerEnd',\n arcInnerMiddle = 'arcInnerMiddle',\n arcOuterStart = 'arcOuterStart',\n arcOuterEnd = 'arcOuterEnd',\n arcOuterMiddle = 'arcOuterMiddle',\n center = 'center'\n}\n\nexport enum IMarkPointItemPosition {\n top = 'top',\n bottom = 'bottom',\n middle = 'middle',\n insideTop = 'insideTop',\n insideBottom = 'insideBottom',\n insideMiddle = 'insideMiddle'\n}\n\nexport type IMarkBackgroundAttributes = {\n /**\n * 是否绘制背景层\n */\n visible: boolean;\n /**\n * TODO: 根据文字宽度进行背景 panel size自适应\n */\n autoHeight?: boolean;\n /**\n * TODO: 根据文高度度进行背景 panel size自适应\n */\n autoWidth?: boolean;\n} & Partial<IRectGraphicAttribute>;\n\nexport type IMarkLabel = Omit<TagAttributes, 'x' | 'y' | 'panel'> & {\n /**\n * 标签的背景面板配置\n */\n panel?: IMarkBackgroundAttributes;\n};\n\nexport type IMarkRef = {\n /**\n * 自动旋转,沿着线的方向\n * @default\n * mark-line/mark-area/mark-point: false - 旧逻辑里autoRotate是false, 保持不变\n * mark-arc-line/mark-arc-area: true - 新增逻辑, 如果不开启的话, 效果不太好, 所以默认true\n * mark-point - 旧逻辑里autoRotate是true, 保持不变\n */\n autoRotate?: boolean;\n /**\n * label 相对line平行方向上的偏移\n */\n refX?: number;\n /**\n * label 相对line正交方向上的偏移\n */\n refY?: number;\n /**\n * label 相对默认角度的偏移 (label跟随line的角度做自动旋转时,默认按照line的平行向量作为初始角度)\n */\n refAngle?: number;\n};\n\nexport type MarkerAttrs<AnimationType> = IGroupGraphicAttribute & {\n type?: 'line' | 'arc-line' | 'area' | 'arc-area' | 'point';\n /**\n * 是否支持交互\n * @default true\n */\n interactive?: boolean;\n /**\n * 是否开启选中交互\n * @default false\n */\n select?: boolean;\n /**\n * 是否开启 hover 交互\n * @default false\n */\n hover?: boolean;\n /**\n * 是否显示marker组件\n * @default true\n */\n visible?: boolean;\n /**\n * 是否将组件在绘制区域内进行剪切\n * @default true\n */\n clipInRange?: boolean;\n /**\n * 组件绘制范围配置\n */\n limitRect?: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n} & BaseMarkerAnimation<AnimationType>;\n\n/** animation type */\nexport type BaseMarkerAnimation<T> = {\n animation?: MarkerAnimation<T> | boolean;\n animationEnter?: MarkerUpdateAnimation<T>;\n animationUpdate?: MarkerUpdateAnimation<T>;\n animationExit?: MarkerExitAnimation;\n};\nexport type MarkerAnimation<T> = MarkerUpdateAnimation<T> | MarkerUpdateAnimation<T>;\n\nexport type MarkerUpdateAnimation<T> = {\n type: T;\n} & MarkerExitAnimation;\n\nexport type MarkCommonLineAnimationType = 'clipIn' | 'fadeIn';\n\nexport type CommonMarkAreaAnimationType = 'fadeIn';\n\nexport type MarkPointAnimationType = 'callIn' | 'fadeIn';\n\nexport type MarkerExitAnimation = {\n type: 'fadeOut';\n duration?: number;\n delay?: number;\n easing?: EasingType;\n};\n\nexport type MarkerAnimationState = 'enter' | 'update' | 'exit';\n\n/** state type */\nexport type MarkCommonLineState<LineAttr> = {\n line?: State<LineAttr>;\n lineStartSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n lineEndSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n label?: State<Partial<ITextGraphicAttribute>>;\n labelBackground?: State<Partial<IRectGraphicAttribute>>;\n};\n\nexport type CommonMarkAreaState<AreaAttr> = {\n area?: State<Partial<AreaAttr>>;\n label?: State<Partial<ITextGraphicAttribute>>;\n labelBackground?: State<Partial<IRectGraphicAttribute>>;\n};\n\nexport type MarkPointState = {\n line?: State<ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[]>;\n lineStartSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n lineEndSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n symbol?: State<Partial<ISymbolGraphicAttribute>>;\n image?: State<Partial<IImageGraphicAttribute>>;\n text?: State<Partial<ITextGraphicAttribute>>;\n textBackground?: State<Partial<IRectGraphicAttribute>>;\n richText?: State<Partial<IRichTextGraphicAttribute>>;\n customMark?: State<Partial<IGroupGraphicAttribute>>;\n targetItem?: State<Partial<ISymbolGraphicAttribute>>;\n};\n\nexport type MarkCommonLineAttrs<LineAttr, LineLabelPosition, MarkCommonLineAnimationType> =\n MarkerAttrs<MarkCommonLineAnimationType> &\n Omit<CommonSegmentAttributes, 'state' | 'lineStyle'> & {\n /**\n * 标签\n */\n label?: {\n /**\n * label 相对line的位置\n */\n position?: LineLabelPosition;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n } & IMarkRef &\n IMarkLabel;\n state?: MarkCommonLineState<LineAttr>;\n };\n\nexport type MarkLineAttrs = MarkCommonLineAttrs<\n ILineGraphicWithCornerRadius | ILineGraphicAttribute[],\n keyof typeof IMarkLineLabelPosition,\n MarkCommonLineAnimationType\n> & {\n type?: 'line';\n /**\n * 是否对 points 进行多段处理,默认为 false,即直接将所有的点连接成线。\n * 如果需要进行多段处理,需要将 points 属性配置为 Point[][] 类型\n * @default false\n */\n multiSegment?: boolean;\n /**\n * 在 `multiSegment` 属性开启的前提下,用于声明那一段线段用来作为主线段,如果不声明,默认全段为主线段\n */\n mainSegmentIndex?: number;\n /**\n * 构成line的点: 如果是两个点,则为直线;多个点则为曲线\n */\n points: Point[] | Point[][];\n lineStyle?: ILineGraphicAttribute;\n};\n\nexport type MarkArcLineAttrs = MarkCommonLineAttrs<\n IArcGraphicAttribute,\n keyof typeof IMarkCommonArcLabelPosition,\n MarkCommonLineAnimationType\n> & {\n type?: 'arc-line';\n /**\n * 弧线中心位置\n */\n center: {\n x: number;\n y: number;\n };\n /**\n * 弧线半径\n */\n radius: number;\n /**\n * 弧线起始角度(弧度)\n */\n startAngle: number;\n /**\n * 弧线终点角度(弧度)\n */\n endAngle: number;\n lineStyle?: IArcGraphicAttribute;\n};\n\nexport type MarkAreaAttrs = MarkerAttrs<CommonMarkAreaAnimationType> & {\n type?: 'area';\n /**\n * 构成area的点\n */\n points: Point[];\n /**\n * 标签\n */\n label?: {\n position?: keyof typeof IMarkAreaLabelPosition;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n } & IMarkLabel;\n /**\n * area的样式\n */\n areaStyle?: IPolygonAttribute;\n\n state?: CommonMarkAreaState<IPolygonGraphicAttribute>;\n};\n\nexport type MarkArcAreaAttrs = MarkerAttrs<CommonMarkAreaAnimationType> & {\n type?: 'arc-area';\n /**\n * 扇区中心位置\n */\n center: {\n x: number;\n y: number;\n };\n /**\n * 扇区内半径\n */\n innerRadius: number;\n /**\n * 扇区外半径\n */\n outerRadius: number;\n /**\n * 扇区起始角度(弧度)\n */\n startAngle: number;\n /**\n * 扇区终点角度(弧度)\n */\n endAngle: number;\n /**\n * 标签\n */\n label?: {\n position?: keyof typeof IMarkCommonArcLabelPosition;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n } & IMarkRef &\n IMarkLabel;\n /**\n * area的样式\n */\n areaStyle?: IArcGraphicAttribute;\n\n state?: CommonMarkAreaState<IArcGraphicAttribute>;\n};\n\nexport type IItemContent = IMarkRef & {\n /**\n * 标注类型\n * Tips: 保留'richText'与之前的定义做兼容\n */\n type?: 'symbol' | 'text' | 'image' | 'richText' | 'custom';\n position?: keyof typeof IMarkPointItemPosition;\n /**\n * x 方向偏移量\n */\n offsetX?: number;\n /**\n * y 方向偏移量\n */\n offsetY?: number;\n /**\n * type为symbol时, symbol的样式\n */\n symbolStyle?: ISymbolGraphicAttribute;\n /**\n * type为image时, image的样式\n */\n imageStyle?: IImageGraphicAttribute;\n /**\n * type为text时, text的配置\n * 'text'类型的ItemContent新增三种子类型:'text','rich','html'。配置在textStyle.type上,继承自TagAttributes。\n */\n textStyle?: IMarkLabel;\n /**\n * type为rich text时, rich text的样式\n */\n richTextStyle?: IRichTextGraphicAttribute;\n /**\n * type为custom时,允许以callback的方式传入需要render的item\n */\n renderCustomCallback?: () => IGroup;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n};\n\nexport type IItemLine = {\n /** TODO:'type-opo' */\n type?: 'type-s' | 'type-do' | 'type-po' | 'type-op' | 'type-arc';\n visible?: boolean;\n /**\n * 当type为type-arc时生效, 数值决定曲率, 符号决定法向, 不能等于0\n * @default 0.8\n */\n arcRatio?: number;\n /**\n * 垂直于引导线的装饰线,参考案例: https://observablehq.com/@mikelotis/edmonton-population-history-line-chart\n */\n decorativeLine?: {\n visible?: boolean;\n length?: number;\n };\n} & Omit<SegmentAttributes, 'points'>;\n\nexport type MarkPointAttrs = Omit<MarkerAttrs<MarkPointAnimationType>, 'labelStyle'> & {\n /**\n * markPoint的位置(也是path的起点)\n */\n position: Point;\n /**\n * 标注引导线\n */\n itemLine?: IItemLine;\n\n /**\n * 标注内容\n */\n itemContent?: IItemContent;\n\n /**\n * 被标注的内容\n */\n targetSymbol?: {\n /**\n * 被标注内容与标记线间的间隙\n * @default 0\n */\n offset?: number;\n /**\n * 是否显示\n * @default false\n */\n visible?: boolean;\n /**\n * 大小\n * @default 20\n */\n size?: number;\n style?: ISymbol;\n };\n\n state?: MarkPointState;\n} & BaseMarkerAnimation<MarkPointAnimationType>;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/marker/type.ts"],"names":[],"mappings":";;;AAmBA,IAAY,sBAkBX;AAlBD,WAAY,sBAAsB;IAChC,yCAAe,CAAA;IACf,+CAAqB,CAAA;IACrB,qDAA2B,CAAA;IAC3B,qDAA2B,CAAA;IAC3B,2DAAiC,CAAA;IACjC,iEAAuC,CAAA;IAEvC,2CAAiB,CAAA;IACjB,6DAAmC,CAAA;IACnC,mEAAyC,CAAA;IAEzC,qCAAW,CAAA;IACX,2CAAiB,CAAA;IACjB,iDAAuB,CAAA;IACvB,iDAAuB,CAAA;IACvB,uDAA6B,CAAA;IAC7B,6DAAmC,CAAA;AACrC,CAAC,EAlBW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAkBjC;AAED,IAAY,sBAUX;AAVD,WAAY,sBAAsB;IAChC,uCAAa,CAAA;IACb,yCAAe,CAAA;IACf,qCAAW,CAAA;IACX,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,mDAAyB,CAAA;IACzB,qDAA2B,CAAA;IAC3B,iDAAuB,CAAA;IACvB,uDAA6B,CAAA;AAC/B,CAAC,EAVW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAUjC;AAED,IAAY,2BAQX;AARD,WAAY,2BAA2B;IACrC,8DAA+B,CAAA;IAC/B,0DAA2B,CAAA;IAC3B,gEAAiC,CAAA;IACjC,8DAA+B,CAAA;IAC/B,0DAA2B,CAAA;IAC3B,gEAAiC,CAAA;IACjC,gDAAiB,CAAA;AACnB,CAAC,EARW,2BAA2B,GAA3B,mCAA2B,KAA3B,mCAA2B,QAQtC;AAED,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,qCAAW,CAAA;IACX,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,iDAAuB,CAAA;IACvB,uDAA6B,CAAA;IAC7B,uDAA6B,CAAA;AAC/B,CAAC,EAPW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAOjC","file":"type.js","sourcesContent":["import type {\n EasingType,\n IArcGraphicAttribute,\n IGroup,\n IGroupGraphicAttribute,\n IImageGraphicAttribute,\n ILineGraphicAttribute,\n IPolygonAttribute,\n IPolygonGraphicAttribute,\n IRectGraphicAttribute,\n IRichTextGraphicAttribute,\n ISymbol,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type { CommonSegmentAttributes, ILineGraphicWithCornerRadius, SegmentAttributes } from '../segment/type';\nimport type { TagAttributes } from '../tag/type';\nimport type { Point, State } from '../core/type';\n\nexport enum IMarkLineLabelPosition {\n start = 'start',\n startTop = 'startTop',\n startBottom = 'startBottom',\n insideStart = 'insideStart',\n insideStartTop = 'insideStartTop',\n insideStartBottom = 'insideStartBottom',\n\n middle = 'middle',\n insideMiddleTop = 'insideMiddleTop',\n insideMiddleBottom = 'insideMiddleBottom',\n\n end = 'end',\n endTop = 'endTop',\n endBottom = 'endBottom',\n insideEnd = 'insideEnd',\n insideEndTop = 'insideEndTop',\n insideEndBottom = 'insideEndBottom'\n}\n\nexport enum IMarkAreaLabelPosition {\n left = 'left',\n right = 'right',\n top = 'top',\n bottom = 'bottom',\n middle = 'middle',\n insideLeft = 'insideLeft',\n insideRight = 'insideRight',\n insideTop = 'insideTop',\n insideBottom = 'insideBottom'\n}\n\nexport enum IMarkCommonArcLabelPosition {\n arcInnerStart = 'arcInnerStart',\n arcInnerEnd = 'arcInnerEnd',\n arcInnerMiddle = 'arcInnerMiddle',\n arcOuterStart = 'arcOuterStart',\n arcOuterEnd = 'arcOuterEnd',\n arcOuterMiddle = 'arcOuterMiddle',\n center = 'center'\n}\n\nexport enum IMarkPointItemPosition {\n top = 'top',\n bottom = 'bottom',\n middle = 'middle',\n insideTop = 'insideTop',\n insideBottom = 'insideBottom',\n insideMiddle = 'insideMiddle'\n}\n\nexport type IMarkBackgroundAttributes = {\n /**\n * 是否绘制背景层\n */\n visible: boolean;\n /**\n * TODO: 根据文字宽度进行背景 panel size自适应\n */\n autoHeight?: boolean;\n /**\n * TODO: 根据文高度度进行背景 panel size自适应\n */\n autoWidth?: boolean;\n} & Partial<IRectGraphicAttribute>;\n\nexport type IMarkLabel = Omit<TagAttributes, 'x' | 'y' | 'panel'> & {\n /**\n * 标签的背景面板配置\n */\n panel?: IMarkBackgroundAttributes;\n};\n\nexport type IMarkRef = {\n /**\n * 自动旋转,沿着线的方向\n * @default\n * mark-line/mark-area/mark-point: false - 旧逻辑里autoRotate是false, 保持不变\n * mark-arc-line/mark-arc-area: true - 新增逻辑, 如果不开启的话, 效果不太好, 所以默认true\n * mark-point - 旧逻辑里autoRotate是true, 保持不变\n */\n autoRotate?: boolean;\n /**\n * label 相对line平行方向上的偏移\n */\n refX?: number;\n /**\n * label 相对line正交方向上的偏移\n */\n refY?: number;\n /**\n * label 相对默认角度的偏移 (label跟随line的角度做自动旋转时,默认按照line的平行向量作为初始角度)\n */\n refAngle?: number;\n};\n\nexport type MarkerAttrs<AnimationType> = IGroupGraphicAttribute & {\n type?: 'line' | 'arc-line' | 'area' | 'arc-area' | 'point';\n /**\n * 是否支持交互\n * @default true\n */\n interactive?: boolean;\n /**\n * 是否开启选中交互\n * @default false\n */\n select?: boolean;\n /**\n * 是否开启 hover 交互\n * @default false\n */\n hover?: boolean;\n /**\n * 是否显示marker组件\n * @default true\n */\n visible?: boolean;\n /**\n * 是否将组件在绘制区域内进行剪切\n * @default true\n */\n clipInRange?: boolean;\n /**\n * 组件绘制范围配置\n */\n limitRect?: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n} & BaseMarkerAnimation<AnimationType>;\n\n/** animation type */\nexport type BaseMarkerAnimation<T> = {\n animation?: MarkerAnimation<T> | boolean;\n animationEnter?: MarkerUpdateAnimation<T>;\n animationUpdate?: MarkerUpdateAnimation<T>;\n animationExit?: MarkerExitAnimation;\n};\nexport type MarkerAnimation<T> = MarkerUpdateAnimation<T> | MarkerUpdateAnimation<T>;\n\nexport type MarkerUpdateAnimation<T> = {\n type: T;\n} & MarkerExitAnimation;\n\nexport type MarkCommonLineAnimationType = 'clipIn' | 'fadeIn';\n\nexport type CommonMarkAreaAnimationType = 'fadeIn';\n\nexport type MarkPointAnimationType = 'callIn' | 'fadeIn';\n\nexport type MarkerExitAnimation = {\n type: 'fadeOut';\n duration?: number;\n delay?: number;\n easing?: EasingType;\n};\n\nexport type MarkerAnimationState = 'enter' | 'update' | 'exit';\n\n/** state type */\nexport type MarkCommonLineState<LineAttr> = {\n line?: State<LineAttr>;\n lineStartSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n lineEndSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n label?: State<Partial<ITextGraphicAttribute>>;\n labelBackground?: State<Partial<IRectGraphicAttribute>>;\n};\n\nexport type CommonMarkAreaState<AreaAttr> = {\n area?: State<Partial<AreaAttr>>;\n label?: State<Partial<ITextGraphicAttribute>>;\n labelBackground?: State<Partial<IRectGraphicAttribute>>;\n};\n\nexport type MarkPointState = {\n line?: State<ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[]>;\n lineStartSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n lineEndSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n symbol?: State<Partial<ISymbolGraphicAttribute>>;\n image?: State<Partial<IImageGraphicAttribute>>;\n text?: State<Partial<ITextGraphicAttribute>>;\n textBackground?: State<Partial<IRectGraphicAttribute>>;\n richText?: State<Partial<IRichTextGraphicAttribute>>;\n customMark?: State<Partial<IGroupGraphicAttribute>>;\n targetItem?: State<Partial<ISymbolGraphicAttribute>>;\n};\n\nexport type MarkCommonLineAttrs<LineAttr, LineLabelPosition, MarkCommonLineAnimationType> =\n MarkerAttrs<MarkCommonLineAnimationType> &\n Omit<CommonSegmentAttributes, 'state' | 'lineStyle'> & {\n /**\n * 标签\n */\n label?: {\n /**\n * label 相对line的位置\n */\n position?: LineLabelPosition;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n } & IMarkRef &\n IMarkLabel;\n state?: MarkCommonLineState<LineAttr>;\n };\n\nexport type MarkLineAttrs = MarkCommonLineAttrs<\n ILineGraphicWithCornerRadius | ILineGraphicAttribute[],\n keyof typeof IMarkLineLabelPosition,\n MarkCommonLineAnimationType\n> & {\n type?: 'line';\n /**\n * 是否对 points 进行多段处理,默认为 false,即直接将所有的点连接成线。\n * 如果需要进行多段处理,需要将 points 属性配置为 Point[][] 类型\n * @default false\n */\n multiSegment?: boolean;\n /**\n * 在 `multiSegment` 属性开启的前提下,用于声明那一段线段用来作为主线段,如果不声明,默认全段为主线段\n */\n mainSegmentIndex?: number;\n /**\n * 构成line的点: 如果是两个点,则为直线;多个点则为曲线\n */\n points: Point[] | Point[][];\n lineStyle?: ILineGraphicAttribute;\n};\n\nexport type MarkArcLineAttrs = MarkCommonLineAttrs<\n IArcGraphicAttribute,\n keyof typeof IMarkCommonArcLabelPosition,\n MarkCommonLineAnimationType\n> & {\n type?: 'arc-line';\n /**\n * 弧线中心位置\n */\n center: {\n x: number;\n y: number;\n };\n /**\n * 弧线半径\n */\n radius: number;\n /**\n * 弧线起始角度(弧度)\n */\n startAngle: number;\n /**\n * 弧线终点角度(弧度)\n */\n endAngle: number;\n lineStyle?: IArcGraphicAttribute;\n};\n\nexport type MarkAreaAttrs = MarkerAttrs<CommonMarkAreaAnimationType> & {\n type?: 'area';\n /**\n * 构成area的点\n */\n points: Point[];\n /**\n * 标签\n */\n label?: {\n position?: keyof typeof IMarkAreaLabelPosition;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n } & IMarkLabel;\n /**\n * area的样式\n */\n areaStyle?: IPolygonAttribute;\n\n state?: CommonMarkAreaState<IPolygonGraphicAttribute>;\n};\n\nexport type MarkArcAreaAttrs = MarkerAttrs<CommonMarkAreaAnimationType> & {\n type?: 'arc-area';\n /**\n * 扇区中心位置\n */\n center: {\n x: number;\n y: number;\n };\n /**\n * 扇区内半径\n */\n innerRadius: number;\n /**\n * 扇区外半径\n */\n outerRadius: number;\n /**\n * 扇区起始角度(弧度)\n */\n startAngle: number;\n /**\n * 扇区终点角度(弧度)\n */\n endAngle: number;\n /**\n * 标签\n */\n label?: {\n position?: keyof typeof IMarkCommonArcLabelPosition;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n } & IMarkRef &\n IMarkLabel;\n /**\n * area的样式\n */\n areaStyle?: IArcGraphicAttribute;\n\n state?: CommonMarkAreaState<IArcGraphicAttribute>;\n};\n\nexport type IItemContent = IMarkRef & {\n /**\n * 标注类型\n * Tips: 保留'richText'与之前的定义做兼容\n */\n type?: 'symbol' | 'text' | 'image' | 'richText' | 'custom';\n position?: keyof typeof IMarkPointItemPosition;\n /**\n * x 方向偏移量\n */\n offsetX?: number;\n /**\n * y 方向偏移量\n */\n offsetY?: number;\n /**\n * type为symbol时, symbol的样式\n */\n symbolStyle?: ISymbolGraphicAttribute;\n /**\n * type为image时, image的样式\n */\n imageStyle?: IImageGraphicAttribute;\n /**\n * type为text时, text的配置\n * 'text'类型的ItemContent新增三种子类型:'text','rich','html'。配置在textStyle.type上,继承自TagAttributes。\n */\n textStyle?: IMarkLabel;\n /**\n * type为rich text时, rich text的样式\n */\n richTextStyle?: IRichTextGraphicAttribute;\n /**\n * type为custom时,允许以callback的方式传入需要render的item\n */\n renderCustomCallback?: () => IGroup;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n};\n\nexport type IItemLine = {\n /** TODO:'type-opo' */\n type?: 'type-s' | 'type-do' | 'type-po' | 'type-op' | 'type-arc';\n visible?: boolean;\n /**\n * 当type为type-arc时生效, 数值决定曲率, 符号决定法向, 不能等于0\n * @default 0.8\n */\n arcRatio?: number;\n /**\n * 垂直于引导线的装饰线,参考案例: https://observablehq.com/@mikelotis/edmonton-population-history-line-chart\n */\n decorativeLine?: {\n visible?: boolean;\n length?: number;\n };\n} & Omit<SegmentAttributes, 'points'>;\n\nexport type MarkPointAttrs = Omit<MarkerAttrs<MarkPointAnimationType>, 'labelStyle'> & {\n /**\n * markPoint的位置(也是path的起点)\n */\n position: Point;\n /**\n * 标注引导线\n */\n itemLine?: IItemLine;\n\n /**\n * 标注内容\n */\n itemContent?: IItemContent;\n\n /**\n * 被标注的内容\n */\n targetSymbol?: {\n /**\n * 被标注内容与标记线间的间隙\n * @default 0\n */\n offset?: number;\n /**\n * 是否显示\n * @default false\n */\n visible?: boolean;\n /**\n * 大小\n * @default 20\n */\n size?: number;\n style?: ISymbol;\n };\n\n state?: MarkPointState;\n} & BaseMarkerAnimation<MarkPointAnimationType>;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BasePlayerAttributes } from './base';
|
|
2
|
-
import { DirectionType } from './direction';
|
|
3
|
-
import { BasePlayerLayoutAttributes } from './layout';
|
|
1
|
+
import type { BasePlayerAttributes } from './base';
|
|
2
|
+
import type { DirectionType } from './direction';
|
|
3
|
+
import type { BasePlayerLayoutAttributes } from './layout';
|
|
4
4
|
export type DiscretePlayerAttributes = {
|
|
5
5
|
type: 'discrete';
|
|
6
6
|
direction?: DirectionType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/player/type/discrete-player.ts"],"names":[],"mappings":"","file":"discrete-player.js","sourcesContent":["import { BasePlayerAttributes } from './base';\nimport { DirectionType } from './direction';\nimport { BasePlayerLayoutAttributes } from './layout';\n\nexport type DiscretePlayerAttributes = {\n /**\n * 播放器类型, 离散型\n */\n type: 'discrete';\n\n /**\n * 播放方向\n * @default 'default'\n */\n direction?: DirectionType;\n\n /**\n * 交替方向\n * @default false\n */\n alternate?: boolean;\n\n /**\n * 播放间隔\n * @default 1000\n */\n interval?: number;\n} & BasePlayerAttributes &\n BasePlayerLayoutAttributes;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/player/type/discrete-player.ts"],"names":[],"mappings":"","file":"discrete-player.js","sourcesContent":["import type { BasePlayerAttributes } from './base';\nimport type { DirectionType } from './direction';\nimport type { BasePlayerLayoutAttributes } from './layout';\n\nexport type DiscretePlayerAttributes = {\n /**\n * 播放器类型, 离散型\n */\n type: 'discrete';\n\n /**\n * 播放方向\n * @default 'default'\n */\n direction?: DirectionType;\n\n /**\n * 交替方向\n * @default false\n */\n alternate?: boolean;\n\n /**\n * 播放间隔\n * @default 1000\n */\n interval?: number;\n} & BasePlayerAttributes &\n BasePlayerLayoutAttributes;\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ContinuousPlayerAttributes } from './continuous-player';
|
|
2
|
-
import { DiscretePlayerAttributes } from './discrete-player';
|
|
1
|
+
import type { ContinuousPlayerAttributes } from './continuous-player';
|
|
2
|
+
import type { DiscretePlayerAttributes } from './discrete-player';
|
|
3
3
|
export * from './base';
|
|
4
4
|
export * from './direction';
|
|
5
5
|
export * from './discrete-player';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/player/type/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,yCAAuB;AACvB,8CAA4B;AAC5B,oDAAkC;AAClC,sDAAoC;AACpC,0CAAwB;AACxB,2CAAyB","file":"index.js","sourcesContent":["import { ContinuousPlayerAttributes } from './continuous-player';\nimport { DiscretePlayerAttributes } from './discrete-player';\n\nexport * from './base';\nexport * from './direction';\nexport * from './discrete-player';\nexport * from './continuous-player';\nexport * from './event';\nexport * from './layout';\n\nexport type PlayerAttributes = ContinuousPlayerAttributes | DiscretePlayerAttributes;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/player/type/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,yCAAuB;AACvB,8CAA4B;AAC5B,oDAAkC;AAClC,sDAAoC;AACpC,0CAAwB;AACxB,2CAAyB","file":"index.js","sourcesContent":["import type { ContinuousPlayerAttributes } from './continuous-player';\nimport type { DiscretePlayerAttributes } from './discrete-player';\n\nexport * from './base';\nexport * from './direction';\nexport * from './discrete-player';\nexport * from './continuous-player';\nexport * from './event';\nexport * from './layout';\n\nexport type PlayerAttributes = ContinuousPlayerAttributes | DiscretePlayerAttributes;\n"]}
|
package/cjs/radio/radio.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { AbstractComponent } from '../core/base';
|
|
2
2
|
import type { RadioAttributes } from './type';
|
|
3
|
-
import { Arc,
|
|
3
|
+
import { Arc, Text } from '@visactor/vrender-core';
|
|
4
4
|
import type { ComponentOptions } from '../interface';
|
|
5
5
|
export declare class Radio extends AbstractComponent<Required<RadioAttributes>> {
|
|
6
6
|
static defaultAttributes: Partial<RadioAttributes>;
|
|
7
7
|
_circle: Arc;
|
|
8
|
-
_text:
|
|
8
|
+
_text: Text;
|
|
9
9
|
name: 'radio';
|
|
10
10
|
constructor(attributes: RadioAttributes, options?: ComponentOptions);
|
|
11
11
|
render(): void;
|
package/cjs/radio/radio.js
CHANGED
|
@@ -38,7 +38,7 @@ class Radio extends base_1.AbstractComponent {
|
|
|
38
38
|
}), this.appendChild(this._circle);
|
|
39
39
|
}
|
|
40
40
|
renderText() {
|
|
41
|
-
this._text = new vrender_core_1.
|
|
41
|
+
this._text = new vrender_core_1.Text((0, vutils_1.merge)({}, this.attribute.text)),
|
|
42
42
|
this.attribute.disabled && this._text.setAttribute("fill", this.attribute.text.disableFill),
|
|
43
43
|
this.appendChild(this._text);
|
|
44
44
|
}
|
package/cjs/radio/radio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/radio/radio.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,uCAAiD;AAEjD,
|
|
1
|
+
{"version":3,"sources":["../src/radio/radio.ts"],"names":[],"mappings":"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","file":"radio.js","sourcesContent":["import { merge } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { RadioAttributes } from './type';\nimport { Arc, Text } from '@visactor/vrender-core';\nimport type { ComponentOptions } from '../interface';\nimport { loadRadioComponent } from './register';\n\nloadRadioComponent();\nexport class Radio extends AbstractComponent<Required<RadioAttributes>> {\n static defaultAttributes: Partial<RadioAttributes> = {\n interactive: true,\n disabled: false,\n checked: false,\n cursor: 'pointer',\n disableCursor: 'not-allowed',\n spaceBetweenTextAndIcon: 8,\n text: {\n text: 'text',\n fontSize: 14,\n fill: '#000',\n disableFill: 'rgb(201,205,212)',\n textBaseline: 'top',\n pickable: false\n },\n circle: {\n outerRadius: 7,\n innerRadius: 3,\n startAngle: 0,\n endAngle: 2 * Math.PI,\n lineWidth: 1,\n fill: '#fff',\n stroke: 'rgb(229,230,235)',\n disableFill: 'rgb(242,243,245)',\n checkedFill: 'rgb(22, 93, 255)',\n checkedStroke: 'rgb(22, 93, 255)',\n disableCheckedFill: 'rgb(148, 191, 255)',\n disableCheckedStroke: 'rgb(148, 191, 255)',\n pickable: false\n }\n };\n _circle: Arc;\n _text: Text;\n\n name: 'radio';\n\n constructor(attributes: RadioAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Radio.defaultAttributes, attributes));\n this.renderGroup();\n\n this.onBeforeAttributeUpdate = (val: any, attributes: any, key: null | string | string[]) => {\n if ('interactive' in val) {\n this.setAttribute('pickable', val.interactive);\n }\n if ('disabled' in val) {\n this.setAttribute('cursor', val.disable ? this.attribute.disableCursor : this.attribute.cursor);\n }\n return undefined;\n };\n\n this.addEventListener('pointerup', this._handlePointerUp);\n }\n\n render() {\n this.removeAllChild(true);\n\n this.renderCircle();\n this.renderText();\n this.layout();\n }\n\n renderCircle() {\n this._circle = new Arc(merge({}, this.attribute.circle));\n const isChecked = this.attribute.checked;\n if (isChecked && this.attribute.disabled) {\n this._circle.setAttributes({\n fill: this.attribute.circle.disableCheckedFill,\n stroke: this.attribute.circle.disableCheckedStroke\n });\n } else if (isChecked) {\n this._circle.setAttributes({\n fill: this.attribute.circle.checkedFill,\n stroke: this.attribute.circle.checkedStroke\n });\n } else if (this.attribute.disabled) {\n this._circle.setAttributes({\n fill: this.attribute.circle.disableFill\n // stroke: this.attribute.circle.disableFill\n });\n }\n this.appendChild(this._circle);\n }\n\n renderText() {\n this._text = new Text(merge({}, this.attribute.text));\n if (this.attribute.disabled) {\n this._text.setAttribute('fill', this.attribute.text.disableFill);\n }\n this.appendChild(this._text);\n }\n\n renderGroup() {\n if (!this.attribute.interactive) {\n this.setAttribute('pickable', false);\n }\n if (this.attribute.disabled) {\n this.setAttribute('cursor', this.attribute.disableCursor);\n }\n }\n\n layout() {\n const circleHeight = (this.attribute.circle.outerRadius + this.attribute.circle.lineWidth) * 2;\n const textHeight = this._text.AABBBounds.height();\n const maxHeight = Math.max(circleHeight, textHeight);\n const circleY =\n maxHeight / 2 - circleHeight / 2 + this.attribute.circle.outerRadius + this.attribute.circle.lineWidth;\n const textY = maxHeight / 2 - textHeight / 2;\n\n const circleWidth = (this.attribute.circle.outerRadius + this.attribute.circle.lineWidth) * 2;\n const circleX = this.attribute.circle.outerRadius + this.attribute.circle.lineWidth;\n const textX = circleWidth + this.attribute.spaceBetweenTextAndIcon;\n\n this._circle.setAttributes({\n x: circleX,\n y: circleY\n });\n this._text.setAttributes({\n x: textX,\n y: textY\n });\n }\n\n private _handlePointerUp = () => {\n if (this.attribute.disabled || this.attribute.checked) {\n // checked do nothing\n return;\n }\n this.setAttribute('checked', true);\n\n this._dispatchEvent('radio_checked', {\n eventType: 'radio_checked',\n target: this\n });\n\n this.stage.renderNextFrame();\n };\n\n initAttributes(params: RadioAttributes, options?: ComponentOptions) {\n params = options?.skipDefault ? params : merge({}, Radio.defaultAttributes, params);\n super.initAttributes(params);\n this.renderGroup();\n this.render();\n }\n}\n"]}
|
package/cjs/scrollbar/index.d.ts
CHANGED
package/cjs/scrollbar/index.js
CHANGED
|
@@ -17,5 +17,6 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
|
|
|
17
17
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", {
|
|
19
19
|
value: !0
|
|
20
|
-
}), __exportStar(require("./scrollbar"), exports), __exportStar(require("./type"), exports)
|
|
20
|
+
}), __exportStar(require("./scrollbar"), exports), __exportStar(require("./type"), exports),
|
|
21
|
+
__exportStar(require("./module"), exports);
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scrollbar/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,yCAAuB","file":"index.js","sourcesContent":["export * from './scrollbar';\nexport * from './type';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scrollbar/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,yCAAuB;AACvB,2CAAyB","file":"index.js","sourcesContent":["export * from './scrollbar';\nexport * from './type';\nexport * from './module';\n"]}
|
|
@@ -12,9 +12,13 @@ export declare class ScrollBarPlugin implements IPlugin {
|
|
|
12
12
|
pluginService: IPluginService;
|
|
13
13
|
_uid: number;
|
|
14
14
|
key: string;
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
scrollContainer?: {
|
|
16
|
+
g: IGroup;
|
|
17
|
+
showH: boolean;
|
|
18
|
+
showV: boolean;
|
|
19
|
+
};
|
|
17
20
|
scrollContainerBounds: IAABBBounds;
|
|
21
|
+
childrenBounds: IAABBBounds;
|
|
18
22
|
static defaultParams: IParams;
|
|
19
23
|
params: IParams;
|
|
20
24
|
activate(context: IPluginService): void;
|
|
@@ -23,21 +27,20 @@ export declare class ScrollBarPlugin implements IPlugin {
|
|
|
23
27
|
deltaY: number;
|
|
24
28
|
target: IGraphic;
|
|
25
29
|
}) => void;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
valid: boolean;
|
|
34
|
-
delta: number;
|
|
30
|
+
handleScrollBarChange: (params: any) => void;
|
|
31
|
+
initEventOfScrollbar(scrollContainer: IGroup, scrollbar: IGroup, isHorozntal?: boolean): void;
|
|
32
|
+
addOrUpdateScroll(showH: boolean, showV: boolean, container: IGroup, scrollContainer: IGroup): void;
|
|
33
|
+
getDirection(isHorozntal?: boolean): "horizontal" | "vertical";
|
|
34
|
+
addOrUpdateHScroll(scrollContainer: IGroup, container: IGroup, isHorozntal?: boolean): {
|
|
35
|
+
scrollBar: ScrollBar;
|
|
36
|
+
isUpdate: boolean;
|
|
35
37
|
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
clearScrollbar(scrollContainer: IGroup, type: 'horizontal' | 'vertical' | 'all'): void;
|
|
39
|
+
formatScrollContainer(g: IGraphic): {
|
|
40
|
+
g: IGroup;
|
|
41
|
+
showH: boolean;
|
|
42
|
+
showV: boolean;
|
|
39
43
|
};
|
|
40
|
-
disappearScrollBar(scrollBar: ScrollBar, valid: boolean): void;
|
|
41
44
|
getScrollContainer(graphic: IGraphic): {
|
|
42
45
|
g: IGroup;
|
|
43
46
|
showH: boolean;
|
|
@@ -10,39 +10,53 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
10
10
|
value: !0
|
|
11
11
|
}), exports.ScrollBarPlugin = void 0;
|
|
12
12
|
|
|
13
|
-
const vrender_core_1 = require("@visactor/vrender-core"), scrollbar_1 = require("./scrollbar"), vutils_1 = require("@visactor/vutils");
|
|
13
|
+
const vrender_core_1 = require("@visactor/vrender-core"), scrollbar_1 = require("./scrollbar"), vutils_1 = require("@visactor/vutils"), constant_1 = require("../constant");
|
|
14
14
|
|
|
15
15
|
let ScrollBarPlugin = ScrollBarPlugin_1 = class {
|
|
16
16
|
constructor() {
|
|
17
17
|
this.name = "scrollbar", this.activeEvent = "onRegister", this._uid = vrender_core_1.Generator.GenAutoIncrementId(),
|
|
18
18
|
this.key = this.name + this._uid, this.scroll = e => {
|
|
19
|
-
var _a;
|
|
20
|
-
const graphic = e.target, data = this.getScrollContainer(graphic)
|
|
21
|
-
|
|
22
|
-
if (!
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
childrenBounds.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
19
|
+
var _a, _b;
|
|
20
|
+
const graphic = e.target, data = this.getScrollContainer(graphic);
|
|
21
|
+
if (!data && !this.scrollContainer) return;
|
|
22
|
+
if (!data && this.scrollContainer) {
|
|
23
|
+
if (!this.scrollContainer.g.stage || this.scrollContainer.g.stage !== graphic.stage) return;
|
|
24
|
+
const newScrollContainer = this.formatScrollContainer(this.scrollContainer.g);
|
|
25
|
+
if (!newScrollContainer) return void this.clearScrollbar(this.scrollContainer.g, "all");
|
|
26
|
+
this.scrollContainer.showH && !newScrollContainer.showH && this.clearScrollbar(this.scrollContainer.g, "horizontal"),
|
|
27
|
+
this.scrollContainer.showV && !newScrollContainer.showV && this.clearScrollbar(this.scrollContainer.g, "vertical"),
|
|
28
|
+
this.scrollContainer = newScrollContainer;
|
|
29
|
+
} else data && this.scrollContainer && data.g !== this.scrollContainer.g && this.clearScrollbar(this.scrollContainer.g, "all");
|
|
30
|
+
this.scrollContainer = null != data ? data : this.scrollContainer;
|
|
31
|
+
const scrollContainer = data.g, {width: width, height: height, scrollX: scrollX = 0, scrollY: scrollY = 0} = scrollContainer.attribute;
|
|
32
|
+
let newScrollX = scrollX, newScrollY = scrollY, {showH: showH, showV: showV} = data;
|
|
33
|
+
this.scrollContainerBounds = (new vutils_1.Bounds).set(0, 0, scrollContainer.attribute.width, scrollContainer.attribute.height),
|
|
34
|
+
showH && showH && ((0, vutils_1.abs)(e.deltaX) > (0, vutils_1.abs)(e.deltaY) ? (showH = showH && !0,
|
|
35
|
+
showV = showV && !1) : (showH = showH && !1, showV = showV && !0));
|
|
36
|
+
const childrenBounds = this.childrenBounds;
|
|
37
|
+
childrenBounds.clear(), childrenBounds.set(0, 0, scrollContainer.AABBBounds.width(), scrollContainer.AABBBounds.height());
|
|
38
|
+
const scrollWidth = childrenBounds.width(), scrollHeight = childrenBounds.height();
|
|
39
|
+
newScrollX = showH ? Math.max(Math.min((null !== (_a = e.deltaX) && void 0 !== _a ? _a : 0) - scrollX, scrollWidth - width), 0) : -scrollX,
|
|
40
|
+
newScrollY = showV ? Math.max(Math.min((null !== (_b = e.deltaY) && void 0 !== _b ? _b : 0) - scrollY, scrollHeight - height), 0) : -scrollY,
|
|
41
|
+
childrenBounds.translate(-newScrollX, -newScrollY), this.addOrUpdateScroll(showH, showV, scrollContainer.parent, scrollContainer),
|
|
42
42
|
scrollContainer.setAttributes({
|
|
43
|
-
scrollX:
|
|
44
|
-
scrollY:
|
|
43
|
+
scrollX: -newScrollX,
|
|
44
|
+
scrollY: -newScrollY
|
|
45
45
|
});
|
|
46
|
+
}, this.handleScrollBarChange = params => {
|
|
47
|
+
if (!(this.scrollContainer && this.scrollContainerBounds && this.childrenBounds && params && params.target && params.detail && params.detail.value)) return;
|
|
48
|
+
const scrollbar = params.target, newRange = params.detail.value;
|
|
49
|
+
if ("horizontal" === scrollbar.attribute.direction) {
|
|
50
|
+
const scrollWidth = this.childrenBounds.width();
|
|
51
|
+
this.scrollContainer.g.setAttributes({
|
|
52
|
+
scrollX: -newRange[0] * scrollWidth
|
|
53
|
+
});
|
|
54
|
+
} else {
|
|
55
|
+
const scrollHeight = this.childrenBounds.height();
|
|
56
|
+
this.scrollContainer.g.setAttributes({
|
|
57
|
+
scrollY: -newRange[0] * scrollHeight
|
|
58
|
+
});
|
|
59
|
+
}
|
|
46
60
|
};
|
|
47
61
|
}
|
|
48
62
|
activate(context) {
|
|
@@ -51,95 +65,93 @@ let ScrollBarPlugin = ScrollBarPlugin_1 = class {
|
|
|
51
65
|
this.childrenBounds = new vutils_1.AABBBounds, stage.addEventListener("wheel", this.scroll),
|
|
52
66
|
this.params = ScrollBarPlugin_1.defaultParams;
|
|
53
67
|
}
|
|
68
|
+
initEventOfScrollbar(scrollContainer, scrollbar, isHorozntal) {
|
|
69
|
+
scrollContainer.addEventListener("pointerover", (() => {
|
|
70
|
+
scrollbar.setAttribute("visibleAll", !0);
|
|
71
|
+
})), scrollContainer.addEventListener("pointermove", (() => {
|
|
72
|
+
scrollbar.setAttribute("visibleAll", !0);
|
|
73
|
+
})), scrollContainer.addEventListener("pointerout", (() => {
|
|
74
|
+
scrollbar.setAttribute("visibleAll", !1);
|
|
75
|
+
})), scrollbar.addEventListener("pointerover", (() => {
|
|
76
|
+
scrollbar.setAttribute("visibleAll", !0);
|
|
77
|
+
})), scrollbar.addEventListener("pointerout", (() => {
|
|
78
|
+
scrollbar.setAttribute("visibleAll", !0);
|
|
79
|
+
})), scrollbar.addEventListener("scrollUp", this.handleScrollBarChange), scrollbar.addEventListener(constant_1.SCROLLBAR_EVENT, this.handleScrollBarChange);
|
|
80
|
+
}
|
|
54
81
|
addOrUpdateScroll(showH, showV, container, scrollContainer) {
|
|
55
|
-
const scrollbars = container.children;
|
|
56
|
-
let h = !1, v = !1, deltaH = 0, deltaV = 0;
|
|
57
82
|
if (showH) {
|
|
58
|
-
const hScrollbar
|
|
59
|
-
|
|
60
|
-
}
|
|
83
|
+
const {scrollBar: hScrollbar, isUpdate: isUpdate} = this.addOrUpdateHScroll(scrollContainer, container, !0);
|
|
84
|
+
isUpdate || this.initEventOfScrollbar(scrollContainer, hScrollbar, !0);
|
|
85
|
+
} else this.clearScrollbar(scrollContainer, "horizontal");
|
|
61
86
|
if (showV) {
|
|
62
|
-
const vScrollbar
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
return {
|
|
66
|
-
h: h,
|
|
67
|
-
deltaH: deltaH,
|
|
68
|
-
v: v,
|
|
69
|
-
deltaV: deltaV
|
|
70
|
-
};
|
|
87
|
+
const {scrollBar: vScrollbar, isUpdate: isUpdate} = this.addOrUpdateHScroll(scrollContainer, container, !1);
|
|
88
|
+
isUpdate || this.initEventOfScrollbar(scrollContainer, vScrollbar, !1);
|
|
89
|
+
} else this.clearScrollbar(scrollContainer, "vertical");
|
|
71
90
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
direction: "horizontal",
|
|
75
|
-
x: 0,
|
|
76
|
-
y: 0,
|
|
77
|
-
width: scrollContainerB.width(),
|
|
78
|
-
height: 12,
|
|
79
|
-
padding: [ 2, 0 ],
|
|
80
|
-
railStyle: {
|
|
81
|
-
fill: "rgba(0, 0, 0, .1)"
|
|
82
|
-
},
|
|
83
|
-
range: [ 0, .05 ]
|
|
84
|
-
}), container.add(scrollBar));
|
|
85
|
-
const b = scrollBar.AABBBounds, childrenBounds = this.childrenBounds, y = scrollContainerB.y2 - b.height(), ratio = Math.min(b.width() / this.childrenBounds.width(), 1);
|
|
86
|
-
let start = (scrollContainerB.x1 - childrenBounds.x1) / (childrenBounds.width() - scrollContainerB.width()) * (1 - ratio), valid = !0, delta = 0;
|
|
87
|
-
return start < 0 ? (start = 0, valid = !1, delta = scrollContainerB.x1 - childrenBounds.x1) : start + ratio > 1 && (start = 1 - ratio,
|
|
88
|
-
valid = !1, delta = scrollContainerB.x1 - childrenBounds.x1 - (childrenBounds.width() - scrollContainerB.width())),
|
|
89
|
-
scrollBar.setAttributes({
|
|
90
|
-
y: y,
|
|
91
|
-
visibleAll: !0,
|
|
92
|
-
range: [ start, start + ratio ]
|
|
93
|
-
}), {
|
|
94
|
-
valid: valid,
|
|
95
|
-
delta: delta
|
|
96
|
-
};
|
|
91
|
+
getDirection(isHorozntal) {
|
|
92
|
+
return isHorozntal ? "horizontal" : "vertical";
|
|
97
93
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
94
|
+
addOrUpdateHScroll(scrollContainer, container, isHorozntal) {
|
|
95
|
+
var _a;
|
|
96
|
+
const direction = this.getDirection(isHorozntal), name = `${null !== (_a = scrollContainer.name) && void 0 !== _a ? _a : scrollContainer._uid}_${this.getDirection(isHorozntal)}_${this.name}`, scrollbars = container.children.filter((g => g.name === name));
|
|
97
|
+
let isUpdate = !0, scrollBar = scrollbars[0];
|
|
98
|
+
const {y: y = 0, dy: dy = 0, x: x = 0, dx: dx = 0, height: height, width: width, zIndex: zIndex = 0} = this.scrollContainer.g.attribute, attrs = {
|
|
101
99
|
x: 0,
|
|
102
100
|
y: 0,
|
|
103
|
-
|
|
104
|
-
|
|
101
|
+
direction: direction,
|
|
102
|
+
zIndex: zIndex + 1,
|
|
103
|
+
visibleAll: !0,
|
|
105
104
|
padding: [ 2, 0 ],
|
|
106
105
|
railStyle: {
|
|
107
106
|
fill: "rgba(0, 0, 0, .1)"
|
|
108
107
|
},
|
|
109
108
|
range: [ 0, .05 ]
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
scrollBar.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
109
|
+
};
|
|
110
|
+
isHorozntal ? (attrs.width = this.scrollContainerBounds.width(), attrs.height = 12) : (attrs.height = this.scrollContainerBounds.height(),
|
|
111
|
+
attrs.width = 12), scrollBar ? scrollbars.length > 1 && scrollbars.forEach(((child, index) => {
|
|
112
|
+
var _a;
|
|
113
|
+
index && (null === (_a = child.parent) || void 0 === _a || _a.removeChild(child));
|
|
114
|
+
})) : (isUpdate = !1, scrollBar = new scrollbar_1.ScrollBar(attrs), scrollBar.name = name,
|
|
115
|
+
container.add(scrollBar), scrollBar.isScrollBar = !0);
|
|
116
|
+
const childrenBounds = this.childrenBounds;
|
|
117
|
+
if (isHorozntal) {
|
|
118
|
+
const ratio = Math.min(this.scrollContainerBounds.width() / childrenBounds.width(), 1), start = Math.max(Math.min(this.childrenBounds.x1 / this.childrenBounds.width(), 0), ratio - 1);
|
|
119
|
+
attrs.x = x + dx, attrs.y = y + dy + height - this.scrollContainerBounds.height(),
|
|
120
|
+
attrs.range = [ -start, -start + ratio ];
|
|
121
|
+
} else {
|
|
122
|
+
const ratio = Math.min(this.scrollContainerBounds.height() / childrenBounds.height(), 1), start = Math.max(Math.min(this.childrenBounds.y1 / this.childrenBounds.height(), 0), ratio - 1);
|
|
123
|
+
attrs.x = x + dx + width - this.scrollContainerBounds.width(), attrs.y = y + dy,
|
|
124
|
+
attrs.range = [ -start, -start + ratio ];
|
|
125
|
+
}
|
|
126
|
+
return scrollBar.setAttributes(attrs), {
|
|
127
|
+
scrollBar: scrollBar,
|
|
128
|
+
isUpdate: isUpdate
|
|
122
129
|
};
|
|
123
130
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
})
|
|
131
|
+
clearScrollbar(scrollContainer, type) {
|
|
132
|
+
if (!scrollContainer.parent) return;
|
|
133
|
+
scrollContainer.parent.children.filter((child => child.isScrollBar && ("all" === type || child.attribute.direction === type))).forEach((child => {
|
|
134
|
+
child.parent.removeChild(child);
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
formatScrollContainer(g) {
|
|
138
|
+
if (!g || "group" !== g.type || !g.attribute) return null;
|
|
139
|
+
const {overflow: overflow, width: width, height: height} = g.attribute;
|
|
140
|
+
if (!overflow || "hidden" === overflow) return null;
|
|
141
|
+
let showH = !1, showV = !1;
|
|
142
|
+
return "scroll" === overflow ? (showH = !0, showV = !0) : (showH = "scroll-x" === overflow,
|
|
143
|
+
showV = !showH), g.AABBBounds.empty() || (showH && (showH = width < g.AABBBounds.width()),
|
|
144
|
+
showV && (showV = height < g.AABBBounds.height())), showH || showV ? {
|
|
145
|
+
g: g,
|
|
146
|
+
showH: showH,
|
|
147
|
+
showV: showV
|
|
148
|
+
} : null;
|
|
129
149
|
}
|
|
130
150
|
getScrollContainer(graphic) {
|
|
131
151
|
let g = graphic;
|
|
132
152
|
for (;g; ) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
let showH = !1, showV = !1;
|
|
136
|
-
return "scroll" === overflow ? (showH = !0, showV = !0) : (showH = "scroll-x" === overflow,
|
|
137
|
-
showV = !showH), {
|
|
138
|
-
g: g,
|
|
139
|
-
showH: showH,
|
|
140
|
-
showV: showV
|
|
141
|
-
};
|
|
142
|
-
}
|
|
153
|
+
const res = this.formatScrollContainer(g);
|
|
154
|
+
if (res) return res;
|
|
143
155
|
g = g.parent;
|
|
144
156
|
}
|
|
145
157
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scrollbar/scrollbar-plugin.ts"],"names":[],"mappings":"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","file":"scrollbar-plugin.js","sourcesContent":["import type { IGraphic, IGroup, IPlugin, IPluginService } from '@visactor/vrender-core';\nimport { Generator, injectable } from '@visactor/vrender-core';\nimport { ScrollBar } from './scrollbar';\nimport type { IAABBBounds } from '@visactor/vutils';\nimport { AABBBounds, abs, max, min } from '@visactor/vutils';\n\n// _showPoptip: 0-没有,1-添加,2-删除\n\ntype IParams = {\n timeout?: number; // 消失的timeout\n bufferV?: number; // 判定是否出现滚动条的buffer\n bufferH?: number; // 判定是否出现滚动条的buffer\n};\n\n@injectable()\nexport class ScrollBarPlugin implements IPlugin {\n name: 'scrollbar' = 'scrollbar';\n activeEvent: 'onRegister' = 'onRegister';\n pluginService: IPluginService;\n _uid: number = Generator.GenAutoIncrementId();\n key: string = this.name + this._uid;\n activeGraphic: IGraphic;\n childrenBounds: IAABBBounds;\n scrollContainerBounds: IAABBBounds;\n\n static defaultParams: IParams = {\n timeout: 500\n };\n\n params: IParams;\n\n activate(context: IPluginService): void {\n this.pluginService = context;\n const { stage } = this.pluginService;\n\n this.childrenBounds = new AABBBounds();\n stage.addEventListener('wheel', this.scroll as any);\n this.params = ScrollBarPlugin.defaultParams;\n }\n scroll = (e: { deltaX: number; deltaY: number; target: IGraphic }) => {\n const graphic = e.target as any;\n const data = this.getScrollContainer(graphic);\n const { g: scrollContainer } = data;\n let { showH, showV } = data;\n if (!scrollContainer || scrollContainer.count === 1) {\n return;\n }\n this.scrollContainerBounds = scrollContainer.AABBBounds.clone();\n if (abs(e.deltaX) > abs(e.deltaY)) {\n showH = showH && true;\n showV = showV && false;\n } else {\n showH = showH && false;\n showV = showV && true;\n }\n scrollContainer.setAttributes({\n scrollX: showH ? (scrollContainer.attribute.scrollX || 0) + e.deltaX : scrollContainer.attribute.scrollX || 0,\n scrollY: showV ? (scrollContainer.attribute.scrollY || 0) + e.deltaY : scrollContainer.attribute.scrollY || 0\n });\n\n // 计算子元素的bounds\n const childrenBounds = this.childrenBounds;\n const scrollContainerBounds = this.scrollContainerBounds;\n childrenBounds.clear();\n scrollContainer.forEachChildren((c: IGraphic) => {\n childrenBounds.union(c.AABBBounds);\n });\n // 判断是否需要显示H或V,如果bounds完全在内部,那就不需要显示\n childrenBounds.transformWithMatrix(scrollContainer.transMatrix);\n if (showH && scrollContainerBounds.x1 <= childrenBounds.x1 && scrollContainerBounds.x2 >= childrenBounds.x2) {\n showH = false;\n }\n\n if (showV && scrollContainerBounds.y1 <= childrenBounds.y1 && scrollContainerBounds.y2 >= childrenBounds.y2) {\n showV = false;\n }\n\n // 转到当前坐标系下\n const m = scrollContainer.transMatrix;\n scrollContainerBounds.translate(-m.e, -m.f);\n childrenBounds.translate(-m.e, -m.f);\n // 如果子元素的bounds小于scrollContainer,那么就扩充\n if (showH) {\n childrenBounds.x1 = min(childrenBounds.x1, scrollContainerBounds.x1);\n childrenBounds.x2 = max(childrenBounds.x2, scrollContainerBounds.x2);\n }\n if (showV) {\n childrenBounds.y1 = min(childrenBounds.y1, scrollContainerBounds.y1);\n childrenBounds.y2 = max(childrenBounds.y2, scrollContainerBounds.y2);\n }\n childrenBounds.translate(scrollContainer.attribute.scrollX, scrollContainer.attribute.scrollY);\n\n const shadowRoot = scrollContainer.shadowRoot ?? scrollContainer.attachShadow();\n const container = shadowRoot.createOrUpdateChild('scroll-bar', {}, 'group') as IGroup;\n const { h, v, deltaH, deltaV } = this.addOrUpdateScroll(showH, showV, container, scrollContainer);\n scrollContainer.setAttributes({\n scrollX: h ? scrollContainer.attribute.scrollX || 0 : (scrollContainer.attribute.scrollX || 0) + deltaH,\n scrollY: v ? scrollContainer.attribute.scrollY || 0 : (scrollContainer.attribute.scrollY || 0) + deltaV\n });\n };\n addOrUpdateScroll(\n showH: boolean,\n showV: boolean,\n container: IGroup,\n scrollContainer: IGroup\n ): { h: boolean; deltaH: number; v: boolean; deltaV: number } {\n const scrollbars = container.children;\n let h = false;\n let v = false;\n let deltaH = 0;\n let deltaV = 0;\n if (showH) {\n const hScrollbar = scrollbars.filter((g: ScrollBar) => g.attribute.direction !== 'vertical')[0] as ScrollBar;\n const d = this.addOrUpdateHScroll(this.scrollContainerBounds, container, hScrollbar);\n h = d.valid;\n deltaH = d.delta;\n this.disappearScrollBar(hScrollbar, v);\n }\n if (showV) {\n const vScrollbar = scrollbars.filter((g: ScrollBar) => g.attribute.direction === 'vertical')[0] as ScrollBar;\n const d = this.addOrUpdateVScroll(this.scrollContainerBounds, container, vScrollbar);\n v = d.valid;\n deltaV = d.delta;\n this.disappearScrollBar(vScrollbar, v);\n }\n return {\n h,\n deltaH,\n v,\n deltaV\n };\n }\n addOrUpdateHScroll(\n scrollContainerB: IAABBBounds,\n container: IGroup,\n scrollBar?: ScrollBar\n ): { valid: boolean; delta: number } {\n if (!scrollBar) {\n scrollBar = new ScrollBar({\n direction: 'horizontal',\n x: 0,\n y: 0,\n width: scrollContainerB.width(),\n height: 12,\n padding: [2, 0],\n railStyle: {\n fill: 'rgba(0, 0, 0, .1)'\n },\n range: [0, 0.05]\n });\n container.add(scrollBar);\n }\n const b = scrollBar.AABBBounds;\n const childrenBounds = this.childrenBounds;\n const y = scrollContainerB.y2 - b.height();\n\n const ratio = Math.min(b.width() / this.childrenBounds.width(), 1);\n let start =\n ((scrollContainerB.x1 - childrenBounds.x1) / (childrenBounds.width() - scrollContainerB.width())) * (1 - ratio);\n\n let valid = true;\n let delta = 0;\n if (start < 0) {\n start = 0;\n valid = false;\n delta = scrollContainerB.x1 - childrenBounds.x1;\n } else if (start + ratio > 1) {\n start = 1 - ratio;\n valid = false;\n delta = scrollContainerB.x1 - childrenBounds.x1 - (childrenBounds.width() - scrollContainerB.width());\n }\n scrollBar.setAttributes({\n y,\n visibleAll: true,\n range: [start, start + ratio]\n });\n return {\n valid,\n delta\n };\n }\n\n addOrUpdateVScroll(\n scrollContainerB: IAABBBounds,\n container: IGroup,\n scrollBar?: ScrollBar\n ): { valid: boolean; delta: number } {\n if (!scrollBar) {\n scrollBar = new ScrollBar({\n direction: 'vertical',\n x: 0,\n y: 0,\n width: 12,\n height: scrollContainerB.height(),\n padding: [2, 0],\n railStyle: {\n fill: 'rgba(0, 0, 0, .1)'\n },\n range: [0, 0.05]\n });\n container.add(scrollBar);\n }\n const b = scrollBar.AABBBounds;\n const x = scrollContainerB.x2 - b.width();\n const childrenBounds = this.childrenBounds;\n const ratio = Math.min(b.height() / childrenBounds.height(), 1);\n let start =\n ((scrollContainerB.y1 - childrenBounds.y1) / (childrenBounds.height() - scrollContainerB.height())) * (1 - ratio);\n\n let valid = true;\n let delta = 0;\n if (start < 0) {\n start = 0;\n valid = false;\n delta = scrollContainerB.y1 - childrenBounds.y1;\n } else if (start + ratio > 1) {\n start = 1 - ratio;\n valid = false;\n delta = scrollContainerB.y1 - childrenBounds.y1 - (childrenBounds.height() - scrollContainerB.height());\n }\n scrollBar.setAttributes({\n x,\n visibleAll: true,\n range: [start, start + ratio]\n });\n return {\n valid,\n delta\n };\n }\n\n disappearScrollBar(scrollBar: ScrollBar, valid: boolean) {\n if ((scrollBar as any)._plugin_timeout) {\n clearTimeout((scrollBar as any)._plugin_timeout);\n }\n (scrollBar as any)._plugin_timeout = setTimeout(() => {\n scrollBar.setAttribute('visibleAll', false);\n }, this.params.timeout ?? 0);\n }\n\n // 获取响应滚动的元素\n getScrollContainer(graphic: IGraphic): { g: IGroup; showH: boolean; showV: boolean } | null {\n let g = graphic;\n while (g) {\n if (g.attribute.overflow && g.attribute.overflow !== 'hidden') {\n const overflow = g.attribute.overflow;\n let showH = false;\n let showV = false;\n if (overflow === 'scroll') {\n (showH = true), (showV = true);\n } else {\n showH = overflow === 'scroll-x';\n showV = !showH;\n }\n return { g: g as IGroup, showH, showV };\n }\n g = g.parent;\n }\n return null;\n }\n\n deactivate(context: IPluginService): void {\n const { stage } = this.pluginService;\n stage.removeEventListener('wheel', this.scroll as any);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scrollbar/scrollbar-plugin.ts"],"names":[],"mappings":"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","file":"scrollbar-plugin.js","sourcesContent":["import type { IGraphic, IGroup, IPlugin, IPluginService } from '@visactor/vrender-core';\nimport { Generator, injectable } from '@visactor/vrender-core';\nimport { ScrollBar } from './scrollbar';\nimport type { IAABBBounds } from '@visactor/vutils';\nimport { AABBBounds, abs, Bounds } from '@visactor/vutils';\nimport { SCROLLBAR_EVENT } from '../constant';\nimport type { ScrollBarAttributes } from './type';\n\n// _showPoptip: 0-没有,1-添加,2-删除\n\ntype IParams = {\n timeout?: number; // 消失的timeout\n bufferV?: number; // 判定是否出现滚动条的buffer\n bufferH?: number; // 判定是否出现滚动条的buffer\n};\n\n@injectable()\nexport class ScrollBarPlugin implements IPlugin {\n name: 'scrollbar' = 'scrollbar';\n activeEvent: 'onRegister' = 'onRegister';\n pluginService: IPluginService;\n _uid: number = Generator.GenAutoIncrementId();\n key: string = this.name + this._uid;\n scrollContainer?: { g: IGroup; showH: boolean; showV: boolean };\n scrollContainerBounds: IAABBBounds;\n childrenBounds: IAABBBounds;\n\n static defaultParams: IParams = {\n timeout: 500\n };\n\n params: IParams;\n\n activate(context: IPluginService): void {\n this.pluginService = context;\n const { stage } = this.pluginService;\n\n this.childrenBounds = new AABBBounds();\n stage.addEventListener('wheel', this.scroll as any);\n this.params = ScrollBarPlugin.defaultParams;\n }\n scroll = (e: { deltaX: number; deltaY: number; target: IGraphic }) => {\n const graphic = e.target as any;\n const data = this.getScrollContainer(graphic);\n\n if (!data && !this.scrollContainer) {\n return;\n }\n\n if (!data && this.scrollContainer) {\n if (!this.scrollContainer.g.stage || this.scrollContainer.g.stage !== graphic.stage) {\n return;\n }\n const newScrollContainer = this.formatScrollContainer(this.scrollContainer.g);\n\n if (!newScrollContainer) {\n this.clearScrollbar(this.scrollContainer.g, 'all');\n // 删除老的scrollbar\n return;\n }\n if (this.scrollContainer.showH && !newScrollContainer.showH) {\n this.clearScrollbar(this.scrollContainer.g, 'horizontal');\n }\n\n if (this.scrollContainer.showV && !newScrollContainer.showV) {\n this.clearScrollbar(this.scrollContainer.g, 'vertical');\n }\n\n this.scrollContainer = newScrollContainer;\n } else if (data && this.scrollContainer && data.g !== this.scrollContainer.g) {\n this.clearScrollbar(this.scrollContainer.g, 'all');\n }\n\n this.scrollContainer = data ?? this.scrollContainer;\n\n const scrollContainer = data.g;\n const { width, height, scrollX = 0, scrollY = 0 } = scrollContainer.attribute;\n let newScrollX = scrollX;\n let newScrollY = scrollY;\n let { showH, showV } = data;\n this.scrollContainerBounds = new Bounds().set(\n 0,\n 0,\n scrollContainer.attribute.width,\n scrollContainer.attribute.height\n );\n if (showH && showH) {\n if (abs(e.deltaX) > abs(e.deltaY)) {\n showH = showH && true;\n showV = showV && false;\n } else {\n showH = showH && false;\n showV = showV && true;\n }\n }\n\n // 计算子元素的bounds\n const childrenBounds = this.childrenBounds;\n\n childrenBounds.clear();\n childrenBounds.set(0, 0, scrollContainer.AABBBounds.width(), scrollContainer.AABBBounds.height());\n\n const scrollWidth = childrenBounds.width();\n const scrollHeight = childrenBounds.height();\n\n if (showH) {\n newScrollX = Math.max(Math.min((e.deltaX ?? 0) - scrollX, scrollWidth - width), 0);\n } else {\n newScrollX = -scrollX;\n }\n\n if (showV) {\n newScrollY = Math.max(Math.min((e.deltaY ?? 0) - scrollY, scrollHeight - height), 0);\n } else {\n newScrollY = -scrollY;\n }\n\n childrenBounds.translate(-newScrollX, -newScrollY);\n\n this.addOrUpdateScroll(showH, showV, scrollContainer.parent, scrollContainer);\n scrollContainer.setAttributes({\n scrollX: -newScrollX,\n scrollY: -newScrollY\n });\n };\n\n handleScrollBarChange = (params: any) => {\n if (\n !this.scrollContainer ||\n !this.scrollContainerBounds ||\n !this.childrenBounds ||\n !params ||\n !params.target ||\n !params.detail ||\n !params.detail.value\n ) {\n return;\n }\n const scrollbar = params.target;\n const newRange = params.detail.value;\n\n if (scrollbar.attribute.direction === 'horizontal') {\n const scrollWidth = this.childrenBounds.width();\n\n this.scrollContainer.g.setAttributes({ scrollX: -newRange[0] * scrollWidth });\n } else {\n const scrollHeight = this.childrenBounds.height();\n\n this.scrollContainer.g.setAttributes({ scrollY: -newRange[0] * scrollHeight });\n }\n };\n\n initEventOfScrollbar(scrollContainer: IGroup, scrollbar: IGroup, isHorozntal?: boolean) {\n scrollContainer.addEventListener('pointerover', () => {\n scrollbar.setAttribute('visibleAll', true);\n });\n scrollContainer.addEventListener('pointermove', () => {\n scrollbar.setAttribute('visibleAll', true);\n });\n scrollContainer.addEventListener('pointerout', () => {\n scrollbar.setAttribute('visibleAll', false);\n });\n scrollbar.addEventListener('pointerover', () => {\n scrollbar.setAttribute('visibleAll', true);\n });\n scrollbar.addEventListener('pointerout', () => {\n scrollbar.setAttribute('visibleAll', true);\n });\n\n scrollbar.addEventListener('scrollUp', this.handleScrollBarChange);\n scrollbar.addEventListener(SCROLLBAR_EVENT, this.handleScrollBarChange);\n }\n\n addOrUpdateScroll(showH: boolean, showV: boolean, container: IGroup, scrollContainer: IGroup) {\n if (showH) {\n const { scrollBar: hScrollbar, isUpdate } = this.addOrUpdateHScroll(scrollContainer, container, true);\n\n if (!isUpdate) {\n this.initEventOfScrollbar(scrollContainer, hScrollbar, true);\n }\n } else {\n this.clearScrollbar(scrollContainer, 'horizontal');\n }\n if (showV) {\n const { scrollBar: vScrollbar, isUpdate } = this.addOrUpdateHScroll(scrollContainer, container, false);\n\n if (!isUpdate) {\n this.initEventOfScrollbar(scrollContainer, vScrollbar, false);\n }\n } else {\n this.clearScrollbar(scrollContainer, 'vertical');\n }\n }\n\n getDirection(isHorozntal?: boolean) {\n return isHorozntal ? 'horizontal' : 'vertical';\n }\n\n addOrUpdateHScroll(scrollContainer: IGroup, container: IGroup, isHorozntal?: boolean) {\n const direction = this.getDirection(isHorozntal);\n const name = `${scrollContainer.name ?? scrollContainer._uid}_${this.getDirection(isHorozntal)}_${this.name}`;\n const scrollbars = container.children.filter((g: ScrollBar) => g.name === name);\n let isUpdate = true;\n let scrollBar = scrollbars[0] as ScrollBar;\n\n const { y = 0, dy = 0, x = 0, dx = 0, height, width, zIndex = 0 } = this.scrollContainer.g.attribute;\n const attrs: Partial<ScrollBarAttributes> = {\n x: 0,\n y: 0,\n direction,\n zIndex: zIndex + 1,\n visibleAll: true,\n padding: [2, 0],\n railStyle: {\n fill: 'rgba(0, 0, 0, .1)'\n },\n range: [0, 0.05]\n };\n\n if (isHorozntal) {\n attrs.width = this.scrollContainerBounds.width();\n attrs.height = 12;\n } else {\n attrs.height = this.scrollContainerBounds.height();\n attrs.width = 12;\n }\n\n if (!scrollBar) {\n isUpdate = false;\n\n scrollBar = new ScrollBar(attrs as ScrollBarAttributes);\n scrollBar.name = name;\n container.add(scrollBar);\n (scrollBar as any).isScrollBar = true;\n } else if (scrollbars.length > 1) {\n scrollbars.forEach((child: IGraphic, index: number) => {\n if (index) {\n child.parent?.removeChild(child);\n }\n });\n }\n const childrenBounds = this.childrenBounds;\n\n if (isHorozntal) {\n const ratio = Math.min(this.scrollContainerBounds.width() / childrenBounds.width(), 1);\n const start = Math.max(Math.min(this.childrenBounds.x1 / this.childrenBounds.width(), 0), ratio - 1);\n attrs.x = x + dx;\n attrs.y = y + dy + height - this.scrollContainerBounds.height();\n attrs.range = [-start, -start + ratio];\n } else {\n const ratio = Math.min(this.scrollContainerBounds.height() / childrenBounds.height(), 1);\n const start = Math.max(Math.min(this.childrenBounds.y1 / this.childrenBounds.height(), 0), ratio - 1);\n attrs.x = x + dx + width - this.scrollContainerBounds.width();\n attrs.y = y + dy;\n attrs.range = [-start, -start + ratio];\n }\n\n scrollBar.setAttributes(attrs);\n return {\n scrollBar,\n isUpdate\n };\n }\n\n clearScrollbar(scrollContainer: IGroup, type: 'horizontal' | 'vertical' | 'all') {\n if (!scrollContainer.parent) {\n return;\n }\n const scrollbarBars = scrollContainer.parent.children.filter((child: IGroup) => {\n return (child as any).isScrollBar && (type === 'all' || (child.attribute as any).direction === type);\n });\n\n scrollbarBars.forEach((child: IGraphic) => {\n child.parent.removeChild(child);\n });\n }\n\n formatScrollContainer(g: IGraphic) {\n if (!g || g.type !== 'group' || !g.attribute) {\n return null;\n }\n\n const { overflow, width, height } = (g as IGroup).attribute;\n\n if (!overflow || overflow === 'hidden') {\n return null;\n }\n\n let showH = false;\n let showV = false;\n\n if (overflow === 'scroll') {\n showH = true;\n showV = true;\n } else {\n showH = overflow === 'scroll-x';\n showV = !showH;\n }\n\n if (!g.AABBBounds.empty()) {\n if (showH) {\n showH = width < g.AABBBounds.width();\n }\n\n if (showV) {\n showV = height < g.AABBBounds.height();\n }\n }\n\n return showH || showV ? { g: g as IGroup, showH, showV } : null;\n }\n\n // 获取响应滚动的元素\n getScrollContainer(graphic: IGraphic): { g: IGroup; showH: boolean; showV: boolean } | null {\n let g = graphic;\n while (g) {\n const res = this.formatScrollContainer(g);\n\n if (res) {\n return res;\n }\n g = g.parent;\n }\n return null;\n }\n\n deactivate(context: IPluginService): void {\n const { stage } = this.pluginService;\n stage.removeEventListener('wheel', this.scroll as any);\n }\n}\n"]}
|
package/cjs/timeline/type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/timeline/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n IGroupGraphicAttribute,\n ILineGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\
|
|
1
|
+
{"version":3,"sources":["../src/timeline/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n IGroupGraphicAttribute,\n ILineGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\n\nexport interface TimelineAttrs extends IGroupGraphicAttribute {\n width: number;\n // height?: number;\n times: { label: string; desc?: string }[];\n labelSpace?: number;\n symbolStyle?: Partial<ISymbolGraphicAttribute>;\n activeSymbolStyle?: Partial<ISymbolGraphicAttribute>;\n lineStyle?: Partial<ILineGraphicAttribute>;\n activeLineStyle?: Partial<ILineGraphicAttribute>;\n labelStyle?: Partial<ITextGraphicAttribute>;\n activeLabelStyle?: Partial<ITextGraphicAttribute>;\n pointLayoutMode?: 'space-around' | 'space-between';\n // 当前进度\n clipRange?: number;\n animation?: boolean;\n}\n"]}
|