@visactor/vrender-components 0.14.5-alpha.3 → 0.14.5-alpha.4
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/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/label/arc.d.ts +6 -3
- package/cjs/label/arc.js +32 -3
- package/cjs/label/arc.js.map +1 -1
- package/cjs/label/base.d.ts +12 -9
- package/cjs/label/base.js +107 -130
- package/cjs/label/base.js.map +1 -1
- package/cjs/label/dataLabel.js +4 -4
- package/cjs/label/dataLabel.js.map +1 -1
- package/cjs/label/polygon.d.ts +12 -0
- package/cjs/label/polygon.js +35 -0
- package/cjs/label/polygon.js.map +1 -0
- package/cjs/label/type.d.ts +4 -2
- package/cjs/label/type.js.map +1 -1
- package/cjs/link-path/link-path.js +1 -2
- package/cjs/link-path/type.js +2 -1
- package/cjs/marker/type.js +1 -1
- package/cjs/poptip/poptip.js +3 -3
- package/cjs/poptip/poptip.js.map +1 -1
- package/cjs/slider/slider.js +16 -25
- package/cjs/slider/slider.js.map +1 -1
- package/cjs/util/labelSmartInvert.d.ts +1 -0
- package/cjs/util/labelSmartInvert.js +20 -2
- package/cjs/util/labelSmartInvert.js.map +1 -1
- package/dist/index.js +183 -197
- package/dist/index.min.js +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/label/arc.d.ts +6 -3
- package/es/label/arc.js +32 -2
- package/es/label/arc.js.map +1 -1
- package/es/label/base.d.ts +12 -9
- package/es/label/base.js +108 -127
- package/es/label/base.js.map +1 -1
- package/es/label/dataLabel.js +5 -3
- package/es/label/dataLabel.js.map +1 -1
- package/es/label/polygon.d.ts +12 -0
- package/es/label/polygon.js +31 -0
- package/es/label/polygon.js.map +1 -0
- package/es/label/type.d.ts +4 -2
- package/es/label/type.js.map +1 -1
- package/es/link-path/link-path.js +1 -2
- package/es/link-path/type.js +2 -1
- package/es/marker/type.js +1 -1
- package/es/poptip/poptip.js +3 -3
- package/es/poptip/poptip.js.map +1 -1
- package/es/slider/slider.js +17 -26
- package/es/slider/slider.js.map +1 -1
- package/es/util/labelSmartInvert.d.ts +1 -0
- package/es/util/labelSmartInvert.js +17 -0
- package/es/util/labelSmartInvert.js.map +1 -1
- package/package.json +2 -2
package/es/slider/slider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["slider/slider.ts"],"names":[],"mappings":"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","file":"slider.js","sourcesContent":["/**\n * @description slider 滑块组件\n * TODO:\n * 3. step 功能开发\n * 4. tooltip 功能开发\n */\nimport type {\n IGroup,\n ISymbol,\n IGraphic,\n ISymbolGraphicAttribute,\n IText,\n ITextGraphicAttribute,\n FederatedPointerEvent,\n Cursor\n} from '@visactor/vrender';\nimport { isNil, merge, clamp, isValid, array, isObject, isArray, clampRange } from '@visactor/vutils';\nimport { createGroup, createText, vglobal, createRect, createSymbol, CustomEvent } from '@visactor/vrender';\nimport { AbstractComponent } from '../core/base';\nimport { SLIDER_ELEMENT_NAME } from './constant';\n\nimport type { SliderAttributes } from './type';\n\nfunction convertValueToRange(value: number | [number, number]) {\n if (isArray(value)) {\n return value;\n }\n return [value, value];\n}\n\nfunction getDefaultCursor(isHorizontal: boolean) {\n return isHorizontal ? 'ew-resize' : 'ns-resize';\n}\n\nexport class Slider extends AbstractComponent<Required<SliderAttributes>> {\n name = 'slider';\n\n static defaultAttributes = {\n slidable: true,\n layout: 'horizontal',\n align: 'bottom',\n height: 8,\n showHandler: true,\n handlerSize: 14,\n handlerStyle: {\n symbolType: 'circle',\n fill: '#fff',\n stroke: '#91caff',\n lineWidth: 2\n },\n railStyle: {\n fill: 'rgba(0,0,0,.04)'\n },\n trackStyle: {\n fill: '#91caff'\n },\n showValue: true,\n valueStyle: {\n fill: '#2C3542',\n fontSize: 12\n },\n startText: {\n style: {\n fill: '#2C3542',\n fontSize: 12\n }\n },\n endText: {\n style: {\n fill: '#2C3542',\n fontSize: 12\n }\n },\n handlerText: {\n visible: true,\n space: 4,\n precision: 0,\n style: {\n fill: '#2C3542',\n fontSize: 12\n }\n }\n };\n\n protected _isHorizontal = true;\n protected _innerView!: IGroup;\n protected _startHandler: ISymbol | null = null;\n protected _endHandler: ISymbol | null = null;\n protected _startHandlerText: IText | null = null;\n protected _endHandlerText: IText | null = null;\n protected _railContainer!: IGroup;\n protected _rail!: IGraphic;\n protected _track!: IGraphic;\n // 保留滑块上一次的位置\n private _prePos!: number;\n // 存储当前正在操作的滑块\n private _currentHandler: IGraphic | null = null;\n private _currentValue: { startValue?: number; endValue?: number; startPos?: number; endPos?: number } = {};\n\n get track() {\n return this._track;\n }\n\n get currentValue() {\n return this._currentValue;\n }\n\n get startHandler() {\n return this._startHandler;\n }\n\n get endHandler() {\n return this._endHandler;\n }\n\n constructor(attributes: SliderAttributes) {\n super(merge({}, Slider.defaultAttributes, attributes));\n }\n\n /**\n * 更新值域\n */\n setValue(value: number | number[]) {\n const { layout, railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n if (max === min) {\n return;\n }\n\n const [startValue, endValue] = array(value);\n\n const { startHandler, endHandler } = this._getHandlers();\n const railLen = layout === 'vertical' ? railHeight : railWidth;\n const startPos = ((startValue - min) / (max - min)) * railLen;\n if (startHandler) {\n this._updateHandler(startHandler, startPos, startValue);\n }\n\n if (endHandler) {\n const endPos = ((endValue - min) / (max - min)) * railLen;\n this._updateHandler(endHandler, endPos, endValue);\n }\n\n this._updateTrack();\n }\n\n render() {\n this.removeAllChild();\n const {\n layout = 'horizontal',\n railWidth,\n railHeight,\n startText,\n endText,\n min,\n max,\n showHandler = true\n } = this.attribute as SliderAttributes;\n let { value } = this.attribute as SliderAttributes;\n if (isNil(value)) {\n value = [min, max];\n }\n\n this._currentValue = {\n startValue: convertValueToRange(value)[0],\n endValue: convertValueToRange(value)[1]\n };\n const isHorizontal = layout === 'horizontal';\n this._isHorizontal = isHorizontal;\n\n const innerView = createGroup({\n x: 0,\n y: 0\n });\n innerView.name = SLIDER_ELEMENT_NAME.innerView;\n this.add(innerView);\n this._innerView = innerView;\n\n let startLen = 0;\n let startTextShape;\n if (startText && startText.visible) {\n // 渲染首部文本\n startTextShape = createText({\n x: isHorizontal ? 0 : railWidth / 2,\n y: isHorizontal ? (railHeight as number) / 2 : 0,\n textAlign: isHorizontal ? 'start' : 'center',\n textBaseline: isHorizontal ? 'middle' : 'top',\n text: startText.text,\n lineHeight: startText.style?.fontSize,\n ...startText.style\n });\n startTextShape.name = SLIDER_ELEMENT_NAME.startText;\n innerView.add(startTextShape);\n const space = isValid(startText.space) ? startText.space : 0;\n startLen += (isHorizontal ? startTextShape.AABBBounds.width() : startTextShape.AABBBounds.height()) + space;\n }\n const mainContainer = createGroup({\n x: isHorizontal ? startLen : 0,\n y: isHorizontal ? 0 : startLen\n });\n innerView.add(mainContainer);\n\n const railContainer = createGroup({\n x: 0,\n y: 0\n });\n railContainer.name = SLIDER_ELEMENT_NAME.railContainer;\n this._railContainer = railContainer;\n mainContainer.add(railContainer);\n\n this._renderRail(railContainer);\n\n startLen += isHorizontal ? (railWidth as number) : (railHeight as number);\n\n let endTextShape;\n if (endText && endText.visible) {\n const space = isValid(endText.space) ? endText.space : 0;\n\n // 渲染首部文本\n endTextShape = createText({\n x: isHorizontal ? startLen + space : railWidth / 2,\n y: isHorizontal ? (railHeight as number) / 2 : startLen + space,\n textAlign: isHorizontal ? 'start' : 'center',\n textBaseline: isHorizontal ? 'middle' : 'top',\n text: endText.text,\n lineHeight: endText.style?.fontSize,\n ...endText.style\n });\n endTextShape.name = SLIDER_ELEMENT_NAME.endText;\n innerView.add(endTextShape);\n }\n\n this._renderTrack(railContainer);\n\n if (showHandler) {\n this._renderHandlers(mainContainer);\n this._bindEvents();\n }\n }\n\n // 渲染滑块轨道\n protected _renderRail(container: IGroup) {\n const { railWidth, railHeight, railStyle, slidable } = this.attribute;\n\n let cursor: Cursor = 'default';\n if (slidable !== false) {\n cursor = 'pointer';\n }\n\n const railShape = createRect({\n x: 0,\n y: 0,\n width: railWidth,\n height: railHeight,\n cursor,\n ...railStyle\n });\n railShape.name = SLIDER_ELEMENT_NAME.rail;\n container.add(railShape);\n this._rail = railShape;\n\n return railShape;\n }\n\n // 渲染 handler\n protected _renderHandlers(container: IGroup) {\n const {\n range,\n min,\n max,\n handlerSize = 14,\n handlerStyle,\n handlerText,\n railHeight,\n railWidth,\n slidable\n } = this.attribute as SliderAttributes;\n let { value } = this.attribute as SliderAttributes;\n if (isNil(value)) {\n value = [min, max];\n }\n\n const handlerTextVisible = handlerText && handlerText.visible;\n const isHorizontal = this._isHorizontal;\n const railLen = isHorizontal ? railWidth : railHeight;\n\n const [startValue, endValue] = convertValueToRange(value);\n // 单滑块\n const handlerStart = max === min ? (range ? 0 : railLen) : (((startValue as number) - min) / (max - min)) * railLen;\n const startHandler = this._renderHandler({\n x: isHorizontal ? handlerStart : railWidth / 2,\n y: isHorizontal ? railHeight / 2 : handlerStart,\n size: handlerSize,\n strokeBoundsBuffer: 0,\n cursor: slidable === false ? 'default' : getDefaultCursor(isHorizontal),\n ...handlerStyle\n });\n startHandler.name = SLIDER_ELEMENT_NAME.startHandler;\n this._startHandler = startHandler;\n container.add(startHandler);\n this._currentValue.startPos = handlerStart;\n\n if (handlerTextVisible) {\n const startHandlerText = this._renderHandlerText(startValue, range ? 'start' : 'end');\n startHandlerText.name = SLIDER_ELEMENT_NAME.startHandlerText;\n container.add(startHandlerText);\n\n this._startHandlerText = startHandlerText;\n }\n\n if (range) {\n // 绘制第二个滑块\n // 单滑块\n const handlerEnd = max === min ? railLen : (((endValue as number) - min) / (max - min)) * railLen;\n const endHandler = this._renderHandler({\n x: isHorizontal ? handlerEnd : railWidth / 2,\n y: isHorizontal ? railHeight / 2 : handlerEnd,\n size: handlerSize,\n strokeBoundsBuffer: 0,\n cursor: slidable === false ? 'default' : getDefaultCursor(isHorizontal),\n ...handlerStyle\n });\n endHandler.name = SLIDER_ELEMENT_NAME.endHandler;\n this._endHandler = endHandler;\n container.add(endHandler);\n this._currentValue.endPos = handlerEnd;\n\n if (handlerTextVisible) {\n const endHandlerText = this._renderHandlerText(endValue, 'end');\n endHandlerText.name = SLIDER_ELEMENT_NAME.endHandlerText;\n container.add(endHandlerText);\n\n this._endHandlerText = endHandlerText;\n }\n }\n }\n\n // 渲染选中区域\n protected _renderTrack(container: IGroup) {\n const { range, min, max, railHeight, railWidth, trackStyle, railStyle, slidable, value } = this\n .attribute as SliderAttributes;\n\n let startValue;\n let endValue;\n\n if (isNil(value)) {\n if (range) {\n startValue = min;\n endValue = max;\n } else {\n startValue = endValue = min;\n }\n } else {\n if (range) {\n const clampValue = clampRange(value as [number, number], min, max);\n startValue = clampValue[0];\n endValue = clampValue[1];\n } else {\n startValue = min;\n endValue = clamp(value as number, min, max);\n }\n }\n\n const isHorizontal = this._isHorizontal;\n const railLen = isHorizontal ? railWidth : railHeight;\n // eslint-disable-next-line prefer-const\n // let [startValue, endValue] = convertValueToRange(value);\n\n if (!range) {\n startValue = min;\n }\n\n const trackContainer = createGroup({\n x: 0,\n y: 0,\n width: railWidth,\n height: railHeight,\n cornerRadius: railStyle?.cornerRadius,\n clip: true,\n pickable: false\n });\n trackContainer.name = SLIDER_ELEMENT_NAME.trackContainer;\n\n const draggableTrack = isObject(range) && range.draggableTrack === true;\n let cursor: Cursor;\n if (slidable === false) {\n cursor = 'default';\n } else if (range === false) {\n cursor = 'pointer';\n } else if (draggableTrack === false) {\n cursor = 'pointer';\n } else {\n cursor = getDefaultCursor(isHorizontal);\n }\n\n const trackWidth = max === min ? railLen : ((endValue - startValue) / (max - min)) * railLen;\n const startPos = max === min ? 0 : ((startValue - min) / (max - min)) * railLen;\n const track = createRect({\n x: isHorizontal ? startPos : 0,\n y: isHorizontal ? 0 : startPos,\n width: isHorizontal ? trackWidth : railWidth,\n height: isHorizontal ? railHeight : trackWidth,\n cursor,\n ...trackStyle\n });\n track.name = SLIDER_ELEMENT_NAME.track;\n this._track = track;\n trackContainer.add(track);\n container.add(trackContainer);\n }\n\n protected _renderHandler(style: Partial<ISymbolGraphicAttribute>) {\n // 渲染单个滑块\n const handler = createSymbol(style);\n\n return handler;\n }\n\n private _renderHandlerText(value: number, position: string) {\n const {\n align,\n min,\n max,\n handlerSize = 14,\n handlerText = {},\n railHeight,\n railWidth,\n slidable\n } = this.attribute as SliderAttributes;\n\n const isHorizontal = this._isHorizontal;\n const railLen = isHorizontal ? railWidth : railHeight;\n const handlerStart =\n max === min ? (position === 'start' ? 0 : railLen) : (((value as number) - min) / (max - min)) * railLen;\n const textSpace = handlerText.space ?? 4;\n const textStyle: ITextGraphicAttribute = {\n text: handlerText?.formatter ? handlerText.formatter(value) : value.toFixed(handlerText?.precision ?? 0),\n lineHeight: handlerText.style?.lineHeight,\n cursor: slidable === false ? 'default' : getDefaultCursor(isHorizontal),\n ...handlerText.style\n };\n if (isHorizontal) {\n if (align === 'top') {\n // 展示 slider 上部\n textStyle.textBaseline = 'bottom';\n textStyle.textAlign = 'center';\n textStyle.x = handlerStart;\n textStyle.y = (railHeight - handlerSize) / 2 - textSpace;\n } else {\n // 展示 slider 下部\n textStyle.textBaseline = 'top';\n textStyle.textAlign = 'center';\n textStyle.x = handlerStart;\n textStyle.y = (railHeight + handlerSize) / 2 + textSpace;\n }\n } else {\n if (align === 'left') {\n // 展示 slider 左侧\n textStyle.textBaseline = 'middle';\n textStyle.textAlign = 'end';\n textStyle.x = (railWidth - handlerSize) / 2 - textSpace;\n textStyle.y = handlerStart;\n } else {\n // 展示 slider 右侧\n textStyle.textBaseline = 'middle';\n textStyle.textAlign = 'start';\n textStyle.x = (railWidth + handlerSize) / 2 + textSpace;\n textStyle.y = handlerStart;\n }\n }\n\n // 展示 handler 当前所在的数值\n const textShape = createText(textStyle);\n return textShape;\n }\n\n private _bindEvents() {\n const { slidable, range } = this.attribute as SliderAttributes;\n if (slidable) {\n if (this._startHandler) {\n this._startHandler.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n if (this._startHandlerText) {\n this._startHandlerText.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n if (this._endHandler) {\n this._endHandler.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n if (this._endHandlerText) {\n this._endHandlerText.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n\n if (isObject(range) && range.draggableTrack) {\n this._track.addEventListener('pointerdown', this._onTrackPointerdown as EventListenerOrEventListenerObject);\n }\n\n this._railContainer.addEventListener(\n 'pointerdown',\n this._onRailPointerDown as EventListenerOrEventListenerObject\n );\n }\n }\n\n private _onHandlerPointerdown = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this._currentHandler = e.target as unknown as IGraphic;\n this._prePos = this._isHorizontal ? e.clientX : e.clientY;\n if (vglobal.env === 'browser') {\n vglobal.addEventListener('pointermove', this._onHandlerPointerMove as EventListenerOrEventListenerObject);\n vglobal.addEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n } else {\n this._currentHandler.addEventListener(\n 'pointermove',\n this._onHandlerPointerMove as EventListenerOrEventListenerObject\n );\n this._currentHandler.addEventListener(\n 'pointerup',\n this._onHandlerPointerUp as EventListenerOrEventListenerObject\n );\n this._currentHandler.addEventListener(\n 'pointerupoutside',\n this._onHandlerPointerUp as EventListenerOrEventListenerObject\n );\n }\n };\n\n private _onHandlerPointerMove = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n if (max === min) {\n return;\n }\n\n let currentPos;\n let delta = 0;\n let originPos;\n let railLen;\n if (!this._isHorizontal) {\n currentPos = e.clientY;\n delta = currentPos - this._prePos; // 实际位移的变化\n originPos = this._currentHandler?.attribute.y as number;\n railLen = railHeight;\n } else {\n currentPos = e.clientX;\n delta = currentPos - this._prePos; // 实际位移的变化\n originPos = this._currentHandler?.attribute.x as number;\n railLen = railWidth;\n }\n\n const newPos = clamp(originPos + delta, 0, railLen);\n const currentValue = (newPos / railLen) * (max - min) + min;\n\n if (this._currentHandler.type === 'text') {\n this._updateHandlerText(this._currentHandler as IText, newPos, currentValue);\n } else {\n this._updateHandler(this._currentHandler as ISymbol, newPos, currentValue);\n }\n\n this._updateTrack();\n this._prePos = currentPos;\n\n this._dispatchChangeEvent();\n };\n\n private _onHandlerPointerUp = (e: FederatedPointerEvent) => {\n e.preventDefault();\n this._currentHandler = null;\n if (vglobal.env === 'browser') {\n vglobal.removeEventListener('pointermove', this._onHandlerPointerMove as EventListenerOrEventListenerObject);\n vglobal.removeEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n } else {\n const currentTarget = e.target;\n currentTarget.removeEventListener(\n 'pointermove',\n this._onHandlerPointerMove as EventListenerOrEventListenerObject\n );\n currentTarget.removeEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n currentTarget.removeEventListener(\n 'pointerupoutside',\n this._onHandlerPointerUp as EventListenerOrEventListenerObject\n );\n }\n };\n\n private _onTrackPointerdown = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this._prePos = this._isHorizontal ? e.clientX : e.clientY;\n if (vglobal.env === 'browser') {\n vglobal.addEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject);\n vglobal.addEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n } else {\n this._track.addEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject);\n this._track.addEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n this._track.addEventListener('pointerupoutside', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n }\n };\n\n private _onTrackPointerMove = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n\n if (max === min) {\n return;\n }\n const { startHandler, endHandler } = this._getHandlers();\n\n let currentPos;\n let trackLen;\n let railLen;\n if (this._isHorizontal) {\n currentPos = e.clientX;\n // @ts-ignore\n trackLen = this._track.attribute.width;\n railLen = railWidth;\n } else {\n currentPos = e.clientY;\n // @ts-ignore\n trackLen = this._track.attribute.height;\n railLen = railHeight;\n }\n const delta = currentPos - this._prePos; // 实际位移的变化\n if (startHandler) {\n const originPos = (this._isHorizontal ? startHandler.attribute.x : startHandler.attribute.y) as number;\n const newPos = clamp(originPos + delta, 0, railLen - trackLen);\n const currentValue = (newPos / railLen) * (max - min) + min;\n this._updateHandler(startHandler, newPos, currentValue);\n }\n\n if (endHandler) {\n const originPos = (this._isHorizontal ? endHandler.attribute.x : endHandler.attribute.y) as number;\n const newPos = clamp(originPos + delta, trackLen, railLen);\n const currentValue = (newPos / railLen) * (max - min) + min;\n this._updateHandler(endHandler, newPos, currentValue);\n this._track.setAttributes(\n this._isHorizontal\n ? {\n x: Math.min(startHandler?.attribute.x as number, endHandler?.attribute.x as number),\n // @ts-ignore\n width: Math.abs((startHandler?.attribute.x as number) - (endHandler?.attribute.x as number))\n }\n : {\n y: Math.min(startHandler?.attribute.y as number, endHandler?.attribute.y as number),\n // @ts-ignore\n height: Math.abs((startHandler?.attribute.y as number) - (endHandler?.attribute.y as number))\n }\n );\n }\n\n this._prePos = currentPos;\n this._dispatchChangeEvent();\n };\n\n private _onTrackPointerUp = (e: FederatedPointerEvent) => {\n e.preventDefault();\n if (vglobal.env === 'browser') {\n vglobal.removeEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject);\n vglobal.removeEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n } else {\n this._track.removeEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject);\n this._track.removeEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n this._track.removeEventListener('pointerupoutside', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n }\n };\n\n private _onRailPointerDown = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n\n if (max === min) {\n return;\n }\n\n const startHandler = this._startHandler as ISymbol;\n const endHandler = this._endHandler;\n\n let currentPos;\n let startHandlerPos;\n let endHandlerPos;\n let railLen;\n // 更新 handler, text 以及 track\n if (this._isHorizontal) {\n currentPos = e.viewX - this._rail.globalAABBBounds.x1;\n startHandlerPos = startHandler?.attribute.x as number;\n endHandlerPos = endHandler?.attribute.x;\n railLen = railWidth;\n } else {\n currentPos = e.viewY - this._rail.globalAABBBounds.y1;\n startHandlerPos = startHandler?.attribute.y as number;\n endHandlerPos = endHandler?.attribute.y;\n railLen = railHeight;\n }\n\n const currentValue = (currentPos / railLen) * (max - min) + min;\n\n if (isValid(endHandlerPos)) {\n const updateHandler = (\n Math.abs(currentPos - startHandlerPos) > Math.abs(currentPos - endHandlerPos) ? endHandler : startHandler\n ) as ISymbol;\n this._updateHandler(updateHandler, currentPos, currentValue);\n } else {\n this._updateHandler(startHandler, currentPos, currentValue);\n }\n this._updateTrack();\n\n this._dispatchChangeEvent();\n };\n\n // 更新 track 样式\n private _updateTrack() {\n // 更新 track\n const startHandler = this._startHandler;\n const endHandler = this._endHandler;\n\n if (this._isHorizontal) {\n const startHandlerPos = startHandler?.attribute.x as number;\n if (endHandler) {\n const endHandlerPos = endHandler?.attribute.x as number;\n // 区间\n this._track.setAttributes({\n x: Math.min(startHandlerPos, endHandlerPos),\n // @ts-ignore\n width: Math.abs(startHandlerPos - endHandlerPos)\n });\n } else {\n this._track.setAttributes({\n // @ts-ignore\n width: startHandlerPos\n });\n }\n } else {\n const startHandlerPos = startHandler?.attribute.y as number;\n if (endHandler) {\n const endHandlerPos = endHandler?.attribute.y as number;\n // 区间\n this._track.setAttributes({\n y: Math.min(startHandlerPos, endHandlerPos),\n // @ts-ignore\n height: Math.abs(startHandlerPos - endHandlerPos)\n });\n } else {\n this._track.setAttributes({\n // @ts-ignore\n height: startHandlerPos\n });\n }\n }\n }\n\n // 更新 handler 以及对应 text\n private _updateHandler(handler: ISymbol, position: number, value: number) {\n const isHorizontal = this._isHorizontal;\n handler.setAttribute(isHorizontal ? 'x' : 'y', position);\n const updateHandlerText =\n handler.name === SLIDER_ELEMENT_NAME.startHandler ? this._startHandlerText : this._endHandlerText;\n if (updateHandlerText) {\n const { handlerText } = this.attribute as SliderAttributes;\n updateHandlerText?.setAttributes({\n text: handlerText?.formatter ? handlerText.formatter(value) : value.toFixed(handlerText?.precision ?? 0),\n [isHorizontal ? 'x' : 'y']: position\n });\n }\n\n if (handler.name === SLIDER_ELEMENT_NAME.startHandler) {\n this._currentValue.startValue = value;\n this._currentValue.startPos = position;\n } else {\n this._currentValue.endValue = value;\n this._currentValue.endPos = position;\n }\n }\n\n // 更新 handler 以及对应 text\n private _updateHandlerText(handlerText: IText, position: number, value: number) {\n const isHorizontal = this._isHorizontal;\n const { handlerText: handlerTextAttr } = this.attribute as SliderAttributes;\n handlerText.setAttributes({\n [isHorizontal ? 'x' : 'y']: position,\n text: handlerTextAttr?.formatter\n ? handlerTextAttr.formatter(value)\n : value.toFixed(handlerTextAttr?.precision ?? 0)\n });\n const updateHandler =\n handlerText.name === SLIDER_ELEMENT_NAME.startHandlerText ? this._startHandler : this._endHandler;\n if (updateHandler) {\n updateHandler?.setAttributes({\n [isHorizontal ? 'x' : 'y']: position\n });\n }\n\n if (handlerText.name === SLIDER_ELEMENT_NAME.startHandlerText) {\n this._currentValue.startValue = value;\n this._currentValue.startPos = position;\n } else {\n this._currentValue.endValue = value;\n this._currentValue.endPos = position;\n }\n }\n\n private _dispatchChangeEvent() {\n const isRange = !!this.attribute.range;\n const currentValue = this._currentValue;\n const changeEvent = new CustomEvent('change', {\n value: isRange\n ? [\n Math.min(currentValue.endValue as number, currentValue.startValue as number),\n Math.max(currentValue.endValue as number, currentValue.startValue as number)\n ]\n : currentValue.startValue,\n position: isRange\n ? [\n Math.min(currentValue.endPos as number, currentValue.startPos as number),\n Math.max(currentValue.endPos as number, currentValue.startPos as number)\n ]\n : currentValue.startPos\n });\n // FIXME: 需要在 vrender 的事件系统支持\n // @ts-ignore\n changeEvent.manager = this.stage?.eventSystem.manager;\n this.dispatchEvent(changeEvent);\n }\n\n private _getHandlers() {\n let startHandler = this._startHandler;\n let endHandler = this._endHandler;\n let temp;\n\n if (this._isHorizontal) {\n if (endHandler && (endHandler.attribute.x as number) < (startHandler?.attribute.x as number)) {\n temp = startHandler;\n startHandler = endHandler;\n endHandler = temp;\n }\n } else {\n if (endHandler && (endHandler.attribute.y as number) < (startHandler?.attribute.y as number)) {\n temp = startHandler;\n startHandler = endHandler;\n endHandler = temp;\n }\n }\n\n return {\n startHandler,\n endHandler\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["slider/slider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAiB1F,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5G,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAIjD,SAAS,mBAAmB,CAAC,KAAgC;IAC3D,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;QAClB,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB,CAAC,YAAqB;IAC7C,OAAO,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;AAClD,CAAC;AAED,MAAM,OAAO,MAAO,SAAQ,iBAA6C;IAiEvE,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,YAAY,UAA4B;QACtC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;QAjFzD,SAAI,GAAG,QAAQ,CAAC;QAiDN,kBAAa,GAAG,IAAI,CAAC;QAErB,kBAAa,GAAmB,IAAI,CAAC;QACrC,gBAAW,GAAmB,IAAI,CAAC;QACnC,sBAAiB,GAAiB,IAAI,CAAC;QACvC,oBAAe,GAAiB,IAAI,CAAC;QAOvC,oBAAe,GAAoB,IAAI,CAAC;QACxC,kBAAa,GAAmF,EAAE,CAAC;QA0YnG,0BAAqB,GAAG,CAAC,CAAwB,EAAE,EAAE;YAC3D,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,MAA6B,CAAC;YACvD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1D,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC7B,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,qBAA2D,CAAC,CAAC;gBAC1G,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAyD,CAAC,CAAC;aACvG;iBAAM;gBACL,IAAI,CAAC,eAAe,CAAC,gBAAgB,CACnC,aAAa,EACb,IAAI,CAAC,qBAA2D,CACjE,CAAC;gBACF,IAAI,CAAC,eAAe,CAAC,gBAAgB,CACnC,WAAW,EACX,IAAI,CAAC,mBAAyD,CAC/D,CAAC;gBACF,IAAI,CAAC,eAAe,CAAC,gBAAgB,CACnC,kBAAkB,EAClB,IAAI,CAAC,mBAAyD,CAC/D,CAAC;aACH;QACH,CAAC,CAAC;QAEM,0BAAqB,GAAG,CAAC,CAAwB,EAAE,EAAE;;YAC3D,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAA6B,CAAC;YAE/E,IAAI,UAAU,CAAC;YACf,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,SAAS,CAAC;YACd,IAAI,OAAO,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;gBACvB,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;gBAClC,SAAS,GAAG,MAAA,IAAI,CAAC,eAAe,0CAAE,SAAS,CAAC,CAAW,CAAC;gBACxD,OAAO,GAAG,UAAU,CAAC;aACtB;iBAAM;gBACL,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;gBACvB,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;gBAClC,SAAS,GAAG,MAAA,IAAI,CAAC,eAAe,0CAAE,SAAS,CAAC,CAAW,CAAC;gBACxD,OAAO,GAAG,SAAS,CAAC;aACrB;YAED,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YAE5D,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,MAAM,EAAE;gBACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAwB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;aAC9E;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAA0B,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;aAC5E;YAED,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;YAE1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC,CAAC;QAEM,wBAAmB,GAAG,CAAC,CAAwB,EAAE,EAAE;YACzD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC7B,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,qBAA2D,CAAC,CAAC;gBAC7G,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAyD,CAAC,CAAC;aAC1G;iBAAM;gBACL,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;gBAC/B,aAAa,CAAC,mBAAmB,CAC/B,aAAa,EACb,IAAI,CAAC,qBAA2D,CACjE,CAAC;gBACF,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAyD,CAAC,CAAC;gBAC/G,aAAa,CAAC,mBAAmB,CAC/B,kBAAkB,EAClB,IAAI,CAAC,mBAAyD,CAC/D,CAAC;aACH;QACH,CAAC,CAAC;QAEM,wBAAmB,GAAG,CAAC,CAAwB,EAAE,EAAE;YACzD,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1D,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC7B,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAyD,CAAC,CAAC;gBACxG,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAuD,CAAC,CAAC;aACrG;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAyD,CAAC,CAAC;gBAC5G,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAuD,CAAC,CAAC;gBACxG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAuD,CAAC,CAAC;aAChH;QACH,CAAC,CAAC;QAEM,wBAAmB,GAAG,CAAC,CAAwB,EAAE,EAAE;YACzD,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAA6B,CAAC;YAC/E,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAEzD,IAAI,UAAU,CAAC;YACf,IAAI,QAAQ,CAAC;YACb,IAAI,OAAO,CAAC;YACZ,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;gBAEvB,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;gBACvC,OAAO,GAAG,SAAS,CAAC;aACrB;iBAAM;gBACL,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;gBAEvB,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;gBACxC,OAAO,GAAG,UAAU,CAAC;aACtB;YACD,MAAM,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;YACxC,IAAI,YAAY,EAAE;gBAChB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAW,CAAC;gBACvG,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC;gBAC/D,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;gBAC5D,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;aACzD;YAED,IAAI,UAAU,EAAE;gBACd,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAW,CAAC;gBACnG,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC3D,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;gBAC5D,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;gBACtD,IAAI,CAAC,MAAM,CAAC,aAAa,CACvB,IAAI,CAAC,aAAa;oBAChB,CAAC,CAAC;wBACE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAW,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,CAAW,CAAC;wBAEnF,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAY,KAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,CAAY,CAAA,CAAC;qBAC7F;oBACH,CAAC,CAAC;wBACE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAW,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,CAAW,CAAC;wBAEnF,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAY,KAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,CAAY,CAAA,CAAC;qBAC9F,CACN,CAAC;aACH;YAED,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;YAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC,CAAC;QAEM,sBAAiB,GAAG,CAAC,CAAwB,EAAE,EAAE;YACvD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC7B,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAyD,CAAC,CAAC;gBAC3G,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAuD,CAAC,CAAC;aACxG;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAyD,CAAC,CAAC;gBAC/G,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAuD,CAAC,CAAC;gBAC3G,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAuD,CAAC,CAAC;aACnH;QACH,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAAC,CAAwB,EAAE,EAAE;YACxD,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAA6B,CAAC;YAC/E,MAAM,YAAY,GAAG,IAAI,CAAC,aAAwB,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;YAEpC,IAAI,UAAU,CAAC;YACf,IAAI,eAAe,CAAC;YACpB,IAAI,aAAa,CAAC;YAClB,IAAI,OAAO,CAAC;YAEZ,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACtD,eAAe,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAW,CAAC;gBACtD,aAAa,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,CAAC,CAAC;gBACxC,OAAO,GAAG,SAAS,CAAC;aACrB;iBAAM;gBACL,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACtD,eAAe,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAW,CAAC;gBACtD,aAAa,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,CAAC,CAAC;gBACxC,OAAO,GAAG,UAAU,CAAC;aACtB;YAED,MAAM,YAAY,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YAEhE,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;gBAC1B,MAAM,aAAa,GAAG,CACpB,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,eAAe,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAC/F,CAAC;gBACb,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;aAC9D;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;aAC7D;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC,CAAC;IApjBF,CAAC;IAKD,QAAQ,CAAC,KAAwB;QAC/B,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAA6B,CAAC;QACvF,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;QAC9D,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;SACzD;QAED,IAAI,UAAU,EAAE;YACd,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;YAC1D,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,MAAM;;QACJ,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,EACJ,MAAM,GAAG,YAAY,EACrB,SAAS,EACT,UAAU,EACV,SAAS,EACT,OAAO,EACP,GAAG,EACH,GAAG,EACH,WAAW,GAAG,IAAI,EACnB,GAAG,IAAI,CAAC,SAA6B,CAAC;QACvC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAA6B,CAAC;QACnD,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YAChB,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACpB;QAED,IAAI,CAAC,aAAa,GAAG;YACnB,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzC,QAAQ,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACxC,CAAC;QACF,MAAM,YAAY,GAAG,MAAM,KAAK,YAAY,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElC,MAAM,SAAS,GAAG,WAAW,CAAC;YAC5B,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAC,CAAC;QACH,SAAS,CAAC,IAAI,GAAG,mBAAmB,CAAC,SAAS,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,cAAc,CAAC;QACnB,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,EAAE;YAElC,cAAc,GAAG,UAAU,iBACzB,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,EACnC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAE,UAAqB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAChD,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAC5C,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAC7C,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,UAAU,EAAE,MAAA,SAAS,CAAC,KAAK,0CAAE,QAAQ,IAClC,SAAS,CAAC,KAAK,EAClB,CAAC;YACH,cAAc,CAAC,IAAI,GAAG,mBAAmB,CAAC,SAAS,CAAC;YACpD,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,QAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;SAC7G;QACD,MAAM,aAAa,GAAG,WAAW,CAAC;YAChC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;SAC/B,CAAC,CAAC;QACH,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAE7B,MAAM,aAAa,GAAG,WAAW,CAAC;YAChC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,GAAG,mBAAmB,CAAC,aAAa,CAAC;QACvD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAEjC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAEhC,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAE,SAAoB,CAAC,CAAC,CAAE,UAAqB,CAAC;QAE1E,IAAI,YAAY,CAAC;QACjB,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAGzD,YAAY,GAAG,UAAU,iBACvB,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,EAClD,CAAC,EAAE,YAAY,CAAC,CAAC,CAAE,UAAqB,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,EAC/D,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAC5C,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAC7C,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,UAAU,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,QAAQ,IAChC,OAAO,CAAC,KAAK,EAChB,CAAC;YACH,YAAY,CAAC,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;YAChD,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;SAC7B;QAED,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAEjC,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YACpC,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAGS,WAAW,CAAC,SAAiB;QACrC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAEtE,IAAI,MAAM,GAAW,SAAS,CAAC;QAC/B,IAAI,QAAQ,KAAK,KAAK,EAAE;YACtB,MAAM,GAAG,SAAS,CAAC;SACpB;QAED,MAAM,SAAS,GAAG,UAAU,iBAC1B,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,UAAU,EAClB,MAAM,IACH,SAAS,EACZ,CAAC;QACH,SAAS,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC;QAC1C,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QAEvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAGS,eAAe,CAAC,SAAiB;QACzC,MAAM,EACJ,KAAK,EACL,GAAG,EACH,GAAG,EACH,WAAW,GAAG,EAAE,EAChB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,EACT,GAAG,IAAI,CAAC,SAA6B,CAAC;QACvC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAA6B,CAAC;QACnD,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YAChB,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACpB;QAED,MAAM,kBAAkB,GAAG,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC;QAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;QAEtD,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAG1D,MAAM,YAAY,GAAG,CAAC,CAAE,UAAqB,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;QAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,iBACtC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,EAC9C,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,EAC/C,IAAI,EAAE,WAAW,EACjB,kBAAkB,EAAE,CAAC,EACrB,MAAM,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,IACpE,YAAY,EACf,CAAC;QACH,YAAY,CAAC,IAAI,GAAG,mBAAmB,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,YAAY,CAAC;QAE3C,IAAI,kBAAkB,EAAE;YACtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAC7D,gBAAgB,CAAC,IAAI,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;YAC7D,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAEhC,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;SAC3C;QAED,IAAI,KAAK,EAAE;YAGT,MAAM,UAAU,GAAG,CAAC,CAAE,QAAmB,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;YAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,iBACpC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,EAC5C,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,EAC7C,IAAI,EAAE,WAAW,EACjB,kBAAkB,EAAE,CAAC,EACrB,MAAM,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,IACpE,YAAY,EACf,CAAC;YACH,UAAU,CAAC,IAAI,GAAG,mBAAmB,CAAC,UAAU,CAAC;YACjD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC9B,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC;YAEvC,IAAI,kBAAkB,EAAE;gBACtB,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACzD,cAAc,CAAC,IAAI,GAAG,mBAAmB,CAAC,cAAc,CAAC;gBACzD,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAE9B,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;aACvC;SACF;IACH,CAAC;IAGS,YAAY,CAAC,SAAiB;QACtC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI;aACrF,SAA6B,CAAC;QACjC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAA6B,CAAC;QACnD,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YAChB,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACpB;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;QAEtD,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAExD,IAAI,CAAC,KAAK,EAAE;YACV,UAAU,GAAG,GAAG,CAAC;SAClB;QAED,MAAM,cAAc,GAAG,WAAW,CAAC;YACjC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,UAAU;YAClB,YAAY,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,YAAY;YACrC,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QACH,cAAc,CAAC,IAAI,GAAG,mBAAmB,CAAC,cAAc,CAAC;QAEzD,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC;QACxE,IAAI,MAAc,CAAC;QACnB,IAAI,QAAQ,KAAK,KAAK,EAAE;YACtB,MAAM,GAAG,SAAS,CAAC;SACpB;aAAM,IAAI,KAAK,KAAK,KAAK,EAAE;YAC1B,MAAM,GAAG,SAAS,CAAC;SACpB;aAAM,IAAI,cAAc,KAAK,KAAK,EAAE;YACnC,MAAM,GAAG,SAAS,CAAC;SACpB;aAAM;YACL,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;SACzC;QAED,MAAM,UAAU,GAAG,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;QACrE,MAAM,KAAK,GAAG,UAAU,iBACtB,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAClE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,EAClE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAC5C,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAC9C,MAAM,IACH,UAAU,EACb,CAAC;QACH,KAAK,CAAC,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;IAES,cAAc,CAAC,KAAuC;QAE9D,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAEpC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,kBAAkB,CAAC,KAAa;;QACtC,MAAM,EACJ,KAAK,EACL,GAAG,EACH,GAAG,EACH,WAAW,GAAG,EAAE,EAChB,WAAW,GAAG,EAAE,EAChB,UAAU,EACV,SAAS,EACT,QAAQ,EACT,GAAG,IAAI,CAAC,SAA6B,CAAC;QAEvC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;QACtD,MAAM,YAAY,GAAG,CAAC,CAAE,KAAgB,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;QACzE,MAAM,SAAS,GAAG,MAAA,WAAW,CAAC,KAAK,mCAAI,CAAC,CAAC;QACzC,MAAM,SAAS,mBACb,IAAI,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,EAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,mCAAI,CAAC,CAAC,EACxG,UAAU,EAAE,MAAA,WAAW,CAAC,KAAK,0CAAE,UAAU,EACzC,MAAM,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,IACpE,WAAW,CAAC,KAAK,CACrB,CAAC;QACF,IAAI,YAAY,EAAE;YAChB,IAAI,KAAK,KAAK,KAAK,EAAE;gBAEnB,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC;gBAClC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC/B,SAAS,CAAC,CAAC,GAAG,YAAY,CAAC;gBAC3B,SAAS,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;aAC1D;iBAAM;gBAEL,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC/B,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC/B,SAAS,CAAC,CAAC,GAAG,YAAY,CAAC;gBAC3B,SAAS,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;aAC1D;SACF;aAAM;YACL,IAAI,KAAK,KAAK,MAAM,EAAE;gBAEpB,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC;gBAClC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC;gBAC5B,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;gBACxD,SAAS,CAAC,CAAC,GAAG,YAAY,CAAC;aAC5B;iBAAM;gBAEL,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC;gBAClC,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC;gBAC9B,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;gBACxD,SAAS,CAAC,CAAC,GAAG,YAAY,CAAC;aAC5B;SACF;QAGD,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,WAAW;QACjB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAA6B,CAAC;QAC/D,IAAI,QAAQ,EAAE;YACZ,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,aAAa,CAAC,gBAAgB,CACjC,aAAa,EACb,IAAI,CAAC,qBAA2D,CACjE,CAAC;aACH;YACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CACrC,aAAa,EACb,IAAI,CAAC,qBAA2D,CACjE,CAAC;aACH;YACD,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAC/B,aAAa,EACb,IAAI,CAAC,qBAA2D,CACjE,CAAC;aACH;YACD,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CACnC,aAAa,EACb,IAAI,CAAC,qBAA2D,CACjE,CAAC;aACH;YAED,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,cAAc,EAAE;gBAC3C,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAyD,CAAC,CAAC;aAC7G;YAED,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAClC,aAAa,EACb,IAAI,CAAC,kBAAwD,CAC9D,CAAC;SACH;IACH,CAAC;IAmMO,YAAY;QAElB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QAEpC,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,eAAe,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAW,CAAC;YAC5D,IAAI,UAAU,EAAE;gBACd,MAAM,aAAa,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,CAAW,CAAC;gBAExD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;oBACxB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC;oBAE3C,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,aAAa,CAAC;iBACjD,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;oBAExB,KAAK,EAAE,eAAe;iBACvB,CAAC,CAAC;aACJ;SACF;aAAM;YACL,MAAM,eAAe,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAW,CAAC;YAC5D,IAAI,UAAU,EAAE;gBACd,MAAM,aAAa,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,CAAW,CAAC;gBAExD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;oBACxB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC;oBAE3C,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,aAAa,CAAC;iBAClD,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;oBAExB,MAAM,EAAE,eAAe;iBACxB,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAGO,cAAc,CAAC,OAAgB,EAAE,QAAgB,EAAE,KAAa;;QACtE,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACzD,MAAM,iBAAiB,GACrB,OAAO,CAAC,IAAI,KAAK,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;QACpG,IAAI,iBAAiB,EAAE;YACrB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,SAA6B,CAAC;YAC3D,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,aAAa,CAAC;gBAC/B,IAAI,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,EAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,mCAAI,CAAC,CAAC;gBACxG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ;aACrC,CAAC,CAAC;SACJ;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,CAAC,YAAY,EAAE;YACrD,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;YACtC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;SACxC;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,QAAQ,CAAC;SACtC;IACH,CAAC;IAGO,kBAAkB,CAAC,WAAkB,EAAE,QAAgB,EAAE,KAAa;;QAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,SAA6B,CAAC;QAC5E,WAAW,CAAC,aAAa,CAAC;YACxB,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ;YACpC,IAAI,EAAE,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,SAAS;gBAC9B,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC;gBAClC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,SAAS,mCAAI,CAAC,CAAC;SACnD,CAAC,CAAC;QACH,MAAM,aAAa,GACjB,WAAW,CAAC,IAAI,KAAK,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACpG,IAAI,aAAa,EAAE;YACjB,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,CAAC;gBAC3B,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ;aACrC,CAAC,CAAC;SACJ;QAED,IAAI,WAAW,CAAC,IAAI,KAAK,mBAAmB,CAAC,gBAAgB,EAAE;YAC7D,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;YACtC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;SACxC;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,QAAQ,CAAC;SACtC;IACH,CAAC;IAEO,oBAAoB;;QAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE;YAC5C,KAAK,EAAE,OAAO;gBACZ,CAAC,CAAC;oBACE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAkB,EAAE,YAAY,CAAC,UAAoB,CAAC;oBAC5E,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAkB,EAAE,YAAY,CAAC,UAAoB,CAAC;iBAC7E;gBACH,CAAC,CAAC,YAAY,CAAC,UAAU;YAC3B,QAAQ,EAAE,OAAO;gBACf,CAAC,CAAC;oBACE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAgB,EAAE,YAAY,CAAC,QAAkB,CAAC;oBACxE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAgB,EAAE,YAAY,CAAC,QAAkB,CAAC;iBACzE;gBACH,CAAC,CAAC,YAAY,CAAC,QAAQ;SAC1B,CAAC,CAAC;QAGH,WAAW,CAAC,OAAO,GAAG,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAEO,YAAY;QAClB,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACtC,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,IAAI,CAAC;QAET,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,UAAU,IAAK,UAAU,CAAC,SAAS,CAAC,CAAY,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAY,CAAA,EAAE;gBAC5F,IAAI,GAAG,YAAY,CAAC;gBACpB,YAAY,GAAG,UAAU,CAAC;gBAC1B,UAAU,GAAG,IAAI,CAAC;aACnB;SACF;aAAM;YACL,IAAI,UAAU,IAAK,UAAU,CAAC,SAAS,CAAC,CAAY,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAY,CAAA,EAAE;gBAC5F,IAAI,GAAG,YAAY,CAAC;gBACpB,YAAY,GAAG,UAAU,CAAC;gBAC1B,UAAU,GAAG,IAAI,CAAC;aACnB;SACF;QAED,OAAO;YACL,YAAY;YACZ,UAAU;SACX,CAAC;IACJ,CAAC;;AA/wBM,wBAAiB,GAAG;IACzB,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,EAAE;IACf,YAAY,EAAE;QACZ,UAAU,EAAE,QAAQ;QACpB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,CAAC;KACb;IACD,SAAS,EAAE;QACT,IAAI,EAAE,iBAAiB;KACxB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;KAChB;IACD,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,EAAE;KACb;IACD,SAAS,EAAE;QACT,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,EAAE;SACb;KACF;IACD,OAAO,EAAE;QACP,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,EAAE;SACb;KACF;IACD,WAAW,EAAE;QACX,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,EAAE;SACb;KACF;CACF,CAAC","file":"slider.js","sourcesContent":["import { isNil, merge, clamp, isValid, array, isObject, isArray } from '@visactor/vutils';\n/**\n * @description slider 滑块组件\n * TODO:\n * 3. step 功能开发\n * 4. tooltip 功能开发\n */\nimport type {\n IGroup,\n ISymbol,\n IGraphic,\n ISymbolGraphicAttribute,\n IText,\n ITextGraphicAttribute,\n FederatedPointerEvent,\n Cursor\n} from '@visactor/vrender';\nimport { createGroup, createText, vglobal, createRect, createSymbol, CustomEvent } from '@visactor/vrender';\nimport { AbstractComponent } from '../core/base';\nimport { SLIDER_ELEMENT_NAME } from './constant';\n\nimport type { SliderAttributes } from './type';\n\nfunction convertValueToRange(value: number | [number, number]) {\n if (isArray(value)) {\n return value;\n }\n return [value, value];\n}\n\nfunction getDefaultCursor(isHorizontal: boolean) {\n return isHorizontal ? 'ew-resize' : 'ns-resize';\n}\n\nexport class Slider extends AbstractComponent<Required<SliderAttributes>> {\n name = 'slider';\n\n static defaultAttributes = {\n slidable: true,\n layout: 'horizontal',\n align: 'bottom',\n height: 8,\n showHandler: true,\n handlerSize: 14,\n handlerStyle: {\n symbolType: 'circle',\n fill: '#fff',\n stroke: '#91caff',\n lineWidth: 2\n },\n railStyle: {\n fill: 'rgba(0,0,0,.04)'\n },\n trackStyle: {\n fill: '#91caff'\n },\n showValue: true,\n valueStyle: {\n fill: '#2C3542',\n fontSize: 12\n },\n startText: {\n style: {\n fill: '#2C3542',\n fontSize: 12\n }\n },\n endText: {\n style: {\n fill: '#2C3542',\n fontSize: 12\n }\n },\n handlerText: {\n visible: true,\n space: 4,\n precision: 0,\n style: {\n fill: '#2C3542',\n fontSize: 12\n }\n }\n };\n\n protected _isHorizontal = true;\n protected _innerView!: IGroup;\n protected _startHandler: ISymbol | null = null;\n protected _endHandler: ISymbol | null = null;\n protected _startHandlerText: IText | null = null;\n protected _endHandlerText: IText | null = null;\n protected _railContainer!: IGroup;\n protected _rail!: IGraphic;\n protected _track!: IGraphic;\n // 保留滑块上一次的位置\n private _prePos!: number;\n // 存储当前正在操作的滑块\n private _currentHandler: IGraphic | null = null;\n private _currentValue: { startValue?: number; endValue?: number; startPos?: number; endPos?: number } = {};\n\n get track() {\n return this._track;\n }\n\n get currentValue() {\n return this._currentValue;\n }\n\n get startHandler() {\n return this._startHandler;\n }\n\n get endHandler() {\n return this._endHandler;\n }\n\n constructor(attributes: SliderAttributes) {\n super(merge({}, Slider.defaultAttributes, attributes));\n }\n\n /**\n * 更新值域\n */\n setValue(value: number | number[]) {\n const [startValue, endValue] = array(value);\n const { layout, railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n const { startHandler, endHandler } = this._getHandlers();\n const railLen = layout === 'vertical' ? railHeight : railWidth;\n const startPos = ((startValue - min) / (max - min)) * railLen;\n if (startHandler) {\n this._updateHandler(startHandler, startPos, startValue);\n }\n\n if (endHandler) {\n const endPos = ((endValue - min) / (max - min)) * railLen;\n this._updateHandler(endHandler, endPos, endValue);\n }\n\n this._updateTrack();\n }\n\n render() {\n this.removeAllChild();\n const {\n layout = 'horizontal',\n railWidth,\n railHeight,\n startText,\n endText,\n min,\n max,\n showHandler = true\n } = this.attribute as SliderAttributes;\n let { value } = this.attribute as SliderAttributes;\n if (isNil(value)) {\n value = [min, max];\n }\n\n this._currentValue = {\n startValue: convertValueToRange(value)[0],\n endValue: convertValueToRange(value)[1]\n };\n const isHorizontal = layout === 'horizontal';\n this._isHorizontal = isHorizontal;\n\n const innerView = createGroup({\n x: 0,\n y: 0\n });\n innerView.name = SLIDER_ELEMENT_NAME.innerView;\n this.add(innerView);\n this._innerView = innerView;\n\n let startLen = 0;\n let startTextShape;\n if (startText && startText.visible) {\n // 渲染首部文本\n startTextShape = createText({\n x: isHorizontal ? 0 : railWidth / 2,\n y: isHorizontal ? (railHeight as number) / 2 : 0,\n textAlign: isHorizontal ? 'start' : 'center',\n textBaseline: isHorizontal ? 'middle' : 'top',\n text: startText.text,\n lineHeight: startText.style?.fontSize,\n ...startText.style\n });\n startTextShape.name = SLIDER_ELEMENT_NAME.startText;\n innerView.add(startTextShape);\n const space = isValid(startText.space) ? startText.space : 0;\n startLen += (isHorizontal ? startTextShape.AABBBounds.width() : startTextShape.AABBBounds.height()) + space;\n }\n const mainContainer = createGroup({\n x: isHorizontal ? startLen : 0,\n y: isHorizontal ? 0 : startLen\n });\n innerView.add(mainContainer);\n\n const railContainer = createGroup({\n x: 0,\n y: 0\n });\n railContainer.name = SLIDER_ELEMENT_NAME.railContainer;\n this._railContainer = railContainer;\n mainContainer.add(railContainer);\n\n this._renderRail(railContainer);\n\n startLen += isHorizontal ? (railWidth as number) : (railHeight as number);\n\n let endTextShape;\n if (endText && endText.visible) {\n const space = isValid(endText.space) ? endText.space : 0;\n\n // 渲染首部文本\n endTextShape = createText({\n x: isHorizontal ? startLen + space : railWidth / 2,\n y: isHorizontal ? (railHeight as number) / 2 : startLen + space,\n textAlign: isHorizontal ? 'start' : 'center',\n textBaseline: isHorizontal ? 'middle' : 'top',\n text: endText.text,\n lineHeight: endText.style?.fontSize,\n ...endText.style\n });\n endTextShape.name = SLIDER_ELEMENT_NAME.endText;\n innerView.add(endTextShape);\n }\n\n this._renderTrack(railContainer);\n\n if (showHandler) {\n this._renderHandlers(mainContainer);\n this._bindEvents();\n }\n }\n\n // 渲染滑块轨道\n protected _renderRail(container: IGroup) {\n const { railWidth, railHeight, railStyle, slidable } = this.attribute;\n\n let cursor: Cursor = 'default';\n if (slidable !== false) {\n cursor = 'pointer';\n }\n\n const railShape = createRect({\n x: 0,\n y: 0,\n width: railWidth,\n height: railHeight,\n cursor,\n ...railStyle\n });\n railShape.name = SLIDER_ELEMENT_NAME.rail;\n container.add(railShape);\n this._rail = railShape;\n\n return railShape;\n }\n\n // 渲染 handler\n protected _renderHandlers(container: IGroup) {\n const {\n range,\n min,\n max,\n handlerSize = 14,\n handlerStyle,\n handlerText,\n railHeight,\n railWidth,\n slidable\n } = this.attribute as SliderAttributes;\n let { value } = this.attribute as SliderAttributes;\n if (isNil(value)) {\n value = [min, max];\n }\n\n const handlerTextVisible = handlerText && handlerText.visible;\n const isHorizontal = this._isHorizontal;\n const railLen = isHorizontal ? railWidth : railHeight;\n\n const [startValue, endValue] = convertValueToRange(value);\n\n // 单滑块\n const handlerStart = (((startValue as number) - min) / (max - min)) * railLen;\n const startHandler = this._renderHandler({\n x: isHorizontal ? handlerStart : railWidth / 2,\n y: isHorizontal ? railHeight / 2 : handlerStart,\n size: handlerSize,\n strokeBoundsBuffer: 0,\n cursor: slidable === false ? 'default' : getDefaultCursor(isHorizontal),\n ...handlerStyle\n });\n startHandler.name = SLIDER_ELEMENT_NAME.startHandler;\n this._startHandler = startHandler;\n container.add(startHandler);\n this._currentValue.startPos = handlerStart;\n\n if (handlerTextVisible) {\n const startHandlerText = this._renderHandlerText(startValue);\n startHandlerText.name = SLIDER_ELEMENT_NAME.startHandlerText;\n container.add(startHandlerText);\n\n this._startHandlerText = startHandlerText;\n }\n\n if (range) {\n // 绘制第二个滑块\n // 单滑块\n const handlerEnd = (((endValue as number) - min) / (max - min)) * railLen;\n const endHandler = this._renderHandler({\n x: isHorizontal ? handlerEnd : railWidth / 2,\n y: isHorizontal ? railHeight / 2 : handlerEnd,\n size: handlerSize,\n strokeBoundsBuffer: 0,\n cursor: slidable === false ? 'default' : getDefaultCursor(isHorizontal),\n ...handlerStyle\n });\n endHandler.name = SLIDER_ELEMENT_NAME.endHandler;\n this._endHandler = endHandler;\n container.add(endHandler);\n this._currentValue.endPos = handlerEnd;\n\n if (handlerTextVisible) {\n const endHandlerText = this._renderHandlerText(endValue);\n endHandlerText.name = SLIDER_ELEMENT_NAME.endHandlerText;\n container.add(endHandlerText);\n\n this._endHandlerText = endHandlerText;\n }\n }\n }\n\n // 渲染选中区域\n protected _renderTrack(container: IGroup) {\n const { range, min, max, railHeight, railWidth, trackStyle, railStyle, slidable } = this\n .attribute as SliderAttributes;\n let { value } = this.attribute as SliderAttributes;\n if (isNil(value)) {\n value = [min, max];\n }\n\n const isHorizontal = this._isHorizontal;\n const railLen = isHorizontal ? railWidth : railHeight;\n // eslint-disable-next-line prefer-const\n let [startValue, endValue] = convertValueToRange(value);\n\n if (!range) {\n startValue = min;\n }\n\n const trackContainer = createGroup({\n x: 0,\n y: 0,\n width: railWidth,\n height: railHeight,\n cornerRadius: railStyle?.cornerRadius,\n clip: true,\n pickable: false\n });\n trackContainer.name = SLIDER_ELEMENT_NAME.trackContainer;\n\n const draggableTrack = isObject(range) && range.draggableTrack === true;\n let cursor: Cursor;\n if (slidable === false) {\n cursor = 'default';\n } else if (range === false) {\n cursor = 'pointer';\n } else if (draggableTrack === false) {\n cursor = 'pointer';\n } else {\n cursor = getDefaultCursor(isHorizontal);\n }\n\n const trackWidth = ((endValue - startValue) / (max - min)) * railLen;\n const track = createRect({\n x: isHorizontal ? ((startValue - min) / (max - min)) * railLen : 0,\n y: isHorizontal ? 0 : ((startValue - min) / (max - min)) * railLen,\n width: isHorizontal ? trackWidth : railWidth,\n height: isHorizontal ? railHeight : trackWidth,\n cursor,\n ...trackStyle\n });\n track.name = SLIDER_ELEMENT_NAME.track;\n this._track = track;\n trackContainer.add(track);\n container.add(trackContainer);\n }\n\n protected _renderHandler(style: Partial<ISymbolGraphicAttribute>) {\n // 渲染单个滑块\n const handler = createSymbol(style);\n\n return handler;\n }\n\n private _renderHandlerText(value: number) {\n const {\n align,\n min,\n max,\n handlerSize = 14,\n handlerText = {},\n railHeight,\n railWidth,\n slidable\n } = this.attribute as SliderAttributes;\n\n const isHorizontal = this._isHorizontal;\n const railLen = isHorizontal ? railWidth : railHeight;\n const handlerStart = (((value as number) - min) / (max - min)) * railLen;\n const textSpace = handlerText.space ?? 4;\n const textStyle: ITextGraphicAttribute = {\n text: handlerText?.formatter ? handlerText.formatter(value) : value.toFixed(handlerText?.precision ?? 0),\n lineHeight: handlerText.style?.lineHeight,\n cursor: slidable === false ? 'default' : getDefaultCursor(isHorizontal),\n ...handlerText.style\n };\n if (isHorizontal) {\n if (align === 'top') {\n // 展示 slider 上部\n textStyle.textBaseline = 'bottom';\n textStyle.textAlign = 'center';\n textStyle.x = handlerStart;\n textStyle.y = (railHeight - handlerSize) / 2 - textSpace;\n } else {\n // 展示 slider 下部\n textStyle.textBaseline = 'top';\n textStyle.textAlign = 'center';\n textStyle.x = handlerStart;\n textStyle.y = (railHeight + handlerSize) / 2 + textSpace;\n }\n } else {\n if (align === 'left') {\n // 展示 slider 左侧\n textStyle.textBaseline = 'middle';\n textStyle.textAlign = 'end';\n textStyle.x = (railWidth - handlerSize) / 2 - textSpace;\n textStyle.y = handlerStart;\n } else {\n // 展示 slider 右侧\n textStyle.textBaseline = 'middle';\n textStyle.textAlign = 'start';\n textStyle.x = (railWidth + handlerSize) / 2 + textSpace;\n textStyle.y = handlerStart;\n }\n }\n\n // 展示 handler 当前所在的数值\n const textShape = createText(textStyle);\n return textShape;\n }\n\n private _bindEvents() {\n const { slidable, range } = this.attribute as SliderAttributes;\n if (slidable) {\n if (this._startHandler) {\n this._startHandler.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n if (this._startHandlerText) {\n this._startHandlerText.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n if (this._endHandler) {\n this._endHandler.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n if (this._endHandlerText) {\n this._endHandlerText.addEventListener(\n 'pointerdown',\n this._onHandlerPointerdown as EventListenerOrEventListenerObject\n );\n }\n\n if (isObject(range) && range.draggableTrack) {\n this._track.addEventListener('pointerdown', this._onTrackPointerdown as EventListenerOrEventListenerObject);\n }\n\n this._railContainer.addEventListener(\n 'pointerdown',\n this._onRailPointerDown as EventListenerOrEventListenerObject\n );\n }\n }\n\n private _onHandlerPointerdown = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this._currentHandler = e.target as unknown as IGraphic;\n this._prePos = this._isHorizontal ? e.clientX : e.clientY;\n if (vglobal.env === 'browser') {\n vglobal.addEventListener('pointermove', this._onHandlerPointerMove as EventListenerOrEventListenerObject);\n vglobal.addEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n } else {\n this._currentHandler.addEventListener(\n 'pointermove',\n this._onHandlerPointerMove as EventListenerOrEventListenerObject\n );\n this._currentHandler.addEventListener(\n 'pointerup',\n this._onHandlerPointerUp as EventListenerOrEventListenerObject\n );\n this._currentHandler.addEventListener(\n 'pointerupoutside',\n this._onHandlerPointerUp as EventListenerOrEventListenerObject\n );\n }\n };\n\n private _onHandlerPointerMove = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n\n let currentPos;\n let delta = 0;\n let originPos;\n let railLen;\n if (!this._isHorizontal) {\n currentPos = e.clientY;\n delta = currentPos - this._prePos; // 实际位移的变化\n originPos = this._currentHandler?.attribute.y as number;\n railLen = railHeight;\n } else {\n currentPos = e.clientX;\n delta = currentPos - this._prePos; // 实际位移的变化\n originPos = this._currentHandler?.attribute.x as number;\n railLen = railWidth;\n }\n\n const newPos = clamp(originPos + delta, 0, railLen);\n const currentValue = (newPos / railLen) * (max - min) + min;\n\n if (this._currentHandler.type === 'text') {\n this._updateHandlerText(this._currentHandler as IText, newPos, currentValue);\n } else {\n this._updateHandler(this._currentHandler as ISymbol, newPos, currentValue);\n }\n\n this._updateTrack();\n this._prePos = currentPos;\n\n this._dispatchChangeEvent();\n };\n\n private _onHandlerPointerUp = (e: FederatedPointerEvent) => {\n e.preventDefault();\n this._currentHandler = null;\n if (vglobal.env === 'browser') {\n vglobal.removeEventListener('pointermove', this._onHandlerPointerMove as EventListenerOrEventListenerObject);\n vglobal.removeEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n } else {\n const currentTarget = e.target;\n currentTarget.removeEventListener(\n 'pointermove',\n this._onHandlerPointerMove as EventListenerOrEventListenerObject\n );\n currentTarget.removeEventListener('pointerup', this._onHandlerPointerUp as EventListenerOrEventListenerObject);\n currentTarget.removeEventListener(\n 'pointerupoutside',\n this._onHandlerPointerUp as EventListenerOrEventListenerObject\n );\n }\n };\n\n private _onTrackPointerdown = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n this._prePos = this._isHorizontal ? e.clientX : e.clientY;\n if (vglobal.env === 'browser') {\n vglobal.addEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject);\n vglobal.addEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n } else {\n this._track.addEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject);\n this._track.addEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n this._track.addEventListener('pointerupoutside', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n }\n };\n\n private _onTrackPointerMove = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n const { startHandler, endHandler } = this._getHandlers();\n\n let currentPos;\n let trackLen;\n let railLen;\n if (this._isHorizontal) {\n currentPos = e.clientX;\n // @ts-ignore\n trackLen = this._track.attribute.width;\n railLen = railWidth;\n } else {\n currentPos = e.clientY;\n // @ts-ignore\n trackLen = this._track.attribute.height;\n railLen = railHeight;\n }\n const delta = currentPos - this._prePos; // 实际位移的变化\n if (startHandler) {\n const originPos = (this._isHorizontal ? startHandler.attribute.x : startHandler.attribute.y) as number;\n const newPos = clamp(originPos + delta, 0, railLen - trackLen);\n const currentValue = (newPos / railLen) * (max - min) + min;\n this._updateHandler(startHandler, newPos, currentValue);\n }\n\n if (endHandler) {\n const originPos = (this._isHorizontal ? endHandler.attribute.x : endHandler.attribute.y) as number;\n const newPos = clamp(originPos + delta, trackLen, railLen);\n const currentValue = (newPos / railLen) * (max - min) + min;\n this._updateHandler(endHandler, newPos, currentValue);\n this._track.setAttributes(\n this._isHorizontal\n ? {\n x: Math.min(startHandler?.attribute.x as number, endHandler?.attribute.x as number),\n // @ts-ignore\n width: Math.abs((startHandler?.attribute.x as number) - (endHandler?.attribute.x as number))\n }\n : {\n y: Math.min(startHandler?.attribute.y as number, endHandler?.attribute.y as number),\n // @ts-ignore\n height: Math.abs((startHandler?.attribute.y as number) - (endHandler?.attribute.y as number))\n }\n );\n }\n\n this._prePos = currentPos;\n this._dispatchChangeEvent();\n };\n\n private _onTrackPointerUp = (e: FederatedPointerEvent) => {\n e.preventDefault();\n if (vglobal.env === 'browser') {\n vglobal.removeEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject);\n vglobal.removeEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n } else {\n this._track.removeEventListener('pointermove', this._onTrackPointerMove as EventListenerOrEventListenerObject);\n this._track.removeEventListener('pointerup', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n this._track.removeEventListener('pointerupoutside', this._onTrackPointerUp as EventListenerOrEventListenerObject);\n }\n };\n\n private _onRailPointerDown = (e: FederatedPointerEvent) => {\n e.stopPropagation();\n const { railWidth, railHeight, min, max } = this.attribute as SliderAttributes;\n const startHandler = this._startHandler as ISymbol;\n const endHandler = this._endHandler;\n\n let currentPos;\n let startHandlerPos;\n let endHandlerPos;\n let railLen;\n // 更新 handler, text 以及 track\n if (this._isHorizontal) {\n currentPos = e.viewX - this._rail.globalAABBBounds.x1;\n startHandlerPos = startHandler?.attribute.x as number;\n endHandlerPos = endHandler?.attribute.x;\n railLen = railWidth;\n } else {\n currentPos = e.viewY - this._rail.globalAABBBounds.y1;\n startHandlerPos = startHandler?.attribute.y as number;\n endHandlerPos = endHandler?.attribute.y;\n railLen = railHeight;\n }\n\n const currentValue = (currentPos / railLen) * (max - min) + min;\n\n if (isValid(endHandlerPos)) {\n const updateHandler = (\n Math.abs(currentPos - startHandlerPos) > Math.abs(currentPos - endHandlerPos) ? endHandler : startHandler\n ) as ISymbol;\n this._updateHandler(updateHandler, currentPos, currentValue);\n } else {\n this._updateHandler(startHandler, currentPos, currentValue);\n }\n this._updateTrack();\n\n this._dispatchChangeEvent();\n };\n\n // 更新 track 样式\n private _updateTrack() {\n // 更新 track\n const startHandler = this._startHandler;\n const endHandler = this._endHandler;\n\n if (this._isHorizontal) {\n const startHandlerPos = startHandler?.attribute.x as number;\n if (endHandler) {\n const endHandlerPos = endHandler?.attribute.x as number;\n // 区间\n this._track.setAttributes({\n x: Math.min(startHandlerPos, endHandlerPos),\n // @ts-ignore\n width: Math.abs(startHandlerPos - endHandlerPos)\n });\n } else {\n this._track.setAttributes({\n // @ts-ignore\n width: startHandlerPos\n });\n }\n } else {\n const startHandlerPos = startHandler?.attribute.y as number;\n if (endHandler) {\n const endHandlerPos = endHandler?.attribute.y as number;\n // 区间\n this._track.setAttributes({\n y: Math.min(startHandlerPos, endHandlerPos),\n // @ts-ignore\n height: Math.abs(startHandlerPos - endHandlerPos)\n });\n } else {\n this._track.setAttributes({\n // @ts-ignore\n height: startHandlerPos\n });\n }\n }\n }\n\n // 更新 handler 以及对应 text\n private _updateHandler(handler: ISymbol, position: number, value: number) {\n const isHorizontal = this._isHorizontal;\n handler.setAttribute(isHorizontal ? 'x' : 'y', position);\n const updateHandlerText =\n handler.name === SLIDER_ELEMENT_NAME.startHandler ? this._startHandlerText : this._endHandlerText;\n if (updateHandlerText) {\n const { handlerText } = this.attribute as SliderAttributes;\n updateHandlerText?.setAttributes({\n text: handlerText?.formatter ? handlerText.formatter(value) : value.toFixed(handlerText?.precision ?? 0),\n [isHorizontal ? 'x' : 'y']: position\n });\n }\n\n if (handler.name === SLIDER_ELEMENT_NAME.startHandler) {\n this._currentValue.startValue = value;\n this._currentValue.startPos = position;\n } else {\n this._currentValue.endValue = value;\n this._currentValue.endPos = position;\n }\n }\n\n // 更新 handler 以及对应 text\n private _updateHandlerText(handlerText: IText, position: number, value: number) {\n const isHorizontal = this._isHorizontal;\n const { handlerText: handlerTextAttr } = this.attribute as SliderAttributes;\n handlerText.setAttributes({\n [isHorizontal ? 'x' : 'y']: position,\n text: handlerTextAttr?.formatter\n ? handlerTextAttr.formatter(value)\n : value.toFixed(handlerTextAttr?.precision ?? 0)\n });\n const updateHandler =\n handlerText.name === SLIDER_ELEMENT_NAME.startHandlerText ? this._startHandler : this._endHandler;\n if (updateHandler) {\n updateHandler?.setAttributes({\n [isHorizontal ? 'x' : 'y']: position\n });\n }\n\n if (handlerText.name === SLIDER_ELEMENT_NAME.startHandlerText) {\n this._currentValue.startValue = value;\n this._currentValue.startPos = position;\n } else {\n this._currentValue.endValue = value;\n this._currentValue.endPos = position;\n }\n }\n\n private _dispatchChangeEvent() {\n const isRange = !!this.attribute.range;\n const currentValue = this._currentValue;\n const changeEvent = new CustomEvent('change', {\n value: isRange\n ? [\n Math.min(currentValue.endValue as number, currentValue.startValue as number),\n Math.max(currentValue.endValue as number, currentValue.startValue as number)\n ]\n : currentValue.startValue,\n position: isRange\n ? [\n Math.min(currentValue.endPos as number, currentValue.startPos as number),\n Math.max(currentValue.endPos as number, currentValue.startPos as number)\n ]\n : currentValue.startPos\n });\n // FIXME: 需要在 vrender 的事件系统支持\n // @ts-ignore\n changeEvent.manager = this.stage?.eventSystem.manager;\n this.dispatchEvent(changeEvent);\n }\n\n private _getHandlers() {\n let startHandler = this._startHandler;\n let endHandler = this._endHandler;\n let temp;\n\n if (this._isHorizontal) {\n if (endHandler && (endHandler.attribute.x as number) < (startHandler?.attribute.x as number)) {\n temp = startHandler;\n startHandler = endHandler;\n endHandler = temp;\n }\n } else {\n if (endHandler && (endHandler.attribute.y as number) < (startHandler?.attribute.y as number)) {\n temp = startHandler;\n startHandler = endHandler;\n endHandler = temp;\n }\n }\n\n return {\n startHandler,\n endHandler\n };\n }\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { IColor } from '@visactor/vrender';
|
|
2
2
|
export declare function labelSmartInvert(foregroundColorOrigin: IColor | undefined, backgroundColorOrogin: IColor | undefined, textType?: string | undefined, contrastRatiosThreshold?: number, alternativeColors?: string | string[]): IColor | undefined;
|
|
3
3
|
export declare function contrastAccessibilityChecker(foregroundColor: IColor | undefined, backgroundColor: IColor | undefined, textType?: IColor | undefined, contrastRatiosThreshold?: number): boolean;
|
|
4
|
+
export declare function smartInvertStrategy(fillStrategy: string, baseColor: IColor, invertColor: IColor, similarColor: IColor): IColor;
|
|
@@ -36,4 +36,21 @@ function formatColorToHex(originColor) {
|
|
|
36
36
|
const c = new ColorUtil.Color(originColor), {r: r, g: g, b: b} = c.color;
|
|
37
37
|
return "#" + ColorUtil.rgbToHex(r, g, b);
|
|
38
38
|
}
|
|
39
|
+
|
|
40
|
+
export function smartInvertStrategy(fillStrategy, baseColor, invertColor, similarColor) {
|
|
41
|
+
let result;
|
|
42
|
+
switch (fillStrategy) {
|
|
43
|
+
case "base":
|
|
44
|
+
result = baseColor;
|
|
45
|
+
break;
|
|
46
|
+
|
|
47
|
+
case "invertBase":
|
|
48
|
+
result = invertColor;
|
|
49
|
+
break;
|
|
50
|
+
|
|
51
|
+
case "similarBase":
|
|
52
|
+
result = similarColor;
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
39
56
|
//# sourceMappingURL=labelSmartInvert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["util/labelSmartInvert.ts"],"names":[],"mappings":"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","file":"labelSmartInvert.js","sourcesContent":["import type { IColor } from '@visactor/vrender';\nimport { ColorUtil } from '@visactor/vutils';\n\nconst defaultAlternativeColors: string[] = ['#ffffff', '#000000'];\n\n/**\n * 标签智能反色\n * @param foregroundColorOrigin\n * @param backgroundColorOrogin\n * @returns\n */\nexport function labelSmartInvert(\n foregroundColorOrigin: IColor | undefined,\n backgroundColorOrogin: IColor | undefined,\n textType?: string | undefined,\n contrastRatiosThreshold?: number,\n alternativeColors?: string | string[]\n): IColor | undefined {\n const foregroundColor = formatColorToHex(foregroundColorOrigin);\n const backgroundColor = formatColorToHex(backgroundColorOrogin);\n if (!contrastAccessibilityChecker(foregroundColor, backgroundColor, textType, contrastRatiosThreshold)) {\n return improveContrastReverse(\n foregroundColor,\n backgroundColor,\n textType,\n contrastRatiosThreshold,\n alternativeColors\n );\n }\n return foregroundColor;\n}\n\n/**\n * 提升对比度\n * 对于对比度不足阈值的情况,推荐备选颜色色板中的颜色提升对比\n * @param foregroundColor\n * @param backgroundColor\n * @returns\n */\nfunction improveContrastReverse(\n foregroundColor: IColor | undefined,\n backgroundColor: IColor | undefined,\n textType?: IColor | undefined,\n contrastRatiosThreshold?: number,\n alternativeColors?: string | string[]\n) {\n const alternativeColorPalletes: string[] = [];\n if (alternativeColors) {\n if (alternativeColors instanceof Array) {\n alternativeColorPalletes.push(...alternativeColors);\n } else {\n alternativeColorPalletes.push(alternativeColors);\n }\n }\n alternativeColorPalletes.push(...defaultAlternativeColors);\n for (const alternativeColor of alternativeColorPalletes) {\n if (foregroundColor === alternativeColor) {\n continue;\n }\n if (contrastAccessibilityChecker(alternativeColor, backgroundColor, textType, contrastRatiosThreshold)) {\n return alternativeColor;\n }\n }\n return undefined;\n}\n\n/**\n * 颜色对比度可行性检查 https://webaim.org/articles/contrast/\n * - WCAG 2.0 AA 级要求普通文本的对比度至少为 4.5:1,大文本的对比度至少为 3:1。(目前按照此标准)\n * - WCAG 2.1 要求图形和用户界面组件(例如表单输入边框)的对比度至少为 3:1。\n * - WCAG AAA 级要求普通文本的对比度至少为 7:1,大文本的对比度至少为 4.5:1。\n * @param foregroundColor\n * @param backgroundColor\n * @returns\n */\nexport function contrastAccessibilityChecker(\n foregroundColor: IColor | undefined,\n backgroundColor: IColor | undefined,\n textType?: IColor | undefined,\n contrastRatiosThreshold?: number\n): boolean {\n //Contrast ratios can range from 1 to 21\n if (contrastRatiosThreshold) {\n if (contrastRatios(foregroundColor, backgroundColor) > contrastRatiosThreshold) {\n return true;\n }\n return false;\n } else if (textType === 'largeText') {\n if (contrastRatios(foregroundColor, backgroundColor) > 3) {\n return true;\n }\n return false;\n }\n if (contrastRatios(foregroundColor, backgroundColor) > 4.5) {\n return true;\n }\n return false;\n}\n\n/**\n * 计算颜色对比度 https://webaim.org/articles/contrast/\n * Contrast ratios can range from 1 to 21 (commonly written 1:1 to 21:1).\n * (L1 + 0.05) / (L2 + 0.05), whereby:\n * L1 is the relative luminance of the lighter of the colors, and\n * L2 is the relative luminance of the darker of the colors.\n * @param foregroundColor\n * @param backgroundColor\n * @returns\n */\nfunction contrastRatios(foregroundColor: IColor | undefined, backgroundColor: IColor | undefined): number {\n const foregroundColorLuminance = getColorLuminance(foregroundColor as string);\n const backgroundColorLuminance = getColorLuminance(backgroundColor as string);\n const L1 = foregroundColorLuminance > backgroundColorLuminance ? foregroundColorLuminance : backgroundColorLuminance;\n const L2 = foregroundColorLuminance > backgroundColorLuminance ? backgroundColorLuminance : foregroundColorLuminance;\n const contrastRatios = (L1 + 0.05) / (L2 + 0.05);\n return contrastRatios;\n}\n\n/**\n * 计算相对亮度 https://webaim.org/articles/contrast/\n * the relative brightness of any point in a colorspace, normalized to 0 for darkest black and 1 for lightest white\n * Note 1: For the sRGB colorspace, the relative luminance of a color is defined as\n * L = 0.2126 * R + 0.7152 * G + 0.0722 * B where R, G and B are defined as:\n * if RsRGB <= 0.03928 then R = RsRGB/12.92 else R = ((RsRGB+0.055)/1.055) ^ 2.4\n * if GsRGB <= 0.03928 then G = GsRGB/12.92 else G = ((GsRGB+0.055)/1.055) ^ 2.4\n * if BsRGB <= 0.03928 then B = BsRGB/12.92 else B = ((BsRGB+0.055)/1.055) ^ 2.4\n * and RsRGB, GsRGB, and BsRGB are defined as:\n * RsRGB = R8bit/255\n * GsRGB = G8bit/255\n * BsRGB = B8bit/255\n * @param color\n * @returns\n */\nfunction getColorLuminance(color: string): number {\n const rgb8bit = ColorUtil.hexToRgb(color);\n const RsRGB = rgb8bit[0] / 255;\n const GsRGB = rgb8bit[1] / 255;\n const BsRGB = rgb8bit[2] / 255;\n let R;\n let G;\n let B;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n } else {\n R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n } else {\n G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n } else {\n B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n const L = 0.2126 * R + 0.7152 * G + 0.0722 * B;\n return L;\n}\n\n/**\n * 规范化color格式为hex\n * 当color为颜色名称或rgb时,对其进行规范化处理\n * @param originColor\n * @returns\n */\nfunction formatColorToHex(originColor: IColor | undefined) {\n if ((originColor as string)?.includes('#')) {\n return originColor;\n }\n const c = new ColorUtil.Color(originColor as string);\n const { r, g, b } = c.color;\n return '#' + ColorUtil.rgbToHex(r, g, b);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["util/labelSmartInvert.ts"],"names":[],"mappings":"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","file":"labelSmartInvert.js","sourcesContent":["import type { IColor } from '@visactor/vrender';\nimport { ColorUtil } from '@visactor/vutils';\n\nconst defaultAlternativeColors: string[] = ['#ffffff', '#000000'];\n\n/**\n * 标签智能反色\n * @param foregroundColorOrigin\n * @param backgroundColorOrogin\n * @returns\n */\nexport function labelSmartInvert(\n foregroundColorOrigin: IColor | undefined,\n backgroundColorOrogin: IColor | undefined,\n textType?: string | undefined,\n contrastRatiosThreshold?: number,\n alternativeColors?: string | string[]\n): IColor | undefined {\n const foregroundColor = formatColorToHex(foregroundColorOrigin);\n const backgroundColor = formatColorToHex(backgroundColorOrogin);\n if (!contrastAccessibilityChecker(foregroundColor, backgroundColor, textType, contrastRatiosThreshold)) {\n return improveContrastReverse(\n foregroundColor,\n backgroundColor,\n textType,\n contrastRatiosThreshold,\n alternativeColors\n );\n }\n return foregroundColor;\n}\n\n/**\n * 提升对比度\n * 对于对比度不足阈值的情况,推荐备选颜色色板中的颜色提升对比\n * @param foregroundColor\n * @param backgroundColor\n * @returns\n */\nfunction improveContrastReverse(\n foregroundColor: IColor | undefined,\n backgroundColor: IColor | undefined,\n textType?: IColor | undefined,\n contrastRatiosThreshold?: number,\n alternativeColors?: string | string[]\n) {\n const alternativeColorPalletes: string[] = [];\n if (alternativeColors) {\n if (alternativeColors instanceof Array) {\n alternativeColorPalletes.push(...alternativeColors);\n } else {\n alternativeColorPalletes.push(alternativeColors);\n }\n }\n alternativeColorPalletes.push(...defaultAlternativeColors);\n for (const alternativeColor of alternativeColorPalletes) {\n if (foregroundColor === alternativeColor) {\n continue;\n }\n if (contrastAccessibilityChecker(alternativeColor, backgroundColor, textType, contrastRatiosThreshold)) {\n return alternativeColor;\n }\n }\n return undefined;\n}\n\n/**\n * 颜色对比度可行性检查 https://webaim.org/articles/contrast/\n * - WCAG 2.0 AA 级要求普通文本的对比度至少为 4.5:1,大文本的对比度至少为 3:1。(目前按照此标准)\n * - WCAG 2.1 要求图形和用户界面组件(例如表单输入边框)的对比度至少为 3:1。\n * - WCAG AAA 级要求普通文本的对比度至少为 7:1,大文本的对比度至少为 4.5:1。\n * @param foregroundColor\n * @param backgroundColor\n * @returns\n */\nexport function contrastAccessibilityChecker(\n foregroundColor: IColor | undefined,\n backgroundColor: IColor | undefined,\n textType?: IColor | undefined,\n contrastRatiosThreshold?: number\n): boolean {\n //Contrast ratios can range from 1 to 21\n if (contrastRatiosThreshold) {\n if (contrastRatios(foregroundColor, backgroundColor) > contrastRatiosThreshold) {\n return true;\n }\n return false;\n } else if (textType === 'largeText') {\n if (contrastRatios(foregroundColor, backgroundColor) > 3) {\n return true;\n }\n return false;\n }\n if (contrastRatios(foregroundColor, backgroundColor) > 4.5) {\n return true;\n }\n return false;\n}\n\n/**\n * 计算颜色对比度 https://webaim.org/articles/contrast/\n * Contrast ratios can range from 1 to 21 (commonly written 1:1 to 21:1).\n * (L1 + 0.05) / (L2 + 0.05), whereby:\n * L1 is the relative luminance of the lighter of the colors, and\n * L2 is the relative luminance of the darker of the colors.\n * @param foregroundColor\n * @param backgroundColor\n * @returns\n */\nfunction contrastRatios(foregroundColor: IColor | undefined, backgroundColor: IColor | undefined): number {\n const foregroundColorLuminance = getColorLuminance(foregroundColor as string);\n const backgroundColorLuminance = getColorLuminance(backgroundColor as string);\n const L1 = foregroundColorLuminance > backgroundColorLuminance ? foregroundColorLuminance : backgroundColorLuminance;\n const L2 = foregroundColorLuminance > backgroundColorLuminance ? backgroundColorLuminance : foregroundColorLuminance;\n const contrastRatios = (L1 + 0.05) / (L2 + 0.05);\n return contrastRatios;\n}\n\n/**\n * 计算相对亮度 https://webaim.org/articles/contrast/\n * the relative brightness of any point in a colorspace, normalized to 0 for darkest black and 1 for lightest white\n * Note 1: For the sRGB colorspace, the relative luminance of a color is defined as\n * L = 0.2126 * R + 0.7152 * G + 0.0722 * B where R, G and B are defined as:\n * if RsRGB <= 0.03928 then R = RsRGB/12.92 else R = ((RsRGB+0.055)/1.055) ^ 2.4\n * if GsRGB <= 0.03928 then G = GsRGB/12.92 else G = ((GsRGB+0.055)/1.055) ^ 2.4\n * if BsRGB <= 0.03928 then B = BsRGB/12.92 else B = ((BsRGB+0.055)/1.055) ^ 2.4\n * and RsRGB, GsRGB, and BsRGB are defined as:\n * RsRGB = R8bit/255\n * GsRGB = G8bit/255\n * BsRGB = B8bit/255\n * @param color\n * @returns\n */\nfunction getColorLuminance(color: string): number {\n const rgb8bit = ColorUtil.hexToRgb(color);\n const RsRGB = rgb8bit[0] / 255;\n const GsRGB = rgb8bit[1] / 255;\n const BsRGB = rgb8bit[2] / 255;\n let R;\n let G;\n let B;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n } else {\n R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n } else {\n G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n } else {\n B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n const L = 0.2126 * R + 0.7152 * G + 0.0722 * B;\n return L;\n}\n\n/**\n * 规范化color格式为hex\n * 当color为颜色名称或rgb时,对其进行规范化处理\n * @param originColor\n * @returns\n */\nfunction formatColorToHex(originColor: IColor | undefined) {\n if ((originColor as string)?.includes('#')) {\n return originColor;\n }\n const c = new ColorUtil.Color(originColor as string);\n const { r, g, b } = c.color;\n return '#' + ColorUtil.rgbToHex(r, g, b);\n}\n\nexport function smartInvertStrategy(\n fillStrategy: string,\n baseColor: IColor,\n invertColor: IColor,\n similarColor: IColor\n) {\n let result;\n switch (fillStrategy) {\n case 'base':\n result = baseColor;\n break;\n case 'invertBase':\n result = invertColor;\n break;\n case 'similarBase':\n result = similarColor;\n default:\n break;\n }\n return result;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visactor/vrender-components",
|
|
3
|
-
"version": "0.14.5-alpha.
|
|
3
|
+
"version": "0.14.5-alpha.4",
|
|
4
4
|
"description": "components library for dp visualization",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "cjs/index.js",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"dist"
|
|
13
13
|
],
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@visactor/vrender": "0.14.
|
|
15
|
+
"@visactor/vrender": "0.14.4",
|
|
16
16
|
"@visactor/vutils": "~0.15.5",
|
|
17
17
|
"@visactor/vscale": "~0.15.5",
|
|
18
18
|
"inversify": "6.0.1"
|