import { __decorate } from "tslib"; import { html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; import { isUndefined } from '@mdui/jq/shared/helper.js'; import { MduiElement } from '@mdui/shared/base/mdui-element.js'; import { componentStyle } from '@mdui/shared/lit-styles/component-style.js'; import { style } from './style.js'; /** * @summary 圆形进度指示器组件 * * ```html * * ``` */ let CircularProgress = class CircularProgress extends MduiElement { constructor() { super(...arguments); /** * 进度指示器的最大值。默认为 `1` */ this.max = 1; } render() { const isDeterminate = !isUndefined(this.value); return html `
${isDeterminate ? this.renderDeterminate() : this.renderInDeterminate()}
`; } renderDeterminate() { const value = this.value; const strokeWidth = 4; // 圆环宽度 const circleRadius = 18; // 圆环宽度中心点的半径 const π = 3.1415926; const center = circleRadius + strokeWidth / 2; const circumference = 2 * π * circleRadius; const determinateStrokeDashOffset = (1 - value / Math.max(this.max ?? value, value)) * circumference; return html ``; } renderInDeterminate() { const strokeWidth = 4; // 圆环宽度 const circleRadius = 18; // 圆环宽度中心点的半径 const π = 3.1415926; const center = circleRadius + strokeWidth / 2; const circumference = 2 * π * circleRadius; const halfCircumference = 0.5 * circumference; const circle = (thisStrokeWidth) => html ``; return html `
${circle(strokeWidth)}
${circle(strokeWidth * 0.8)}
${circle(strokeWidth)}
`; } }; CircularProgress.styles = [componentStyle, style]; __decorate([ property({ type: Number, reflect: true }) ], CircularProgress.prototype, "max", void 0); __decorate([ property({ type: Number }) ], CircularProgress.prototype, "value", void 0); CircularProgress = __decorate([ customElement('mdui-circular-progress') ], CircularProgress); export { CircularProgress };