Skip to content

Commit 26b57d1

Browse files
authored
Merge pull request #3216 from jasongrout/upgrade-nouislider
Upgrade nouislider
2 parents 4132414 + a975b57 commit 26b57d1

File tree

9 files changed

+177
-157
lines changed

9 files changed

+177
-157
lines changed

packages/base/src/widget.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,11 +347,25 @@ export class WidgetModel extends Backbone.Model {
347347
}
348348
}
349349

350+
// _buffered_state_diff_synced lists things that have already been sent to the kernel during a top-level call to .set(), so we don't need to buffer these things either.
351+
if (this._buffered_state_diff_synced) {
352+
for (const key of Object.keys(this._buffered_state_diff_synced)) {
353+
if (attrs[key] === this._buffered_state_diff_synced[key]) {
354+
delete attrs[key];
355+
}
356+
}
357+
}
358+
350359
this._buffered_state_diff = utils.assign(
351360
this._buffered_state_diff,
352361
attrs
353362
);
354363
}
364+
365+
// If this ended a top-level call to .set, then reset _buffered_state_diff_synced
366+
if ((this as any)._changing === false) {
367+
this._buffered_state_diff_synced = {};
368+
}
355369
return return_value;
356370
}
357371

@@ -516,6 +530,12 @@ export class WidgetModel extends Backbone.Model {
516530
options.callbacks = callbacks;
517531
}
518532
this.save(this._buffered_state_diff, options);
533+
534+
// If we are currently in a .set() call, save what state we have synced
535+
// to the kernel so we don't buffer it again as we come out of the .set call.
536+
if ((this as any)._changing) {
537+
utils.assign(this._buffered_state_diff_synced, this._buffered_state_diff);
538+
}
519539
this._buffered_state_diff = {};
520540
}
521541
}
@@ -595,6 +615,7 @@ export class WidgetModel extends Backbone.Model {
595615
private _closed: boolean;
596616
private _state_lock: any;
597617
private _buffered_state_diff: any;
618+
private _buffered_state_diff_synced: any;
598619
private _msg_buffer: any;
599620
private _msg_buffer_callbacks: any;
600621
private _pending_msgs: number;
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/* Custom CSS */
2+
3+
.widget-slider .noUi-connect {
4+
background: rgb(33, 150, 243);
5+
}
6+
7+
.widget-slider .noUi-horizontal {
8+
height: var(--jp-widgets-slider-track-thickness);
9+
}
10+
11+
.widget-slider .noUi-vertical {
12+
width: var(--jp-widgets-slider-track-thickness);
13+
height: 100%;
14+
}
15+
16+
.widget-slider .noUi-horizontal .noUi-handle {
17+
width: var(--jp-widgets-slider-handle-size);
18+
height: var(--jp-widgets-slider-handle-size);
19+
border-radius: 50%;
20+
top: calc(
21+
(
22+
var(--jp-widgets-slider-track-thickness) -
23+
var(--jp-widgets-slider-handle-size)
24+
) / 2
25+
);
26+
right: calc(var(--jp-widgets-slider-handle-size) / -2);
27+
}
28+
29+
.widget-slider .noUi-vertical .noUi-handle {
30+
height: var(--jp-widgets-slider-handle-size);
31+
width: var(--jp-widgets-slider-handle-size);
32+
border-radius: 50%;
33+
right: calc(
34+
(
35+
var(--jp-widgets-slider-handle-size) -
36+
var(--jp-widgets-slider-track-thickness)
37+
) / -2
38+
);
39+
top: calc(var(--jp-widgets-slider-handle-size) / -2);
40+
}
41+
42+
.widget-slider .noUi-handle:after {
43+
content: none;
44+
}
45+
46+
.widget-slider .noUi-handle:before {
47+
content: none;
48+
}
49+
50+
.widget-slider .noUi-target {
51+
background: #fafafa;
52+
border-radius: 4px;
53+
border: 1px;
54+
/* box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB; */
55+
}
56+
57+
.widget-slider .ui-slider {
58+
border: var(--jp-widgets-slider-border-width) solid var(--jp-layout-color3);
59+
background: var(--jp-layout-color3);
60+
box-sizing: border-box;
61+
position: relative;
62+
border-radius: 0px;
63+
}
64+
65+
.widget-slider .noUi-handle {
66+
width: var(--jp-widgets-slider-handle-size);
67+
border: 1px solid #d9d9d9;
68+
border-radius: 3px;
69+
background: #fff;
70+
cursor: default;
71+
box-shadow: none;
72+
outline: none;
73+
}
74+
75+
.widget-slider .noUi-target:not([disabled]) .noUi-handle:hover,
76+
.widget-slider .noUi-target:not([disabled]) .noUi-handle:focus {
77+
background-color: var(--jp-widgets-slider-active-handle-color);
78+
border: var(--jp-widgets-slider-border-width) solid
79+
var(--jp-widgets-slider-active-handle-color);
80+
}
81+
82+
.widget-slider [disabled].noUi-target {
83+
opacity: 0.35;
84+
}
85+
86+
.widget-slider .noUi-connects {
87+
overflow: visible;
88+
z-index: 0;
89+
background: var(--jp-layout-color3);
90+
}
91+
92+
.widget-slider .noUi-vertical .noUi-connect {
93+
width: calc(100% + 2px);
94+
right: -1px;
95+
}
96+
97+
.widget-slider .noUi-horizontal .noUi-connect {
98+
height: calc(100% + 2px);
99+
top: -1px;
100+
}

0 commit comments

Comments
 (0)