@opentiny/vue-renderless 3.5.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/wheel/index.js ADDED
@@ -0,0 +1,187 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import { cloneDeep } from '@opentiny/vue-renderless/chart-core/deps/utils';
3
+ export var created = function created(api) {
4
+ return function () {
5
+ api.loadPickerData();
6
+ api.loadWheels();
7
+ };
8
+ };
9
+ export var loadPickerData = function loadPickerData(_ref) {
10
+ var props = _ref.props,
11
+ state = _ref.state;
12
+ return function () {
13
+ state.dataSource = cloneDeep(props.dataSource);
14
+ state.defaultSelectedIndexs = cloneDeep(props.defaultSelectedIndexs);
15
+ var level_1 = state.dataSource;
16
+ var level_n = getNextLevel([], state.dataSource, state.defaultSelectedIndexs, 0);
17
+ if (level_n.length === 0) {
18
+ state.pickerData = [level_1];
19
+ } else {
20
+ state.pickerData = [level_1].concat(_toConsumableArray(level_n));
21
+ }
22
+ };
23
+ };
24
+ export var getNextLevel = function getNextLevel(levelItems, children, nextIndexs, start) {
25
+ var _children$nextIndexs$, _children$nextIndexs$2;
26
+ var levelItem = (_children$nextIndexs$ = (_children$nextIndexs$2 = children[nextIndexs[start]]) === null || _children$nextIndexs$2 === void 0 ? void 0 : _children$nextIndexs$2.children) !== null && _children$nextIndexs$ !== void 0 ? _children$nextIndexs$ : [];
27
+ if (start !== nextIndexs.length - 1) {
28
+ levelItems.push(levelItem);
29
+ return getNextLevel(levelItems, levelItem, nextIndexs, ++start);
30
+ } else {
31
+ return levelItems;
32
+ }
33
+ };
34
+ export var wheelChanged = function wheelChanged(_ref2) {
35
+ var api = _ref2.api,
36
+ state = _ref2.state;
37
+ return function (newIndexs, oldIndexs) {
38
+ if (newIndexs.length > 1) {
39
+ newIndexs.forEach(function (ii, ri) {
40
+ if (newIndexs[ri] !== oldIndexs[ri] && ri !== newIndexs.length - 1) {
41
+ var children = getChildren(state.dataSource, newIndexs, 0, ri);
42
+ state.pickerData.splice(ri + 1, 1, children);
43
+ }
44
+ });
45
+ }
46
+ api.wheelsTo(newIndexs);
47
+ api.changeWheelItemStyle(state.pickerData, newIndexs);
48
+ };
49
+ };
50
+ export var getChildren = function getChildren(levelItems, newIndexs, start, maxLoop) {
51
+ var _levelItems$newIndexs, _levelItems$newIndexs2;
52
+ var levelItem = (_levelItems$newIndexs = (_levelItems$newIndexs2 = levelItems[newIndexs[start]]) === null || _levelItems$newIndexs2 === void 0 ? void 0 : _levelItems$newIndexs2.children) !== null && _levelItems$newIndexs !== void 0 ? _levelItems$newIndexs : [];
53
+ if (start !== maxLoop) {
54
+ return getChildren(levelItem, newIndexs, ++start, maxLoop);
55
+ } else {
56
+ return levelItem;
57
+ }
58
+ };
59
+ export var wheelsTo = function wheelsTo(_ref3) {
60
+ var api = _ref3.api,
61
+ state = _ref3.state,
62
+ nextTick = _ref3.nextTick;
63
+ return function (indexs) {
64
+ nextTick(function () {
65
+ state.wheels.forEach(function (wheel, i) {
66
+ wheel.wheelTo(indexs[i], 0);
67
+ api.refreshWheel(wheel);
68
+ });
69
+ });
70
+ };
71
+ };
72
+ export var refreshWheel = function refreshWheel(nextTick) {
73
+ return function (wheel) {
74
+ nextTick(function () {
75
+ wheel.refresh();
76
+ });
77
+ };
78
+ };
79
+ export var loadWheels = function loadWheels(_ref4) {
80
+ var api = _ref4.api,
81
+ props = _ref4.props,
82
+ state = _ref4.state,
83
+ nextTick = _ref4.nextTick,
84
+ refs = _ref4.refs;
85
+ return function () {
86
+ if (state.wheels.length === 0) {
87
+ nextTick(function () {
88
+ state.wheels = [];
89
+ var wheelWrapper = refs.wheelWrapper;
90
+ if (props.hasFooter) {
91
+ for (var i = 0; i < state.pickerData.length; i++) {
92
+ api.createWheelHasFooter(wheelWrapper, i);
93
+ }
94
+ } else {
95
+ api.createWheelNoFooter(wheelWrapper);
96
+ }
97
+ });
98
+ }
99
+ };
100
+ };
101
+ export var createWheelHasFooter = function createWheelHasFooter(_ref5) {
102
+ var api = _ref5.api,
103
+ state = _ref5.state,
104
+ emit = _ref5.emit,
105
+ BScroll = _ref5.BScroll;
106
+ return function (wheelWrapper, i) {
107
+ var wheels = state.wheels;
108
+ if (!wheels[i]) {
109
+ wheels[i] = state.wheels[i] = new BScroll(wheelWrapper.children[i], {
110
+ wheel: {
111
+ selectedIndex: state.defaultSelectedIndexs[i],
112
+ wheelWrapperClass: 'wheel-scroll',
113
+ wheelItemClass: 'wheel-item'
114
+ },
115
+ probeType: 3
116
+ });
117
+ state.prevSelectedIndexs = state.defaultSelectedIndexs;
118
+ wheels[i].on('wheelIndexChanged', function () {
119
+ var currentSelectedIndex = wheels[i].getSelectedIndex();
120
+ var currentSelectedIndexs = [].concat(_toConsumableArray(state.prevSelectedIndexs.slice(0, i)), [currentSelectedIndex], _toConsumableArray(new Array(state.defaultSelectedIndexs.length - i - 1).fill(0)));
121
+ api.wheelChanged(currentSelectedIndexs, state.prevSelectedIndexs);
122
+ state.prevSelectedIndexs = currentSelectedIndexs;
123
+ emit('change', currentSelectedIndexs);
124
+ });
125
+ api.wheelsTo(state.defaultSelectedIndexs);
126
+ api.changeWheelItemStyle(state.pickerData, state.defaultSelectedIndexs);
127
+ } else {
128
+ wheels[i].refresh();
129
+ }
130
+ return wheels[i];
131
+ };
132
+ };
133
+ export var createWheelNoFooter = function createWheelNoFooter(_ref6) {
134
+ var api = _ref6.api,
135
+ state = _ref6.state,
136
+ BScroll = _ref6.BScroll;
137
+ return function (wheelWrapper) {
138
+ var wheels = state.wheels;
139
+ if (!wheels[0]) {
140
+ wheels[0] = state.wheels[0] = new BScroll(wheelWrapper.children[0], {
141
+ probeType: 3,
142
+ click: true
143
+ });
144
+ api.changeWheelItemStyle(state.pickerData, state.defaultSelectedIndexs);
145
+ api.refreshWheel(wheels[0]);
146
+ } else {
147
+ wheels[0].refresh();
148
+ }
149
+ return wheels[0];
150
+ };
151
+ };
152
+ export var changeWheelItemStyle = function changeWheelItemStyle(state) {
153
+ return function (pickerData, currentSelectedIndexs) {
154
+ pickerData.forEach(function (item, index) {
155
+ state.pickerData[index] = item.map(function (rItem, i) {
156
+ rItem.selected = i === currentSelectedIndexs[index];
157
+ return rItem;
158
+ });
159
+ });
160
+ };
161
+ };
162
+ export var dealWheels = function dealWheels(state) {
163
+ return function () {
164
+ state.wheels.forEach(function (wheel) {
165
+ wheel.destroy();
166
+ });
167
+ state.wheels = [];
168
+ state.pickerData = [];
169
+ state.prevSelectedIndexs = [];
170
+ state.defaultSelectedIndexs = [];
171
+ };
172
+ };
173
+ export var clickWheelItem = function clickWheelItem(_ref7) {
174
+ var api = _ref7.api,
175
+ state = _ref7.state,
176
+ emit = _ref7.emit;
177
+ return function (index) {
178
+ api.changeWheelItemStyle(state.pickerData, [index]);
179
+ var rItem = state.pickerData[0][index];
180
+ if (state.defaultSelectedIndexs[0] !== index) {
181
+ var selectedLabel = rItem === null || rItem === void 0 ? void 0 : rItem.label;
182
+ emit('clickWheelItem', [index], selectedLabel, rItem);
183
+ } else {
184
+ emit('clickWheelItem', [], '', []);
185
+ }
186
+ };
187
+ };
package/wheel/vue.js ADDED
@@ -0,0 +1,110 @@
1
+ import { created, loadPickerData, wheelChanged, changeWheelItemStyle, loadWheels, createWheelHasFooter, createWheelNoFooter, wheelsTo, refreshWheel, dealWheels, clickWheelItem } from './index';
2
+ export var api = ['state', 'created', 'loadPickerData', 'wheelChanged', 'changeWheelItemStyle', 'loadWheels', 'createWheelHasFooter', 'createWheelNoFooter', 'wheelsTo', 'refreshWheel', 'dealWheels', 'clickWheelItem'];
3
+ var initState = function initState(reactive) {
4
+ var state = reactive({
5
+ dataSource: [],
6
+ defaultSelectedIndexs: [],
7
+ pickerData: [],
8
+ wheels: [],
9
+ prevSelectedIndexs: []
10
+ });
11
+ return state;
12
+ };
13
+ var initApi = function initApi(_ref) {
14
+ var api = _ref.api,
15
+ props = _ref.props,
16
+ state = _ref.state,
17
+ emit = _ref.emit,
18
+ nextTick = _ref.nextTick,
19
+ refs = _ref.refs,
20
+ BScroll = _ref.BScroll;
21
+ Object.assign(api, {
22
+ state: state,
23
+ created: created(api),
24
+ loadPickerData: loadPickerData({
25
+ props: props,
26
+ state: state
27
+ }),
28
+ wheelChanged: wheelChanged({
29
+ api: api,
30
+ state: state
31
+ }),
32
+ changeWheelItemStyle: changeWheelItemStyle(state),
33
+ loadWheels: loadWheels({
34
+ api: api,
35
+ props: props,
36
+ state: state,
37
+ nextTick: nextTick,
38
+ refs: refs
39
+ }),
40
+ createWheelHasFooter: createWheelHasFooter({
41
+ api: api,
42
+ state: state,
43
+ emit: emit,
44
+ BScroll: BScroll
45
+ }),
46
+ createWheelNoFooter: createWheelNoFooter({
47
+ api: api,
48
+ state: state,
49
+ BScroll: BScroll
50
+ }),
51
+ wheelsTo: wheelsTo({
52
+ api: api,
53
+ state: state,
54
+ nextTick: nextTick
55
+ }),
56
+ refreshWheel: refreshWheel(nextTick),
57
+ dealWheels: dealWheels(state),
58
+ clickWheelItem: clickWheelItem({
59
+ api: api,
60
+ state: state,
61
+ emit: emit
62
+ })
63
+ });
64
+ };
65
+ var initWatch = function initWatch(_ref2) {
66
+ var watch = _ref2.watch,
67
+ api = _ref2.api,
68
+ props = _ref2.props,
69
+ state = _ref2.state,
70
+ nextTick = _ref2.nextTick;
71
+ watch(function () {
72
+ return props.defaultSelectedIndexs;
73
+ }, function () {
74
+ api.dealWheels(state);
75
+ nextTick(function () {
76
+ api.created(api);
77
+ });
78
+ });
79
+ };
80
+ export var renderless = function renderless(props, _ref3, _ref4, _ref5) {
81
+ var onMounted = _ref3.onMounted,
82
+ reactive = _ref3.reactive,
83
+ watch = _ref3.watch;
84
+ var emit = _ref4.emit,
85
+ nextTick = _ref4.nextTick,
86
+ refs = _ref4.refs;
87
+ var BScroll = _ref5.BScroll;
88
+ var api = {};
89
+ var state = initState(reactive);
90
+ initApi({
91
+ api: api,
92
+ props: props,
93
+ state: state,
94
+ emit: emit,
95
+ nextTick: nextTick,
96
+ refs: refs,
97
+ BScroll: BScroll
98
+ });
99
+ initWatch({
100
+ watch: watch,
101
+ api: api,
102
+ props: props,
103
+ state: state,
104
+ nextTick: nextTick
105
+ });
106
+ onMounted(function () {
107
+ api.created(api);
108
+ });
109
+ return api;
110
+ };