Skip to content

Commit 3449e06

Browse files
Performance optimization. Keep user options after breakpoints hit.
1 parent 784d649 commit 3449e06

19 files changed

Lines changed: 83 additions & 49 deletions

File tree

dist/js/splide-renderer.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/splide-renderer.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/splide.cjs.js

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*!
22
* Splide.js
3-
* Version : 4.0.0
3+
* Version : 4.0.1
44
* License : MIT
55
* Copyright: 2022 Naotoshi Fujita
66
*/
@@ -168,7 +168,7 @@ function merge(object) {
168168
if (isArray(value)) {
169169
object[key] = value.slice();
170170
} else if (isObject(value)) {
171-
object[key] = merge(isObject(object[key]) ? object[key] : {}, value);
171+
object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);
172172
} else {
173173
object[key] = value;
174174
}
@@ -574,9 +574,10 @@ function Throttle(func, duration) {
574574
}
575575

576576
function Media(Splide2, Components2, options) {
577+
var state = Splide2.state;
578+
var breakpoints = options.breakpoints || {};
577579
var reducedMotion = options.reducedMotion || {};
578580
var binder = EventBinder();
579-
var breakpoints = options.breakpoints || {};
580581
var queries = [];
581582

582583
function setup() {
@@ -603,13 +604,17 @@ function Media(Splide2, Components2, options) {
603604
}
604605

605606
function update() {
606-
var destroyed = Splide2.state.is(DESTROYED);
607+
var destroyed = state.is(DESTROYED);
607608
var direction = options.direction;
608609
var merged = queries.reduce(function (merged2, entry) {
609610
return merge(merged2, entry[1].matches ? entry[0] : {});
610611
}, {});
611612
omit(options);
612-
Splide2.options = merged;
613+
merge(options, merged);
614+
615+
if (!state.is(CREATED)) {
616+
Splide2.emit(EVENT_UPDATED, options);
617+
}
613618

614619
if (options.destroy) {
615620
Splide2.destroy(options.destroy === "completely");
@@ -2500,12 +2505,13 @@ function Pagination(Splide2, Components2, options) {
25002505

25012506
function destroy() {
25022507
if (list) {
2503-
event.destroy();
25042508
remove(Elements.pagination ? slice(list.children) : list);
25052509
removeClass(list, paginationClasses);
25062510
empty(items);
25072511
list = null;
25082512
}
2513+
2514+
event.destroy();
25092515
}
25102516

25112517
function createPagination() {
@@ -2622,12 +2628,14 @@ function Pagination(Splide2, Components2, options) {
26222628
var TRIGGER_KEYS = [" ", "Enter"];
26232629

26242630
function Sync(Splide2, Components2, options) {
2625-
var isNavigation = options.isNavigation;
2631+
var isNavigation = options.isNavigation,
2632+
slideFocus = options.slideFocus;
26262633
var events = [];
26272634

26282635
function setup() {
2629-
var slideFocus = options.slideFocus;
2630-
options.slideFocus = isUndefined(slideFocus) ? isNavigation : slideFocus;
2636+
Splide2.options = {
2637+
slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus
2638+
};
26312639
}
26322640

26332641
function mount() {
@@ -3081,6 +3089,7 @@ var _Splide = /*#__PURE__*/function () {
30813089
set: function set(options) {
30823090
var _o = this._o;
30833091
merge(_o, options);
3092+
merge(Object.getPrototypeOf(_o), options);
30843093

30853094
if (!this.state.is(CREATED)) {
30863095
this.emit(EVENT_UPDATED, _o);

dist/js/splide.esm.js

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
44

55
/*!
66
* Splide.js
7-
* Version : 4.0.0
7+
* Version : 4.0.1
88
* License : MIT
99
* Copyright: 2022 Naotoshi Fujita
1010
*/
@@ -163,7 +163,7 @@ function merge(object) {
163163
if (isArray(value)) {
164164
object[key] = value.slice();
165165
} else if (isObject(value)) {
166-
object[key] = merge(isObject(object[key]) ? object[key] : {}, value);
166+
object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);
167167
} else {
168168
object[key] = value;
169169
}
@@ -569,9 +569,10 @@ function Throttle(func, duration) {
569569
}
570570

571571
function Media(Splide2, Components2, options) {
572+
var state = Splide2.state;
573+
var breakpoints = options.breakpoints || {};
572574
var reducedMotion = options.reducedMotion || {};
573575
var binder = EventBinder();
574-
var breakpoints = options.breakpoints || {};
575576
var queries = [];
576577

577578
function setup() {
@@ -598,13 +599,17 @@ function Media(Splide2, Components2, options) {
598599
}
599600

600601
function update() {
601-
var destroyed = Splide2.state.is(DESTROYED);
602+
var destroyed = state.is(DESTROYED);
602603
var direction = options.direction;
603604
var merged = queries.reduce(function (merged2, entry) {
604605
return merge(merged2, entry[1].matches ? entry[0] : {});
605606
}, {});
606607
omit(options);
607-
Splide2.options = merged;
608+
merge(options, merged);
609+
610+
if (!state.is(CREATED)) {
611+
Splide2.emit(EVENT_UPDATED, options);
612+
}
608613

609614
if (options.destroy) {
610615
Splide2.destroy(options.destroy === "completely");
@@ -2495,12 +2500,13 @@ function Pagination(Splide2, Components2, options) {
24952500

24962501
function destroy() {
24972502
if (list) {
2498-
event.destroy();
24992503
remove(Elements.pagination ? slice(list.children) : list);
25002504
removeClass(list, paginationClasses);
25012505
empty(items);
25022506
list = null;
25032507
}
2508+
2509+
event.destroy();
25042510
}
25052511

25062512
function createPagination() {
@@ -2617,12 +2623,14 @@ function Pagination(Splide2, Components2, options) {
26172623
var TRIGGER_KEYS = [" ", "Enter"];
26182624

26192625
function Sync(Splide2, Components2, options) {
2620-
var isNavigation = options.isNavigation;
2626+
var isNavigation = options.isNavigation,
2627+
slideFocus = options.slideFocus;
26212628
var events = [];
26222629

26232630
function setup() {
2624-
var slideFocus = options.slideFocus;
2625-
options.slideFocus = isUndefined(slideFocus) ? isNavigation : slideFocus;
2631+
Splide2.options = {
2632+
slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus
2633+
};
26262634
}
26272635

26282636
function mount() {
@@ -3076,6 +3084,7 @@ var _Splide = /*#__PURE__*/function () {
30763084
set: function set(options) {
30773085
var _o = this._o;
30783086
merge(_o, options);
3087+
merge(Object.getPrototypeOf(_o), options);
30793088

30803089
if (!this.state.is(CREATED)) {
30813090
this.emit(EVENT_UPDATED, _o);

dist/js/splide.js

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
44

55
/*!
66
* Splide.js
7-
* Version : 4.0.0
7+
* Version : 4.0.1
88
* License : MIT
99
* Copyright: 2022 Naotoshi Fujita
1010
*/
@@ -168,7 +168,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
168168
if (isArray(value)) {
169169
object[key] = value.slice();
170170
} else if (isObject(value)) {
171-
object[key] = merge(isObject(object[key]) ? object[key] : {}, value);
171+
object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);
172172
} else {
173173
object[key] = value;
174174
}
@@ -570,9 +570,10 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
570570
}
571571

572572
function Media(Splide2, Components2, options) {
573+
var state = Splide2.state;
574+
var breakpoints = options.breakpoints || {};
573575
var reducedMotion = options.reducedMotion || {};
574576
var binder = EventBinder();
575-
var breakpoints = options.breakpoints || {};
576577
var queries = [];
577578

578579
function setup() {
@@ -599,13 +600,17 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
599600
}
600601

601602
function update() {
602-
var destroyed = Splide2.state.is(DESTROYED);
603+
var destroyed = state.is(DESTROYED);
603604
var direction = options.direction;
604605
var merged = queries.reduce(function (merged2, entry) {
605606
return merge(merged2, entry[1].matches ? entry[0] : {});
606607
}, {});
607608
omit(options);
608-
Splide2.options = merged;
609+
merge(options, merged);
610+
611+
if (!state.is(CREATED)) {
612+
Splide2.emit(EVENT_UPDATED, options);
613+
}
609614

610615
if (options.destroy) {
611616
Splide2.destroy(options.destroy === "completely");
@@ -2493,12 +2498,13 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
24932498

24942499
function destroy() {
24952500
if (list) {
2496-
event.destroy();
24972501
remove(Elements.pagination ? slice(list.children) : list);
24982502
removeClass(list, paginationClasses);
24992503
empty(items);
25002504
list = null;
25012505
}
2506+
2507+
event.destroy();
25022508
}
25032509

25042510
function createPagination() {
@@ -2615,12 +2621,14 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
26152621
var TRIGGER_KEYS = [" ", "Enter"];
26162622

26172623
function Sync(Splide2, Components2, options) {
2618-
var isNavigation = options.isNavigation;
2624+
var isNavigation = options.isNavigation,
2625+
slideFocus = options.slideFocus;
26192626
var events = [];
26202627

26212628
function setup() {
2622-
var slideFocus = options.slideFocus;
2623-
options.slideFocus = isUndefined(slideFocus) ? isNavigation : slideFocus;
2629+
Splide2.options = {
2630+
slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus
2631+
};
26242632
}
26252633

26262634
function mount() {
@@ -3074,6 +3082,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
30743082
set: function set(options) {
30753083
var _o = this._o;
30763084
merge(_o, options);
3085+
merge(Object.getPrototypeOf(_o), options);
30773086

30783087
if (!this.state.is(CREATED)) {
30793088
this.emit(EVENT_UPDATED, _o);

dist/js/splide.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/splide.min.js.gz

37 Bytes
Binary file not shown.

dist/js/splide.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/utils/splide-utils.cjs.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ function merge(object) {
137137
if (isArray(value)) {
138138
object[key] = value.slice();
139139
} else if (isObject(value)) {
140-
object[key] = merge(isObject(object[key]) ? object[key] : {}, value);
140+
object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);
141141
} else {
142142
object[key] = value;
143143
}

dist/js/utils/splide-utils.esm.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ function merge(object) {
133133
if (isArray(value)) {
134134
object[key] = value.slice();
135135
} else if (isObject(value)) {
136-
object[key] = merge(isObject(object[key]) ? object[key] : {}, value);
136+
object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);
137137
} else {
138138
object[key] = value;
139139
}

0 commit comments

Comments
 (0)