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