qiskit_trebugger.views.widget.timeline_utils

Utility functions to support the timeline view

  1"""Utility functions to support the timeline view
  2"""
  3from io import BytesIO
  4from binascii import b2a_base64
  5from qiskit.circuit import qpy_serialization
  6import ipywidgets as widgets
  7
  8
  9def get_args_panel(**kwargs):
 10    """Returns kwarg panel for the debugger
 11
 12    Returns:
 13        widgets.HBox: Horizontal Box containing the
 14                      arg panel
 15    """
 16    # make two boxes for each key and values
 17    key_box = {}
 18    val_box = {}
 19
 20    box_kwargs = dict(
 21        width="50%", display="flex", align_items="stretch", flex_flow="column"
 22    )
 23    for i in range(2):
 24        key_box[i] = widgets.VBox(layout=box_kwargs)
 25        val_box[i] = widgets.VBox(layout=box_kwargs)
 26
 27    # make children dicts
 28    key_children = {0: [], 1: []}
 29    value_children = {0: [], 1: []}
 30
 31    # counter
 32    index = 0
 33
 34    for i, (key, val) in enumerate(kwargs.items()):
 35        if val is None:
 36            continue
 37
 38        # make key and value labels
 39        key_label = widgets.HTML(r"<p class = 'params-key'><b> " + key + "</b></p>")
 40
 41        value = val
 42        value_label = widgets.HTML(r"<p class = 'params-value'>" + str(value) + "</p>")
 43
 44        # add to the list
 45        key_children[index].append(key_label)
 46        value_children[index].append(value_label)
 47
 48        # flip box id
 49        index = 0 if i < len(kwargs.items()) // 2 else 1
 50
 51    # construct the inner vertical boxes
 52    for i in range(2):
 53        key_box[i].children = key_children[i]
 54        val_box[i].children = value_children[i]
 55
 56    # construct HBoxes
 57    args_boxes = [
 58        widgets.HBox([key_box[0], val_box[0]], layout={"width": "50%"}),
 59        widgets.HBox([key_box[1], val_box[1]], layout={"width": "50%"}),
 60    ]
 61
 62    # construct final HBox
 63    return widgets.HBox(args_boxes, layout=dict(margin="10px 0 0 15px"))
 64
 65
 66def view_circuit(disp_circuit, suffix):
 67    """Displays the circuit with diff for the debuuger
 68
 69    Args:
 70        disp_circuit : The circuit to display
 71        suffix (str) : The name to be added to pass
 72
 73     Returns:
 74         str : HTML string with img data to be
 75               rendered into the debugger
 76    """
 77    if "diff" in suffix:
 78        # means checkbox has been chosen for diff
 79        img_style = {"gatefacecolor": "orange", "gatetextcolor": "black"}
 80    else:
 81        img_style = None
 82
 83    fig = disp_circuit.draw(
 84        "mpl",
 85        idle_wires=False,
 86        with_layout=False,
 87        scale=0.9,
 88        fold=20,
 89        style=img_style,
 90    )
 91
 92    img_bio = BytesIO()
 93    fig.savefig(img_bio, format="png", bbox_inches="tight")
 94    fig.clf()
 95    img_data = b2a_base64(img_bio.getvalue()).decode()
 96
 97    qpy_bio = BytesIO()
 98    qpy_serialization.dump(disp_circuit, qpy_bio)
 99    qpy_data = b2a_base64(qpy_bio.getvalue()).decode()
100
101    # qasm couldn't handle the circuit changed names
102    for instr in disp_circuit.data:
103        instr[0].name = instr[0].name.strip()
104
105    qasm_str = disp_circuit.qasm()
106    qasm_bio = BytesIO(bytes(qasm_str, "ascii"))
107    qasm_data = b2a_base64(qasm_bio.getvalue()).decode()
108
109    img_html = f"""
110        <div class="circuit-plot-wpr">
111            <img src="data:image/png;base64,{img_data}&#10;">
112        </div>
113        <div class="circuit-export-wpr">
114            Save:
115            <a download="circuit_{suffix}.png" href="data:image/png;base64,{img_data}" download>
116                <i class="fa fa-download"></i> <span>PNG</span>
117            </a>
118            <a download="circuit_{suffix}.qpy" href="data:application/octet-stream;base64,{qpy_data}" download>
119                <i class="fa fa-download"></i> <span>QPY</span>
120            </a>
121            <a download="circuit_{suffix}.qasm" href="data:application/octet-stream;base64,{qasm_data}" download>
122                <i class="fa fa-download"></i> <span>QASM</span>
123            </a>
124        </div>
125        """
126
127    return img_html
128
129
130def get_spinner_html():
131    """Return the spinner html string"""
132    return '<div class="lds-spinner"><div></div><div></div><div>\
133            </div><div></div><div></div><div></div><div></div><div>\
134            </div><div></div><div></div><div></div><div></div></div>'
135
136
137def get_styles():
138    """Return the style for the debugger"""
139    return """
140        <style>
141        .title h1 { font-size: 45px; font-weight: bold; text-align: center; padding: 10px 10px 10px 10px; }
142        .logo { margin: 0 15px; background-position: center; background-repeat: no-repeat; background-size: contain; background-image: url('data:image/png;base64,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')}        
143        .step-details { min-height: 350px; background: #eee; }
144        .step-details-hide { display: none !important; }
145
146        .options { border-top: 1px solid #eee; }
147        .options > div { font-size : 0.7 em; text-align: center; font-family: 'Roboto Mono', monospace; background: #eee; }
148
149        .tp-widget { border:1px solid #aaa; min-width: 300px; }
150        .p-TabPanel-tabContents { padding: 5px !important; }
151        .p-Collapse-header { padding: 1px 5px; background: #eee; }
152        .p-Collapse-open > .p-Collapse-header { background: #ddd; }
153        .p-Collapse-contents { padding-top: 0; padding-left: 0; padding-bottom: 0; padding-right: 0; height: 220px; background: #f5f5f5; }
154        .p-Collapse-contents button {
155            width: 20%;
156            background: #fff;
157            text-align: center;
158            padding: 0;
159            font-weight: bold; }
160
161
162        div.output_scroll { box-shadow: none }
163
164        .widget-gridbox.table { background: #f5f5f5; }
165        .widget-gridbox.table .widget-label {
166            background-color: #fff;
167            padding: 0 3px;
168            font-family: 'Open Sans', monospace;
169            font-size: 14px;
170        }
171
172        .exist { font-weight: bold; }
173        .not-exist { display: none; }
174
175        .stats-title {
176            background: #eee;
177            margin: 0;
178            text-align: center;
179            font-size: 15px;
180            font-weight: bold;
181            font-family: 'Roboto Mono', monospace; }
182
183        .widget-label.new, .widget-hbox.new .widget-label { font-weight: bold; color: #4b7bec; }
184        .widget-label.updated, .widget-hbox.updated .widget-label { font-weight: bold; color: #e74c3c; }
185
186        .transpilation-step {
187            background: #fff;
188            padding-top: 5px;
189            border-bottom: 1px solid #ddd;
190            grid-template-columns: 35px auto 70px 70px 70px 70px 70px 70px;
191        }
192        .transpilation-step:hover { background: #eee; }
193        .transpilation-step button { background: #fff; }
194        .transpilation-step .transformation {
195                            color: cornsilk;
196                            font-family : 'Lato';
197                            padding: 3px 3px 3px 10px;
198                            background-color: rgba(0, 67, 206, 0.8);
199                            margin-right : 10%;
200        }
201        .transpilation-step .analysis {
202                        color: cornsilk;
203                        padding: 3px 3px 3px 10px;
204                        font-family : 'Lato';
205                        background-color: rgba(180, 77, 224, 0.8);
206                        margin-right: 10%;
207        }
208
209        .transpilation-step div.fs10 { font-size: 10px; }
210        .transpilation-step div.fs11 { font-size: 11px; }
211        .transpilation-step div.fs12 { font-size: 12px; }
212        .transpilation-step div.fs13 { font-size: 13px; }
213        .transpilation-step div.fs14 { font-size: 14px; }
214        .transpilation-step div.fs15 { font-size: 15px; }
215        .transpilation-step > :nth-child(1) button { width: 11px; font-size: 20px; background: transparent; outline: 0 !important; border: none !important; }
216        .transpilation-step > :nth-child(1) button:hover { border: none !important; outline: none !important; box-shadow: none !important; }
217        .transpilation-step > :nth-child(1) button:focus { border: none !important; outline: none !important; box-shadow: none !important; }
218
219        .transpilation-step.active > :nth-child(2) { font-weight: bold; }
220
221        .transpilation-step > :nth-child(2) {
222            font-family: 'Roboto Mono', monospace;
223            font-size: 16px;
224            overflow: hidden;
225            text-overflow: ellipsis;
226            white-space: nowrap;
227        }
228        .transpilation-step > :nth-child(3) { font-family: 'Roboto Mono', monospace; font-size: 10px; color: #900; text-align: right; }
229        .transpilation-step > :nth-child(4) { font-family: 'Roboto Mono', monospace; text-align: center; }
230        .transpilation-step > :nth-child(5) { font-family: 'Roboto Mono', monospace; text-align: center; }
231        .transpilation-step > :nth-child(6) { font-family: 'Roboto Mono', monospace; text-align: center; }
232        .transpilation-step > :nth-child(7) { font-family: 'Roboto Mono', monospace; text-align: center; }
233        .transpilation-step > :nth-child(8) { font-family: 'Roboto Mono', monospace; text-align: center; }
234
235        .stat-name { font-size: 10px; color: #aaa; }
236        .stat-value { font-size: 12px; color: #000; }
237        .highlight .stat-value { font-weight: bold; color: #e74c3c; }
238
239        .logs-wpr { display: grid; grid-template-columns: 70px 60px auto; }
240        .logs-wpr pre.date { font-size: 10px; }
241        .logs-wpr pre.level { font-size: 10px; text-align: right; padding-right: 5px; }
242        .logs-wpr pre.log-entry { font-size: 12px; }
243        .logs-wpr pre.DEBUG { color: #000000; }
244        .logs-wpr pre.INFO { color: #1c84a2; }
245        .logs-wpr pre.WARNING { color: #ed7723; }
246        .logs-wpr pre.ERROR { color: #d64e4a; }
247        .logs-wpr pre.CRITICAL { color: white; background: #d64e4a; }
248
249        div.output_area pre.help { font-family: Helvetica,Arial,sans-serif; font-size: 13px;
250            border: 1px solid #ccc; padding: 10px;}
251        div.help-header {
252            font-family: 'Roboto Mono', monospace;
253            font-size: 12px;
254            border: 1px solid #ccc;
255            border-bottom: none;
256            margin-top: 4px;
257            padding: 5px 10px;
258            font-weight: bold;
259            background: #f5f5f5;
260        }
261        .toggle-button{
262            padding: 5px 25px 10px 10px;
263            font-size : 1.1em;
264            height : 5%;
265            text-align: left;
266            background: #fff;
267            transition: 0.5s;
268            border: none !important;
269        }
270        .toggle-button:hover{
271            background: #eee;
272            border: none;
273            transition: 1s;
274        }
275        .params-key{
276            margin: 2% 1% 1% 4%;
277            padding: 5px 20px 5px 20px;
278            font-size: 1em;
279            color: cornsilk;
280            background: rgba(15,23,229,0.7);
281        }
282
283        .params-value{
284            margin: 1% 1% 1% 1%;
285            padding: 5px 20px 5px 20px;
286            border-left : 2px solid black;
287            font-size: 1.1em;
288        }
289
290        .transform-label {
291            margin-left : 5%;
292            color: cornsilk;
293            padding: 10px 15px 10px 15px;
294            font-size: 1.3em;
295            background-color: rgba(0, 67, 206, 0.8);
296        }
297
298        .analyse-label {
299            margin-left : 5%;
300            padding: 10px 15px 10px 15px;
301            color: cornsilk;
302            font-size: 1.3em;
303            background-color: rgba(180, 77, 224, 0.8);
304        }
305
306        .label-text{
307            padding: 2px 2px 2px 2px; margin-left:10%; font-size: 1.1em;
308        }
309
310        .label-purple-back{
311            margin-left : 5%;
312            padding: 5px 0px 2px 15px;
313            font-size: 1.2em;
314            color : #444444;
315            background-color: rgba(245,174,230,0.4);
316        }
317
318
319        .content-wpr {
320            overflow:hidden;
321        }
322
323        .content { overflow-y: auto; height: 325px; margin: 0; padding: 0; }
324        .p-TabPanel-tabContents td { text-align: left; font-family: 'Roboto Mono', monospace; }
325        .p-TabPanel-tabContents th { text-align: center; font-family: 'Roboto Mono', monospace; font-size: 14px; }
326
327        .circuit-plot-wpr { height: 225px; overflow: auto; border: 1px solid #aaa; }
328        .circuit-plot-wpr img { max-width: none; }
329        .circuit-export-wpr a {
330            display: inline-block;
331            margin: 5px 2px;
332            padding: 2px 15px;
333            color: #000;
334            background: #ddd;
335            border: 1px solid transparent;
336            text-decoration: none !important;
337        }
338        .circuit-export-wpr a:hover { border-color: #aaa; }
339
340        .p-TabBar-tabIcon:before { font: normal normal normal 14px/1 FontAwesome; padding-right: 5px; }
341        .p-TabBar-content > :nth-child(1) .p-TabBar-tabIcon:before { content: "\\f1de"; color: #b587f7; }
342        .p-TabBar-content > :nth-child(2) .p-TabBar-tabIcon:before { content: "\\f00a"; color: #b33771; }
343        .p-TabBar-content > :nth-child(3) .p-TabBar-tabIcon:before { content: "\\f039"; color: #ff9d85; }
344        .p-TabBar-content > :nth-child(4) .p-TabBar-tabIcon:before { content: "\\f05a"; color: #6ea2c9; }
345
346        .no-props .p-TabBar-content > :nth-child(2) .p-TabBar-tabLabel,
347        .no-props .p-TabBar-content > :nth-child(2) .p-TabBar-tabIcon:before { color: #aaa; }
348        .no-logs .p-TabBar-content > :nth-child(3) .p-TabBar-tabLabel,
349        .no-logs .p-TabBar-content > :nth-child(3) .p-TabBar-tabIcon:before { color: #aaa; }
350
351        .message { width: 90%; font-size: 26px; text-align: center; margin: 70px 0; font-weight: bold;}
352
353        @media (max-width: 1000px) {
354            .options { grid-template-columns: repeat(3, auto) !important; }
355            .options > :nth-child(4) { display: none; }
356
357            .transpilation-step { grid-template-columns: 35px auto 70px 70px 70px 70px 70px; }
358            .transpilation-step > :nth-child(2) { font-size: 12px !important; }
359            .transpilation-step > :nth-child(3) { display: none; }
360        }
361
362        @media (max-width:985px) {
363            .title h1 { font-size: 26px; }
364            .logo {margin : 0px 2px;}
365            .transpilation-step { grid-template-columns: 35px auto 70px 70px 70px 70px; }
366            .transpilation-step > :nth-child(6) { display: none; }
367
368        }
369
370        @media (max-width:800px) {
371            
372            
373            .options { grid-template-columns: repeat(2, auto) !important; }
374            .options > :nth-child(3) { display: none; }
375
376            .transpilation-step { grid-template-columns: 35px auto 70px 70px 70px; }
377            .transpilation-step > :nth-child(7) { display: none; }
378        }
379
380        @media (max-width:700px) {
381            
382            .summary-panel { grid-template-columns: repeat(1, auto) !important; }
383
384            .property-set { width: 100% !important; }
385            .property-items { display: none !important; }
386
387            .circuit-export-wpr a {
388                font-size: 12px;
389                padding: 2px 6px;
390            }
391
392            .transpilation-step { grid-template-columns: 35px auto 70px 70px; }
393            .transpilation-step > :nth-child(5) { display: none; }
394        }
395
396        @media (max-width:550px) {
397             .logo {display: none;}
398             .title {font-size : 14px;}
399            .transpilation-step { grid-template-columns: 35px auto; }
400            .transpilation-step > :nth-child(4) { display: none; }
401            .transpilation-step > :nth-child(8) { display: none; }
402        }
403
404        .lds-spinner {
405            position: relative;
406            width: 80px;
407            height: 80px;
408            margin: 50px auto;
409        }
410        .lds-spinner div {
411            transform-origin: 40px 40px;
412            animation: lds-spinner 1.2s linear infinite;
413        }
414        .lds-spinner div:after {
415            content: " ";
416            display: block;
417            position: absolute;
418            top: 3px;
419            left: 37px;
420            width: 6px;
421            height: 18px;
422            border-radius: 20%;
423            background: #aaa;
424        }
425        .lds-spinner div:nth-child(1) {
426            transform: rotate(0deg);
427            animation-delay: -1.1s;
428        }
429        .lds-spinner div:nth-child(2) {
430            transform: rotate(30deg);
431            animation-delay: -1s;
432        }
433        .lds-spinner div:nth-child(3) {
434            transform: rotate(60deg);
435            animation-delay: -0.9s;
436        }
437        .lds-spinner div:nth-child(4) {
438            transform: rotate(90deg);
439            animation-delay: -0.8s;
440        }
441        .lds-spinner div:nth-child(5) {
442            transform: rotate(120deg);
443            animation-delay: -0.7s;
444        }
445        .lds-spinner div:nth-child(6) {
446            transform: rotate(150deg);
447            animation-delay: -0.6s;
448        }
449        .lds-spinner div:nth-child(7) {
450            transform: rotate(180deg);
451            animation-delay: -0.5s;
452        }
453        .lds-spinner div:nth-child(8) {
454            transform: rotate(210deg);
455            animation-delay: -0.4s;
456        }
457        .lds-spinner div:nth-child(9) {
458            transform: rotate(240deg);
459            animation-delay: -0.3s;
460        }
461        .lds-spinner div:nth-child(10) {
462            transform: rotate(270deg);
463            animation-delay: -0.2s;
464        }
465        .lds-spinner div:nth-child(11) {
466            transform: rotate(300deg);
467            animation-delay: -0.1s;
468        }
469        .lds-spinner div:nth-child(12) {
470            transform: rotate(330deg);
471            animation-delay: 0s;
472        }
473        @keyframes lds-spinner {
474            0% { opacity: 1; }
475            100% { opacity: 0; }
476        }
477        </style>
478        """
def get_args_panel(**kwargs):
10def get_args_panel(**kwargs):
11    """Returns kwarg panel for the debugger
12
13    Returns:
14        widgets.HBox: Horizontal Box containing the
15                      arg panel
16    """
17    # make two boxes for each key and values
18    key_box = {}
19    val_box = {}
20
21    box_kwargs = dict(
22        width="50%", display="flex", align_items="stretch", flex_flow="column"
23    )
24    for i in range(2):
25        key_box[i] = widgets.VBox(layout=box_kwargs)
26        val_box[i] = widgets.VBox(layout=box_kwargs)
27
28    # make children dicts
29    key_children = {0: [], 1: []}
30    value_children = {0: [], 1: []}
31
32    # counter
33    index = 0
34
35    for i, (key, val) in enumerate(kwargs.items()):
36        if val is None:
37            continue
38
39        # make key and value labels
40        key_label = widgets.HTML(r"<p class = 'params-key'><b> " + key + "</b></p>")
41
42        value = val
43        value_label = widgets.HTML(r"<p class = 'params-value'>" + str(value) + "</p>")
44
45        # add to the list
46        key_children[index].append(key_label)
47        value_children[index].append(value_label)
48
49        # flip box id
50        index = 0 if i < len(kwargs.items()) // 2 else 1
51
52    # construct the inner vertical boxes
53    for i in range(2):
54        key_box[i].children = key_children[i]
55        val_box[i].children = value_children[i]
56
57    # construct HBoxes
58    args_boxes = [
59        widgets.HBox([key_box[0], val_box[0]], layout={"width": "50%"}),
60        widgets.HBox([key_box[1], val_box[1]], layout={"width": "50%"}),
61    ]
62
63    # construct final HBox
64    return widgets.HBox(args_boxes, layout=dict(margin="10px 0 0 15px"))

Returns kwarg panel for the debugger

Returns: widgets.HBox: Horizontal Box containing the arg panel

def view_circuit(disp_circuit, suffix):
 67def view_circuit(disp_circuit, suffix):
 68    """Displays the circuit with diff for the debuuger
 69
 70    Args:
 71        disp_circuit : The circuit to display
 72        suffix (str) : The name to be added to pass
 73
 74     Returns:
 75         str : HTML string with img data to be
 76               rendered into the debugger
 77    """
 78    if "diff" in suffix:
 79        # means checkbox has been chosen for diff
 80        img_style = {"gatefacecolor": "orange", "gatetextcolor": "black"}
 81    else:
 82        img_style = None
 83
 84    fig = disp_circuit.draw(
 85        "mpl",
 86        idle_wires=False,
 87        with_layout=False,
 88        scale=0.9,
 89        fold=20,
 90        style=img_style,
 91    )
 92
 93    img_bio = BytesIO()
 94    fig.savefig(img_bio, format="png", bbox_inches="tight")
 95    fig.clf()
 96    img_data = b2a_base64(img_bio.getvalue()).decode()
 97
 98    qpy_bio = BytesIO()
 99    qpy_serialization.dump(disp_circuit, qpy_bio)
100    qpy_data = b2a_base64(qpy_bio.getvalue()).decode()
101
102    # qasm couldn't handle the circuit changed names
103    for instr in disp_circuit.data:
104        instr[0].name = instr[0].name.strip()
105
106    qasm_str = disp_circuit.qasm()
107    qasm_bio = BytesIO(bytes(qasm_str, "ascii"))
108    qasm_data = b2a_base64(qasm_bio.getvalue()).decode()
109
110    img_html = f"""
111        <div class="circuit-plot-wpr">
112            <img src="data:image/png;base64,{img_data}&#10;">
113        </div>
114        <div class="circuit-export-wpr">
115            Save:
116            <a download="circuit_{suffix}.png" href="data:image/png;base64,{img_data}" download>
117                <i class="fa fa-download"></i> <span>PNG</span>
118            </a>
119            <a download="circuit_{suffix}.qpy" href="data:application/octet-stream;base64,{qpy_data}" download>
120                <i class="fa fa-download"></i> <span>QPY</span>
121            </a>
122            <a download="circuit_{suffix}.qasm" href="data:application/octet-stream;base64,{qasm_data}" download>
123                <i class="fa fa-download"></i> <span>QASM</span>
124            </a>
125        </div>
126        """
127
128    return img_html

Displays the circuit with diff for the debuuger

Args: disp_circuit : The circuit to display suffix (str) : The name to be added to pass

Returns: str : HTML string with img data to be rendered into the debugger

def get_spinner_html():
131def get_spinner_html():
132    """Return the spinner html string"""
133    return '<div class="lds-spinner"><div></div><div></div><div>\
134            </div><div></div><div></div><div></div><div></div><div>\
135            </div><div></div><div></div><div></div><div></div></div>'

Return the spinner html string

def get_styles():
138def get_styles():
139    """Return the style for the debugger"""
140    return """
141        <style>
142        .title h1 { font-size: 45px; font-weight: bold; text-align: center; padding: 10px 10px 10px 10px; }
143        .logo { margin: 0 15px; background-position: center; background-repeat: no-repeat; background-size: contain; background-image: url('data:image/png;base64,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')}        
144        .step-details { min-height: 350px; background: #eee; }
145        .step-details-hide { display: none !important; }
146
147        .options { border-top: 1px solid #eee; }
148        .options > div { font-size : 0.7 em; text-align: center; font-family: 'Roboto Mono', monospace; background: #eee; }
149
150        .tp-widget { border:1px solid #aaa; min-width: 300px; }
151        .p-TabPanel-tabContents { padding: 5px !important; }
152        .p-Collapse-header { padding: 1px 5px; background: #eee; }
153        .p-Collapse-open > .p-Collapse-header { background: #ddd; }
154        .p-Collapse-contents { padding-top: 0; padding-left: 0; padding-bottom: 0; padding-right: 0; height: 220px; background: #f5f5f5; }
155        .p-Collapse-contents button {
156            width: 20%;
157            background: #fff;
158            text-align: center;
159            padding: 0;
160            font-weight: bold; }
161
162
163        div.output_scroll { box-shadow: none }
164
165        .widget-gridbox.table { background: #f5f5f5; }
166        .widget-gridbox.table .widget-label {
167            background-color: #fff;
168            padding: 0 3px;
169            font-family: 'Open Sans', monospace;
170            font-size: 14px;
171        }
172
173        .exist { font-weight: bold; }
174        .not-exist { display: none; }
175
176        .stats-title {
177            background: #eee;
178            margin: 0;
179            text-align: center;
180            font-size: 15px;
181            font-weight: bold;
182            font-family: 'Roboto Mono', monospace; }
183
184        .widget-label.new, .widget-hbox.new .widget-label { font-weight: bold; color: #4b7bec; }
185        .widget-label.updated, .widget-hbox.updated .widget-label { font-weight: bold; color: #e74c3c; }
186
187        .transpilation-step {
188            background: #fff;
189            padding-top: 5px;
190            border-bottom: 1px solid #ddd;
191            grid-template-columns: 35px auto 70px 70px 70px 70px 70px 70px;
192        }
193        .transpilation-step:hover { background: #eee; }
194        .transpilation-step button { background: #fff; }
195        .transpilation-step .transformation {
196                            color: cornsilk;
197                            font-family : 'Lato';
198                            padding: 3px 3px 3px 10px;
199                            background-color: rgba(0, 67, 206, 0.8);
200                            margin-right : 10%;
201        }
202        .transpilation-step .analysis {
203                        color: cornsilk;
204                        padding: 3px 3px 3px 10px;
205                        font-family : 'Lato';
206                        background-color: rgba(180, 77, 224, 0.8);
207                        margin-right: 10%;
208        }
209
210        .transpilation-step div.fs10 { font-size: 10px; }
211        .transpilation-step div.fs11 { font-size: 11px; }
212        .transpilation-step div.fs12 { font-size: 12px; }
213        .transpilation-step div.fs13 { font-size: 13px; }
214        .transpilation-step div.fs14 { font-size: 14px; }
215        .transpilation-step div.fs15 { font-size: 15px; }
216        .transpilation-step > :nth-child(1) button { width: 11px; font-size: 20px; background: transparent; outline: 0 !important; border: none !important; }
217        .transpilation-step > :nth-child(1) button:hover { border: none !important; outline: none !important; box-shadow: none !important; }
218        .transpilation-step > :nth-child(1) button:focus { border: none !important; outline: none !important; box-shadow: none !important; }
219
220        .transpilation-step.active > :nth-child(2) { font-weight: bold; }
221
222        .transpilation-step > :nth-child(2) {
223            font-family: 'Roboto Mono', monospace;
224            font-size: 16px;
225            overflow: hidden;
226            text-overflow: ellipsis;
227            white-space: nowrap;
228        }
229        .transpilation-step > :nth-child(3) { font-family: 'Roboto Mono', monospace; font-size: 10px; color: #900; text-align: right; }
230        .transpilation-step > :nth-child(4) { font-family: 'Roboto Mono', monospace; text-align: center; }
231        .transpilation-step > :nth-child(5) { font-family: 'Roboto Mono', monospace; text-align: center; }
232        .transpilation-step > :nth-child(6) { font-family: 'Roboto Mono', monospace; text-align: center; }
233        .transpilation-step > :nth-child(7) { font-family: 'Roboto Mono', monospace; text-align: center; }
234        .transpilation-step > :nth-child(8) { font-family: 'Roboto Mono', monospace; text-align: center; }
235
236        .stat-name { font-size: 10px; color: #aaa; }
237        .stat-value { font-size: 12px; color: #000; }
238        .highlight .stat-value { font-weight: bold; color: #e74c3c; }
239
240        .logs-wpr { display: grid; grid-template-columns: 70px 60px auto; }
241        .logs-wpr pre.date { font-size: 10px; }
242        .logs-wpr pre.level { font-size: 10px; text-align: right; padding-right: 5px; }
243        .logs-wpr pre.log-entry { font-size: 12px; }
244        .logs-wpr pre.DEBUG { color: #000000; }
245        .logs-wpr pre.INFO { color: #1c84a2; }
246        .logs-wpr pre.WARNING { color: #ed7723; }
247        .logs-wpr pre.ERROR { color: #d64e4a; }
248        .logs-wpr pre.CRITICAL { color: white; background: #d64e4a; }
249
250        div.output_area pre.help { font-family: Helvetica,Arial,sans-serif; font-size: 13px;
251            border: 1px solid #ccc; padding: 10px;}
252        div.help-header {
253            font-family: 'Roboto Mono', monospace;
254            font-size: 12px;
255            border: 1px solid #ccc;
256            border-bottom: none;
257            margin-top: 4px;
258            padding: 5px 10px;
259            font-weight: bold;
260            background: #f5f5f5;
261        }
262        .toggle-button{
263            padding: 5px 25px 10px 10px;
264            font-size : 1.1em;
265            height : 5%;
266            text-align: left;
267            background: #fff;
268            transition: 0.5s;
269            border: none !important;
270        }
271        .toggle-button:hover{
272            background: #eee;
273            border: none;
274            transition: 1s;
275        }
276        .params-key{
277            margin: 2% 1% 1% 4%;
278            padding: 5px 20px 5px 20px;
279            font-size: 1em;
280            color: cornsilk;
281            background: rgba(15,23,229,0.7);
282        }
283
284        .params-value{
285            margin: 1% 1% 1% 1%;
286            padding: 5px 20px 5px 20px;
287            border-left : 2px solid black;
288            font-size: 1.1em;
289        }
290
291        .transform-label {
292            margin-left : 5%;
293            color: cornsilk;
294            padding: 10px 15px 10px 15px;
295            font-size: 1.3em;
296            background-color: rgba(0, 67, 206, 0.8);
297        }
298
299        .analyse-label {
300            margin-left : 5%;
301            padding: 10px 15px 10px 15px;
302            color: cornsilk;
303            font-size: 1.3em;
304            background-color: rgba(180, 77, 224, 0.8);
305        }
306
307        .label-text{
308            padding: 2px 2px 2px 2px; margin-left:10%; font-size: 1.1em;
309        }
310
311        .label-purple-back{
312            margin-left : 5%;
313            padding: 5px 0px 2px 15px;
314            font-size: 1.2em;
315            color : #444444;
316            background-color: rgba(245,174,230,0.4);
317        }
318
319
320        .content-wpr {
321            overflow:hidden;
322        }
323
324        .content { overflow-y: auto; height: 325px; margin: 0; padding: 0; }
325        .p-TabPanel-tabContents td { text-align: left; font-family: 'Roboto Mono', monospace; }
326        .p-TabPanel-tabContents th { text-align: center; font-family: 'Roboto Mono', monospace; font-size: 14px; }
327
328        .circuit-plot-wpr { height: 225px; overflow: auto; border: 1px solid #aaa; }
329        .circuit-plot-wpr img { max-width: none; }
330        .circuit-export-wpr a {
331            display: inline-block;
332            margin: 5px 2px;
333            padding: 2px 15px;
334            color: #000;
335            background: #ddd;
336            border: 1px solid transparent;
337            text-decoration: none !important;
338        }
339        .circuit-export-wpr a:hover { border-color: #aaa; }
340
341        .p-TabBar-tabIcon:before { font: normal normal normal 14px/1 FontAwesome; padding-right: 5px; }
342        .p-TabBar-content > :nth-child(1) .p-TabBar-tabIcon:before { content: "\\f1de"; color: #b587f7; }
343        .p-TabBar-content > :nth-child(2) .p-TabBar-tabIcon:before { content: "\\f00a"; color: #b33771; }
344        .p-TabBar-content > :nth-child(3) .p-TabBar-tabIcon:before { content: "\\f039"; color: #ff9d85; }
345        .p-TabBar-content > :nth-child(4) .p-TabBar-tabIcon:before { content: "\\f05a"; color: #6ea2c9; }
346
347        .no-props .p-TabBar-content > :nth-child(2) .p-TabBar-tabLabel,
348        .no-props .p-TabBar-content > :nth-child(2) .p-TabBar-tabIcon:before { color: #aaa; }
349        .no-logs .p-TabBar-content > :nth-child(3) .p-TabBar-tabLabel,
350        .no-logs .p-TabBar-content > :nth-child(3) .p-TabBar-tabIcon:before { color: #aaa; }
351
352        .message { width: 90%; font-size: 26px; text-align: center; margin: 70px 0; font-weight: bold;}
353
354        @media (max-width: 1000px) {
355            .options { grid-template-columns: repeat(3, auto) !important; }
356            .options > :nth-child(4) { display: none; }
357
358            .transpilation-step { grid-template-columns: 35px auto 70px 70px 70px 70px 70px; }
359            .transpilation-step > :nth-child(2) { font-size: 12px !important; }
360            .transpilation-step > :nth-child(3) { display: none; }
361        }
362
363        @media (max-width:985px) {
364            .title h1 { font-size: 26px; }
365            .logo {margin : 0px 2px;}
366            .transpilation-step { grid-template-columns: 35px auto 70px 70px 70px 70px; }
367            .transpilation-step > :nth-child(6) { display: none; }
368
369        }
370
371        @media (max-width:800px) {
372            
373            
374            .options { grid-template-columns: repeat(2, auto) !important; }
375            .options > :nth-child(3) { display: none; }
376
377            .transpilation-step { grid-template-columns: 35px auto 70px 70px 70px; }
378            .transpilation-step > :nth-child(7) { display: none; }
379        }
380
381        @media (max-width:700px) {
382            
383            .summary-panel { grid-template-columns: repeat(1, auto) !important; }
384
385            .property-set { width: 100% !important; }
386            .property-items { display: none !important; }
387
388            .circuit-export-wpr a {
389                font-size: 12px;
390                padding: 2px 6px;
391            }
392
393            .transpilation-step { grid-template-columns: 35px auto 70px 70px; }
394            .transpilation-step > :nth-child(5) { display: none; }
395        }
396
397        @media (max-width:550px) {
398             .logo {display: none;}
399             .title {font-size : 14px;}
400            .transpilation-step { grid-template-columns: 35px auto; }
401            .transpilation-step > :nth-child(4) { display: none; }
402            .transpilation-step > :nth-child(8) { display: none; }
403        }
404
405        .lds-spinner {
406            position: relative;
407            width: 80px;
408            height: 80px;
409            margin: 50px auto;
410        }
411        .lds-spinner div {
412            transform-origin: 40px 40px;
413            animation: lds-spinner 1.2s linear infinite;
414        }
415        .lds-spinner div:after {
416            content: " ";
417            display: block;
418            position: absolute;
419            top: 3px;
420            left: 37px;
421            width: 6px;
422            height: 18px;
423            border-radius: 20%;
424            background: #aaa;
425        }
426        .lds-spinner div:nth-child(1) {
427            transform: rotate(0deg);
428            animation-delay: -1.1s;
429        }
430        .lds-spinner div:nth-child(2) {
431            transform: rotate(30deg);
432            animation-delay: -1s;
433        }
434        .lds-spinner div:nth-child(3) {
435            transform: rotate(60deg);
436            animation-delay: -0.9s;
437        }
438        .lds-spinner div:nth-child(4) {
439            transform: rotate(90deg);
440            animation-delay: -0.8s;
441        }
442        .lds-spinner div:nth-child(5) {
443            transform: rotate(120deg);
444            animation-delay: -0.7s;
445        }
446        .lds-spinner div:nth-child(6) {
447            transform: rotate(150deg);
448            animation-delay: -0.6s;
449        }
450        .lds-spinner div:nth-child(7) {
451            transform: rotate(180deg);
452            animation-delay: -0.5s;
453        }
454        .lds-spinner div:nth-child(8) {
455            transform: rotate(210deg);
456            animation-delay: -0.4s;
457        }
458        .lds-spinner div:nth-child(9) {
459            transform: rotate(240deg);
460            animation-delay: -0.3s;
461        }
462        .lds-spinner div:nth-child(10) {
463            transform: rotate(270deg);
464            animation-delay: -0.2s;
465        }
466        .lds-spinner div:nth-child(11) {
467            transform: rotate(300deg);
468            animation-delay: -0.1s;
469        }
470        .lds-spinner div:nth-child(12) {
471            transform: rotate(330deg);
472            animation-delay: 0s;
473        }
474        @keyframes lds-spinner {
475            0% { opacity: 1; }
476            100% { opacity: 0; }
477        }
478        </style>
479        """

Return the style for the debugger