1fb726d48Sopenharmony_ci/*
2fb726d48Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd.
3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License.
5fb726d48Sopenharmony_ci * You may obtain a copy of the License at
6fb726d48Sopenharmony_ci *
7fb726d48Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8fb726d48Sopenharmony_ci *
9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and
13fb726d48Sopenharmony_ci * limitations under the License.
14fb726d48Sopenharmony_ci */
15fb726d48Sopenharmony_ci
16fb726d48Sopenharmony_ciimport { BaseElement, element } from '../BaseElement';
17fb726d48Sopenharmony_ciimport { replacePlaceholders } from '../utils/Template';
18fb726d48Sopenharmony_ci
19fb726d48Sopenharmony_cilet css = `
20fb726d48Sopenharmony_ci<style>
21fb726d48Sopenharmony_ci      /*
22fb726d48Sopenharmony_ci       * Outer box style
23fb726d48Sopenharmony_ci       */
24fb726d48Sopenharmony_ci      :host{ 
25fb726d48Sopenharmony_ci          box-sizing:border-box; 
26fb726d48Sopenharmony_ci          display:flex;
27fb726d48Sopenharmony_ci          
28fb726d48Sopenharmony_ci      }
29fb726d48Sopenharmony_ci      /*
30fb726d48Sopenharmony_ci       * The mouse is missing
31fb726d48Sopenharmony_ci       */
32fb726d48Sopenharmony_ci      :host([disabled]){ 
33fb726d48Sopenharmony_ci          opacity:0.8; 
34fb726d48Sopenharmony_ci          cursor:not-allowed; 
35fb726d48Sopenharmony_ci      }
36fb726d48Sopenharmony_ci      /*
37fb726d48Sopenharmony_ci       * Disable sliding
38fb726d48Sopenharmony_ci       */
39fb726d48Sopenharmony_ci      :host([disabled]) input[type="range"]{
40fb726d48Sopenharmony_ci          pointer-events:none;
41fb726d48Sopenharmony_ci      }
42fb726d48Sopenharmony_ci      /*
43fb726d48Sopenharmony_ci       * Currently the entire sliding vessel is controlled
44fb726d48Sopenharmony_ci       */
45fb726d48Sopenharmony_ci      #slider-con{ 
46fb726d48Sopenharmony_ci          cursor:pointer;
47fb726d48Sopenharmony_ci          display:flex;
48fb726d48Sopenharmony_ci          align-items:center;
49fb726d48Sopenharmony_ci          width:95%;
50fb726d48Sopenharmony_ci          grid-auto-flow: row dense;
51fb726d48Sopenharmony_ci          position: relative;
52fb726d48Sopenharmony_ci      }
53fb726d48Sopenharmony_ci      /*
54fb726d48Sopenharmony_ci       * Display prompt information
55fb726d48Sopenharmony_ci       */
56fb726d48Sopenharmony_ci      :host([showtips]){
57fb726d48Sopenharmony_ci          pointer-events:all;
58fb726d48Sopenharmony_ci      }
59fb726d48Sopenharmony_ci      
60fb726d48Sopenharmony_ci      #slider{
61fb726d48Sopenharmony_ci          background-color: var(--dark-background7,#D8D8D8);
62fb726d48Sopenharmony_ci          z-index: 5;
63fb726d48Sopenharmony_ci      }
64fb726d48Sopenharmony_ci  
65fb726d48Sopenharmony_ci      /*
66fb726d48Sopenharmony_ci       * Slider basic style
67fb726d48Sopenharmony_ci       */
68fb726d48Sopenharmony_ci      input[type="range"]{
69fb726d48Sopenharmony_ci          pointer-events:all;
70fb726d48Sopenharmony_ci          margin:0 -5px;
71fb726d48Sopenharmony_ci          width: 100%;
72fb726d48Sopenharmony_ci          -webkit-appearance: none;
73fb726d48Sopenharmony_ci          outline : 0;
74fb726d48Sopenharmony_ci          background: rgba(0,0,0,0.1);
75fb726d48Sopenharmony_ci          height: 10px;
76fb726d48Sopenharmony_ci          border-radius:2px;
77fb726d48Sopenharmony_ci          background: -webkit-linear-gradient(right, {1}, {2}) no-repeat;
78fb726d48Sopenharmony_ci      }
79fb726d48Sopenharmony_ci      
80fb726d48Sopenharmony_ci      /*
81fb726d48Sopenharmony_ci       * Slider-line slidedAble area component
82fb726d48Sopenharmony_ci       */
83fb726d48Sopenharmony_ci      input[type="range"]::-webkit-slider-runnable-track{
84fb726d48Sopenharmony_ci          display: flex;
85fb726d48Sopenharmony_ci          align-items: center;
86fb726d48Sopenharmony_ci          position: relative;
87fb726d48Sopenharmony_ci          height: 10px;
88fb726d48Sopenharmony_ci          border-radius:5px;
89fb726d48Sopenharmony_ci      }
90fb726d48Sopenharmony_ci      
91fb726d48Sopenharmony_ci       /*
92fb726d48Sopenharmony_ci       * Slider slider component
93fb726d48Sopenharmony_ci       */
94fb726d48Sopenharmony_ci      input[type="range"]::-webkit-slider-thumb{
95fb726d48Sopenharmony_ci          -webkit-appearance: none;
96fb726d48Sopenharmony_ci          position: relative;
97fb726d48Sopenharmony_ci          width:20px;
98fb726d48Sopenharmony_ci          height:20px;
99fb726d48Sopenharmony_ci          margin-top: -4px;
100fb726d48Sopenharmony_ci          border-radius: 5px;
101fb726d48Sopenharmony_ci          background:#999999;
102fb726d48Sopenharmony_ci          transition:0.2s cubic-bezier(.12, .4, .29, 1.46);
103fb726d48Sopenharmony_ci      }
104fb726d48Sopenharmony_ci      
105fb726d48Sopenharmony_ci      input[type="range"]:focus{
106fb726d48Sopenharmony_ci          z-index:2;
107fb726d48Sopenharmony_ci      }
108fb726d48Sopenharmony_ci
109fb726d48Sopenharmony_ci      :host(:focus-within) #slider-con,:host(:hover) #slider-con{
110fb726d48Sopenharmony_ci          z-index:10
111fb726d48Sopenharmony_ci      }
112fb726d48Sopenharmony_ci      
113fb726d48Sopenharmony_ci      :host([disabled]) #slider{ 
114fb726d48Sopenharmony_ci          opacity:0.6; 
115fb726d48Sopenharmony_ci      }
116fb726d48Sopenharmony_ci      </style>
117fb726d48Sopenharmony_ci`;
118fb726d48Sopenharmony_ciconst initHtmlStyle = (str: string | null, text: string | null): string => {
119fb726d48Sopenharmony_ci  return replacePlaceholders(css, str!, text!);
120fb726d48Sopenharmony_ci};
121fb726d48Sopenharmony_ci
122fb726d48Sopenharmony_ci@element('lit-slider')
123fb726d48Sopenharmony_ciexport class LitSlider extends BaseElement {
124fb726d48Sopenharmony_ci  private litSliderStyle: LitSliderStyle | undefined | null;
125fb726d48Sopenharmony_ci  private litSlider: HTMLInputElement | undefined | null;
126fb726d48Sopenharmony_ci  private litSliderCon: HTMLDivElement | undefined | null;
127fb726d48Sopenharmony_ci  private litResult: HTMLInputElement | undefined | null;
128fb726d48Sopenharmony_ci  private slotEl: HTMLSlotElement | undefined | null;
129fb726d48Sopenharmony_ci  private currentValue: number = 0;
130fb726d48Sopenharmony_ci  private defaultTimeText: string | undefined | null;
131fb726d48Sopenharmony_ci
132fb726d48Sopenharmony_ci  static get observedAttributes(): string[] {
133fb726d48Sopenharmony_ci    return ['percent', 'disabled-X', 'custom-slider', 'custom-line', 'custom-button', 'disabled'];
134fb726d48Sopenharmony_ci  }
135fb726d48Sopenharmony_ci
136fb726d48Sopenharmony_ci  get sliderStyle(): LitSliderStyle {
137fb726d48Sopenharmony_ci    if (this.litSliderStyle) {
138fb726d48Sopenharmony_ci      return this.litSliderStyle;
139fb726d48Sopenharmony_ci    } else {
140fb726d48Sopenharmony_ci      return {
141fb726d48Sopenharmony_ci        minRange: 0,
142fb726d48Sopenharmony_ci        maxRange: 100,
143fb726d48Sopenharmony_ci        defaultValue: '0',
144fb726d48Sopenharmony_ci        resultUnit: '',
145fb726d48Sopenharmony_ci        stepSize: 1,
146fb726d48Sopenharmony_ci        lineColor: 'var(--dark-color3,#46B1E3)',
147fb726d48Sopenharmony_ci        buttonColor: '#999999',
148fb726d48Sopenharmony_ci      };
149fb726d48Sopenharmony_ci    }
150fb726d48Sopenharmony_ci  }
151fb726d48Sopenharmony_ci
152fb726d48Sopenharmony_ci  set disabled(value) {
153fb726d48Sopenharmony_ci    if (value === null || value === false) {
154fb726d48Sopenharmony_ci      this.removeAttribute('disabled');
155fb726d48Sopenharmony_ci    } else {
156fb726d48Sopenharmony_ci      this.setAttribute('disabled', '');
157fb726d48Sopenharmony_ci    }
158fb726d48Sopenharmony_ci  }
159fb726d48Sopenharmony_ci
160fb726d48Sopenharmony_ci  get disabled(): boolean {
161fb726d48Sopenharmony_ci    return this.getAttribute('disabled') !== null;
162fb726d48Sopenharmony_ci  }
163fb726d48Sopenharmony_ci
164fb726d48Sopenharmony_ci  set sliderStyle(value: LitSliderStyle) {
165fb726d48Sopenharmony_ci    this.litSliderStyle = value;
166fb726d48Sopenharmony_ci    this.currentValue = Number(value.defaultValue);
167fb726d48Sopenharmony_ci    this.litSliderStyle.defaultValue = value.defaultValue;
168fb726d48Sopenharmony_ci    if (this.litSliderStyle.resultUnit === 'h:m:s') {
169fb726d48Sopenharmony_ci      let timeData = this.litSliderStyle.defaultValue.split(':');
170fb726d48Sopenharmony_ci      let timeSize = Number(timeData[0]) * 3600 + Number(timeData[1]) * 60 + Number(timeData[2]);
171fb726d48Sopenharmony_ci      this.defaultTimeText = timeSize.toString();
172fb726d48Sopenharmony_ci      let defaultSize =
173fb726d48Sopenharmony_ci        ((timeSize - this.litSliderStyle.minRange) * 100) /
174fb726d48Sopenharmony_ci        (this.litSliderStyle.maxRange - this.litSliderStyle.minRange);
175fb726d48Sopenharmony_ci      this.litSlider!.style.backgroundSize = defaultSize + '%';
176fb726d48Sopenharmony_ci    } else {
177fb726d48Sopenharmony_ci      this.defaultTimeText = this.litSliderStyle.defaultValue;
178fb726d48Sopenharmony_ci      this.litSlider!.style.backgroundSize = '0%';
179fb726d48Sopenharmony_ci      if (Number(this.litSliderStyle.defaultValue)) {
180fb726d48Sopenharmony_ci        let defaultSize =
181fb726d48Sopenharmony_ci          ((Number(this.litSliderStyle.defaultValue) - this.litSliderStyle.minRange) /
182fb726d48Sopenharmony_ci            (this.litSliderStyle.maxRange - this.litSliderStyle.minRange)) *
183fb726d48Sopenharmony_ci          100;
184fb726d48Sopenharmony_ci        this.litSlider!.style.backgroundSize = defaultSize + '%';
185fb726d48Sopenharmony_ci      }
186fb726d48Sopenharmony_ci    }
187fb726d48Sopenharmony_ci    let htmlInputElement = this.shadowRoot?.querySelector('#slider') as HTMLInputElement;
188fb726d48Sopenharmony_ci    let attribute = htmlInputElement.getAttribute('type');
189fb726d48Sopenharmony_ci    if (attribute === 'range') {
190fb726d48Sopenharmony_ci      htmlInputElement!.setAttribute('value', this.defaultTimeText!);
191fb726d48Sopenharmony_ci      htmlInputElement!.setAttribute('min', this.litSliderStyle!.minRange.toString());
192fb726d48Sopenharmony_ci      htmlInputElement!.setAttribute('max', this.litSliderStyle!.maxRange.toString());
193fb726d48Sopenharmony_ci      htmlInputElement!.setAttribute('step', this.litSliderStyle!.stepSize.toString());
194fb726d48Sopenharmony_ci    }
195fb726d48Sopenharmony_ci  }
196fb726d48Sopenharmony_ci
197fb726d48Sopenharmony_ci  get disabledX(): string {
198fb726d48Sopenharmony_ci    return this.getAttribute('disabled-X') || '';
199fb726d48Sopenharmony_ci  }
200fb726d48Sopenharmony_ci
201fb726d48Sopenharmony_ci  set disabledX(value: string) {
202fb726d48Sopenharmony_ci    if (value) {
203fb726d48Sopenharmony_ci      this.setAttribute('disabled-X', '');
204fb726d48Sopenharmony_ci    } else {
205fb726d48Sopenharmony_ci      this.removeAttribute('disabled-X');
206fb726d48Sopenharmony_ci    }
207fb726d48Sopenharmony_ci  }
208fb726d48Sopenharmony_ci
209fb726d48Sopenharmony_ci  get customSlider(): string {
210fb726d48Sopenharmony_ci    return this.getAttribute('custom-slider') || '';
211fb726d48Sopenharmony_ci  }
212fb726d48Sopenharmony_ci
213fb726d48Sopenharmony_ci  set customSlider(value: string) {
214fb726d48Sopenharmony_ci    if (value) {
215fb726d48Sopenharmony_ci      this.setAttribute('custom-slider', '');
216fb726d48Sopenharmony_ci    } else {
217fb726d48Sopenharmony_ci      this.removeAttribute('custom-slider');
218fb726d48Sopenharmony_ci    }
219fb726d48Sopenharmony_ci  }
220fb726d48Sopenharmony_ci
221fb726d48Sopenharmony_ci  get customLine(): string {
222fb726d48Sopenharmony_ci    return this.getAttribute('custom-line') || '';
223fb726d48Sopenharmony_ci  }
224fb726d48Sopenharmony_ci
225fb726d48Sopenharmony_ci  set customLine(value: string) {
226fb726d48Sopenharmony_ci    this.setAttribute('custom-line', value);
227fb726d48Sopenharmony_ci  }
228fb726d48Sopenharmony_ci
229fb726d48Sopenharmony_ci  get customButton(): string {
230fb726d48Sopenharmony_ci    return this.getAttribute('custom-button') || '';
231fb726d48Sopenharmony_ci  }
232fb726d48Sopenharmony_ci
233fb726d48Sopenharmony_ci  set customButton(value: string) {
234fb726d48Sopenharmony_ci    this.setAttribute('custom-button', value);
235fb726d48Sopenharmony_ci  }
236fb726d48Sopenharmony_ci
237fb726d48Sopenharmony_ci  get percent(): string {
238fb726d48Sopenharmony_ci    return this.getAttribute('percent') || '';
239fb726d48Sopenharmony_ci  }
240fb726d48Sopenharmony_ci
241fb726d48Sopenharmony_ci  set percent(value: string) {
242fb726d48Sopenharmony_ci    this.setAttribute('percent', value);
243fb726d48Sopenharmony_ci    let resultNumber =
244fb726d48Sopenharmony_ci      ((Number(value) - this.sliderStyle!.minRange) * 100) / (this.sliderStyle!.maxRange - this.sliderStyle!.minRange);
245fb726d48Sopenharmony_ci    this.litSlider!.style.backgroundSize = resultNumber + '%';
246fb726d48Sopenharmony_ci  }
247fb726d48Sopenharmony_ci
248fb726d48Sopenharmony_ci  get resultUnit(): string {
249fb726d48Sopenharmony_ci    return this.getAttribute('resultUnit') || '';
250fb726d48Sopenharmony_ci  }
251fb726d48Sopenharmony_ci
252fb726d48Sopenharmony_ci  set resultUnit(value: string) {
253fb726d48Sopenharmony_ci    this.setAttribute('resultUnit', value);
254fb726d48Sopenharmony_ci  }
255fb726d48Sopenharmony_ci
256fb726d48Sopenharmony_ci  initElements(): void {
257fb726d48Sopenharmony_ci    this.litSlider = this.shadowRoot?.querySelector('#slider') as HTMLInputElement;
258fb726d48Sopenharmony_ci  }
259fb726d48Sopenharmony_ci
260fb726d48Sopenharmony_ci  initHtml(): string {
261fb726d48Sopenharmony_ci    let htmlStyle = initHtmlStyle(
262fb726d48Sopenharmony_ci      this.getAttribute('defaultColor') ? this.getAttribute('defaultColor') : '#46B1E3',
263fb726d48Sopenharmony_ci      this.getAttribute('defaultColor') ? this.getAttribute('defaultColor') : '#46B1E3'
264fb726d48Sopenharmony_ci    );
265fb726d48Sopenharmony_ci    return `
266fb726d48Sopenharmony_ci        ${htmlStyle}
267fb726d48Sopenharmony_ci        <slot id="slot"></slot>
268fb726d48Sopenharmony_ci        <div id='slider-con' dir="right">
269fb726d48Sopenharmony_ci            <input id="slider" type="range" max="10000000">
270fb726d48Sopenharmony_ci        </div>
271fb726d48Sopenharmony_ci        `;
272fb726d48Sopenharmony_ci  }
273fb726d48Sopenharmony_ci
274fb726d48Sopenharmony_ci  // It is called when the custom element is first inserted into the document DOM.
275fb726d48Sopenharmony_ci  connectedCallback(): void {
276fb726d48Sopenharmony_ci    this.slotEl = this.shadowRoot?.querySelector('#slot');
277fb726d48Sopenharmony_ci    this.litSliderCon = this.shadowRoot?.querySelector('#slider-con');
278fb726d48Sopenharmony_ci    // Add a slider for input event listeners
279fb726d48Sopenharmony_ci    this.litSlider?.addEventListener('input', this.inputChangeEvent);
280fb726d48Sopenharmony_ci    this.litSlider?.addEventListener('change', this.inputChangeEvent);
281fb726d48Sopenharmony_ci    this.litSlider?.addEventListener('keydown', this.inputKeyDownEvent);
282fb726d48Sopenharmony_ci    this.litSliderStyle = this.sliderStyle;
283fb726d48Sopenharmony_ci  }
284fb726d48Sopenharmony_ci
285fb726d48Sopenharmony_ci  // @ts-ignore
286fb726d48Sopenharmony_ci  inputKeyDownEvent = (ev): void => {
287fb726d48Sopenharmony_ci    if (ev.key === '0' && ev.target.value.length === 1 && ev.target.value === '0') {
288fb726d48Sopenharmony_ci      ev.preventDefault();
289fb726d48Sopenharmony_ci    }
290fb726d48Sopenharmony_ci  };
291fb726d48Sopenharmony_ci
292fb726d48Sopenharmony_ci  inputChangeEvent = (event: unknown): void => {
293fb726d48Sopenharmony_ci    if (this.litSlider) {
294fb726d48Sopenharmony_ci      this.currentValue = parseInt(this.litSlider?.value);
295fb726d48Sopenharmony_ci      let resultNumber =
296fb726d48Sopenharmony_ci        ((this.currentValue - this.litSliderStyle!.minRange) * 100) /
297fb726d48Sopenharmony_ci        (this.litSliderStyle!.maxRange - this.litSliderStyle!.minRange);
298fb726d48Sopenharmony_ci      this.percent = Number(resultNumber) + '%';
299fb726d48Sopenharmony_ci      this.litSliderCon?.style.setProperty('percent', this.currentValue + '%');
300fb726d48Sopenharmony_ci      let parentElement = this.parentNode as Element;
301fb726d48Sopenharmony_ci      parentElement.setAttribute('percent', this.currentValue + '');
302fb726d48Sopenharmony_ci      if (this.sliderStyle.resultUnit === 'h:m:s') {
303fb726d48Sopenharmony_ci        this.litSlider!.style.backgroundSize = this.percent;
304fb726d48Sopenharmony_ci      } else {
305fb726d48Sopenharmony_ci        this.litSlider!.style.backgroundSize = this.percent;
306fb726d48Sopenharmony_ci      }
307fb726d48Sopenharmony_ci      this.parentElement!.setAttribute('percent', this.litSlider?.value);
308fb726d48Sopenharmony_ci    }
309fb726d48Sopenharmony_ci  };
310fb726d48Sopenharmony_ci
311fb726d48Sopenharmony_ci  disconnectedCallback(): void {
312fb726d48Sopenharmony_ci    this.litSlider?.removeEventListener('input', this.inputChangeEvent);
313fb726d48Sopenharmony_ci    this.litSlider?.removeEventListener('change', this.inputChangeEvent);
314fb726d48Sopenharmony_ci    this.litSlider?.removeEventListener('change', this.inputKeyDownEvent);
315fb726d48Sopenharmony_ci  }
316fb726d48Sopenharmony_ci
317fb726d48Sopenharmony_ci  adoptedCallback(): void {}
318fb726d48Sopenharmony_ci
319fb726d48Sopenharmony_ci  attributeChangedCallback(name: string, oldValue: string, newValue: string): void {
320fb726d48Sopenharmony_ci    switch (name) {
321fb726d48Sopenharmony_ci      case 'percent':
322fb726d48Sopenharmony_ci        if (newValue === null || newValue === '0%') {
323fb726d48Sopenharmony_ci          let parentElement = this.parentNode as Element;
324fb726d48Sopenharmony_ci          parentElement?.removeAttribute('percent');
325fb726d48Sopenharmony_ci        } else {
326fb726d48Sopenharmony_ci          let parentElement = this.parentNode as Element;
327fb726d48Sopenharmony_ci        }
328fb726d48Sopenharmony_ci        break;
329fb726d48Sopenharmony_ci      default:
330fb726d48Sopenharmony_ci        break;
331fb726d48Sopenharmony_ci    }
332fb726d48Sopenharmony_ci  }
333fb726d48Sopenharmony_ci
334fb726d48Sopenharmony_ci  formatSeconds(value: string): string {
335fb726d48Sopenharmony_ci    let result = parseInt(value);
336fb726d48Sopenharmony_ci    let hours = Math.floor(result / 3600) < 10 ? '0' + Math.floor(result / 3600) : Math.floor(result / 3600);
337fb726d48Sopenharmony_ci    let minute =
338fb726d48Sopenharmony_ci      Math.floor((result / 60) % 60) < 10 ? '0' + Math.floor((result / 60) % 60) : Math.floor((result / 60) % 60);
339fb726d48Sopenharmony_ci    let second = Math.floor(result % 60) < 10 ? '0' + Math.floor(result % 60) : Math.floor(result % 60);
340fb726d48Sopenharmony_ci    let resultTime = '';
341fb726d48Sopenharmony_ci    if (hours === '00') {
342fb726d48Sopenharmony_ci      resultTime += '00:';
343fb726d48Sopenharmony_ci    } else {
344fb726d48Sopenharmony_ci      resultTime += `${hours}:`;
345fb726d48Sopenharmony_ci    }
346fb726d48Sopenharmony_ci    if (minute === '00') {
347fb726d48Sopenharmony_ci      resultTime += '00:';
348fb726d48Sopenharmony_ci    } else {
349fb726d48Sopenharmony_ci      resultTime += `${minute}:`;
350fb726d48Sopenharmony_ci    }
351fb726d48Sopenharmony_ci    resultTime += `${second}`;
352fb726d48Sopenharmony_ci    return resultTime;
353fb726d48Sopenharmony_ci  }
354fb726d48Sopenharmony_ci}
355fb726d48Sopenharmony_ci
356fb726d48Sopenharmony_ciexport interface LitSliderStyle {
357fb726d48Sopenharmony_ci  minRange: number;
358fb726d48Sopenharmony_ci  maxRange: number;
359fb726d48Sopenharmony_ci  defaultValue: string;
360fb726d48Sopenharmony_ci  resultUnit: string;
361fb726d48Sopenharmony_ci  stepSize: number;
362fb726d48Sopenharmony_ci  lineColor?: string;
363fb726d48Sopenharmony_ci  buttonColor?: string;
364fb726d48Sopenharmony_ci}
365fb726d48Sopenharmony_ci
366fb726d48Sopenharmony_ciexport interface LitSliderLineStyle {
367fb726d48Sopenharmony_ci  lineWith: number;
368fb726d48Sopenharmony_ci  lineHeight: number;
369fb726d48Sopenharmony_ci  border?: string;
370fb726d48Sopenharmony_ci  borderRadiusValue?: number;
371fb726d48Sopenharmony_ci  lineChangeColor?: string;
372fb726d48Sopenharmony_ci}
373fb726d48Sopenharmony_ci
374fb726d48Sopenharmony_ciexport interface LitSliderButtonStyle {
375fb726d48Sopenharmony_ci  buttonWith: number;
376fb726d48Sopenharmony_ci  buttonHeight: number;
377fb726d48Sopenharmony_ci  border?: string;
378fb726d48Sopenharmony_ci  borderRadiusValue?: number;
379fb726d48Sopenharmony_ci  buttonChangeColor?: string;
380fb726d48Sopenharmony_ci}
381