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 { JSONToCSV } from '../utils/CSVFormater';
17fb726d48Sopenharmony_ci
18fb726d48Sopenharmony_ciexport const iconWidth = 20;
19fb726d48Sopenharmony_ciexport const iconPadding = 5;
20fb726d48Sopenharmony_ci
21fb726d48Sopenharmony_ciexport const litPageTableHtml = `
22fb726d48Sopenharmony_ci        <style>
23fb726d48Sopenharmony_ci        :host{
24fb726d48Sopenharmony_ci            display: grid;
25fb726d48Sopenharmony_ci            grid-template-columns: repeat(1,1fr);
26fb726d48Sopenharmony_ci            width: 100%;
27fb726d48Sopenharmony_ci            position: relative;
28fb726d48Sopenharmony_ci            font-weight: 500;
29fb726d48Sopenharmony_ci            flex:1;
30fb726d48Sopenharmony_ci        }
31fb726d48Sopenharmony_ci        .tr{
32fb726d48Sopenharmony_ci            display: grid;
33fb726d48Sopenharmony_ci            grid-column-gap: 5px;
34fb726d48Sopenharmony_ci            min-width:100%;
35fb726d48Sopenharmony_ci        }
36fb726d48Sopenharmony_ci        .tr:nth-of-type(even){
37fb726d48Sopenharmony_ci        }
38fb726d48Sopenharmony_ci        .tr{
39fb726d48Sopenharmony_ci            background-color: var(--dark-background,#FFFFFF);
40fb726d48Sopenharmony_ci            line-height: 27px;
41fb726d48Sopenharmony_ci        }
42fb726d48Sopenharmony_ci        .tr:hover{
43fb726d48Sopenharmony_ci            background-color: var(--dark-background6,#DEEDFF);
44fb726d48Sopenharmony_ci        }
45fb726d48Sopenharmony_ci        .tr[selected]{
46fb726d48Sopenharmony_ci            background-color: var(--dark-background6,#DEEDFF);
47fb726d48Sopenharmony_ci        }
48fb726d48Sopenharmony_ci        .tr[high-light]{
49fb726d48Sopenharmony_ci            font-weight: 600;
50fb726d48Sopenharmony_ci        }
51fb726d48Sopenharmony_ci        .td{
52fb726d48Sopenharmony_ci            box-sizing: border-box;
53fb726d48Sopenharmony_ci            padding: 3px;
54fb726d48Sopenharmony_ci            display: flex;
55fb726d48Sopenharmony_ci            justify-content: flex-start;
56fb726d48Sopenharmony_ci            align-items: center;
57fb726d48Sopenharmony_ci            width: 100%;
58fb726d48Sopenharmony_ci            height: auto;
59fb726d48Sopenharmony_ci            line-height: 21px;
60fb726d48Sopenharmony_ci            cursor: pointer;
61fb726d48Sopenharmony_ci        }
62fb726d48Sopenharmony_ci        .td label{
63fb726d48Sopenharmony_ci            overflow: hidden; 
64fb726d48Sopenharmony_ci            text-overflow: ellipsis; 
65fb726d48Sopenharmony_ci            white-space: normal;
66fb726d48Sopenharmony_ci        }
67fb726d48Sopenharmony_ci        .td text{
68fb726d48Sopenharmony_ci            overflow: hidden; 
69fb726d48Sopenharmony_ci            text-overflow: ellipsis; 
70fb726d48Sopenharmony_ci            white-space: nowrap;
71fb726d48Sopenharmony_ci        }
72fb726d48Sopenharmony_ci        .td-order{
73fb726d48Sopenharmony_ci        }
74fb726d48Sopenharmony_ci        .td-order:before{
75fb726d48Sopenharmony_ci
76fb726d48Sopenharmony_ci        }
77fb726d48Sopenharmony_ci        :host([grid-line]) .td{
78fb726d48Sopenharmony_ci            border-left: 1px solid #f0f0f0;
79fb726d48Sopenharmony_ci        }
80fb726d48Sopenharmony_ci        :host([grid-line]) .td:last-of-type{
81fb726d48Sopenharmony_ci            border-right: 1px solid #f0f0f0;
82fb726d48Sopenharmony_ci        }
83fb726d48Sopenharmony_ci        .table{
84fb726d48Sopenharmony_ci            width: 100%;
85fb726d48Sopenharmony_ci             color: var(--dark-color2,#262626);
86fb726d48Sopenharmony_ci        }
87fb726d48Sopenharmony_ci        .thead{
88fb726d48Sopenharmony_ci            display: grid;
89fb726d48Sopenharmony_ci            position: sticky;
90fb726d48Sopenharmony_ci            top: 0;
91fb726d48Sopenharmony_ci            font-weight: bold;
92fb726d48Sopenharmony_ci            font-size: .9rem;
93fb726d48Sopenharmony_ci            color: var(--dark-color1,#000);
94fb726d48Sopenharmony_ci            background-color: var(--dark-background,#FFFFFF);
95fb726d48Sopenharmony_ci            z-index: 1;
96fb726d48Sopenharmony_ci        }
97fb726d48Sopenharmony_ci        .tbody{
98fb726d48Sopenharmony_ci            width: 100%;
99fb726d48Sopenharmony_ci            top: 0;
100fb726d48Sopenharmony_ci            left: 0;
101fb726d48Sopenharmony_ci            right:0;
102fb726d48Sopenharmony_ci            bottom:0;
103fb726d48Sopenharmony_ci            padding-bottom: 30px;
104fb726d48Sopenharmony_ci            display: flex;
105fb726d48Sopenharmony_ci            flex-direction: row
106fb726d48Sopenharmony_ci            row-gap: 1px;
107fb726d48Sopenharmony_ci            column-gap: 1px;
108fb726d48Sopenharmony_ci        }
109fb726d48Sopenharmony_ci        .tbottom{
110fb726d48Sopenharmony_ci            height: 30px;
111fb726d48Sopenharmony_ci            width: calc(100% - 15px);
112fb726d48Sopenharmony_ci            position: absolute;
113fb726d48Sopenharmony_ci            bottom: 0;
114fb726d48Sopenharmony_ci            z-index: 1;
115fb726d48Sopenharmony_ci            justify-content: center;
116fb726d48Sopenharmony_ci            align-items: center;
117fb726d48Sopenharmony_ci            display: none;
118fb726d48Sopenharmony_ci            flex-direction: row;
119fb726d48Sopenharmony_ci            color: var(--dark-color1,#000);
120fb726d48Sopenharmony_ci            background-color: var(--dark-background,#FFFFFF);
121fb726d48Sopenharmony_ci        }
122fb726d48Sopenharmony_ci        :host([pagination]) .tbottom{
123fb726d48Sopenharmony_ci            display: flex;
124fb726d48Sopenharmony_ci        }
125fb726d48Sopenharmony_ci        .tree{
126fb726d48Sopenharmony_ci            overflow-x:hidden;
127fb726d48Sopenharmony_ci            overflow-y:hidden;
128fb726d48Sopenharmony_ci            display: grid;
129fb726d48Sopenharmony_ci            grid-template-columns: 1fr;
130fb726d48Sopenharmony_ci            row-gap: 1px;
131fb726d48Sopenharmony_ci            column-gap: 1px;
132fb726d48Sopenharmony_ci            position:relative;
133fb726d48Sopenharmony_ci        }
134fb726d48Sopenharmony_ci        .tree:hover{
135fb726d48Sopenharmony_ci            overflow-x: overlay;
136fb726d48Sopenharmony_ci        }
137fb726d48Sopenharmony_ci        .tree-first-body{
138fb726d48Sopenharmony_ci            min-width: 100%;
139fb726d48Sopenharmony_ci            box-sizing: border-box;
140fb726d48Sopenharmony_ci            display:flex;
141fb726d48Sopenharmony_ci            align-items:center;
142fb726d48Sopenharmony_ci            white-space: nowrap;
143fb726d48Sopenharmony_ci            font-weight: 500;
144fb726d48Sopenharmony_ci            cursor: pointer;
145fb726d48Sopenharmony_ci        }
146fb726d48Sopenharmony_ci        .tree-first-body[high-light]{
147fb726d48Sopenharmony_ci            font-weight: 600;
148fb726d48Sopenharmony_ci        }
149fb726d48Sopenharmony_ci        .tree-first-body:hover{
150fb726d48Sopenharmony_ci            background-color: var(--dark-background6,#DEEDFF); /*antd #fafafa 42b983*/
151fb726d48Sopenharmony_ci        }
152fb726d48Sopenharmony_ci        .body{
153fb726d48Sopenharmony_ci            display: grid;
154fb726d48Sopenharmony_ci            grid-template-columns: 1fr;
155fb726d48Sopenharmony_ci            row-gap: 1px;
156fb726d48Sopenharmony_ci            column-gap: 1px;
157fb726d48Sopenharmony_ci            flex:1;
158fb726d48Sopenharmony_ci            position: relative;
159fb726d48Sopenharmony_ci        }
160fb726d48Sopenharmony_ci        :host([grid-line])  .tbody{
161fb726d48Sopenharmony_ci            border-bottom: 1px solid #f0f0f0;
162fb726d48Sopenharmony_ci            background-color: #f0f0f0;
163fb726d48Sopenharmony_ci        }
164fb726d48Sopenharmony_ci        .th{
165fb726d48Sopenharmony_ci            grid-column-gap: 5px;
166fb726d48Sopenharmony_ci            display: grid;
167fb726d48Sopenharmony_ci            background-color: var(--dark-background,#FFFFFF);
168fb726d48Sopenharmony_ci        }
169fb726d48Sopenharmony_ci
170fb726d48Sopenharmony_ci        .tree-icon{
171fb726d48Sopenharmony_ci            font-size: 1.2rem;
172fb726d48Sopenharmony_ci            width: 20px;
173fb726d48Sopenharmony_ci            height: 20px;
174fb726d48Sopenharmony_ci            padding-right: 5px;
175fb726d48Sopenharmony_ci            padding-left: 5px;
176fb726d48Sopenharmony_ci            cursor: pointer;
177fb726d48Sopenharmony_ci        }
178fb726d48Sopenharmony_ci        .tree-icon:hover{
179fb726d48Sopenharmony_ci            color: #42b983;
180fb726d48Sopenharmony_ci        }
181fb726d48Sopenharmony_ci        .row-checkbox,row-checkbox-all{
182fb726d48Sopenharmony_ci
183fb726d48Sopenharmony_ci        }
184fb726d48Sopenharmony_ci        :host([no-head]) .thead{
185fb726d48Sopenharmony_ci            display: none;
186fb726d48Sopenharmony_ci        }
187fb726d48Sopenharmony_ci        .up-svg{
188fb726d48Sopenharmony_ci            position: absolute;
189fb726d48Sopenharmony_ci            right: 5px;
190fb726d48Sopenharmony_ci            top: 8px;
191fb726d48Sopenharmony_ci            bottom: 8px;
192fb726d48Sopenharmony_ci            width: 15px;
193fb726d48Sopenharmony_ci            height: 15px;
194fb726d48Sopenharmony_ci        }
195fb726d48Sopenharmony_ci        .down-svg{
196fb726d48Sopenharmony_ci            position: absolute;
197fb726d48Sopenharmony_ci            top: 8px;
198fb726d48Sopenharmony_ci            right: 5px;
199fb726d48Sopenharmony_ci            bottom: 8px;
200fb726d48Sopenharmony_ci            width: 15px;
201fb726d48Sopenharmony_ci            height: 15px;
202fb726d48Sopenharmony_ci        }
203fb726d48Sopenharmony_ci        .mouse-select{
204fb726d48Sopenharmony_ci            background-color: var(--dark-background6,#DEEDFF);
205fb726d48Sopenharmony_ci        }
206fb726d48Sopenharmony_ci        .mouse-in{
207fb726d48Sopenharmony_ci            background-color: var(--dark-background6,#DEEDFF);
208fb726d48Sopenharmony_ci        }
209fb726d48Sopenharmony_ci        .export{
210fb726d48Sopenharmony_ci            height:32px;
211fb726d48Sopenharmony_ci            width: 32px;
212fb726d48Sopenharmony_ci            cursor:pointer;
213fb726d48Sopenharmony_ci            display:none;
214fb726d48Sopenharmony_ci            align-items:center;
215fb726d48Sopenharmony_ci            justify-content:center;
216fb726d48Sopenharmony_ci            border-radius:5px;
217fb726d48Sopenharmony_ci            box-sizing: border-box;
218fb726d48Sopenharmony_ci            background-color: #000000;
219fb726d48Sopenharmony_ci            opacity: 0.3;
220fb726d48Sopenharmony_ci            position:absolute;
221fb726d48Sopenharmony_ci            right:20px;
222fb726d48Sopenharmony_ci            bottom:20px;
223fb726d48Sopenharmony_ci            z-index: 999999;
224fb726d48Sopenharmony_ci        }
225fb726d48Sopenharmony_ci        .resize{
226fb726d48Sopenharmony_ci            width: 2px;
227fb726d48Sopenharmony_ci            margin-right: 3px;
228fb726d48Sopenharmony_ci            height: 20px;
229fb726d48Sopenharmony_ci            background-color: #e0e0e0;
230fb726d48Sopenharmony_ci            cursor: col-resize;
231fb726d48Sopenharmony_ci        }
232fb726d48Sopenharmony_ci       
233fb726d48Sopenharmony_ci        .progress{
234fb726d48Sopenharmony_ci            position: absolute;
235fb726d48Sopenharmony_ci            height: 1px;
236fb726d48Sopenharmony_ci            top: 0;
237fb726d48Sopenharmony_ci            left: 0;
238fb726d48Sopenharmony_ci            right: 0;
239fb726d48Sopenharmony_ci            z-index: 999999;
240fb726d48Sopenharmony_ci        } 
241fb726d48Sopenharmony_ci        :host([hideDownload]) .export{
242fb726d48Sopenharmony_ci            display: none;
243fb726d48Sopenharmony_ci        }
244fb726d48Sopenharmony_ci        .td::-webkit-scrollbar {
245fb726d48Sopenharmony_ci          width: 0;
246fb726d48Sopenharmony_ci          background-color: transparent;
247fb726d48Sopenharmony_ci        }
248fb726d48Sopenharmony_ci        </style>
249fb726d48Sopenharmony_ci        <lit-progress-bar id="export_progress_bar" class="progress"></lit-progress-bar>
250fb726d48Sopenharmony_ci        <slot id="slot" style="display: none"></slot>
251fb726d48Sopenharmony_ci        <slot name="head"></slot>
252fb726d48Sopenharmony_ci        <div class="export">
253fb726d48Sopenharmony_ci            <lit-icon size="18" style="color: #ffffff" name="copyhovered" ></lit-icon>
254fb726d48Sopenharmony_ci        </div>
255fb726d48Sopenharmony_ci        <div class="table" style="overflow-x:auto;">
256fb726d48Sopenharmony_ci            <div class="thead"></div>
257fb726d48Sopenharmony_ci            <div class="tbody">
258fb726d48Sopenharmony_ci                <div class="tree"></div>
259fb726d48Sopenharmony_ci                <div class="body"></div>
260fb726d48Sopenharmony_ci            </div>
261fb726d48Sopenharmony_ci            <div class="tbottom">
262fb726d48Sopenharmony_ci                <div id="previousPage" style="cursor: pointer">上一页</div>
263fb726d48Sopenharmony_ci                <div id="currentPage" style="margin-left: 10px;margin-right: 10px">1</div>
264fb726d48Sopenharmony_ci                <input id="targetPage" style="width: 60px;margin-right: 10px" min="1" type="number"/>
265fb726d48Sopenharmony_ci                <div id="jumpPage" style="padding: 2px 10px;border: 1px solid #676767;margin-right: 10px;font-size: 13px;cursor: pointer">GO</div>
266fb726d48Sopenharmony_ci                <div id="nextPage" style="cursor: pointer">下一页</div>
267fb726d48Sopenharmony_ci            </div>
268fb726d48Sopenharmony_ci        </div>
269fb726d48Sopenharmony_ci        `;
270fb726d48Sopenharmony_ci
271fb726d48Sopenharmony_ciexport const litTableHtml = `
272fb726d48Sopenharmony_ci        <style>
273fb726d48Sopenharmony_ci        :host{
274fb726d48Sopenharmony_ci            display: grid;
275fb726d48Sopenharmony_ci            grid-template-columns: repeat(1,1fr);
276fb726d48Sopenharmony_ci            width: 100%;
277fb726d48Sopenharmony_ci            position: relative;
278fb726d48Sopenharmony_ci            font-weight: 500;
279fb726d48Sopenharmony_ci            flex:1;
280fb726d48Sopenharmony_ci        }
281fb726d48Sopenharmony_ci        .tr{
282fb726d48Sopenharmony_ci            display: grid;
283fb726d48Sopenharmony_ci            grid-column-gap: 5px;
284fb726d48Sopenharmony_ci            min-width:100%;
285fb726d48Sopenharmony_ci        }
286fb726d48Sopenharmony_ci        .tr:nth-of-type(even){
287fb726d48Sopenharmony_ci        }
288fb726d48Sopenharmony_ci        .tr{
289fb726d48Sopenharmony_ci            background-color: var(--dark-background,#FFFFFF);
290fb726d48Sopenharmony_ci        }
291fb726d48Sopenharmony_ci        .tr:hover{
292fb726d48Sopenharmony_ci            background-color: var(--dark-background6,#DEEDFF);
293fb726d48Sopenharmony_ci        }
294fb726d48Sopenharmony_ci        .tr[selected]{
295fb726d48Sopenharmony_ci            background-color: var(--dark-background6,#DEEDFF);
296fb726d48Sopenharmony_ci        }
297fb726d48Sopenharmony_ci        .tr[high-light]{
298fb726d48Sopenharmony_ci            font-weight: 600;
299fb726d48Sopenharmony_ci        }
300fb726d48Sopenharmony_ci        .td{
301fb726d48Sopenharmony_ci            box-sizing: border-box;
302fb726d48Sopenharmony_ci            padding: 3px;
303fb726d48Sopenharmony_ci            display: flex;
304fb726d48Sopenharmony_ci            justify-content: flex-start;
305fb726d48Sopenharmony_ci            align-items: center;
306fb726d48Sopenharmony_ci            width: 100%;
307fb726d48Sopenharmony_ci            height: auto;
308fb726d48Sopenharmony_ci            line-height: 21px;
309fb726d48Sopenharmony_ci            cursor: pointer;
310fb726d48Sopenharmony_ci        }
311fb726d48Sopenharmony_ci        .td label{
312fb726d48Sopenharmony_ci            overflow: hidden; 
313fb726d48Sopenharmony_ci            text-overflow: ellipsis; 
314fb726d48Sopenharmony_ci            white-space: normal;
315fb726d48Sopenharmony_ci        }
316fb726d48Sopenharmony_ci        .td text{
317fb726d48Sopenharmony_ci            overflow: hidden; 
318fb726d48Sopenharmony_ci            text-overflow: ellipsis; 
319fb726d48Sopenharmony_ci            white-space: nowrap;
320fb726d48Sopenharmony_ci        }
321fb726d48Sopenharmony_ci        .td-order{
322fb726d48Sopenharmony_ci        }
323fb726d48Sopenharmony_ci        .td-order:before{
324fb726d48Sopenharmony_ci
325fb726d48Sopenharmony_ci        }
326fb726d48Sopenharmony_ci        :host([grid-line]) .td{
327fb726d48Sopenharmony_ci            border-left: 1px solid #f0f0f0;
328fb726d48Sopenharmony_ci        }
329fb726d48Sopenharmony_ci        :host([grid-line]) .td:last-of-type{
330fb726d48Sopenharmony_ci            border-right: 1px solid #f0f0f0;
331fb726d48Sopenharmony_ci        }
332fb726d48Sopenharmony_ci        .table{
333fb726d48Sopenharmony_ci            width: 100%;
334fb726d48Sopenharmony_ci             color: var(--dark-color2,#262626);
335fb726d48Sopenharmony_ci        }
336fb726d48Sopenharmony_ci        .thead{
337fb726d48Sopenharmony_ci            display: grid;
338fb726d48Sopenharmony_ci            position: sticky;
339fb726d48Sopenharmony_ci            top: 0;
340fb726d48Sopenharmony_ci            font-weight: bold;
341fb726d48Sopenharmony_ci            font-size: .9rem;
342fb726d48Sopenharmony_ci            color: var(--dark-color1,#000);
343fb726d48Sopenharmony_ci            background-color: var(--dark-background,#FFFFFF);
344fb726d48Sopenharmony_ci            z-index: 1;
345fb726d48Sopenharmony_ci        }
346fb726d48Sopenharmony_ci        .tbody{
347fb726d48Sopenharmony_ci            width: 100%;
348fb726d48Sopenharmony_ci            top: 0;
349fb726d48Sopenharmony_ci            left: 0;
350fb726d48Sopenharmony_ci            right:0;
351fb726d48Sopenharmony_ci            bottom:0;
352fb726d48Sopenharmony_ci            display: flex;
353fb726d48Sopenharmony_ci            flex-direction: row
354fb726d48Sopenharmony_ci            row-gap: 1px;
355fb726d48Sopenharmony_ci            column-gap: 1px;
356fb726d48Sopenharmony_ci        }
357fb726d48Sopenharmony_ci        .tree{
358fb726d48Sopenharmony_ci            overflow-x:hidden;
359fb726d48Sopenharmony_ci            overflow-y:hidden;
360fb726d48Sopenharmony_ci            display: grid;
361fb726d48Sopenharmony_ci            grid-template-columns: 1fr;
362fb726d48Sopenharmony_ci            row-gap: 1px;
363fb726d48Sopenharmony_ci            column-gap: 1px;
364fb726d48Sopenharmony_ci            position:relative;
365fb726d48Sopenharmony_ci        }
366fb726d48Sopenharmony_ci        .tree:hover{
367fb726d48Sopenharmony_ci            overflow-x: overlay;
368fb726d48Sopenharmony_ci        }
369fb726d48Sopenharmony_ci        .tree-first-body{
370fb726d48Sopenharmony_ci            min-width: 100%;
371fb726d48Sopenharmony_ci            box-sizing: border-box;
372fb726d48Sopenharmony_ci            display:flex;
373fb726d48Sopenharmony_ci            align-items:center;
374fb726d48Sopenharmony_ci            white-space: nowrap;
375fb726d48Sopenharmony_ci            font-weight: 500;
376fb726d48Sopenharmony_ci            cursor: pointer;
377fb726d48Sopenharmony_ci        }
378fb726d48Sopenharmony_ci        .tree-first-body[high-light]{
379fb726d48Sopenharmony_ci            font-weight: 600;
380fb726d48Sopenharmony_ci        }
381fb726d48Sopenharmony_ci        .tree-first-body:hover{
382fb726d48Sopenharmony_ci            background-color: var(--dark-background6,#DEEDFF); /*antd #fafafa 42b983*/
383fb726d48Sopenharmony_ci        }
384fb726d48Sopenharmony_ci        .body{
385fb726d48Sopenharmony_ci            display: grid;
386fb726d48Sopenharmony_ci            grid-template-columns: 1fr;
387fb726d48Sopenharmony_ci            row-gap: 1px;
388fb726d48Sopenharmony_ci            column-gap: 1px;
389fb726d48Sopenharmony_ci            flex:1;
390fb726d48Sopenharmony_ci            position: relative;
391fb726d48Sopenharmony_ci        }
392fb726d48Sopenharmony_ci        :host([grid-line])  .tbody{
393fb726d48Sopenharmony_ci            border-bottom: 1px solid #f0f0f0;
394fb726d48Sopenharmony_ci            background-color: #f0f0f0;
395fb726d48Sopenharmony_ci        }
396fb726d48Sopenharmony_ci        .th{
397fb726d48Sopenharmony_ci            grid-column-gap: 5px;
398fb726d48Sopenharmony_ci            display: grid;
399fb726d48Sopenharmony_ci            background-color: var(--dark-background,#FFFFFF);
400fb726d48Sopenharmony_ci        }
401fb726d48Sopenharmony_ci        :host([data-query-scene]) .th {
402fb726d48Sopenharmony_ci          background-color: #F6F6F6;
403fb726d48Sopenharmony_ci          color: #7E7E7E;
404fb726d48Sopenharmony_ci        }
405fb726d48Sopenharmony_ci        :host([data-query-scene]) .tr {
406fb726d48Sopenharmony_ci          background-color: #F6F6F6;
407fb726d48Sopenharmony_ci        }
408fb726d48Sopenharmony_ci        .tree-icon{
409fb726d48Sopenharmony_ci            font-size: 1.2rem;
410fb726d48Sopenharmony_ci            width: 20px;
411fb726d48Sopenharmony_ci            height: 20px;
412fb726d48Sopenharmony_ci            padding-right: 5px;
413fb726d48Sopenharmony_ci            padding-left: 5px;
414fb726d48Sopenharmony_ci            cursor: pointer;
415fb726d48Sopenharmony_ci        }
416fb726d48Sopenharmony_ci        .tree-icon:hover{
417fb726d48Sopenharmony_ci            color: #42b983;
418fb726d48Sopenharmony_ci        }
419fb726d48Sopenharmony_ci        .row-checkbox,row-checkbox-all{
420fb726d48Sopenharmony_ci
421fb726d48Sopenharmony_ci        }
422fb726d48Sopenharmony_ci        :host([no-head]) .thead{
423fb726d48Sopenharmony_ci            display: none;
424fb726d48Sopenharmony_ci        }
425fb726d48Sopenharmony_ci        .up-svg{
426fb726d48Sopenharmony_ci            position: absolute;
427fb726d48Sopenharmony_ci            right: 5px;
428fb726d48Sopenharmony_ci            top: 8px;
429fb726d48Sopenharmony_ci            bottom: 8px;
430fb726d48Sopenharmony_ci            width: 15px;
431fb726d48Sopenharmony_ci            height: 15px;
432fb726d48Sopenharmony_ci        }
433fb726d48Sopenharmony_ci        .down-svg{
434fb726d48Sopenharmony_ci            position: absolute;
435fb726d48Sopenharmony_ci            top: 8px;
436fb726d48Sopenharmony_ci            right: 5px;
437fb726d48Sopenharmony_ci            bottom: 8px;
438fb726d48Sopenharmony_ci            width: 15px;
439fb726d48Sopenharmony_ci            height: 15px;
440fb726d48Sopenharmony_ci        }
441fb726d48Sopenharmony_ci        .button-icon{
442fb726d48Sopenharmony_ci          height: 32px;
443fb726d48Sopenharmony_ci          width: 164px;
444fb726d48Sopenharmony_ci          color: black;
445fb726d48Sopenharmony_ci          font-size: 14px;
446fb726d48Sopenharmony_ci          border: 1px solid black;
447fb726d48Sopenharmony_ci          display: flex;
448fb726d48Sopenharmony_ci          flex-direction: row;
449fb726d48Sopenharmony_ci          align-items: center;
450fb726d48Sopenharmony_ci          justify-content: center;
451fb726d48Sopenharmony_ci          cursor: pointer;
452fb726d48Sopenharmony_ci          background: var(--dark-background3,#FFFFFF);
453fb726d48Sopenharmony_ci          border-radius: 20px;
454fb726d48Sopenharmony_ci          padding: 15px;
455fb726d48Sopenharmony_ci          transition: opacity 0.2s;
456fb726d48Sopenharmony_ci          outline: none;
457fb726d48Sopenharmony_ci          position: relative;
458fb726d48Sopenharmony_ci          overflow: hidden;
459fb726d48Sopenharmony_ci        }
460fb726d48Sopenharmony_ci        .button-icon:active {
461fb726d48Sopenharmony_ci          background: var(--dark-background1,#f5f5f5)
462fb726d48Sopenharmony_ci        }
463fb726d48Sopenharmony_ci        .mouse-select{
464fb726d48Sopenharmony_ci            background-color: var(--dark-background6,#DEEDFF);
465fb726d48Sopenharmony_ci        }
466fb726d48Sopenharmony_ci        .mouse-in{
467fb726d48Sopenharmony_ci            background-color: var(--dark-background6,#DEEDFF);
468fb726d48Sopenharmony_ci        }
469fb726d48Sopenharmony_ci        .export{
470fb726d48Sopenharmony_ci            height:32px;
471fb726d48Sopenharmony_ci            width: 32px;
472fb726d48Sopenharmony_ci            cursor:pointer;
473fb726d48Sopenharmony_ci            display:none;
474fb726d48Sopenharmony_ci            align-items:center;
475fb726d48Sopenharmony_ci            justify-content:center;
476fb726d48Sopenharmony_ci            border-radius:5px;
477fb726d48Sopenharmony_ci            box-sizing: border-box;
478fb726d48Sopenharmony_ci            background-color: #000000;
479fb726d48Sopenharmony_ci            opacity: 0.3;
480fb726d48Sopenharmony_ci            position:absolute;
481fb726d48Sopenharmony_ci            right:20px;
482fb726d48Sopenharmony_ci            bottom:20px;
483fb726d48Sopenharmony_ci            z-index: 999999;
484fb726d48Sopenharmony_ci        }
485fb726d48Sopenharmony_ci        .resize{
486fb726d48Sopenharmony_ci            width: 2px;
487fb726d48Sopenharmony_ci            margin-right: 3px;
488fb726d48Sopenharmony_ci            height: 20px;
489fb726d48Sopenharmony_ci            background-color: #e0e0e0;
490fb726d48Sopenharmony_ci            cursor: col-resize;
491fb726d48Sopenharmony_ci        }
492fb726d48Sopenharmony_ci        .progress{
493fb726d48Sopenharmony_ci            position: absolute;
494fb726d48Sopenharmony_ci            height: 1px;
495fb726d48Sopenharmony_ci            top: 0;
496fb726d48Sopenharmony_ci            left: 0;
497fb726d48Sopenharmony_ci            right: 0;
498fb726d48Sopenharmony_ci            z-index: 999999;
499fb726d48Sopenharmony_ci        } 
500fb726d48Sopenharmony_ci        :host([hideDownload]) .export{
501fb726d48Sopenharmony_ci            display: none;
502fb726d48Sopenharmony_ci        }
503fb726d48Sopenharmony_ci        </style>
504fb726d48Sopenharmony_ci        <lit-progress-bar id="export_progress_bar" class="progress"></lit-progress-bar>
505fb726d48Sopenharmony_ci        <slot id="slot" style="display: none"></slot>
506fb726d48Sopenharmony_ci        <slot name="head"></slot>
507fb726d48Sopenharmony_ci        <div class="export">
508fb726d48Sopenharmony_ci            <lit-icon size="18" style="color: #ffffff" name="copyhovered" ></lit-icon>
509fb726d48Sopenharmony_ci        </div>
510fb726d48Sopenharmony_ci        <div class="table" style="overflow-x:auto;">
511fb726d48Sopenharmony_ci            <div class="thead"></div>
512fb726d48Sopenharmony_ci            <div class="tbody">
513fb726d48Sopenharmony_ci                <div class="tree"></div>
514fb726d48Sopenharmony_ci                <div class="body"></div>
515fb726d48Sopenharmony_ci            </div>
516fb726d48Sopenharmony_ci        </div>
517fb726d48Sopenharmony_ci        `;
518fb726d48Sopenharmony_ci
519fb726d48Sopenharmony_ciexport function createDownUpSvg(index: number, head: unknown): { upSvg: SVGSVGElement; downSvg: SVGSVGElement } {
520fb726d48Sopenharmony_ci  let NS = 'http://www.w3.org/2000/svg';
521fb726d48Sopenharmony_ci  let upSvg: SVGSVGElement = document.createElementNS(NS, 'svg') as SVGSVGElement;
522fb726d48Sopenharmony_ci  let upPath: Element = document.createElementNS(NS, 'path');
523fb726d48Sopenharmony_ci  upSvg.setAttribute('fill', 'let(--dark-color1,#212121)');
524fb726d48Sopenharmony_ci  upSvg.setAttribute('viewBox', '0 0 1024 1024');
525fb726d48Sopenharmony_ci  upSvg.setAttribute('stroke', 'let(--dark-color1,#212121)');
526fb726d48Sopenharmony_ci  upSvg.classList.add('up-svg');
527fb726d48Sopenharmony_ci  upPath.setAttribute(
528fb726d48Sopenharmony_ci    'd',
529fb726d48Sopenharmony_ci    'M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z'
530fb726d48Sopenharmony_ci  );
531fb726d48Sopenharmony_ci  upSvg.appendChild(upPath);
532fb726d48Sopenharmony_ci  let downSvg: SVGSVGElement = document.createElementNS(NS, 'svg') as SVGSVGElement;
533fb726d48Sopenharmony_ci  let downPath: Element = document.createElementNS(NS, 'path');
534fb726d48Sopenharmony_ci  downSvg.setAttribute('fill', 'let(--dark-color1,#212121)');
535fb726d48Sopenharmony_ci  downSvg.setAttribute('viewBox', '0 0 1024 1024');
536fb726d48Sopenharmony_ci  downSvg.setAttribute('stroke', 'let(--dark-color1,#212121)');
537fb726d48Sopenharmony_ci  downSvg.classList.add('down-svg');
538fb726d48Sopenharmony_ci  downPath.setAttribute(
539fb726d48Sopenharmony_ci    'd',
540fb726d48Sopenharmony_ci    'M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z'
541fb726d48Sopenharmony_ci  );
542fb726d48Sopenharmony_ci  downSvg.appendChild(downPath);
543fb726d48Sopenharmony_ci  if (index === 0) {
544fb726d48Sopenharmony_ci    //@ts-ignore
545fb726d48Sopenharmony_ci    head.sortType = 0; // 默认以第一列 降序排序 作为默认排序
546fb726d48Sopenharmony_ci    upSvg.setAttribute('fill', 'let(--dark-color1,#212121)');
547fb726d48Sopenharmony_ci    downSvg.setAttribute('fill', 'let(--dark-color1,#212121)');
548fb726d48Sopenharmony_ci  }
549fb726d48Sopenharmony_ci  upSvg.style.display = 'none';
550fb726d48Sopenharmony_ci  downSvg.style.display = 'none'; //@ts-ignore
551fb726d48Sopenharmony_ci  head.appendChild(upSvg); //@ts-ignore
552fb726d48Sopenharmony_ci  head.appendChild(downSvg);
553fb726d48Sopenharmony_ci  return { upSvg, downSvg };
554fb726d48Sopenharmony_ci}
555fb726d48Sopenharmony_ci
556fb726d48Sopenharmony_ciexport function exportData(that: unknown): void {
557fb726d48Sopenharmony_ci  //@ts-ignore
558fb726d48Sopenharmony_ci  if (that.exportLoading || that.ds.length === 0) {
559fb726d48Sopenharmony_ci    return;
560fb726d48Sopenharmony_ci  } //@ts-ignore
561fb726d48Sopenharmony_ci  that.exportLoading = true; //@ts-ignore
562fb726d48Sopenharmony_ci  that.exportProgress!.loading = true;
563fb726d48Sopenharmony_ci  let date = new Date();
564fb726d48Sopenharmony_ci  JSONToCSV.csvExport({
565fb726d48Sopenharmony_ci    //@ts-ignore
566fb726d48Sopenharmony_ci    columns: that.columns as unknown[], //@ts-ignore
567fb726d48Sopenharmony_ci    tables: that.ds,
568fb726d48Sopenharmony_ci    fileName: `${date.getTime()}`, //@ts-ignore
569fb726d48Sopenharmony_ci    columnFormatter: that.itemTextHandleMap, //@ts-ignore
570fb726d48Sopenharmony_ci    exportFormatter: that.exportTextHandleMap,
571fb726d48Sopenharmony_ci  }).then((res) => {
572fb726d48Sopenharmony_ci    //@ts-ignore
573fb726d48Sopenharmony_ci    that.exportLoading = false; //@ts-ignore
574fb726d48Sopenharmony_ci    that.exportProgress!.loading = false;
575fb726d48Sopenharmony_ci  });
576fb726d48Sopenharmony_ci}
577fb726d48Sopenharmony_ci
578fb726d48Sopenharmony_ciexport function formatExportData(dataSource: unknown[], that: unknown): unknown[] {
579fb726d48Sopenharmony_ci  if (dataSource === undefined || dataSource.length === 0) {
580fb726d48Sopenharmony_ci    return [];
581fb726d48Sopenharmony_ci  } //@ts-ignore
582fb726d48Sopenharmony_ci  if (that.columns === undefined) {
583fb726d48Sopenharmony_ci    return [];
584fb726d48Sopenharmony_ci  }
585fb726d48Sopenharmony_ci  return dataSource.map((item) => {
586fb726d48Sopenharmony_ci    let formatData: unknown = {}; //@ts-ignore
587fb726d48Sopenharmony_ci    that.columns!.forEach((column: unknown) => {
588fb726d48Sopenharmony_ci      //@ts-ignore
589fb726d48Sopenharmony_ci      let dataIndex = column.getAttribute('data-index'); //@ts-ignore
590fb726d48Sopenharmony_ci      let columnName = column.getAttribute('title');
591fb726d48Sopenharmony_ci      if (columnName === '') {
592fb726d48Sopenharmony_ci        columnName = dataIndex;
593fb726d48Sopenharmony_ci      } //@ts-ignore
594fb726d48Sopenharmony_ci      if (dataIndex && columnName && item[dataIndex] !== undefined) {
595fb726d48Sopenharmony_ci        //@ts-ignore
596fb726d48Sopenharmony_ci        formatData[columnName] = item[dataIndex];
597fb726d48Sopenharmony_ci      }
598fb726d48Sopenharmony_ci    }); //@ts-ignore
599fb726d48Sopenharmony_ci    if (item.children !== undefined) {
600fb726d48Sopenharmony_ci      //@ts-ignore
601fb726d48Sopenharmony_ci      formatData.children = formatExportData(item.children, that);
602fb726d48Sopenharmony_ci    }
603fb726d48Sopenharmony_ci    return formatData;
604fb726d48Sopenharmony_ci  });
605fb726d48Sopenharmony_ci}
606fb726d48Sopenharmony_ci
607fb726d48Sopenharmony_ciexport function recursionExportTableData(columns: unknown[], dataSource: unknown[]): string {
608fb726d48Sopenharmony_ci  let concatStr = '\r\n';
609fb726d48Sopenharmony_ci  dataSource.forEach((item, index) => {
610fb726d48Sopenharmony_ci    concatStr += columns
611fb726d48Sopenharmony_ci      .map((column) => {
612fb726d48Sopenharmony_ci        //@ts-ignore
613fb726d48Sopenharmony_ci        let dataIndex = column.getAttribute('data-index'); //@ts-ignore
614fb726d48Sopenharmony_ci        return `"${item[dataIndex] || ''}"    `;
615fb726d48Sopenharmony_ci      })
616fb726d48Sopenharmony_ci      .join(','); //@ts-ignore
617fb726d48Sopenharmony_ci    if (item.children !== undefined) {
618fb726d48Sopenharmony_ci      //@ts-ignore
619fb726d48Sopenharmony_ci      concatStr += recursionExportTableData(columns, item.children);
620fb726d48Sopenharmony_ci    }
621fb726d48Sopenharmony_ci    if (index !== dataSource.length - 1) {
622fb726d48Sopenharmony_ci      concatStr += '\r\n';
623fb726d48Sopenharmony_ci    }
624fb726d48Sopenharmony_ci  });
625fb726d48Sopenharmony_ci  return concatStr;
626fb726d48Sopenharmony_ci}
627fb726d48Sopenharmony_ci
628fb726d48Sopenharmony_ciexport function addCopyEventListener(that: unknown): void {
629fb726d48Sopenharmony_ci  //@ts-ignore
630fb726d48Sopenharmony_ci  that.tableElement?.addEventListener('copy', (e: unknown) => {
631fb726d48Sopenharmony_ci    // @ts-ignore
632fb726d48Sopenharmony_ci    let clipboardData = e.clipboardData || window.clipboardData;
633fb726d48Sopenharmony_ci    if (!clipboardData) {
634fb726d48Sopenharmony_ci      return;
635fb726d48Sopenharmony_ci    }
636fb726d48Sopenharmony_ci    // @ts-ignore
637fb726d48Sopenharmony_ci    let text = window.getSelection().toString();
638fb726d48Sopenharmony_ci    if (text) {
639fb726d48Sopenharmony_ci      //@ts-ignore
640fb726d48Sopenharmony_ci      e.preventDefault(); //@ts-ignore
641fb726d48Sopenharmony_ci      let length = that.tableColumns?.length || 1;
642fb726d48Sopenharmony_ci      let strings = text.split('\n');
643fb726d48Sopenharmony_ci      let formatStr = '';
644fb726d48Sopenharmony_ci      for (let i = 0; i < strings.length; i++) {
645fb726d48Sopenharmony_ci        if (i % length !== 0) {
646fb726d48Sopenharmony_ci          formatStr += '    ';
647fb726d48Sopenharmony_ci        }
648fb726d48Sopenharmony_ci        formatStr += strings[i];
649fb726d48Sopenharmony_ci        if (i !== 0 && i % length === length - 1) {
650fb726d48Sopenharmony_ci          formatStr += '\n';
651fb726d48Sopenharmony_ci        }
652fb726d48Sopenharmony_ci      }
653fb726d48Sopenharmony_ci      clipboardData.setData('text/plain', formatStr);
654fb726d48Sopenharmony_ci    }
655fb726d48Sopenharmony_ci  });
656fb726d48Sopenharmony_ci}
657fb726d48Sopenharmony_ci
658fb726d48Sopenharmony_ciexport function addSelectAllBox(rowElement: HTMLDivElement, that: unknown): void {
659fb726d48Sopenharmony_ci  //@ts-ignore
660fb726d48Sopenharmony_ci  if (that.selectable) {
661fb726d48Sopenharmony_ci    let box = document.createElement('div');
662fb726d48Sopenharmony_ci    box.style.display = 'flex';
663fb726d48Sopenharmony_ci    box.style.justifyContent = 'center';
664fb726d48Sopenharmony_ci    box.style.alignItems = 'center';
665fb726d48Sopenharmony_ci    box.style.gridArea = '_checkbox_';
666fb726d48Sopenharmony_ci    box.classList.add('td');
667fb726d48Sopenharmony_ci    box.style.backgroundColor = '#ffffff66';
668fb726d48Sopenharmony_ci    let checkbox = document.createElement('lit-checkbox');
669fb726d48Sopenharmony_ci    checkbox.classList.add('row-checkbox-all');
670fb726d48Sopenharmony_ci    checkbox.onchange = (e: unknown): void => {
671fb726d48Sopenharmony_ci      //@ts-ignore
672fb726d48Sopenharmony_ci      that.shadowRoot!.querySelectorAll('.row-checkbox').forEach((a: unknown) => (a.checked = e.detail.checked)); //@ts-ignore
673fb726d48Sopenharmony_ci      if (e.detail.checked) {
674fb726d48Sopenharmony_ci        //@ts-ignore
675fb726d48Sopenharmony_ci        that.shadowRoot!.querySelectorAll('.tr').forEach((a: unknown) => a.setAttribute('checked', ''));
676fb726d48Sopenharmony_ci      } else {
677fb726d48Sopenharmony_ci        //@ts-ignore
678fb726d48Sopenharmony_ci        that.shadowRoot!.querySelectorAll('.tr').forEach((a: unknown) => a.removeAttribute('checked'));
679fb726d48Sopenharmony_ci      }
680fb726d48Sopenharmony_ci    };
681fb726d48Sopenharmony_ci    box.appendChild(checkbox);
682fb726d48Sopenharmony_ci    rowElement.appendChild(box);
683fb726d48Sopenharmony_ci  }
684fb726d48Sopenharmony_ci}
685fb726d48Sopenharmony_ci
686fb726d48Sopenharmony_ciexport function fixed(td: HTMLElement, placement: string, bgColor: string): void {
687fb726d48Sopenharmony_ci  td.style.position = 'sticky';
688fb726d48Sopenharmony_ci  if (placement === 'left') {
689fb726d48Sopenharmony_ci    td.style.left = '0px';
690fb726d48Sopenharmony_ci    td.style.boxShadow = '3px 0px 5px #33333333';
691fb726d48Sopenharmony_ci  } else if (placement === 'right') {
692fb726d48Sopenharmony_ci    td.style.right = '0px';
693fb726d48Sopenharmony_ci    td.style.boxShadow = '-3px 0px 5px #33333333';
694fb726d48Sopenharmony_ci  }
695fb726d48Sopenharmony_ci}
696fb726d48Sopenharmony_ci
697fb726d48Sopenharmony_ciexport function formatName(key: string, name: unknown, that: unknown): unknown {
698fb726d48Sopenharmony_ci  let content = name; //@ts-ignore
699fb726d48Sopenharmony_ci  if (that.itemTextHandleMap.has(key)) {
700fb726d48Sopenharmony_ci    //@ts-ignore
701fb726d48Sopenharmony_ci    content = that.itemTextHandleMap.get(key)?.(name) || '';
702fb726d48Sopenharmony_ci  }
703fb726d48Sopenharmony_ci  if (content !== undefined && content !== null) {
704fb726d48Sopenharmony_ci    return content.toString().replace(/</g, '&lt;').replace(/>/g, '&gt;');
705fb726d48Sopenharmony_ci  }
706fb726d48Sopenharmony_ci  return '';
707fb726d48Sopenharmony_ci}
708